(57)【特許請求の範囲】
【請求項１】
メモリに記憶されたコンピュータ実行可能命令を実行するように構成された少なくとも１つのプロセッサによって実施されるデータモデリングの方法であって、
前記プロセッサが、第１のデータモデルから第２のデータモデルを生成するステップであって、前記第２のデータモデルが前記第１のデータモデルのカテゴリ的双対となるように、前記第１のデータモデルの１又は複数の形態のソースオブジェクトとターゲットオブジェクトを入れ替え、前記第１のデータモデルの合成形態の順序を入れ替えることによって、前記第１のデータモデルから前記第２のデータモデルを生成するステップ
を含むことを特徴とする方法。
【請求項２】
前記プロセッサが、前記第２のデータモデルを二重化することによって、前記第２のデータモデルを前記第１のデータモデルに変形するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記プロセッサが、リレーショナルデータモデルから非リレーショナルデータモデルを生成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記プロセッサが、前記リレーショナルデータモデルからｋｅｙ−ｖａｌｕｅモデルを生成するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記プロセッサが、非リレーショナルデータモデルからリレーショナルデータモデルを生成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記プロセッサが、構造化データモデルから非構造化データモデルを生成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記プロセッサが、ＸＭＬデータモデルからドキュメントデータモデルを生成するステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
データモデルの変形を容易にするシステムであって、
メモリデバイスに結合された物理的プロセッサであって、前記メモリデバイスに記憶された以下のコンピュータ実行可能コンポーネントを実行するように構成された物理的プロセッサと、
第１のデータモデルを前記第１のデータモデルのカテゴリ的双対である第２のデータモデルに変形するように構成され、前記第１のデータモデルの１又は複数の形態のソースオブジェクトとターゲットオブジェクトを入れ替え、前記第１のデータモデルの合成形態の順序を入れ替えて、前記第２のデータモデルを生成する変形コンポーネントと
を備えたことを特徴とするシステム。
【請求項９】
前記第１のデータモデルは、リレーショナルデータモデルであることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記第１のデータモデルは、非リレーショナルデータモデルであることを特徴とする請求項８に記載のシステム。
【請求項１１】
前記第１のデータモデルは、構造化データモデルであることを特徴とする請求項８に記載のシステム。
【請求項１２】
前記第２のデータモデルは、ＸＭＬデータモデルであることを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記第２のデータモデルは、非構造化データモデルであることを特徴とする請求項８に記載のシステム。
【請求項１４】
前記第２のデータモデルは、ｋｅｙ−ｖａｌｕｅデータモデルであることを特徴とする請求項８に記載のシステム。
【請求項１５】
前記第２のデータモデルは、ドキュメントデータモデルであることを特徴とする請求項８に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
データモデルは、どのようにデータが記憶され、アクセス可能であるかを記述している。より正式には、データモデルは、データエントリおよびこれらのデータエントリ間の関係を定義している。データモデルの主目的は、データの定義とフォーマットを用意して、大量のデータの管理と処理を容易にすることである。データモデルの１つのアプリケーションとしてデータベースモデルがあり、このモデルはどのようにデータベースまたはその他のストア（store）が構造化され、利用されるかを定義している。データベースモデルはリレーショナルであることも、非リレーショナルであることもある。
【０００２】
リレーショナルモデル、もっと具体的には、リレーショナルデータベースでは、データは１つまたは２つ以上のテーブルの形で構造化されている。テーブルは、複数の列(column)と行(row)からなる関係であり、そこでは名前を付けた列は、特定のエンティティインスタンス(entity instance)に対する属性(attribute)および行キャプチャ(row capture)データと呼ばれている。例えば、テーブルは、書籍のような特定のエンティティに関する情報を、タプル(tuple)とも呼ばれる行および列でキャプチャすることができる。列は、書籍のタイトル、著者および発行年度のようなエンティティの種々の属性を特定している。行は、特定の書籍のようなエンティティのインスタンスをキャプチャしている。言い換えれば、テーブル内の各行は特定の書籍の属性を表わしている。さらには、テーブルは、２つまたはそれ以上のテーブルをまとめてリンクするのを可能にする主キー(primary key)と外部キー(foreign key)を含むことができる。
【０００３】
非リレーショナルモデルの多くの実装(implementation)の中で、ｋｅｙ−ｖａｌｕｅ（キーバリュー）モデルは最もポピュラーなモデルの１つである。ｋｅｙ−ｖａｌｕｅデータベースまたはストアは、ユニークなキーを１つまたは２つ以上の値のセットにマッピングする単純なデータモデルを表わしている。より具体的には、ｋｅｙ−ｖａｌｕｅストアは、値、および格納した値のロケーションをキーに基づいて突き止めるインデックスを格納している。例えば、書籍のデータのタイトル、著者、または発行の１つを特定するキーを突き止めることができる。
【０００４】
リレーショナルデータベースはＳＱＬデータベースと呼ばれることが多いのに対して、一部の非リレーショナルデータベースはＮｏＳＱＬデータベースまたはストアと呼ばれている。ＳＱＬは構造化照会言語(Structured Query Language)を表わしており、これはリレーショナルデータベース内のデータをクエリし、更新するために利用される主要言語である。ＳＱＬがリレーショナルデータベースと関連して利用されるとき、そのデータベースはＳＱＬベースのリレーショナルデータベースと呼ぶことができる。しかし、もっと多くの場合、ＳＱＬベースのリレーショナルデータベースは単にＳＱＬデータベースと呼ばれ、リレーショナルデータベースの同義語として使用されている。言い換えれば、ＮｏＳＱＬの用語は、ｋｅｙ−ｖａｌｕｅストアのような非リレーショナルデータベースまたはストアの同義語として使用されているが、ｋｅｙ−ｖａｌｕｅストアに限定されない。
【０００５】
ＳＱＬデータベースおよびＮｏＳＱＬデータベースには、ＣＡＰ定理によってハイレベルでキャプチャされるいくつかの利点と欠点があり、ＣＡＰ定理は、コンシステンシ（Ｃ）、アベイラビリティ（Ａ）およびパーティショントレランス（Ｐ）のうち、どの時点でも保証できるのは２つだけであることを述べている。コンシステンシ(consistency)は、更新などのオペレーションのあとも、一貫性のある状態を維持するシステムの特性を表わしている。アベイラビリティ(availability)は、障害が存在していても、ある期間オペレーション状態のままにあることに関係し、パーティショントレランス(partition tolerance)は、ネットワークパーティションにまたがって動作するシステムの能力を表している。代表例として、ＳＬＱデータベースの設計上の選択は、パーティショントレランスに優先してコンシステンシとアベイラビリティを選択することであり、ＮｏＳＱＬストアの設計上の選択は、パーティショントレランスとアベイラビリティを優先してコンシステンシを落とすことである。言い換えれば、ＮｏＳＱＬストアはスケーラビリティ(scalability)をとるためにコンシステンシを犠牲にしており、他方、ＳＱＬデータベースはコンシステンシをとるためにスケーラビリティを犠牲にしている。
【０００６】
ネットワークベースまたは「クラウド」コンピューティングが出現するのに伴って、ＮｏＳＱＬストアは、少なくともそのスケーラビリティのために近年非常に注目を受けている。これと同時に、業界の一部は、このコンテキストまたはその他のコンテキストにおいてＳＱＬデータベースの将来性について関心を示している。
【発明の概要】
【０００７】
以下は、開示した主題のいくつかの態様の基本的理解が得られるように単純化した概要説明を提示している。この概要説明は広範囲に概観したものではない。この概要説明はキーとなるエレメントまたは重要なエレメントを特定するものでもなく、請求項に記載の主題の範囲を限定するものでもない。その唯一の目的は、以下に提示されるより詳細な説明の序文としていくつかの概念を単純化した形で提示することである。
【０００８】
簡単に説明すると、本開示事項は、一般的にデータモデルの二重化(dualization)に関係している。第１のデータモデルが与えられているとき、第１のデータモデルの数学的双対(mathematical dual)である第２のデータモデルを生成することができる。従って、双対第２のデータモデルがそれ自体二重化されていれば、第１のデータモデルが返されることになる。例を挙げると、リレーショナルデータベースからは、双対非リレーショナルデータモデルが生成できるが、この例に限定されない。より具体的には、ｋｅｙ−ｖａｌｕｅデータモデルを生成することができ、そのことは、結果的にはＮｏＳＱＬデータモデルがＳＱＬデータモデルの双対であることを示している。
【０００９】
上記目的および関連目的を達成するために、請求項に記載の主題のある種の例示的態様が下述する説明および添付図面と関連付けて本明細書に記載されている。これらの態様は、主題が実施されることのある種々の方法を示したものであり、そのすべては請求項に記載の主題の範囲に含まれるものである。その他の利点および新規な特徴は、添付図面と関連付けて考慮されるとき下述する詳細説明から明らかになることがある。
【図面の簡単な説明】
【００１０】
【図１】データモデリングシステムを示すブロック図である。
【図２】データモデル間の抽象的変形を示す図である。
【図３】例示リレーショナル表現を示す図である。
【図４】テーブル間のポインタを含む例示リレーショナル表現を示す図である。
【図５】例示非リレーショナルｋｅｙ−ｖａｌｕｅ表現を示す図である。
【図６】概念化したｋｅｙ−ｖａｌｕｅ表現を示す図である。
【図７】データモデル生成の方法を示すフローチャート図である。
【図８】データモデルを二重化する方法を示すフローチャート図である。
【図９】本開示事項の態様に対して適切な動作環境を示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細は、一般的にデータモデルの二重化を目的としている。データモデルは、別のデータモデルを二重化することによって生成することができる。言い換えれば、第１のデータモデルは第２のデータモデルに変形することができ、その場合第２のデータモデルは第１のデータモデルの数学的双対(mathematical dual)である。例えば、リレーショナルデータモデルからは、ｋｅｙ−ｖａｌｕｅ（キーバリュー）ストアのような非リレーショナルデータモデルが結果として生成されること可能であり、このことはＮｏＳＱＬデータモデルがＳＱＬデータモデルの双対であることを証明している。
【００１２】
本明細書の中で用いられている「双対(dual)」の用語およびその種々の形体は、その用語がカテゴリ理論に関する限り数学的二重性(duality)を指すことを目的としている。もっと具体的には、二重性は、カテゴリ“Ｃ”のプロパティおよび反対カテゴリ“Ｃop”の双対プロパティとの間の対応性である。カテゴリ“Ｃ”に関するステートメントが与えられているとき、各形態(morphism)のソースとターゲットを入れ替える（マッピング）と共に２形態を合成する順序を入れ替えることにより、反対カテゴリ“Ｃop”に関して対応する双対ステートメントを得ることができる。例えば、カテゴリ“Ｃ”はデータモデルに対応付けることができ、反対カテゴリ“Ｃop”は双対または共同データモデル(co-data model)を指すことができる。「二重化」とは、例えば、データモデルから双対を生成することである。
【００１３】
次に、添付図面を参照して本開示事項の種々の態様についてより詳しく説明するが、類似符号は図面全体を通して類似または対応するエレメントを指している。なお、当然に理解されるように、図面および図面に関する詳細説明は、請求項に記載の主題を開示した特定の形体に限定するものではない。もしろ、その意図は、請求項に記載の主題の精神および範囲に属するすべての変更、等価および代替を包含することである。
【００１４】
先ず図１を参照すると、データモデリングシステム１００が示されている。このデータモデリングシステム１００は、第１のデータモデルを受信し、取り出し(retrieve)、さもなければ、取得(obtain)または獲得(acquire)して、第１のデータモデルを二重化することによって第２のデータモデルを生成する変形(transformation)コンポーネント１１０を含んでいる。別の言い方をすれば、第２のデータモデルは第１のデータモデルの数学的双対(mathematical dual)である。さらに、変形コンポーネント１１０は、第１のデータモデルの双対である第２のデータモデルを受信し、取り出し、さもなければ取得または獲得し、第２のデータモデルを二重化することによって第２のデータモデルを第１のデータモデルに変形する。この関連性の結果として、第１のデータモデルは単純にデータモデルと呼ぶことができ、第２のデータモデルは双対または共同データモデルと呼ぶことができる。従って、左から右に向かって、変形コンポーネント１１０はデータモデル（Ｄ）を共同データモデル（ｃｏ（Ｄ））に変形する。言い換えれば、データモデル（Ｄ）の関数として共同データモデル（ｃｏ（Ｄ））を生成する。右から左に向かって、変形コンポーネント１１０は、共同データモデル（ｃｏ（Ｄ））をデータモデルに変形する（例えば、ｃｏ（ｃｏ（Ｄ））→Ｄ）。言い換えれば、共同データモデル（ｃｏ（Ｄ））の関数としてデータモデル（Ｄ）を生成する。
【００１５】
変形コンポーネント１１０は、エンティティ(entity)コンポーネント１１２および関係(relationship)コンポーネント１１４を含んでいる。データモデルはエンティティと関係のセット、言い換えれば、エンティティ間の関連(association)を含んでいる。エンティティコンポーネント１１２は、例えば、第１のデータモデルのエンティティから双対または共同エンティティを生成するように構成されている。同様に、関係コンポーネント１１４は、例えば、第１のデータモデルに指定された関係から双対または共同関係を派生することができる。さらに、関係コンポーネント１１４は、例えば、第１のデータモデルから関係または関連の双対合成(dual composition)を生成することができる。
【００１６】
図２は、明確性と理解を容易にするために、２つのデータモデル間の抽象的変形を示している。より具体的には、第１のデータモデル２００からは、第２のデータモデ２１０が結果として得られ、その逆も同じである。第１のデータモデルは３つのエンティティ“Ｓ”２０２、“Ｔ”２０４および“Ｇ”２０６を含んでいる。これらのエンティティ間の関係は矢印で示されている。より具体的は、関係“Ｆ”は“Ｓ”２０２から“Ｔ”２０４に向かっており、関係“Ｇ”は“Ｔ”２０２から“Ｇ”２０６に向かっている。“Ｇ”は、“Ｇ”２０２から出発し、“Ｇ”２０２に戻る同一性(identity)関係“ＩＤ”も含んでいる。さらに、合成(composition)関係“Ｆ；Ｇ”(F compose G)は“Ｓ”２０２と“Ｇ”２０６の間に存在している。第１のデータモデル２００を二重化するために、反対エンティティが識別され、反対エンティティ間の関係、より正式には形態が逆にされる。図示のように、第２のデータモデル２１０は、エンティティ“ＣＯ−Ｓ”２１２、“ＣＯ−Ｔ”２１４および“ＣＯ−Ｇ”２１６を含んでいる。さらに、形態を表す矢印は逆にされ、このことは形態のソースとターゲットの変化を表わしている。例えば、第１のデータモデル２００の合成関係“Ｆ；Ｇ”(F compose G)は、第２のデータモデル２１０では“Ｇ；Ｆ”(G compose F)になる。真の双対として、第２のデータモデル２１０が二重化されれば、その結果は第１のデータモデル２００である。
【００１７】
以下は、図１の変形コンポーネント１１０によって実行できる例示の変形プロセスを詳細に説明したものである。ここでは、双対がリレーショナルデータベースに関して派生される。言い換えれば、第１のデータモデルはリレーショナルモデルである。以下に図示するように、その結果は、つまり、第２のデータモデルは非リレーショナルモデル、より具体的には、ｋｅｙ−ｖａｌｕｅ（キーバリュー）モデルにすることができる。
【００１８】
図３は、プロダクト情報を記憶するための例示の関係表現を示している。図示のように、主キーと外部キーによって共にリンクされた３つのテーブルが存在している。プロダクトテーブル３１０は、タイトル、著者、発行年度、およびページ総数などのプロダクト情報に関する他の列(column)と共に、主キー“ＩＤ”を提供している。レーティングテーブル３２０は、プロダクトレーティング情報およびプロダクトテーブル３１０の単独レコードを参照する外部キー“ＰＲＯＤＵＣＴ  ＩＤ”を提供している。同様に、キーワードテーブル３３０は、プロダクトに関連するキーワードを提供し、プロダクトテーブル３１０の対応するレコードに逆に指している外部キー“ＰＲＯＤＵＣＴ  ＩＤ”を含んでいる。
【００１９】
図４を参照して簡単に説明すると、図３の例示の関係コンポーネント３００が、外部キーと主キーの間に挿入されたポインタと共に示されている。具体的には、ポインタ４１０は、レーティングテーブル３２０の外部キー“ＰＲＯＤＵＣＴ  ＩＤ”からプロダクトテーブル３１０の主キー“ＩＤ”３１２によって識別された対応するレコードを指している。同様に、ポインタ４２０は、キーワードテーブル３３０の外部キー“ＰＲＯＤＵＣＴ  ＩＤ”からプロダクトテーブル３１０の主キー“ＩＤ”３１２によって識別された対応するレコードを指している。
【００２０】
図５は、図３および図４の例示の関係コンポーネントに対して提供された同じデータの例示の非リレーショナルｋｅｙ−ｖａｌｕｅ表現５００を示している。ここでは、５１０、５２０、および５３０のような行(row)は、値、つまり、スカラー値を指すポインタとして示したどちらかのキーを記憶することができる。例えば、行５１０は、タイトル、著者、キーワードのキー、およびレーティングおよび発行年とページ総数のスカラー値を含むことができる。行５２０は、３つのキーワードにマッピングする３つのキーワードを含み、行５３０は２つのレーティング表現にマッピングする２つのキーを含んでいる。
【００２１】
図６を参照して説明すると、例示の非リレーショナルｋｅｙ−ｖａｌｕｅ表現６００が示されている。ここでは、行がスカラー値とキーを含むことを許容するのではなく、その制約は、種々タイプのデータを許容するように緩和されている。図５の行５１０に対応する行６１０は、ここではタイトルと著者の値およびキーワードとレーティングの両方のキー６２０と６３０の集まりを、それぞれ含んでいる。さらに具体的には、キー６２０はキーワードを指し、キー６３０はレーティング情報を指している。
【００２２】
図４の例示リレーショナル表現を図６の例示非リレーショナル表現と比較するとわかるように、それらを区別する主な特徴は矢印が逆であることである。より具体的には、リレーショナルの矢印は外部キーのある行から対応する主キーのある行に向かっており、非リレーショナルの矢印は行からデータが記憶されている個所のロケーションに向かっている。言い換えれば、リレーショナルのコンテキストでは、子がその親を指しており、非リレーショナルのコンテキストでは、親がその子を指している。ここで示されているのは、非リレーショナルのｋｅｙ−ｖａｌｕｅデータモデルがリレーショナルの主キーと外部キーのデータモデルの双対であることである。したがって、ＮｏＳＱＬデータモデルは、ＳＱＬデータモデルの数学的双対である。
【００２３】
より正式には、リレーショナルデータモデルでは、エンティティ（ｅ）は次のように定義することができる。すなわち、テーブル内の“∀ｅ”、e.k≠e’.k”として定義することができる。
ただし、列はスカラー値である。形態では、
【００２４】
【数１】
0005873498.tif 000002
【００２５】
および“ｅ１．Ｆｆｋ＝ｅ２．Ｆｐｋ”。非リレーショナルデータモデルのコンテキストでは、エンティティ（ｅ）はドメイン(Lookup)における“∃ｋ”、“Lookup[k]= v”として定義することができ、形態は“ｅ１←ｅ２”、Lookup[c2.k] = e1として定義される。さらに、関係または関連の合成では、順序が次のように逆にされる。すなわち、“ｃｏ（Ｆ；Ｇ）＝ｃｏ（Ｇ）；ｃｏ（Ｆ）”。より簡単には、リレーショナルモデルエンティティ内のワードはユニークな主キーをもつ行であり、２つのエンティティ“e１”と“e２”は、“e１”と“e２”の間に直接的または間接的な主キーと外部キーの関係があれば、関係付けられている。非リレーショナルまたはｋｅｙ−ｖａｌｕｅモデルでは、エンティティはストア内のキーを通して見つけることができる値であり、２つのエンティティ“e１”と“e２”は、ストアを通してキーによって直接的または間接的にリンクされていれば関係付けられている。
【００２６】
二重性には多くの結果がある。具体的には、ステートメント“Ｔ”が“Ｃ”において真であれば、その双対“ｃｏ（Ｔ）”は“ｃｏ（Ｃ）”において真である。リレーショナルまたはＳＱＬデータモデルおよび非リレーショナルまたはＮｏＳＱＬデータモデルに関して、結果のいくつかが以下の表１に要約されている。
【００２７】
【表１】
0005873498.tif 000003
【００２８】
さらに、ＳＱＬデータモデルとＮｏＳＱＬデータモデルは、一部の人が示唆するように善と悪のような対立関係にない。むしろ、これらの２つのデータモデルは、調和して共存でき、相互に変形できる反対関係にある。
【００２９】
さらに、重要なことは、ＮｏＳＱＬデータモデルの形式化(formalization)が発見されなかったことである。ＳＱＬデータモデルの形式化以前は、リレーショナルデータモデルと漠然に呼ぶことができるものに対して作業が行なわれてきたが、いくつかのアドホックな実装が存在しており、業界は、特にどの実装にも集中していなかった。今日まで急速に前進しており、その事情は、現在データモデルがＮｏＳＱＬであることを除けば完全に類似している。ＮｏＳＱＬをＳＱＬの双対として形式化することにより、現在では、その作業はこのバージョンのデータモデルに集中することが可能になっている。
【００３０】
明確化と簡潔化の目的のために、リレーショナルデータモデルと非リレーショナルデータモデル間の変形について詳細に説明してきたが、請求項に記載の主題はそのことに限定されない。むしろ、その意図は、二重化の結果得られるすべてのデータモデルを包含することである。例を挙げると、構造化データモデルは非構造化データモデルに変形することができ、またはそれを生成することができ、その逆も同じであるが、この例に限定されない。例えば、図１の変形コンポーネント１１０は、ＸＭＬ(eXtensible Markup Language)データモデルを入力として受信し、ドキュメントデータモデルを出力することができ、そこではドキュメントまたはオブジェクト（データアイテム）は、迅速かつ効率的にクエリを行なうために索引（インデックス）付けされている。
【００３１】
さらに、注目すべきことは、図１の変形コンポーネント１１０が自動的にまたは半自動的に動作できることである。自動モードでは、変形コンポーネント１１０は第１のデータモデルを受信し、双対第２のデータモデルを自動的に出力することができる。これとは別に、半自動モードでは、変形コンポーネント１１０はユーザからの入力を求めて、双対データモデルの生成を容易にしている。ある実装では、例えば、変形コンポーネント１１０は、二重化に関してユーザによるデータモデリングを支援するツールとなることができる。
【００３２】
上述のシステム、アーキテクチャ、環境などは、複数のコンポーネント間のやりとりに関して説明してきた。このようなシステムおよびコンポーネントは、これらのコンポーネントまたはその中で指定されたサブコンポーネント、指定されたコンポーネントまたはサブコンポーネントの一部、および／または追加のコンポーネントを含むことができることを理解されたい。サブコンポーネントは、親コンポーネント内に含まれるのではなく通信可能に他のコンポーネントに結合されたコンポーネントとして実現することも可能である。さらに、１つまたは２つ以上のコンポーネントおよび／またはサブコンポーネントは、単一のコンポーネントになるように結合されて集合的機能性を提供することがある。システム、コンポーネントおよび／またはサブコンポーネント間の通信は、プッシュ(push)モデルおよび／またはプル(pull)モデルに従って実行することができる。コンポーネントは、簡潔化のために本明細書に特定して記載していないが、この分野の当業者に知られている１つまたは２つ以上の他のコンポーネントとやりとりすることもある。
【００３３】
さらに、認識されるように、開示した上記のシステムおよび下記の方法の種々の部分は、人工知能(artificial intelligence)、機械学習(machine learning)、または知識またはルールベースのコンポーネント、サブコンポーネント、プロセス、手段、方法またはメカニズム（例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアン信念ネットワーク(Bayesian belief network)、ファジーロジック(fuzzy logic)、データフュージョンエンジン(data fusion engine)、クラシファイヤ(classifier)など）を含むことも、これらで構成することもできる。中でもこのようなコンポーネントは、システムおよび方法の一部をより適応化すると共に効率化およびインテリジェントにするためにこれらのコンポーネントによって実行されるある種のメカニズムまたはプロセスを自動化することができる。例を挙げると、変形コンポーネント１１０またはその１つまたは２つ以上のサブコンポーネントは、このようなメカニズムを採用してデータモデルのプロパティおよび双対データモデルの特徴を効率的に判断し、さもなければ推論することができるが、その例には限定されない。
【００３４】
上記に説明した例示システムに鑑みて、開示した主題に従って実現することができる方法は、図７および図８のフローチャートを参照するとよりよく理解されよう。説明の単純化の目的のために、これらの方法は一連のブロックとして示され、説明されているが、当然に理解および認識されるように、請求項に記載の主題は、図示され、本明細書に記載されているものとは、一部のブロックが異なる順序でおよび／または他のブロックと同時並行に現れることがあるように、ブロックの順序には限定されない。さらに、本明細書に以下に記載の方法を実現するために図示のブロックのすべてが必要になるとは限らない。
【００３５】
図７を参照すると、データモデル生成の方法７００が示されている。参照符号７１０において、第１のデータモデルが受信され、取り出され、さもなければ取得または獲得される。符号７２０において、第１のデータモデルは双対第２のデータモデルに変形されるか、言い換えればその生成のために使用される。例を挙げると、主キーと外部キーを含む第１のリレーショナルデータモデルは、非リレーショナルｋｅｙ−ｖａｌｕｅデータモデルに変形されるか、またはその生成のために使用されることができるが、その例に限定されない。この例は、既知の第１のデータモデルが特定形体の別のデータモデルに変形され、双対第２のデータモデルがそれ自体二重化されていれば、その結果として第１のデータモデルが得られることを示している。これが驚きの結果であるのは、これらの２つのデータモデルが少なくとも業界の一部によって正反対であると考えられていたからである。もちろん、データモデル二重化の結果は、驚きの結果または目立たない結果を等しくもつ、完全に新しく、かつ、以前には認識されなかったデータモデルである。
【００３６】
図８は、データモデルを二重化する方法８００を示すフローチャート図である。参照符号８１０において、第１のエンティティから第２のエンティティが派生され、この場合第２のエンティティは第１のエンティティの双対である。参照符号８２０において、エレメント間の双対関係が、例えば「矢印を逆にする」（例えば、Ｓ→ＲをＲ←Ｓにする）ことによって定義される。符号８３０において、双対合成関係が、例えば「矢印を逆にすること」であり、合成の順序を逆にすることであると判断される（例えば、F compose GからG compose Fに）。
【００３７】
本明細書で用いられている「コンポーネント」および「システム」の用語ならびにその用語の種々の形体は、コンピュータ関連エンティティを指すことを目的としており、これはハードウェアであることも、ハードウェアとソフトウェアの組み合わせであることも、ソフトウェアであることも、実行中のソフトウェアであることもある。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、インスタンス、実行可能コード(executable)、実行スレッド、プログラム、および／またはコンピュータであることがあるが、これらに限定されない。図例として、コンピュータ上で実行されるアプリケーションとそのコンピュータは、どちらもコンポーネントにすることができる。１つまたは２つ以上のコンポーネントはプロセスおよび／または実行スレッド内に置かれることがあり、またコンポーネントは１つのコンピュータ上に置かれていることも、および／または２つまたは３つ以上のコンピュータ間に分散されていることもある。
【００３８】
「例示」の用語またはその種々の形体は、本明細書では、例、事例(instance)または図例(illustration)となることを意味するために用いられている。「例示」として本明細書に記載されているどの態様または設計も、他の態様または設計よりも好ましいまたは有利であると必ずしも解釈される必要がない。さらに、例が提供されているのは、単に明確化を目的としており、請求項に記載の主題またはこの開示事項の関係部分をどのようにも限定または制約することを意味していない。当然に認識されるように、範囲を変更する無数の追加または代替例を提示することも可能であったが、これらの例は簡潔化のために省略されている。
【００３９】
本明細書で用いられている「推論(inference)」または「推論する(infer)」の用語は、イベントおよび／またはデータを通してキャプチャされるときの観察セットからシステム、環境、および／またはユーザのステート（状態）について推論(reasoning)し、またはそのステートを推論(inferring)するプロセスを一般的に指している。推論は、特定のコンテキストまたはアクションを識別するために採用することも、例えば、ステート上の確率分布を生成することもできる。推論は確率に基づくことができる。すなわち、関心のあるステート上の確率分布をデータとイベントに基づいて計算することができる。推論は、イベントおよび／またはデータのセットからより高レベルのイベントを合成するために採用される手法を指すこともできる。このような推論の結果として、イベントが時間的に密接に近接して相互関係があるかどうかに関係なく、およびイベントとデータが１つまたは複数のイベントとデータソースに由来するかどうかに関係なく、観察したイベントおよび／またはストアしたイベントデータのセットから新しいイベントまたはアクションが構築される。種々の分類体系および／またはシステム（例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアン信念ネットワーク、ファジロジック、データフュージョンエンジンなど）は、請求項に記載した主題に関連する自動的および／または推論したアクションと関連付けて採用することができる。
【００４０】
さらに、「含む(includes)」、「収容する(contains)」、「持つ(has)」、「持っている(having)」の用語またはこれらの変形が詳細説明または請求項のどちらかで用いられている限りにおいて、これらの用語は、「備える(comprising)」の用語が請求項において移行語として採用されるとき解釈されるように、「備える」の用語と同じように包含的であることを目的としている。
【００４１】
請求項に記載の主題に関するコンテキストを提供するために、図９ならびに以下の説明は、主題の種々の態様が実現可能である適当な環境の簡単な概要説明を提供することを目的としている。なお、適当な環境は単なる例であり、使用または機能性の範囲についていかなる制限も示唆することを目的としていない。
【００４２】
上記に開示したシステムおよび方法は、１つまたは２つ以上のコンピュータ上を走行するプログラムのコンピュータ実行可能命令の一般的なコンテキストのもとで説明されており、当業者ならば認識されるように、その態様は他のプログラムモジュールなどと組み合わせて実現することも可能である。一般的に、プログラムモジュールとしては、中でも、特定のタスクを実行し、および／または特定の抽象データ型を実現するルーチン、プログラム、コンポーネント、データ構造がある。さらに、当業者であれば認識されるように、上記のシステムおよび方法は種々のコンピュータシステム構造と共に実行することができ、その構成の中には、シングルプロセッサ、マルチプロセッサまたはマルチコアプロセッサのコンピュータシステム、ミニコンピューティングデバイス、メインフレームコンピュータのほかに、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス（例えば、ＰＤＡ(personal digital assistant)、電話、時計など）、マイクロプロセッサベースまたはプログラマブルコンシューマまたはインダストリアルエレクトロニクスなどが含まれている。一部の態様は分散コンピューティング環境で実施することも可能であり、そこでは通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行されている。なお、請求項に記載の主題のすべてはないとしても、その一部の態様がスタンドアロンコンピュータ上で実行されことが可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートのメモリストレージデバイスの一方に置かれていることもあれば、両方に置かれていることもある。
【００４３】
図９を参照すると、汎用コンピュータ９１０またはコンピューティングデバイス（例えば、デスクトップ、ラップトップ、サーバ、ハンドヘルド、プログラマブルコンシューマまたはインダストリアルエレクトロニクス、セットトップボックス、ゲームシステムなど）の例が示されている。コンピュータ９１０は、１つまたは２つ以上のプロセッサ９２０、システムメモリ９３０、システムバス９４０、マスストレージ９５０および１つまたは２つ以上のインタフェースコンポーネント９７０を含んでいる。システムバス９４０は、少なくとも上記システムコンポーネントを通信可能に結合している。なお、当然に認識されるように、最も単純な形体では、コンピュータ９１０は、システムメモリ９３０に結合されていて、種々のコンピュータ実行可能アクション、命令および／またはコンポーネントを実行する１つまたは２つ以上のプロセッサ９２０を含むことができる。
【００４４】
プロセッサ（または複数）９２０は、汎用プロセッサ、ＤＳＰ(digital signal processor)、ＡＳＩＣ(application specific integrated circuit)、ＦＰＧＡ(field programmable gate array)またはその他のプログラマブルロジックデバイス、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェアコンポーネント、または本明細書に記載した機能を実行するように設計されたこれらの任意の組み合わせと共に実現することができる。汎用プロセッサはマイクロプロセッサであることがあるが、代替的には、プロセッサは任意のプロセッサ、コントローラ、マイクロコントローラまたはステートマシンであることがある。プロセッサ（または複数）は、コンピューティングデバイスの組み合わせとして、例えば、ＤＳＰおよびマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、マルチコアプロセッサ、ＤＳＰと併用される１つまたは２つ以上のマイクロプロセッサ、またはその他のかかる構成として実現されることもある。
【００４５】
コンピュータ９１０は、種々のコンピュータ可読媒体を含むか、さもなければ、これらの媒体とやりとりして、請求項に記載の主題の１つまたは２つ以上の態様を実現するためにコンピュータ９１０の制御を容易にすることができる。コンピュータ可読媒体は、コンピュータ９１０によってアクセス可能であって、揮発性媒体と不揮発性媒体および取り外し可能媒体と取り外し不能媒体を含む利用可能な媒体ならば、どの媒体であってもよい。例を挙げると、コンピュータ可読媒体としては、コンピュータ記憶媒体と通信媒体があるが、この例に限定されない。
【００４６】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータのような情報を記憶するために任意の方法またはテクノロジで実現された揮発性と不揮発性であって、取り外し可能と取り外し不能の媒体がある。コンピュータ記憶媒体としては、メモリデバイス（例えば、ＲＡＭ(random access memory、ＲＯＭ(read-only memory)、ＥＥＰＲＯＭ(electrically erasable programmable read-only memory)など)、磁気記憶デバイス（例えば、ハードディスク、フロッピディスク、カセット、テープなど）、光ディスク（例えば、ＣＤ(compact disk)、ＤＶＤ(digital versatile disk)など）およびソリッドステートデバイス（例えば、ＳＳＤ(solid state drive)、フラッシュメモリドライブ（例えば、カード、スティック、キードライブなど）、または望みの情報を記憶し、コンピュータ９１０によってアクセス可能である他の任意の媒体がある。
【００４７】
通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータを搬送波(carrier wave)またはその他のトランスポートメカニズムのような変調データ信号で具現化し、いずれかの情報配信媒体を含んでいるのが代表的である。「変調エータ信号(modulated data signal)」の用語は、その特性の１つまたは２つ以上が信号の情報を符号化するような形でセットまたは変更されている信号を意味している。例を挙げると、通信媒体としてはワイヤードネットワークまたはダイレクトワイヤードコネクションのようなワイヤード媒体、および音響、ＲＦ、赤外線およびその他のワイヤレス媒体のようなワイヤレス媒体があるが、その例に限定されない。上記に挙げたものの任意の組み合わせも、当然にコンピュータ可読媒体の範囲内に含まれる。
【００４８】
システムメモリ９３０およびマスストレージ９５０はコンピュータ記憶媒体の例である。コンピューティングデバイスの正確な構成とタイプに応じて、システムメモリ９３０は揮発性（例：ＲＡＭ）、不揮発性（例：ＲＯＭ、フラッシュメモリなど）またはこれら２つのなんらかの組み合わせであることがある。例を挙げると、スタートアップ期間のようにコンピュータ９１０内のエレメント間で情報を転送する基本ルーチンを含むＢＩＯＳ(basic input/output system)は不揮発性メモリ内に記憶されることができ、他方では、揮発性メモリは外部キャッシュメモリとして働いて、なかでもプロセッサ（または複数）９２０による処理を容易にすることができる。
【００４９】
マスストレージ９５０としては、システムメモリ９３０に比べて大量のデータを記憶するための取り外し可能／取り外し不能で、揮発性／不揮発性の記憶媒体がある。例えば、マスストレージ９５０としては、磁気または光ディスクドライブのような１つまたは２つ以上のデバイス、フロッピディスクドライブ、フラッシュメモリ、ソリッドステートドライブまたはメモリスティックがあるが、これらに限定されない。
【００５０】
システムメモリ９３０およびマスストレージ９５０は、オペレーティングシステム９６０、１つまたは２つ以上のアプリケーション９６２、１つまたは２つ以上のプログラムモジュール９６４およびデータ９６６を収容し、またはそこに記憶しておくことができる。オペレーティングシステム９６０は、コンピュータ９１０のリソースを制御し、割り振る働きをする。アプリケーション９６２はシステムソフトウェアとアプリケーションソフトウェアの一方または両方を含み、オペレーティングシステム９６０によるリソースの管理を、システムメモリ９３０および／またはマスストレージ９５０に記憶されて１つまたは２つ以上のアクションを実行するプログラムモジュール９６４とデータ９６６を通して利用することができる。従って、アプリケーション９６２は、アプリケーションによって提供されるロジックに従って汎用コンピュータ９１０を特殊化マシンに変えることができる。
【００５１】
請求項に記載の主題のすべてまたは一部は、標準的プログラミング手法またはエンジニアリング手法を使用してソフトウェア、ファームウェア、ハードウェアまたはこれらの任意の組み合わせを生成し、開示した機能性を実現するためにコンピュータを制御するように実現することができる。例を挙げると、変形コンポーネント１１０はアプリケーション９６２にすることも、その一部を形成することもでき、メモリストレージおよび／またはマスストレージ９５０に記憶されていて、図示のように、１つまたは２つ以上のプロセッサによって実行されるときその機能性を実現することができる１つまたは２つ以上のモジュール９６４およびデータ９６６を含むことができる。
【００５２】
コンピュータ９１０は、通信可能にシステムバス９４０に結合され、コンピュータ９１０とのやりとりを容易にする１つまたは２つ以上のインタフェースコンポーネント９７０も含んでいる。例を挙げると、インタフェースコンポーネント９７０はポート（例えば、シリアル、パラレル、ＰＣＭＣＩＡ、ＵＳＢ、FireWireなど）にすることも、インタフェースカード（例えば、音声、ビデオなど）にすることもできる。１つの実装例では、インタフェースコンポーネント９７０は、ユーザ入出力インタフェースとして実現して、ユーザが１つまたは２つ以上の入力デバイス（例えば、マウスのようなポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、カメラ、他のコンピュータなど）を通してコマンドおよび情報をコンピュータに入力可能にすることができる。別の実装例では、インタフェースコンポーネント９７０は出力周辺インタフェース(output peripheral interface)として実現して、中でも出力をディスプレイ（例えば、ＣＲＴ、ＬＣＤ、プラズマなど）、スピーカ、プリンタおよび／または他のコンピュータに与えることができる。さらに、インタフェースコンポーネント９７０はネットワークインタフェースとして実現して、ワイヤードまたはワイヤレス通信ネットワーク上のように、他のコンピューティングデバイス（図示せず）との通信を可能にすることができる。
【００５３】
上述してきたものには、請求項に記載の主題の態様の例が含まれている。請求項に記載の主題を説明する目的でコンポーネントまたは方法の想到し得る限りの組み合わせを記述することが不可能であることは勿論であるが、この分野の精通者ならば認識されるように、開示した主題の多くの他の組み合わせおよび置換が可能である。従って、開示した主題は、請求項の精神および範囲に属するすべてのかかる変更、改良および変形を包含することを目的としている。
【図１】
0005873498.tif 000004
【図２】
0005873498.tif 000005
【図３】
0005873498.tif 000006
【図４】
0005873498.tif 000007
【図５】
0005873498.tif 000008
【図６】
0005873498.tif 000009
【図７】
0005873498.tif 000010
【図８】
0005873498.tif 000011
【図９】
0005873498.tif 000012