(57)【要約】      （修正有）【課題】プログラミング能力に欠けるユーザーが、データベース問い合わせあるいは規則を構造化自然言語文の形式で入力することを可能にするために、構造化自然言語問い合わせおよび知識システムを提供する。【解決手段】文の範囲は、改良されたオブジェクトリレーショナル問い合わせ言語、オブジェクト関係代数、あるいはその両方により、定義されることが望ましい。自然言語形式のコマンドおよび条件は、対応する形式問い合わせテキストを使用して定義される。ユーザーは、定義されたコマンドと条件を使用して構造化自然言語文を作るよう促される。ユーザーにより選択されたコマンドとその引数は、構造化自然言語文の動詞句として現れる。ユーザーにより選択された条件とそれらのパラメタは、文の形容詞句として現れる。文は構文解析され、正式のデータベース問い合わせと規則処理のために翻訳された形式問い合わせテキストに変えられる。【選択図】図１
2004152259.tif 000002
【特許請求の範囲】
【請求項１】
複数のコマンドを定義し、前記定義されたコマンドの各々に対して対応する形式問い合わせテキストを定義するようユーザーに促すコマンド定義モジュールと、
複数の条件を定義し、前記定義された条件の各々に対して対応する形式問い合わせテキストを定義するよう前記ユーザーに促す条件定義モジュールと、
前記定義されたコマンドと前記定義された条件を使用して、構造化自然言語問い合わせを作成するようユーザーに促す自然言語作成モジュールと、
前記作成された構造化自然言語問い合わせを、翻訳された形式問い合わせテキストに翻訳する翻訳モジュールと、
基本データベース上の前記翻訳された形式問い合わせテキストを処理する問い合わせプロセスモジュールであって、前記基本データベースからデータ結果を返すように、基本データベース上の前記翻訳された形式問い合わせテキストを処理する問い合わせプロセスモジュールを有する構造化自然言語データベース問い合わせシステム。
【請求項２】
前記基本データベースはリレーショナルデータベースであり、オブジェクトクラスを定義し、前記定義されたオブジェクトクラスを前記基本リレーショナルデータベース内の表と関連付けるよう前記ユーザーに促す、オブジェクトスキーマ定義モジュールをさらに有する請求項１記載のシステム。
【請求項３】
前記問い合わせプロセスモジュールは、前記翻訳された形式問い合わせテキストを変換された問い合わせテキストに変換し、前記基本データベース上の前記変換された問い合わせテキストを直接実行する請求項１記載のシステム。
【請求項４】
少なくとも１組の定義されたコマンドからコマンドを選択するようユーザーに促すことと、
前記選択されたコマンドに対して１つまたは複数の引数を指定するよう前記ユーザーに促すことと、
前記選択されたコマンドと前記指定された１つまたは複数の引数を動詞句に組み合わせることと、
少なくとも１組の定義された条件から１つまたは複数の条件を選択するよう前記ユーザーに促すことと、
選択された各条件に対して１つまたは複数のパラメタを指定するよう前記ユーザーに促すことと、
選択された前記１つまたは複数の条件の各々に対して、その結果として１つまたは複数の形容詞句を生成するために、前記選択された条件とその指定された１つまたは複数のパラメタを形容詞句にを組み合わせることと、
前記動詞句と前記１つまたは複数の形容詞句を構造化自然言語データベース問い合わせに組み合わせること、を含む構造化自然言語データベース問い合わせを作成するコンピュータにより実行される方法。
【請求項５】
１つまたは複数の構造化自然言語データベース問い合わせを有するマクロを定義するよう前記ユーザーに促すことをさらに含む請求項４記載の方法。
【請求項６】
前記定義されたコマンドの各々は、対応する形式問い合わせテキストと組み合わされている請求項４記載の方法。
【請求項７】
前記定義された条件の各々は、対応する形式問い合わせテキストと組み合わされている請求項４記載の方法。
【請求項８】
前記構造化自然言語データベース問い合わせは、自然言語命令文の形式である請求項４記載の方法。
【請求項９】
コマンドを選択するようユーザーに促すことは、１組の定義されたコマンドおよび他の１組の定義されたマクロからコマンドを選択するよう前記ユーザーに促すことを含む請求項４記載の方法。
【請求項１０】
１つまたは複数の条件を選択するようユーザーに促すことは、１組の定義された条件および他の１組の定義されたマクロから１つまたは複数の条件を選択するよう前記ユーザーに促すことを含む請求項４記載の方法。
【請求項１１】
請求項４記載の方法を実現するコンピュータプログラム。
【請求項１２】
少なくとも１組の定義された条件から１つまたは複数の条件を選択するようにユーザーに促すことと、
選択された条件の各々に対して１つまたは複数のパラメタを指定するように前記ユーザーに促すことと、
前記選択された１つまたは複数の条件の各々に対して、その結果として１つまたは複数の形容詞句を生成するために、前記選択された条件とその指定された１つまたは複数のパラメタを形容詞句に組み合わせることと、
少なくとも１組の定義されたコマンドから第１のコマンドを選択するようにユーザーに促すことと、
前記選択された第１のコマンドに対して１つまたは複数の引数を指定するように前記ユーザーに促すことと、
前記選択された第１のコマンドと前記指定された１つまたは複数の引数を第１の動詞句に組み合わせることと、
前記第１の動詞句と前記１つまたは複数の形容詞句を構造化自然言語データベース規則に組み合わせること、を含む構造化自然言語データベース規則を作成するコンピュータにより実行される方法。
【請求項１３】
少なくとも１組の定義されたコマンドから第２のコマンドを選択するように前記ユーザーに促すことと、
前記選択された第２のコマンドに対して１つまたは複数の引数を指定するように前記ユーザーに促すことと、
前記選択された第２のコマンドと前記第２のコマンドに対する前記指定された１つまたは複数の引数を第２の動詞句に組み合わせることと、
前記第１の動詞句、前記第２の動詞句、および前記１つまたは複数の形容詞句を構造化自然言語データベース規則に組み合わせること、をさらに含む請求項１２記載の方法。
【請求項１４】
各々イベントを含む１つまたは複数のイベント句を定義するように前記ユーザーに促すことと、
前記動詞句、前記１つまたは複数の形容詞句、および、前記１つまたは複数のイベント句を構造化自然言語データベース規則に組み合わせること、をさらに含む請求項１２記載の方法。
【請求項１５】
１つまたは複数の構造化自然言語規則を有するマクロを定義するように前記ユーザーに促すことをさらに含む請求項１２記載の方法。
【請求項１６】
第１のコマンドを選択するように前記ユーザーに促すことは、少なくとも１組の定義されたコマンドおよび定義されたマクロの他の１組から第１のコマンドを選択するように前記ユーザーに促すことを含む請求項１５記載の方法。
【請求項１７】
１つまたは複数の条件を選択するように前記ユーザーに促すことは、１組の定義された条件および他の１組の定義されたマクロから１つまたは複数の条件を選択するように前記ユーザーに促すことを含む請求項１５記載の方法。
【請求項１８】
構造化自然言語データベース問い合わせ文を構文解析することであって、前記文の動詞句および前記文の１つまたは複数の形容詞句を識別するために、構造化自然言語データベース問い合わせ文を構文解析することと、
前記構文解析された動詞句に対応する定義されたコマンド問い合わせテキストを識別することと、
前記文の前記構文解析された形容詞句の各々に対応する定義された条件問い合わせテキストを識別することと、
前記識別されたコマンド問い合わせテキストと前記識別された１つまたは複数の条件問い合わせテキストを翻訳された形式問い合わせテキストに組み合わせること、を含む構造化自然言語文を形式問い合わせテキストに翻訳するコンピュータにより実行される方法。
【請求項１９】
第１の変数を領域変数と定義するユーザー入力を受け取ることと、
第２の変数をセット変数と定義するユーザー入力を受け取ることと、
コマンドを定義するユーザー入力を受け取ることと、
条件を定義するユーザー入力を受け取ることと、
データベースに対してオブジェクトリレーショナル問い合わせを作るために、前記定義された第１の変数、第２の変数、コマンドおよび条件を組み合わせること、を含むオブジェクトリレーショナル問い合わせ言語で問い合わせを作るコンピュータにより実行される方法。
【請求項２０】
第３の変数を一時変数と定義するユーザー入力を受け取ることをさらに含む請求項１９記載の方法。
【請求項２１】
第３の変数をバッグ変数と定義するユーザー入力を受け取ることをさらに含む請求項１９記載の方法。
【請求項２２】
第３の変数を一時セット変数と定義するユーザー入力を受け取ることをさらに含む請求項１９記載の方法。
【請求項２３】
第３の変数を一時バッグ変数と定義するユーザー入力を受け取ることをさらに含む請求項１９記載の方法。
【請求項２４】
変数をオブジェクトリレーショナル式に属していると定義するユーザー入力を受け取ることをさらに含む請求項１９記載の方法。
【請求項２５】
条件を定義するユーザー入力を受け取ることは、前記条件を一般的な方法と定義するユーザー入力を受け取ることを含む請求項１９記載の方法。
【請求項２６】
条件を定義するユーザー入力を受け取ることは、前記条件を一般的なマクロと定義するユーザー入力を受け取ることを含む請求項１９記載の方法。
【請求項２７】
一般的な方法を第１の式と定義することであって、前記第１の式はデータオブジェクトの第１のセットを含む、一般的な方法を第１の式と定義することと、
選択演算子および前記選択演算子と組み合わされた条件を定義することであって、前記選択演算子はデータベースに対するオブジェクトリレーショナル問い合わせを定義するように適合されており、前記問い合わせは前記条件を満足させるオブジェクトの前記第１のセットからの選択演算としての第２の式である、選択演算子および前記選択演算子と組み合わされた条件を定義すること、を含むオブジェクト関係代数で問い合わせを作るコンピュータにより実行される方法。
【請求項２８】
前記第１の式はデータソースエレメントである請求項２７記載の方法。
【請求項２９】
前記オブジェクトリレーショナル問い合わせの結果をデータソースエレメントと定義することをさらに含む請求項２７記載の方法。
【請求項３０】
前記一般的な方法第１の式は前記一般的な方法に対する引数を含み、前記引数は第３の式である、請求項２７記載の方法。
【請求項３１】
射影演算子および前記射影演算子と組み合わされた１組の属性を定義することをさらに含み、前記射影演算子は前記属性のセットにもとづいて他の問い合わせを前記第１の式からの射影と定義するように適合された、請求項２７記載の方法。
【請求項３２】
直積演算演算子を定義することをさらに含み、前記直積演算演算子は他の問い合わせを前記第１の式および他の式の直積演算と定義するように適合された請求項２７記載の方法。
【請求項３３】
集約演算子、前記集約演算子と組み合わされた１組の属性、および１組の集約関数を定義することをさらに含み、前記集約演算子は、前記属性のセットによって前記第１の式を１つまたは複数の群に分離する他の問い合わせを定義するように適合されており、前記集約関数の１つを前記分離された群の各々に適用するようにさらに適合された、請求項２７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベース、オブジェクト指向型データベースおよびオブジェクトリレーショナルデータベースの分野に関する。特に、本発明は構造化自然言語データベースにおける問い合わせと、知識システムに関する。
【背景技術】
【０００２】
リレーショナルデータベースは何年もの間広く使用されている。リレーショナルデータベースは、項目を含む表の中にデータを整理する。同じ項目を有する２つの表は相互に関連している。すべてのデータを１つのファイルに蓄積する「単層ファイル」法に比較して、表を近づけるリレーショナル法はより自由度が高い。
【０００３】
大部分のリレーショナルデータベースシステムは、ＳＱＬ（Structured Query Language）標準に適合している。商用ベンダーとしては、ＳＱＬにもとづく様々なデータベースシステムが作られている。これらのシステムは、ＳＱＬ型の形式問い合わせ言語（formal query language）を使用している。以下は、１００,０００ドル以上を得ている従業員の名前と俸給を表示するために使用される問い合わせの例である。
【０００４】
For each employee where employee.salary > 100000:
Display employee.name employee.salary.
End
Or:
Select name, salary
From employee
Where employee.salary > 100000
上の問い合わせにおいて、"employee" は表の名前であり、 "name"および"salary"は"employee"表の項目であり、"where employee.salary>100000"は条件（condition）でもあり、限定（qualification）でもある、また、"Display employee.name employee.salary" 、および、 "Select name, salary" はコマンドである。限定は、条件、あるいは、"and"、"or"、"and not"あるいは"or not"のような論理結合子により接続された複数の条件である。
【０００５】
オブジェクト指向型のデータベースは、データをオブジェクトとして構成させる。オブジェクトは属性（attribute）を有することが可能であり、属性はオブジェクトでもあり得る。オブジェクトの再帰的な性質は、操作を容易にする。オブジェクトは、他のオブジェクトから特性を継承することができ、既存のオブジェクトにもとづいて新しいオブジェクトを創出することを容易にする。オブジェクトは、そのオブジェクトのデータを操作するために、１組の手順（方法）と組み合わせることが可能である。
【０００６】
オブジェクトリレーショナルデータベースを創り出すために、リレーショナルデータベースとオブジェクト指向データベースを結合して一体にする試みが行われてきた。たとえば、表と項目をオブジェクトとして操作することを可能にするために、アメリカ規格協会（ＡＮＳＩ：American National Standards Institute）ＳＱＬ９９は、従来のＳＱＬ問合せ言語を拡張している。代表的なＡＮＳＩ−ＳＱＬ９９問い合わせは、以下のように表現される。
【０００７】
Select arguments
From type var, ... type var
Where condition and condition .. .and condition
条件は、その方法の引数を変数に適用した方法である。"select"コマンドの引数は、変数、変数の属性、あるいはその方法の引数を変数に適用した方法であってもよい。方法の加算を使用することによって、ＳＱＬ９９の応用範囲は従来のＳＱＬの応用範囲より広くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
残念ながら、ＡＮＳＩ−ＳＱＬ９９には依然として深刻な限界がある。以下に詳細に述べるように、ＡＮＳＩ−ＳＱＬ９９は「領域」型変数のみを可能にし、「セット」変数、「バッグ」変数、あるいは一時変数は可能としない。変数の範囲は、その型（通常リレーショナルテーブルあるいはオブジェクトのクラスである）により決定され、オブジェクトの任意のセットではあり得ない。さらに、ＳＱＬ９９での条件では、返却値あるいはパラメータとして作られたか否かにかかわらず、方法により作られた値が、他の条件で使用されることを許可しない。さらに、条件により論理的な「真」値あるいは「偽」値を返さないことを許可しない。したがって、より一般的で強力なオブジェクトリレーショナル問い合わせ言語を導入することが望ましい。
【０００９】
従来の関係代数にも、深刻な限界がある。関係代数では、表現されるのは、単層ファイル、あるいは、その項目が整数、浮動小数点数およびテキスト文字列のような基本的な値である１組のレコードのような関係である。さらに、「選択」演算子の条件は下記に制限されている。
【００１０】
１．等しい、以上、以下、以上あるいは等しい、以下あるいは等しい、等しくない、のような２つの基本的な値の間の比較。
【００１１】
２．基本的な値と、「のメンバーである」、「のすべてのメンバーより大である」、「のどのメンバーより大である」、その他、のような副問い合わせにより作られる基本的な値と１組の基本的な値との間の比較。
【００１２】
３．「のスーパーセットである」あるいは「のサブセットである」のような副問い合わせにより作られる２組の基本的な値の間の比較。
【００１３】
４．「空のセットである」のような１組の基本的によるテスト結果。
【００１４】
さらに、方法が関係代数としての式であるとすることは通常許されていない。したがって、より一般的でより強力なオブジェクト関係代数を導入することが望ましい。
【００１５】
従来のデータベースは、データベースの規則を実行するために、データの完全性拘束条件およびイベントトリガーを使用している。しかし、これらの規則の範囲は、従来のデータベースで使用されている問合せ言語の範囲に制限されている。望ましいものは、規則を指定するための強力で自由度の高い方法を可能にする知識システムである。
【００１６】
最後に、従来のリレーショナルデータベースあるいはオブジェクトリレーショナルデータベースにおいて、プログラミング能力に欠けるユーザーは、複雑なデータベース問い合わせを作り上げることが通常不可能であり、データを検索し表示するためにはプログラマーによって書かれたプログラムに頼らなければならない。したがって、ユーザーの選択範囲は、しばしば非常に限定される。リレーショナルデータベース、オブジェクト指向データベース、あるいは、オブジェクトリレーショナルデータベース上で実時間で動作するような自然言語型命令を、このようなユーザーが書くことを可能にすることが望ましい。
【課題を解決するための手段】
【００１７】
本発明を要約するために、本発明によるいくつかの態様、利点および新規な特徴を説明する。このような態様、利点あるいは特徴のすべてを本発明による特定の実施態様で具体化する必要がないことが理解されるべきである。
【００１８】
プログラミング能力に欠けるユーザーが構造化自然言語文の形式でデータベース問い合わせを指定することを可能にするために、構造化自然言語問い合わせおよび知識システムが提供される。ユーザーは構造化自然言語文の形式で規則を指定することもできる。さらに、改良されたオブジェクトリレーショナル問い合わせ言語およびオブジェクト関係代数が導入されている。好適実施例においては、オブジェクトリレーショナル問い合わせ言語およびオブジェクト関係代数によって、構造化自然言語が定義される。
【００１９】
本発明による１つの態様は、構造化自然言語データベース問い合わせを作るコンピュータにより実行される方法に関する。ユーザーは、１組の定義されたコマンドの中からコマンドを選択し、そのコマンドに対して１つまたは複数の引数を指定するように促される。選択されたコマンドと引数は、動詞句を形成するように組み合わされる。さらにユーザーは、１組の定義された条件から零、１つまたは複数の条件を選択し、選択された条件の各々に対して零、１つまたは複数のパラメタを指定するように促される。選択された条件の各々とその指定されたパラメタは、形容詞句に組み合わされる。動詞句と選択された形容詞句は、構造化自然言語データベースの問い合わせ句として組み合わされる。
【００２０】
構造化自然言語問い合わせは、形式問い合わせプロセスモジュールにより実行される形式問い合わせテキストに自動的に翻訳される。構造化自然言語問い合わせは、動詞句および零、１つまたは複数の形容詞句を識別するために構文解析される。構文解析された動詞句に対応する定義されたコマンド問い合わせテキストを発見し、構文解析された形容詞句のそれぞれに対応する定義された条件問い合わせテキストを発見した後に、発見された問い合わせテキストは問い合わせプロセスモジュールにより処理される翻訳された形式問い合わせテキストに組み合わされる。
【００２１】
本発明による別の態様は、データベースに対するオブジェクトリレーショナル問い合わせを作るコンピュータにより実行される方法に関する。第１の変数は領域変数と定義することが可能であり、第２の変数はセット変数と定義することが可能である。さらにコマンドおよび条件が定義される。定義されたコマンド、条件および変数は、オブジェクトリレーショナル問い合わせを形成するために組み合わされる。さらに変数は、一時変数あるいはバッグ変数と定義することが可能である。
【００２２】
本発明によるさらに別の態様は、代数式にもとづいてデータベースに対してオブジェクトリレーショナル問い合わせを作るコンピュータにより実行される方法に関する。問い合わせは、１つまたは複数の式にもとづいて作られる。式は１組のオブジェクトである。したがって、出力として１組のオブジェクトを返す一般的な方法が式である。条件にもとづいて１組のオブジェクトから部分集合を選択する選択演算子も、式である。一般的な方法の引数は１組のオブジェクトであり得るから、他の式を作るために一般的な方法を入れ子にすることができる。
【００２３】
本発明によるさらに別の態様は、リレーショナルデータベース、オブジェクトリレーショナルデータベース、あるいは、オブジェクト指向データベースシステムのための、改良されたオブジェクトリレーショナル問い合わせ言語あるいはオブジェクト関係代数で表現された問い合わせを処理するコンピュータにより実行される方法に関する。
【００２４】
本発明による別の態様は、構造化自然言語問い合わせ、構造化自然言語規則、あるいは、問い合わせと規則の両方を、他の問い合わせあるいは規則に対するコマンドあるいは条件として使用することが可能なマクロに分類する、コンピュータにより実行される方法に関する。
【発明の効果】
【００２５】
本発明においては、より一般的で強力なオブジェクトリレーショナル問い合わせ言語が導入されることとなり、また、より一般的でより強力なオブジェクト関係代数が導入されることとなる。さらに、プログラミング能力に欠けるユーザーであっても書くことを可能にすることができる。
【発明を実施するための最良の形態】
【００２６】
以下では、構造化自然言語問い合わせおよび知識システム、改良されたオブジェクトリレーショナル問い合わせ言語、ならびにさまざまな新規な特徴を具体化するオブジェクト関係代数を説明している。認められるように、これらの特徴の多くは所与のシステムの中で実現できる。たとえば、構造化自然言語問い合わせシステムは、従来のデータベースプラットフォームと関連して実現することが可能であり、改良されたオブジェクトリレーショナル問い合わせ言語あるいはオブジェクト関係代数を使用して実現する必要はない。さらに、さまざまな新規な特徴は、本明細書に説明したものとは異なるように、実現することができる。したがって、以下の説明は、本発明の範囲を単に例示するためであり、本発明の範囲を限定するものではないと意図されている。
【００２７】
Ａ．構造化自然言語問い合わせおよび知識システム
図１は、構造化自然言語問い合わせおよび知識のシステム１００の１実施例を示す。構造化自然言語によるシステム１００は、プログラミング能力がないユーザーが、実時間で行われることが望ましいデータベースオペレーションを有するデータベース上で動作するための構造化自然言語問い合わせを作ることを可能にする。システム１００は、リレーショナルデータベースをオブジェクトリレーショナルデータベースにユーザーが変換することも可能にする。構造化自然言語問い合わせは、動詞句をコマンドとして有してもよく、零、１つまたは複数の形容詞句を条件として有してもよい。変数定義句も、構造化自然言語問い合わせに含むことができる。本明細書において用語「問い合わせ」は、データを選択し、あるいは表示するコマンドのみでなく、データを作り、更新し、あるいは削除するコマンドを含むように、総括的に定義されている。システム１００の１実施例は、Ｊａｖａでプログラムされている。システム１００は、Ｃ、Ｃ＋＋、あるいは他の言語、オペレーティングプラットフォームもしくはアプリケーションパッケージでもプログラムすることができる。
【００２８】
図１に示すように、システム１００は、動詞句定義モジュール１１０および、形容詞句定義モジュール１２０を有する。動詞句定義モジュール１１０は、形式問い合わせテキストに対応するように、プログラマーが動詞句を定義することを可能にする。形容詞句定義モジュール１２０は、形式問い合わせテキストに対応するように、プログラマーが形容詞句を定義することを可能にする。形式問い合わせテキストは、方法、機能、サブルーチン、手順、ＳＱＬ問い合わせテキスト、あるいは以上の組み合わせであり得る。さらにシステム１００は、ユーザーが定義された動詞句と形容詞句を使用して構造化自然言語問い合わせを作ることを可能にする構造化自然言語作成モジュール１３０を有する。システム１００は、構造化自然言語問い合わせを形式問い合わせテキストに翻訳するための翻訳モジュール１４０、ならびに、基本データベース１６０から問い合わせ結果を返すための、翻訳された形式問い合わせテキストを処理する形式問い合わせプロセスモジュール１５０をさらに有する。基本データベースは商用データベースシステムであってよい。
【００２９】
システム１００は、オプションのオブジェクトスキーマ定義モジュール１０１をさらに有する。オブジェクトスキーマ定義モジュール１０１は、属性の数およびオブジェクトクラスのための各属性の型を含むオブジェクトクラスをユーザーあるいはプログラマーが定義することを可能にする。システム１００用の基本データベース１６０がリレーショナルデータベースであれば、オブジェクトスキーマ定義モジュール１０１は、ユーザーあるいはプログラマーが、オブジェクトクラスをリレーショナルデータベース内の表と関連付けることを可能とし、したがって、ユーザーあるいはプログラマーが、リレーショナルデータベースの表の間のリレーションシップをオブジェクトに関して定義することを可能にする。
【００３０】
たとえば、プログラマーあるいはユーザーは、クラス「polygon（ポリゴン）」をリレーショナルデータベースの中の表「POLYGON（ポリゴン）」と組み合わされていると定義することができる。表「POLYGON」は「VERTICES（頂点）」列を含んでいる。クラス「polygon」は、テキストストリング形式の「ＩＤ」属性と、「set of vertex（頂点のセット）」形式の「vertices（頂点）」属性を使用して定義される。他のクラス「vertex（頂点）」は、リレーショナルデータベースの中の表「VERTEX（頂点）」と組み合わされている。クラス「vertex」は、テキストストリング形式の「name（名前）」属性と、ナンバー形式の「x coordinate（ｘ座標）」属性と、ナンバー形式の「y coordinate（ｙ座標）」を使用して定義される。したがって、オブジェクトスキーマ定義モジュール１０１は、「POLYGON」表の中の「VERTICES」列の各要素は「VERTEX」表の中の行の名前であるとのリレーションシップを蓄積する。したがって、１群の「VERTEX」論理レコードおよび「POLYGON」論理レコードは、階層的に構造化された「polygon」オブジェクトクラスとして一緒に処理することができる。次にプログラマーあるいはユーザーは、「polygon」オブジェクトクラスに関連する動詞句および形容詞句を定義することができる。テーブルの間に構造的なリレーションシップがなければ、次に、各リレーショナル論理レコードを階層的構造がない「flat（平坦な）」オブジェクトとして、各表は独立のオブジェクトクラスとして処理される。いずれにせよ、ユーザーは今までどおり構造化自然言語の動詞句と形容詞句を定義することができる。
【００３１】
システム１００のための基本データベースがオブジェクトリレーショナルデータベースあるいはオブジェクト指向データベースであれば、オブジェクトスキーマ定義は基本データベースから簡単にインポートすることができる。
【００３２】
構造化自然言語問い合わせに関して、例文は次の通りである。
【００３３】
「Create a group from range 1 whose name is "cc"（領域１から名前が"cc"であるグループを作成）  query A1 （問い合わせ  Ａｌ）」
「Who are diagnosed to have disease "mild AD" and who respond to medication "aericept"（誰が疾患"mild AD"であると診断され、誰が"aericept"の薬物療法に反応したのか）」
上記の問い合わせ例において、"create a group from range 1 whose name is 'cc'" は問い合わせの動詞句であり、 "who are diagnosed to have disease 'mild AD'" は問い合わせの形容詞句であり、 "who respond to medication 'aericept'" は問い合わせの他の形容詞句である。動詞句の中で、 "create a group" はコマンドであり、 "from range 1" はコマンドの引数であり、 "whose name is 'cc'" はコマンドオペレーションの結果名である。各形容詞句の中で、"who are diagnosed to have disease" および "who respond to medication" は条件であり、 "mild AD" および "aericept" は条件のパラメタである。
【００３４】
問い合わせおよび知識システム１００は、構造化自然言語規則作成モジュール１３１、規則翻訳モジュール１４１、および形式規則プロセスモジュール１５１をさらに有することができる。構造化自然言語規則作成モジュール１３１、規則翻訳１４１および形式規則プロセス１５１は、規則に関連して以下に説明する。
【００３５】
図１において、モジュール１０１−１５１のそれぞれは、１つまたは複数の汎用コンピュータにより実行されるソフトウェアを使用して実現されることが望ましい。一部のあるいはすべてのモジュールは、全体的にせよ部分的にせよ特定用途向けハードウェアで実現することもできる。認められるように、モジュールは同一コンピュータ上で実行され、あるいは同一コンピュータ上に常駐する必要はない。たとえば、モジュール１１０−１４１はユーザーコンピュータ上で動作するクライアント側コンポーネントの中に組み込むことが可能であり、形式問い合わせプロセスモジュール１５０および形式規則プロセスモジュール１５１はデータベースにネットワークベースのアクセスを提供するリモートサーバ上で実行することが可能である。さらに、翻訳モジュール１４０および規則翻訳モジュール１４１は、ユーザーからネットワークを介して受信した自然言語問い合わせおよび規則を翻訳するサーバ側コンポーネントとして実現することが可能である。システム１００のモジュールは、同一あるいは異なる計算言語、オペレーティングプラットフォームあるいはアプリケーションパッケージで実現可能である。
【００３６】
図２は、動詞句を定義するためのコンピュータにより実行される処理の１実施例のフローチャートである。ステップ２１０において、システム１００はプログラマーにコマンド名を定義するよう促す。コマンド名は、"create a group（グループを作成）"、"combine two groups（２つのグループを組み合わせる）"、"find similar genes from two groups（２つのグループから共通の因子を見つける）"、"show elements of a group（グループの構成要素を示す）"、"store（格納）"およびその他のようなテキストストリングである。コマンドは、自然言語句に現れるものを使用して定義されることが望ましく、したがって、プログラミング能力がないユーザーにとっても理解が容易である。
【００３７】
ステップ２２０において、プログラマーはコマンドに対する引数の数を定義するよう促される。たとえば、"create a group" コマンドは通常１つの引数を有し、 "find similar genes from two groups" コマンドは通常２つの引数を有する。さらにプログラマーは、各引数に対して選択範囲を定義してもよい。たとえば、患者名に対する１つの引数はユーザーにより入力された任意のテキストストリングであり得るし、公認保険会社の名前に対する他の引数は値の所定のリストからの値でなければならない。ステップ２３０において、プログラマーはコマンドの引数の各データ型を定義するよう促される。データ型は、整数、浮動小数点、日付あるいはテキストストリング、あるいはユーザーあるいはプログラマーにより定義された他のデータ型のような基本的なデータ型とすることが可能である。新しいデータ型は、所与のデータ型の１組のオブジェクトとして定義することができる。たとえば、定義されたデータ型「vertex」を与えると、「Vertex Set（頂点セット）」データ型の各オブジェクトが１組の頂点であるように、新しいデータ型「Vertex Set」は定義することができる。処理はステップ２３０からステップ２４０へ進み、プログラマーは定義された動詞句に対応するように形式問い合わせテキストを作るよう促される。
【００３８】
用語「formal query text（形式問い合わせテキスト）」は、問合せ言語の形式内のテキスト、ならびに、方法、機能、手順あるいはサブルーチンのようなコンピュータコードのコレクションの名前、あるいはマクロの名前を含めて本明細書において広く使用される。たとえば、条件 "(a gene) is similar to (another gene)" に対して、方法、機能、手順あるいはサブルーチンは "Var 0.similar(Var 1)" であって良く、 "Var0" および "Var1" は、それぞれ条件の２つのパラメタを表している。他の例として、コマンド "find similar genes from two groups" に対して、方法、機能、手順あるいはサブルーチンは "find#similar#genes(argument 1, argument 2)" であって良く、 "argument 1" および "argument 2" はそれぞれコマンドの２つの引数を表している。コンピュータコードのコレクションは、システムライブラリ（図示せず）に蓄積される。次に述べるように、マクロは、１群の問い合わせ、１群の規則、あるいは、１群の１つまたは複数の問い合わせおよび１つまたは複数の規則に対する論理単位である。
【００３９】
図２に示す処理は、他の順序で実現することができる。たとえば、１つの実施例においては、プログラマーは、定義されるべき動詞句に対する形式問い合わせテキストを作るように最初に促される。システム１００は、形式問い合わせテキストを構文解析し、動詞句と引数のそれぞれのデータ型に対する引数の数を決定する。次にプログラマーは、動詞句に対してコマンド名を定義するよう促される。
【００４０】
図３は、コンピュータにより実行される条件を定義する処理の１実施例のフローチャートである。ステップ３１０において、システム１００はプログラマーに条件名を定義するよう促す。実施例の条件名には、"who are diagnosed with disease" と "who respond to medication" を含んでいる。処理は次にステップ３２０へ進み、プログラマーは条件に対するパラメタの数を定義するように促される。ステップ３３０において、プログラマーは、テキスト、整数、およびその他のパラメタのそれぞれのデータ型を定義するよう促される。パラメタが入力パラメタかあるいは出力パラメタかを指定するように、プログラマーに促すことも可能である。ステップ３４０において、たとえば、テキストを問合せ言語で入力して、マクロ名を指定して、あるいは、方法名、機能名、手順名あるいはサブルーチン名のようなコンピュータコードコレクションの名前を指定して、定義された条件に対応するように形式問い合わせテキストを作るよう、プログラマーは促される。コンピュータコードコレクションは、システムライブラリに蓄積される。
【００４１】
たとえば、条件 "who are diagnosed with disease" に対しては、実施例の形式問い合わせテキストは、 "<argument 1>.diagnosed(<parameter>)" または "<argument 1>.diagnosed = <parameter>" でよい。この例においては、"<argument 1>" は関連する動詞句のコマンド引数を表し、"<parameter>" はユーザーにより入力されるべき条件パラメタ値を表す。
【００４２】
図３に示す処理は、他の順序でも実現できる。たとえば、１つの実施例においては、定義されるべき条件に対する形式問い合わせテキストを作るように、プログラマーは最初に促される。次にシステム１００は、形式問い合わせテキストを構文解析し、パラメタのそれぞれの条件とデータ型に対するパラメタの数を決定する。次にプログラマーは、条件名を定義するよう促される。
【００４３】
動詞句および形容詞句は、複雑な問い合わせに対応するように定義することができる。たとえば、条件 "who are diagnosed with all diseases（誰が全ての病気について診断されたか？）" は、病気のリストを可能にするセットパラメタを含むように、定義することができる。この条件を含む問い合わせは、リストされた病気のすべてを有すると診断された患者を発見する。他の条件 "who are diagnosed with at least one of the diseases（誰が少なくとも１つの病気について診断されたか)" は、病気のリストを可能にするセットパラメタを含むように定義することが可能である。この条件を含む問い合わせは、リストされた病気の少なくとも１つを有すると診断された患者を発見する。他の構成では、条件 "who are diagnosed with disease（誰が診断されたか）" のみが定義され、病名の１つのみのエントリを可能にするパラメタを含んでいる。病気Ａおよび病気Ｂの両方を有する患者を発見することをユーザーが望むならば、ユーザーは、２つのそのような形容詞句 "who are diagnosed with disease A（誰がAと診断されたか）" および "who are diagnosed with disease B（誰がBと診断されたか）"を組み合わせる。
【００４４】
動詞句および形容詞句は、ある程度交換可能に定義され、使用されることができることに注目すべきである。たとえば、より明確な動詞句 "find patients who are diagnosed with disease（診断された患者を見つける）" は、より一般的な動詞句 "find patients（患者を見つける）" と形容詞句 "who are diagnosed with disease"の組み合わせと同じ目的に役立つ。ユーザーによって問い合わせが頻繁に呼び出されれば、付加的な形容詞句を必要としない動詞句として、問い合わせを定義することが望ましいことがある。明確で一般的な動詞句を定義し、明確な動詞句あるいは形容詞句と組み合わされた一般的な動詞句のいずかの使用をユーザーに可能にすることも可能である。
【００４５】
１つの実施例においては、構造化自然言語問い合わせは、"which patients are diagnosed with disease 'mild AD' and who respond to medication 'aericept' ?（どちらの患者が'mild AD'と診断され、'aericept'の薬物療法に反応したのか？）" のような問い合わせの形式で作ることが可能である。これは、問い合わせ "display patients who are diagnosed with disease 'mild AD' and who respond to medication 'aericept'（'mild AD'と診断された患者と、aericept'を投薬した者を表示せよ）"と等価である。質問形式での問い合わせにおいて、"which patients" あるいは "which patients are" の部分は、動詞句として作用する。
【００４６】
構造化自然言語問い合わせは、変数定義句を含んでもよい。たとえば、以下の章Ｂにおいて次に述べるように、改良されたオブジェクトリレーショナル問い合わせ言語がシステム１００と連係して使用されるならば、変数定義句の例は "range of <Variable> is polygon : abc" でよい。これは、そのエレメントが型 "polygon" にバインドされた "abc" と命名されたオブジェクトのコレクションから <Variable> の値が得られることを意味する。変数定義句は、１つまたは複数の変数定義を有することができる。
【００４７】
プログラマーではないユーザーは動詞句および条件も定義してよいが、定義された動詞句あるいは条件に対応する形式問い合わせテキストを作るためには、何らかのプログラミング能力が必要であるから、用語「プログラマー」は図２および図３に関連して使用されている。
【００４８】
図４は、コンピュータにより実行される構造化自然言語問い合わせを作る処理の１実施例の動作を示すフローチャートである。好適実施例において、章Ｂで説明される改良されたオブジェクトリレーショナル問い合わせ言語を使用して、問い合わせは作られる。ステップ４１０において、変数がユーザーにより定義されるか否かを処理は決定する。変数が定義されるべきであれば、処理はステップ４２０に進み、処理はユーザーに変数定義句を指定するよう促す。この後、ステップ４３０にてさらに変数がユーザーにより定義されるか否かが確認され、定義される場合にはステップ４２０に戻り、定義されない場合には。次のステップへと進む。
さらに、変数定義句、コマンドおよび条件は、何らかの特定の順序で指定される必要がないことが、理解されるべきである。言い換えれば、コマンドが指定される前に変数定義句が指定される必要はなく、条件が指定される前にコマンドが指定される必要はない。
【００４９】
図５は、ユーザーあるいはプログラマーに変数定義句を指定するよう促す画面例を示す。図５に示すように、以下の章Ｂで説明する改良されたオブジェクトリレーショナル問い合わせ言語による実施例において、ユーザーあるいはプログラマーは「Object Name（オブジェクト名）」欄５１０内にオブジェクト名を作るように促される。さらにユーザーあるいはプログラマーは、「Type（型）」欄５２０内で「range（領域）」、「temp（一時）」、「set（セット）」および「bag（バッグ）」のような型のリストから選択することにより、作られたオブジェクトの変数の型を識別するように促される。ユーザーあるいはプログラマーは、選択されたオブジェクトのデータ型を継承するために、「Objects Lists（オブジェクトリスト）」欄５３０からオブジェクトを選択することにより、あるいは、基本的なデータ型の「Primitive Lists（プリミティブリスト）」欄５４０から選択することにより、作られたオブジェクトのデータ型を識別するように、さらに促される。ユーザーあるいはプログラマーは、作られたオブジェクトに対するデータソースエレメントを「Data Source Element（データソースエレメント）」欄５５０内で指定するよう促される。データソースエレメントは、同じ型の１組のオブジェクトである。
【００５０】
章Ｃのオブジェクト関係代数が使用される他の実施例においては、ステップ４１０-４３０は省略され、ユーザーは変数を定義するように促されない。変数はプログラマーにより予め定義され、ユーザーはステップ４４０に直接進む。両方のオプションを示すために、変数定義を表示しない画面例として図６および図８を示し、変数定義を表示する画面例として図７および図９を示す。
【００５１】
変数定義句は、選択されたコマンドおよび条件にもとづいて自動的に生成することもできる。２つのオブジェクトクラス"polygon"および"vertex"を有する以下の章Ｂで説明する例において、条件"contains"（包含）は入力として２つのポリゴンを必要とし、第１のポリゴンが第２のポリゴンを包含していれば真値を返す。システム１００は、「包含」条件がポリゴンクラスの２つの入力パラメタを必要とするとの仕様を蓄積している。条件「包含」がユーザーにより選択されると、２つの入力パラメタをポリゴンクラスの領域変数と定義するために、システム１００は自動的に変数定義句を生成する。他の実施例においては、条件"intersection"（交差）は、ポリゴンクラスの２つの入力パラメタと、２つの入力ポリゴンの"intersection polygon"（交差ポリゴン）としての出力パラメタを必要とする。「交差」条件は、「真」論理値を返す。システム１００は、「交差」条件が、ポリゴンクラスの２つの入力パラメタとポリゴンクラスの出力パラメタを必要とするという仕様を蓄積している。ユーザーが「交差」条件を選択すると、システム１００は、２つの入力パラメタと出力パラメタを定義するために、自動的に変数定義句を生成する。２つの入力パラメタは領域変数として定義されることが望ましく、出力パラメタは一時変数として定義されることが望ましい。出力パラメタが他の条件の入力パラメタとして使用されるならば、他の条件の入力パラメタは再び定義される必要はない。
【００５２】
ステップ４４０において、ユーザーは定義されたコマンドのリストからコマンドを選択するよう促される。１つの実施例においては、ユーザーは、変数定義句で定義されたオブジェクトに適用できる定義されたコマンドのリストから選択するように促される。たとえば、変数定義句が変数"polygon"を定義すれば、ユーザーは、"enlarge"（拡大）、"reduce"（縮小）、"rotate"（回転）、"measure area"（領域測定）、その他のような"polygon"変数に適用可能なコマンドから選択することができる。図６および図７は、コマンドのリスト６１０からコマンドを選択するようにユーザーに促すユーザーインタフェイス画面の例である。図６と比較して、図７は定義された変数を表示する付加的な欄６２０を有している。定義された変数は、文章欄６３０にも表示される。
【００５３】
戻って図４を参照すると、ステップ４４０から、処理はステップ４５０に進み、ユーザーは選択されたコマンドに対して１つまたは複数の引数を選択するように促される。ステップ４６０において、章Ｃのオブジェクト関係代数を使用することが望ましい１つの実施例においては、ユーザーは選択されたコマンドの結果名を任意選択で指定するよう促される。コマンド、引数およびオプションの結果名が動詞句を形成する。図８は、ユーザーに、コマンド引数を選択し、任意選択で結果に名前をつけるように促す画面例である。コマンドに対する定義された引数の数と型によって、ユーザーは１つまたは複数の引数を識別するよう促される場合がある。図８に示すように、以下の章Ｃで説明するオブジェクト関係代数による１つの実施例においては、コマンド"create a group"（グループを作れ）に対して、ユーザーは、欄７１０からデータ型を選択し、欄７２０からデータソースエレメントを選択し、欄７３０でコマンドの結果に任意選択で名前をつけるように促される。
【００５４】
戻って図４を参照すると、ステップ４７０にてユーザーが条件の選択を希望するかが確認され、ユーザーが条件の選択を希望すれば、処理はステップ４７０からステップ４８０へ進み、ステップ４８０において、ユーザーは定義された条件のリストから条件を選択するように促される。１つの実施例においては、ユーザーは、変数定義句で定義されたオブジェクトに適用できる定義された条件のリストから選択するように促される。たとえば、変数"polygon"に対して、"contains（包含）、"intersect"（交差）、"is a square"（正方形である）のような条件は、"polygon"変数に適用できる。図９は、ユーザーに条件のリストから選択するように促す画面例である。定義された動詞句は、欄８１０に表示され、文章欄８３０内の構造化自然言語文の一部として表示される。ユーザーは、欄８２０内の条件のリストから条件を選択する。図１０は、ユーザーに条件のリストから選択するように促す他の画面例である。図９と比較して、図１０は、定義された変数を表示する付加的な欄８４０を有している。定義された変数定義句と動詞句は、文章欄８３０内に文の一部として表示される。
【００５５】
戻って図４を参照すると、ステップ４９０において、ユーザーは選択された条件のパラメタを指定するように促される。１つの実施例においては、パラメタ数の異なる同じ条件名を共有するために、複数の条件が許容される。図１１は、ユーザーに選択された条件に対するパラメタを指定するように促す画面例である。図１１に示すように、条件 "Who are diagnosed to have"（誰が診断されたか）対して、ユーザーは、欄９１０に病気名を入力することができ、あるいは、欄９２０内の病名のリストから選択することができる。選択された条件およびパラメタは、形容詞句を形成する。１つの実施例においては、作成モジュール１３０は、コマンド引数、命名された結果、および条件パラメタの指定された値の周囲に引用符を自動的に付ける。条件が１つまたは複数の出力パラメタを有するならば、付加的な条件の入力パラメタとして元の条件の出力パラメタを定義することにより、ユーザーは付加的な条件を指定することもできる。したがって、付加的な条件は、元の条件により作られた出力にもとづいて条件を評価する。
【００５６】
戻って図４を参照すると、ステップ４９５において、ユーザーはさらに多くの条件が入力されるかどうかを示すように促される。さらに多くの条件が入力されならば、処理はステップ４８０に戻る。他の場合には、処理は終了ステップ４９８に進む。他の形容詞句を指定するために処理がステップ４８０に戻るならば、２つの形容詞句を結合するために、ユーザーは、"and"、"or" あるいは "and not" のような論理結合子を指定するようにさらに促される。
【００５７】
上述のように、図５−１１は、定義されたコマンドと条件のリストから選択するようにユーザーに促す１実施例の画面例である。ユーザーは、図６あるいは図７においてコマンドを選択し、図８においてコマンドに対して引数を選択し、図９あるいは図１０において条件を選択し、図１１において条件に対してパラメタを指定する。１つの実施例においては、ユーザーあるいはプログラマーは、図５の変数も定義する。
【００５８】
指定された動詞句および形容詞句は、作成された構造化自然言語問い合わせを形成する。図１２は、欄１０２０内の動詞句と欄１０３０内の形容詞句を含んで欄１０４０内に作成された構造化自然言語問い合わせ文を示す画面例である。図１２において、問い合わせは、命令文の好ましい形式（preferred form）で表示される。問い合わせは、図１２の欄１０１０および１０４０に示す "range of range 1 is Case : Case" のような変数定義句も含むことが可能である。図１２の文章欄１１１０に示すように、システム１００に構造化自然言語問い合わせを直接入力するオプションをユーザーに与えることも可能である。経験豊かなユーザーは、このオプションを好む場合もある。ユーザーは直接入力とスクリーン選択の組み合わせを使用することもできる。たとえば、ユーザーが精通している条件あるいはコマンドを入力し、他の条件あるいはコマンドをメニューから選択することができる。作成された問い合わせは、次に翻訳のために翻訳モジュール１４０に送られる。
【００５９】
翻訳モジュール１４０は、動詞句、形容詞句およびオプションの変数定義句を識別するために、作成された問い合わせを構文解析する。好適実施例において、翻訳モジュール１４０は、定義された動詞句あるいは定義された形容詞句を示すキーワードを探す。たとえば、すべての条件が単語"who"あるいは"whose"から始まる１つの実施例においては、翻訳モジュール１４０は、単語"who"および"whose"を検索し、そのような単語のすべてを形容詞句の始めの信号として識別する。しかし、単語"who"あるいは"whose"が作成された問い合わせ内で引用符で囲まれていれば、それは、条件の始めではなく、引数、命名された結果、あるいはパラメタ値を表すと考えられる。さらに翻訳モジュール１４０は、論理結合子"and"、"or"、"or not"および"and not"を検索する。論理結合子は、１つの形容詞句の終わりと他の形容詞句の始まりを示す。条件ラベルと論理結合子の検索により、モジュール１４０は、形容詞句を、問い合わせの他の部分から分離し、また他の形容詞句から分離して、識別することができる。
【００６０】
さらに翻訳モジュール１４０は、条件を識別するために、定義された条件のキーワードを検索する。たとえば、翻訳モジュール１４０は、条件"who are diagnosed with the disease"あるいは"who respond to medication"を識別するものとして、"diagnosed"あるいは"respond"のようなキーワードを検索する。
【００６１】
さらに翻訳モジュール１４０は、コマンドを識別するために、定義されたコマンドのキーワードを検索する。たとえば、対応するコマンドを識別するために、モジュール１４０は、"create a group"あるいは"add elements to a group"のようなキーワードを検索する。さらにモジュール１４０は、コマンド引数の信号としてキーワード"from"を検索することができ、命名された結果の信号としてキーワード"whose name is"を検索することができる。
【００６２】
コマンドおよび条件がユーザーにより入力されなくて、定義されたコマンドと条件のリストから選択されれば、構文解析処理は単純にすることが可能である。システム１００は定義されたコマンドと条件のそれぞれを対応する形式問い合わせテキストと関連付けるので、対応する形式問い合わせテキストはユーザーがコマンドあるいは条件を選択すると同時に蓄積することが可能である。蓄積された対応する形式問い合わせテキスト（あるいはそれらの識別子）は、翻訳モジュール１４０によって組み合わされ、翻訳された形式問い合わせテキストを形成する。他方、リストから選択する代わりにユーザーが構造化自然言語問い合わせをタイプ入力すれば、構文解析処理は最初に動詞句と形容詞句を識別し、次に動詞句と形容詞句の対応する形式問い合わせテキストを組み合わせる。
【００６３】
好適実施例において、翻訳モジュール１４０は問い合わせの中のエラーを検出し、自動的にエラーを修正するか、あるいはエラーの訂正を示唆する。問い合わせエラーには、綴り間違いのある単語（たとえば"diagnoised"と綴りを間違えた"diagnosed"）、脱落した単語（たとえば、"who respond to"と入力された"who respond to medication"）、不適切な配列（たとえば動詞句の前にある形容詞句）、あるいはその他の文法エラーを含むことが可能である。翻訳モジュール１４０はこれらのエラーを修正し、正しい問い合わせに問い合わせを変換する。１つの構成では、翻訳モジュール１４０は、検出されたエラーおよび示唆した訂正された問い合わせをユーザーに返し、訂正された問い合わせがユーザーが作ろうと意図したものであることを確認するようにユーザーに尋ねる。
【００６４】
翻訳モジュール１４０は、構造化自然言語問い合わせの動詞句と形容詞句の対応する形式問い合わせテキストを組み合わせ、翻訳された形式問い合わせテキストを形成する。ユーザーにより指定されたコマンド引数値および条件パラメタ値は、翻訳された形式問い合わせテキストに組み込まれる。形式問い合わせプロセスモジュール１５０は、翻訳された形式問い合わせテキストを受取り、基本データベース上のテキストを処理し、結果を作る。
【００６５】
基本データベース１６０は、リレーショナルデータベース、オブジェクト指向データベース、あるいはオブジェクトリレーショナルデータベースでもよい。リレーショナル基本データベースに対しては、翻訳された問い合わせテキストが既に１つまたは複数のＳＱＬ問い合わせの形式であれば、形式問い合わせプロセスモジュール１５０は基本リレーショナルデータベース上でＳＱＬ問い合わせを直接に実行する。翻訳された問い合わせテキストがＳＱＬ問い合わせ形式でなければ、形式問い合わせプロセスモジュール１５０は、翻訳された問い合わせテキストを１つまたは複数の変換されたＳＱＬ問い合わせに変換し、変換された問い合わせを基本リレーショナルデータベース上で実行する。同様に、オブジェクト基本データベース、あるいはオブジェクトリレーショナル基本データベースに対しては、問い合わせプロセスモジュール１５０は、翻訳された問い合わせテキストを直接実行するか、あるいは翻訳された問い合わせテキストを基本データベース上で直接実行可能な１つまたは複数の変換された問い合わせに変換する。
【００６６】
問い合わせプロセスモジュール１５０が、翻訳された問い合わせテキストを直接実行することができず、翻訳された問い合わせコンテキストを変換することができなくても、問い合わせプロセスモジュール１５０は翻訳された問い合わせテキストを処理し、基本データベース１６０から問い合わせ結果を返す。たとえば、リレーショナル基本データベースを有する１つの実施例においては、章Ｂで説明する改良されたオブジェクトリレーショナル問い合わせ言語を使用して、５つのポリゴンオブジェクトの第１のデータソースエレメントからの領域変数として、第１の変数"t"が定義される。第２の変数"s"は、３つのポリゴンオブジェクトの第２のデータソースエレメントからの領域変数として定義される。条件"where t and s intersect,"に対しては、翻訳された問い合わせテキスト"t.intersect(s)"は、リレーショナル基本データベース上で直接実行することはできない。問い合わせプロセスモジュール１５０は、条件が真であるか否かを判定するために、２つのデータソースエレメントのポリゴンオブジェクトの１５の組み合わせを列挙する。すべての実現可能な組み合わせの腕力評価に加えて、最適化方法、たとえば、条件内の条件の順序の配置替え、を使用することもできる。
【００６７】
１つの推奨実施例において、構造化自然言語システム１００は、章Ｂで説明される改良されたオブジェクトリレーショナル問い合わせ言語と連係して働く。たとえば、ユーザーは、章Ｂで説明される改良された問合せ言語による領域変数として領域１を定義するために、図１０の変数定義句"range of range 1 is case:case"を作る。"case:case"の中の第１の"case"はデータ型を表し、第２の"case"はデータソースエレメントを表す。あるいは、システム１００は、データ型のリスト、データソースエレメントのリストから、領域変数、一時変数、セット変数、あるいはバッグ変数として選択することにより、変数を定義するようにユーザーを促す。しかし、構造化自然言語システム１００は、従来のリレーショナルデータベース、オブジェクト指向データベースおよびオブジェクトリレーショナルデータベースを使用して、機能を発揮することもできる。改良されたオブジェクトリレーショナル問い合わせ言語あるいはオブジェクト関係代数は、許容される問い合わせの範囲を拡大するが、構造化自然言語システム１００にとって必要条件ではない。
【００６８】
規則も構造化自然言語形式で作成でき、データの完全性と他の目的のためにシステム１００内で使用される。たとえば、規則は、"On <event> If <qualification> then <command>"、"On <event> If <qualification> then <command> otherwise <command 2>"、あるいは、"On <event> If <qualification> then <qualification 2>"の形式で示すことが可能である。例としてコンピュータシステムを医学用に使用すると、システムに入力される患者の年齢は零より大であること、患者がペニシリンに対してアレルギー体質であることが判っていればペニシリンは投与されないこと、否定的な相互作用の２つの型の薬物療法は同じ患者には投与されないこと、その他を保証するために、規則を使用することが可能である。規則の範囲は、１つのオブジェクトに適用するように、クラスのすべてのオブジェクト、あるいはすべてのオブジェクトに適用するように定義することができる。１つの実施例においては、構造化自然言語システム１００は、規則の条件とコマンドを指定することにより、ユーザーが規則を定義することを可能にする。イベントが発生した場合（たとえば、患者の体温が変化したとき）、条件が満たされていれば（たとえば、患者の体温が華氏１０２度を超えている）、規則にしたがってコマンド（たとえば、看護婦あるいは医師に警告を送る）が始動される。いくつかの実施例においては、イベントおよび条件は交換可能に使用することができる。
【００６９】
構造化自然言語問い合わせおよび構造化自然言語規則は、異なるコンテキストで通常使用される。たとえば、システム１００は、規則の条件およびオプショナルイベントを常にモニタし、条件およびオプショナルイベントが満たされる（meet）場合に、規則のコマンドを実行する。他方、問い合わせはユーザーコマンドにもとづいて通常実行される。さらに、規則は、"if qualification. . . then command [else command 2]"の形式、あるいは"if qualification 1 then qualification 2"形式で通常表示されるが、問い合わせは"command [qualification]"形式で通常表示される。しかし、構造化自然言語規則および構造化自然言語問い合わせは通常それぞれコマンドと条件を含むので、したがって、規則と問い合わせを交換可能に使用することが可能である。１つの実施例においては、ユーザーは、定義された問い合わせを規則として選択し、あるいは定義された規則を問い合わせとして選択することができる。
【００７０】
図１４は、構造化自然言語文の形式で規則を表示する画面例を示す。規則は、オプションの変数定義句、動詞句（コマンド）および１つまたは複数の形容詞句（条件）を有する。規則は、１つまたは複数のイベント句をさらに有してもよい。規則は、条件が偽である場合の動作に対応する第２の動詞句を有することができる。図１４において、欄１２２０は、条件"any of Patient.Current Visit treatments interact"を表示し、欄１２３０は、コマンド"display message string 'treatment check: interact'"を表示している。欄１２１０は、規則に対応する形式問い合わせテキストを表示している。条件およびコマンドは、たとえば図６ないし図１１の画面を使用して、ユーザーにより指定することができる。
【００７１】
１組の規則は、「マクロ」という名前の論理単位にまとめることができる。ユーザーあるいはプログラマーは、他の規則を呼び出すために、"goto"ステートメントに続くラベルを使用するために、マクロ内の規則の間のリレーションシップを指定することができる。ラベルは、呼び出される他の規則を識別する。たとえば、ローンの申込を承認あるいは拒否するためのマクロは、次の規則を含むことができる。
【００７２】
if house-or-rent = "house" then goto (rule-house); else goto (rule-rent);
rule-house: if house-value > 500,000 and income > 40,000 then return(true); else goto (rule-house 2);
rule-house 2: if house-value > 5,000,000 then return (true); else return (false).
rule-rent: if income > 60,000 then return (true); else return (false).
上記の例で、"goto(rule-house)"は、ラベル"rule-house"により識別された他の規則を評価することを表す。"Return(true)"は、ローン申込を承認する決定を返すことを表す。"true"あるいは"false"論理値を返す代わりに、規則は、オブジェクトあるいはデータソースエレメント（ＤＳＥ）を出力として返すこともできる。
【００７３】
現実のアプリケーションでは、規則は上記の例よりもはるかに複雑な可能性がある。マクロおよび"goto"ステートメントは、ユーザーあるいはプログラマーが、規則の間のリレーションシップを指定することを可能にする。ユーザーあるいはプログラマーは、マクロにマクロ名を付けるように促される。さらに、規則あるいはマクロは、問い合わせあるいは他の規則の中で、条件あるいはコマンドとして使用することができる。
【００７４】
複数の問い合わせ、あるいは１つまたは複数の規則と１つまたは複数の問い合わせの組み合わせも、マクロにまとめることができる。問い合わせはラベルにより識別可能であり、"goto"ステートメントに続くラベルは他の問い合わせあるいは規則を呼び出すために使用することができる。マクロは、オブジェクトあるいはオブジェクトのクラスと組み合わせることができる。
【００７５】
構造化自然言語問い合わせを作る方法と同様に、ユーザーは構造化自然言語形式で規則を作成することができる。問い合わせ文と同様に、規則文は、規則の条件を指定するための１つまたは複数の形容詞句を有し、また条件が真である場合に行われる動作を指定するための動詞句を有する。規則文は、条件が偽である場合に行われる動作に対応する第２の動詞句を有することができる。規則文は、さらに、イベントにそれぞれ対応する１つまたは複数のオプショナルイベント句を有することができる。
【００７６】
図１において、規則作成モジュール１３１は、１つまたは複数の形容詞句を条件として、１つあるいは２つの動詞句をコマンドとして、ならびにオプションの形容詞句をイベントとして、選択することにより、規則を作成するようにユーザーを促す。ユーザーは、規則および／または問い合わせのマクロを指定することも可能であり、また、マクロの中の規則および／または問い合わせの間のリレーションシップを指定することもできる。規則翻訳モジュール１４１は、規則を形式問い合わせテキストに翻訳する。１つの実施例においては、規則翻訳モジュール１４１は、規則を機能、Java、C、C++、その他のようなシステム１００のホストプログラム言語での手順あるいはサブルーチンに直接翻訳することも可能である。規則プロセスモジュール１５１は、条件を評価し、続いて条件に対応するコマンドを実行する。さらに、モジュール１５１は、規則のオプショナルイベントの発生を監視する。
【００７７】
Ｂ．改良されたオブジェクトリレーショナル問い合わせ言語
問い合わせ、あるいは、改良されたオブジェクトリレーショナル問い合わせ言語による規則は、以下の形式で表現することができる。
【００７８】
Variable specifier
...
variable specifier
command
[where qualification]
変数指定子で定義された変数のそれぞれ可能性のある値に対して、その値が条件を満足させれば、コマンドが実行される。ブラケット"[ ]"は、条件がオプションであることを示す。条件は、１つまたは複数の条件（方法あるいはマクロにより表される各条件）と条件のパラメタを有する。コマンドは、方法あるいはマクロおよびコマンドの引数を有する。引数は、定数あるいは変数であり得る。ブールの真値あるいは偽値を返す方法は、論理的方法である。ブールの真値あるいは偽値を返すマクロは、論理的マクロである。他の状況では、方法／マクロは一般的な方法あるいは一般的なマクロと呼ばれる。方法あるいはマクロは、１つまたは複数の入力パラメタあるいは出力パラメタを有することができる。一般的な方法／マクロが条件として使用されれば、方法／マクロにより返される値にかかわらず、ひとたび実行されれば条件は真であると考えられる。最も単純な場合には、条件はパラメタを有する１つの方法あるいはマクロから成り、条件は次のように再帰的に作ることができる。
【００７９】
αおよびβが条件の一つであれば、（αおよびβ）は条件である。
【００８０】
αまたはβが条件の一つであれば、（αまたはβ）は条件である。
【００８１】
αが条件であれば、（αでない）は条件である。
【００８２】
変数指定子は、次の形式の１つで宣言することができる。
【００８３】
(a)  Range of <variable-id> is <data-type> : <DSE>
(b)  Temp of <variable-id> is <data-type>
(c)  Set of <variable-id> is <data-type> : <DSE>
(d)  Bag of <variable-id> is <data-type> : <DSE>
(e)  Set Temp of <variable-id> is <data-type>
(f)  Bag Temp of <variable-id> is <data-type>
上記の形式の"data-type（データ−型）"は、整数、浮動小数点、論理名、テキスト、日付、および、使用者が定義するデータフォーマットのようなデータ値のフォーマットを表す。上記の形式の"DSE"は、データソースエレメントを表す。データソースエレメントは、使用者が定義するオブジェクトの親子集合（set）、表、クラス、１組のデータ行を含むスプレッドシートファイル、その値が親子集合であるオブジェクトの属性、１組のオブジェクトを返す方法、上記の形式（ｃ）に示す親子集合変数、上記の形式（ｄ）に示すバッグ変数、以前の問い合わせの結果、以下の章Ｃで詳細に説明するオブジェクトリレーショナル式、および同等物、とすることができる。
【００８４】
さらに、ＤＳＥは、ツリー構造のような１組の構造化されたデータ、有向の非同期グラフ（ＤＡＧ）、あるいは拡張マークアップ言語（ＸＭＬ）ドキュメントのような半構造化データセットとすることができる。データ型は、多種多様な方法でＤＳＥにバインドすることができる。ＤＳＥの部分集合は、データ型にバインドする別のＤＳＥとして形成することができる。たとえば、"Person"および"Organization"と呼ばれる２つの部分集合（ノード）を有するツリー構造のＤＳＥ、"T"を仮定する。バインディング"Person:T"は、"T"の"Person node"のコレクションを新しいＤＳＥと定義することができる。データ型は、タグの使用によって、ＸＭＬドキュメントにバインドすることも可能である。たとえば、クラスＡ(a:integer, b:string)を下記のＸＭＬドキュメントにバインドすれば、その値が(10, "America)であるタイプＡのオブジェクトＡ１を有するＤＳＥに帰着する。オブジェクトＡ１はａとｂの属性から推測できるから、タグ<A1>および</A1>は無視することができる。
【００８５】
<ROOT>:
<A>
<A1>
<a> 10 </a>
<b> America </b>
</A1>
</A>
</ROOT>
さらに、データソースエレメントは、１つまたは複数の前の問い合わせからの結果を含むように動的に生成することができる。上の形式（ａ）で定義された変数は、領域変数である。形式（ｂ）で定義された変数は、一時変数である。形式（ｃ）で定義された変数は、セット変数である。形式（ｄ）で定義された変数は、バッグ変数である。形式（ｅ）で定義された変数は、一時セット変数である。上の形式（ｆ）で定義された変数は、一時バッグ変数である。
【００８６】
領域変数は、関連するＤＳＥから可能性のある値を得る。１組のバッグ変数の値は、関連するＤＳＥによって識別されるセットである。｛１，２，３，４｝のような個別の値のみを含むセットと異なり、バッグは｛１，２，３，４，１，３｝のような重複値を含むことができる。セット変数およびバッグ変数は、領域変数あるいは一時変数のドメインを構築するために使用することができる。セット変数およびバッグ変数は、引数としてセットあるいはバッグを必要とする方法の引数を形成するためにオブジェクトを集合するのに使用することもできる。一時変数は、一般的な方法の出力パラメタとして通常使用される。一時変数の値は、問い合わせに対して対応する方法あるいはマクロが評価されるときに計算される。一時セット変数あるいはバッグ変数の値は、関連するＤＳＥにより識別され、問い合わせに対して対応する方法あるいはマクロが評価される時に計算されるセットである。
【００８７】
上記の形式は、改良されたオブジェクトリレーショナル問い合わせ言語の望ましい構文法を示す。他の構文法形式は、本発明の技術思想と領域から逸脱することなく使用できる。たとえば、他の構文法形式において、変数は下記の形式を使用すると宣言される。
【００８８】
<variable-id>datatyp:<data-type>,variabletype:<variable-type>,dse:<DSE>
<variable-type>は、領域変数、一時変数、セット変数、バッグ変数、一時セット変数、あるいは一時バッグ変数の変数型を示している。
【００８９】
本発明をさらに明確に説明するために、以下にいくつかの例を使用する。望ましい構文法に戻って、２つのクラス「頂点」と「ポリゴン」を使用してデータベースの一例を定義する。ポリゴンオブジェクトは１組の頂点により定義され、頂点オブジェクトは２つの座標により定義される。
【００９０】
Class vertex (name : string, x : integer, y : integer) key : name
Class polygon (name : string, vertices : set of vertex) key : name
クラスポリゴンと組み合わされて、２つの条件"intersect"と"contain,"が定義される。条件"intersect"は２つのポリゴンを入力とし、１対の入力ポリゴンが相互に交差すれば、真の値を返す。条件"contain"は２つのポリゴンを入力とし、第１のポリゴンが第２のポリゴンを包含すれば、真の値を返す。
【００９１】
改良されたオブジェクトリレーショナル問い合わせ言語を使用する問い合わせのいくつかの例を以下に示す。次の問い合わせは、データソースエレメントａｂｃから、名前とすべてのポリゴンの頂点を発見する。
【００９２】
Range of t is polygon : abc  （query B1:問い合わせ  Ｂ１）
Retrieve (t.name, t.vertices)
次の問い合わせは、データソースエレメントａｂｃからポリゴンのすべての対を発見する。ここで、１つのポリゴンは他のポリゴンを含んでいる。
【００９３】
Range of t is polygon : abc  （query B2:問い合わせ  Ｂ２）
Range of s is polygon : abc
Retrieve (t.name, s.name)
Where t.contains(s)
上記の問い合わせにおいて、"where t.contains(s)"は、条件である。この条件に対して、"s"は、条件"contains"のパラメタである。
【００９４】
次の問い合わせは、ポリゴンＣに含まれ、ポリゴンＥと交差せず、そのサイズが５より大きい、データソースエレメントａｂｃからのすべてのポリゴンを示す。
【００９５】
Range of t is polygon : abc  （query B3:問い合わせ  Ｂ３）
Range of s is polygon : abc
Range of r is polygon : abc
Var u is float
s.show()
Where t.name.eq("C") and t.contains(s) and r.name.eq("E") and (not r.intersect(s)) and s.size(u) and u.gt(5)
以下の問い合わせは、積演算はサイズが５を超える正方形であり、その頂点はサイズが１０を超える正方形を含むポリゴンＥと交差するデータソースエレメントａｂｃからのすべてのポリゴンを示す。
【００９６】
Range of t is polygon : abc  （query B4:問い合わせ  Ｂ４）
Range of s is polygon : abc
Set u is vertex
Set w is vertex : s.vertices
Var v is float
Var x is float
s.show ()
Where t.name.eq("E") and s.intersection(t, u, v) and is-square(u) and v.gt(5) and .is-square (w) and w.size(x) and x.gt(10)
上記の問い合わせにおいて、"intersection"（積演算）はポリゴンと組み合わされた一般的な方法である。積演算は他のポリゴンを入力とし、積演算（１組の頂点）と積演算の領域を出力として返す。条件"t.name.eq("E") and s.intersection(t, u, v) and is-square(u) and v .gt(5) and .is-square(w) and w.size(x) and x.gt(10)"は、論理結合子"and"によって結合されたいくつかの条件を含んでいる。条件"is-square"は、頂点のコレクションが正方形を形成するか否かを判定するために、１組の頂点に適用される。
【００９７】
改良されたオブジェクトリレーショナル言語は、いくつかの点でＡＮＳＩ−ＳＱＬ９９に類似している。たとえば、問い合わせＢ３は、ＳＱＬ９９形式で書き直すことができる。
【００９８】
Select s.show ()
From t abc, s abc, r abc
Where t.name = "C" and r.name = "E" and t.contains(s) and not r.intersect(s) and s.size() >5
しかし、改良されたオブジェクトリレーショナル言語は、ＡＮＳＩ−ＳＱＬ９９に対して著しい利点を有する。たとえば、問い合わせＢ４はＳＱＬ９９に書き直すことができない。改良されたオブジェクトリレーショナル言語と比較して、ＡＮＳＩ−ＳＱＬ９９は、"range（領域）"型変数のみを許容し、セット変数、バッグ変数、一時変数、一時セット変数、あるいは一時バッグ変数は許容しない。ＳＱＬ９９では、変数の範囲は、その"range"型により決定され、いかなるデータソースエレメントでもあり得ない。さらに、ＳＱＬ９９における条件は、論理真値あるいは論理偽値以外のいかなる値も生むことはできない、したがって、一般的な方法は条件あるいは引数として使用することができない。改良されたオブジェクトリレーショナル言語は、これらの制限を除外する。
【００９９】
改良されたオブジェクトリレーショナル問い合わせ言語における規則は、以下の形式で表現できる。
【０１００】
variable specifier
...
variable specifier
[On event] [if qualification then] command [else command 2].
Or
variable specifier
...
variable specifier
[On event] [if qualification 1 then] qualification 2
第２の形式で表現された規則 "[On event] [if qualificationi then] qualification 2" は、第１の形式で表現された規則 "[On event] [if qualification then] command [else command 2]" と等価である。しかし、第２の形式は、ある状態ではもっとユーザーに親しみやすいことがある。たとえば、第２の形式の次の規則、
If the patient has prescription x then the patient cannot have prescription y
は下記の第１の形式の規則と等価である。
【０１０１】
If the patient has prescription x and the patient has prescription y then report ("constraint violation")
オプションとして、規則、１つまたは複数の入力パラメタ、および１つまたは複数の出力パラメタを識別するラベルも、規則は有することができる。入力パラメタは、その値が規則の条件に使用されるパラメタである。出力パラメタは、その値が規則のコマンドあるいは条件によって計算されて返されるパラメタである。改良されたオブジェクトリレーショナル問い合わせ言語におけるマクロは、以下の形式で表現できる。
【０１０２】
[On event:] [Object Type] Macro Macro-Name ([parameter],... ,[parameter])
global Variable specifier
...
global variable specifier
[label 1 :] rule / query 1;
.....
[label 2 :] rule / query 2;
上記の例において、"Object type"は、オプションの返却値のデータ型を指す。"Parameter"は、マクロの入力あるいは出力パラメタを指す。"Label 1"は規則あるいは問い合わせ"rule/query 1"を識別するラベルを表し、"label 2"は規則あるいは問い合わせ"rule/query 2"を識別するラベルを表す。イベントは、新しいオブジェクトの追加、オブジェクトの削除あるいは修正、あるいは、使用者が定義するイベントであってもよい。ラベルにより識別された規則あるいは問い合わせは、「ｇｏｔｏ〔ラベル〕」ステートメントを有する他の規則あるいは問い合わせにより呼び出すことができる。
【０１０３】
Ｃ．オブジェクト関係代数
オブジェクト関係代数は次のように特徴づけられることが望ましい。
【０１０４】
１．ＤＳＥはオブジェクトリレーショナル式（以下章Ｃでは「式」と書く）である。
【０１０５】
２．式のすべての要素が同じ非プリミティブの型を有するならば、式は「タイプバウンド」である。他の場合には、式は「タイプフリー」である。タイプフリー式は、単層ファイル、あるいは、その項目が整数、浮動小数点数およびテキストストリングのような基本的な値である１組のレコードのようなリレーションを表す。
【０１０６】
３．Ｅがタイプバウンド式であれば、σＰ（Ｅ）はタイプバウンド式であり、ここでＰは条件である。演算子σ（「選択」演算子と呼ばれる）は、ＥにＰを満足させるオブジェクトを結果として返す。Ｐは、式の型と組み合わされた条件、式のオブジェクトの属性と組み合わされた条件、あるいはその両方を有することが可能である。Ｅがタイプフリー式であれば、σＰ（Ｅ）はタイプフリー式であり、ここでＰは条件である。演算子σ（「選択」演算子と呼ばれる）は、ＥにＰを満足させるオブジェクトを結果として返す。
【０１０７】
４．Ｅが式であれば、ΠS（Ｅ）はタイプフリー式であり、ここでＳは１組の属性である。演算子Π（「射影」演算子、および、Ｅからの射影と呼ばれる）は、Ｅの各オブジェクトからＳで指定された属性を満足するＥのオブジェクトを除去し、Ｓで指定した属性を満足しないＥの他のオブジェクトを結果として返す。まれには、ΠS（Ｅ）はタイプバウンド式でもよい。
【０１０８】
５．ＥおよびＦが式であれば、
Ｅ×Ｆは式である。演算子（直積演算）は、セット｛（ｘ，ｙ）｜ｘ∈Ｅ，ｙ∈Ｆ｝を計算する。
【０１０９】
Ｅ∪Ｆは式である。演算子（和集合演算）は、２つの式の和集合演算を計算する。
【０１１０】
Ｅ−Ｆは式である。演算子（差集合演算）は２つの式の間の差集合演算を計算する。
【０１１１】
６．Ｅが式であれば、SＧA（Ｅ）はタイプフリー式である。演算子Ｇ（「集約」演算子と呼ばれる）は、Ｓで指定された属性のセットによってＥのオブジェクトを（属性、属性、．．．の形式で）分類し、集約関数（属性）あるいは集約関数（オブジェクト）の形式で集約関数のセットを各群に対して計算する。集約関数は、１群の基本的な値に加えることができる最小、最大、相加平均（mean）、分散、平均（avg）、和、総数（count）のような原始関数を含むことができる。集約関数は、１群の非プリミティブなオブジェクトに加えることができるユーザーあるいはプログラマーにより定義された一般的な関数をさらに含むことができる。一般的な関数は、１組の非プリミティブなオブジェクト上で操作されるユーザーあるいはプログラマーが定義した非原始関数（non-primitive function）である。たとえば、視覚画像ファイルのコレクションを処理し、最良の信号対雑音比を有する視覚画像ファイルを出力として返すように、ユーザーあるいはプログラマーは、「最良画像」、一般的な関数を定義することができる。一般的な関数が作動するために呼び出されるとき、一般的な関数は、プログラム、手順、問い合わせ、原始関数のコレクション、原始関数および一般的な関数のコレクション、あるいは他の一般的な関数のコレクションを通常呼び出す。まれには、ＳＧＡ（Ｅ）はタイプバウンド式でもよい。
【０１１２】
７．ｆが結果としてＤＳＥを返す方法あるいはマクロであれば、ｆ（引数）は式である。ｆ（引数）がタイプフリーであるか、あるいはタイプバウンドであるかは、ＤＳＥ内の要素の型により決定される。ＤＳＥのすべての要素が同じ型に属し、型がプリミティブでなければ、式はタイプバウンドであり、他の場合には式はタイプフリーである。
【０１１３】
オブジェクトクラス「患者」とデータソースエレメント「病院」を定義した若干のオブジェクトリレーショナル式の例を以下に示す。
【０１１４】
軽度のアルツハイマー病と診断され、"Aericept"（アリセプト）による薬物療法に反応する病院の患者を検索するために、セットＳ１を呼び出す。
【０１１５】
S1 ←σP1(hospital), where P1 = diagnosed ("mild AD") and respond#to("Aericept")  （問い合わせ  Ｃ１）
中度のアルツハイマー病と診断され"Aericept"（アリセプト）による薬物療法に反応する病院の患者を検索するために、セットＳ２を呼び出す。
【０１１６】
S2←σP2(hospital), where P2 = diagnosed("moderate AD") and respond#to ("Aericept")  （問い合わせ  Ｃ２）
Ｓ１とＳ２の和集合演算を計算し、結果Ｓを呼び出す。
【０１１７】
S←S1∪S2  （問い合わせ  Ｃ３）
Ｓ内の男性患者および女性患者の平均年齢を発見する。
【０１１８】
genderGavg(age) (S)  （問い合わせ  Ｃ４）
Ｓ１内の患者の性別プロファィル（gene profile）を抽出し、それをＧ１と呼ぶ。
【０１１９】
G1←Πgene-profile (Sl)  （問い合わせ  Ｃ５）
Ｓ２内の患者の性別プロファィルを抽出し、それをＧ２と呼ぶ。
【０１２０】
G2←Πgene-profile (S2)  （問い合わせ  Ｃ６）
Ｇ１とＧ２を比較し、結果をプロットする。
【０１２１】
Compare#profile#and#plot (G1,G2)  （問い合わせ  Ｃ７）
問い合わせは多くの方法で組み合わせることができる。たとえば、問い合わせＣ１からＣ４は、１つの問い合わせとして組み合わせることができる。
【０１２２】
genderGavg(age) (σP1 (hospital) ∪ σP2 (hospital))  （問い合わせ  Ｃ８）
従来の関係代数と比較して、オブジェクト関係代数は複合オブジェクトの操作を可能にする。関係代数では、データソースエレメントは、単に単層ファイル、あるいは、その項目が基本的な値である１組のレコードのようなリレーションである。さらに、「発明の背景」で説明したように、「選択」演算子の条件は基本的な値の単純な比較に限定されている。さらに、関係代数では、方法が式であることは許されていない。最後に、従来の関係代数における集約関数は、基本的な値にのみ適用できる最小、最大、相加平均（mean）、分散、平均（average）、和および計算、のような関数に限定されている。オブジェクト関係代数は、これらの制限を除き、従来の関係代数よりも著しい利点を提供する。
【０１２３】
いくつかの推奨実施形態に関して本発明を説明したが、他の実施形態も本明細書の開示から当業者に明白であろう。さらに、他の組み合わせ、省略、置換および修正も、本明細書の開示に照らして当業者に明白であろう。たとえば、構造化自然言語システム１００のモジュールは、さらに多くのあるいは少数のモジュールに組み合わせ、あるいは分離することができる。フローチャートで例示した動作のいくつかは、並列に、直列に、あるいは異なる順序で実行することができる。したがって、本発明は、推奨実施形態の説明により制限されるものではなく、添付した特許請求の範囲を参照して定義されるものである。
【０１２４】
次の表は、本システムの１実施形態に含まれる若干の方法例を列挙する。以下に列挙した方法のすべてが本発明によるシステムに含まれる必要は無く、また、補足的な方法を定義することができることが理解されるべきである。
システムが提供する方法
論理的方法の例
【０１２５】
【表１−１】
2004152259.tif 000003
【０１２６】
【表１−２】
2004152259.tif 000004
【０１２７】
【表１−３】
2004152259.tif 000005
【０１２８】
【表１−４】
2004152259.tif 000006
【０１２９】
【表１−５】
2004152259.tif 000007
【０１３０】
一般的な方法の例
【０１３１】
【表２−１】
2004152259.tif 000008
【０１３２】
【表２−２】
2004152259.tif 000009
【０１３３】
【表２−３】
2004152259.tif 000010
【０１３４】
【表２−４】
2004152259.tif 000011
【０１３５】
【表２−５】
2004152259.tif 000012
【０１３６】
【表２−６】
2004152259.tif 000013
【０１３７】
日付に関連する論理的方法の例
【０１３８】
【表３】
2004152259.tif 000014
【０１３９】
補足的な方法の例
【０１４０】
【表４−１】
2004152259.tif 000015
【０１４１】
【表４−２】
2004152259.tif 000016
【０１４２】
【表４−３】
2004152259.tif 000017
【０１４３】
【表４−４】
2004152259.tif 000018
【０１４４】
【表４−５】
2004152259.tif 000019
【図面の簡単な説明】
【０１４５】
【図１】構造化自然言語システムの１実施例を示す。
【図２】コマンドを定義するプロセスの１実施例を示す。
【図３】条件を定義するプロセスの１実施例を示す。
【図４】構造化自然言語問い合わせを作成するプロセスの１実施例を示す。
【図５】ユーザーあるいはプログラマーにオブジェクト変数を定めるよう促すユーザーインタフェイス画面の例を示す。
【図６】ユーザーにコマンドを選択するよう促すユーザーインタフェイス画面の例である。
【図７】ユーザーにコマンドを選択するよう促すユーザーインタフェイス画面の他の例である。
【図８】ユーザーにコマンド引数を選択し、任意選択で結果に名前をつけるによう促す画面の例である。
【図９】ユーザーに条件を選択するように促す画面の例である
【図１０】ユーザーに条件を選択するよう促す画面の他の例である。
【図１１】選択された条件に対してパラメタを指定するようにユーザーに促す画面の例である。
【図１２】作成された問い合わせを表示する画面の例である。
【図１３】構造化自然言語文を入力するようにユーザーを促す画面の例である。
【図１４】構造化自然言語における規則を表示する画面の例である。
【符号の説明】
【０１４６】
１００    システム
１０１    オブジェクトスキーマ定義モジュール
１１０    動詞句定義モジュール
１２０    形容詞句定義モジュール
１３０    構造化自然言語問い合わせ作成モジュール
１３１    構造化自然言語規則作成モジュール
１４０    問い合わせ翻訳モジュール
１４１    規則翻訳モジュール
１５０    形式問い合わせプロセスモジュール
１５１    形式規則プロセスモジュール
１６０    データベース
【図１】
2004152259.tif 000020
【図２】
2004152259.tif 000021
【図３】
2004152259.tif 000022
【図４】
2004152259.tif 000023
【図５】
2004152259.tif 000024
【図６】
2004152259.tif 000025
【図７】
2004152259.tif 000026
【図８】
2004152259.tif 000027
【図９】
2004152259.tif 000028
【図１０】
2004152259.tif 000029
【図１１】
2004152259.tif 000030
【図１２】
2004152259.tif 000031
【図１３】
2004152259.tif 000032
【図１４】
2004152259.tif 000033