(57)【要約】  特許請求される主題は、非常に表現的なＥＤＭ概念フォーマットを利用するアプリケーションインターフェースと、効率的で非常にスケーラブルなストレージフォーマットで構造化されたデータストアとの間を相互に関連付けることができるオンラインのインターネットクラスサービスを提供する。上記サービスは、ＥＤＭスキーマとデータ構造フォーマットとの間をマッピングするコンポーネントを含むことができる。さらに、クエリ応答は、ＥＤＭクエリフォーマットとは別個のペイロードフォーマットで提示されるデータを含むことができる。
2010519625.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークデータストレージアズアサービスを提供するシステム（１００）であって、
データストレージの構造を定義するストレージモデルを含むデータストア（１０４）と、
前記データストアとの間での情報交換を容易にすることができるＲＥＳＴインターフェース（１０６）と、
データストレージモデルと、該データストレージモデルとは異なるＥＤＭ概念モデルとの間を相互に関連付けることができるマッピングコンポーネント（１０２）と
を備えたことを特徴とするシステム（１００）。
【請求項２】
前記データストレージモデルは、効率的なストレージスキーマを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記ＥＤＭ概念モデルは、豊富で非常に表現的なＥＤＭスキーマを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記データストアは、インターネットのデータストアであり、前記ストレージモデルは、インターネットスケールデータベースのストレージモデルであることを特徴とする請求項１に記載のシステム。
【請求項５】
前記データストアは、イントラネットのデータストアであり、前記ストレージモデルは、構造化クエリ言語（ＳＱＬ）データベースストレージモデルであることを特徴とする請求項１に記載のシステム。
【請求項６】
前記ＲＥＳＴインターフェースおよび前記マッピングコンポーネントによって、前記データストアと対話することができるクライアントアプリケーションをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項７】
前記クライアントアプリケーションは、前記ＲＥＳＴインターフェースによって前記ＥＤＭ概念モデルに従って前記データストアと対話することを特徴とする請求項６に記載のシステム。
【請求項８】
前記データストアは、前記ＲＥＳＴインターフェースによって前記ストレージモデルに従って前記クライアントアプリケーションと対話することを特徴とする請求項６に記載のシステム。
【請求項９】
商業的に利用可能なデータベースサービスのプラットフォームを提供するための方法（７００）であって、
ＥＤＭデータ構造と非常にスケーラブルなストレージモデリング構造との間で変換すること（７０２）と、
ＲＥＳＴインターフェースによってウェブスケールネットワーク上で非常にスケーラブルなデータ構造でモデリングされたデータストアを公開すること（７０４）と、
様々なアクセスのレベル、該アクセスのサポート、またはその両方を、少なくともアクセスのレベル、サポート、またはその両方に対応する報酬のレベルで提供すること（７０６）と
を含むことを特徴とする方法（７００）。
【請求項１０】
前記データストアにアクセスするための消費者対応のアプリケーションユーザインターフェース、または前記データストアにアクセスするための直接アクセスＲＥＳＴスタイルのＡＰＩインターフェース、あるいはその両方を提供することをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
ネットワークデータストレージアズアサービスを提供するための方法（５００）であって、
エンティティデータモデル（ＥＤＭ）特性表現によって表されたアプリケーション概念モデルを受信すること（５０２）と、
前記ＥＤＭ特性表現とストレージ特性表現フォーマットとの間の相互関係をマッピングすること（５０８）と、
データストア内のデータとのステートレスで統一的なインタラクションを可能にするＲＥＳＴ（ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ）インターフェースを提供すること（５０６）と
を含むことを特徴とする方法（５００）。
【請求項１２】
前記アプリケーション概念モデルに関連するデータを記憶するためのウェブスケールネットワークデータストアを提供することをさらに含み、前記データストアは、前記ストレージ特性表現フォーマットに従って構造化されていることを特徴とする請求項１１に記載の方法。
【請求項１３】
クエリに応答して前記ストアからデータを送信することをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
エンティティは、前記アプリケーション概念モデルに関連するアプリケーションに有用な形であることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記ＥＤＭは、Ｅｎｔｉｔｙ型、Ｅｎｔｉｔｙインスタンス、もしくはＥｎｔｉｔｙセット、Ｒｅｌａｔｉｏｎｓｈｉｐ型、Ｒｅｌａｔｉｏｎｓｈｉｐインスタンス、もしくはＲｅｌａｔｉｏｎｓｈｉｐセット、またはＡｃｔｉｏｎ型、Ａｃｔｉｏｎインスタンス、もしくはＡｃｔｉｏｎセット、あるいはその組合せのうちの少なくとも１つを指定することを特徴とする請求項１１に記載の方法。
【請求項１６】
前記ＥＤＭ特性表現によって定義されるＥＤＭスキーマを、前記データストア内のデータとの対話に適用することをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
前記データストア内のデータとの前記対話に適用される前記ＥＤＭスキーマとは別個の前記データストア用のストレージスキーマを定義することをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記データストア内のデータとの前記対話に適用される前記ＥＤＭスキーマと前記データストア用の前記ストレージスキーマとの間の相互関係をマッピングすることをさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ストレージスキーマは、前記ＥＤＭ特性表現によって定義される前記ＥＤＭスキーマとは別個のＥＤＭスキーマであることを特徴とする請求項１６に記載の方法。
【請求項２０】
前記ストアから送信される前記データは、ＪＳＯＮ（ｊａｖａ（登録商標）ｓｃｒｉｐｔ  ｏｂｊｅｃｔ  ｎｏｔａｔｉｏｎ）、ＲＤＦ（ｒｅｓｏｕｒｃｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｆｒａｍｅｗｏｒｋ）またはＰＯＸ（ｐｌａｉｎ  ｏｌｄ  ｅＸｔｅｎｓｉｂｌｅ  ｍａｒｋ−ｕｐ  ｌａｎｇｕａｇｅ）、あるいはその組合せを含むデータ表現フォーマットによって特徴付けられることを特徴とする請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライブエンティティインターネットストアサービスに関する。
【背景技術】
【０００２】
ソフトウェアアズアサービス（ｓｏｆｔｗａｒｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ）の提供における最近の傾向は、ストレージアズアサービス（ｓｔｏｒａｇｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ）についての複数の高いプロファイルの例をもたらしている。ストレージアズアサービスについて２つの良く知られた例が現在存在しており、写真管理サイトなどのアプリケーションに対するストレージを提供している。写真管理サイトは、ユーザが、写真または他のデータファイルをアップロードし、管理し、ハイパーテキストマークアップ言語（ＨＴＭＬ）を用いてリンクし、ダウンロードし、電子メールで送信することを可能にする。これらのストレージサービスの第１のセットは、インターネットにわたるリモートデータの記憶のためのファイルシステムレベルのプログラミングモデルを提供する。しかし、このモデルは、強いクエリ能力があまりなく、アプリケーションレベルでデータベースとの最小限の対話（ｉｎｔｅｒａｃｔｉｏｎ）だけを提供し、多くのデータベースプログラマのニーズには不十分である。ストレージアズアサービスの第２の共通のセットは、ファイルシステムレベルプログラミングモデルと現代プログラマのニーズとの間のギャップを埋めることができるいくつかの基本的な概念モデリング機能を提供するが、そのようなストレージサービスとのアプリケーションプログラミングインターフェース（ＡＰＩ）の形態は、典型的に、サービスの機能を制限し得るドメイン固有の形をとっている。一般に、現代のストレージアズアサービスのアーキテクチャが提供するプログラミングモデルと現代のデータベースプログラマのニーズとの間には、大きなギャップが存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
典型的に、データベースのプログラマは、彼らが汎用アプリケーションを作成することを可能にするフロントエンドの柔軟なストレージサービスを必要とする。ファイルシステムレベルサービスは、基礎になるストレージ実装のための柔軟性を提供する特徴セット（ｆｅａｔｕｒｅ  ｓｅｔｓ）を提供することができる。さらに、これらのファイルシステムレベルサービスは典型的に、クライアントエンティティが各々５ギガバイト（ＧＢ）までの無制限の数のオブジェクトを書き込み、読み取り、削除することを可能にする。上述の写真共有サイトなど、一般のアプリケーションサービスは、これらのサービスを利用し始めている。しかし、これらのサービスは、統一的（ｕｎｉｆｏｒｍ）なフロントエンドアプリケーションの高度性を提供しないという点で制限されている。他のストレージアズアサービスアーキテクチャは、より高度化したフロントエンドサービスに適合しているが、一般的なストレージサービスアーキテクチャとしての全体的な有効性を潜在的に制限する可能性のある、型固有のＡＰＩを提供するように進化している。この点で、プログラマは、大規模なデータベースプログラミングのストレージサービスについて今後開発されることになる新たなアプローチから利益を得ることができる。
【課題を解決するための手段】
【０００４】
以下に、請求される主題の一部の態様について基本的理解を提供するために、請求される主題の単純化された要約を提示する。この要約は、請求される主題の網羅的な概要ではない。請求される主題の主要なまたは重要な要素を識別すること、および請求される主題の範囲を詳細に説明することは、意図されていない。その唯一の目的は、後で提示されるより詳細な説明の前置きとして、請求される主題の一部の概念を単純化された形で提示することである。
【０００５】
本明細書で開示され、請求される主題は、その様々な態様で、非常に表現的な（ｈｉｇｈｌｙ  ｅｘｐｒｅｓｓｉｖｅ）概念アーキテクチャと非常にスケーラブルな（ｈｉｇｈｌｙ  ｓｃａｌａｂｌｅ）インターネットタイプのデータストアアーキテクチャとの間の仲立ちをするデータストレージ構成を提供する。このシステムは、ＲＥＳＴ（ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ）インターフェース上で２つまたはそれより多い上記データモデリングアーキテクチャの間の情報交換を容易にするマッピングコンポーネントを含むことができる。そのような交換を提供することによって、リモートインターネットタイプのデータストアへのクエリを、リモートデータストアの構造を公開せずに非常に表現的な概念フォーマットで送信することができる。その結果、データストレージ構成は、サーバ、データベースなどのストレージリソースのスケーラビリティを維持しながら、豊かなデータアクセス環境を提供することができる。
【０００６】
請求される主題のさらなる態様によれば、統一的なインターフェースがデータストレージシステム上で提供され、データを統一的な手法で公開するための一貫したモデルベースの機構が提示される。汎用アプリケーションを作成するのに十分に強力なクエリ機能がサポートされる。そのようなインターフェースは、消費者対応（ｃｏｎｓｕｍｅｒ−ｒｅａｄｙ）のアプリケーションインターフェース（例えば、ウェブサイトまたは類似物）、専門的なＲＥＳＴベースのＡＰＩインターフェース（例えば、ウェブサイトの開発者、データベースの設計者など）、またはその組合せを提供することができる。
【０００７】
請求される主題の他の態様によれば、ユーザがエンティティデータモデル（ＥＤＭ：ｅｎｔｉｔｙ  ｄａｔａ  ｍｏｄｅｌ）についてスキーマを定義できるようにするオンラインのインターネットスケールのシステムが開示される。このシステムはさらに、情報をリモートデータストアで格納する手法を、ユーザによって作成されるＥＤＭスキーマとは独立に管理する。そのようなシステムを、さらに、プライベートなリッチストアおよびアプリケーションサービスのための大規模なプライベートイントラネット内で展開することができる。
【０００８】
次の説明および添付図面は、請求される主題の特定の例示的態様を詳細に説明する。しかし、これらの態様は、請求される主題の原理を利用する様々な方法のごく一部を示すものであり、請求される主題は、全てのそのような態様およびその同等物を含むことが意図されている。請求される主題の他の利益および際立った特徴は、図面と共に考慮されるときに、請求される主題の次の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】請求される主題の一態様にかかる、ステートレスで統一的なＲＥＳＴインターフェースを非常にスケーラブルなインターネットタイプのデータストアにマッピングするシステムを示す図である。
【図２】本開示の種々の態様にかかる、汎用アプリケーションを非常にスケーラブルなインターネットタイプのデータストアとともに確立するための表現的クエリ構造を示す図である。
【図３】本開示の諸態様にかかる、非常に表現的なＥＤＭモデリングスキーマと非常にスケーラブルなデータストアモデルとをマッピングするシステムを示す図である。
【図４】本革新の一態様に関連して様々なレベルのデータストアのサポートを提供する例示的なサービス合意を示す図である。
【図５】請求される主題の諸態様にかかる、インターネットタイプのデータストアのスケーラビリティを維持しつつ非常に表現的なモデリング環境を提供するサンプル的な方法を示す図である。
【図６】本明細書で説明される種々の態様にかかる、ウェブタイプのデータストアとＥＤＭアプリケーションモデリング環境との間のインターフェースを管理するための例示的な方法６００を示す図である。
【図７】本革新の諸態様にかかる、商用のサービスプラットフォームを提供するためのサンプル的な方法を示す図である。
【図８】非常に表現的なアプリケーション概念モデルと非常にスケーラブルなデータストアモデルとの間のインターフェースをサポートするのに十分な例示的ネットワーキング環境を示す図である。
【図９】本革新の諸態様にかかる、例示的なコンピューティング環境を示す図である。
【発明を実施するための形態】
【００１０】
請求される主題を、図面を参照して説明するが、図面では、同様の符号を使用して、図面を通じて同様の要素を示す。以下の記述では説明の目的で、請求される主題の完全な理解を提供するために、多数の具体的な詳細を説明する。しかし、請求される主題を、これらの特定の詳細を必要とせずに、請求される主題を実施することができることは明白であろう。他の例では周知の構造およびデバイスを、請求される主題の説明を容易にするためにブロック図の形式で示す。
【００１１】
本出願で使用されるとき、「コンポーネント」、「モジュール」、「システム」、「インターフェース」、「エンティティデータモデル」などの用語は、全般的に、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかの、コンピュータ関連のエンティティを指すことが意図されている。例えば、コンポーネントは、これらには限定されないが、プロセッサで動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータとすることができる。例として、コントローラ上で動作するアプリケーション、およびそのコントローラの両方をコンポーネントとすることができる。１つまたは複数のコンポーネントが、プロセスおよび／または実行のスレッドの中に存在することができ、１つのコンポーネントを、１つのコンピュータにローカルに配置すること、および／または複数のコンピュータの間で分散させることができる。もう１つの例として、インターフェースは、入出力（Ｉ／Ｏ）コンポーネント、ならびに関連するプロセッサ、アプリケーション、および／またはＡＰＩコンポーネントを含むことができ、コマンドラインのように単純な、またはより複雑な統合開発環境（ＩＤＥ：Ｉｎｔｅｇｒａｔｅｄ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｅｎｖｉｒｏｎｍｅｎｔ）とすることができる。
【００１２】
さらに、請求される主題を、コンピュータを制御して開示される主題を実装するソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組合せを作成するための、標準的なプログラミング技法および／または開発技法を使用する、方法、装置、または製品として実施することができる。用語「製品」は、本明細書で使用されるとき、任意のコンピュータ読取可能デバイス、コンピュータ読取可能搬送波、またはコンピュータ読取可能媒体からアクセス可能なコンピュータプログラムを含むことが意図されている。例えば、コンピュータ読取可能媒体は、磁気ストレージデバイス（例えば、ハードディスク、フロッピディスク、磁気ストライプなど）、光ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）など）、スマートカード、およびフラッシュメモリデバイス（例えば、カード、スティック、キードライブなど）を含むことができるが、これらには限定されない。さらに、搬送波を使用して、電子メールの送受信またはインターネットもしくはローカルエリアネットワーク（ＬＡＮ）などのネットワークのアクセスに使用されるような、コンピュータ読取可能な電子データを搬送することができることを理解されたい。もちろん、当業者には、請求される主題の範囲または趣旨から逸脱することなく、この構成に対して多数の変更を行うことができることを理解されるであろう。
【００１３】
さらに、「例示的」という単語は、本明細書では、例、実例、または例示としての意味で使用される。本明細書で「例示的」として説明される全ての態様または設計は、必ずしも、他の態様または設計より好ましいまたは有利であるものとして解釈されるべきものではない。むしろ、例示的という単語の使用は、具体的な形で概念を提示することを意図されている。本出願で使用されるとき、用語「または」は、排他的な「または」ではなく包含的な「または」を意味することが意図されている。すなわち、他に特に規定のない限り、または文脈から明瞭である場合を除いて、「ＸはＡまたはＢを使用する」は、相互に包含的な順列のいずれかを意味することが意図されている。すなわち、ＸがＡを使用するか、ＸがＢを使用するか、あるいはＸがＡとＢとの両方を使用する場合に、「ＸはＡまたはＢを使用する」が、前述の実例の全ての下で満たされる。さらに、冠詞「ある（ａ）」および「ある（ａｎ）」は、本願および添付の特許請求の範囲で使用されるときは通常、他に特に規定のない限り、または文脈から単数形を指すことが明瞭である場合を除いて、「１つまたは複数」を意味すると解釈されなければならない。
【００１４】
本明細書で使用されるとき、用語「推論する」または「推論」は、通常、イベントおよび／またはデータを介してキャプチャされる観察のセットから、システム、環境、および／またはユーザの状態に関して推理し、またはこれを推論するプロセスを指す。推論は、特定のコンテキストまたはアクションを識別するのに使用することができ、あるいは、例えば状態に対する確率分布を生成することができる。推論は、確率的すなわち、データおよびイベントの考慮に基づく当該の状態に対する確率分布の計算とすることができる。推論は、イベントおよび／またはデータのセットからより高いレベルのイベントを構成するのに使用される技法を指すこともできる。そのような推論は、イベントが近い時間的近接で相関しようとしまいと、イベントおよびデータが１つまたは複数のイベントソースおよびデータソースのどちらに由来しようと、観察されたイベントおよび／または格納されたイベントデータのセットからの新しいイベントまたはアクションの構成をもたらす。
【００１５】
ここで図１を参照すると、請求される主題の一態様にかかる、ステートレス（ｓｔａｔｅｌｅｓｓ）で統一的なＲＥＳＴインターフェースを、非常にスケーラブルなインターネットタイプのデータストアにマッピングするシステム１００が図示されている。マッピングコンポーネント１０２は、非常に表現的な概念アプリケーション環境とデータストレージ環境との間で変換可能なコンピュータ関連のエンティティとすることができる。マッピングコンポーネント１０２は、データストアのサブセット、クライアントアプリケーションもしくはコンポーネント、別個の中間コンポーネント、またはこれらの組合せとすることができることを認識されたい。データストレージ環境は、リレーショナルスキーマを含む任意の適切なストレージスキーマ（例えば、ＳＱＬデータベースサーバ）または非常にスケーラブルなインターネットクラスのスキーマとすることができる。概念アプリケーション環境は、データがストレージ環境内でどのように構成されるかを指定する必要なく、非常に表現的なフォーマットでデータをモデリングするための任意の適切な環境とすることができる。
【００１６】
システム１００には限定されないが、システム１００のコンテキストを提供するための例として、概念データモデリング環境は、データを、人、会社、または人もしくは会社のクラスなど、実世界のエンティティの観点から表すことができる。消費者は、例えば実世界のエンティティである可能性があり、そのような消費者は、人間、会社、政府などである可能性がある。したがって、マッピングコンポーネント１０２は、データストレージ環境とエンティティデータモデル（ＥＤＭ）プログラミング環境との間のインターフェースをとることができる（例えば．ＮＥＴブランドフレームワークで示されたクライアントビューエンジンと同様に）。さらに、マッピングコンポーネント１０２は、ＥＤＭモデル環境と非常にスケーラブルなインターネットクラスストレージ構造（下述）との間の情報交換を容易にすることができる。
【００１７】
ＥＤＭプログラミング環境は、上記の実世界の消費者などのエンティティを明示的に定義する、データモデリングの形式的な方法とすることができる。さらに、ＥＤＭは、あるエンティティの特定のインスタンスを指定し（エンティティインスタンスを、Ｅｎｔｉｔｙと称することができる）、そのインスタンスをエンティティ型に関連付け、これをエンティティセット内の他の特定のインスタンスとともにグループ化することができる。ＥＤＭによって利用されるこの構造は、データストレージ構造と独立の非常に表現的なデータモデリング環境を可能にする。したがって、エンティティ（インスタンス）は、Ｅｎｔｉｔｙ型との特定の関係（ｒｅｌａｔｉｏｎｓｈｉｐｓ）を有することができ、ＥＤＭの他の態様との関係も有することができる。
【００１８】
Ｅｎｔｉｔｙ型は、複数のエンティティ型間、またはある型に関連するエンティティの複数のインスタンス間を区別することが可能なプロパティを有することができる。したがって、プロパティを利用して、ＥＤＭデータのあるセットをＥＤＭデータの別のセットからフィルタリングすることができる。プロパティの例には、エンティティ型またはインスタンスに関連する「名前」、「住所」、「電話番号」、「電子メール」などが含まれる。ほとんどの実世界のアプリケーションでは、エンティティは、他のエンティティに関係付けられる。ＥＤＭは、この概念を関係という観念を介して組み込むことができ、この関係は、あるエンティティと別のエンティティとの間の関連（ａｓｓｏｃｉａｔｉｏｎ）を表すことができる。
【００１９】
システム１００は、ＥＤＭなどの概念モデルを利用するアプリケーションと、構造化ストレージモデルを使用するデータベースとの間のブリッジ（ｂｒｉｄｇｅ）を提供することができる。典型的に、コンピュータデータベースアプリケーションは、特定のコンテキストに関するデータを編成して提示するのに用いられる、何らかのインターフェースおよび構造を提供する。一例として、ある特定の新製品の潜在的市場を定義するのを助けるために、マーケティングアプリケーションは、類似する製品に関係するコスト、需要、および購入ヒストリに関するデータにアクセスすることがある。それを行うために、上記アプリケーションは、例えばリレーショナルデータベース、ＳＱＬ（ｓｔｒｕｃｔｕｒｅ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）データベースなどに格納されたデータの蓄積（ｃｏｍｐｉｌａｔｉｏｎ）にアクセスし、例えば所望のコスト、需要、および購入ヒストリ情報を表す形でそのデータを編成することができる。そのようなデータベース照会言語は、特定のデータが格納され得る仮想スプレッドシート内の特定の「データブロック」の行、列、および／または名前を指定することができる。そのような構造は、データを格納するのに効率的である可能性があるが、アプリケーション内のデータを表すのには必ずしも効率的というわけではない。
【００２０】
対照的に、ＥＤＭは、より高い抽象化レベルでのデータの記述を可能にするティアド（ｔｉｅｒｅｄ）アーキテクチャを作成することができる。例えば、ＥＤＭアプローチは、システムに対する構造的詳細にはあまり焦点を当てず、データモデラ（ｍｏｄｅｌｅｒ）（例えば、ウェブサイト、データベース、ＡＰＩの開発者など）が見るような、データ自体の構造的特性およびセマンティック特性に対して焦点を当てるものとすることができる。データを識別してアクセスするための（例えば、ＥＤＭスキーマに基づく）概念スキーマは、データベースアプリケーションを記述するときに、よりいっそう効率的である可能性がある。例えば、以前のマーケティング概念に関して、データが、新しい「歯ブラシ」（エンティティインスタンス、この場合は製品）が「１億ドル」市場（エンティティインスタンス、またはナビゲーションプロパティ）を「サポート」（関係）できることを示すと仮定する。アプリケーションプログラマにとっては、データベースの行または列ではなくアプリケーションに焦点を当てるこれらのエンティティについてデータベースを照会することの方が、よりいっそう効率的である可能性がある。マッピングコンポーネント１０２は、非常に表現的なデータモデリング環境とデータストレージ環境との間の変換によって、プログラマがまさにこのことを行うことを可能にすることができる。
【００２１】
マッピングコンポーネント１０２は、上記に加えて、より高度なＥＤＭアーキテクチャを組み込むことができる。一例は、関係エンティティに加えて、アクション型のエンティティを組み込むことである。そのようなアクションを、ＥＤＭの項（ｔｅｒｍｓ）で表すことができ（例えば、ＥＤＭスキーマ内のエンティティをＡｃｔｉｏｎ型、Ａｃｔｉｏｎインスタンス、および／またはＡｃｔｉｏｎセットとして参照するために）、データストア内の実際の実装にマッピングすることができる。アクションを使用するとき、「マーケティングキャンペーンを開始する」などのシチュエーションは、カスタマのアクションに関係付けられたパラメータを定義することができる。そのようなアクションを、関係が呼び出される手法と同様に、ＵＲＩを用いて呼び出すことができる（下述）。別の例は、アプリケーションが、インターネットなどのウェブスケールのネットワークにわたって情報にアクセスすることができるだけではなく、該アプリケーションをＳＱＬサーバなどのローカルストアと同期化させることもできる、汎用同期化アーキテクチャである。このような同期化は、実際に、データベース間のオフラインオペレーションモードを提供することができる。伝統的なクライアント−サーバの複製に加えて、ピアツーピアの複製をサポートすることができ、複数のピアがエンティティとともにＥＤＭストアを担持するアプリケーションの作成が可能になり、ストレージ構成が経時的に変化を同期化するような収束性のメッシュストアが形成される。
【００２２】
データストア１０４は、効率的なストレージアーキテクチャに従って編成されたデータを有する、１つまたは複数の物理的なストレージデバイスまたは仮想ストレージデバイスとすることができる。このようなストレージアーキテクチャには、関係スキーマが含まれることがあり、あるいは、インターネットなどの膨大なウェブタイプのネットワークのための非常にスケーラブルで扱いやすい環境を可能にするインターネットクラスのスキーマが含まれることができる。システム１００は、データストア１０４との間で情報を交換するためのステートレスで統一的なシステムを提供するＲＥＳＴ（ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  ｓｔａｔｅ  ｔｒａｎｓｆｅｒ）インターフェース１０６を組み込むこともできる。
【００２３】
一般に、システム１００に組み込まれるＲＥＳＴ転送モデルは、大規模なネットワーキング環境で効果的であることが証明されている、複数の特性を含むことができる。例には、ステートレスコンポーネントの対話、階層化コンポーネントアーキテクチャ、クライアントおよびサーバ側（ｓｅｒｖｅｒ−ｓｉｄｅ）のキャッシュ、ならびに統一的なコンポーネントインターフェースが含まれる。ステートレスな対話（ｓｔａｔｅｌｅｓｓ  ｉｎｔｅｒａｃｔｉｏｎ）は、各クエリおよび／またはレスポンスが、それに関係する情報転送を完了するのに必要な全ての情報を含まなければならないことを示す。したがって、コンポーネントは、他のコンポーネントとの以前の対話を記録することを要求されず、さらなる対話のためのメモリおよび処理リソースを解放する。そのようなシステムは、反復要求を増加させ得るが、クライアントおよびサーバ側のキャッシュは、コンポーネントによる以前の送信をそのコンポーネントで格納することによって、そのような反復要求から生じるリソース需要を軽減させることを助けることができる。さらに、統一的なコンポーネントインターフェースが、インターネットまたは大規模なイントラネットのアプリケーションに典型的な大粒度の（ｌａｒｇｅ−ｇｒａｉｎ）ハイパーメディアデータの転送（例えば、ビデオ、オーディオなどの大きいデータファイル）に理想的であるのに対して、階層化コンポーネントアーキテクチャは、システムの複雑性に上限を設け、コンポーネントの独立性を促進する。ＲＥＳＴインターフェース１０６は、これらの特性の一部または全て、ならびに大規模ネットワーキング環境におけるデータ転送を容易にする追加の特性を含むことができることを認識されたい。ＲＥＳＴインターフェース１０６をマッピングコンポーネント１０２およびデータストア１０４に連結することによって、システム１００は、望ましいＥＤＭプログラミングインターフェースを１つまたは複数のデータストアに提供するとともに、これらのデータストアにおける高い効率性と高いスケーラビリティを提供することができる。
【００２４】
図２を参照すると、表現的クエリ構造２０２を、直観的概念インタラクションを可能にするデータストア２０４（例えば、リレーショナルモデル、または非常にスケーラブルなインターネットタイプモデル）とともに利用するシステムが図示されている。システム２００は、ＲＥＳＴインターフェース２０６とともに、アプリケーションとのインターフェースを容易に確立するのを助ける開発ツール（例えば、ＡＳＰ（ａｃｔｉｖｅ  ｓｅｒｖｅｒ  ｐａｇｅ）および後続の技術、ならびに．ＮＥＴブランドフレームワークに関連する他の技術などのツール）を含むことができる。クライアントアプリケーション２０６は、任意の適切なフレームワーク、例えば、ＡＪＡＸと称される非同期ｊａｖａ（登録商標）スクリプト＋ＸＭＬ（ａｓｙｎｃｈｒｏｎｏｕｓ  ｊａｖａ  ｓｃｒｉｐｔ  ａｎｄ  ｅＸｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）とすることができ、ＡＪＡＸは、ＲＥＳＴインターフェース２０８をインターネットまたは大規模なイントラネット上で利用して、データストア２０４にアクセスすることができる。システム２００は、クライアントアプリケーション２０６（例えば、ＡＪＡＸおよび類似物）を、そのようなクライアントをマッピングコンポーネント２１０とインターフェースさせることによって拡張することができ、これによって、ＲＥＳＴインターフェース２０８を介してＥＤＭストア（例えば、上述のようにマッピングコンポーネント２１０によってＥＤＭフォーマットにマッピングされるデータストア２０４）に対する直接のアクセスが与えられる。その結果、ユーザ（例えば、ウェブ開発者など）は、クライアントアプリケーション２０６とデータストア２０４との間の対話（例えば、作成、取出、更新、削除（ＣＲＵＤ）操作）毎に別々のウェブサービスを作成する必要がない。
【００２５】
データストア２０４は、マッピングコンポーネント２１０によってマッピングすることにより、ＥＤＭエンティティにマッピングされ、このＥＤＭエンティティは、その後、ＲＥＳＴインターフェース２０８を介して安定したＵＲＩを有するリソースとして公開される。そのようなＵＲＩは、次いで、データストア２０４にリソースストアを反映することになるが、ＥＤＭスキーマによって記述される。したがって、表現的クエリ構造２０２は、ＵＲＩ名前空間の形で構造化されたウェブスタイル転送プロトコル（例えば、ＨＴＴＰプロトコルおよび類似物）の形式をとることができる。そのような構造は、ＥＤＭスキーマに従ってデータストア２０４上のリソースを定義することができる。したがって、表現的クエリ構造２０２は、非常に表現的であり、かつよく知られた構造（例えば、ＵＲＩクエリ構造）を利用してリレーショナルデータベースまたは非常にスケーラブルなインターネットクラスのデータベースと対話する手段を提供することができる。表現的クエリ構造２０２のＵＲＩベースのフォーマットの一例は、次のとおりである。
【００２６】
【表１】
2010519625.tif 000003
【００２７】
例えば、
http://entities.live.com/refx/northwind/refx/Customers/ALFKI
または、代替的な例として、
http://entities.live.com/refx/northwind/refx/Customers/[ALFKI]
である。  
上記の大括弧を有する代替例は、非キーフィールドを利用するデータルックアップ機能を可能にすることができる。例えば、以下である。
http://entities.live.com/refx/northwind.refx/Customers[CompanyName = “Company_One”].
「ｂａｓｅ  ＵＲＩ」は、Ｅｎｔｉｔｙ環境（例えば、Ｅｎｔｉｔｙフレームワーク）およびＲＥＳＴ拡張をホスティングできるウェブサーバ／ディレクトリにポイントすることができる。「ｒｅｆｘ  ｆｉｌｅ」（下でより詳細に述べる）は、ストア／コンテナ（例えば、データストア２０４）への接続を表し、ｅｎｔｉｔｙ  ｓｅｔ（エンティティセット）、ｅｎｔｉｔｙ  ｋｅｙ（エンティティキー）、およびｎａｖｉｇａｔｉｏｎ  ｐｒｏｐｅｒｔｙ（ナビゲーションプロパティ）は、標準的なＥＤＭの構造である。ｏｐｔｉｏｎｓ（オプション）にはデータの表現を含めることができ、下でより詳細に述べる。
【００２８】
システム２００は、単純な論理操作のためであっても複雑な論理操作のためであっても、アプリケーションをカスタマイズするための統一的なインターフェースを提供することができる。一部のクライアントアプリケーション２０６は、ほとんどの操作ではデータを参照するだけであるが（例えば、読取り専用アプリケーション）、他のアプリケーションは、より集中的なビジネスロジック操作（例えば、データ作成、変更、分析、編集など）を利用して対話する。前者の場合、開発者はしばしば、データベースへのゲートウェイとして機能し、挙動（ｂｅｈａｖｉｏｒ）またはポリシを伴わないウェブサービスのエントリポイントまたはカスタマイズされたアプリケーションを作成する。他のアプリケーションは、ポリシ集中型（ｐｏｌｉｃｙ  ｉｎｔｅｎｓｉｖｅ）であり、サーバ側で特定のポリシおよび挙動を割り当てる。システム２００は、これらのアプリケーションを統一するのを助けることができる。第１に、システム２００は、マッピングコンポーネント２１０およびＲＥＳＴインターフェース２０８によって単純な独立ゲートウェイの必要性を除去し、これにより、特別なポリシまたは挙動を伴わないときにデータストア２０４に対する直接的なトランスポートを提供することができる。より多くのビジネスロジックが必要な場合、システム２００は、反復的にカスタマイズできる単純なスタートポイントを提供することができる。（例えば、上述のようにマッピングコンポーネント２１０によって）ＥＤＭストアとして公開されるデータストア２０４を中心として挙動を追加し、ポリシを記述するための、様々な機構が存在する。
【００２９】
上述の表現的クエリ構造２０２（例えば、ＵＲＩベースのクエリ）は、公開されたＥＤＭスキーマの記述子として機能する「ｒｅｆｘ」ファイルを使用することができる。このようなファイルは、少なくともマッピングコンポーネント２０６の一部（例えば、データベースおよびそれに関連するメタデータファイル）をポイントすることができ、このマッピングコンポーネント２０６は、ＥＤＭスキーマからストレージスキーマへのマッピング構造を記述することができる。さらに、表現的クエリ構造２０２は、公開されるデータの諸態様を制御することができる。例えば、ユーザは、データストア２０４の各エンティティセットが（例えば、マッピングコンポーネント２０６を介して特徴付けられるように）アクセス可能、読取り専用、あるいは読取りと書込みのいずれであるかを制御することができる。
【００３０】
システム２００は、表現的クエリ構造２０２によってデータベースの挙動を制御する機構を提供することもできる。このような挙動（例えば、疑わしいデータを分析し、拒絶するかフラグを立てることのできるセキュリティチェック）を、表現的クエリ構造２０２内で参照されるエンティティ型に関連付けることができる。具体的には、ＥＤＭ構造に従って、エンティティフレームワークオブジェクト（例えば．ＮＥＴブランドのオブジェクト）としての実際のエンティティ／クエリ、およびデータストア２０４へのエントリポイントを表す「ＯｂｊｅｃｔＣｏｎｔｅｘｔ」アイテムに対するアクセスを提供することができる。挙動の例として、以下は、「ｐｒｏｄｕｃｔ」エンティティインスタンスが「ｐｒｏｄｕｃｔｓ」エンティティセットに書き込まれるときにアクティブ化されるＣ＃関数である。この関数は、例えばデータストア２０４の他の部分をチェックすることができ、その後、「ｐｒｏｄｕｃｔ」の作成操作または更新操作を停止（ａｂｏｒｔ）させて、そのような操作にフラグを立てることができる。
【００３１】
【表２】
2010519625.tif 000004
【００３２】
この例においてＣ＃コードで表されるアプローチは手続的アプローチであり、該アプローチは、データストア２０４がイントラネット（例えば、大企業のネットワーク環境）上のリレーショナルデータストアまたはＳＱＬデータストアを表すシステム２００で実装され得ることに留意されたい。インターネットスケールアプリケーションについて、宣言的（ｄｅｃｌａｒａｔｉｖｅ）ポリシの例を利用することができる。
【００３３】
システム２００は、上で説明したＵＲＩモデルの他に、表現的クエリ構造２０２を介して照会を行うさらなる方法もサポートする。開発者は典型的に、ＵＲＩを利用して、特定のデータストア内で使用可能なものを発見することができるが、アプリケーションユーザは通常、様々なフィルタまたは基準（ｃｒｉｔｅｒｉａ）を使用して照会および／または検索をする。したがって、表現的クエリ構造２０２は、クライアントアプリケーション２０６を介して、フィルタおよび／または基準ベースの検索をサポートすることもできる。このような基準ベース検索の一例が、ＲＤＦ（ｒｅｓｏｕｒｃｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｆｒａｍｅｗｏｒｋ）クエリ言語ＲＱＬおよびＳＰＡＲＱＬである。該ＲＤＦクエリ言語は、表現力に関して非常に幅広く、産業界で広く受け入れられている。
【００３４】
フィルタベースの検索のクエリは、ＥｎｔｉｔｙＳＱＬと呼ばれるＳＱＬ言語のＥＤＭ構造化に固有の言語（ｄｉａｌｅｃｔ）をも含むことができる。表現的クエリ構造２０２は、ｅＳＱＬ言語によって指定される「クエリフラグメント」をサポートして、フィルタベースの検索を実行することができる。さらなる例として、ＵＲＩ内のストリングのクエリが、「ｃｕｓｔｏｍｅｒｓ」と呼ばれるエンティティセットをポイントし、関連する特定のプロパティを有する「ｃｕｓｔｏｍｅｒｓ」のインスタンスだけを返すことができる。例えば、Ａｒｇｅｎｔｉｎａフィルタのプロパティ「ｃｏｕｎｔｒｙ」は、次のようである可能性がある。  
http://entities.live.com/refx/northwind/refx/Customers?where=it.Country=Argentina
表現的クエリ構造２０２は、さらにｅ−ＳＱＬフラグメント構造もサポートすることができる。例えば、ＥＤＭナビゲーションプロパティを、エンティティ関係の区別に使用することができる。より具体的には、１０個を超える注文を有する「ｃｕｓｔｏｍｅｒ」インスタンスを要求する例は、「ＣＯＵＮＴ（ｉｔ．ＳａｌｅｓＯｒｄｅｒｓ）＞  １０」とすることができる。構造化されたクエリ言語２０２のもう１つの特定の例は、Ｘｐａｔｈすなわち、（例えば、関係を用いてＥＤＭスキーマを照会する際に利用される）クエリグラフについて良好に働く単純な周知のクエリ言語とすることができる。さらに、クエリがペイロードである（例えば、クエリに追加される情報ではなくクエリのメッセージ）場合のクエリに関するＰＯＳＴ要求を使用するためのサポートを提供する。したがって、表現的クエリ構造２０２は、クエリ言語をＵＲＩに埋め込むことに関連する問題を回避することができる。
【００３５】
ここで図３を参照すると、本開示の諸態様にかかる、クライアントアプリケーション３０４とデータストア３０６との間のインターフェースを提供し、データを特定のデータペイロードフォーマットで送信することができるシステム３００が図示されている。マッピングコンポーネント３０２は、上で述べたように、ＥＤＭスキーマを利用するクライアントアプリケーション３０４と、ストレージスキーマを利用するデータストア３０６との間のインターフェースを提供することができる。データストア３０６は、例えば大規模のイントラネットタイプのネットワーク（例えば、企業ネットワーク）内で利用可能なリレーショナルスキーマ（例えば、ＳＱＬサーバ）、または例えばインターネット上で使用可能な特別な非常にスケーラブルなインターネットクラスストレージスキーマによって定義される構造を有することができる。クライアントアプリケーション２０６は、データをモデリングするための表現的概念フォーマット、およびデータベースと対話するための関係概念フォーマット（例えば、図２の表現的クエリ構造２０２に関して上述したＥＤＭフォーマット）を利用することができる。ＲＥＳＴインターフェース３０８はプラットフォームを提供し、該プラットフォームによって、クライアントアプリケーションおよびデータストアが大規模なリモートネットワーク上で通信することができ、ＥＤＭなどのスキーマをサポートすることができる。しかし、ＲＥＳＴは一般に、データを提示する特定のフォーマットを指定せず、他の機構が、そのようなデータフォーマットを提供する。
【００３６】
システム３００は、符号３１０で表されるペイロードフォーマットまたはデータ表現フォーマットを組み込み、クライアントアプリケーション３０２とデータストア３０４との間で伝送されるデータを指定することができる。例には、ＰＯＸ（ｐｌａｉｎ  ｏｌｄ  ＸＭＬ）、ＲＳＳ（ｒｉｃｈ  ｓｉｔｅ  ｓｕｍｍａｒｙ）、ＪＳＯＮ（ｊａｖａ（登録商標）ｓｃｒｉｐｔ  ｎｏｔａｔｉｏｎ）、ＲＤＦ（ｒｅｓｏｕｒｃｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｆｒａｍｅｗｏｒｋ）、ＡＴＯＭなどが含まれる。各データペイロードフォーマットは、通常は類似するが、データを表示するための異なるフォーマットを有することがある。ＰＯＸ、ＪＳＯＮ、およびＲＤＦの例を以下に示す。
【００３７】
一例として、「ｃｕｓｔｏｍｅｒ」エンティティ型に属する「ＡＬＦＫＩ」というキーを有する特定のエンティティインスタンスを仮定する。上記のように指定するＥＤＭクエリに対するＪＳＯＮの構造的応答は、概ね以下と同様である。
http://entities.live.com/refx/northwind.refx/Customers/ALFKI?responseType=text/json
【００３８】
【表３】
2010519625.tif 000005
【００３９】
クライアントアプリケーション３０２は、ＲＥＳＴインターフェース３１２を介して表現的ＥＤＭフォーマットのクエリを指定することだけを必要とすることに留意されたい。マッピングコンポーネントは、クライアントアプリケーション３０２（例えば、消費者またはアプリケーションカスタマなど）によって利用されるスキーマとは独立のスキーマのデータストア３０４に情報が格納される、実際の方法を自動的に管理することができる。ＰＯＸフォーマットの同一のクエリは、概ね以下と同様である。
【００４０】
【表４】
2010519625.tif 000006
【００４１】
ＲＤＦフォーマットでは次のとおりである。
【００４２】
【表５】
2010519625.tif 000007
【００４３】
図４を参照すると、図４は、消費者４０２とサービスプロバイダ４０４との間に提供されるサンプルのサービスレベルの合意（ｓｅｒｉｖｅｉｃｅ  ｌｅｖｅｌ  ａｇｒｅｅｍｅｎｔ）４００、および複数の合意を区別できるポリシ（例えば、４１０から４２０まで）の図である。サービスレベルの合意４００は、データストレージサービスを提供し、該データストレージサービスは、特に表現的クエリスキーマとデータストアスキーマ（例えば、リレーショナルスキーマ、非常にスケーラブルなインターネットタイプのデータストアスキーマ、または例えば他のデータベースストレージスキーマ）を相互に関連付けることができる。このようなサービスは、データストアスキーマを、クライアントシステムによって利用される表現的スキーマ（例えば、ＥＤＭスキーマおよび類似物）と独立に自動的に管理することができる。さらに、ストレージサービスは、上で述べたように、種々のペイロード表現フォーマットをサポートすることができる。さらに、マッピングサービスを、インターネット上または大規模なイントラネットワーク（例えば、大企業のイントラネット）上で使用可能にすることができる。
【００４４】
また、サンプルのサービスレベル合意ポリシも示されており、該ポリシでサービスレベルの合意を構造化する。あるポリシは、例えば最小限のコストで提供される、ベストエフォート（ｂｅｓｔ  ｅｆｆｏｒｔ）４１０ポリシとすることができる。ベストエフォートポリシは、サービスの基礎となるレベル、例えば、表現的クエリスキーマとデータストアスキーマを相互に関連付けるが特定の品質保証（例えば、サポート、バックアップ、リカバリ、可用性など）は提供しない、マッピングサービスを提供することができる。説明するための例として、ベストエフォート４１０は、消費者４０４がデータマッピングサービスを、例えばわずかな料金を消費者自身が負担し、データマッピングサービスプロバイダ４０６側に対する他の義務は負わずに利用することを可能にする、消費者４０４とデータマッピングサービスプロバイダ４０６との間のライセンスとすることができる。バックアップ／リストアポリシ４１２は、さらに、消費者４０４によってアップロードされたデータを保護するためのバックアップ操作およびリストア操作を含む、ベストエフォートポリシ４１０によって提供されるサービスとすることができる。サービスプロバイダ４０６は、消費者４０４によってアップロードされたデータのコピーを作成し、問題が発生した場合にこれをリストアすることができる。データ／サービス保証（ｄａｔａ／ｐｏｌｉｃｙ  ｇｕａｒａｎｔｅｅ）ポリシ４１４は、バックアップリストアポリシ４１２に加えてまたはその代わりに、より強固なバックアップおよびリストアのシナリオを提供することができる。そのようなポリシは、例えば、データをバックアップしてリストアすることができ、サービスレベル合意４０２で提供されるある特定の値まで該データを保証することもできる。
【００４５】
サービスレベル合意は、上で説明したバックアップサービスおよびリストアサービスに加えて、データストアに関連する多くの追加のサービスを提供することができる。例えば、サービスレベル合意を、特定のレートのストレージサイズ（例えば、メガバイト単位、ギガバイト単位、テラバイト単位、および類似物）を確立する、特定のストレージレベルポリシ４１６に基づくものとすることができる。また、アクセス可用性（ａｃｃｅｓｓ  ａｖａｉｌａｂｉｌｉｔｙ）ポリシ４１８は、例えば、あるデータを、特定の品質、または特定のサーバ側のアクセス速度で、全世界または世界の指定された部分などにおいてアクセス可能にすることができることの保証を提供することができる。例として、米国を拠点とする消費者４０２が、あるウェブサイトに関して格納されたデータを有しており、該データを日本の関係団体（ａｆｆｉｌｉａｔｅ）に使用可能にすることを望む場合、アクセス可用性ポリシ４１８は、そのようにするための標準を指定することができる。別の例として、インターフェース（例えば、ＲＥＳＴインターフェース）を介してアプリケーションを作成するための確立されたアプリケーションまたは開発ツールの使用を提供するアプリケーションプログラミングインターフェース（ＡＰＩ）サポートポリシ４２０を指定することができる。図４で提供される例は、本革新の諸態様に関連する様々なサービスレベル合意のコンテキストを作成するためのものであり、他のコンテキストを限定するためのものであると解釈されるべきではないことを理解されたい。
【００４６】
ここで図５を参照すると、請求される主題の態様にかかる、インターネットタイプのデータストアのスケーラビリティを維持しながら非常に表現的なモデリング環境を提供するための例示的な方法５００が示されている。５０２で、ＥＭＤ特性表現（ＥＤＭ  ｃｈａｒａｃｔｅｒｉｚａｔｉｏｎ）として表されたアプリケーション概念モデルが作成され、またはリポジトリから取得される。この概念モデルは、ドメイン固有とすることができ、ＥＤＭを介して使用可能な任意の適切な形式を有する。例には、仮想エンティティまたは実世界エンティティ（例えば、人、場所、物、会社、位置、またはオフィスなど、事実上全ての名詞）をエンティティインスタンス、型、およびセットとして表す、定義された種々のエンティティが含まれる。定義された種々の関係は、エンティティ間に発生する関連、プロパティ、または継承（例えば、ピアツーピア関連、親子継承モデル、および類似物）を関係インスタンス、型、およびセットとしても表す。関係およびエンティティを、例えばＥＤＭ特性表現として表されたアプリケーション概念モデルによって指定されるように、データストア上の特定のリソースストアにマッピングすることができる。５０４で、アプリケーション概念モデルのウェブスケールネットワークデータストアが、データストレージフォーマットで作成される。さらに、データストレージフォーマットは、データストア上でデータを構造化するための任意の適切なフォーマットとすることができる（例えば、企業ネットワーク内のＳＱＬデータベース、インターネットクラスデータベース用の非常にスケーラブルなインターネットクラスのストレージフォーマットなど）。
【００４７】
ＲＥＳＴインターフェースを、ウェブスケールネットワークのデータストア上で提供し、該データストア内のデータを該ネットワーク上の他のコンポーネント（例えば、クライアントコンポーネント）に公開することができる。ＲＥＳＴインターフェースは、データストアとのステートレスで統一的なインタラクションを可能にすることができ、ＥＤＭ特性表現を利用して（例えば、ＥＤＭ  ＵＲＩ構造を用いて）ＲＥＳＴスタイルのクエリ構造を容易にすることができる。ＥＭＤクエリは、データストアに対する基本的なＣＲＵＤ操作を実行するための非常に表現的なフォーマットを提供することができる。５０８で、ＥＤＭ概念特性表現とデータストレージフォーマットとの間の相互関係（ｃｏｒｒｅｌａｔｉｏｎ）をマッピングする。この相互関係は、データストレージフォーマットのデータストアを、ＲＥＳＴインターフェース上のＥＤＭクエリと独立に管理するのを容易にする。その結果、方法５００は、スケーラビリティおよび効率性に関して最適化されたデータストレージフォーマットを維持しつつ、非常に表現的で概念指向の（例えば、プログラミング、アプリケーション使用のための）インターフェース環境を提供する。
【００４８】
ここで図６を参照すると、本明細書で説明される様々な態様にかかる、ウェブタイプのデータストアとＥＤＭアプリケーションモデリング環境との間のインターフェースを管理する例示的な方法６００が示されている。６０２で、ウェブスケールネットワークデータストアを、非常にスケーラブルなストレージモデルに従って構造化する。上で開示したように、ストレージモデルは、例えば、大量のデータの格納および非常に多い量のクエリの処理が可能な、インターネット上で展開されるインターネットクラスデータストア用とすることができる。代替的に、該ストレージモデルは、企業のネットワーク環境内で展開されるＳＱＬクラスデータベース用とすることができる。６０４で、ＥＤＭモデルに従って構造化されたクエリが、データストアで受信される。このクエリは、例えば、特定のドメイン（例えば、エンティティコンテナ）、エンティティ型、（例えば、エンティティキーによる）エンティティインスタンス、ナビゲーションプロパティ、（例えば、上述のｅ−ＳＱＬフィルタと同様の）フィルタ、関係型（ｒｅｌａｔｉｏｎｓｈｉｐ  ｔｙｐｅ）、関係セット（ｒｅｌａｔｉｏｎｓｈｉｐ  ｓｅｔ）、関係インスタンス（ｒｅｌａｔｉｏｎｓｈｉｐ  ｉｎｓｔａｎｃｅ）などを指定することができる。符号６０４で開示されるＥＤＭクエリは、データストアへのインターフェース（例えば、ＲＥＳＴインターフェース）によって、開発者／消費者に周知の手法で汎用データベースアプリケーションを作成することに利用可能であることを理解されたい。
【００４９】
６０６で、クエリによって指定された操作を、データストレージモデルを参照してデータストアに適用する。このような手法で、アプリケーションおよび／またはクエリスキーマを、データストア上の情報を管理するのに使用されるスキーマと独立の特定のフォーマット（例えば、非常に表現的なＥＤＭ概念フォーマット）で定式化することができる。６０８で、ＥＤＭモデルに従って、クエリに操作結果を応答する。例えば、クエリ操作がデータストアへのデータのアップロードを要求していた場合、符号６０８では、その操作が成功した、不成功であったことなどを示す表示（ｉｎｄｉｃａｔｉｏｎ）を返すことができる。さらなる例として、クエリ操作が、データをデータストアから取り出すことを要求していた場合、符号６０８での応答には該データが含まれることになる。さらに、応答によって指定されるデータは、上で説明したように、ペイロードフォーマットなどの別個のフォーマットを有することができる。
【００５０】
ここで図７を参照すると、本革新の態様にかかる、商用のサービスプラットフォームを提供するサンプル的な方法７００が示されている。７０２で、ＥＤＭデータ構造とストレージモデリング構造との間の変換を実行する。この変換を、例えば、ネットワーク化されたサーバシステムとクライアントシステムとの間のＲＥＳＴインターフェース上で実行することができる。代替的には、この変換を、データストアデバイス、クライアントデバイス、または中間デバイスと提携したシステムで実行することができる。さらに、ネットワークは、インターネットまたは企業のイントラネットなど、ウェブスケールのネットワークとすることができる。さらに、ストレージデータモデリング構造は、（例えば、インターネットクラスのデータストアで利用される）非常にスケーラブルなストレージモデリング構造とすることができる。７０４で、ストレージデータモデリング構造でモデリングされたデータストアを、ウェブスケールネットワークを介して（例えば、ＲＥＳＴインターフェースおよび／または類似物によって）公開する。７０６で、アクセスのレベルおよび／または上記アクセスのサポートを、様々なレベルの報酬で提供する。サポートおよび／またはアクセスのレベルは、例えば、データバックアップおよびリストアサービス、データのロスに対する保証、地方、国内、または全世界からの、特定の品質レベルでのデータに対する可用性などを含むことができる。個々のカスタマ、小規模の会社、大企業、政府などの必要性に合致するように、レベルを指定することができる。さらに、サポートおよび／またはアクセスに対する報酬のレベルは、少なくともアクセスおよび／またはサポート自体のレベルに対応させることが可能である。７０８で、消費者対応のアプリケーションユーザインターフェースを提供することができる。さらに、７１０で、データストアに対する直接のアクセスを、ＲＥＳＴスタイルＡＰＩインターフェースを介して提供することができる。
【００５１】
ここで図８を参照すると、開示されるアーキテクチャを実行するために動作可能な例示的なコンピュータシステムのブロック図が図示されている。本発明の様々な態様に関するさらなるコンテキストを提供するために、図８および次の議論は、本発明の様々な態様を実装することができる適切なコンピューティング環境８００の簡潔で全般的な説明を提供することを意図されたものである。さらに、本発明を、上では１つまたは複数のコンピュータで実行されるコンピュータ実行可能命令についての全般的なコンテキストで説明したが、当業者には、本発明を、他のプログラムモジュールとの組合せで、および／またはハードウェアとソフトウェアの組合せとして実装することできることが認識されよう。
【００５２】
一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者には、本発明の方法が、シングルプロセッサもしくはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、およびパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースもしくはプログラマブルな家庭用電化製品などを含め、それぞれが１つまたは複数の関連するデバイスに動作可能に結合され得る他のコンピュータシステム構成で実施され得ることは理解されよう。
【００５３】
本発明の図示された態様を、通信ネットワークを介してリンクされるリモート処理デバイスによって特定のタスクが実行される、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルメモリストレージデバイスとリモートメモリストレージデバイスの両方に配置することができる。
【００５４】
コンピュータは、典型的に、様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不能媒体の両方を含む。限定ではなく例として、コンピュータ読取可能媒体は、コンピュータ記録媒体および通信媒体を含むことができる。コンピュータ記録媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性と不揮発性、取り外し可能と取り外し不能の両方の媒体を含むことができる。コンピュータ記録媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を格納するのに使用できコンピュータによってアクセスできる任意の他の媒体を含むが、これらには限定されない。
【００５５】
通信媒体は、典型的に、搬送波などの変調されたデータ信号または他のトランスポート機構でコンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータを具現化し、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、情報を信号内に符号化する手法でその特性のうちの１つまたは複数をセットされるか変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体とを含む。上記のいずれかの組合せも、コンピュータ読取可能媒体の範囲に含まれるべきである。
【００５６】
図８を再び参照すると、本発明の様々な態様を実装するための例示的環境８００は、コンピュータ８０２を含み、該コンピュータ８０２は、処理ユニット８０４、システムメモリ８０６、およびシステムバス８０８を含む。システムバス８０８は、これに限定するものではないがシステムメモリ８０６を含むシステムコンポーネントを、処理ユニット８０４に結合する。処理ユニット８０４は、様々な市販のプロセッサのうちのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを、処理ユニット８０４として使用することもできる。
【００５７】
システムバス８０８は、メモリバス（メモリコントローラを有するもの、または有しないもの）、周辺バス、および様々な市販のバスアーキテクチャのいずれかを使用するローカルバスにさらに相互接続できる複数のタイプのバス構造のうちのいずれかとすることができる。システムメモリ８０６は、読取り専用メモリ（ＲＯＭ）８１０およびランダムアクセスメモリ（ＲＡＭ）８１２を含む。基本入出力システム（ＢＩＯＳ）は、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性メモリ８１０に格納され、このＢＩＯＳは、スタートアップ中などにコンピュータ８０２内の要素の間で情報を転送するのを助ける基本ルーチンを含む。ＲＡＭ  ８１２には、データをキャッシングするためのスタティックＲＡＭなどの高速ＲＡＭを含めることもできる。
【００５８】
コンピュータ８０２は、さらに、適切なシャーシ（図示せず）内で外部使用のための構成とすることもできる内蔵ハードディスクドライブ（ＨＤＤ）８１４（例えば、ＥＩＤＥ、ＳＡＴＡ）、（例えば、取り外し可能ディスケット８１８との間で読み書きするための）磁気フロッピディスクドライブ（ＦＤＤ）８１６、および（例えば、ＣＤ−ＲＯＭディスク８２２を読み取り、あるいはＤＶＤなどの他の大容量光媒体との間で読み書きするための）光ディスクドライブ８２０を含む。ハードディスクドライブ８１４、磁気ディスクドライブ８１６、および光ディスクドライブ８２０を、それぞれハードディスクドライブインターフェース８２４、磁気ディスクドライブインターフェース８２６、および光ドライブインターフェース８２８によってシステムバス８０８に接続することができる。外部ドライブの実装のためのインターフェース８２４は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）およびＩＥＥＥ  １３９４の少なくとも一方または両方のインターフェース技術を含む。他の外部ドライブ接続技術も本発明の企図に含まれる。
【００５９】
ドライブおよびそれに関連するコンピュータ読取可能媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージを提供する。コンピュータ８０２に対してドライブおよび媒体は、適切なデジタルフォーマットの任意のデータのストレージを提供する。上記のコンピュータ読取可能媒体の説明は、ＨＤＤ、取り外し可能磁気ディスケット、およびＣＤまたはＤＶＤなどの取り外し可能光媒体に言及しているが、当業者は、ｚｉｐドライブ、磁気カセット、フラッシュメモリカード、カートリッジ、および類似物など、コンピュータによって読み取り可能な他のタイプの媒体も例示的なオペレーティング環境で使用することができ、さらに、任意の上記媒体が本発明の方法を実行するためのコンピュータ実行可能命令を含むことが可能であることを理解されたい。
【００６０】
オペレーティングシステム８３０、１つまたは複数のアプリケーションプログラム８３２、他のプログラムモジュール８３４、およびプログラムデータ８３６を含む複数のプログラムモジュールを、ドライブおよびＲＡＭ  ８１２に格納することができる。オペレーティングシステム、アプリケーション、モジュール、および／またはデータの全てまたは一部を、ＲＡＭ  ８１２内でキャッシュすることもできる。本発明を、様々な市販のオペレーティングシステムまたはオペレーティングシステムの組合せで実装することができることを了解されたい。
【００６１】
ユーザは、１つまたは複数の有線／無線入力デバイス、例えばキーボード８３８およびマウス８４０などのポインティングデバイスを介して、コンピュータ８０２にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）には、マイクロホン、ＩＲリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン、または類似物が含まれ得る。これらおよび他の入力デバイスは、システムバス８０８に結合された入力デバイスインターフェース８４２を介して処理ユニット８０４に接続されることが多いが、パラレルポート、ＩＥＥＥ  １３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェースなど、他のインターフェースによって接続することもできる。
【００６２】
モニタ８４４または他のタイプのディスプレイデバイスも、ビデオアダプタ８４６などのインターフェースを介してシステムバス８０８に接続される。モニタ８４４に加えて、コンピュータは典型的に、スピーカ、プリンタなど、他の周辺出力デバイス（図示せず）を含む。
【００６３】
コンピュータ８０２は、リモートコンピュータ８４８などの１つまたは複数のリモートコンピュータへの有線および／または無線の通信を介する論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピュータ８４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテイメント機器、ピアデバイス、または他の一般的なネットワークノードとすることができ、典型的にはコンピュータ８０２に関して説明した要素のうちの多数または全てを含むが、簡潔性のためにメモリ／ストレージデバイス８５０だけを図示している。図示される論理接続は、ローカルエリアネットワーク（ＬＡＮ）８５２および／または例えば広域ネットワーク（ＷＡＮ）８５４などのより大規模なネットワークに対する有線／無線の接続を含む。このようなＬＡＮおよびＷＡＮのネットワーキング環境は、オフィスおよび会社では一般的であり、イントラネットなどの企業規模のコンピュータネットワークを容易にし、これらの全てが、グローバルな通信ネットワーク、例えばインターネットに接続可能である。
【００６４】
ＬＡＮネットワーキング環境で使用されるとき、コンピュータ８０２は、有線および／または無線の通信ネットワークインターフェースまたはアダプタ８５６を介してローカルネットワーク８５２に接続される。アダプタ８５６は、ＬＡＮ  ８５２への有線または無線の通信を容易にすることができ、該ＬＡＮ  ８５２は、無線アダプタ８５６と通信するために配置される無線アクセスポイントも含むことができる。
【００６５】
ＷＡＮネットワーキング環境で使用されるとき、コンピュータ８０２は、モデム８５８を含むことができ、あるいはＷＡＮ  ８５４上の通信サーバに接続され、あるいはインターネットによる方法など、ＷＡＮ  ８５４を介する通信を確立する他の手段を有する。モデム８５８は、内蔵または外付けとすることができ、有線デバイスまたは無線デバイスとすることができ、シリアルポートインターフェース８４２を介してシステムバス８０８に接続される。ネットワーク化された環境では、コンピュータ８０２に関して図示されたプログラムモジュールまたはその一部を、リモートメモリ／ストレージデバイス８５０に格納することができる。図示されたネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段も使用可能であることは理解されよう。
【００６６】
コンピュータ８０２は、無線通信するように動作可能に配置された任意の無線デバイスまたはエンティティ、例えば、プリンタ、スキャナ、デスクトップコンピュータおよび／またはポータブルコンピュータ、携帯情報端末、通信衛星、無線によって検出可能なタグに関連付けられた任意の機器または場所（例えば、キオスク、新聞売店、トイレ）、ならびに電話機と通信するように動作可能である。これには、少なくともＷｉ−Ｆｉ無線技術およびＢｌｕｅｔｏｏｔｈ（商標）無線技術が含まれる。したがって、通信は、従来のネットワークのように予め定義された構造または単純に少なくとも２つのデバイスの間のアドホック通信とすることができる。
【００６７】
Ｗｉ−Ｆｉすなわちワイヤレス・フェデリティ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）は、家庭のソファ、ホテルの部屋のベッド、または職場の会議室から配線を必要とせずにインターネットへの接続を可能にする。Ｗｉ−Ｆｉは、例えばコンピュータなどのデバイスがデータを屋内および戸外で（基地局の範囲内のどこでも）送受信できるようにする携帯電話に使用されるものと同様の無線技術である。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ  ８０２．１１（ａ、ｂ、ｇなど）と呼ばれる無線技術を使用して、セキュアで信頼性があり、かつ高速の無線接続を提供する。Ｗｉ−Ｆｉネットワークを使用して、コンピュータを相互に、インターネットに、および（ＩＥＥＥ  ８０２．３またはイーサネット（登録商標）を使用する）有線ネットワークに接続することができる。Ｗｉ−Ｆｉネットワークは、ライセンス不要の２．４ＧＨｚおよび５ＧＨｚ無線帯域で、例えば１１Ｍｂｐｓ（８０２．１１ａ）または５４Ｍｂｐｓ（８０２．１１ｂ）データレートで、あるいは両方の帯域（デュアルバンド）を含む製品で動作し、したがって、これらのネットワークは、多くのオフィスで使用される基本的な９ＢａｓｅＴ有線イーサネット（登録商標）ネットワークと同様の実世界のパフォーマンスを提供することができる。
【００６８】
ここで図９を参照すると、開示されるアーキテクチャを実行するように動作可能な例示的コンピュータ・コンパル・システムの概略ブロック図が図示されている。システム９００は、１つまたは複数のクライアント９０２を含む。クライアント９０２は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。クライアント９０２は、例えば本発明を使用することによって、クッキーおよび／または関連するコンテキスト情報を収容することができる。
【００６９】
システム９００は、１つまたは複数のサーバ９０４も含む。サーバ９０４も、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。サーバ９０４は、例えば本発明を使用することによって、変換を実行するスレッドを収容することができる。クライアント９０２とサーバ９０４の間の１つの可能な通信は、２つまたはそれより多くのコンピュータプロセスの間で伝送されるように適合されたデータパケットの形とすることができる。データパケットは、例えばクッキーおよび／または関連するコンテキスト情報を含むことができる。システム９００は、クライアント９０２とサーバ９０４との間の通信を容易にするのに使用することができる通信フレームワーク９０６（例えば、インターネットなどのグローバル通信ネットワーク）を含む。
【００７０】
通信を、有線（光ファイバを含む）および／または無線技術を介して容易にすることができる。クライアント９０２は、クライアント９０２にローカルな情報（例えば、クッキーおよび／または関連するコンテキスト情報）を格納するのに使用できる１つまたは複数のクライアントデータストア９０８に動作可能に接続される。同様に、サーバ９０４は、サーバ９０４にローカルな情報を格納するのに使用できる１つまたは複数のサーバデータストア９１０に動作可能に接続される。
【００７１】
上で説明したものは、様々な実施形態の例を含む。もちろん、実施形態の説明のためにコンポーネントまたは方法の全ての考えられる組合せを記述することは不可能であるが、当業者は、多数のさらなる組合せおよび置換が可能であることを認識するであろう。したがって、この詳細な説明は、添付の特許請求の範囲の趣旨および範囲に含まれる全てのそのような代替形態、修正形態、および変形形態を含むことが意図されている。
【００７２】
具体的には、説明したコンポーネント、デバイス、回路、システム、および類似物によって実行される様々な機能に関して、上記コンポーネントを説明するのに使用された用語（「手段」への言及を含む）は、特に示されていない限り、開示された構造と構造的に同等でない場合であっても説明されたコンポーネントの指定された機能を実行し（例えば、機能的同等物）、本明細書で示される実施形態の例示的態様の機能を実行する、全てのコンポーネントに対応することが意図されている。これに関して、実施形態が、システム、ならびに様々な方法のアクトおよび／またはイベントを実行するためのコンピュータ実行可能命令を有するコンピュータ読取可能媒体を含むことも認識されよう。
【００７３】
さらに、特定の特徴が、複数の実施態様の１つのみに関して開示されていることがあるが、そのような特徴を、任意の所与のまたは特定の応用について望まれ、有利である他の他の実施態様の１つまたは複数の他の特徴と組み合わせることができる。さらに、用語「含む（ｉｎｃｌｕｄｅｓ）」、「含んでいる（ｉｎｃｌｕｄｉｎｇ）」、およびその変形が、この詳細な説明または特許請求の範囲のいずれかで使用される範囲において、これらの用語は、用語「備えている（ｃｏｍｐｒｉｓｉｎｇ）」と同様に包含的であるように意図されている。
【図１】
2010519625.tif 000008
【図２】
2010519625.tif 000009
【図３】
2010519625.tif 000010
【図４】
2010519625.tif 000011
【図５】
2010519625.tif 000012
【図６】
2010519625.tif 000013
【図７】
2010519625.tif 000014
【図８】
2010519625.tif 000015
【図９】
2010519625.tif 000016
【国際調査報告】
2010519625.tif 000017
2010519625.tif 000018