"データのやりとりを容易にする方法であって、以下の動作を実施するために、メモリに格納されたコンピューター実行可能な命令を実行するように構成された、少なくとも1つのものを使用し、前記動作は、オブジェクトモデルと、1つ以上のワールドの概念をサポートするkey-valueデータモデルとの間のデータのマッピングすること、を含むことを特徴とする方法。請求項1に記載の方法であって、前記オブジェクトモデルに対して指定された少なくとも1つのクエリ演算子を、前記key-valueデータモデルにマッピングすることをさらに含み、前記クエリ演算子は、前記key-valueデータモデル及びあるワールドに対するデータの作成、読み出し、更新、削除のうち少なくとも1つを行うことを特徴とする方法。請求項2に記載の方法であって、少なくとも1つのkey-valueワールドに対して指定された前記少なくとも1つのクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。請求項3に記載の方法であって、前記少なくとも1つのkey-valueワールドを個別のサブワールドに分割することを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。請求項3に記載の方法であって、複数のkey-valueペアのワールドを結合して単一のkey-valueペアのワールドにすることを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。請求項3に記載の方法であって、値によってkey-valueのペアをワールド間で移動させることを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。請求項3に記載の方法であって、プロキシによる参照により、key-valueのペアをワールド間で移動させることを指定するクエリ演算子をマッピングすることをさらに含むことを特徴とする方法。データのやりとりを容易にするシステムであって、メモリに結合されたプロセッサであって、前記メモリに格納されたコンピューター実行可能なコンポーネントを実行するように構成され、コンピューター実行可能なコンポーネントが、key-valueデータモデルをオブジェクトモデルにマッピングするように構成された第1のコンポーネントであって、前記オブジェクトモデルは、1つ以上のワールドに広がるkey-valueデータストアに対する統合言語クエリの指定を可能とするプログラミング言語で表現される、前記第1のコンポーネントを含むことを特徴とするシステム。請求項8に記載のシステムであって、前記統合言語クエリは、key-valueワールドに関連する機能を表現するクエリ演算子を含むことを特徴とするシステム。請求項9に記載のシステムであって、key-valueワールドに基づき、キーにより値がインデックスされることを特徴とするシステム。下記における詳細な説明は、一般に、オブジェクトモデルと、ワールドの概念をサポートするkey-valueデータモデルとの間をマッピングすることによりデータアクセスを容易にすることを対象としている。一実施形態においては、統合言語クエリLINQインフラストラクチャが、コンピュータープログラムとデータストア間のマッピングを実施するために用いられている。従って、データは、ノンリレーショナルのnoSQL又はcoSQLデータモデルからも、リレーショナルSQLデータモデルと同様の手法でアクセスされ得る。より具体的には、本明細書においてワールドとして参照される、特定のkey-valueのコンテキストに関して、クエリ演算子を指定することができる。結果的に、key-valueデータに関するやりとりは、ワールドベースとされる。さらに、ワールドは、分割及び/又は結合され、データは移動され、さもなければワールドにわたってアクセスされる。本開示における様々な態様は、添付された図面を参照して説明され、図面において、同じ参照番号は類似又は対応する要素を示している。しかしながら、図面及び本明細書における詳細な説明は、請求項に係る主題を開示された特定の形態に限定するためのものではないことに留意すべきである。むしろ、請求項に係る主題の理念及び範囲内において、全ての改変、等価物、そして、代替を網羅するためのものである。まず、図1を参照すると、データのやりとりを容易にするシステム100が図示されており、ここで、データのやりとりとは、データを生成、読み出しクエリ、更新、そして、削除などを指す。システム100は、オブジェクトモデル120、key-valueデータモデル130本明細書において定義されるように、オブジェクトモデル120及びkey-valueデータモデル130はコンポーネントとすることができると連結されるマップコンポーネント110を含む。オブジェクトモデル120は、中でも、特定のコンピュータプログラミング言語のアプリケーションに関して使用されるときに、例えば、データを表現し、やりとりを行うのに、オブジェクト及びオブジェクトのプロパティを参照する。key-valueデータモデル130は、データがどのように格納され、アクセスされるかを指定する。特に、key-valueデータモデル130は、所与のキー、データ、又は特定の値が代わりに提供されるように、ユニークキーでインデックスされた値を格納する。さらに、key-valueデータモデル130は、ワールドという概念をサポートする。マップコンポーネント110は、key-valueデータモデル130と、オブジェクトモデル120との間をマッピングする、言い換えると、翻訳を提供するように構成される。限定ではなく例示であるが、key-valueストアに対するデータの要求は、オブジェクトモデル表現で取得され、オブジェクトモデル表現から、key-valueデータモデル表現にマッピング又は翻訳され得る。その後、いずれの結果として得られるデータも、key-valueデータモデル表現からオブジェクトモデル表現に、マッピング又は翻訳され得る。より具体的には、アプリケーションデータを示すオブジェクトクラスを指定することができ、クエリなど、アプリケーションデータに対するやりとりを、そのオブジェクトクラスを介して指定することができる。このやりとりを、key-valueストアにおけるローカル又はリモートの実行のために翻訳され、結果として得られるデータを、個々のオブジェクトの表現に戻すように翻訳することができる。このように、データアクセスは、モデル間、すなわち、オブジェクトモデル120とkey-valueデータモデル130との間をブリッジするか又は経路を提供することにより容易化される。図2は、データインタラクション200を容易にするシステムの一実施形態を図示する。図示されているように、LINQコンポーネント210は、マップコンポーネント110の実施形態に対応することがあり、アプリケーションコンポーネント220は特定のオブジェクトモデル120のインスタンスであり、key-valueストア230は図1におけるkey-valueデータモデル130のインスタンスである。LINQコンポーネント210、すなわち統合言語クエリコンポーネントは、プログラム言語からのデータのやりとりを容易にすることに関する機能を提供する。より具体的に言えば、LINQコンポーネント210により、プログラミング言語例えば、C登録商標,VisualBasic登録商標等におけるクエリの指定について、便利で宣言的な簡単な形式のクエリのクエリシンタックスを可能にし、ここで、クエリは、データの要求、又はデータを操作するかデータとやりとりする例えば、更新、挿入、削除命令に対応することができる。より具体的に言えば、LINQコンポーネント210は、メソッド及びラムダなどの下位レベル言語のコンストラクタ又はプリミティブにマッピングされるクエリ演算子212を提供する。クエリ演算子212は、様々なオペレーション例えば、フィルタリング、プロジェクション、結合、グルーピング、順序づけのために提供され、これらに限定されないが、where及びselect演算子を含むことができ、これらの演算子は、その名前によって表される演算子を実装するメソッドにマッピングされ得る。1つ以上のクエリ演算子212は、クエリの一部として、言い換えれば、クエリ表現として指定され得る。例えば、ユーザーは、クエリをfromninnumberswheren<10selectnなどの形式で指定することができ、ここでnumbersはデータソースであり、このクエリは、そのデータソースから10未満の整数を返す。さらに、クエリ演算子212は、様々な態様で結合されて、任意の複合性を有するクエリを生成する。アプリケーションコンポーネント220は、key-valueストア230へのデータのやりとりを試みるコンピュータープログラムに対応し、例えば、そのコンピュータープログラムは、オブジェクトモデルを利用して、データの提示及びやりとりを行い、key-valueストア230は、key-valueモデルによるやりとりを許容する。より具体的に言えば、特にデータのやりとりをクエリとして表す、言い換えれば、クエリ表現で表すのに、1つ以上のクエリ演算子212を用いて、統合言語クエリを、アプリケーションコンポーネント220中で指定することができる。一実施形態においては、クエリ演算子212は、key-valueストアに対して、SQLのようなクエリを表すことを可能にする。言い換えれば、リレーショナルデータベースにおける使用のために開発された親しみのあるクエリ言語シンタックスが、key-valueストア230といったノンリレーショナルデータベースに対して利用可能となる。key-valueストア230は、keyによってデータがインデックスされアクセス可能な、key-valueモデルの特定のインスタンスに応答する。key-valueストア230は、元来のリレーショナルデータベースシステムとは異なるnoSQLデータベースシステムと呼ばれる一実装である。実際に、noSQLに対する共通の解釈は、ノンリレーショナルであることである。その他の実施形態においては、key-valueストア230は、coSQLデータベースシステムの実装形態であってもよく、ここで、coSQLは、SQLモデル又はリレーショナルモデルを双対化dualizingさせた結果として得られるデータモデルである。言い換えれば、coSQLとは、以下でさらに説明されるように、数学的に双対なSQLである。簡潔に言えば、coSQLデータモデルは、coSQLデータモデルを双対化した場合にSQLデータモデルが返されるような、key-valueデータモデルの真の形式のデータモデルである。これは、従来のnoSQLデータモデルにはないものである。さらに、key-valueストア230は、1つ以上のワールドを備えることができる。クエリ演算子212を、ワールドに対して指定して、実行することが可能である。ここで、ワールドとは、値同士又は値の集合体同士の関連性に関する特定のコンテキストを示す様相論理の概念modallogicconceptである。より形式的には、ワールドは、値間における推移閉包、又は、別の言い方をすれば、ワールドはルートから遷移して到達可能な値の集合体を表す。より具体的には、key-valueストアにおいて、あるコンテキスト又はワールド中の関連するキーを探すことで値を得ることができる。ある意味においては、ワールドとは、アドレス空間に類似するものであり、一意に特定された識別子を利用してアドレスが明確にされる。図3を参照すると、ワールド1300とワールド2310と呼ばれる二つのワールドが図示されている。双方のワールドは共に、表形式で表されている複数のキーと値を含む。さらに、点線矢印で示されているように、参照される値は、単一のルート例えば、キー0から到達可能である。ここで示されているように、ワールド1300は、0,1,及び2の3つのキーを有し、この3つのキーはそれぞれ、{S:1,S:2}、HELLO及び42という値を有する。他の形式では、これらを、0,[0|->{S:1,V:2},1|->HELLO,2|->42]として指定することができる。このようなkey-value構造において演算子を定義するためには、ワールドの概念を明確にさせることが役に立つ。キーを解釈するために、どちらのワールドに値が存在するのか見分けることは、重要なことである。図示されているように、ワールド2310はコンテキスト中に0,1及び2の3つのキーを有し、それぞれは、{S:2,S:1},42,及びHELLOという値を参照する。別の書き方では、ワールドを0,[0|->{S:2,V:1},2|->HELLO,1|->42]として指定することができる。ここで、ワールド1300及びワールド2310のkey-value構造は、同一構造であるが、値は異なる場所に置かれている。これは、プロセス毎に異なるオブジェクトグラフが存在するオペレーティングシステムにおける2つのプロセスに類似する。図4は、ローカル又はリモートのkey-valueストアに対するやりとりを容易にするために、指定及び実行される例示的なクエリ演算子212を図示する。一例示的な演算子は、1つ以上の値を指定して、特定のkey-valueワールドから取得するセレクトselect演算子410である。このような演算子における正式なシグネチャは、Mw<T>Selectw<S,T>Mw<S>src,Func<S,T>selectorであり、ここで、Selectは、Mw<S>srcという特定のワールドにおいてセレクタ関数Func<S,T>selectorを用いてkey-valueペアのソースの集合体にわたって実施され、ワールドw,Mw<T>におけるkey-valueペアの集合体を返す。セレクト演算子410は、より特定の形式のselect、すなわち、Mw<T>SelectManyw<S,T>Mw<T>src,Func<S,Mw<T>>selector,といったシグネチャを持つ、SelectManyに対応することもあり、これは、ソースワールドMw<T>srcから各要素を集合体に射影projectし、その結果を平坦化してワールドMw<T>ワールドにおけるkey-valueの単一の集合体とするものである。平坦化flatten演算子具体的に明示していないは、以下のシグネチャによって指定されるように、複数の集合体からある集合体を受け取り、単一の集合体を返す。Mw<S>Flattenw<S>Mw<Mw<S>>src.結合combine演算子420及び分割split演算子430を含め、その他様々な演算子がワールドの操作を対象としている。結合演算子420は、2つのワールドからkey-valueペアの集合体を取得して結合し、key-valueペアの単一のワールドを生成する。このオペレーションにより、コンフリクトを避けるためにキーを再マッピングすることができ、形式的には、下記のシグネチャで指定できる。Mwv<S>Combinew,v<S>Mv<S>left,Mv<S>right.反対に、分割演算子430は、単一のワールドのkey-valueペアの集合体を取得して、2つの異なるワールドに分割する。分割演算子430は、リレーショナルコンテキストにおけるシャーディングshardingに対応し、以下のシグネチャを有する。Mw<S>xMv<S>Split,wv<S>Mwv<S>src.さらに、集合体Mw<S>は、分割演算子430を繰り返し適用することにより、最大限に高密度の独立した集合体Mw0<S>,...,Mwn-1<S>に分割され、これによりサブコレクションを並行して操作することが可能になる。分割は、親のワールドに対するインデックスの実施を前提とするよりはむしろ、分割又はワールドに対して独立にインデックスされることに留意されたい。図5に移ると、分割オペレーション500及び結合オペレーション510が図示されている。分割オペレーション500をワールド1300の集合体に適用すると、ワールドA502の集合体及びワールドB504の集合体を返す。図示されているように、ワールド1300は、サブセット、より詳細にはサブワールドに分割され、ここで、サブセットは、1つのルートで到達可能である値のセットを含む。このケースにおいては、0|->{S:2,V:1},2|->HELLO,1|->42は、0|->S:1,1|->HELLO,と0|->V:2,1|->42に分割される。サブセットはワールドによってインデックスされることに留意されたい。分割オペレーション500は、ワールドA502及びワールドB504を結合してワールド1300にする、結合オペレーション510を適用することにより、元に戻すことが出来る。そのオペレーションにおいては、キーは適切に再マッピングされる。単一のワールドに関して、多数のクエリ演算子は指定され実行され得る。しかしながら、複数のワールドから値を取得したい状況も存在し得る。図4におけるマーシャルMarshal演算子440を用いてそのような状況を解決することができる。マーシャル演算子440のシグネチャは、Mv<S>Marshal,wv<S>Mw<S>src,であり、ワールドwにおけるkey-valueペアの集合体中の、あるkey-valueペアの値Sはワールドyにおいても利用可能にされる。そのような機能は、少なくとも2つの異なる方法、すなわち値又は参照referenceによって実現可能である。図6Aは、マーシャル演算子440の一実装形態を示すブロック図である。ここで示されているように、2つのワールド、すなわちワールドX610及びワールドY620がある。例えば、値によりkey-valueペアを参照する場合において、ワールドX610は値A及びBを含み、一方、ワールドY620は最初に単に値Cのみを含む。ワールドY620における値Bを利用したい場合、コピーオペレーション630が実施され、ワールドX610の値を、ワールドY620にコピーする。これは、値によるマーシャリングに対応する。図6Bは、マーシャル演算子440の代替的な実装形態を示すブロック図である。図6Aにおける例と同様に、例えば、値がkey-valueペアを参照する場合において、ワールドX610はA及びBの値を含み、ワールドY620は最初に単に値Cのみを含む。ワールドY620における値Bを利用したい場合、プロキシ640を用いてワールドにまたがって値を参照する。ここでは、Cがプロキシ640を参照して、プロキシ640が次にワールドX610における値Bを参照する。より具体的には、プロキシ640は、キーとワールドである値に対応することがあり、そのワールドから値を返す。例えば、プロキシ640は、値1、ワールドXに対応することがあり、ここで、1は値Bのキーであり、指定のワールドは、ワールドX610を意味する。このように、異なるワールドからの値の取得を容易にするために間接指定インダイレクションの付加的なレイヤーが追加される。この実施形態は、参照によるマーシャリングに対応するものである。図2に戻ると、LINQコンポーネント210は、あるワールドに関して指定されている1つ以上のクエリ演算子212を含むクエリ表現を最適化する最適化コンポーネント214も含む。言い換えれば、最適化コンポーネント214は、クエリ表現を補強して、1つ以上のワールドに応じて実行を最適化するか、又は少なくとも改良する。制限目的ではなく例示目的として、ワールドを分割して複数のサブセット又はサブワールドにして、複数のワールドに対する並列の処理を促進することができる。同様に、複数のワールドを、値が複数のワールドからアクセスされる単一のワールドに結合することができ、さもなければ、データのやりとりにネガティブな影響を及ぼし得るかなりの量のマーシャリングを生ずる可能性がある。もちろん、ワールドに応じて様々な他の最適化の手法が用いられる。ある特定の利用形態として、各クライアントに対して個別のハードウェアを用いる形態ではなく、ハードウェアの単一の部分が複数のクライアント又はテナントにサービスをする形態の、マルチテナント型が挙げられる。例えば、データベースプロバイダーが、データベース毎に対価を支払い、それぞれのデータベースが利用可能な50GBのストレージを有する状況について想定する。もし、データベースプロバイダーが、それぞれ5GBのストレージを必要とする10人のカスタマーを持つとすると、カスタマーは単一のデータベースを利用することができ、そしてプロバイダーは単一のデータベースを持てばよい。ここで、key-valueワールドを用いてリソースのセグメント化を論じ、促進することができる。特に、データは物理的に同じデータベース又はストアに格納されるが、論理的には、データは、それぞれ異なるワールドに存在する。このように、上記のようなシナリオにおいて、クロスワールドのデータのやりとりは制限又は禁止され、異なるエンティティのデータに関するプライバシー及びセキュリティがもたらされる。前述したとおり、そして、ある実施形態に従って、請求項に係る主題の態様は、従来のSQLデータモデルの双対モデルである、coSQLデータモデルに対して作用することができる。本明細書で使用されるとき、双対及び諸式の用語は、カテゴリ理論に関するように数学上の双対性を指し示すように意図されている。より具体的には、双対性とは、カテゴリCのプロパティと反対のカテゴリCopの双対プロパティとの間の対応関係である。カテゴリCについてのステートメントを考慮すると、各々の射morphismマッピングのソースとターゲットを入れ替え、同様に構成物である2つの射の順番を入れ替えることによって、反対のカテゴリであるCopについて、対応する双対のステートメントを取得することができる。例えば、カテゴリCは、あるデータモデルに対応し、反対のカテゴリCopは、双対又は共同データco-dataモデルを示すことが出来る。例えば、双対化することとは、あるデータモデルから双対を生成する行為を意味する。以下は、リレーショナルデータモデルから双対を派生させること、又はcoSQLデータモデルについてのハイレベルな議論である。ここで示されるように、結果は、ノンリレーショナルモデル又は具体的にはkey-valueデータモデルとすることができる。図7は、製品情報を格納する例示的なリレーショナル表現700を図示するものである。ここで示されているように、主キーと外部キーによって相互にリンクされた3つのテーブルがある。製品テーブル710は、主キーのID712と、タイトル、著者、発行年、総ページ数といった製品情報についての他の列を提供する。評価テーブル720は、製品の評価情報、および、製品テーブル710の1つのレコードを参照する外部キーPRODUCTID722を提供する。同様に、キーワードテーブル730は、製品と関連付けられたキーワードを提供し、製品テーブル710の対応するレコードを参照する外部キーPRODUCTID732を含む。図8を簡単に参照すると、図7におけるリレーショナル表現700において、外部キーと主キーとの間に、ポインターが挿入されている。特に、ポインター810は、評価テーブル720の外部キーPRODUCTID722から、製品テーブル710の主キーID712で識別される対応するレコードにポイントする。同様に、ポインター820は、キーワードテーブル730の外部キーPRODUCTID732から、製品テーブル710の主キーID712で識別される対応するレコードにポイントする。図9は、図7及び図8における例示的なリレーショナル表現に関して提供されるデータと同じデータの例示的なノンリレーショナルkey-value表現900を図示するものである。ここでは、910、920及び930などの行は、値に対するポインター、又は、スカラー値として示されるキーのいずれかを格納することができる。例えば、行910は、タイトル、著者、キーワード、評価、そして発行年および総ページ数のスカラー値についてのキーを有する。行920は、3つのキーワードにマッピングされた3つのキーを含み、行930は2つの評価表現にマッピングされた2つのキーを含む。図10を参照すると、例示的なノンリレーショナルkey-value表現1000が示されている。ここでは、行に、スカラーとキーのみの包含を許容する制限を緩和して、さまざまなタイプのデータを保持することを許容している。先の図9における行910に対応する行1010は、タイトル及び著者の値、及びキーワード1020と評価1030双方のキーの集合をそれぞれ含む。より具体的には、キー1020はキーワードにポイントし、キー1030は評価情報にポイントする。図8の例示的なリレーショナル表現を、図10の例示的なノンリレーショナル表現と比較してみる。明確にそれぞれを区別する特徴は、矢印が反対方向に伸びている点であることに留意されたい。より具体的には、リレーショナルの矢印は、外部キーの行から、対応するプライマリキーの行に伸びており、ノンリレーショナルの矢印は、行からデータが格納されている場所に伸びている。言い換えれば、リレーショナルコンテキストにおいては、子が親をポイントし、ノンリレーショナルコンテキストにおいては、親が子をポイントする。ここで示されているのは、ノンリレーショナルkey-valueデータモデルは、リレーショナルの主-外部キーデータモデルの双対dualであるということである。上記のシステム、アーキテクチャ、環境などは、複数のコンポーネント間のやりとりに関して説明されている。このようなシステム及びコンポーネントは、本明細書において指定されたこれらのコンポーネント又はサブコンポーネント、指定されたコンポーネント又はサブコンポーネントの一部、及び/又は追加のコンポーネントを含み得ることを理解されたい。サブコンポーネントは、親のコンポーネント中に存在するというよりむしろ、他のコンポーネントと通信可能に結合されるコンポーネントとしても実装され得る。さらに、1つ以上のコンポーネント及び/又はサブコンポーネントは、組み合わされて1つのコンポーネントとなり、集合的な機能を提供し得る。システム、コンポーネント、及び/又はサブコンポーネントの間の通信は、push及び/又はpullモデルのいずれに従って達成され得る。説明を簡潔にするため、本明細書では具体的に言及していないが、当技術分野の当業者には公知であるように、コンポーネントは、1つ以上の他のコンポーネントとやりとりをすることもできる。さらに、上記に開示されたシステムや下記に開示される方法の様々な部分は、人口知能、機械学習、又は知識又はルールベースのコンポーネント、サブコンポーネント、プロセス、手段、方法論、メカニズム例えば、サポートベクターマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワークBayesianbeliefnetworks、ファジィ理論、データフュージョンエンジン、分類子classifiers等を含むか、又はこれらで構成されていてもよい。それらのコンポーネントにおいては特に、実行される或る特定のメカニズム又はプロセスを自動化し、これによりシステム及び方法の部分をより適用しやすくするとともに、より効率的そしてインテリジェントにすることが可能である。限定ではなく、例示であるが、最適化コンポーネント214は、そのようなメカニズムを用いて、クエリ表現の実行を効率化させる変更を決定又は推論し得る。上記に開示された例示のシステムを参考にして、図11から13に記載されたフローチャートを参照することにより、開示された主題に従って実装される方法がより理解され得る。説明を簡潔にするために、方法は、一連のブロックとして開示及び説明されているが、請求項に係る主題は、ここで開示されているブロックの順番に限定されるものではなく、ここで開示及び説明されているブロックの処理は、異なる順番、及び/又は同時に発生することもあり得ることを理解されたい。さらに、図示された全てのブロックが、ここで説明されている実施形態を実現するために必要とされるわけではない。図11を参照すると、オブジェクトモデルとkey-valueデータモデルとの間のマッピングを行う方法1100が図示されている。参照番号1110において、オブジェクトモデルに関する命令が取得される。例えば、命令は、アプリケーションデータを表現するオブジェクトに関する、作成、読み出し、更新、削除等に関するものであってもよい。番号1120において、命令は、オブジェクトモデルにおけるオペレーションからローカル又はリモート接続におけるkey-valueデータモデルにおけるオペレーションにマッピングされる。参照番号1130において、データは、マッピングされた命令の実行に応答して、key-valueデータモデルから受信される。例えば、命令がデータに対するクエリ又は要求である場合において、その結果のデータを受信することができる。番号1140において、受信されたデータはオブジェクトモデルに再びマッピングしなおされる。このようにして、プログラマやその他の人々は、オブジェクトモデルに対してオペレーションを指定し、その背景でシーンのマッピングが行われ、特定のkey-valueストアとのやりとりを容易にすることができる。さらには、1つ以上のワールドを命令が指定し、key-valueモデルが、1つ以上のワールドをサポートすることができる。図12は、データインストラクションを容易にする方法1200を図示している。参照番号1210において、key-valueワールドに対して指定されたクエリ演算子が、例えば、クエリ表現の例えば、クエリ表現を統合したプログラミング言語等の一部として特定される。ここでは、ワールドは、値と値の間、又は値の集合体と値の集合体の間における関係についての特定のコンテキストを表す様相論理の概念を参照する。ある意味においては、ワールドは、一意に識別される修飾子を用いてアドレスを明確にするアドレス空間に類似する。番号1220において、key-valueワールドに対してクエリ演算子の実行が開始される。参照番号1230において、クエリ演算子の実行に関連付けられた結果が返される。例えば、結果はプログラム言語のオブジェクトモデルにマッピングされて返される。図13は最適化の方法1300を示すフローチャートである。参照番号1310において、コンテキスト情報を、1つ以上のkey-valueワールド及びワールドにおけるデータのやりとりに関与する1つ以上のソースから受信し、取り出し、そうでなければ取得又は獲得することができる。参照番号1320において、1つ以上のkey-valueワールドがコンテキスト情報に応じて変更される。例えば、コンテキスト情報は、ワールドが閾値サイズを超過しており、コンテンツへのアクセスを最適化するのに2つのワールドに分割され得ることを示す。他の例では、コンテキストが2つのワールド間でかなりの量のマーシャリングが生じていることを示す場合に、2つのワールドを結合して、単一のワールドにすることができる。もちろん、変更を、特に、想定される使用シナリオの予測を含むその他のコンテキスト情報から推測される情報に応じて開始することもできる。本明細書で使用されているように、コンポーネント、システム等の用語や形式は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行されるソフトウェアのいずれかの、コンピューターに関連するエンティティを指すように意図されている。例えば、限定して解釈されるべきではないが、コンポーネントは、プロセッサにおいて実行されるプロセス、プロセッサ、オブジェクト、インスタンス、実行ファイル、実行されるスレッド、プログラム、及び/又はコンピューターであってもよい。例示するならば、コンピューターで実行されるアプリケーション及びコンピューターの双方がコンポーネントであり得る。1つ以上のコンポーネントは、実行されるプロセス及び/又はスレッド中にあり、1つのコンポーネントを、1つのコンピューターに局所化してもよく、及び/又は2つ以上のコンピューターに分散させてもよい。本明細書においては、実施例や事例、実例として提示されていることを示すように、例示という言葉や様々な形式の表現が使用されている。本明細書中において、例示として説明されている任意の態様又は設計について、他の態様又は設計に比して、必ずしも好ましく又は優位性を有するものとして解釈する必要はない。さらに、本明細書における実施例は、単に明確化や理解の一助となるために提示されているものであって、請求項に係る主題又はこの開示の関連する部分を制限又は限定するためのものではない。範囲が変更された無数の追加又は代替可能な実施例が提示され得るが、簡潔化のために省略されていることを理解されたい。本明細書においては使用されるとき、推論inference、推測するinferという用語は、全般的に、イベント及び/又はデータを通じてキャプチャされる観測値のセットから、システム、環境、及び/又はユーザーの状態について推測又は推論する過程について言及するものである。推論を用いて特定のコンテキスト又はアクションを特定し、又は、例えば、状態における確率分布を生成することができる。推論は、確率的なもの、つまり、データ及びイベントの考察に基づき、関心事項の状態における確率分布の計算である。推論は、イベント及び/又はデータのセットから、ハイレベルイベントを構成するために用いられる技術を指すこともある。そのような推論により、イベントが時間的近接性において相関性があるかないか、ならびにイベント及びデータは、1つ又は複数のイベント及びデータソースから発生したかどうかにかかわらず、観測されたイベント及び/又は格納されたイベントデータのセットから、新しいイベント又はアクションの構築が生み出される。様々な分類のスキーム及び/又はシステム例えば、サポートベクターマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク、ファジィ理論、データフュージョンエンジなどを、請求項に係る主題に関する、自動及び/又は推論されたアクションを実施することに関して用いることができる。さらに、本明細書においては、含むincludes、含むcontains、持つhas、持っているhavingの用語またはその変形が詳細な説明又は請求項のいずれかにおいて使用されているが、備えるcomprisingという用語が、請求項において変形語として用いられるときに解釈されるように、それらの用語は、備えるcomprisingという用語と同様に包括的なものとしていとされている。請求項に係る主題のコンテキストを提供するために、図14と以下の説明は、本主題における様々な態様が実施され得る適切な環境についての簡潔かつ一般的な説明を提供するように意図される。適切な環境は、しかしながら、単に例示であり、本発明の利用又は機能の範囲に関するいかなる限定をも提示するものではない。上記で開示されたシステム及び方法は、1つ以上のコンピューターで実行されるプログラムのコンピューター実行可能な命令の一般的なコンテキストで説明されているが、当業者であれば諸態様をその他のプログラムモジュールなどとの組み合わせで又は同等の方法で実装できることは理解され得るであろう。一般的に、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造、特定のタスクを実施するその他のもの及び/又は特定の抽象データタイプを実装するその他のものを含む。さらに、当業者であれば、上記のシステム及び方法は、例えば、シングルプロセッサー、マルチプロセッサー、又はマルチコアプロセッサーのコンピューターシステム、ミニコンピューティングデバイス、メインフレームコンピューター、ならびにパーソナルコンピューター、ハンドヘルドコンピューティングデバイス例えば、PDA、電話、時計等、マイクロプロセッサベース又はプログラマブル家庭用又は業務用電子機器などを含む、様々なコンピューターシステム構成において実施されることが理解されよう。同様に、諸実施形態を、通信ネットワークを通じて接続されたリモートの処理装置によってタスクが実行される、分散コンピューティング環境においても実施することができる。たとえ、請求項に係る主題の全ての態様をスタンドアロンのコンピューターで実施できなかったとしても、その一部は実施することができる。分散コンピューティング環境においては、プログラムモジュールを、ローカル及びリモートのメモリストレージデバイスのいずれか1つまたは双方に置くことができる。図14を参照すると、図示されているのは、例示の汎用コンピューター1410又はコンピューターデバイス例えば、デスクトップ、ラップトップ、サーバー、ハンドヘルド、プログラマブル家庭用又は業務用電子機器、セットトップボックス、ゲームシステム等である。コンピューター1410は、1つ以上のプロセッサ1420、メモリ1430、システムバス1440、大容量ストレージ1450、そして1つ以上のインターフェースコンポーネント1470を含む。システムバス1440は、少なくとも上記のシステムコンポーネントを通信可能に連結する。しかしながら、この最も簡略化された形態において、コンピューター1410は、さまざまなコンピューター実行可能な動作、命令、及び又はメモリ1430に格納されたコンポーネントを実行する、1つ以上のメモリ1430と接続されたプロセッサ1420を含むことができる。プロセッサ1420は、汎用プロセッサ、デジタルシグナルプロセッサDSP、特定用途向け集積回路ASIC、FPGAfieldprogrammablegatearray又はその他のプログラマブルな論理デバイス、個別のゲート又はトランジスタ論理回路、個別のハードウェアコンポーネント、あるいは本明細書で開示されている機能を実行するように設計されたものの任意の組み合わせで実装され得る。汎用プロセッサは、マイクロプロセッサであってもよく、あるいはまた、任意のプロセッサ、コントローラー、マイクロコントローラー、又は状態マシンstatemachineであってもよい。プロセッサ1420は、また、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、マルチコアプロセッサ1420、1つ以上のマイクロプロセッサとDSPコア等からなる組み合わせ、また、その他の構成として実装されていてもよい。コンピューター1410は、様々なコンピューター読取可能媒体を含み、又はやりとりをして、請求項に係る主題の1つ以上の態様を実施するようにコンピューター1410の制御を容易にすることができる。コンピューター読取可能媒体は、コンピューター1410がアクセスすることができる任意の利用可能な媒体とすることができ、揮発性及び不揮発性媒体、取り外し可能及び取り外し不能媒体を含む。限定ではなく例示であるが、コンピューター読取可能媒体は、コンピューター記憶媒体や通信媒体を備えていてもよい。コンピューター記憶媒体は、コンピューター読取可能命令、データ構造、プログラムモジュール、又はその他のデータ等の情報を記憶するための手段又は技術で実装される、揮発性及び不揮発性、取り外し可能及び取り外し不能媒体を含む。コンピューター記憶媒体は、限定ではないが、メモリデバイス例えば、ランダムアクセスメモリRAM、読み取り専用メモリROM、EEPROM等、磁気記憶装置例えば、ハードディスク、フロッピー登録商標ディスク、カセット、テープ等、光学ディスク例えば、コンパクトディスクCD、DVD等そして、半導体装置例えば、半導体ドライブSSD、フラッシュメモリドライブ例えば、カード、スティック、キードライブ等又はコンピューター1410からアクセス可能であり、所望の情報の格納に使用することができる任意の他の媒体を含む。通信用媒体は、典型的に、コンピューター読取可能な命令、データ構造、プログラムモジュール、又は搬送波やその他伝達メカニズムなどの変調されたデータ信号で他のデータを保持し、任意の情報伝送媒体を含む。変調されたデータ信号という言葉は、信号中の情報のエンコードに関する手法等によって設定又は変更された特徴の1つまたは複数を有する信号を意味する。限定ではなく例示であるが、通信用媒体は、有線ネットワーク又は直接有線接続等の有線媒体と、音響、RF、赤外線および等その他の無線媒体などの無線媒体を含む。上記の任意の組み合わせも、コンピューター読取可能媒体の範囲に含まれる。メモリ1430及び大容量ストレージ1450は、コンピューター読取可能媒体の例である。特定の構成及びコンピューターデバイスの種類に応じて、メモリ1430は、揮発性例えばRAM、不揮発性例えばROM、フラッシュメモリ又はそれらの組み合わせとすることができる。例として、コンピューターの起動中等にコンピューター1410中の各要素間において情報を転送する基本ルーチンを含む基本入出力システムBIOSは、不揮発性メモリに格納され、一方、揮発性メモリは、特にプロセッサ1420による処理を容易にするために外部キャッシュメモリとして機能し得る。大容量ストレージ1450は、メモリ1430に関連した大量のデータの格納のために、取り外し可能/取り外し不能、揮発性/不揮発性のコンピューター記憶媒体を含む。例えば、大容量ストレージ1450は、限定ではないが、1つ以上の装置、例えば磁気又は光学ディスクドライブ、フロッピーディスクドライブ、フラッシュメモリ、半導体ドライブ、またはメモリスティック等を含む。メモリ1430及び大容量ストレージ1450は、オペレーティングシステム1460、1つ以上のアプリケーション1462、1つ以上のプログラムモジュール1464、そしてデータ1466を含むか、または格納し得る。オペレーティングシステム1460は、コンピューター1410のリソースを制御し割り当てるように動作する。アプリケーション1462は、システム及びアプリケーションソフトウェアの一方又は双方を含み、メモリ1430及び/又は大容量ストレージ1450に格納されたプログラムモジュール1464及びデータ1466を通じて、オペレーティングシステム1460によるリソース管理を利用して、1つ以上のアクションを実施することができる。したがって、アプリケーション1462は、それにより提供されるロジックに従って、汎用コンピューター1410を、特別なコンピューターに変化させることができる。請求項に係る主題の全て又は一部を、標準的なプログラミング及び/又はエンジニアリング技術を使用して、開示された機能を実現するようにコンピューターを制御するようにソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを構成することにより実装することができる。限定ではなく例示であるが、マップコンポーネント110及びLINQコンポーネント210は、アプリケーショ1462の一部又は全てとすることができ、メモリ及び/又は大容量ストレージ1450に格納され、1つ以上のプロセッサ1420によって実行されるときにその機能が発揮される、1つ以上のモジュール1464及びデータ1466を含むことができる。ある特定の実施形態によれば、プロセッサ1420は、単一の集積回路の基板上にハードウェアとソフトウェアの双方を含む、言い換えれば統合した、システムオンチップSOC又は類似のアーキテクチャに対応し得る。ここでは、プロセッサ1420は、少なくともプロセッサ1420及びメモリ1430に類似するような1つ以上のプロセッサ及びメモリを含むことができる。一般的なプロセッサは、最小限のハードウェア及びソフトウェアを有し、外部のハードウェア及びソフトウェアの動作に大幅に依存する。一方、SOC実装のプロセッサは、よりパワフルであり、外部のハードウェア及びソフトウェアに最小限の依存で又は依存することなく特定の機能を実施し得るハードウェアおよびソフトウェアを組み込む。例えば、マップコンポーネント110、LINQコンポーネント210及び/又は関連する機能を、SOCアーキテクチャのハードウェア内に組み込むことができる。コンピューター1410はまた、システムバス1440に通信可能に接続されコンピューターとのやりとりを容易にする1つ以上のインターフェースコンポーネント1470も含む。例示であるが、インターフェースコンポーネント1470は、ポート例えば、シリアル、パラレル、PCMCIA、USB、ファイヤーワイヤー等やインターフェースカード例えば、サウンド、ビデオ等等であってもよい。ある例示的な実装として、インターフェースコンポーネント1470は、ユーザーがコマンドや情報をコンピューターに1つ以上の入力装置例えば、マウス等のポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、カメラ、その他等を介して入力するのを可能にするユーザー入力/出力インターフェースとして構成されていてもよい。その他の例示的な実装として、インターフェースコンポーネント1470は、出力をディスプレイ例えば、CRT、LCD、プラズマ等、スピーカー、プリンター、及び/又はその他のコンポーネントに対して供給するための出力周辺インターフェースとして構成されていてもよい。さらに、インターフェースコンポーネント1470は、図示されていないその他のコンピューターデバイスとの有線又は無線通信リンクを介した通信を可能とする、ネットワークインターフェースとして構成されていてもよい。説明された内容は、請求項に係る主題の諸態様の例示を含む。当然、請求項に係る主愛について説明するために、コンポーネント又は方法についてのすべての想定し得る組み合わせを開示することは不可能であるが、当業者であれば、開示された主題のさらなる組み合わせや順序変えが可能であることを認識し得る。したがって、開示された主題は、添付された特許請求の範囲の思想及び範囲内にある、全てのそのような代替、変更、バリエーションが包含されることが意図されている。"