(57)【要約】【課題】非リレーショナルクエリ言語のリレーショナルデータストアとの統合を提供する。【解決手段】非リレーショナルクエリ言語を用いて、リレーショナルデータベース管理システムと一緒に用いられるストアドプロシージャにアクセスするシステム／方法が提供される。ＳＱＬのストアドプロシージャは、リレーショナルデータベースに対して実行され得るクエリの事前決定を可能にする。本発明は、非リレーショナルクエリ言語とリレーショナルデータストアの間のギャップを埋める。言い換えると、本発明は、非リレーショナルクエリ言語のリレーショナルデータストアとの統合を可能にする。本発明は、現在のデータモデルにおける関係データのビューを定義し、データをリレーショナル形式から非リレーショナル形式に変換し、ストアドプロシージャが、非リレーショナルクエリ言語から参照され得る機構を提供することができる。【選択図】図１
2006209756.tif 000002
【特許請求の範囲】
【請求項１】
非リレーショナルクエリコンポーネントによるリレーショナルデータストアのデータアクセスを容易にするシステムであって、
前記非リレーショナルクエリコンポーネントからの関数を、前記リレーショナルデータストア内のデータへのアクセスを容易にするストアドプロシージャへの呼び出しに変換する統合コンポーネントと、
前記データを、前記非リレーショナルクエリコンポーネントと整合性のある非リレーショナル形式に変換する変換コンポーネントと
を備えることを特徴とするシステム。
【請求項２】
前記データは動的に型付けされるデータであることを特徴とする請求項１に記載のシステム。
【請求項３】
前記データは静的に型付けされるデータであることを特徴とする請求項１に記載のシステム。
【請求項４】
前記ストアドプロシージャを定義するパラメータをさらに備えることを特徴とする請求項３に記載のシステム。
【請求項５】
型に関連して前記パラメータおよび前記データの１つを検証するコンポーネントをさらに備えることを特徴とする請求項４に記載のシステム。
【請求項６】
前記ストアドプロシージャは強く型付けされたメソッドであることを特徴とする請求項３に記載のシステム。
【請求項７】
請求項１に記載のシステムの構成要素を格納していることを特徴とするコンピュータ可読媒体。
【請求項８】
所定の規則に従って前記ストアドプロシージャの実行を容易にする論理を提供する規則ベースのエンジンコンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項９】
予測されるアクションに基づいて前記ストアドプロシージャの実行を容易にする推測を提供する人工知能（ＡＩ）コンポーネントをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
非リレーショナルクエリ言語によりリレーショナルデータストアのデータにアクセスする方法であって、
前記非リレーショナルクエリ言語内で、前記リレーショナルデータストアに関連付けられたストアドプロシージャの識別を容易にする関数を定義すること、
前記関数を、前記ストアドプロシージャの呼び出しに変換すること、および
前記リレーショナルデータストア内の前記データにアクセスするために前記ストアドプロシージャを実行すること
を備えることを特徴とする方法。
【請求項１１】
前記データを、前記非リレーショナルクエリ言語コンポーネントと整合性のある形式に変換することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記ストアドプロシージャを識別するパラメータを前記関数に渡すことをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記ストアドプロシージャの基準を識別するパラメータを前記関数に渡すことをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記データを静的に型付けすることをさらに備えることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記データの型に関連して前記パラメータを検証することをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
クエリに関連して前記データを検証することをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記データを動的に型付けすることをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１８】
前記非リレーショナルクエリ言語コンポーネントと前記リレーショナルデータストアの間でやりとりされるデータパケットであって、請求項１０に記載の方法を容易にすることを特徴とするデータパケット。
【請求項１９】
ＸＭＬ（拡張可能なマークアップ言語）クエリ環境からのＳＱＬ（構造化照会言語）環境におけるストアドプロシージャのアクセスを容易にするシステムであって、
ＸＭＬクエリ言語を用いて、前記ＳＱＬ環境内のデータへのアクセスを容易にする、前記ＳＱＬ環境に関連付けられたストアドプロシージャを参照する手段と、
前記アクセスされたデータを、前記ＸＭＬクエリ言語と整合性のある形式に変換する手段と
を備えることを特徴とするシステム。
【請求項２０】
型に関連して、前記ストアドプロシージャに伝達されるパラメータおよび前記データの１つを検証する手段をさらに備えることを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理およびデータ管理に関し、より詳細には、非リレーショナルクエリ言語のリレーショナルデータ処理環境との統合に関する。
【背景技術】
【０００２】
リレーショナルデータベースは、データを維持するのに広く使用されている。現在、世界のデータストアの圧倒的多数は、リレーショナルデータモデルに基づくものである。したがって、アクセスは、たいていの場合、ＳＱＬ（構造化照会言語）標準の変種が圧倒的多数を占めている。例えば、多くの企業は、組織、製品および顧客のデータをＳＱＬ互換のデータベースに維持している。ＳＱＬは、リレーショナルデータベース中のデータに問い合わせ、それを処理するのに使用される言語である。元々はメインフレームと一緒に使用するのに開発されたため、クライアント／サーバ環境用に設計された大部分のデータベース管理システム（ＤＢＭＳ）はＳＱＬをサポートしている。
【０００３】
定義された基準に基づいて情報を識別するために、リレーショナルＤＢＭＳと一緒に、随時の、または標準化されていないクエリを使用することができる。言い換えると、必要が生じたときに質問に答えるために随時のクエリが作成され得る。例えば、特定の郵便番号の地理的区域内に在住のすべての人を識別するために随時のクエリが作成され得る。
【０００４】
しかしながら、いくつかの理由で、多くのデータベース管理者は、ユーザに随時問い合わせ機能を付与することを見合わせている。１つの理由は、多くの複雑なパラメータを持つ随時クエリが書かれ、実行されて、データベースをホスティングするサーバのパフォーマンスが損なわれ得ることである。別の理由は、セキュリティ上のものである。しばしば、データベースは、個人データや機密データ（例えば、社会保障やクレジットカード口座の番号など）を含む。ユーザに随時許可を与えると、時として、この情報のセキュリティおよび機密性を脅かすことがある。
【０００５】
上記の理由で、データベース管理者は、しばしば、事実上、わずかな部分（パラメータなど）だけしか変更できない組み込みのクエリである「ストアドプロシージャ」を用いる。例えば、ストアドプロシージャは、特定の郵便番号区域に事業所を持つ顧客を識別するために定義され得る。この例示的ストアドプロシージャによれば、ユーザは、郵便番号の値を入力しさえすればその結果が得られるはずである。言い換えると、ユーザは、ストアドプロシージャを呼び出し、識別されるパラメータとして所望の郵便番号を渡す。
【０００６】
ストアドプロシージャはＳＱＬ標準の基礎をなす機能であり、データベース管理者がデータベースに対して実行されるクエリを事前に決定することを可能にする、典型的なプログラミング言語における機能と類似している。このクエリ事前決定は、データベース挙動におけるより高いレベルのセキュリティおよび性能予測可能性（ｐｅｒｆｏｒｍａｎｃｅ  ｐｒｅｄｉｃｔａｂｉｌｉｔｙ）を提供することができる。リレーショナルデータベースの多くのユーザは、もっぱらストアドプロシージャに頼って、任意の（例えば随時の）クエリがデータベースによって消費され得ないようにしている。
【０００７】
最近では、業務アプリケーションのためにデータを表し、相手方にデータを送る方法を記述する、ＸＭＬ（拡張可能なマークアップ言語）と呼ばれる新しい技術が台頭している。ＸＭＬは、設計者が、アプリケーション間および組織間におけるデータの定義、伝送、検証、および解釈を可能にし得る独自のカスタマイズタグを作成することを可能にする。
【０００８】
したがって、特に、ＸＭＬデータに問い合わせるためにＸＭＬクエリ言語が作成されている。定義上、これらの言語は、リレーショナルデータモデルデータベースに問い合わせることができなかった。この問い合わせができないことは、これらのデータアクセス方法および／または言語が大部分の既存のデータストアと互換性がないという点で不一致を生み出す。例えば、大量のデータがリレーショナルデータベースに維持されているが、企業はそのデータにＸＭＬによってアクセスすることを望んでいる。そうすることによって、企業は、アプリケーションを開発し、ＸＭＬを利用してそれらの取引先とやりとりすることができる。言い換えると、互換性の不一致が存在するのは、ＸＭＬデータ形式、リレーショナルデータ形式、ＸＭＬクエリ言語およびリレーショナルクエリ言語があるからである。
【０００９】
【特許文献１】米国特許第６７０８１６４号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
最近の開発は、クエリの（ＳＱＬなどの）ローセット（ｒｏｗｓｅｔ）結果を（ＸＭＬなどの）階層的データストリームに変換するコンピュータ化されたシステムおよび方法を対象としている。しかしながら、（ＸＭＬなどの）非リレーショナルクエリ言語を用い、ストアドプロシージャを介してデータにアクセスし、それによって（ＳＱＬなどの）リレーショナルデータベースから結果を獲得することを対象とする未解決の問題が存在する。したがって、ＸＭＬクエリ言語を用いてリレーショナルデータストアから情報を獲得することができるシステムの大きな必要性が満たされていない。より具体的には、必要とされているのは、非リレーショナルクエリ言語を用いて、リレーショナルデータストア中のデータにアクセスするためにリレーショナルデータストア内のストアドプロシージャを呼び出すことを可能にするシステムおよび／または方法である。
【課題を解決するための手段】
【００１１】
以下に、本発明のいくつかの態様の基本理解を提供するために、本発明の簡単な要約を提示する。この要約は、本発明の包括的な概要ではない。この要約は、本発明の主要な／クリティカルな要素を特定することや、本発明の範囲を線引きすることを意図するものではない。その唯一の目的は、後段で提示する、より詳細な説明への前置きとして、本発明のいくつかの概念を簡単な形で提示することである。
【００１２】
本明細書で開示し、特許請求する本発明は、その一態様においては、（ＸＭＬなどの）非リレーショナルクエリ言語を用いて、（ＳＱＬなどの）リレーショナルＤＢＭＳと一緒に用いられるストアドプロシージャにアクセスするシステムおよび／または方法を含む。ＳＱＬのストアドプロシージャは、リレーショナルデータベースに対して実行され得るクエリの事前決定を可能にする。前述のように、非リレーショナルデータモデルクエリ言語における多大な最近の研究が行われている。定義上、これらの言語は、リレーショナルデータモデルデータベースに問い合わせることができない。これができないことは、これらのデータアクセス方法がリレーショナルデータストアと互換性がないという点で不一致を生み出す。本発明は、このギャップを埋め、非リレーショナルクエリ言語のリレーショナルデータストアとの統合を可能にするものである。
【００１３】
本発明の態様は、非リレーショナルクエリ言語からの非リレーショナルクエリ言語でのストアドプロシージャサポートを提供する。このサポートは、（１）現在のデータモデルにおける関係データのビューを定義し、（２）ストアドプロシージャが、例えば関数などを使って、非リレーショナルクエリ言語から参照され得る機構を提供することによって行われ得る。
【００１４】
一態様では、非リレーショナルクエリコンポーネントによるリレーショナルデータストアのデータアクセスを容易にするシステムが提供される。この態様によれば、統合コンポーネントは、非リレーショナルクエリコンポーネント内で定義された関数を、ストアドプロシージャへの呼び出しに変換することができる。ストアドプロシージャは、リレーショナルデータストア内のデータへのアクセスを容易にし得ることが理解されよう。さらに、（ＳＱＬなどの）リレーショナルデータストアから検索されたデータを、（ＸＭＬなどの）非リレーショナルクエリコンポーネントと整合性のある非リレーショナル形式に変換する変換コンポーネントも用いられ得る。
【００１５】
一態様では、データは、動的に型付けされるデータである。別の態様は、データが静的に型付けされるデータとするためのシステムを対象とする。ストアドプロシージャを識別すると共に、ストアドプロシージャによって用いられる基準を定義するためにパラメータまたはパラメータセットが渡され得る。静的に型付けされる態様では、型に関連してパラメータおよびデータを検証することのできるコンポーネントが用いられ得る。
【００１６】
別の態様は、本発明に関連して統合を容易にする論理および推測機構（ｒｅａｓｏｎｉｎｇ  ｍｅｃｈａｎｉｓｍｓ）を用いる。例えば、インターフェースコンポーネントの意思決定機能を容易にする、規則ベースの、かつ／または人工知能の機構が用いられ得る。
【００１７】
前述の目的および関連する目的を達成するために、本明細書では、以下の説明および添付の図面と関連させて、本発明のいくつかの例示的態様について説明する。しかしながら、これらの態様は、本発明の原理が用いられ得る様々なやり方のほんの数例を示すにすぎず、本発明は、そのようなすべての態様およびそれらの均等物を含むものとする。本発明のその他の利点および新規の特徴は、以下の本発明の詳細な説明を図面と併せて考察すれば明らかになるであろう。
【発明を実施するための最良の形態】
【００１８】
次に、本発明を、図面を参照して説明する。図面全体を通して、類似の参照番号は、類似の要素を指すのに使用される。以下では、説明に際して、本発明の十分な理解を提供するために、多くの具体的詳細を示す。しかしながら、本発明がこれらの具体的詳細なしでも実施され得ることは明白でありうる。別の例では、本発明の説明を容易にするために、公知の構造および装置をブロック図の形で示す。
【００１９】
本出願で使用する場合、「コンポーネント」および「システム」という用語は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すためのものである。例えば、コンポーネントは、それだけに限らないが、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能プログラム、実行スレッド、プログラム、および／またはコンピュータとすることができる。例をあげると、サーバ上で実行中のアプリケーションとサーバの両方をコンポーネントとすることができる。１つまたは複数のコンポーネントが１つのプロセスおよび／または実行スレッド内に存在することができ、１つのコンポーネントは、１つのコンピュータ上に局在化させることも、２つ以上のコンピュータ間に分散させることもできる。
【００２０】
本明細書で使用する場合、「推論する（ｉｎｆｅｒ）」または「推論（ｉｎｆｅｒｅｎｃｅ）」という用語は、一般に、イベントおよび／またはデータを介して取り込まれる１組の観測から、システム、環境、および／またはユーザの状態を推測し、または推論するプロセスを指す。推論は、例えば、特定のコンテキストまたはアクションを識別するのに用いられ、あるいは状態の確率分布を生成し得る。推論は確率的、すなわち、データおよびイベントの考察に基づく関心あるものの状態の確率分布の計算とすることができる。また、推論は、１組のイベントおよび／またはデータからより高いレベルのイベントを構成するのに用いられる技法も指し得る。そのような推論は、１組の観測されたイベントおよび／または格納されたイベントデータから、それらのイベントが時間的に極めて近接して相関するか否か、それらのイベントおよびデータが１つまたは複数のイベントおよびデータソースからもたらされるかどうかに関わらず、結果として新しいイベントまたはアクションを構築する。
【００２１】
最初に図１を参照すると、一態様による、非リレーショナルクエリ言語のリレーショナルデータストア環境との統合を容易にするシステム１００が示されている。一般に、システム１００は、非リレーショナルクエリ言語コンポーネント１０２、リレーショナルデータストアコンポーネント１０４およびインターフェースコンポーネント１０６を含む。より具体的には、図１のシステムは、インターフェースコンポーネント１０６を用いてリレーショナルデータストアコンポーネント１０４に関連付けられたストアドプロシージャへの呼び出しを行い、その結果を、あたかもそれらが（ＸＭＬなどの）非リレーショナルクエリ言語コンポーネントに合わせてフォーマットされたかのように検索することができる。したがって、（ＳＱＬなどの）リレーショナルクエリ言語を利用してこの情報を獲得するのでなく、リレーショナルデータストアコンポーネント１０４内のデータにアクセスするのに、非リレーショナルクエリ言語コンポーネント１０２が直接用いられ得る。
【００２２】
本発明によれば、非リレーショナルクエリ言語コンポーネント１０２は、それだけに限らないが、ＸＭＬクエリ言語を含む、当分野で知られている任意の非リレーショナルクエリ言語を表し得る。本明細書では、ＸＭＬクエリ言語の使用を対象とする態様について説明するが、本発明の新規の態様は、本発明および添付の特許請求の範囲の精神および範囲を逸脱することなく、任意の非リレーショナルクエリ言語コンポーネント１０２と一緒に用いられ得ることを理解すべきである。
【００２３】
動作に際しては、関数１０８が非リレーショナルクエリ言語コンポーネント１０２によって定義され、インターフェースコンポーネント１０６に（送信されるなどして）伝達され得る。例えば、クエリで定義される関数１０８は、リレーショナルデータストアコンポーネント１０４にデータを要求するためのストアドプロシージャ参照することができる。インターフェースコンポーネント１０６は、この関数１０８を受け取り、それを分析して、リレーショナルデータストアコンポーネント１０４内の適当なストアドプロシージャに転送される呼び出し１１０を生成することができる。
【００２４】
ストアドプロシージャがリレーショナルデータストアコンポーネント１０４に関連して実行されると、データ１１２がインターフェースコンポーネント１０６に返され得る。データ１１２はリレーショナルデータストアコンポーネント１０４によって生成されるため、このデータ（１１２など）は表形式とし得ることを理解すべきである。インターフェースコンポーネント１０６は、ビュー定義プロセスに従って表形式データ１１２の非リレーショナルデータ形式（データ１１４など）への変換を容易にすることができる。以下で、インターフェースコンポーネント１０６の機能についてより詳細に説明する。インターフェースコンポーネント１０６が、非リレーショナルクエリ言語コンポーネント１０２に応答してストアドプロシージャにアクセスし、ストアドプロシージャを介して受け取られたデータをフォーマットするための概念は、２つの異なる機能、すなわち、ビュー定義機能およびストアドプロシージャ参照機能との関連で説明され得る。以下で、これらの異なる機能のそれぞれについて詳細に論じる。
【００２５】
まず、ビュー定義機能に関して、インターフェースコンポーネント１０６は、現在のデータモデル内に含まれるリレーショナルデータのビューを定義することができる。通常は、このアクセスおよびフォーマット変換が行われ得る２つの方法がある。第１の方法は、標準（ｃａｎｏｎｉｃａｌ）ビューによるものである。言い換えると、目的のデータモデル（ＸＭＬなど）に適合するリレーショナルデータの所定の再整形があり得る。第２の方法は、現在のデータモデルに対するリレーショナルデータのカスタムビューを定義することが伴う。この第２の手法は特により高い柔軟性を持ち得る。というのは、この手法が、整形プロセスにおいてカスタム論理を適用させることができ、ゆえに、カスタマイズされた整形を可能にするからである。本明細書で使用する場合、「整形（ｓｈａｐｉｎｇ）」と「マッピング（ｍａｐｐｉｎｇ）」は同義語であることを理解すべきである。目的のデータモデル（ＸＭＬなど）への変換の機構を提供するためにリレーショナルデータのビューを定義するこの第１の機能については、特許文献１に詳細に説明されている。以下は、非リレーショナルクエリ言語によるリレーショナルデータの要求および獲得を容易にする第２の機能（ストアドプロシージャ参照など）の詳細な考察である。
【００２６】
第２の機能は、ストアドプロシージャが、非リレーショナルクエリ言語からを参照され、かつ／またはアクセスされる機構を用いることができる。ＤＢＭＳにおいて、ストアドプロシージャは、データベースに格納されているプログラム（ＳＱＬプログラムなど）を参照することができる。当然ながら、この格納されたプログラムは、クライアントから、またはデータベーストリガからの直接の呼び出しによって実行され得る。ＳＱＬプロシージャはデータベースに格納されるので、各クライアントで複製される必要はないことが理解されるであろう。したがって、ストアドプロシージャは、特に、異なるクライアントユーザインターフェースおよび開発システムが使用されるときに、プログラミング労力を低減することができる。トリガおよびストアドプロシージャは、クライアント／サーバ環境で使用されるＤＢＭＳに組み込むことができる。
【００２７】
前述のように、一態様では、ストアドプロシージャ参照は、関数と呼ばれるプログラミング構成を介して行われ得る。関数は、通常、いくつかのコンポーネントによって再利用することができるカプセル化された、論理の一部である。クエリ言語（非リレーショナルクエリ言語コンポーネント１０２など）は、呼び出されると、リレーショナルデータストアコンポーネント１０４内のストアドプロシージャにアクセスすることのできる、特定の拡張関数１０８を使用可能にすることができる。したがって、表データ１１２および再フォーマットデータ１１４が、前述のインターフェースコンポーネント１０６の整形プロセスを経て返され得る。
【００２８】
本発明の特徴に従って、いくつかの態様を、型の割り当てに関して説明する。図２は、動的に型付けされる、または遅延バインディングのクエリ言語を用いる一態様を対象とする。他方、図３および４は、静的に型付けされる、または事前バインディングのクエリ言語を用いる態様を対象とする。動的に型付けされるクエリ言語は、変数および式への型の割り当てを、そのときの条件で実行時に行うための言語を指し得ることが理解されるであろう。それと反対に、事前バインディング態様では、変数および式への型の割り当てがコンパイル時に行われることが理解されるであろう。
【００２９】
次に図２を参照すると、動的に型付けされるクエリ言語１０２を対象とするシステムが示されている。図のように、非リレーショナルクエリ言語コンポーネント１０２は、Ｍを整数とする、パラメータ１からＭを用いることができる。パラメータ１からＭは、個々に、または一括してパラメータ２０２と呼ぶことができる。リレーショナルデータストアコンポーネント１０４は、Ｎを整数とする、ストアドプロシージャ１からＮを用いることができる。ストアドプロシージャ１からＮは、個々に、または一括してストアドプロシージャ２０４と呼ぶことができる。
【００３０】
ＸＰａｔｈブランドのクエリ言語など動的に型付けされるクエリ言語では、実装は、関数１０８のパラメータ２０２がインターフェースコンポーネント１０６に渡され、そのパラメータ２０２がストアドプロシージャ２０４の名前を識別する単一の拡張関数１０８を用いることができる。したがって、このストアドプロシージャ２０４は、実行時に呼び出され得る。また、追加のパラメータ２０２もこの拡張関数１０８に渡され得る。これらの追加パラメータ２０２は、ストアドプロシージャ呼び出し１１０の間に渡され得ることが理解されるであろう。この場合、単一の拡張関数１０８を用いてすべての利用可能なストアドプロシージャ２０４にアクセスされ得る。
【００３１】
例として、ストアドプロシージャ２０４が「ＧｅｔＣｕｓｔｏｍｅｒｓ」という名前であると仮定する。この特定のストアドプロシージャ２０４は、単一の整数値のパラメータ２０２を取り得る。ＸＰａｔｈブランドの非リレーショナルクエリ言語コンポーネントの例１０２によれば、このストアドプロシージャ２０４を呼び出し、ＸＭＬとして結果（データ１１４など）を返すのに使用される拡張関数１０８は、
【００３２】
【表１】
2006209756.tif 000003
【００３３】
とすることができる。
【００３４】
この例示的クエリは、「３４５」というパラメータ２０２の値を用いて「ＧｅｔＣｕｓｔｏｍｅｒｓ」ストアドプロシージャ２０４を呼び出す。この例では、「ＧｅｔＣｕｓｔｏｍｅｒｓ」と「３４５」の両方がパラメータ２０２を介して関数１０８（「Ａｃｃｅｓｓ−Ｓｔｏｒｅｄ−Ｐｒｏｃ」など）に渡される。次いで、このストアドプロシージャ２０４の結果（データ１１２など）がＸＭＬフラグメント（データ１１４など）に変換され、ＸＰａｔｈクエリの残りの部分があれば、それがこのフラグメント上で実行され得る。ストアドプロシージャ呼び出しに応答して、任意の数のクエリが行われ得ることを理解すべきである。例示の関数は「Ａｃｃｅｓｓ−Ｓｔｏｒｅｄ−Ｐｒｏｃ」という名前であるが、本明細書で説明する機能を逸脱することなく任意の名前が利用され得ることを理解すべきである。
【００３５】
次に、図３を参照すると、本発明の別の態様が示されている。図３の態様は、非リレーショナルクエリ言語コンポーネント１０２を静的に型付けされるクエリ言語とするためのシステム３００を対象とするものである。ＸＱｕｅｒｙブランドの言語など、静的に型付けされるクエリ言語１０２では、例示的システム３００は、クエリのコンパイル時に設定される利用可能なストアドプロシージャ情報を用い、ストアドプロシージャ２０４へのアクセスのために複数の拡張関数３０２を公開することができる。図示ように、非リレーショナルクエリ言語コンポーネント１０２は、Ｐを整数とする、１からＰ個の拡張関数を用いることができる。拡張関数１からＰは、個々に、または一括して、拡張関数３０２と呼ぶことができる。
【００３６】
この態様は、利用可能な各ストアドプロシージャ２０４に対応する拡張関数３０２を公開することができることを理解すべきである。これらの拡張関数３０２に渡されるパラメータ２０２は、インターフェースコンポーネント１０６によって、ストアドプロシージャ２０４への呼び出しの形で渡され得る。参照コンポーネント３０４は、拡張関数３０２に基づいてストアドプロシージャ２０４の識別を行うことができる。前述のように、現在のデータモデルのリレーショナルデータのビューを定義するために、ビューコンポーネント３０６が提供され得る。特に、ビューコンポーネント３０６は、データ１１２の（リレーショナルなどの）表形式を、データ１１４の（非リレーショナルなどの）表以外の形式に変換することができる。
【００３７】
本発明へのコンテキストを提供するために以下の例を含める。一態様において、ある顧客が注文履歴を持つと仮定する。具体的には、その顧客には、１００個の対応する製品を有する１０回の注文があったと仮定する。このシナリオでは、階層が形成される。言い換えると、顧客は注文履歴に関連付けられ、注文履歴は注文に関連付けられ、最後に、注文は製品に関連付けられている。
【００３８】
リレーショナルデータベース（ＳＱＬなど）は、この階層関係を格納することができないことが理解されるであろう。その代わり、リレーショナル環境には、情報を表として格納し、構造をしかるべく機能するように変更するための「正規化」と呼ばれる概念がある。正規化プロセスは、データをレコードグループに分解して、より効率のよい処理を提供することができる。このプロセス全体を通して、データは、レコード中のキーフィールドによって識別することができる。
【００３９】
例を続けると、注文情報は注文番号によって識別することができ、顧客情報は顧客番号によって識別することができる。しかしながら、データベースは、この顧客がこの注文に関連付けられていることを理解しない。この非リレーショナル空間ではしばしば、これらの注文がこの顧客に関連付けられ得る。ビューコンポーネント３０６は、リレーショナルデータストアコンポーネント１０４を調べ、結果として生じるデータ（１１２など）をその関係を示すようにフォーマットし、ゆえにデータ１１４を生成することができる。本明細書で説明するビューコンポーネント３０６は、前述の特許文献１で説明されるものと類似の機能を用いることができる。
【００４０】
この態様の非リレーショナルクエリ言語コンポーネント１０２は静的に型付けされるので、システム３００は、用いられるパラメータ２０２が特定のデータ型に対応することを保証し、検証することができる。また、（ビューコンポーネント３０６の要求に従った）ストアドプロシージャに関する戻りデータ（データ１１２など）の型も、それがクエリの残りと整合性を有することを保証するために検証され得る。これらの検証態様について、以下で図４を参照してより詳細に論じる。
【００４１】
ビューコンポーネント３０６に加えて、本発明の別の新規の態様は、参照コンポーネント３０４も対象とする。参照コンポーネント３０４は、非リレーショナルクエリ言語コンポーネント１０２から要求を受け取り、リレーショナルデータストアコンポーネント１０４内に保持されているデータにアクセスするのを容易にすることができる。言い換えると、本発明の１つの新規の特徴は、リレーショナルデータベース１０４からの情報（データなど）を指定し、獲得するための、（ＸＭＬなどの）非リレーショナルクエリ言語コンポーネント１０２の語（ｔｅｒｍｓ）でのやりとりを可能にするシステムおよび方法を対象とする。この情報には、リレーショナルデータストア１０４に関連付けられたストアドプロシージャ２０４を介してアクセスされ得る。ビューコンポーネント３０６を参照して前述したように、リレーショナル情報（データ１１２など）が獲得されると、（ＸＭＬなどの）非リレーショナル環境と互換性のある形式のデータ１１２を生成するために、リレーショナルデータ１１２の変換が行われ得る。
【００４２】
インターフェースコンポーネント１０６を別個のコンポーネントとして説明しているが、インターフェースコンポーネント１０６の機能は、既存のシステムのコンパイラに組み込むことができることを理解すべきである。例えば、ユーザがクエリを呼び出すたびに、コンパイラは、非リレーショナルクエリのテキストを、コンピュータによって実行可能な言語および／またはコード（呼び出し１１０など）に変換することができる。本質的に、本発明の諸態様は、このように、非リレーショナルクエリ言語コンポーネント１０２によって公開されるクエリ言語（関数３０２など）を、リレーショナルデータストアコンポーネント１０４のストアドプロシージャ２０４によって理解可能な呼び出し１１０に変換する機能をもたらすコンパイラの新規の機能とみなすことができる。
【００４３】
例に戻って、ＸＱｕｅｒｙブランド環境における実装を想定する。各注文に複数の製品があり、複数の注文が注文履歴を構成し、各顧客が１つの注文履歴を持つと仮定する。さらに、識別番号で顧客を検索することのできるストアドプロシージャ２０４があるものとする。これらよれば、リレーショナルデータストアコンポーネント１０４は、識別番号で顧客を検索し得るストアドプロシージャ２０４を公開することができる。図３に示すように、ユーザは、関数３０２に入れたパラメータ（整数など）２０２をインターフェースコンポーネント１０６に渡すことができる。インターフェースコンポーネント１０６は、参照コンポーネント３０４を介して、関数３０２を指定されたストアドプロシージャ２０４への呼び出し１１０に変換することができる。その後、ストアドプロシージャ２０４が実行されて、リレーショナルデータストアコンポーネント１０４から要求されたデータ１１２が返され得る。
【００４４】
データ１１２はリレーショナルデータストアコンポーネント１０４から検索されるため、データ１１２は、複数のデータセットとして返されることになる。従来方式では、（ＸＭＬなどの）非リレーショナル言語はリレーショナル機構を用いないため、どの製品が返される注文に関連しているかの手作業による解釈が必要になるはずである。しかしながら、本発明によれば、前述のようにビューコンポーネント３０６を用いてその関係が確立することができる。リレーショナルデータベースは、変換されると、ＸＭＬ環境で用いられ得る（階層などの）ネスティング形式を用いることが理解されるであろう。
【００４５】
本発明は、リレーショナルデータストアコンポーネント１０４によって格納されている階層に自動的にアクセスし、それを（ＸＭＬなどの）非リレーショナル環境と整合性のある形式に変換し使用するためのストアドプロシージャ２０４へのアクセスを可能にする。言い換えると、本発明によれば、ＸＭＬ環境内から、階層的なネスト構造が参照され、使用され得る。前記例によれば、一顧客（Ｃｕｓｔｏｍｅｒ）内において、ユーザは、注文（Ｏｒｄｅｒ）を調べて特定の注文された製品（Ｐｒｏｄｕｃｔ）を見つけることができる。
【００４６】
再度図３を参照すると、リレーショナルデータストアコンポーネント１０４からデータ１１２にアクセスするために、ユーザは、非リレーショナルクエリ言語コンポーネント１０２を介して拡張関数３０２を用いることができる。拡張関数３０２は、非リレーショナルクエリ言語コンポーネント１０２内に定義することができる。「関数」は、それが書き込まれているプログラムまたは他の何らかのプログラムのタスクを実行することのできる自立型ソフトウェアルーチン（ストアドプロシージャなど）を指し得ることが理解されるであろう。この態様は静的に型付けされるシナリオを用いるため、所望のストアドプロシージャ２０４の名前を表すパラメータ２０２が関数３０２として渡され得る。
【００４７】
インターフェースコンポーネント１０６は、定義された拡張関数３０２を、リレーショナルデータストアコンポーネント１０４内のストアドプロシージャ２０４によって理解され得る呼び出し１１０に変換することができる。呼び出し１１０は、サブルーチン（ストアドプロシージャ２０４など）を使用するプログラムによる要求とすることができる。当然ながら、サブルーチン（ストアドプロシージャ２０４など）は大きいこともあり、相当量の処理を実行することもできる。また、このサブルーチンは、単一のフィールドを識別し、結果を返すだけの小ささとすることもできる。図３の静的に型付けされる態様で示すように、関数３０２およびその後の呼び出し１１０は、ストアドプロシージャ２０４の名前の後に、ストアドプロシージャ２０４に渡される任意の値またはパラメータ２０２を続けて指定することができる。
【００４８】
ストアドプロシージャ２０４が呼び出されると、図示のようにその操作が実行されて、結果（データ１１２など）が返され得る。前述の態様は、データストアコンポーネント（リレーショナルデータストアコンポーネント１０４など）の内部にあるストアドプロシージャ２０４を対象としているが、ストアドプロシージャ２０４は、データストアコンポーネントの外部のプログラムおよび／またはサブルーチンとすることもできることを理解すべきである。
【００４９】
別の例として、静的に型付けされる例においては、「ＦｉｎｄＣｕｓｔｏｍｅｒｓ」という名前のストアドプロシージャが、非リレーショナルクエリ言語コンポーネント１０２によって直接呼び出され得る。したがって、「姓」および「郵便番号」がパラメータ２０２として付加されて、ストアドプロシージャ２０４の基準を定義することができる。したがって、この関数３０２は、この指定されたストアドプロシージャ２０４（「ＦｉｎｄＣｕｓｔｏｍｅｒｓ」など）を呼び出し、定義されたパラメータ２０２に対応する結果（データ１１２など）を返すことができる。次に、さらに後処理を行うために、結果（データ１１２など）が、このクエリ言語１０２に適したやり方で変換され得る。
【００５０】
前述のように、図２の態様は、非静的に型付けされる機構を対象としている。それによれば、ストアドプロシージャ２０４へのアクセスを容易にし得る１つの標準拡張関数１０８（Ａｃｃｅｓｓ−Ｓｔｏｒｅｄ−Ｐｒｏｃなど）があり得る。言い換えると、ストアドプロシージャ２０４へのアクセスを行うコンパイラは、単一の関数１０８を公開することができる。さらに、関数１０８のパラメータ２０２の１つは、どのストアドプロシージャ２０４を呼び出すべきか識別することもできる。
【００５１】
他方、図３（および以下で説明する図４）に示す本発明の態様は、静的に型付けされる態様を対象としている。非リレーショナルクエリ言語コンポーネント１０２は、型の概念を用いてさらに機能を提供し得ることが理解されるであろう。例えば、静的に型付けされる、または事前バインディングのシナリオでは、非リレーショナルクエリ言語コンポーネント１０２は、リレーショナルデータストア１０４内に含まれるデータの型を知っており、それによって分析および／または検証技法を用いることができる。従来、一般のデータ型には、数値、ストリング、ブーリアン（例えば真／偽）などが含まれ得ることが理解されるであろう。
【００５２】
図４の態様を参照すると、非リレーショナルクエリ言語コンポーネント１０２は、リレーショナルデータストアコンポーネント１０４に関してこれらの型を実施することができる。例をあげると、ユーザがブール論理「真」＋「真」を用いるクエリを呼び出した場合、非リレーショナルクエリ言語コンポーネント１０２は、これが無意味なアクションであると識別し、ゆえに、無意味なアクションであると通知することができる。本発明によれば、非リレーショナルクエリ言語コンポーネント１０２は、この種の論理を利用することができる。そうする際に、リレーショナルデータストアコンポーネント１０４内に含まれるデータは、特定の型の観点から類別され得る。
【００５３】
前記例に戻って、静的に型付けされる態様によれば、「顧客」型および「注文履歴」型が定義され得る。したがって、関数を用いてある「顧客」の「製品」が識別される場合、コンパイラ（検証コンポーネント４０２など）は、データ型に基づいてエラーを示す通知を表示することができる。言い換えると、「顧客」は、それに直接関連付けられた「製品」を持たない。前記例では、「顧客」は「注文履歴」を有し、「注文履歴」は「注文」を有し、「注文」は「製品」を有する。しかしながら、「顧客」は直接には「製品」を有していない。したがって、この要求は、エラーと識別され得る。
【００５４】
図示のように、検証コンポーネント４０２を用いて、ストアドプロシージャ２０４に関連する事前定義の型に従って、返されるデータ２１２のパラメータおよび型が検証され得る。例として、リレーショナルデータストア１０４中の「ＦｉｎｄＣｕｓｔｏｍｅｒ」という名前のストアドプロシージャ２０４が２つのストリングパラメータ２０２を取るものと仮定する。第１のパラメータ２０２は「ｆｉｒｓｔｎａｍｅ（名）」であり、第２のパラメータは「ｌａｓｔｎａｍｅ（姓）」である。したがって、例示的ＸＱｕｅｒｙブランド環境では、このストアドプロシージャ２０４を呼び出し、ＸＭＬとして結果（データ１１４など）を返すのに使用される拡張関数３０２は、
【００５５】
【表２】
2006209756.tif 000004
【００５６】
とすることができる。
【００５７】
クエリが静的に正しいことを保証するために、インターフェースコンポーネント１０６（検証コンポーネント４０２など）は、パラメータ２０２型がストアドプロシージャ２０４に一致しない場合、非リレーショナルクエリ言語コンポーネント１０２からのクエリに関してエラーとすることができる。また、返されるデータ１１２型がクエリ（ＸＱｕｅｒｙブランドの問い合わせなど）の残りと互換性がない場合にも、エラー通知が生成され得る。この機能は、以下の例を参照するとよりよく理解されるはずである。以下のＸＱｕｅｒｙが設けられると仮定する。
【００５８】
【表３】
2006209756.tif 000005
【００５９】
上記のクエリ文では、「ＦｉｎｄＣｕｓｔｏｍｅｒ」ストアドプロシージャ２０４は、整数値をパラメータ２０２として受け入れない。静的に型付けされるＸＱｕｅｒｙコンパイラ（検証コンポーネント４０２など）は、ストアドプロシージャ２０４に関する必要な静的情報を持っていたため、検証コンポーネント４０２は、このクエリが間違いであると判定することができる。さらに、検証コンポーネント４０２は、ストアドプロシージャ２０４を介して検索された結果データ（１１２など）の型に基づいて類似の検出および検証を提供することもできる。
【００６０】
図２を参照して説明した態様では、インターフェースコンポーネント１０６および／またはコンパイラは、この型情報（動的に型付けされるなど）を全く知らない。しかしながら、図４の静的に型付けされる態様では、コンパイラは、リレーショナルデータストアコンポーネント１０４中の情報の型を知っている。したがって、インターフェースコンポーネント１０６は、型を理解し、ストアドプロシージャ２０４を強く型付けされたメソッドとして公開することができる。それによれば、インターフェースコンポーネント１０６は、検証コンポーネント４０２を用いて、返されたデータ（データ１１２など）の妥当性をチェックし、ストアドプロシージャ２０４に送られるパラメータ２０２が、既知の型に関して正しいことを必要としうる。
【００６１】
図４の態様は、静的にチェックされる機構を対象とすることが理解されるであろう。これは、普通、クエリ言語が静的型付けをサポートするように設計されたか否かに左右される。前述のように、静的に型付けされる態様では、ストアドプロシージャ自体が、パラメータとして拡張関数に公開され得る。言い換えると、ストアドプロシージャが前もって知られているため、直接ストアドプロシージャを表す構成が作成され得る。型に関する情報が実行前に知られている場合、本発明は、データおよび関数の妥当性をチェックすることができることを理解すべきである。
【００６２】
前記例を続けて図５を参照すると、インターフェースコンポーネント１０６のより細かい概略図が示されている。図示のように、インターフェースコンポーネント１０６は、一般に、規則ベースのエンジンコンポーネント５０２を含み得る。後で図６を参照して説明するように、任意選択の人工知能（ＡＩ）コンポーネント（図示せず）を規則ベースのエンジンコンポーネント５０２と一緒に、またはその代わりに用いて、前述のインターフェースコンポーネント１０６の機能と一緒に用いられるアクションまたはアクションセットを自動的に推論することができる。
【００６３】
図５の例示的態様では、規則ベースのエンジンコンポーネント５０２は、事前定義の選好（規則など）に従ってプログラムされ、または構成され得る。例えば、定義された階層に基づいてクエリに自動的に優先順位を付けるよう規則（論理など）が構築され得る。より具体的には、クエリの特定の特性、処理期限、情報の型などを考慮に入れてクエリに優先順位を付け、処理を行うよう規則が設定され得る。規則ベースのエンジン５０２は、インターフェースコンポーネント１０６の制御をしかるべく変更するための規則の適用を容易にすることができる。
【００６４】
本発明の別の代替の態様の概略図を図６に示す。図６に示すこの態様のインターフェースコンポーネント１０６は、ＡＩコンポーネント６０２を用いて、アクションを自動的に推論し、かつ／または予測する。図示のように、この代替の態様は、任意選択で、自動制御および／または操作を容易にする推論モジュール６０４を含み得る。
【００６５】
この態様によれば、任意選択のＡＩコンポーネント６０２、６０４は、本明細書で説明する本発明の様々な態様（制御優先順位付け、プロセス制限など）を自動的に実行するのを容易にすることができる。ＡＩコンポーネント６０２は、所与の時刻および／または状態において実行されるべく意図されたアクションを推論することを容易にする推論ベースの方式を一部利用して、ＡＩコンポーネントの自動化態様をさらに強化することのできる推論コンポーネント６０４を含み得る。本発明のＡＩベースの態様は、任意の適当な機械学習ベースの技法、および／または統計ベースの技法、および／または確率論ベースの技法によって行われ得る。
【００６６】
別の態様では、図６にさらに示すように、本発明は、（例えば、制御クエリ（ストアドプロシージャなど）実行および／または操作と関連させて）任意選択で、その様々な態様を自動的に実行する様々な人口知能ベースの方式を用いることもできる。具体的には、人口知能コンポーネント６０２、６０４が、任意選択で、人工知能プロセス（信頼、推論など）に基づいて本発明の態様を実施するために設けられ得る。例えば、ユーザ選好または処理要件に基づいてクエリ実行の優先順位付けを決定するプロセスが、自動分類システムおよびプロセスによって容易にされ得る。さらに、任意選択の人工知能コンポーネント６０２、６０４を用いて、予測され、かつ／または推論される選好に基づいて、受け取ったデータをレンダリングし、かつ／またはフォーマットする自動化プロセスを容易にすることもできる。
【００６７】
分類子は、入力属性ベクトル、ｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘｎ）を、その入力があるクラスに属する信頼度にマップする関数、すなわち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）である。そのような分類は、（例えば、ユーティリティおよびコストを分析に織り込んだ）確率論的、かつ／または統計ベースの分析を用いて、ユーザが自動的に実行されることを望むアクションを予測し、または推論することができる。
【００６８】
サポートベクトルマシン（ＳＶＭ）は、使用されうる分類子の一例である。ＳＶＭは、可能な入力の空間における超曲面を見つけることによって動作し、この超曲面は、非トリガイベントからトリガ基準を分離しようとする。直観的には、これは、訓練データに近いが、同一ではない試験データについて分類を修正する。他の有向および無向のモデル分類手法には、例えば、ナイーブベイズ、ベイズネットワーク、決定木などが含まれ、異なる独立パターンを提供する確率論的分類モデルが用いられ得る。また、本明細書で使用する分類には、優先順位のモデルを作成するのに利用される統計的回帰も含まれる。
【００６９】
本明細書から容易に理解されるように、本発明は、（ユーザ挙動の観測、外部情報の受け取りなどによって）暗黙的に訓練されるのみならず、（汎用訓練データなどによって）明示的にも訓練される分類子を用いることができる。例えば、ＳＶＭは、分類子コンストラクタおよび機能選択モジュール内で学習段階または訓練段階によって構成され得る。言い換えると、エキスパートシステム、ファジィ論理、サポートベクトルマシン、欲張り探索法、規則ベースのシステム、ベイズモデル（ベイズネットワークなど）、ニューラルネットワーク、他の非線形訓練技法、データ融合、ユーティリティベースの分析システム、ベイズモデルを用いるシステムなどの使用が企図されており、添付の特許請求の範囲の範囲内に含まれるよう意図されている。
【００７０】
ＡＩの他の実施例には、学習され、または予測されたユーザ意図に基づいて、システムが検証を促すことを可能にするための代替の態様が含まれ得る。例えば、システムは、重要データおよび／または機密データ（社会保障やクレジットカードの口座番号など）を提供する前に、セキュリティ証明書の検証を促すことができる。同様に、任意選択のＡＩコンポーネントは、ユーザに、システム状態に基づいてクエリのプロセスを遅らせるよう促すこともできる。
【００７１】
図７および８を参照すると、本発明の態様による流れ図が示されている。説明を簡単にするために、本明細書で、流れ図の形などで示す１つまたは複数の方法を、一連の動作として図示し説明するが、本発明は、その動作順序によって限定されるものではなく、本発明によれば、いくつかの動作は、本明細書で図示し説明するものと異なる順序で、かつ／またはその他の動作と同時に行われ得ることを理解し、諒解されたい。例えば、一方法が、代替として、状態図などにおける一連の相互に関連する状態またはイベントとしても表され得ることを、当業者であれば、理解し、諒解されよう。さらに、本発明による方法を実施するのに、図示の動作すべてが必要とされるとは限らない。
【００７２】
図７を参照すると、動的に型付けされるクエリ言語コンポーネントを用いる例示的方法が示されている。７０２で、ストアドプロシージャにアクセスする関数が定義される。前述のように、ストアドプロシージャにアクセスするように定義される関数は、任意の所望の名前を取ることができる。例えば、前述のように、この関数は、「Ａｃｃｅｓｓ−Ｓｔｏｒｅｄ−Ｐｒｏｃ」として定義され得る。７０４で、パラメータが識別され、関数に渡される。パラメータは、特定のストアドプロシージャ、ならびにそのストアドプロシージャのアクセス中に用いられる変数を識別することができる。
【００７３】
７０６で、関数がストアドプロシージャと互換性のある呼び出しに変換される。例えば、インターフェースコンポーネント（参照コンポーネントなど）を用いて、関数がストアドプロシージャ呼び出しに変換され得る。次に、システムは、ストアドプロシージャを探し出そうとする。したがって、７０８で、ストアドプロシージャが存在するかどうか判定される。７０８で、ストアドプロシージャが存在しないと判定された場合、プロセスは図示のように終了する。
【００７４】
他方、７０８で、システムが、ストアドプロシージャが存在すると判定した場合には、７１０で、ストアドプロシージャが実行され得る。本明細書で論じたように、別の態様と一緒に、優先順位が付けられ、かつ／または遅延されたストアドプロシージャ実行が用いられ得ることを理解すべきである。実行されると、７１２で、ストアドプロシージャがデータを返す。ストアドプロシージャは、リレーショナルデータストアと一緒に実行されるので、返されるデータは、表形式であることが理解されるであろう。７１４で、表形式のデータが、非リレーショナルクエリ言語（ＸＭＬなど）と整合性のある階層形式に変換され得る。この形式変換は、前述のビュー定義コンポーネントによって行われ得る。図７の態様は動的に型付けされるシナリオを対象とするが、図８は静的に型付けされるシナリオを対象とするものである。
【００７５】
図８の静的に型付けされる態様に関して、８０２で、ストアドプロシージャが識別される。前述のように、この態様は静的に型付けされるため、ストアドプロシージャに関する情報が利用可能であり、したがって、非リレーショナルクエリ言語によって識別され得る。言い換えると、この態様では、関数は、所望のストアドプロシージャの名前を取ることができる。８０４で、パラメータが識別され、関数に付加される。８０６で、関数が、リレーショナルデータベース内のストアドプロシージャによって解釈され得る呼び出しに変換される。
【００７６】
図８の態様は静的に型付けされる（例えば事前バインディングの）システムを指すので、検証を用いて、受け入れ可能な処理が保証され得ることが理解されるであろう。したがって、８０８で、識別されたパラメータが識別されたストアドプロシージャと整合性があるかどうか立証する判定が行われ得る。言い換えると、システムは、パラメータの型がストアドプロシージャと整合性があるかどうか判定することができる。その型に整合性がないと判定された場合、呼び出しが打ち切られ、プロセスが終了される。他方、パラメータが受け入れ可能である場合、８１０で、ストアドプロシージャが実行される。８１２で、リレーショナルデータストアから表データが返される。
【００７７】
この態様も、やはり、静的に型付けされるシナリオを指すため、８１４で、返されたデータがクエリの互換性について検証され得る。例えば、追加のクエリアクションが用いられる場合、システムは、返されたデータ型が追加のクエリアクションと整合性があることを検証することができる。互換性がない場合、プロセスが打ち切られ、方法が終了する。８１４で、データに互換性があると判定された場合、８１６でデータが再フォーマットされ得る。この再フォーマット動作は、返された表データを、非リレーショナルクエリ言語（ＸＭＬなど）と整合性のある受け入れ可能な階層形式にフォーマットすることができる。
【００７８】
次に図９を参照すると、開示のアーキテクチャを実行するように動作するコンピュータのブロック図が示されている。本発明の様々な態様のさらなるコンテキストを提供するために、図９および以下の考察では、本発明の様々な態様が実施され得る適切なコンピューティング環境９００の簡潔な一般的説明を提供することが意図されている。上記にて本発明を、１つまたは複数のコンピュータ上で実行され得るコンピュータ実行可能命令の一般的なコンテキストで説明しているが、本発明が、他のプログラムモジュールと組み合わせて、かつ／またはハードウェアとソフトウェアの組み合わせとしても実施され得ることを当業者ならば理解されよう。
【００７９】
一般に、プログラムモジュールには、個々のタスクを実行し、または個々の抽象データ型を実装する、ルーチン、プログラム、コンピュータ、データ構造などが含まれる。さらに、本発明の方法が、そのそれぞれが１つまたは複数の関連する装置に動作可能に結合され得る、シングルプロセッサまたはマルチプロセッサコンピュータシステム、マイクロコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピュータ装置、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品などを含む、他のコンピュータシステム構成を用いても実施され得ることを当業者ならば理解されよう。
【００８０】
また、例示の本発明の態様は、いくつかのタスクが、通信ネットワークを介してリンクされたリモート処理装置によって実行される、分散コンピューティング環境でも実施され得る。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモート両方のメモリ記憶装置の両方に配置されうる。
【００８１】
コンピュータは、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体とすることができ、それには、揮発性と不揮発性両方の媒体、取り外し可能と取り外し不能両方の媒体が含まれる。例をあげると、それだけに限らないが、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体が含まれ得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造体、プログラムモジュールまたはその他のデータなどの情報を記憶するための任意の方法または技術で実施された、揮発性と不揮発性、取り外し可能と取り外し不能両方の媒体が含まれる。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなどのメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）などの光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置などの磁気記憶装置、あるいは所望の情報を格納するのに使用され、コンピュータによってアクセスされ得る他の任意の媒体が含まれる。
【００８２】
通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラムモジュールまたはその他のデータを、搬送波や他の搬送機構などの変調されたデータ信号中に具現化するものであり、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、その特性の１つまたは複数が、その信号に情報を符号化するような方式で設定または変更されている信号を意味する。例をあげると、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体が含まれる。また、上記のいずれかの組み合わせもコンピュータ可読媒体の範囲内に含めるべきである。
【００８３】
図９を参照すると、コンピュータ９０２を含む、本発明の様々な態様を実施するための例示的環境９００が示されており、コンピュータ９０２は、処理装置９０４、システムメモリ９０６およびシステムバス９０８を含む。システムバス９０８は、それだけに限らないが、システムメモリ９０８を含むシステム構成要素を処理装置９０４に結合する。処理装置９０４は、様々な市販のプロセッサのいずれでもよい。また、デュアルマイクロプロセッサや他のマルチプロセッサアーキテクチャも処理装置９０４として使用することができる。
【００８４】
システムバス９０８は、様々な市販のバスアーキテクチャを使用する、（メモリコントローラありまたはなしの）メモリバス、周辺バス、およびローカルバスにさらに相互接続し得る数種類のバス構造のいずれでもよい。システムメモリ９０６は、読出し専用メモリ（ＲＯＭ）９１０およびランダムアクセスメモリ（ＲＡＭ）９１２を含む。基本入出力システム（ＢＩＯＳ）は、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性メモリ９１０に格納され、始動時などにコンピュータ９０２内の要素間での情報転送を支援する基本ルーチンを含む。また、ＲＡＭ９１２は、データをキャッシュするためのスタティックＲＡＭなどの高速ＲＡＭも含み得る。
【００８５】
コンピュータ９０２は、さらに、（図示されない）適切なシャーシ内で外付け使用のためにも構成され得る、内蔵ハードディスクドライブ（ＨＤＤ）９１４（ＥＩＤＥ、ＳＡＴＡなど）、（例えば、取り外し可能ディスケット９１８との間で読取りまたは書込みを行うための）磁気フロッピー（登録商標）ディスクドライブ（ＦＤＤ）９１６、および（例えば、ＣＤ−ＲＯＭディスク９２２を読取り、またはＤＶＤなど他の高容量光媒体との間で読取りまたは書込みを行うための）光ディスクドライブ９２０を含む。ハードディスクドライブ９１４、磁気ディスクドライブ９１６および光ディスクドライブ９２０は、それぞれ、ハードディスクドライブインターフェース９２４、磁気ディスクドライブインターフェース９２６および光ディスクインターフェース９２８によってシステムバス９０８に接続され得る。外部ドライブ実装のためのインターフェース９２４には、ユニバーサルシリアルバス（ＵＳＢ）とＩＥＥＥ１３９４インターフェース技術の少なくとも一方または両方が含まれる。
【００８６】
これらのドライブおよびそれに関連付けられたコンピュータ可読媒体は、データ、データ構造体、コンピュータ実行可能命令などの不揮発性の記憶を提供する。ドライブおよび媒体は、コンピュータ９０２のために、適切なディジタル形式の任意のデータの記憶を提供する。前述のコンピュータ可読媒体の説明は、ＨＤＤ、取り外し可能磁気ディスケット、およびＣＤやＤＶＤなどの取り外し可能光媒体に言及しているが、ｚｉｐドライブ、磁気カセット、フラッシュメモリカード、カートリッジなど、コンピュータによって読取り可能な他の種類の媒体もこの例示的動作環境で使用され、さらに、そのような任意の媒体が、本発明の方法を実行するコンピュータ実行可能命令を含み得ることは、当業者により理解されるはずである。
【００８７】
ドライブおよびＲＡＭ９１２には、オペレーティングシステム９３０、１つまたは複数のアプリケーションプログラム９３２、その他のプログラムモジュール９３４およびプログラムデータ９３６を含むいくつかのプログラムモジュールが格納され得る。また、オペレーティングシステム、アプリケーション、モジュール、および／またはデータの全部または一部は、ＲＡＭ９１２にもキャッシュされ得る。本発明が、様々な市販のオペレーティングシステムまたはオペレーティングシステムの組み合わせを用いて実施され得ることが理解される。
【００８８】
ユーザは、キーボード９３８や、マウス９４０などのポインティングデバイスといった１つまたは複数の有線／無線入力装置を介してコンピュータ９０２にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、赤外線リモコン、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーンなどが含まれ得る。上記その他の入力装置は、しばしば、システムバス９０８に結合された入力装置インターフェース９４２を介して処理装置９０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェースなど、他のインターフェースによっても接続され得る。
【００８９】
また、モニタ９４４または他の種類の表示装置も、ビデオアダプタ９４６などのインターフェースを介してシステムバス９０８に接続される。モニタ９４４以外に、コンピュータは、通常、スピーカやプリンタなど、他の周辺出力装置（図示せず）も含む。
【００９０】
コンピュータ９０２は、リモートコンピュータ９４８など、１つまたは複数のリモートコンピュータへの有線通信および／または無線通信を介した論理接続を使用するネットワークで接続された環境で動作し得る。リモートコンピュータ９４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、携帯型コンピュータ、マイクロプロセッサベースの娯楽機器、ピアデバイスまたはその他一般のネットワークノードとすることができ、通常は、コンピュータ９０２との関連で説明した要素の多くまたは全部を含むが、簡潔にするために、メモリ記憶装置９５０だけを示してある。図示の論理接続には、ローカルエリアネットワーク（ＬＡＮ）９５２、および／または広域ネットワーク（ＷＡＮ）９５４などのより大規模なネットワークへの有線／無線接続が含まれる。そのようなＬＡＮおよびＷＡＮネットワーク環境は、オフィス、および企業では一般的であり、イントラネットなど企業規模のコンピュータネットワークを促進し、そのすべてがインターネットなどの世界規模の通信ネットワークに接続し得る。
【００９１】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ９０２は、有線および／または無線通信ネットワークインターフェースまたはアダプタ９５６を介してローカルネットワーク９５２に接続される。アダプタ９５６は、ＬＡＮ９５２への有線または無線通信を容易にすることができ、ＬＡＮ９５２は、無線アダプタ９５６と通信を行うためにその上に配置される無線アクセスポイント含むこともできる。ＷＡＮネットワーク環境で使用されるとき、コンピュータ９０２は、モデム９５８を含むことができ、またはＷＡＮ９５４上の通信サーバに接続され、またはインターネットによるものなど、ＷＡＮ９５４を介して通信を確立する他の手段を有する。モデム９５８は、内蔵でも外付けでも、有線でも無線でもよく、シリアルポートインターフェース９４２を介してシステムバス９０８に接続される。ネットワーク化された環境では、コンピュータ９０２に関連して示すプログラムモジュール、またはその一部は、リモートメモリ／記憶装置９５０にも格納され得る。図示のネットワーク接続は例であり、コンピュータ間で通信リンクを確立する他の手段も使用され得ることが理解されるであろう。
【００９２】
コンピュータ９０２は、例えば、プリンタ、スキャナ、デスクトップおよび／または携帯型コンピュータ、携帯情報端末、通信衛星、無線で検出可能なタグに関連付けられた任意の装置または場所（キオスク、ニューススタンド、トイレなど）、電話機といった、任意の無線機器または無線通信で動作するように配置されたエンティティと通信するように動作し得る。これには、少なくともＷｉ−Ｆｉおよびブルートゥース（登録商標）無線技術が含まれる。ゆえに、通信は、従来方式のネットワークと同様に事前定義された構造とすることも、少なくとも２つの機器の間の単なる随時の通信とすることもできる。
【００９３】
Ｗｉ−Ｆｉ、すなわちＷｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙは、自宅のソファ、ホテルの部屋のベッドまたは職場の会議室から、無線で、インターネットへの接続を可能にする。Ｗｉ−Ｆｉは、コンピュータなどの機器が、屋内および屋外、すなわち、基地局の範囲内のどこでもデータを送受信することができるようにする、携帯電話のような無線技術である。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ８０２．１１（ａ、ｂ、ｇなど）と呼ばれる無線技術を使って安全で、信頼性が高く、高速な無線接続を提供する。Ｗｉ−Ｆｉネットワークは、コンピュータを、相互に接続しインターネットに接続し、（ＩＥＥＥ８０２．３またはイーサネット（登録商標）を使用する）有線ネットワークに接続するのに使用され得る。Ｗｉ−Ｆｉネットワークは、免許不要の２．４および５ＧＨｚ無線帯域において、例えば、１１Ｍｂｐｓ（８０２．１１ａ）や５４Ｍｂｐｓ（８０２．１１ｂ）などで、あるいは両帯域を含む（デュアルバンド）製品を用いて動作し、そのため、Ｗｉ−Ｆｉネットワークは、多くのオフィスで使用されている基本の１０ＢＡＳＥ−Ｔ有線イーサネット（登録商標）ネットワークに類似した実環境性能を提供することができる。
【００９４】
次に図１０を参照すると、本発明による例示的コンピューティング環境１０００の概略的ブロック図が示されている。システム１０００は１つまたは複数のクライアント１００２を含む。クライアント１００２はハードウェアおよび／またはソフトウェア（スレッド、プロセス、コンピュータ装置など）とすることができる。クライアント１００２は、例えば、本発明を用いることによって、クッキーおよび／または関連するコンテキスト情報を収容することができる。また、システム１０００は、１つまたは複数のサーバ１００４も含む。サーバ１００４も、やはり、ハードウェアおよび／またはソフトウェア（スレッド、プロセス、コンピュータ装置など）とすることができる。サーバ１００４は、例えば、本発明を用いることによって、変換を実行するスレッドを収容することができる。クライアント１００２とサーバ１００４の間の１つの可能な通信は、２つ以上のコンピュータプロセスの間で送信されるように適合されたデータパケットの形とすることができる。このデータパケットは、例えば、クッキーおよび／または関連するコンテキスト情報を含み得る。システム１０００は、クライアント１００２とサーバ１００４の間の通信を容易にするのに用いられ得る通信フレームワーク１００６（例えば、インターネットなどの世界規模の通信ネットワーク）を含む。
【００９５】
通信は、（光ファイバを含む）有線技術および／または無線技術によって促進され得る。クライアント１００２は、クライアント１００２にとってローカルの情報（クッキーおよび／または関連するコンテキスト情報など）を格納するのに用いられ得る１つまたは複数のクライアントデータストア１００８に動作可能に接続される。同様に、サーバ１００４は、サーバ１００４にとってローカルの情報を格納するのに用いられ得る１つまたは複数のサーバデータストア１０１０に動作可能に接続される。
【００９６】
以上の説明には、本発明の諸例が含まれている。当然ながら、本発明を説明するために、構成要素または方法の考えられるあらゆる組み合わせを説明することは不可能であるが、本発明の多くの他の組み合わせおよび置換も可能であることを当業者は理解することが可能である。したがって、本発明は、添付の特許請求の範囲の精神および範囲内に含まれるそのようなすべての変更、改変および変形を包含することが意図されている。さらに、「含む（ｉｎｃｌｕｄｅｓ）」という用語が詳細な説明または特許請求の範囲で使用される限りにおいて、そのような用語は、「含む、備える（ｃｏｍｐｒｉｓｉｎｇ）」が請求項で移行語として用いられるときに解釈される場合の「含む、備える（ｃｏｍｐｒｉｓｉｎｇ）」という用語と同様に包含的であることが意図されている。
【図面の簡単な説明】
【００９７】
【図１】本発明の一態様による、非リレーショナルクエリ言語とリレーショナルデータストアの間の統合を容易にするインターフェースコンポーネントを備えるシステムを示す一般的コンポーネントブロック図である。
【図２】本発明の動的に型付けされる態様による、非リレーショナルクエリ言語とリレーショナルデータストアの間の例示的統合を示す一般的アーキテクチャ図である。
【図３】本発明の静的に型付けされる態様による、非リレーショナルクエリ言語とリレーショナルデータストアの間の例示的統合を示す一般的アーキテクチャ図である。
【図４】本発明による、検証を容易にする別の静的に型付けされる態様を示す一般的アーキテクチャ図である。
【図５】本発明の別の態様による、規則ベースの決定機構を用いる代替のインターフェースコンポーネントを示すコンポーネントブロック図である。
【図６】本発明の別の態様による、人工知能ベースの決定機構を用いる代替のインターフェースコンポーネントを示すコンポーネントブロック図である。
【図７】開示の動的に型付けされる態様による、非リレーショナルクエリ言語をリレーショナルデータストアと統合する手順を示す例示的流れ図である。
【図８】開示の静的に型付けされる態様による、非リレーショナルクエリ言語をリレーショナルデータストアと統合する手順を示す例示的流れ図である。
【図９】開示のアーキテクチャを実行するように動作するコンピュータを示すブロック図である。
【図１０】本発明による例示的コンピューティング環境を示す概略的ブロック図である。
【符号の説明】
【００９８】
１０２  非リレーショナルクエリ言語コンポーネント
１０４  リレーショナルデータストアコンポーネント
１０６  インターフェースコンポーネント
３０４  参照コンポーネント
３０６  ビューコンポーネント
４０２  検証コンポーネント
５０２  規則ベースのエンジンコンポーネント
６０２  人工知能コンポーネント
６０４  推論コンポーネント
９０４  処理装置
９０６  システムメモリ
９０８  バス
９１４  内蔵ＨＤＤ
９１４  外付けＨＤＤ
９１８  ディスク
９２０  ＣＤドライブ
９２２  ディスク
９２４  インターフェース
９２６  インターフェース
９２８  インターフェース
９３０  オペレーティングシステム
９３２  アプリケーション
９３４  モジュール
９３６  データ
９３８  キーボード
９４０  マウス
９４２  入力装置インターフェース
９４４  モニタ
９４６  ビデオアダプタ
９４８  リモートコンピュータ
９５０  メモリ／記憶
９５６  ネットワークアダプタ
９５８  モデム
１００２  クライアント
１００４  サーバ
１００６  通信フレームワーク
１００８  クライアントデータストア
１０１０  サーバデータストア
【図１】
2006209756.tif 000006
【図２】
2006209756.tif 000007
【図３】
2006209756.tif 000008
【図４】
2006209756.tif 000009
【図５】
2006209756.tif 000010
【図６】
2006209756.tif 000011
【図７】
2006209756.tif 000012
【図８】
2006209756.tif 000013
【図９】
2006209756.tif 000014
【図１０】
2006209756.tif 000015