(57)【要約】  照会を、第１のコンピューティング言語による表現（１１０）から第１のコンピューティング言語とは異なる第２のコンピューティング言語による表現（１３０）による等価の照会に変換するためのシステムが開示される。このシステムは、オブジェクト指向の表現による照会をターゲット照会言語による等価の照会に翻訳するために受け入れる照会モジュールを含む。このシステムは、さらに、この照会のこのオブジェクト指向の表現を用いて、ターゲット照会言語の理想化されたバージョンによる照会の第１のバージョンを生成し、さらに、この照会の前記第１のバージョンを用いて、ターゲット照会言語の実施バージョンによる照会の第２のバージョンを生成する翻訳モジュール（１２０）を含む。このシステムを用いる方法も提供される。
2009503678.tif 000002
【特許請求の範囲】
【請求項１】
照会を、第１のコンピューティング言語による表現から前記第１のコンピューティング言語とは異なる第２のコンピューティング言語表現による等価の照会に変換するためのシステムであって、
オブジェクト指向の表現による照会をターゲット照会言語による等価の照会に翻訳するために受け入れる照会モジュールと、
前記照会の前記オブジェクト指向の表現を用いて、ターゲット照会言語の理想化されたバージョンによる前記照会の第１のバージョンを生成し、さらに、前記照会の前記第１のバージョンを用いて、前記ターゲット照会言語の実施バージョンによる前記照会の第２のバージョンを生成する翻訳モジュールと
を含むことを特徴とするシステム。
【請求項２】
前記照会の前記オブジェクト指向の表現は、グラフであることを特徴とする請求項１記載のシステム。
【請求項３】
前記照会の前記オブジェクト指向の表現は、表現ツリーであることを特徴とする請求項１記載のシステム。
【請求項４】
前記ターゲット照会言語は、構造化照会言語（ＳＱＬ）であることを特徴とする請求項３記載のシステム。
【請求項５】
前記翻訳モジュールは、マルチステージパイプラインを含むことを特徴とする請求項４記載のシステム。
【請求項６】
前記マルチステージパイプラインは、構成可能であることを特徴とする請求項５記載のシステム。
【請求項７】
前記マルチステージパイプラインの構成は、複数の照会言語のどれが前記ターゲット言語として用いられるかを決定することを特徴とする請求項６記載のシステム。
【請求項８】
さらに、階層状の結果のセットのオブジェクト指向の表現を生成するためのオブジェクトトランスレータを含み、前記階層状の結果のセットは、データベースに対する１度より多くの照会から集められた情報を含むことを特徴とする請求項７記載のシステム。
【請求項９】
照会を、オブジェクト指向の表現からデータ照会言語表現に翻訳する方法であって、
オブジェクト指向の形式で表現された照会を用いて、データ照会言語の理想化された形式による等価の照会を生成するステップと、
前記理想化された形式による等価の照会を用いて、前記データ照会言語の実際のバージョンの形式による第２の等価の照会を生成するステップと、を含むことを特徴とする方法。
【請求項１０】
さらに、マルチステージパイプラインを用いて、前記第２の等価の照会を生成するステップを含むことを特徴とする請求項９記載の方法。
【請求項１１】
オブジェクト指向の形式で表現された照会を用いるステップは、セマンティックツリーを用いるステップを含むことを特徴とする請求項１０記載の方法。
【請求項１２】
マルチステージパイプラインを用いるステップは、前記マルチステージパイプラインを特定の照会言語をターゲットとするように構成するステップを含むことを特徴とする請求項１０記載の方法。
【請求項１３】
さらに、前記第２の等価の照会を用いて、データベースから結果のセットを得るステップを含むことを特徴とする請求項１２記載の方法。
【請求項１４】
さらに、前記結果のセットをオブジェクト指向の形式に変換するステップを含むことを特徴とする請求項１３記載の方法。
【請求項１５】
照会をオブジェクト指向の表現からデータ照会言語表現に翻訳するシステムであって、
オブジェクト指向の形式で表現された照会を用いて、データ照会言語の理想化された形式による等価の照会を生成するための手段と、
前記理想化された形式による前記等価の照会を用いて、前記データ照会言語の実際のバージョンによる第２の等価の照会を生成するための手段とを含むことを特徴とするシステム。
【請求項１６】
さらに、マルチステージパイプラインを用いて、前記第２の等価のクエリーを生成するための手段を含むことを特徴とする請求項１５記載のシステム。
【請求項１７】
前記オブジェクト指向の形式で表現された照会を用いる手段は、セマンティックツリーを用いる手段を含むことを特徴とする請求項１６記載のシステム。
【請求項１８】
前記マルチステージパイプラインを用いる手段は、前記マルチステージパイプラインを特定の照会言語をターゲットとするように構成する手段を含むことを特徴とする請求項１７記載のシステム。
【請求項１９】
さらに、前記第２の等価の照会を用いて、データベースから結果のセットを得る手段を含むことを特徴とする請求項１８記載のシステム。
【請求項２０】
さらに、前記結果のセットをオブジェクト指向の形式に変換する手段を含むことを特徴とする請求項１９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、照会を、オブジェクト指向の表現からデータ照会言語表現に翻訳するシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータはますます頻繁に様々な情報のロケーションおよび検索タスクを遂行するために用いられるようになってきている。一般には、これら情報のロケーションおよび検索タスクは、主として、リレーショナルデータベースに対する照会を、専用化された照会言語を用いて遂行するように構成されてきた専用化されたアプリケーションの領域内にあった。このような照会言語の中でも最も一般的なのは、構造化照会言語（ＳＱＬ）である。しかしながら、コンピューティング技術における、例えば処理能力および速度の向上および情報格納能力の増加のような最近の劇的な進歩のために、より広範な広いレンジの情報ロケーションおよび検索アプリケーションがより多様なコンピュータ上で利用できるようになってきている。
【０００３】
伝統的には、２つの主要なアプローチが、情報のロケーションおよび検索能力を高水準プログラミング言語で書かれているコンパイルされたアプリケーション内に含めるために存在する。第１のアプローチによると、例えばＳＱＬのような照会言語により書かれた照会のテキストが、コンパイルされたアプリケーションプログラム内にストリングとして符号化される。このプログラムが実行される際に、照会のテキストがアプリケーションプログラミングインタフェース（ＡＰＩ）からの機能へと渡され、ＡＰＩは、この照会をデータベースに渡し、この照会の遂行の結果としての情報を得る。第２のアプローチでは、コンパイラによりソースコードファイルから照会の埋め込まれたテキスト表現が抽出される。コンパイラは、この照会を、ＡＰＩを用いるようにリライトし、そして、この照会を、テキストストリングとして符号化し直す。
【０００４】
これら両方のアプローチにおいて、アプリケーションプログラマは、そのアプリケーションプログラマが彼のアプリケーションを書いている言語に加えて、照会言語の正しい構文および正しい使用方法を知ることを必要とされる。一般には、照会がアプリケーション内に、これらアプローチの１つを用いて含められるときには、そのアプリケーションが実際に実行されるまでに、すなわち、ランタイムまでに、構文チェックなどのタスクは、先行して遂行される。さらに、しばしば、照会言語とアプリケーションプログラミング言語とに対するプログラミングスタイル間にクラッシュがあり得る。例えば、ＳＱＬは、自身のプログラミングスタイルを有するリレーショナルデータモデル言語であり、他方、アプリケーションは、通常例えばＣのような手続き型言語を用いる命令的なプログラミングスタイルにより、または例えばＪａｖａ(登録商標）、Ｃ＃、あるいはＶｉｓｕａｌ  Ｂａｓｉｃのようなオブジェクト指向の言語を用いるオブジェクト指向のスタイルにより、または例えばＣ＋＋のような手続き型とオブジェクト指向が混合された言語により書かれる。アプリケーションプログラマにとっては、しばしば、新たなアプリケーションを生成するとき、異なるプログラミングパラダイムの間で効果的にスイッチすることが困難であることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
これらアプローチの１つを使用するためには、さらに、通常は、アプリケーションプログラムでオブジェクトとして表現されているデータと、リレーショナルデータベースの形式で表現されたデータとの間のオブジェクトリレーショナルマッピングを遂行するための、例えばオブジェクト照会言語のような中間コンポーネントが必要となる。しばしば、これらのオブジェクトリレーショナルマッピングコンポーネントは、リレーショナルデータベース内のデータに対して、照会が実際にどのように遂行されるべきかを表す良好なモデルを欠き、単に１つのデータ表現形式からもう１つの表現形式へのマッピングを提供するのみである。現在のシステムは、アプリケーションプログラマが、照会を、アプリケーションを生成するために用いられている高水準言語内の構造として直接に組み込み、この照会の構造を、リレーショナルデータベースにより用いることができる照会言語での等価の照会へと翻訳するための能力を欠く。
【課題を解決するための手段】
【０００６】
以下では、開示されおよび説明されるコンポーネントおよびこれらコンポーネントと関連する方法の幾つかの態様の基本的な理解を与えるために簡単な要約が提供される。この要約は広範な概観ではない。それは、主要となるかまたは重要な要素を特定することも、範囲を線引きすることも意図しない。唯一の目的は、幾つかの概念を簡単な形式で、後述されるより詳細な説明に対する準備として提供することにある。さらに、ここで用いられるセクションの見出しは、単に便宜的に与えられているものであり、どのようにも制限するものとして取られるべきではない。
【０００７】
照会翻訳システムは、オブジェクト指向の形式で表現されている照会、つまり、高水準オブジェクト指向プログラミング言語で生成されたアプリケーションプログラムによるオブジェクトを、データベースにより直接用いることができる照会言語による等価の照会に変換することができる。このシステムは、照会のオブジェクト指向の表現の構造を調べ、この構造を用いて、ターゲット照会言語の理想化されたバージョンによる等価の照会を生成することができる。このターゲット照会言語の理想化されたバージョンによる等価の照会は、データベースに対して照会を遂行するために用いるための、ターゲット照会言語の実施されたバージョンによる現実の照会ストリングに変換することができる。このシステムは、データベースからの結果のセットを取り込み、この結果のセットをアプリケーションプログラムによって使用することができるオブジェクト指向の形式に変換することができる。
【０００８】
照会翻訳システムは、照会を、論理的表現から、データベースで照会をそのデータベースに対して直接に遂行するために用いることができる物理的表現に変換するために、マルチステージパイプラインを用いることができる。マルチステージパイプラインは、異なる物理的表現を生成できるように構成することができる。これら異なる物理的表現は、異なる照会言語、単一の照会言語の異なるバージョン、あるいは両方であり得る。
【０００９】
開示されおよび説明されるコンポーネントおよび方法は、以下でより詳細に説明され、クレームにおいて具体的に指摘されるような特徴を含む。以下の説明および添付の図面は、幾つかの例示的な特徴を詳細に開示する。これら特徴は、開示されおよび説明されるコンポーネントおよび方法を採用する様々な方法の僅かなものを示すのみである。開示されおよび説明されるコンポーネントおよび方法の特定の実施は、このような特徴およびこれらの同等物の幾つか、多数、あるいは全てを含んでも良い。当業者によれば、ここに示される特定の実施および例のバリエーションが、以下の詳細な説明を図面との関連で考慮することで明白になるであろう。
【００１０】
本発明は、２００５年７月２９日付けで出願された（Ａｔｔｙ．Ｄｏｃｋｅｔ  Ｎｏ．ＭＳ３１３９３８．０１／ＭＳＦＴＰ１１０４ＵＳ）「ＲＥＴＲＩＥＶＩＮＧ  ＡＮＤ  ＰＥＲＳＩＳＴＩＮＧ  ＯＢＪＥＣＴＳ  ＦＲＯＭ／ＴＯ  ＲＥＬＡＴＩＯＮＡＬ  ＤＡＴＡＢＡＳＥＳ」と題する本出願と譲受人を同一とする係属中の米国特許出願第１１／１９３，５７４号、および２００５年７月２９日付けで出願された（Ａｔｔｙ．Ｄｏｃｋｅｔ  Ｎｏ．ＭＳ３１３９４０．０１／ＭＳＦＴＰ１１０５ＵＳ）「ＣＯＤＥ  ＧＥＮＥＲＡＴＩＯＮ  ＰＡＴＴＥＲＮＳ」と題する本出願と譲受人を同一とする係属中の米国特許出願第１１／１９３，６９０号と関連する。上述の出願の全てがここに参照として組み込まれる。
【発明を実施するための最良の形態】
【００１１】
この出願においては、「コンポーネント（ｃｏｍｐｏｎｅｎｔ）」、「システム（ｓｙｓｔｅｍ）」、「モジュール（ｍｏｄｕｌｅ）」、および類似する用語は、例えば、ハードウェア、ソフトウェア（例えば、実行における）、および／またはファームウェアなどのような、コンピュータと関連するエンティティを示すことが意図される。例えば、コンポーネントは、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行可能なプログラム、および／またはコンピュータであり得る。同様に、あるサーバ上で実行しているアプリケーションおよびこのサーバの両方も、コンポーネントであり得る。１つのプロセス内に１つあるいは複数のコンポーネントが存在することができ、コンポーネントは、１つのコンピュータ上に局所化させることも、あるいは２つあるいはそれ以上のコンピュータの間に分散化させることもできる。
【００１２】
開示されるコンポーネントおよび方法は、図面を参照しながら説明されるが、類似の参照符号が図面を通じて類似の要素を参照するために用いられる。以下の記述においては、説明の目的で、多くの特定の細部が開示される主題の完全な理解が得られるように説明される。しかしながら、これら特定の細部の幾つかは、ある特定の実施においては省略すること、あるいは他と組み合わせても良いことは明白である。他のケースにおいては、ある構造およびデバイスは、説明を容易にするためにブロック図の形式で示されている。加えて、説明される特定の実施は、クライアント／サーバアーキテクチャにおいて用いられる専門用語を用い、あるいは、さらには、クライアント／サーバの実施の例でさえあるが、当業者においては理解できるように、クライアントとサーバの役割は、逆転させることができ、開示されおよび説明されるコンポーネントおよび方法は、クライアント／サーバアーキテクチャに制限されるものではなく、とりわけ、ピア・ツウ・ピア（Ｐ２Ｐ）アーキテクチャを含む他のアーキテクチャ内で使用されるように容易に適合化することができ、これも開示されおよび説明されるコンポーネントおよび方法の精神あるいは範囲から逸脱するものではない。さらに、ここに示される特定の実施例は、特定のコンポーネントを含み、あるいは、それらに言及するが、ここに開示されおよび説明されるコンポーネントおよび方法の実施は、これら特定のコンポーネントに必ずしも制限されるものではなく、他のコンテキスト内においても同様に採用できることに注目すべきである。
【００１３】
人工知能に基づくシステム（例えば、明白におよび／または暗黙に訓練される分類子）を、後に説明される推論および／または確率的判定および／または統計に基づく判定の遂行との関連で採用することもできる。ここで用いられる「推論（ｉｎｆｅｒｅｎｃｅ）」なる用語は、一般には、システム、環境、および／またはユーザの状態について、イベントおよび／またはデータで捕捉されるセットの観察から推理（ｒｅａｓｏｎｉｎｇ）あるいは推測（ｉｎｆｅｒｒｉｎｇ）するプロセスを指す。推論は、例えば、特定のコンテキストあるいはアクションを識別するために採用されることも、または状態に関する確率分布を生成することもできる。推論は、確率的であり得る。例えば、推論には、関心のある状態に関して確率分布を、データおよびイベントを考慮して計算することも含まれる。
【００１４】
推論は、さらに、より高水準のイベントをイベントまたはデータのセットから構成するために採用される技術をも指す。このような推論の結果として、新たなイベントあるいはアクションが、観察されたイベントおよび／または格納されているイベントデータのセットから、これらイベントが時間的に近接して相関しているか否か、およびこれらイベントおよびデータが来るイベントおよびデータ源が単一であるかあるいは複数であるかに関係なく、構成される。様々な分類スキームおよび／またはシステム（例えば、支援ベクタマシーン、ニューラルネットワーク、エクスパートシステム、ベイジアンビリーフネットワーク、ファジー論理、データフュージョンエンジン、あるいは他の類似するシステム）を、自動的および／または推論されたアクションの遂行との関連で採用することができる。
【００１５】
さらに、開示されおよび説明されるコンポーネントは、コンピュータを制御するためのソフトウェア、ファームウェア、ハードウェア、あるいはこれらの任意の組み合わせを生成するための標準のプログラミングおよび／またはエンジニアリング技術を用いる方法、装置、あるいは製造品として実施することができる。ここで用いられる「製造品（ａｒｔｉｃｌｅ  ｏｆ  ｍａｎｕｆａｃｔｕｒｅ）」なる用語は、コンピュータで読み出し可能なデバイス、キャリア、あるいはメディアからアクセス可能なコンピュータプログラムを包含することを意図される。例えば、コンピュータで読み出し可能な媒体には、これに制限されるものではないが、磁気記憶デバイス、例えば、ハードディスク、フロッピディスク、磁気ストリップ、あるいは他のタイプの媒体；光学ディスク、例えば、コンパクトディスク（ＣＤ）、デジタルバーサタイルディスク（ＤＶＤ）、あるいは他の類似する媒体タイプ；スマートカード、およびフラッシュメモリデバイス、例えば、ユニバーサルシリアルバス（ＵＳＢ）サムドライブ、セキュアデジタルカード（ＳＤ）その他が含まれる。加えて、例えば、電子メールを送信および受信するために、あるいはネットワーク、例えば、インターネットあるいはローカルエリアネットワーク（ＬＡＮ）にアクセスするために用いられる搬送波あるいはデジタル信号をコンピュータで読み出し可能な電子データを搬送するために採用できることも理解されるべきである。勿論、当業者においては認識できるように、この構成に対して、多くの修正を、開示されおよび説明されるコンポーネントおよび方法の範囲あるいは精神から逸脱することなく、加えることもできよう。
【００１６】
図１は、照会翻訳システム１００のシステムブロック図である。照会翻訳システム１００は、ソース言語で表現することができる照会をターゲット言語で表現することができる意味論的に等価な照会に翻訳するために用いることができる。概念的には、この翻訳は、論理的表現空間から物理的表現空間への翻訳として記述することができる。より詳細には、照会のソース表現は、ホスト言語、通常は、高水準プログラミング言語の規則を用いて束ねられ、タイプチェックされた表現であり得、ターゲット言語は、例えばリレーショナルデータベースで直接に用いることができるＳＱＬのような照会言語であり得る。
【００１７】
この開示を通じて、実施例は、高水準プログラミング言語、ＳＱＬ、およびリレーショナルデータベースに基づくことに注意する。このような引例は、もっぱら説明を簡単にするため、およびここに提示されるコンポーネントおよび方法を説明するための実施例を提供するためのものである。これら特定の引例および実施例は、ここに開示されおよび説明されるコンポーネントおよび方法が、これら実施例に制限されることを意図することも、暗示することもない。反対に、ここに開示されおよび説明されるコンポーネントおよび方法は、多様な高水準プログラミング言語、照会言語、並びに多様なタイプのデータベースと共に用いることができる。より具体的には、ここに開示されおよび説明されるコンポーネントおよび方法は、他のコンテキスト内に、とりわけ、グラフィック処理および、例えば拡張可能なマークアップ言語（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ：ＸＭＬ）によるデータベースのような非リレーショナルデータベースを含む他のコード生成シナリオとの関連においても使用および適用することができる。ある特定の実施においては、幾らかの修正が必要となろうが、しかし、このような修正は、当業者においては、この開示を読むことで簡単に明らかになるものである。加えて、ホスト言語、ホストプログラミング言語、および高水準プログラミング言語なる用語は互換的に用いられている。
【００１８】
照会翻訳システム１００は、ソース照会表現１１０を含む。ソース照会表現１１０は、照会を意味論的に表現することができる任意のデータ構造であり得る。このようなデータ構造の例としては、これに制限されるものではないが、オブジェクト、ツリー、グラフその他が含まれる。より具体的には、ソース照会表現１１０は、ホストあるいは高水準プログラミング言語の規則に従って束ねられ、タイプチェックされたデータ構造であり得る。バインディングおよびタイプチェック機能は、ソース照会表現１１０がそれで生成されている高水準プログラミング言語を支援することができるコンパイラにより遂行することができる。
【００１９】
ソース照会表現１１０は、照会を、コンパイルされたアプリケーションプログラムで直接に表現することができる。ソース照会表現１１０内に含まれるデータ照会は、このアプリケーションの他の部分をプログラムするために用いられたのと同一の構文で記述することができる。支援コンパイラは、この照会を調べ、このバインディングおよびタイプチェック機能に加えて、他のコンパイル時の例えば構文チェックのようなタスクを遂行することもできるが、こうしなければ、これはランタイム時まで遅延され得る。加えて、支援コンパイラは、自身のオーバーローディング規則および訂正規則を、プログラムの正確さを保障し、ランタイム時の処理エラーを防止するために注入することができる。
【００２０】
例えばオブジェクト指向環境のような適当なコンピューティング環境においては、ソース照会表現は、セマンティックツリーとして実施することができる。セマンティックツリーは、一般に高水準プログラミング言語で表現できる任意のアプリケーションプログラムまたはアプリケーションプログラムの一部を表すことができる。説明を簡単にするために、ここに与えられる実施例は、セマンティックツリーの使用を、表現を表現することのみに制限する。しかしながら、この制限は、特定の実施において、適当あるいは要求される場合には撤回することができる。少なくとも一部分、セマンティックツリーは、ホストプログラミング言語を用いて生成されるために、セマンティックツリーはオブジェクトリレーショナル実施によりランタイム時に簡単に消費することができる。
【００２１】
セマンティックツリーを使用すると、例えばＳＱＬステートメントのような照会インストラクションをコンパイルされたアプリケーションプログラムにエンコーディングする手間を回避することができる。このアプローチによると、コンパイラは、純粋言語表現の構文を取ることができ、これによらなければ、ツリーの形式によるＳＱＬステートメントとして含まれるところの全てのインストラクションを表現するデータ構造を符号化することが可能になる。支援コンパイラは、別個の言語を理解および支援する必要性を、通常のプログラミング言語を適切にサポートするために一般的なパーサ、バインディング規則、その他の物を提供することにより回避することができる。
【００２２】
翻訳モジュール１２０は、ソース照会表現１１０にアクセスし、ソース照会表現１１０内に符号化されている照会の詳細を解明することができる。このようなアクセスの細部は、特定の実施に従い変化し得る。ソース照会表現１１０がセマンティックツリーとして実施されているケースにおいては、このセマンティックツリーは、このツリーを渡り歩くことで調べることができ、ツリーの構造およびツリーのメタデータを用いることで、ソース照会表現１１０からターゲット照会表現１３０への翻訳を推進させることができる。ターゲット照会表現１３０は、ソース照会表現１１０で符号化された照会と意味論的に等価であるが、しかし、データベースによって実際にそのデータベースに対する照会を遂行し、結果のセットを戻すために用いることができる例えばＳＱＬのようなターゲット言語で表現されている照会であり得る。
【００２３】
ソース照会表現１１０として実施されるセマンティックツリーのメタデータは、そのセマンティックツリーのメンバーに対するクラスの記述から得ることができる。追加的あるいは代替的に、リフレクションあるいは軽量リフレクションなどの技術を適用することでメタデータを得ることもできる。特定の実施において望ましいあるいは要求されるときは他の適当な技術を用いることもできる。
【００２４】
翻訳モジュール１２０は、ソース照会表現１１０からターゲット照会表現１３０への翻訳を遂行するために様々な技術を用いることができる。例えば、翻訳モジュール１２０は、リレーショナルデータベースのどのテーブル、列、あるいは行が、ソース照会表現１１０のオブジェクトで参照されているかを突き止めるために様々なオブジェクトリレーショナルマッピング技術を用いることができる。翻訳モジュール１２０は、さらに、バックエンドリレーショナルデータベースで支援されている照会構造のライブラリにアクセスし、ソース照会表現１１０内に符号化されている照会に基づいて、そのバックエンドリレーショナルデータベースに対して遂行することができるＳＱＬ照会を構成することもできる。このケースにおいては、別個のオブジェクト照会言語の使用は、オブジェクト構造に対応する照会フォームを提供するライブラリを使用することで回避することができる。リフレクション技術をオブジェクト構造に関する必要とされる情報を調べるために用いることもできる。
【００２５】
もう１つのアプローチは、マルチステージパイプラインプロセスを用いることにより、ソース照会表現１１０をターゲット照会表現１３０に直接にランタイム時において翻訳する方法である。このようなマルチステージパイプラインプロセスも翻訳の際のオブジェクト照会言語の使用を回避することができる。これを行う１つの方法は、ターゲット言語の理想化されたバージョンを採用する方法である。ターゲット言語のこの理想化されたバージョンは、ターゲット言語の全てのバージョンの全ての機能およびデータ構造を表すことができる。翻訳モジュール１２０は、最初に、ソース照会表現１１０で符号化された照会の理想化されたバージョンを生成し、次に、この理想化されたバージョンをバックエンドデータベースにより実際に用いられるバージョンに変換する。加えて、このマルチステージパイプラインプロセスは、同一のソース照会表現に対する代替翻訳を提供するように分岐することもできる。代替の翻訳を用いることで、ターゲット照会表現１３０を例えばＳＱＬ−９２あるいはＳＱＬ−９９のようなターゲット言語の異なるバージョン、並びに例えばＡＱＬあるいはＤＭＱＬのような異なるターゲット言語、並びにその他で生成することもできる。
【００２６】
動作において、照会翻訳システム１００は、以下のように機能する。翻訳モジュール１２０は、ソース照会表現１１０にアクセスすることで、照会を遂行するために、バックエンドデータベースからのどの資源が必要とされているかを突き止める。翻訳モジュール１２０は、さらに、ソース照会表現１１０で符号化されている照会に等価の理想化された照会をどのように構成するかについて、ソース照会表現１１０の構造を調べることで決定する。理想化された照会は、次に、理想化された言語と現実のターゲット言語でサポートされる特徴間の任意の差を識別することで、ターゲット照会表現１３０に翻訳される。例えばサポートされてない機能のような各差異に対して、１つあるいは複数の代替機能を適用することにより、所望の結果が、照会が正確であることを保障しながら達成される。完成したターゲット照会１３０は、次に、翻訳モジュール１２０によってアセンブルされ、データベースに対する照会を遂行するために用いられる。
【００２７】
図２は、例示的なデータリレーション２００の略図である。この例示的なデータリレーション２００は、論理的ビューのためのオブジェクト指向プログラミング言語および物理的ビューのためのＳＱＬを含むさまざまな言語によるデータ表現の基礎として用いることができる。より具体的には、これは異なるデータ表現を比較するための参照として使用することができる。
【００２８】
この例示的なデータリレーション２００は、部門（Ｄｉｖｉｓｉｏｎ）２１０を含む。この部門２１０は、事業の部門を表すことができる。従業員（Ｅｍｐｌｏｙｅｅ）２２０は、部門２１０と零対多数関係で関連させることができる。身分（Ｐｏｓｉｔｉｏｎ）２３０は、従業員と零対あるいは１対１関係で関連させることができる。このスキーマが以下の説明の基礎である。
【００２９】
上述の図２の３つのエンティティは、下で説明されるように、対応するテーブルあるいはクラスで表現することができる。クラスは、対応するテーブルにマッピングすることができる。
【００３０】
create table DivisionTable  (
DivId integer identity,
DivName     varchar(100),
CONSTRANT PK_DivisionTable PRIMARY KEY
(DivId)
)
create table EmployeeTable (
EmpId integer identity,
DivId integer not null,
EmpName    varchar(100),
StarDate DateTime not null,
CONSTRAINT PK_EmployeeTable PRIMARY KEY
(EmpId),
CONSTRAINT FK_EmployeeDivision FOREIGN KEY
(Divid) references DivisionTable (DivId)
)
create table PositionTable (
PosId integer identity,
EmpId integer not null,
PosName     varchar(100),
Level integer noy null,
CONSTRAINT PK_PositionTable PRIMARY KEY
(PosId),
CONSTRAINT FK_PositionEmployee FOREIGN KEY
(EmpId) references EmployeeTable(EmPId)
）
【００３１】
対応するクラスの概要は、以下に示される通りである。
class Division
{
private int id;
private string name;
private EntitySet <Employee > employees;
public int DivId
{
get{return id;}
set{id=value;}
}
public string DivName
{
get{return name;}
set{name=value;}
}
public EntitySet <Employee > Employees
{
//従業員インスタンスとの関係を管理するためのコード
}
}
class Employee
{
private int id;
private string name;
private EntityRef <Division > division;
private EntityRef <Position > position;
public int EmpId
{
get{return id;}
set{id=value;}
}
public string  EmpName
{
get{return name;}
set{name=value;}
}
private EntityRef <Division > Division;
{
//部門インスタンスとの関係を管理するためのコード
}
private EntityRef <Position >Position;
{
//身分インスタンスとの関係を管理するためのコード
}
}  
class Position
{
private int id;
private string name;
private EntityRef <Employee >employee;
public int PosId;
{
get{return id;}
set{id=value;}
}
public string PosName
{
get{return name;}
set{name=value;}
}
public EntityRef <Employee >Employee;
{
//従業員インスタンスとの関係を管理するためのコード
}
}
【００３２】
上述の例示的なコードの小片においては、リレーショナルデータベース内のテーブルの名前とオブジェクト指向のアプリケーションプログラム内のクラスの名前との間には明快な対応が存在する。テーブルのフィールドは、クラスのメンバーと対応させることができる。さらに、クラスの方法も、そのデータベースによりデータに関する動作を遂行するために提供される機能と対応されることができる。２つあるいはそれ以上のクラスの間の関係を管理するためのコードを、テーブルの制約もしくは一次キー、すなわち外部キー関係に対応させることもできる。
【００３３】
図３は、照会翻訳システム３００のシステムブロック図である。照会翻訳システム３００は、ソース言語で表現することができる照会をターゲット言語で表現することができる等価の照会に翻訳するために用いることができる。より具体的には、照会のソース表現は、ホスト言語の規則を用いて束ねられ、タイプチェックされた表現であり得、ターゲット言語は、ＳＱＬであり得る。
【００３４】
照会翻訳システム３００は、関連する照会３２０を有するアプリケーション３１０を含む。アプリケーションは、例えば、ワードプロセッサ、ファイルマネジャ、サービスもしくはデーモンプロセス、あるいは任意の他の実行可能なアプリケーションのような任意のアプリケーションである可能性がある。照会３２０は、アプリケーション３１０のコンパイルされたコードの一部分であっても、あるいは代わりにそのコードと結合されても良い。より具体的には、照会３２０は、上で、図１との関連で、開示されおよび説明されたようなセマンティックツリー表現であっても良い。
【００３５】
アプリケーション３１０は、ランタイム環境３３０上で実行することができる。このランタイム環境３３０は、オペレーティングシステム、埋め込み型オペレーティングシステム、仮想マシーン、あるいはアプリケーション３１０の実行を支援することができるある他の適当なオペレーティング環境であっても良い。アプリケーション３１０がオブジェクト指向のアプリケーションプログラムとして実施され、照会がセマンティックツリーとして実施されるときは、ランタイム環境３３０は、必要に応じて、アプリケーション３１０のオブジェクトにアクセスし、これを操作するための機能をサポートすることができる。これら機能には、照会３２０のセマンティックツリー表現を用いるための機能のみならず、少なくともアプリケーション３１０の適切な動作に対して必要される任意の機能を含むことができる。
【００３６】
トランスレータ３４０は、アプリケーション３１０の照会３２０にアクセスすることができる。トランスレータ３４０もランタイム環境３３０上で動作することができる。代替として、トランスレータ３４０は、異なるランタイム環境内で、照会３２０にアクセスするためのなんらかの手段が提供されている限り、実行することもできる。トランスレータは、さらに、理想ターゲット言語表現３５０にアクセスすることもできる。理想ターゲット言語表現３５０は、所望のターゲット言語の理想あるいは普遍バージョンをモデル化することができる。例えば、ＳＱＬ−９９は、例えばＳＱＬ−９２のようなＳＱＬの他のバージョンが支援しない機能を含む。ＳＱＬ−９２の幾つかの機能は、ＳＱＬ−９９内においては、廃止されていることもある。理想ターゲット言語表現３５０でモデル化されているＳＱＬの理想化されたバージョンは、ＳＱＬ−９９およびＳＱＬ−９２の両方の全ての機能を含むことができる。最終的なターゲットが、例えばＳＱＬ−９９の利用不能な機能を達成するための機能上の等価物あるいはプログラミングアプローチあるいはアルゴリズムのようなＳＱＬ−９２であるときに、ＳＱＬ−９９の特徴を実施するための規則も、理想ターゲット言語表現３５０内に含めることができる。同様に、ＳＱＬ−９２からの廃止されている機能をＳＱＬ−９９に準拠するコード内に実施するための規則を含めることもできる。
【００３７】
翻訳された照会３６０は、トランスレータ３４０で生成することができる。翻訳された照会３６０は、理想化されたバージョンではなく、例えばＳＱＬ−９９のようなターゲット言語の実際のバージョンであっても良い。翻訳された照会３６０のこの実際のバージョンは、データベース３７０に直接に渡すことができるテキストのストリングのような形式であっても良い。翻訳された照会３６０のデータベース３７０への通過は、コンピューティングプラットホーム上でのプロセス内通信技術を通じての方法を含む多様な方法で達成することができる。加えて、あるいは代替として、翻訳された照会３６０は、遠隔データベースに、例えばローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イントラネットあるいはインターネット等のようなネットワーク接続を用いて渡すこともできる。データベース３７０は、翻訳された照会３６０を用いてデータベース３７０のコンテントに対する照会を遂行し、結果のセット（図示ぜず）を生成することができる。
【００３８】
動作において、照会翻訳システム３００は、以下のように機能する。アプリケーション３１０は、ランタイム環境３３０上で実行する。実行の際に、照会３２０を処理する時間になると、アプリケーション３１０は、照会３２０のデータ構造をトランスレータ３４０に渡す。トランスレータ３４０は、照会３２０のデータ構造を渡り歩き、理想ターゲット言語表現３５０にアクセスし、照会３２０の理想化された表現を生成する。トランスレータ３４０は、次に、理想ターゲット言語表現３５０にアクセスし、翻訳された照会３６０を、照会の理想化されたバージョンからどのように導き出すかを決定する。翻訳された照会３６０が、次に、データベース３７０に使用のために転送される。
【００３９】
図４は、セマンティックツリー構造４００のブロック図である。セマンティックツリー構造４００は、高水準プログラミング言語による照会を、そのプログラミング言語に対するコンパイラで自身の第１言語のように扱うことができるデータ構造として、符号化するために用いることができる。加えて、セマンティックツリー構造４００は、この構造を、この構造内に符号化されている照会を得るために評価することができる他のコンピューティングコンポーネントに渡すこともできる。
【００４０】
セマンティックツリー構造４００は、複数の葉４１０を含む。葉４１０の各々は、スカラ参照でも、列参照でも、あるいはデータ射影動作の表現内に用いることができるあるリテラルであっても良い。各葉４１０内に含まれる値は、ターゲット言語による照会を生成するために用いることができる射影リスト内に置いても良い。
【００４１】
複数のノード４２０をセマンティックツリー構造４００内に含めることもできる。２つあるいはそれ以上のノード４２０間の相互接続は、ネスティング、エンティティ間の関係、射影の階層、あるいはモデル化することができる別の関係概念を表現することができる。トランスレータなどのコンポーネントは、セマンティックツリー構造４００を渡り歩き、この構造を見つけ、符号化された照会を突き止めることができる。加えて、ノード４２０および葉４１０は、リフレクションあるいは軽リフレクションなどの方法を通じて自身に関する情報を提供することもできる。関係および構造を見つけるための他の方法を採用することもできる。
【００４２】
図５は、マルチステージパイプライン翻訳システム５００のシステムブロック図である。マルチステージパイプライン翻訳システム５００は、１つの空間内に論理的に表現されている照会を、別の空間内に物理的に表現されている等価の照会に変換するために用いることができる。例えば、マルチステージパイプライン翻訳システム５００は、例えばセマンティックツリー、あるいはグラフなどの別の適当なデータ構造のようなオブジェクトベースの照会を取り込み、このオブジェクトベースの照会を、データベースで直ちに用いることができる等価のＳＱＬステートメントに変換することができる。
【００４３】
マルチステージパイプライン翻訳システム５００は、ソース照会５１０を含む。ソース照会５１０は、上述のように、セマンティックツリー、グラフ、あるいは任意の他の適当なデータ構造であり得る。マルチステージパイプライン５２０は、ソース照会５１０を受け入れ、ソース照会５１０を各ステージに沿って、次々と、各ステージにおいてある仕事を遂行しながら、最終的にターゲット照会５３０が生成されまで渡す。ターゲット照会５３０は、例えばＳＱＬ等のような適当な照会言語によることができる。
【００４４】
この特定の実施例においては、マルチステージパイプライン５２０は、１０個のステージを有する。特定の実装者の必要性あるいは要件に応じて、これより多数のあるいは少数のステージを採用することもできる。マルチステージパイプライン５２０は、複数のステージの仕事を複数のプロセッサ上で実質的に同時的に遂行することで、パラレル化することもできる。加えてあるいは代替として、単一のステージの仕事を、類似するやり方でパラレル化することもできる。幾つかのステージを単一のステージに結合することも、あるいは単一のステージを複数のステージに分解することもできる。さらに、この実施例においては、元の照会はオブジェクト、より具体的にはセマンティックツリーの形式であり、ターゲット照会は、ＳＱＬである。
【００４５】
ステージ０において、オブジェクト照会ノードがＳＱＬクローズに翻訳される。オブジェクト照会ノードは、マッピングされている照会を表す１つのプログラム全体の一部であっても良い。翻訳するためには、ステージ０は、クラスの方法を、これらの方法のＳＱＬ対応物にマッピングする。これらＳＱＬ対応物は、ターゲット言語で利用可能な方法のメタ表現である。メタ表現は、ターゲット言語の理想化されたバージョンによる構造であり、ターゲット言語は、オブジェクト照会ノードを生成するために用いられたプログラミング言語が表すことができる全てを表すことができるという理想的な想定に基づいて、中間表現を提供することにより翻訳を支援する。ＳＱＬのケースにおいては、ＳＱＬは、ほとんどのプログラミング言語と同様にチューリングコンプリート（Ｔｕｒｉｎｇ−ｃｏｍｐｌｅｔｅ）ではないために、この言語は、あるプログラミング言語が少なくとも部分的に表現する能力を有するところの全てのものを表現することはできない。ステージ０においては、名前の衝突を回避するために名前のスコーピングも考慮される。
【００４６】
ステージ１は、照会オブジェクトで表現されていた単一の照会を複数のＳＱＬ照会に翻訳できるような方法によるセットの照会の生成を含む。これは、ネスティング問題を回避するために、あるいは、照会の翻訳を、単一の複雑な照会ではなく、複数の単純な照会を生成することにより簡素化するために行われる。もし照会されているデータサーバ上のシミュレートされたアクティブな結果のセットあるいは複数のアクティブな結果のセットに対して適当なサポートが提供されている場合には、複数の照会をバッチとして一緒に実行することもできる。ある照会の結果を後続の照会による使用のためにキャッシングすることで、複数の照会をシミュレートすることもできる。
【００４７】
ステージ２において、メンバー参照がマッピングテーブルを調べることで解決される。例えば、Ｄｉｖｉｓｉｏｎ．ＤｉｖＮａｍｅなるオブジェクトメンバーは、マッピングテーブルによりそのように指定されているときには、ＤｉｖｉｓｉｏｎＴａｂｌｅ．ＤｉｖＮａｍｅに翻訳することができる。マッピングは、ＳＱＬ照会内のテーブル間の列およびジョイントに対しても生成することができる。マッピングテーブル内に任意の翻訳を指定することもできる。マッピングテーブルは、テキストファイル、オブジェクト、あるいはデータベースとして、あるいは任意の他の適当な実施として実施することもできる。
【００４８】
ステージ３において、マルチセットに対する別個の照会が生成される。例えば、図２の従業員なるデータセットの例のようなオブジェクトモデルの上でアクセスすることができる連関あるいは特性は、結果のコレクションを与える。ターゲット言語（ＳＱＬ）の理想化されたバージョンにおいては、コレクションはマルチセットとみなすことができる。マルチセットは、ネストテーブルの記述であり得る。単一の結果が、例えば１つの照会から階層的な結果を得るというような結果のネストテーブルを与えることもある。ＳＱＬ言語の現実のバージョンは、階層的な結果をサポートすることはできない。ステージ３における処理は、このようなタイプの結果を探し出し、これらを複数の照会に変換するが、これらはクライアントエンドの所で一緒に結合して元に戻すことができる。
【００４９】
ステージ４は、ＯｒｄｅｒＢｙ（順番による）クローズを、ＳＱＬ制約を満足させるために並べ替える。現実のＳＱＬ実施においては、ＯｒｄｅｒＢｙクローズは、最も外側の照会ブロック内においてのみ許される。ＯｒｄｅｒＢｙは、サブ照会あるいはネストされた照会においては使用することはできない。照会のオブジェクト表現において、順番はある特定のスコープに対して任意のレベルにおいて定義することができる。したがって、使用可能なＳＱＬ照会を生成するためには並べ替えが必要となる。正しいＯｒｄｅｒＢｙの並べ替えを保障するために標準の照会書き換え規則を採用することができる。
【００５０】
ステージ５において、オブジェクト表現がＳＱＬ照会において用いることができるフラットな列参照に翻訳される。オブジェクト表現は、主題の照会の階層を表すセマンティックツリーを渡り歩くことで得ることができる。このツリーの葉は、スカラ表現であっても、列参照であっても良い。これらは、射影を表すリスト内に置くことができる。この論理的結果を表すセマンティックツリーは、物理的な結果、すなわちＳＱＬ照会を構成する小片を除去することにより刈り込み、こうしてこのツリーの残りの部分を更なる解析のために簡素化することもできる。
【００５１】
内側スコープ内の列および表現への参照は、ステージ６において解決される。ＳＱＬ照会においては、もし外側照会が列を使用する場合は、この列は内側照会の射影内になければならない。ステージ６において、各参照が用いられるスコープ内で各参照が、ビジブルとなることを保障するために、射影が調節される。例えば、あるサブ照会が生成されると、別名が生成される。これは、テーブルの別名から来る列への参照から開始する。変換を通じて照会の層を注入することができる。書き替えしなければ、別名を参照することは、サブ照会の複数の層の下に埋まってしまうために、不可能である。
【００５２】
このステージの処理においては、参照が調べられ、その参照が深くネストとして埋め込まれている射影の部分であるか否かを判定される。もしそうであるときは、その列の値がこれらの層を通じて上方へと射影され、これが適当なあるいは要求されるスコープ内へと持ち込まれる。ここでの処理は、列の原点を結びつけることはない。処理コンポーネントは、ある情報の列が存在することのみを認識する。こうすることで、プロセッサが、セマンティックツリーを、任意の順番に、その列のソースの最終的な位置と関係なく、書き替えることが可能になる。プロセッサは、単に、その列がどこで定義されており、その列がどこで用いられるかを知ることのみで、その列からのデータが、必要とされているところに流れることを保障することができる。
【００５３】
ステージ７は、名前および別名を割り当てる。外側照会内で使用される内側照会内に定義される表現には、名前が与えられる。重複する名前を有する列には、別名が割り当てられる。選択（ｓｅｌｅｃｔ）ステートメントのフォーム（Ｆｒｏｍ）クローズで参照されるサブ照会あるいはテーブルが存在すると、同一列のからの再射影は、ときとして、結合動作の結果としての名前の衝突を生じさせる。ステージ７は、このような名前の衝突の発生を探索し、必要とされるとき、あるいは適当であるときは、新たな名前を割り当てる。更に、無名のアイテムには、名前が割り当てられる。
【００５４】
ステージ８において、リテラルおよび表現からプログラム変数を用いて照会パラメータが生成される。ステージ８のプロセッサは、照会を、実際には外部パラメータであるなにかへの参照が存在しないか調べる。これら外部パラメータを集め、セマンティックツリーのフラグメントで評価することで、現実の値が得られ、これら値は、現実の照会が行われたとき、適当なＡＰＩを通じて提出される。ＳＱＬコマンドに翻訳することができるものではなく、ＳＱＬコマンド内のパラメータ参照に翻訳することができるツリーの部分は、切り取られる。このアプローチは、ＳＱＬ注入の問題を最小化し、これによりデータのセキュリティを増加させる。少なくともある部分において、これは、連結すべきストリングが存在しないためである。もしプログラマが、リテラル値あるいはローカル値を表現することを望む場合には、彼は、単にその値をその照会内で用いることができる。この値は、ある表現ツリー内で捕捉することができ、その後、用いることができる。
【００５５】
ステージ９は、単に、翻訳された照会の全ての照会小片をアセンブルし、これらの小片を、照会としてデータベースに渡すことができるテキストストリングとしてセットする。このテキストストリングは、このマルチステージパイプライン５２０から、処理が完了した時点で、出てくるターゲット照会５３０であり得る。このテキストストリングは、完全なＳＱＬステートメントであって、結果のセットを生成するために用いることができ、この結果のセットは、アプリケーションプログラムによる更なる処理において使用される。
【００５６】
図６は、構成可能なパイプライン６００の略図である。構成可能なパイプライン６００は、翻訳された照会を、異なるターゲット言語で生成するために用いることができる。より具体的には、翻訳された照会は、照会言語の例えばＳＱＬ−９２およびＳＱＬ−９９のような異なるバージョンをターゲットとすることも、あるいは異なる言語全体をターゲットとすることもできる。
【００５７】
構成可能なパイプライン６００は、入力フェーズ６１０を含む。入力フェーズ６１０は、例えば図５と関連して上で開示されおよび説明された処理ステージのような、１つあるいは複数の処理ステージを含むことができる。より具体的には、入力フェーズ６１０は、選択されたターゲット言語とは無関係に遂行されるべき処理ステージを含むことができる。具体的にどのステージが含まれるかは、パイプラインの要求される構成能力の総量およびターゲット言語の類似性その他の要因に依存する。
【００５８】
出力フェーズ６２０、６３０、６４０は、入力フェーズ６１０で開始される処理パイプラインを完結するために用いられる。各出力フェーズ６２０、６３０、６４０は、特定の言語あるいは言語のバージョンをターゲットとするように設計することができる。従って、出力フェーズ６２０、６３０、６４０の選択は、単に、どの言語あるいは言語バージョンが翻訳のためのターゲットとされるべきかを知ることでのみ行うことができる。各出力フェーズ６２０、６３０、６４０に具体的にどのステージが含まれるかは、大きくは、入力フェーズ６１０内にどのステージが含まれるかその他の要因に依存する。
【００５９】
図７は、照会翻訳システム７００のシステムブロック図である。照会翻訳システム７００は、照会を論理的表現から物理的表現に変換するために用いることができる。さらに、照会翻訳システム７００は、照会結果のセットを、元の照会を含んでいたアプリケーションプログラムにより用いられることができるオブジェクト表現に翻訳するために用いることもできる。
【００６０】
照会翻訳システム７００は、オブジェクト照会表現７１０を含む。オブジェクト照会表現７１０は、セマンティックツリー、グラフ、あるいは他の適当な表現であり得る。翻訳モジュール７２０は、オブジェクト照会表現７１０を受け入れ、オブジェクト照会表現７１０を、例えばターゲット照会表現７３０のような、ターゲット言語における等価の照会に変換することができる。他の図面と関連して上で開示されおよび説明されたマッピング技術に加えて、翻訳モジュール７２０は、さまざまな人工知能ベースのコンポーネントを用いることで、あるオブジェクトとＳＱＬステートメントとの間のマッピングを行うべきか否かを決定することができる。
【００６１】
翻訳モジュール７２０は、様々な方法を用いて、例えばセマンティックツリーのようなあるオブジェクトの少なくとも一部を、あるターゲット言語の理想化されたバージョンにおける適当なコードとマッチングすることができる。従来の複数のマッチング手続きに加えて、翻訳モジュール７２０は、ニューラルネットワーク、エクスパートシステム、規則ベースの処理コンポーネント、あるいは支援ベクタマシーン（ｓｕｐｐｏｒｔ  ｖｅｃｔｏｒ  ｍａｃｈｉｎｅ，  ＳＶＭ）を用いることができる。
【００６２】
分類子は、入力属性ベクトルＸ＝（ｘ１、ｘ２、ｘ３、ｘ４、…ｘｎ）を、その入力があるクラスに属する確かさ、すなわち、ｆ（Ｘ）＝確かさ（クラス）にマッピングする関数である。このような分類は、確率および／または統計ベースの解析（例えば、解析の有用性とコストへのファクタリング）を採用することで、ユーザが自動的に遂行されることを要求するアクションを診断あるいは推測することができる。翻訳モジュール７２０のケースにおいては、セマンティックツリーは、パターンとして扱うことができ、これを分類することによりそのようなパターンがＳＱＬステートメントの対応するパターンと一致するか否かを決定することができる。当業者においては、この開示を読むことで明らかであるように、他のパターンマッチングタスクを採用することもできる。
【００６３】
ＳＶＭは、採用することが可能な分類子の一例である。ＳＶＭは、可能な入力の空間内の超曲面を見つけることで動作し、この超曲面は、トリガリング基準と非トリガリング事象とを分けることを試みる。直感的に、これは訓練データの近傍ではあるが、しかし、同一ではないデータをテストするための分類をより正確にする。他の有向あるいは無向モデル分類アプローチには、例えば、ナイーブベーズ（ｎａｉｖｅ  Ｂａｙｅｓ）、ベーズネットワーク（Ｂａｙｅｓｉａｎ  ｎｅｔｗｏｒｋ）、判定ツリーが含まれ、また、独立性の異なるパターンを提供する確率的分類モデルを採用することもできる。ここで用いられる分類には、優先順位のモデルを展開するために利用することができる統計的回帰も含まれる。
【００６４】
主題の明細書から容易に理解できるように、ここで開示されあるいは説明されるコンポーネントは、明白に（例えば、一般訓練データにより）訓練される分類子を採用することも、暗黙に（例えば、ユーザの挙動を観測し、あるいは外部の情報を受信することにより）訓練される分類子を採用することもできる。例えば、ＳＶＭは、分類子製造者および特徴選択モジュール内において学習あるいは訓練フェーズにより構成することができる。このように、これら分類子を用いることで、これに制限されるものではないが、ある記述子が探索オブジェクトに一致するか否かを決定することを含む複数の機能を自動的に遂行することができる。
【００６５】
データベース７４０は、ターゲット照会表現７３０を受け入れ、含まれているデータに対して照会を遂行することで、結果のセット７５０を生成することができる。この実施例においては、このデータベース７４０は、リレーショナルデータベースであり得、結果のセット７５０は複数の行と複数の列を含むテーブルであり得る。他のタイプのデータベースも、照会翻訳システム７００の他のコンポーネントに適当な修正を施すことで用いることもできる。
【００６６】
オブジェクト変換器７６０は、結果のセット７５０を受け入れ、結果のセット７５０を用いることで、オブジェクト化された結果のセット７７０を形成することができる。これを行うために、オブジェクト変換器７６０は、データベース７４０に送られたＳＱＬ照会にアクセスし、このＳＱＬ照会の内部表現を用いて専用化されたオブジェクトを構成し、オブジェクト、一枚札、列、および遅延されたリーダーを読み出すことができる。例えば、部門オブジェクトに対する照会は、結果として部門テーブル（ＤｉｖｉｓｉｏｎＴａｂｌｅ）からの行を有するデータリーダー（ＤａｔａＲｅａｄｅｒ）の生成に繋がる。オブジェクトリーダは各行を部門オブジェクトに変換することができる。インクルーディング（）なるオペレータは、結果として部門．従業員のコレクションを直ちにローディングすることとなる。
【００６７】
コレクションリーダは、部門の従業員テーブルからの行を部門．従業員のコレクションに変換することができる。部門．地位に対する照会は、結果として地位に対する一枚札リーダーを与える。Ｅｍｐｌｏｙｅｅ．ＥｍｐＩＤに対する照会は、ＥｍｐＩＤに対する列リーダーを要求することがある。部門．従業員の延期された（あるいは遅延された）ローディングは、遅延リーダーで扱うことができる。各専用化されたリーダーは、底辺に横たわるデータリーダーに対するメタリーダ（列およびそれらのタイプ）並びにターゲットに対するメタデータ（ＣＬＲタイプ、そのメンバー、濃度）を理解することができる。
【００６８】
動作において、照会翻訳システムは、以下のように機能する。翻訳モジュール７２０は、オブジェクト照会表現７１０を受け入れ、このオブジェクト照会表現７１０を処理することによりターゲット照会表現７３０を生成する。データベース７４０は、ターゲット照会表現７３０を受け入れ、このターゲット照会表現７３０を用いて照会を遂行することにより、結果セット７５０を生成する。オブジェクト変換器は、ターゲット照会表現７３０を使用して、セットの専用化されリーダーを生成するが、これは結果セット７５０の形式による情報を処理することによりオブジェクト化された結果セット７７０を生成することができる。
【００６９】
図８は、他の図面との関連で開示されあるいは説明されたコンポーネントとの関連で採用することができる方法８００の一般処理フローの流れ図である。方法８００は、照会をアプリケーションプログラム内に組み込むために用いることができる。より具体的には、方法８００は、照会をアプリケーションプログラム内に、そのアプリケーションプログラムがそれで書かれているプログラミング言語を用いて、その照会がコンパイル時においてコンパイラでタイプチェック、構文チェック、および結び付けられるような方法で、組み込むために用いることができる。
【００７０】
方法８００の処理は、開始（ＳＴＡＲＴ）ブロック８１０から開始し、処理ブロック８２０へと進む。処理ブロック８２０において、ある高水準プログラミング言語で書かれているアプリケーション言語に対するソースコードが得られる。このソースコードは、この高水準プログラミング言語で構成された少なくとも１つの照会を含むことがある。処理は、処理ブロック８３０へと進み、この高水準プログラミング言語に対するコンパイラは、任意の照会を含むソースコードに関して構文チェックを遂行する。
【００７１】
方法８００の処理は、処理ブロック８４０へと進み、ここでコンパイラは、このソースコード内の全てのタイプに対してタイプチェックを遂行する。処理ブロック８５０において、コンパイラは、ソースコードの言語に関してセマンティックチェックを遂行することで、任意のセマンティック規則との適合性を保障する。処理は、処理ブロック８６０へと進み、ここでコンパイラは、ソースコード内のタイプをバインディングする。処理ブロック８７０において、コンパイラで照会を表現する表現ツリーが構築される。処理ブロック８８０において、この表現ツリーを含む完全なアプリケーションプログラムが構築される。処理は、終了（ＥＮＤ）ブロック８９０において完結する。
【００７２】
図９は、他の図面を参照して開示されあるいは説明されてきたコンポーネントとの関連で採用することができる方法９００の一般処理フローの流れ図である。方法９００は、アプリケーションプログラムの照会を翻訳するために用いることができる。より詳細には、方法９００は、あるアプリケーションプログラム内に、そのアプリケーションプログラムがそれで書かれているプログラミング言語のオブジェクトとして含まれている照会を、ランタイム時に等価のＳＱＬ照会に翻訳するために用いることができる。
【００７３】
方法９００の処理は、開始（ＳＴＡＲＴ）ブロック９０５において開始され、処理ブロック９１０に進む。処理ブロック９１０において、例えば表現ツリーのような照会データ構造がアプリケーションプログラムから得られる。処理ブロック９１５において、この照会を符号化するデータ構造のノードが得られる。処理は、処理ブロック９２０へと進み、ここでこのデータ構造のノードが理想化ターゲット言語コンポーネントにマッピングされる。
【００７４】
判定ブロック９２５において、そのデータ構造が、マッピングされるべきそれ以上のノードを有するか否かの判定が行われる。肯定の場合には、処理は処理ブロック９１５に戻り、ここでもう１つのノードが得られる。否定の場合には、処理は処理ブロック９３０へと進み、ここで照会セットが生成される。処理ブロック９３５において、メンバー参照が解決される。処理は判定ブロック９４０へと進み、ここでマルチセットが採用されているか否かが判定される。
【００７５】
もし判定ブロック９４０において行われた判定が肯定であるときは、処理は処理ブロック９４５に進み、ここで別個の照会が生成される。処理は、判定ブロック９４０における否定的な判定から、あるいは処理ブロック９４５から、処理ブロック９５０に進み、ここでその照会内に含まれている任意のＯｒｄｅｒＢｙ（順序による）クローズがターゲット照会言語の制約に準拠するようにリライトされる。処理ブロック９５５において、オブジェクト表現がフラットな列参照に翻訳される。処理は処理ブロック９６０へと進み、ここで全てのスコープに対する参照が解決される。
【００７６】
処理ブロック９６５において、名前および別名が名前の衝突を排除するために割り当てられる。処理は処理ブロック９７０へと進み、ここで照会パラメータが識別および生成される。処理ブロック９７５において照会テキストストリングが生成される。方法９００の処理は終了ブロック９８０で終了する。
【００７７】
図１０は、他の図面を参照しながら開示されあるいは説明されたコンポーネントとの関連で採用することができる方法１０００の一般処理フローの流れ図である。方法１０００は、アプリケーションプログラムからの照会を翻訳するために用いることができる。より具体的には、方法１０００は、あるアプリケーションプログラムに、そのアプリケーションプログラムが書かれているプログラミング言語を用いてコンパイルされている照会を、選択することが可能なあるターゲット言語による等価の照会に翻訳するために用いることができる。
【００７８】
方法１０００の処理は、開始ブロック１０１０で開始され、処理ブロック１０２０へと継続する。処理ブロック１０２０において、照会データ構造、例えば、表現ツリー、グラフ、あるいは任意の他の適当な構造がアプリケーションプログラムから得られる。処理ブロック１０３０において、理想化されたターゲット照会が生成される。判定ブロック１０４０において、２つあるいはそれ以上の利用可能な言語のバージョンのどれがこの翻訳された照会に対するターゲットとされるべきかに関する決定がなされる。
【００７９】
判定ブロック１０４０における決定の結果として、言語Ｔ１がターゲットとして選択されたときは、処理は処理ブロック１０５０へと進む。処理ブロック１０５０において、ターゲット言語の理想化された表現から現実の言語バージョンの表現への変換が遂行される。処理は処理ブロック１０６０へと進み、ここでこの変換された照会がテキストストリングとして設定され、これはデータベースに、このテキストストリング内に含まれる照会ステートメントに基づいて照会を遂行するために送られる。
【００８０】
もし判定ブロック１０４０における決定の結果として、言語Ｔ２がターゲットとして選択されたときは、処理は処理ブロック１０７０へと継続する。処理ブロック１０７０において、ターゲット言語の理想化された表現から現実の言語バージョンの表現への変換が遂行される。処理は処理ブロック１０８０へと進み、ここで変換された照会がテキストストリングに変換され、これはデータベースに、このテキストストリング内に含まれる照会ステートメントに基づいて遂行するために照会を送られる。処理ブロック１０６０からあるいは処理ブロック１０８０からの処理は、終了ブロック１０９０において終了する。
【００８１】
主題の発明のさまざまな態様を実施するための追加のコンテキストを提供するために、図１１−１２および以下の説明は、その中において主題の発明のさまざまな形態を実施することができる適当なコンピューティング環境の簡単な一般的な説明を提供することを意図する。上では本発明が、ローカルコンピュータおよび／または遠隔コンピュータ上で実行するコンピュータプログラムのコンピュータで実行可能な命令の一般的な背景内で説明されてきたが、当業者に理解できるように、本発明は他のプログラムモジュールとの組合せで実施することもできる。一般に、プログラムモジュールには、特定のタスクを遂行するおよび／または特定の抽象データタイプを実施するルーティン、プログラム、コンポーネント、データ構造その他が含まれる。
【００８２】
さらに、当業者に理解できるように、本発明の方法は、他のコンピュータシステム構成によっても実施することができ、これらには単一プロセッサもしくはマルチプロセッサコンピュータシステム、マイクロコンピュータ、メインフレームコンピュータ、並びにパーソナルコンピュータ、携帯コンピューティングデバイス、マイクロプロセッサベースのおよび／またはプログラム可能な民生用エレクトロニクスその他が含まれ、これらの各々は１つあるいは複数の関連するデバイスと動作可能に通信することができる。本発明の例示された態様は、さらに、分散コンピューティング環境内において実施することもでき、ここでは幾つかのタスクは通信ネットワークを通じてリンクされた遠隔処理デバイスにより遂行される。さらに、本発明の、もし、全てでないとするなら、幾つかの態様は、スタンドアロンコンピュータ上でも遂行することができる。分散コンピューティング環境においても、プログラムモジュールは、ローカルに配置することも、および／または遠隔記憶デバイス内に配置することもできる。
【００８３】
図１１は、主題の発明が相互作用することができる例示的なコンピューティング環境１１００の略ブロック図である。システム１１００は、１つあるいは複数のクライアント１１１０を含む。クライアント１１１０は、ハードウェアであっても、および／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）であっても良い。システム１１００は、さらに、１つあるいは複数のサーバ１１２０を含む。サーバ１１２０は、例えば、主題の発明を採用して変換を遂行するためのスレッドあるいはプロセスを収容することができる。
【００８４】
クライアント１１１０とサーバ１１２０との間の通信の１つの可能な手段は、２つあるいは複数のコンピュータプロセス間で伝送されるように適合化されたデータパケットの形態であり得る。システム１１００は、通信フレームワーク１１４０を含み、これをクライアント１１１０とサーバ１１２０との間の通信のために採用することができる。クライアント１１１０は、１つあるいは複数のクライアントデータストレージ１１５０に動作可能に接続され、これはクライアント１１１０に対してローカルな情報を格納するために採用される。同様に、サーバ１１２０は、１つあるいは複数のサーバデータストレージ１１３０に動作可能に接続され、これはサーバ１１４０に対してローカルな情報を格納するために採用される。
【００８５】
図１２を参照して、本発明の様々な態様を実施するための例示的な環境１２００は、コンピュータ１２１２を含む。コンピュータ１２１２は、処理ユニット１２１４、システムメモリ１２１６、およびシステムバス１２１８を含む。システムバス１２１８は、これに限定されるものではないが、システムメモリ１２１６を含むシステムコンポーネントを処理ユニット１２１４に結合する。処理ユニット１２１４は、様々な利用可能なプロセッサのいずれでもあり得る。処理ユニット１２１４としてデェアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを採用することもできる。
【００８６】
システムバス１２１８は、幾つかのタイプのバス構造のいずれであっても良く、これらには、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バスおよび／または多様な利用可能なバスアーキテクチャを有するローカルバスが含まれ、これらには、これに限られるものではないが、Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  （ＩＳＡ）、Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＳＡ）、Ｅｘｔｅｎｄｅｄ  ＩＳＡ（ＥＩＳＡ）、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ（ＶＬＢ）、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、カードバス（Ｃａｒｄ  Ｂｕｓ）、ユニバーサルシリアルバス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ、ＵＳＢ）、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ  （ＰＣＭＣＩＡ）によるバス、Ｆｉｒｅｗｉｒｅ（ＩＥＥＥ  １３９４）、およびＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）などが含まれる。
【００８７】
システムメモリ１２１６は、揮発性メモリ１２２０および不揮発性メモリ１２２２を含む。不揮発性メモリ１２２２内には、基本入／出力システム（ＢＩＯＳ）が格納され、これは、例えば始動時において、コンピュータ１２１２内の要素間で情報を伝送するための基本ルーチィーンを含む。不揮発性メモリ１２２２は、例示として、これに限定されるものではないが、読み出し専用メモリ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ，  ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的にプログラム可能なＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なＲＯＭ（ＥＥＰＲＯＭ）あるいはフラッシュメモリを含む。揮発性メモリ１２２０は、ランダムアクセスメモリ（ＲＡＭ）を含み、これは外部キャッシュメモリとして働く。ＲＡＭは、例示として、これに制限されるものではないが、多くの形態、例えば、同期ＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンスドＳＤＲＡＭ（ＥＳＤＲＡＭ）、Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ（ＳＬＤＲＡＭ）、およびダイレクトＲａｍｂｕｓ  ＲＡＭ（ＤＲＲＡＭ）で入手することができる。
【００８８】
コンピュータ１２１２は、さらに取り外し可能な／取り外し不能な、揮発性／不揮発性コンピュータ記憶媒体を含む。例えば、図１２は、ディスクストレージ１２２４を示す。ディスクストレージ１２２４としては、これに限定されるものではないが、磁気ディスクドライブ、フロッピー(登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカードあるいはメモリスティックなどのデバイスを利用することができる。これに加えて、ディスクストレージ１２２４としては、記憶媒体を別個にあるいは他の記憶媒体と組み合わせて利用することもでき、これに対しては、これに限定されるものではないが、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤレコーダブルドライブ（ＣＤ−Ｒドライブ）、ＣＤリライタブルドライブ（ＣＤ−ＲＷドライブ）、あるいはデジタルバーサタイルディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などを用いることができる。ディスクストレージ１２２４をシステムバス１２１８に接続するためには、典型的には、例えばインタフェース１２２６のような取り外し可能なあるいは取り外し不能なインタフェースが用いられる。
【００８９】
図１２から分かるように、この適当なオペレーティング環境１２００内には、ユーザとこれら基本的なコンピュータ資源との間の媒介として働くソフトウェアが存在する。このようなソフトウェアには、オペレーティングシステム１２２８が含まれる。オペレーティングシステム１２２８は、ディスクストレージ１２２４上に格納することができるが、コンピュータシステム１２１２の資源を、制御および割り当てる働きをする。システムアプリケーション１２３０は、オペレーティングシステム１２２８によるシステムメモリ１２１６内あるいはディスクストレージ１２２４上に格納されているプログラムモジュール１２３２およびプログラムデータ１２３４を通じての資源の管理を有効に活用する。この主題の発明は、理解できるように、様々なオペレーティングシステムとの、あるいはオペレーティングシステムの組み合わせとの関連で実施される。
【００９０】
ユーザは、コマンドあるいは情報をコンピュータ１２１２内に入力デバイス１２３６を通じて入力する。入力デバイス１２３６としては、これに限定されるものではないが、例えばマウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ等のようなポインティングデバイスを用いることができる。これらおよび他の入力デバイスは、処理ユニット１２１４に、インタフェースポート１２３８を介してシステムバス１２１８を通じて接続する。インタフェースポート１２３８としては、例えば、シリアルポート、パラレルポート、ゲームポートおよびユニバーサルシリアルバス（ＵＳＢ）を用いることができる。出力デバイス１２４０は、入力デバイス１２３６と同一タイプの幾つかポートを使用する。こうして、例えば、ＵＳＢポートを用いて、コンピュータ１２１２に入力を提供し、コンピュータ１２１２からの情報を出力デバイス１２４０に出力することもできる。出力アダプタ１２４２が提供されているが、これは例えばモニタ、スピーカ、プリンタ、その他の出力デバイス１２４０等のような特別なアダプタを必要とする幾つかの出力デバイス１２４０が存在することを示す。出力アダプタ１２４２としては、例示として、これに限定されるものではないが、ビデオおよび音響カードが含まれ、これらによって出力デバイス１２４０とシステムバス１２１８との間の接続の手段が提供される。例えば遠隔コンピュータ１２４４のような他のデバイスおよび／またはデバイスのシステムは、入力および出力の両方の能力を提供することに注意する。
【００９１】
コンピュータ１２１２は、ネットワークされた環境内において、例えばリモートコンピュータ１２４４のような１つあるいは複数の遠隔コンピュータへの論理的接続を用いて動作することもできる。リモートコンピュータ１２４４は、パーソナルコンピュータ、サーバ、ルーター、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの電気機器、ピアデバイスあるいは他の一般的なネットワークノードその他であり得、典型的にはコンピュータ１２１２との関連で説明された多くのあるいは全ての要素を含む。簡潔さの目的で、遠隔コンピュータ１２４４との関連では、メモリストレージ１２４６のみが示されている。遠隔コンピュータ１２４４は、ネットワークインタフェース１２４８に論理的に接続され、その後、通信接続１２５０を介してコンピュータ１２１２に物理的に接続される。ネットワークインタフェース１２４８としては、例えばローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）のような有線および／または無線通信ネットワークが含まれる。ＬＡＮ技術には、Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＦＤＤＩ）、Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＣＤＤＩ）、Ｅｔｈｅｒｎｅｔ(登録商標）、Ｔｏｋｅｎ  Ｒｉｎｇその他が含まれる。ＷＡＮ技術には、これに限定されるものではないが、ポイント・ツウ・ポイントリンク、例えばＩｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ（ＩＳＤＮ）およびこのバリエーションのような回路交換網、パケット交換網、およびＤｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅｓ（ＤＳＬ）が含まれる。
【００９２】
通信接続１２５０は、ネットワークインタフェース１２４８をバス１２１８に接続するために採用されるハードウェア／ソフトウェアを意味する。通信接続１２５０は、図解を明快にするためにコンピュータ１２１２の内側に示されているが、これはコンピュータ１２１２の外側に置いて良い。ネットワークインタフェース１２４８への接続に必要なハードウェア／ソフトウェアとしては、もっぱら例示として、例えば、通常の電話等級のモデム、ケーブルモデムおよびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、およびイーサネット(登録商標）カードなどのような内部および外部技術が含まれる。
【００９３】
上では幾つかのコンポーネントおよび方法の実施例について説明された。勿論、コンポーネントあるいは方法の考え得る全ての組合せを説明することはできなかったが、当業者においては理解できるように、更なる多くの組合せおよび入れ替えが可能であることを理解できよう。したがって、全てのこれらの変更、修正、およびバリエーションが添付のクレームの精神および範囲内に入ることを意図される。
【００９４】
具体的には、そして、上述のコンポーネント、デバイス、回路、システムその他で遂行される様々な機能に関して、このようなコンポーネントを説明されるために用いられる（「手段（ｍｅａｎｓ）」への言及も含む）用語は、特に改めて示されない限り、上述のコンポーネントの特定された機能を遂行するあらゆる例えば機能上の同等物のようなコンポーネントに、たとえ説明された実施例におけるような機能を遂行する開示された構造とは構造的には同等ではなくても該当することを意図される。これとの関連で、開示されおよび説明されたコンポーネントおよび方法は、さまざまな開示されおよび説明された方法のアクションおよび／またはイベントを遂行するためのコンピュータで実行可能な命令を有するシステム並びにコンピュータで読み出し可能な媒体が含まれるものと理解される。
【００９５】
さらに、１つの特定の特徴が、複数の実施の単に１つとの関連で開示されたが、このような特徴は、任意の与えられたあるいは特定のアプリケーションに対して、望ましく、有利な場合には、他の実施の１つあるいは複数の他の特徴として組み合わせることもできる。さらに、「ｉｎｃｌｕｄｅ（含む）」および「ｉｎｃｌｕｄｉｎｇ」なる用語並びにこれらの変形が詳細な説明あるいはクレーム内で使用されている限りにおいては、これら用語は「ｃｏｍｐｒｉｓｉｎｇ（含む）」なる用語と同様に包括的な意味で用いられていることに注意する。
【図面の簡単な説明】
【００９６】
【図１】照会翻訳システムのシステムブロック図である。
【図２】例示的なデータリレーションの略図である。
【図３】照会翻訳システムのシステムブロック図である。
【図４】セマンティックツリー構造のブロック図である。
【図５】マルチステージパイプライン翻訳システムのシステムブロック図である。
【図６】構成可能なパイプラインの略図である。
【図７】照会翻訳システムのシステムブロック図である。
【図８】ここで開示されあるいは説明されたコンポーネントとの関連で用いることができる一般処理フローの流れ図である。
【図９】ここで開示されあるいは説明されたコンポーネントとの関連で用いることができる一般処理フローの流れ図である。
【図１０】ここで開示されあるいは説明されたコンポーネントとの関連で用いることができる一般処理フローの流れ図である。
【図１１】例示的なネットワーキング環境のシステムブロック図である。
【図１２】例示的な動作環境の略図である。
【図１】
2009503678.tif 000003
【図２】
2009503678.tif 000004
【図３】
2009503678.tif 000005
【図４】
2009503678.tif 000006
【図５】
2009503678.tif 000007
【図６】
2009503678.tif 000008
【図７】
2009503678.tif 000009
【図８】
2009503678.tif 000010
【図９】
2009503678.tif 000011
【図１０】
2009503678.tif 000012
【図１１】
2009503678.tif 000013
【図１２】
2009503678.tif 000014
【国際調査報告】
2009503678.tif 000015