(57)【要約】  請求項に記載されている主題は、複数の装置と関連してデータ整合性を管理することを容易にするシステムおよび／または方法を提供する。装置の集合をユーザに関連付けることができる。ウェブサービスは、インタフェース・コンポーネントを介して少なくとも１つの装置からデータの一部を受け取ることができ、ウェブサービスはそのデータの一部をホストし、そのデータの一部を前記ユーザに関するアカウントと関連付けることができる。マスタ同期コンポーネントは、前記ユーザに関連付けられた装置の集合のうち２つまたはそれ以上の装置、または、ウェブサービスによってホストされたアカウントとユーザに関連付けられた装置の集合のうち２つまたはそれ以上の装置、のうち少なくとも１つの間でデータ整合性を維持するために、少なくとも１つの装置からのコンピューティング・リソースを利用することができる。
2012501586.tif 000002
【特許請求の範囲】
【請求項１】
複数の装置と関連してデータ整合性を管理することを容易にするシステムであって、
ユーザに関連付けられた装置の集合（１０６）と、
インタフェース・コンポーネント（１０８）を介して少なくとも１つの装置からデータの一部を受け取り、前記データの一部をホストし、前記データの一部を前記ユーザに関するアカウントと関連付けるウェブサービス（１０４）と、
前記ユーザに関連付けられた前記装置の集合のうち２つまたはそれ以上の装置、または
前記ウェブサービスによってホストされた前記アカウントと前記ユーザに関連付けられた前記装置の集合のうち２つまたはそれ以上の装置
のうち少なくとも１つの間でデータ整合性を維持するために、少なくとも１つの装置からのコンピューティング・リソースを利用するマスタ同期コンポーネント（１０２）と
を備えることを特徴とするシステム。
【請求項２】
前記装置は、スマートフォン、ラップトップ、デスクトップ、コンピュータ、マシン、ＰＤＡ（ｐｏｒｔａｂｌｅ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯装置、ページャ、ツーウェイ、ハンドヘルド、モバイルデバイス、ブラウジング装置、無線装置、携帯ゲーム機、ゲーミング・コンソール、メディア・プレーヤ、ポータブル・メディア・プレイヤ、ペンドライブ、ハードドライブ、データ・ストア、デジタルカメラ、画像収集装置、ビデオ収集装置、ビデオカメラ、音声収集装置、オーディオ・レコーダ、ＧＰＳ（ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）、ポータブル・ウェブ・ブラウザ、のうち少なくとも１つであることを特徴とする請求項１に記載のシステム。
【請求項３】
前記ウェブサービスは、イメージ・ウェブサービス、ビデオ・ウェブサービス、ストレージ・ウェブサービス、オーディオ・ファイル・ウェブサービス、データ・バックアップ・ウェブサービス、またはソーシャル・ネットワーク・ウェブサービスのうち少なくとも１つであることを特徴とする請求項１に記載のシステム。
【請求項４】
前記ユーザに関連付けられた前記装置の集合は完全に接続されたメッシュ内のエンドポイントの集合であることを特徴とする請求項１に記載のシステム。
【請求項５】
前記ウェブサービスは、複数のエンドポイントの間のオフライン・データ同期、または複数のエンドポイント間の協調シナリオのうち少なくとも１つを拡張することを特徴とする請求項４に記載のシステム。
【請求項６】
前記２つまたはそれ以上の装置は、同期メタデータの一部をシームレスに解釈し、前記同期メタデータには、アイテム・レベルの同期メタデータとコレクション・レベルの同期メタデータが含まれることを特徴とする請求項１に記載のシステム。
【請求項７】
メタデータの特徴をアイテムに対して実現するアイテム・コンポーネントをさらに備え、前記アイテムは写真、個人の連絡先、画像ファイル、データの一部、映像の一部、音声の一部、グラフィックの一部、テキストの一部のうち少なくとも１つであることを特徴とする請求項１に記載のシステム。
【請求項８】
前記メタデータの特徴は同期メタデータの一部であり、前記同期メタデータ一部はペアまたはトークンのうち少なくとも１つであることを特徴とする請求項７に記載のシステム。
【請求項９】
前記同期メタデータの一部は更新バージョン構造を示し、前記更新バージョン構造は、最終更新に関連するデータ、変更を行った装置のローカル・タイムでの仮想的な更新時刻、または変更を行ったエンティティのうち少なくとも１つを含むことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記同期メタデータの一部をシリアル化して、クライアントが変更列挙または衝突検出のうち少なくとも１つを利用できるようにするコレクション・ハンドラをさらに備えることを特徴とする請求項８に記載のシステム。
【請求項１１】
前記シリアル化された同期メタデータの一部は、少なくとも１つのツームストーンのクリーンアップを使用して、前記ウェブサービスからのリモート削除をクリーンアップすることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記コレクション・ハンドラは、前記シリアル化された同期メタデータの一部をクロック・ベクトルとして利用し、係るクロック・ベクトルはバージョンのベクトルとして定義されることを特徴とする請求項１１に記載のシステム。
【請求項１３】
衝突レゾルバをさらに備え、前記衝突レゾルバは、
更新が非同期可能クライアントによって行われた場合は、更新されているアイテムに対する前記更新バージョン構造内の前記更新バージョン情報の一部を削除すること、
同期可能装置によって更新されているアイテムに対する前記更新バージョン構造内の前記更新バージョン情報の一部を設定する装置を使用すること、または、
アイテムが削除されたときに前記同期メタデータの一部のコピーを保持し、削除されたアイテムに対し、前記更新時刻から割り当てられた追加の同期メタデータを有する削除済みアイテムリストへのアクセスを提供すること、
のうち少なくとも１つを実現することを特徴とする請求項１２に記載のシステム。
【請求項１４】
複数の装置とウェブサービスとの間のデータ整合性の維持を容易にするコンピュータ実行型の方法であって、
２つまたはそれ以上の装置を、接続メッシュ内のエンドポイントとして定義するステップ（７０２）と、
少なくとも１つの装置に関連付けられたデータの一部にデータ変更を加えるステップと（７０４）と、
前記装置の少なくとも１つからのリソースのみを利用して、前記接続メッシュ内の前記２つまたはそれ以上の装置に対して、前記データ変更を実施するステップ（７０６）と、
前記装置の少なくとも１つからのリソースのみを利用して、ウェブサービスに対する前記データ変更を実施するステップ（７０６）と
を含むことを特徴とする方法。
【請求項１５】
ウェブサービスと複数の装置との間のオフライン・シナリオまたは協調シナリオに対するデータ同期の使用を容易にするコンピュータ実行型のシステムであって、
特定のエンティティに関連する複数の装置のメッシュ接続を特定する手段（１０２、７０２）と、
少なくとも１つの装置とウェブサービスとの間でデータを通信する手段（１０８、１０６、１０４、７０４）と、
前記ウェブサービス内の前記データをホストする手段（１０４）と、
前記データを前記特定のエンティティに対するアカウントと関連付ける手段（１０２、１０４）と、
前記データ内の変更を検出する手段であって、前記変更は、前記メッシュ接続内の少なくとも１つの前記ウェブサービスまたは少なくとも１つの前記装置の内部で実行される、手段（１０２、１０６、１０４、７０４、８０６、８０８）と、
前記ユーザに関連付けられた前記装置の集合内の２つまたはそれ以上の装置、または
前記ウェブサービスによってホストされるアカウントと前記ユーザに関連付けられた前記装置の集合内の２つまたはそれ以上の装置
のうち少なくとも１つの間でデータ整合性を維持するために少なくとも１つの装置からのコンピューティング・リソースを利用する手段（１０２、１０６、７０６）と、
を備えることを特徴とするコンピュータ実行型のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置およびウェブサービスに対するマルチ・マスタ・オフラインと協調に必要な最小限拡張に関する。
【背景技術】
【０００２】
コンピュータ技術（例えば、マイクロプロセッサの速度、メモリ容量、データ転送帯域幅、ソフトウェア機能、等）の進歩により、一般に、様々な業界においてコンピュータ・アプリケーションが増加することとなった。これまで以上に強力なサーバ・システムは、しばしばサーバ・アレイとして構成されるが、例えばワールドワイドウェブ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）等の外部ソースから生ずるサービス要求に対して提供されるのが一般的である。
【０００３】
かかる進歩を考慮すると、利用可能な電子データの量は増加しており、ユーザ・フレンドリで、迅速なデータの検索と取出しを容易にするデータを、管理しやすい方法で格納することがより重要となる。今日では、１つまたは複数のデータベースまたはデータ・ストアに電子データを格納することが一般的なアプローチである。一般に、典型的なデータ・ストアは、例えば、コンピュータ・プログラムが所望のデータを迅速に検索して選択できるように構成されたデータを有する編成された情報集合と呼ぶことができる。一般に、データ・ストアの中のデータは１つまたは複数のテーブルを介して編成される。かかるテーブルは行と列からなる配列として構成される。
【０００４】
一般に、各データは、単体ではあまり有益ではない。データ・ストア・アプリケーションはデータをより有用なものとするが、なぜならば、データ・ストア・アプリケーションはユーザがデータを編成して処理することを支援するからである。データ・ストア・アプリケーションにより、ユーザはデータを比較し、ソートし、順序付け、マージし、分離し、相互接続して、有用な情報をデータから生成しデータによって提示することができる。データベースの容量と多様性は信じられないほど増大し、データベースを利用する事実上無限の記憶容量を可能としている。しかし、典型的なデータベース・システムでは、効率的かつ合理的に情報または細部を伝達する点で限界がある。例えば、ファイル名、ファイル・サイズ、作成日、アクセス日、修正日、位置、属性等のような情報を提供するためには、細かな視点でデータファイルを選択しなければならない。
【０００５】
エンド・ユーザが継続的にますますデータを作成すると、かかるデータを発見し、関連付け、操作し、格納するというようなことに関わる問題と困難が増大する。エンド・ユーザは、文章を書き、写真を保存し、ＣＤからの音楽をリッピングし、メールを受信し、送信済みメールのコピーを保管する等を行う。例えば、音楽ＣＤを作成するという単純な処理において、エンド・ユーザは何メガバイトものデータを作成する可能性がある。ＣＤから音楽をリッピングし、適切なフォーマットにファイルを変換し、ジュエル・ケースのカバーを作成し、ＣＤのラベルをデザインするには、すべてデータの作成が必要である。
【０００６】
さらに、開発者および／またはユーザに関わる無限のデータで、異種のマシンおよび／またはシステム間のデータ整合性を保つことは、複雑で手のつけようのない作業となりうる。例えば、ユーザは様々な装置（例えば、ラップトップ・マシン、デスクトップ、等）を利用することができるが、この場合、データの整合性および／または同期が重大な問題である。特に、各装置が大量のデータを生成すると、かかるデータを同期することは極めて困難な趣旨のものである。
【発明の概要】
【０００７】
以下では、本明細書で記載した幾つかの態様の基本的理解を提供するために発明の簡単な概要を提示する。この概要は請求項に記載されている主題の広範囲な概要ではない。本要約は、請求項に記載されている主題の主要または重要な要素を特定するものではなく、本発明の範囲を画するものでもない。本要約の唯一の目的は、後に提示するより詳細な説明に対する前置きとして、請求項に記載されている主題のいくつかの概念を簡潔に提示することである。
【０００８】
本発明は、複数の装置とウェブサービスとの間のデータの同期を容易にするシステムおよび／または方法に関する。マスタ同期コンポーネントは、２つまたはそれ以上の装置間でのシームレスかつ普遍的なデータ同期を可能にすることができる。特に、マスタ同期コンポーネントは、専ら２つまたはそれ以上の装置のうち少なくとも１つに関するコンピューティング・リソースを活用することで、当該装置間のデータ整合性をもたらすことができる。さらに、マスタ同期コンポーネントは、ウェブサービスと２つまたはそれ以上の装置との間でデータ変更および／または更新を提供することができる。アイテム・レベルのメタデータとコレクション・レベルのメタデータを利用し実行することにより、マスタ同期コンポーネントは、複数の装置および／またはウェブサービスに対してシームレスかつノンイントルーシブにデータ同期を提供することができる。
【０００９】
さらに、本発明により、正しい衝突検出と解像度伝播を可能とすることができる。一般に、ウェブサービスを再構築する必要なしにピアツーピア機能またはオフライン機能を可能とするためにそのウェブサービスが実装できるアルゴリズムが提供される。請求項に記載されている主題の他の態様では、特定のエンティティに関連付けられた複数の装置間のデータ整合性を管理することを容易にする方法が提供される。
【００１０】
以下の説明および添付の図面では、請求項に記載されている主題の特定の例示的態様を詳細に説明する。しかし、これらの態様は、発明の原理を使用できる様々な方法のうちの一部を示すにすぎず、請求項に記載されている主題はすべてのかかる態様とその均等物を含むことを意図している。請求項に記載されている主題の他の利点および新規な特徴は、図面と関連して検討すると、以下の本発明の詳細な説明から明らかになろう。
【図面の簡単な説明】
【００１１】
【図１】複数の装置とウェブサービスとの間のデータ同期を容易にする例示的なシステムのブロック図である。
【図２】ウェブサービスに関連するデータ変更を検出した際にユーザ装置間のデータ整合性を維持することを容易にする例示的なシステムのブロック図である。
【図３】２つまたはそれ以上のユーザ装置の間でシームレスかつ普遍的にデータ同期するようにウェブサービスを適合させることを容易にする例示的なシステムのブロック図である。
【図４】特定のエンティティに関連付けられた複数の装置間でのデータ整合性の管理を容易にする例示的なシステムのブロック図である。
【図５】データの更新の特定を強化し、様々な装置および／またはウェブサービスにかかる更新を行き渡らせることを容易にする例示的なシステムのブロック図である。
【図６】複数の装置および／またはウェブサービスの間でのデータ同期を自動的に管理することを容易にする例示的なシステムのブロック図である。
【図７】特定のエンティティに関連付けられた複数の装置間のデータ整合性を管理する例示的な方法を示す図である。
【図８】２つまたはそれ以上のユーザ装置の間でシームレスかつ普遍的にデータ同期するようにウェブサービスを適合させることを容易にする例示的な方法を示す図である。
【図９】請求項に記載されている主題の新規な態様を使用できる例示的なネットワーク環境を示す図である。
【図１０】請求項に記載されている主題に従って使用できる例示的な動作環境を示す図である。
【発明を実施するための形態】
【００１２】
請求項に記載されている主題について図面を参照して説明するが、全体を通して、同一の参照番号は同一の要素を参照する。以下の記載では、説明のため、本発明の徹底的な理解を提供するために多数の具体的な詳細を説明する。しかし、これらの具体的な詳細がなくとも請求項に記載されている主題を実施できることは明らかであろう。他の例では、本発明の説明を容易にするために、公知の構造および装置をブロック図で示す。
【００１３】
本明細書で用いられる「コンポーネント」、「システム」、「データ・ストア」、「サービス」、「クラウド」、「装置」、「アカウント」、「ハンドラ」、「レゾルバ」、「エンティティ」等の用語は、コンピュータ関連のエンティティ、すなわち、ハードウェア、（例えば実行中の）ソフトウェア、および／またはファームウェアを指すものである。例えば、コンポーネントは、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、プログラム、関数、ライブラリ、サブルーチン、および／またはコンピュータまたはソフトウェアとハードウェアの組合せとすることができる。例として、サーバで実行されるアプリケーションとサーバの両方がコンポーネントとすることができる。１つまたは複数のコンポーネントが１プロセス内に存在することができ、コンポーネントを１台のコンピュータに配置するか、および／または、２つまたはそれ以上のコンピュータの間で分散することができる。所与の２者の同期において複数のマスタが存在することができ、データをほぼ任意のトポロジ（例えば、少なくとも１つのマスタとのペア）で同期できることは理解されよう。
【００１４】
さらに、請求項に記載されている主題を、開示された主題を実装するようにコンピュータを制御するためのソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを作成するための標準的なプログラミング技法および／またはエンジニアリング技法を用いて、方法、装置、または製品として実装してもよい。本明細書で用いられる「製品」という用語は、任意のコンピュータ読取可能装置、キャリア、または媒体からアクセス可能なコンピュータ・プログラムを含むものである。例えば、コンピュータ読取可能媒体には、磁気記憶装置（例えば、ハードディスク、フロッピー（登録商標）・ディスク、磁気ストリップ、等）、光ディスク（例えば、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｋ）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）等）、スマートカード、およびフラッシュメモリ装置（例えば、カード、スティック、キードライブ等）が含まれるが、それらに限定されない。さらに、電子メールの送受信またはインターネットまたはＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）のようなネットワークにアクセスする際に用いられるような、コンピュータ読取可能な電子データを運ぶために搬送波を使用できることは理解されよう。もちろん、請求項に記載されている主題の範囲または趣旨から逸脱しない多くの修正をこの構成に加えうることは、当業者には認識されよう。さらに、「例示的」という用語は、本明細書では例、事例、または例示を意味するように用いられる。「例示的」として本明細書で説明したいかなる態様または設計も、必ずしも他の態様または設計に対して好適または有利であるとは解釈されない。
【００１５】
ここで図を参照する。図１は、複数の装置とウェブサービスとの間でデータ同期を容易にするシステム１００を示す。システム１００は、２つまたはそれ以上の装置１０６の間、および／またはウェブサービス１０４と２つまたはそれ以上の装置１０６との間で、データ整合を実現できるマスタ同期コンポーネント１０２を含むことができる。一般に、複数の装置とウェブサービス１０４との間のデータ同期と同様に、複数装置のデータ同期を、マスタ同期コンポーネント１０２によって使用することができる。特に、マスタ同期コンポーネント１０２は、２つまたはそれ以上の装置１０６内のデータ整合性を維持するために、少なくとも１台の装置に関連付けられたコンピューティング・リソースを活用することができる。さらに、マスタ同期コンポーネント１０２は、２つまたはそれ以上の装置１０６に関するコンピューティング・リソースを利用することにより、ウェブサービス１０４と２つまたはそれ以上の装置１０６との間のデータ同期を実装することができる。換言すれば、システム１００はシームレスかつウェブサービスから独立してデータ同期を提供できる。
【００１６】
例えば、ユーザは、データ（例えば、ファイル、写真、画像、ビデオ、オーディオ、等）を格納するためにスマートフォン、ラップトップ・コンピュータ、およびデスクトップ・コンピュータを所有するか、または利用することができる。本発明によって、スマートフォン、ラップトップ・コンピュータ、デスクトップ・コンピュータ間のデータの一貫性を保つことができる。換言すれば、ユーザ設定（例えば、どの装置を含めるか、どのデータを同期するか、等）に基づき、以下を保証するために装置および各データを評価することができる。すなわち、スマートフォン上のデータがラップトップ・コンピュータとデスクトップ・コンピュータに含まれていること、ラップトップ・コンピュータ上のデータがスマートフォンとデスクトップ・コンピュータに含まれていること、および、デスクトップ・コンピュータ上のデータがスマートフォンとラップトップ・コンピュータに含まれていること、である。
【００１７】
別の例では、ユーザは装置（例えば、スマートフォン、ラップトップ・コンピュータ、およびデスクトップ・コンピュータ）を利用して、画像などのデータを収集し、キャプチャし、保存することができ、かかるデータを、画像に関連付けられたウェブサービスと関連させて利用することができる。ウェブサービスにより、ユーザはアカウントを設定して、画像を参照、共有、編集、等のためにアップロードすることができる。さらに、画像をスマートフォン、ラップトップ、および／またはデスクトップ・コンピュータのような様々な装置に点在または格納することができる。装置のコンピュータ・リソースを活用することによって、データ同期を提供してウェブサービスと独立したデータ整合性を保証することができる。換言すれば、ウェブサービスが以下のような正確な複製されたデータを有することを保証することができる。すなわち、ユーザ向けのウェブサービス上のデータがスマートフォン、ラップトップ・コンピュータ、およびデスクトップ・コンピュータに含まれていること、スマートフォン上のデータがユーザ向けのウェブサービス、デスクトップ・コンピュータ、およびラップトップ・コンピュータに含まれていること、ラップトップ・コンピュータ上のデータがユーザ向けのウェブサービス、スマートフォン、およびデスクトップ・コンピュータに含まれていること、デスクトップ・コンピュータ上のデータがユーザ向けのウェブサービス、スマートフォン、およびラップトップ・コンピュータに含まれているということである。
【００１８】
さらに、システム１００は、任意の適切なおよび／または必要なインタフェース・コンポーネント１０８（本明細書では「インタフェース１０８」と称する）を含むことができ、インタフェース１０８は、マスタ同期コンポーネント１０２を事実上任意のオペレーティング・システム（複数可）および／またはデータベース・システム（複数可）に統合し、ならびに／またはその両方と統合するための、様々なアダプタ、コネクタ、チャンネル、通信経路、等を提供する。さらに、インタフェース１０８は、マスタ同期コンポーネント１０２、ウェブサービス１０４、装置１０６の集合のうち少なくとも１台の装置、システム１００に関連付けられた他の任意の装置および／またはコンポーネントとの相互作用を提供する様々なアダプタ、コネクタ、チャンネル、通信経路等を提供することができる。
【００１９】
図２はウェブサービスに関連するデータ変更を検出した際にユーザ装置間のデータ整合性を維持することを容易にするシステム２００を示す。システム２００は、２つまたはそれ以上の装置１０６の間、ならびに２つまたはそれ以上の装置１０６とウェブサービス１０４の間でデータ同期を行うことができるマスタ同期コンポーネント１０２を含むことができる。一般に、システム１００は、２つまたはそれ以上の装置１０６および／またはウェブサービス１０４と関連付けられたデータが実質的に同一であることを保証するためのデータ複製技法を利用することができる。ウェブサービス１０４は、特定のユーザに関連付けられたユーザ・アカウント２０２を含むことができる。特定のユーザは、ウェブサービス１０４にアクセスするために安全な情報または証明書（例えば、ユーザ名、パスワード等）を提供することができる。特定のユーザが、データの一部をウェブサービス１０４へ通信して係るウェブサービスを使用できることは理解されよう。
【００２０】
装置１から装置Ｎのような、任意の適切な数の装置が存在することができ、ここでＮが正の整数であることは理解されよう。装置は、スマートフォン、ラップトップ、デスクトップ、コンピュータ、マシン、ＰＤＡ（ｐｏｒｔａｂｌｅ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、セルラー装置、ページャ、双方向通信、ハンドヘルド、モバイル装置、ブラウジング装置、ワイヤレス装置、携帯用ゲーム装置、ゲーミング・コンソール、メディア・プレーヤ、携帯型メディア・プレーヤ、ペンドライブ、ハードドライブ、データ・ストア、デジタルカメラ、画像収集装置、ビデオ収集装置、ビデオカメラ、音声収集装置、オーディオ・レコーダ、ＧＰＳ（ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）、携帯用ウェブ・ブラウザ、等であるがこれらに限られない。さらに、本発明では、データ同期を任意の適切なウェブサービスに提供できることは理解されよう。このウェブサービスは、イメージ・ウェブサービス、ビデオ・ウェブサービス、ストレージ・ウェブサービス、オーディオ・ファイル・ウェブサービス、データ・バックアップ・ウェブサービス、ソーシャル・ネットワーク・サービス、等でありうるがこれらに限られない。
【００２１】
システム２００は、さらに、マスタ同期コンポーネント１０２、ウェブサービス１０４、２つまたはそれ以上の装置１０６、インタフェース１０８、等によって利用および／またはアクセスされる任意の適切なデータを含みうるデータ・ストア２０４を含むことができる。例えば、データ・ストア２０４は、同期データ、同期設定、ユーザの好み、タイム・スタンプ・データ、バージョニング・データ、ウェブサービス設定、装置リスト、アイテム・メタデータ要件、アイテム・メタデータ要件の集合、更新アルゴリズム、衝突検出技法、衝突解決技法、更新データ（例えば、時間、ソース、位置、等）等を含むことができるがこれらに限られない。さらに、データ・ストア２０４はスタンドアロンのコンポーネントとして示されているが、データ・ストア２０４は、マスタ同期コンポーネント１０２に組み込んだスタンドアロンのコンポーネント、装置、インタフェース１０８、および／またはそれらの任意の適切な組合せでありうることは理解されよう。
【００２２】
データ・ストア２０４は、例えば、揮発性メモリまたは不揮発性メモリのいずれかとすることができ、または、揮発性メモリと不揮発性メモリの両方を含むことができることは理解されよう。限定ではなく例として、不揮発性メモリは、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ＰＲＯＭ（ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリは、外部キャッシュメモリとして動作するＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含むことができる。限定ではなく例として、ＲＡＭは、ＳＲＡＭ（ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ  ＳＤＲＡＭ）、ＥＳＤＲＡＭ（ｅｎｈａｎｃｅｄ  ＳＤＲＡＭ）、ＳＬＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ｄｉｒｅｃｔ  ＲＡＭ）、ＤＲＤＲＡＭ（ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ）などの多くの形式で利用可能である。本発明のシステムと方法のデータ・ストア２０４は、これらおよび他の任意の適切な種類のメモリを含むことを意図しているが、これらに限らない。さらに、データ・ストア２０４は、サーバ、データベース、ハードドライブ、ペンドライブ、外部ハードドライブ、携帯用ハードドライブ、等でありうることは理解されよう。
【００２３】
図３は２つまたはそれ以上のユーザ装置の間でシームレスかつ普遍的にデータ同期するようにウェブサービスを適合させることを容易にするシステム３００を示す。システム３００は２つまたはそれ以上の装置１０６の間、または、ウェブサービス１０４と２つまたはそれ以上の装置１０６の間にデータ同期を供給できるマスタ同期コンポーネント１０２を含むことができる。システム３００は、完全接続型メッシュ内の複数のエンドポイント（例えば、装置、コンポーネント、等）間のオフライン・シナリオまたは協働作業シナリオにウェブサービス１０４を拡張できるマルチマスタ同期機能を提供することができる。例えば、ウェブサービス１０４により、リッチ・クライアントは、様々な場所（例えば、職場、家、車、休暇先、等）で、複数の装置と同期状態にあることができる。
【００２４】
マスタ同期コンポーネント１０２により、エンドポイントはマルチマスタ同期システムで必要とされる同期メタデータを解釈することができる。特に、ウェブサービス１０４は、ＡＰＩを提供するか、または既存のＡＰＩを利用でき、ここで、係るＡＰＩはアイテム・レベルおよびコレクション・レベルの同期メタデータを実現（ｅｎｆｏｒｃｅ）することができる。アイテム・レベルおよびコレクション・レベルの同期メタデータを使用することによって、ウェブサービス１０４は、かかるウェブサービス１０４を再構築（例えば、クライアント側の独立したデータ同期）をすることなく、ピアツーピア（Ｐ２Ｐ）機能またはオフライン機能（データ同期を含む）を提供することができる。
【００２５】
システム３００は、アイテム（例えば、写真、個人の連絡先、画像ファイル、データの一部、映像の一部、音声の一部、グラフィックの一部、テキストの一部、等）に対してメタデータの特徴を実現できるアイテム・コンポーネント３０２を含むことができる。アイテム・コンポーネント３０２は、同期メタデータの格納と取出し（例えば、同期メタデータをトークン、小さなブロブ、等として扱うこと）を可能にすることができる。アイテム・レベルのメタデータは、更新バージョンの構造を示す組（例えば、第１の数、第２の数、小さな数、大きな数、等）を含むことができる。例えば、更新バージョンの構造は、最後の更新者（例えば、データを変更／更新したエンティティ）、およびその変更を行ったエンドポイントのローカル・タイムで仮想的な更新時刻を含むことができる。例えば、アイテム・コンポーネント３０２は、（例えば、後に詳細に論ずる）具体的な衝突解決、検出シナリオ、およびツームストーンのクリーンアップで使用できる作成バージョンを利用することができる。別の例では、アイテム・コンポーネント３０２は、ブール値を削除フラグまたはツームストーン・マーカのうちの少なくとも一つとして利用することができる。
【００２６】
システム３００はさらに、同期されたアイテム（例えば、アルバム、アドレス・ブック、フォルダ、等）の集合に対してメタデータの特徴を実現できるコレクション・ハンドラ３０４を含むことができる。コレクション・ハンドラ３０４は、クライアントが変更列挙および衝突検出の基礎として使用できるシリアル化された同期データの格納と取出しを可能とすることができる。１つの例では、ツームストーンのクリーンアップを、（例えば、データ・ストアから）リモート削除されたものをクリーンアップするための戦略として利用することができる。このコレクション・レベルのメタデータは、クロック・ベクトルのようなマルチマスタの同期システムで利用できるトークンとすることができる。コレクション・ハンドラ３０４は、バージョンのベクトルを拡張された情報とともに利用して、部分的な更新、割込み、フィルタリング、等を可能とすることができる。
【００２７】
システム３００は、更新アルゴリズムを利用して正確な衝突検出と解決伝播を可能とする衝突レゾルバ３０６を含むことができる。衝突レゾルバ３０６は、ウェブサービス１０４が同期に参加できるようにし、更新が衝突した場合に、エンドポイントが合理化することを可能にするアルゴリズムを使用することができる。更新が非同期可能クライアント（例えば、ウェブ・ユーザ・インタフェース、既存のアプリケーション、サードパーティ、等）によって行われた場合、衝突レゾルバ３０６は、メタデータの残り（例えば、作成日のバージョン）を保持しながら、更新されているアイテムに関する更新バージョン情報を消去することができる。これにより、アイテムが更新されたかどうかをエンドポイントが判定できることは理解されよう（例えば、ユーザが、既に「見た」アイテムを更新する）。同期可能エンドポイントがアイテムを更新すると、衝突レゾルバ３０６はエンドポイントのＡＰＩを利用してアイテムのバージョン情報を設定することができる。ウェブサービス１０４はこのエントリを尊重して、かかるバージョン情報を修正または操作しないことができる。衝突レゾルバ３０６はさらに削除およびツームストーンを扱うことができる。特に、衝突レゾルバ３０６は、同期メタデータのコピーを保持し、アイテムが削除されたときに削除アイテムに対するアクセスを提供することができる。さらに、衝突レゾルバ３０６は、更新時刻から割り当てられた追加の同期メタデータに対するアクセスを提供することができる。さらに、同期可能エンドポイントは、同期のスナップショットとして取得されたコレクション・レベルのメタデータのコピーを作成することもできる。
【００２８】
図４は、特定のエンティティに関連付けられた複数の装置間でのデータ整合性の管理を容易にするシステム４００を例示する。システム４００は、複数の装置４０４に対するデータ同期を保証するためにアイテムおよびアイテム集合に対してメタデータ要件を実現できるマスタ同期コンポーネント１０２を含むことができる。特に、複数の装置４０４をユーザ４０２に関連付けることができる。例えば、複数の装置４０４がユーザ４０２によって利用、アクセス、所有等され得る。さらに、ユーザ４０２は、少なくとも１つの装置と相互作用または通信できる任意の適切なエンティティでありうることは理解されよう。例えば、エンティティは、人、人のグループ、マシン、ウェブサイト、会社、企業、コミュニティ、家族、ネットワーク、サーバ、等とすることができるがこれらに限られない。
【００２９】
ユーザ４０２は、データおよび／またはアイテムを収集、操作、管理、通信、閲覧、編集、等するために様々な装置と対話し様々な装置を利用することができる。この特定の例では、複数の装置４０４は、デスクトップ・コンピュータ４０６、ラップトップ・マシン４０８、デジタルカメラ４１０、タブレットコンピュータ４１２、スマートフォン４１４、ＰＤＡ（ｐｏｒｔａｂｌｅ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）４１６、ビデオカメラ４１８、携帯電話４２０を含むことができる。マスタ同期コンポーネント１０２は、複数の装置４０４のうち２つまたはそれ以上の間でのデータ整合性とデータ同期を可能とすることができる。かかる２つまたはそれ以上の装置がデータと同期できるようにすることで、ユーザ４０２はデータをシームレスで普遍的に管理することができる。換言すれば、各装置上のデータが整合しており、それにより各装置に対して実質的に同一なデータを提供することができる。さらに、ユーザ４０２がユーザの好みおよび／または設定を提供できることは理解されよう。かかるカスタマイズされた設定には、どのデータを同期するか、どの装置と同期するか、セキュリティ設定（例えば、ユーザ名、パスワード、等）、同期の頻度、および／またはデータ整合性に関連付けられた他の任意の適切な設定を含めることができる。
【００３０】
図５は、データ更新の特定を強化し、様々な装置および／またはウェブサービスにかかる更新を行き渡らせることを容易にするシステム５００を示す。システム５００はさらに、注釈集約器１０２、ＰＯＩ（図示せず）、インタフェース１０８、特定されたＰＯＩデータ付きマップ５０４、および／またはそれらの任意の適切な組合せのうち少なくとも１つを取り込むことができるクラウド５０２を利用することができる。クラウド５０２が、本発明に関連付けられた任意の適切なコンポーネント、装置、ハードウェア、および／またはソフトウェアを含みうることは理解されよう。クラウド５０２は、パーティ（例えば、オフサイト、オンサイト、サードパーティ、等）によって維持され、特定されたユーザ５０４がネットワーク（例えば、インターネット、無線、ＬＡＮ、セルラー、Ｗｉ−Ｆｉ、ＷＡＮ、等）上でアクセス可能な任意のリソース集合（例えば、ハードウェア、ソフトウェア、それらの組合せ、等）を指すことができる。クラウド５０２は、任意のサービス、ネットワークサービス、クラウドサービス、リソース集合、等を含むものであり、特定されたユーザがネットワークを介してクラウド５０２にアクセスすることができる。例えば、２人またはそれ以上のユーザ（例えば、ユーザ５０４）はクラウド５０２にアクセス、参加、および／またはクラウド５０２と相互作用することができ、同様に、マスタ同期コンポーネント１０２、インタフェース１０８、および／またはそれらの任意の適切な組合せのうち少なくとも１つにアクセス、参加、および／またはそれらと相互作用することができる。例えば、ユーザ５０４はクラウド５０２と通信して、ウェブサービス集合５０６からウェブサービスにアクセスすることができる。さらに、かかるウェブサービス５０６との通信中に、クラウド５０２はマスタ同期コンポーネント１０２を介してデータ同期を提供することができる。さらに、クラウド５０２は、任意の適切な数のサービス（複数可）を任意の適切な数のユーザ（複数可）および／またはクライアント（複数可）に提供することができる。特に、クラウド５０２は、ユーザに関連付けられた２つまたはそれ以上の装置間、またはウェブサービスとユーザに関連付けられた２つまたはそれ以上の装置との間でデータ整合性を提供するリソースおよび／またはサービスを含むことができる。特に、クラウド５０２は、データ同期を提供するために少なくとも１つの装置と関連付けられたリソースを利用することができ、ここで、クラウド５０２は、ウェブサービスからのリソースと独立してデータ整合性を自動的かつ動的に保証することができる。
【００３１】
図６は、複数の装置および／またはウェブサービスの間でのデータ同期を管理することを容易にするためのインテリジェンスを使用したシステム６００を示す。システム６００は、マスタ同期コンポーネント１０２、２つまたはそれ以上の装置１０６、ウェブサービス１０４、およびインタフェース１０８を含むことができ、これらは前の図で説明した各コンポーネント、装置、サービス、およびインタフェースと実質的に同一とすることができる。システム６００はさらに、インテリジェント・コンポーネント６０２を含む。マスタ同期コンポーネント１０２がインテリジェント・コンポーネント６０２を利用して、データの同期を容易にすることができる。例えば、インテリジェント・コンポーネント６０２は、アイテムに対するメタデータの特徴、アイテム集合に対するメタデータの特徴、同期設定、衝突検出、衝突解決、アイテム・レベル・メタデータに関連付けられたトークン・データ、集合レベル・メタデータに関連付けられたトークン・データ、更新バージョンの構造、メタデータの組、シリアル化された同期メタデータ、クロック・ベクトル・データ、バージョン・データのベクトル、エンドポイントのデータ、等を推論することができる。
【００３２】
インテリジェント・コンポーネント６０２は、同期するのに最適なデータおよびそれに関連付けられた優先度を特定するために、情報値（ＶＯＩ）計算を使用することができる。例えば、ＶＯＩ計算を利用することにより、最も理想的および／または適切なデータを、２つまたはそれ以上の装置１０６の間で、またはウェブサービス１０４と２つまたはそれ以上の装置１０６の間で同期することができる。さらに、インテリジェント・コンポーネント６０２は、イベントおよび／またはデータを介して捕捉した１組の観測結果から、システム、環境、および／またはユーザの状態を推論または推測できることは理解されよう。例えば、推論を使用して、具体的なコンテキストまたはアクションを特定することができ、または、状態に関する確率分布を生成することができる。推論は確率的、すなわち、データおよびイベントを考慮して着目する状態の確率分布を計算したものとすることができる。推論はまた、１組のイベントおよび／またはデータから高レベルのイベントを構成するために使用される技法を指すことができる。かかる推論により、イベントが時間的に近接して相関しているか否かに関わらず、およびイベントおよびデータが１つまたは幾つかのイベント・ソースおよびデータ・ソースから来たものであるか否かに関わらず、１組の観測されたイベントおよび／または格納されたイベント・データから新たなイベントまたはアクションが構築される。様々な（明示的および／または暗黙的にトレーニングされた）分類方式および／またはシステム（例えば、サポート・ベクタ・マシン、ニューラル・ネットワーク、エキスパート・システム、ベイジアン・ネットワーク、ファジー・ロジック、データ・フュージョン・エンジン・・・）を、請求項に記載されている主題と関連付けて自動的な動作および／または推論された動作を実施することと関連して使用することができる。
【００３３】
分類器は、入力属性ベクトル、ｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘｎ）を、入力が分類に属する信頼度にマップする関数、即ち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）である。かかる分類は、確率および／または統計ベースの分析（例えば、分析ユーティリティおよびコストへの因数分解）を利用して、ユーザが自動実行を希望する動作を予知または推論することができる。サポートベクトルマシン（ＳＶＭ）は、利用可能な分類器の例である。ＳＶＭは可能な入力の空間内に超曲面を発見するように動作し、超曲面は非トリガ形式のイベントからトリガ基準を分離することを試みる。直感的には、これによりトレーニングデータと同一ではないがそれに類似したテストデータに対する分類が正確になる。他の有向および非有向モデル分類アプローチには、例えば、ナイーブベイズ、ベイジアン・ネットワーク、決定木、ニューラル・ネットワーク、ファジーロジックモデルが含まれ、様々なパターンの独立性を与える確率分類モデルを利用することができる。本明細書で用いる分類には、優先度モデルの展開に利用される統計的回帰も含まれる。
【００３４】
マスタ同期コンポーネント１０２はさらに、様々な種類のユーザ・インタフェースを提供してユーザとマスタ同期コンポーネント１０２に結合された任意のコンポーネントとの間の相互作用を容易にするプレゼンテーション・コンポーネント６０４を利用することができる。示したように、プレゼンテーション・コンポーネント６０４は、マスタ同期コンポーネント１０２とともに利用可能な別個のエンティティである。しかし、プレゼンテーション・コンポーネント６０４および／または同様なビュー・コンポーネントをマスタ同期コンポーネント１０２および／またはスタンドアロンのユニットに組み込むことができることは理解されよう。プレゼンテーション・コンポーネント６０４は、１つまたは複数のＧＵＩ（ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）、コマンド・ライン・インタフェース、等を提供することができる。例えば、ロード、インポート、読み込み、等を行うための領域または手段、データをユーザに提供するＧＵＩを表示することができ、かかるＧＵＩは上記の結果を表示するための領域を含むことができる。これらの領域は、ダイアログ・ボックス、スタティック・コントロール、ドロップダウン・メニュー、リスト・ボックス、ポップアップ・メニュー、エディット・コントロール、コンボ・ボックス、ラジオ・ボタン、チェック・ボックス、プッシュ・ボタン、およびグラフィック・ボックスを含む既知のテキスト領域および／またはグラフィック領域を備えることができる。さらに、ナビゲート用の垂直および／または水平なスクロール・バー、領域が参照可能かどうかを判定するためのツールバー・ボタンのようなプレゼンテーションを容易にするためのユーティリティを使用することができる。例えば、ユーザは、マスタ同期コンポーネント１０２に結合および／または組み込まれた１つまたは複数のコンポーネントと相互作用することができる。
【００３５】
ユーザはまた、例えば、マウス、ローラー・ボール、タッチパッド、キーパッド、キーボード、タッチ・スクリーン、ペンおよび／または音声駆動、ボディ・モーション検出、のような様々な装置を介して情報を選択し提供するための領域と相互作用することができる。一般に、キーボード上のプッシュ・ボタンまたはエンター・キーのような機構を情報の入力後に使用することができる。しかし、請求項に記載されている主題はそのように限定されないことは理解されよう。例えば、単にチェック・ボックスをハイライトすることで情報伝達を開始することができる。別の例では、コマンド・ライン・インタフェースを使用することができる。例えば、コマンド・ライン・インタフェースは（例えば、ディスプレイ上のテキスト・メッセージおよびオーディオ・トーンを介して）テキスト・メッセージを提供して情報を入力するようユーザに促すことができる。ユーザは次いで、インタフェース・プロンプト内に提供されたオプションに対応する英数字入力またはプロンプト内に提示された質問に対する答えのような、適切な情報を提供することができる。コマンド・ライン・インタフェースをＧＵＩおよび／またはＡＰＩと関連して使用できることは理解されよう。さらに、コマンド・ライン・インタフェースを、限られたグラフィック・サポート、および／または低帯域幅の通信チャネルを有するハードウェア（例えば、ビデオ・カード）および／またはディスプレイ（例えば、白黒、ＥＧＡ、ＶＧＡ、ＳＶＧＡ、等）と関連して使用することができる。
【００３６】
図７〜８は、請求項に記載されている主題に従う方法および／または流れ図を示す。簡単に説明するため、かかる方法を一連の動作として図示および説明してある。本発明は図示した動作および／または動作の順序によって限定されないことは理解されよう。例えば、動作を様々な順序で、および／または並行して行うことができ、本明細書で提示および説明していない他の動作とともに行うことができる。さらに、図示した動作の全てが請求項に記載されている主題に従う方法を実施するために必要なわけではない。さらに、状態図またはイベントを介して方法を一連の相関する状態として代替的に表現できることは当業者には理解されよう。さらに、以降および本明細書を通して開示された方法を製品に格納してかかる方法をコンピュータに伝送および転送することを容易にすることができることは理解されよう。本明細書で使用する製品という用語は、任意のコンピュータ読取可能装置、キャリア、または媒体からアクセス可能なコンピュータ・プログラムを含むものである。
【００３７】
図７は、特定のエンティティと関連付けられた複数の装置間のデータ整合性を管理することを容易にする方法７００を示す。参照番号７０２で、２つまたはそれ以上の装置を、接続されたメッシュ内のエンドポイントとして定義することができる。例えば、かかる装置は、スマートフォン、ラップトップ、コンピュータ、マシン、ＰＤＡ（ｐｏｒｔａｂｌｅ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯装置、ページャ、ツーウェイ、ハンドヘルド、モバイルデバイス、ブラウジング装置、無線装置、携帯ゲーム機、ゲーミング・コンソール、メディア・プレーヤ、ポータブル・メディア・プレイヤ、ペンドライブ、ハードドライブ、データ・ストア、デジタルカメラ、画像収集装置、ビデオ収集装置、ビデオカメラ、音声収集装置、オーディオ・レコーダ、ＧＰＳ（ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）、ポータブル・ウェブ・ブラウザ、等とすることができるがこれらに限られない。
【００３８】
参照番号７０４で、少なくとも１つの装置に関連付けられたデータの一部に、データ変更を適用することができる。例えば、データ変更は、データの追加、データの削除、データの操作、データの編集、および／またはデータの他の任意の適切な修正とすることができる。参照番号７０６で、装置の少なくとも１つからのリソースを利用して、収集メッシュ内の２つまたはそれ以上の装置に対して、データ変更を実施することができる。例えば、装置のリソースを利用して、接続メッシュ内の２つまたはそれ以上の装置にわたってデータ同期を行うことができる。別の例では、データ同期を、ウェブサービスと接続メッシュ内の２つまたはそれ以上の装置の間で行うことができる。さらに、ウェブサービスからのコンピューティング・リソースを、ウェブサービスとのデータ同期を提供するために利用する必要はないことは理解されよう。
【００３９】
図８は、２つまたはそれ以上のユーザ装置の間でシームレスかつ普遍的にデータ同期するようにウェブサービスを適合させるための方法８００を示す。参照番号８０２で、アイテム・レベルの同期メタデータを実現してアイテム更新に対する更新バージョン構造を表すことができる。アイテムは例えば、写真、個人の連絡先、画像ファイル、データの一部、映像の一部、音声の一部、グラフィックの一部、テキストの一部、等とすることができる。特に、アイテム・レベルの同期メタデータは、第１の数および第２の数（例えば、小さな数、大きな数、等）のような組とすることができる。さらに、バージョン構造は、直近の更新者、およびその変更またはアイテム更新を行ったエンドポイントのローカル・タイムで仮想的な更新時刻を含むことができる。
【００４０】
参照番号８０４で、変更列挙および衝突検出のために、アイテム・レベルの同期メタデータをシリアル化し、クロック・ベクトルとして使用することができる。例えば、シリアル化されたアイテム・レベルの同期メタデータを、変更列挙および衝突検出の基礎としてクライアントにより利用することができる。さらに、シリアル化されたアイテム・レベルの同期メタデータを、拡張された情報とともにバージョンのベクトルとして定義して、部分的な更新、割込み、フィルタリング、等を可能とすることができる。
【００４１】
参照番号８０６で、更新が非同期可能クライアントによって行われた場合は、更新されているアイテムの更新バージョン情報を削除することができる。換言すれば、見ているアイテムまたはアクセスしているアイテムが更新されたかどうかをエンドポイント（例えば、装置、等）が判定できるようにするために、更新バージョン構造に関連する情報を削除することができる。例えば、非同期可能クライアントは、ウェブＵＩ、既存のアプリケーション、サードパーティ、等とすることができるがこれらに限られない。参照番号８０８で、エンドポイントを利用して、同期可能エンドポイントによって更新されているアイテムの（例えば、更新バージョン構造に関連する）バージョン情報を設定することができる。一例では、エンドポイントに関連するＡＰＩを利用して、アイテムが更新されたときにアイテムのバージョン情報を設定することができる。
【００４２】
請求項に記載されている主題の様々な態様を実装するための追加のコンテキストを提供するため、図９〜１０および以下の議論は、本発明の様々な態様を実装できる適切なコンピューティング環境の簡潔で一般的な説明を提供するものである。例えば、前の図で説明したように、複数の装置間でデータ同期するための普遍的なアルゴリズムを利用するマスタ同期コンポーネントをかかるコンピューティング環境で実装することができる。請求項に記載されている主題を、ローカル・コンピュータおよび／またはリモート・コンピュータ上で実行されるコンピュータ・プログラムのコンピュータ実行可能命令の一般的なコンテキストで上述したが、本発明を他のプログラム・モジュールと組合せて実装してもよいことは当業者には理解されよう。一般に、プログラム・モジュールは、特定のタスクを実施しおよび／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造、等を含む。
【００４３】
さらに、本発明の方法をシングル・プロセッサまたはマルチ・プロセッサのコンピュータ・システム、ミニコンピュータ、メインフレーム・コンピュータ、ならびにパーソナル・コンピュータ、ハンドヘルド・コンピューティング装置、マルチプロセッサ・ベースおよび／またはプログラム可能な消費家電、等を含む、他のコンピュータ・システム構成で実現してもよく、それらの各々は１つまたは複数の関連付けられた装置と動作可能に通信することができることは当業者には理解されよう。例示した請求項に記載されている主題の態様を分散コンピューティング環境で実施してもよく、その環境では、特定のタスクが、通信ネットワークを介して接続されたリモート処理装置により実施される。しかし、本発明の態様のうち全部ではないにしても一部をスタンドアロン・コンピュータ上で実施してもよい。分散コンピューティング環境では、プログラム・モジュールをローカルメモリ記憶装置および／またはリモートメモリ記憶装置に配置してもよい。
【００４４】
図９は、請求項に記載されている主題が相互作用できるサンプルのコンピューティング環境９００の略ブロック図である。システム９００は１つまたは複数のクライアント９１０を含む。クライアント（複数可）９１０はハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）とすることができる。システム９００はまた、１つまたは複数のサーバ９２０を含む。サーバ（複数可）９２０はハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）とすることができる。サーバ９２０は、例えば、本発明を使用することにより変換を実施するためのスレッドを包含することができる。
【００４５】
クライアント９１０とサーバ９２０の間の可能な通信の１つは、２つまたはそれ以上のコンピュータ・プロセス間で送信されるよう適合されたデータ・パケットの形式で可能である。システム９００は、クライアント（複数可）９１０とサーバ（複数可）９２０の間の通信を容易にするために使用できる通信フレームワーク９４０を含む。クライアント（複数可）９１０は、クライアント（複数可）９１０に局所的な情報を格納するために使用できる１つまたは複数のクライアント・データ・ストア（複数可）９５０に動作可能に接続される。同様に、サーバ（複数可）９２０は、サーバ９２０に局所的な情報を格納するために使用できる１つまたは複数のサーバ・データ・ストア（複数可）９３０に動作可能に接続される。
【００４６】
図１０を参照すると、請求項に記載されている主題の様々な態様を実装するための例示的な環境１０００がコンピュータ１０１２を含む。コンピュータ１０１２は処理装置１０１４、システム・メモリ１０１６、およびシステム・バス１０１８を含む。システム・バス１０１８はシステム・コンポーネントを処理装置１０１４に接続し、そのシステム・コンポーネントにはシステム・メモリ１０１６が含まれるがこれに限られない。処理装置１０１４は様々な利用可能なプロセッサのうち任意のものとすることができる。デュアル・マイクロプロセッサおよび他のマルチ・プロセッサのアーキテクチャを処理装置１０１４として使用することができる。
【００４７】
システム・バス１０１８は、メモリバスまたはメモリ・コントローラ、周辺機器用バスまたは外部バス、および／または、任意の種類の利用可能なバス構成を用いるローカル・バスを含む、任意の数種類のバス構造（複数可）のいずれかとすることができ、それは、限定しないが、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、  ＭＳＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ  ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ  ）、ＶＬＢ（ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ  ）、  ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、カード・バス、  ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ  ｂｕｓ）、ファイヤーワイヤ  （ＩＥＥＥ  １３９４）、および  ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）を含む。
【００４８】
システム・メモリ１０１６は揮発性メモリ１０２０と不揮発性メモリ１０２２を含む。起動中等、基本的なルーチンを含み、コンピュータ１０１２中の要素間に情報を転送する基本的な入力／出力システム（ＢＩＯＳ）は、不揮発性メモリ１０２２に格納される。限定ではなく例として、不揮発性メモリ１０２２は、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ＰＲＯＭ（ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリ１０２０は、外部キャッシュメモリとして動作するＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含む。限定ではなく例として、ＲＡＭは、ＳＲＡＭ（ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ  ＳＤＲＡＭ）、ＥＳＤＲＡＭ（ｅｎｈａｎｃｅｄ  ＳＤＲＡＭ）、ＳＬＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ｄｉｒｅｃｔ  ＲＡＭ）、ＤＲＤＲＡＭ（ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ）のような、多くの形で利用可能である。
【００４９】
コンピュータ１０１２はまた、取外し可能／取外し不能、揮発性／不揮発性のコンピュータ記憶媒体を含む。図１０は、例えば、ディスク記憶装置１０２４を示す。ディスク記憶装置１０２４には、磁気ディスクドライブ、フロッピーディスクドライブ、テープドライブ、ジップドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックが含まれるがこれらに限られない。さらに、ディスク記憶装置１０２４は記憶媒体を、他の記憶媒体と独立してまたは他の記憶媒体と組合せて含むことができ、かかる記憶媒体には、ＣＤ−ＲＯＭ（ｃｏｍｐａｃｔ  ｄｉｓｋ  ＲＯＭ）装置、ＣＤ−Ｒ（ＣＤ  ｒｅｃｏｒｄａｂｌｅ）ドライブ、ＣＤ−ＲＷ（ＣＤ  ｒｅｗｒｉｔａｂｌｅ）ドライブまたはＤＶＤ−ＲＯＭ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ  ＲＯＭ）ドライブが含まれるがこれらに限られない。ディスク記憶装置１０２４のシステム・バス１０１８に対する接続を容易にするために、インタフェース１０２６のような取外し可能または取外し不能なインタフェースが一般に用いられる。
【００５０】
図１０が、ユーザと適切な動作環境１０００に記載した基本的なコンピュータ・リソースとの間で媒介として動作するソフトウェアを示すことは理解されよう。かかるソフトウェアにはオペレーティング・システム１０２８が含まれる。オペレーティング・システム１０２８は、ディスク記憶装置１０２４に記憶することができ、コンピュータ・システム１０１２のリソースを制御し割り当てるように動作する。システム・アプリケーション１０３０は、システム・メモリ１０１６内またはディスク記憶装置１０２４上のいずれかに格納されたプログラム・モジュール１０３２およびプログラム・データ１０３４を介して、オペレーティング・システム１０２８によりリソースの管理を利用する。請求項に記載されている主題を様々なオペレーティング・システムまたはオペレーティング・システムの組合せで実装できることは理解されよう。
【００５１】
ユーザは入力装置（複数可）１０３６を介してコマンドまたは情報をコンピュータ１０１２に入力する。入力装置１０３６には、マウスのようなポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、ＴＶチューナ・カード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ、等が含まれるがこれらに限られない。これらおよび他の入力装置は、インタフェース・ポート（複数可）１０３８を介してシステム・バス１０１８を通じて処理装置１０１４に接続する。例えば、インタフェース・ポート（複数可）１０３８には、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）が含まれる。出力装置（複数可）１０４０は、入力装置（複数可）１０３６と同種のポートのうち幾つかを使用する。従って、例えば、ＵＳＢポートを使用して入力をコンピュータ１０１２に与え、情報をコンピュータ１０１２から出力装置１０４０に出力することができる。他の出力装置１０４０の中でもモニタ、スピーカ、プリンタのような幾つかの出力装置１０４０があることを示すため、出力アダプタ１０４２が提供されており、かかる出力装置１０４０は特殊なアダプタを要する。出力アダプタ１０４２には、限定ではなく例として、出力装置１０４０とシステム・バス１０１８の間の接続手段を提供するビデオ・カードおよびサウンド・カードが含まれる。リモート・コンピュータ（複数可）１０４４のような他の装置および／または装置システムが入力機能および出力機能の両方を提供することに留意されたい。
【００５２】
コンピュータ１０１２は、リモート・コンピュータ（複数可）１０４４のような１つまたは複数のリモート・コンピュータに対する論理接続を用いてネットワーク化された環境で動作することができる。リモート・コンピュータ（複数可）１０４４はパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイスまたは他の共通ネットワーク・ノード等とすることができ、一般にコンピュータ１０１２に関して説明した要素の多くまたは全てを含む。簡潔さのため、メモリ記憶装置１０４６のみをリモート・コンピュータ（複数可）１０４４とともに示してある。リモート・コンピュータ（複数可）１０４４はネットワーク・インタフェース１０４８を介してコンピュータ１０１２に論理的に接続され、次いで通信接続部１０５０を介して接続される。ネットワーク・インタフェース１０４８はＬＡＮ（ｌｏｃａｌ−ａｒｅａ  ｎｅｔｏｗｏｒｋ）およびＷＡＮ（ｗｉｄｅ−ａｒｅａ  ｎｅｔｗｏｒｋ）のような有線および／または無線の通信ネットワークを含む。ＬＡＮ技術には、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＣＤＤＩ（Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、イーサネット、トークン・リング、等が含まれる。ＷＡＮ技術には、ポイント・ツー・ポイント・リンク、ＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）のような回線交換ネットワークおよびその変形、パケット交換ネットワーク、ＤＳＬ（Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅｓ）が含まれるがこれらに限られない。
【００５３】
通信接続部（複数可）１０５０はネットワーク・インタフェース１０４８をバス１０１８に接続するために使用されるハードウェア／ソフトウェアを指す。明確な説明のため通信接続部１０５０をコンピュータ１０１２の内部に示しているが、通信接続部１０５０はコンピュータ１０１２の外部にあることもできる。ネットワーク・インタフェース１０４８との接続に必要なハードウェア／ソフトウェアには、通常の電話用モデム、ケーブルモデムおよびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、ならびにイーサネット・カードのような内部技術および外部技術が含まれるがこれらは例示の目的にすぎない。
【００５４】
上述したことには本発明の例が含まれる。もちろん、請求項に記載されている主題を説明する目的で、構成要素または方法論の全ての考えうる組合せを説明することは不可能であるが、本発明のさらに多くの組合せと置換えが可能であることは当業者には理解されよう。従って、請求項に記載されている主題は、添付の特許請求の範囲の趣旨および範囲から逸脱しないすべての上記変更、修正、および変形を含むものである。
【００５５】
特に、上述のコンポーネント、装置、回路、システム、等によって実行される様々な機能に関して、かかるコンポーネントを説明するために用いた用語（「手段」に対する言及を含む）は、特に記載のない限り、説明したコンポーネント（例えば、機能的な均等物）の具体的な機能を実行する任意のコンポーネントに対応するものであり、かかるコンポーネントは、開示した構造と構造的に等価でないにしても、本明細書で示した請求項に記載されている主題の例示的な態様における機能を実施する。この点で、本発明が、請求項に記載されている主題の様々な方法の動作および／またはイベントを実行するためのコンピュータ実行可能命令を有するシステムならびにコンピュータ読取可能媒体を含むことは理解されよう。
【００５６】
本発明を実装する多数の方法があり、例えば、アプリケーションおよびサービスが本発明の広告技法を使用できるようにする適切なＡＰＩ、ツールキット、ドライバコード、オペレーティング・システム、コントロール、スタンドアロンまたはダウンロード可能なソフトウェア・オブジェクト、等である。請求項に記載されている主題は、ＡＰＩ（または他のソフトウェア・オブジェクト）の観点からの使用だけでなく、本発明による広告技法に従って動作するソフトウェア・オブジェクトまたはハードウェア・オブジェクトの観点からの使用を考慮している。したがって、本明細書に記載された発明の様々な実装形態は、全体としてハードウェアである態様、一部がハードウェアで一部がソフトウェアである態様、ならびにソフトウェアである態様、を有してもよい。
【００５７】
上述のシステムを幾つかのコンポーネントとの相互作用に関して説明した。係るシステムとコンポーネントがこれらのコンポーネントまたは特定のサブコンポーネント、指定されたコンポーネントまたはサブコンポーネントのうちのいくつか、および／または追加のコンポーネント、およびそれらの様々な置換えと組合せによるものを含むことができることは理解されよう。また、サブコンポーネントを、親コンポーネント内に（階層的）に含まれるのではなく他のコンポーネントと通信可能に結合されたコンポーネントとして実装することができる。さらに、１つまたは複数のコンポーネントを、集約機能を提供する単一のコンポーネントに結合するか、またはいくつかの別々のサブコンポーネントに分割でき、統合機能を提供するために、管理層のような任意の１つまたは複数の中間層を提供してかかるサブコンポーネントと通信可能に結合できることに留意されたい。本明細書で説明した任意のコンポーネントはまた、本明細書では具体的に説明していないが当業者には一般に公知である１つまたは複数の他のコンポーネントと相互作用することができる。
【００５８】
さらに、本発明の特定の機能を幾つかの実装形態のうち１つだけに関して開示したが、かかる特徴を、任意の所与のアプリケーションまたは特定のアプリケーションに対して望ましく有利なように他の実装形態の１つまたは複数の他の特徴と組み合わせることができる。さらに、「含む」、「備える」、「有する」、「包含する」といった用語、それらの変形、および他の同様な言葉を詳細な説明または特許請求の範囲の何れかで使用する限りでは、かかる用語は、いかなる追加または他の要素も除外することなく、開放された移行語としての用語「備える」と同様に包括的であるものである。
【図１】
2012501586.tif 000003
【図２】
2012501586.tif 000004
【図３】
2012501586.tif 000005
【図４】
2012501586.tif 000006
【図５】
2012501586.tif 000007
【図６】
2012501586.tif 000008
【図７】
2012501586.tif 000009
【図８】
2012501586.tif 000010
【図９】
2012501586.tif 000011
【図１０】
2012501586.tif 000012
【国際調査報告】
2012501586.tif 000013
2012501586.tif 000014