(57)【要約】  任意の２つのノード間で同期する際に、ノードにわたって知識および／または部分的知識を表し、交換する効率的な方法が、提供される。第１のノードが、オブジェクト、およびそれらのオブジェクトのバージョンを含む、第１のノードの知識および／または部分的知識を第２のノードに送信する。第２のノードは、第２のノードの知識および／または部分的知識を第１のノードの知識および／または部分的知識と比較し、次に、第１のノードが認識していない最新バージョンのオブジェクトがあれば、そのバージョンを第１のノードに送信する。さらに、第２のノードは、第２のノードの知識および／または部分的知識を第１のノードに送信する。すると、第１のノードは、同様のオブジェクトごとのバージョン比較を実行して、第２のノードのオブジェクトを、第１のノードの知識および／または部分的知識に合わせて最新にするために、オブジェクトの独立した進化による矛盾、および第２のノードに送信されるべき変更を特定する。
2010539604.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードの第１のノードと任意の第２のノードの間でオブジェクトのセットおよび／または前記オブジェクトのサブセットを同期させる１つまたは複数のネットワークを介して接続可能な前記複数のノードの第１のノードであって、
前記第２のノードを相手にした同期を開始し、第１のノード上で表される対応するバージョンを含むオブジェクトの前記セットについての第１の知識、および任意の第１の選別された知識を前記第２のノードに送信し、第１のノードが知らないオブジェクトの前記セットの第１の変更を前記第２のノードから受信し、さらにオブジェクトの前記セットについての前記第２のノードの第２の知識、および任意の第２の選別された知識、および前記第２のノード上で表される対応するバージョンを受信する同期通信構成要素１０２２と、
前記第１の変更に基づいて、第１のノード上で表されるオブジェクトの前記セット、および前記第１の知識、および任意の第１の選別された知識を更新し、さらに前記第２の知識、および任意の第２の選別された知識を前記第１の知識と比較して、前記第２のノードが知らないオブジェクトの前記セットのいずれの第２の変更を前記第２のノードに送信すべきかを特定する同期分析構成要素１０２４とを含む前記複数のノードの第１のノードと任意の第２のノードの間でオブジェクトの前記セットおよび／または前記オブジェクトのサブセットを同期させるための同期構成要素１０２０を含むことを特徴とする第１のノード。
【請求項２】
任意の第１の選別された知識ＦAは、第１のサブセットに入れる、または前記第１のサブセットから出す移動操作が許可されない、オブジェクトの前記セットについての情報の前記第１のサブセットを表すことを特徴とする請求項１に記載の第１のノード。
【請求項３】
任意の第２の選別された知識ＦBは、第２のサブセットに入れる、または前記第２のサブセットから出す移動操作が許可されない、オブジェクトの前記セットについての情報の前記第２のサブセットを表すことを特徴とする請求項１に記載の第１のノード。
【請求項４】
前記第１の選別された知識ＦA、および前記第２の選別された知識ＦBは、存在する場合、オブジェクトの前記セットの特性を、オブジェクトの前記セットについての情報のサブセットとして表すことを特徴とする請求項１に記載の第１のノード。
【請求項５】
前記第１の選別された知識ＦA、および前記第２の選別された知識ＦBは、オブジェクトの前記セットが、第１のノード上で第１のスキーマを使用して表され、前記第２のノード上で第２のスキーマを使用して表される場合、オブジェクトの前記セットについての情報の知識、それぞれのサブセットを表し、前記第１のスキーマ、および前記第２のスキーマは、サブセットとして同期されることが可能な少なくとも１つの重なり合うスキーマ要素を有することを特徴とする請求項１に記載の第１のノード。
【請求項６】
第１のノードＡと前記第２のノードＢは、第１のノード、または前記第２のノードが、前記１つまたは複数のネットワークから切断されると、第１のノード上、および前記第２のノード上でそれぞれ、オブジェクトの前記セットを独立して進化させることを特徴とする請求項１に記載の第１のノード。
【請求項７】
１つまたは複数のネットワークを介して接続可能な複数のノードの第１のノードと第２のノードの間でオブジェクトのセットおよび／または前記オブジェクトのサブセットを同期させるための方法であって、
オブジェクトのセットに関する前記第１のノードの知識、および前記第１のノード上で表されるオブジェクトの前記セットの前記オブジェクトに関する対応するバージョン、および／またはオブジェクトの前記セットの任意の部分的知識、および前記部分的知識の前記オブジェクトに関する対応するバージョンを前記第２のノードに送信することを含め、前記第１のノードによる、前記第２のノードを相手にした同期を開始すること９００、
前記第１のノードによる、前記第２のノードの知識および／または任意の部分的知識と前記第１のノードの前記知識および／または任意の部分的知識の比較に基づき、前記第１のノードが認識していない前記第２のノードからのオブジェクトの前記セットの第１の変更を受信すること９５０、
前記第１のノードによる、前記第２のノードのオブジェクトの前記セットに関する前記知識および／または任意の部分的知識を前記第２のノードから受信すること９５０、および
前記第２のノードの前記第２のノードの前記知識および／または任意の部分的知識を、前記第１のノードの前記第２のノードの前記知識および／または任意の部分的知識と比較して、前記第２のノードが認識していないオブジェクトの前記セットのいずれの第２の変更を前記第２のノードに送信すべきかを特定すること９７０を含むことを特徴とする方法。
【請求項８】
前記第１のノードまたは前記第２のノードによる、オブジェクトの前記セットのサブセットと均等の、前記知識の選別されたバージョンとして、オブジェクトの前記セットの任意の部分的知識を表すこと６００をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
部分的知識を、前記サブセットに入れる移動操作も前記サブセットから出す移動操作も許可されない場合に制限すること６００をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
オブジェクトの前記セットの部分的知識を使用してオブジェクトの前記セットのプロパティを表すこと７０２をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記第１のノードと前記第２のノードが、類似するが、同一ではないスキーマを有する場合、前記第１のノードによる、部分的知識を表すことをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１２】
前記第１のノード上で表されるオブジェクトの前記セットに前記第１の変更を適用して、オブジェクトの前記セットを、前記第１のノードと前記第２のノードの集合的な知識の時点に更新すること９７０をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１３】
前記第１の変更に基づいて、前記第１の知識、および前記第１のノード上で表される対応するバージョンを更新すること９７０をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１４】
前記第１のノードによる、オブジェクトの前記セットの第１の変更を前記第２のノードから前記受信すること９５０は、前記第１のノードによる、前記第２のノードからの、前記第１のノードが認識していないオブジェクトの前記セットの最新バージョンの知識、および／または前記第２のノードからの、前記第１のノードが認識していないオブジェクトの前記セットの最新バージョンの任意の部分的知識を表す第１の変更を受信することを含むことを特徴とする請求項７に記載の方法。
【請求項１５】
オブジェクトのセットに関する、それぞれ、前記第１のノードまたは前記第２のノードの知識および／または任意の部分的知識、および前記第１のノードまたは前記第２のノードの上でそれぞれ表されるオブジェクトの前記セットの前記オブジェクトに関する対応するバージョンを第３のノードに送信することを含め、前記第１のノードまたは前記第２のノードによる、前記第３のノードを相手にした同期を開始することをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１６】
前記第１のノードまたは前記第２のノードによる、第３のノードの知識および／または任意の部分的知識と、それぞれ、前記第１のノードまたは前記第２のノードの前記知識および／または任意の部分的知識との比較に基づき、前記第１のノードまたは前記第２のノードが、それぞれ、認識していないオブジェクトの前記セットの第３の変更を、前記第３のオブジェクトから受信すること、および
それぞれ、前記第１のノードまたは前記第２のノードによる、オブジェクトの前記セットに関する前記第３のノードの前記知識および／または任意の部分的知識、および前記第３のノード上で表されるオブジェクトの前記セットの前記オブジェクトの対応するバージョンを、前記第３のノードから受信することをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１７】
第３のノードの前記知識および／または任意の部分的知識を前記第１のノードまたは前記第２のノードの前記知識および／または部分的知識と比較して、前記第３のノードが認識していないオブジェクトの前記セットのいずれの変更を前記第３のノードに送信すべきかを特定することをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１８】
前記第２のノードおよび前記第１のノードの前記知識および／または部分的知識から、オブジェクトの前記セットのオブジェクトが、前記第１のノードおよび前記第２のノードの上で独立に進化したかどうかを検出することをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１９】
１つまたは複数のネットワークを介して接続可能な複数のノードの第１のノードと第２のノードの間でオブジェクトのセットのサブセットを同期させるためのコンピューティングデバイスであって、
前記第１のノードによる、前記第２のノードを相手にした同期を開始する同期開始コンポーネント１０２２ａと、
前記第１のノード上で表されるオブジェクトのサブセットのオブジェクトに関する対応するバージョンを含め、オブジェクトの前記セットの前記サブセットに関する前記第１のノードの部分的知識を前記第２のノードに出力し、前記第１のノードが、前記第１のノードの前記部分的知識の中で表していないオブジェクトの前記サブセットの第１の変更を表す第１の入力を、前記第２のノードから受信し、前記第２のノード上で表されるオブジェクトの前記サブセットの前記オブジェクトの対応するバージョンを含め、オブジェクトの前記サブセットに関する前記第２のノードの知識を表す第２の入力を受信する入出力構成要素１０２２ｂと、
前記第２の入力によって表される前記部分的知識を、前記第１のノードの前記部分的知識と比較して、前記第２の入力の前記部分的知識の中で表されていないオブジェクトの前記サブセットのいずれの第２の変更を前記第２のノードに送信すべきかを特定するための同期分析構成要素１０２４とを含むことを特徴とするコンピューティングデバイス。
【請求項２０】
前記第２のノードが、前記第１のノードを相手に同期することが許可されることを認証するための認証構成要素１０４０をさらに含むことを特徴とする請求項１９に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データが、データのサブセットに入る、またはそれらのサブセットから出るように移動されることが可能でない場合の、アプリケーションおよびデバイスの間におけるデータのサブセットの知識ベースのマルチマスタ同期に関する。
【背景技術】
【０００２】
互いにデータを共有するデバイスおよびオブジェクトを有する様々な分散データシステムが、存在する。例えば、音楽共有システムは、ＰＣ、セル電話機、ゲームコンソール、およびＭＰ３プレーヤの間で音楽を同期することができる。電子メールデータが、職場のサーバ、クライアントＰＣ、およびポータブル電子メールデバイスの間で同期されることが可能である。今日、そのようなデバイスが、共通の情報に従って同期する限りで、同期は、これらのデバイスの間の静的なセットアップに従って行われる。しかし、これらのデバイスが、例えば、セル電話機がトンネル内にある場合に、または同期されるべきデバイスの数が、動的である場合に、互いに通信から切断され得るように緩く結合されている場合、これらのデバイスが、互いに再接続された際に、またはネットワークに参加する際に、互いのデバイスがどのような変更を必要とするかを特定する方法を有することが、望ましい。
【０００３】
今日、図１に示されるとおり、電子メールサーバが電子メールクライアントと同期する際などに、マスタノード１００が、クライアントノード１１０と専用の仕方で同期する様々な例が、存在する。この２つのデバイス間の専用の同期のお陰で、この２つのデバイス間で同期するのに必要な知識１０２の状態が、マスタノード１００によって追跡されることが可能である。そのような知識１０２は、オプションとして、クライアントノード１００によって追跡されることも可能であるが、マスタノード１００とクライアントノード１１０の間の接続が、ときとして切断される場合、および同期するデバイスの数が増加する場合、それらのデバイスのすべてにわたって必要な知識を追跡すること、およびこの知識を同時に効率的に表すことは、困難な問題となる。
【０００４】
非効率で、柔軟性がないことに加えて、現行のソリューションが抱える別の問題は、これらのソリューションが、しばしば、同期セマンティクスを、任意のノードではなく、ある特定のノード（例えば、電子メールサーバ）に関するクロックまたは論理的透かしだけに基づかせることである。これらのシステムは、単一の接続するノードまたはマスタの事例では、うまく行く可能性がある。しかし、これらのシステムは、ノードが接続されるトポロジまたはパターンが予測できない仕方で変化する場合、問題に直面する。
【０００５】
このため、あるトポロジにおけるコンピュータが、互いに接続される仕方を変える場合、またはコンピュータの数が増大した際、ノード独立の同期知識の必要性が、生じる。例えば、メディアプレーヤを使用して、複数のコンピュータおよび複数のウェブサイトの間で同期することが望ましい可能性がある。ほとんどの事例では、ほとんどのアプリケーションは、いくつかのよく知られているエンドポイント（自宅ＰＣおよびメディアプレーヤ）の間でデータを同期することだけしかできない。しかし、メディアプレーヤアプリケーションのユーザに関するデバイスコミュニティが、時間の経過とともに進化すると、それらのデバイスによって利用される音楽ライブラリに関するデータ同期柔軟性の必要性が高まり、より堅牢なシステムの必要性が生じる。
【０００６】
このため、デバイスノードの緩く接続されたシステムは、これらのデバイスが有するデータ、これらのノードがデータを受け取った場所、およびこれらのノードが、対話に関与する別のノードからどのようなデータを必要とするかを記述する効率的な仕方を必要とする。このため、複数の緩く結合されたデバイスにわたって共通の情報を共有することを所望する任意の分散データシステムが、共通の情報のいずれの変更を、それらのデバイスが認識しており、いずれの変更を、それらのデバイスが認識していないかを表す方法から利益を得る可能性がある。
【０００７】
これに関して、接続されたデバイスのセットの集合的な知識を理解するための機構が存在しない場合、緩く結合されたデバイスの間で同期しようと試みる際に、面倒な問題が生じる。同期フレームワークにおいて、どのように知識を効率的に表すかという問題を複雑にするのが、他の（１つまたは複数の）デバイスによって知られている知識のサブセットだけを、どのように同期し、表すかという問題である。例えば、この問題は、デバイスまたはアプリケーションが、第２のデバイスが格納する、または使用するのと同一タイプ、フォーマット、または量のデータを格納する、または使用することができない場合、すなわち、異なるエンドポイントが、異なる能力を有する場合に、生じる可能性がある。例えば、第１のデバイスが、大量のストレージを有するＰＣ（パーソナルコンピュータ）であることが可能であるのに対して、このＰＣと同期されるハンドヘルドデバイスが、限られたストレージを有することが可能である。そのような事例において、ハンドヘルドデバイスは、ＰＣからのファイルのサブセットだけしか、例えば、５０Ｋｂ未満であるＰＣ上のファイルだけしか受け取らないことが可能である。緩く結合されたマルチマスタ同期環境におけるハンドヘルドデバイス上で、ハンドヘルドデバイスが、ＰＣからの知識のサブセットを受け取ったことをどのように表すかは、難題である。
【０００８】
このサブセット同期シナリオは、同一もしくは同様の能力を有する異なるデバイスに関して、これらの異なるデバイスが、それでも、同期されるべきデータ要素を表すために異なるスキーマを保持する場合に、やはり現れることが可能である。例えば、第１のデバイスは、題名、アーチスト、アルバム、ファイルのサイズ、時間の長さ、格付け、フォーマット、デジタル権利管理などの豊かなメタデータセットと一緒に音楽ファイルを格納することが可能であるのに対して、第２のデバイスは、同一のレンダリング能力、および同一のメモリ能力を有するものの、題名、アーチスト、およびアルバムだけを格納する異なるアプリケーションを含むことが可能である。この事例では、第２のデバイスは、実際、第１のデバイスと同期する際、情報のサブセットを第２のデバイスのデータストアにもってくることしかしない。
【０００９】
同じサブセット同期の面倒な問題は、第１のデバイスから第２のデバイスに同期されるべきデータが、厳密には、第１のデバイス上のデータのサブセットではない場合にも当てはまる。例えば、重なり合うが、異なるスキーマ要素セットが、各デバイスによって保持されている場合、第１のデバイスは、第２のデバイスによって表されていないスキーマ要素を有し、第２のデバイスは、第１のデバイスによって表されていないスキーマ要素を有するものの、両方のデバイスによって表される共通の重なり合うスキーマ要素セットが、存在する。このため、この２つのデバイスは、互いのデバイスの共通の、または重なり合うデータセットについて知っていることについて共有することによって、それでも利益を得ることができ、その場合、各デバイスは、実際には、他方のデバイスと、各デバイスの独自のデータのサブセットを共有している。しかし、今日、マルチマスタシステムにおける緩く結合されたデバイスに関して、この部分的知識共有をそのものとして表す効率的で、柔軟性のある方法は、存在しない。
【００１０】
部分的知識同期をそのものとして表す代わりに、今日、従来のシステムは、デバイスの間で、デバイスの同期能力の点で最小公分母を選択する。このため、第１のデバイスが、タイプＡ、Ｂ、Ｃ、Ｄ、Ｅ、およびＦのデータを表し、第２のデバイスが、タイプＡ、Ｇ、Ｈ、Ｉ、およびＪのデータを表し、第３のデバイスが、タイプＡ、Ｋ、Ｌ、Ｍ、およびＮのデータを表す場合、この３つのデバイスの間でサポートされるデータタイプの最小公分母は、タイプＡだけである。そのような事例では、タイプＡだけが、従来の同期システムにおいて同期される。
【００１１】
さらに、タイプＡのデータは、最小公分母としてデバイスの間で同期されることが可能であるが、今日、同期されたデータ自体を超えて、そのデータが部分的知識共有であったことを示すデバイス間のダイアログも存在しない。要するに、デバイスが出入りし、接続されたり、切断されたりする場合に、マルチマスタ同期システムにおいて知識がどのように進化するかを追跡すること、およびそのようなシステムにおいて、データのサブセットが、デバイスの間でどのように交換されるかを追跡することは、同期分野の業者によってこれまで対応が行われてこなかった、困難で手ごわい問題である。
【００１２】
さらに、他の従来のシステムは、各デバイス上の知識の完全なセットが、その他のデバイスのそれぞれに同期されることを許すことによって、この問題を基本的に無視する。あるデバイスが、デバイスのデータストアに同期されたデータを認識しない場合、そのデバイスは、このデバイスに認識不能というマークを付ける。このことは、第３のデバイスが、第２のデバイス上の、その認識不能なデータと同期されることを許して、第３のデバイスに、その認識不能なデータの一部またはすべてを認識する機会を与える可能性があるが、限られたストレージを有するデバイス上で認識不能なデータを増殖させることは、実際問題として実行不可能である。より一般的には、この仕方でデータのすべてを格納することは、各デバイスが、そのデバイスのデータをネットワークの他のすべてのデバイスにバックアップするバックアップシステムを実現することにすぎず、これは、控えめに言っても、信じられないほど非効率なスキームである。
【００１３】
したがって、様々な緩く結合されたデバイスに関して、１つのデバイスから別のデバイスへの知識転送を、デバイスが、デバイスの知識のサブセットだけしか、その別のデバイスに転送しない場合に表す、柔軟性があり、効率的な方法が、所望される。緩く結合されたデバイスの間の現行技術の同期における、さらにそれらのデバイス間でデータのサブセットだけを同期させることに関する、以上、およびその他の欠陥についてのさらなる詳細は、以下の本発明の様々な実施形態の説明から明白となり得る。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ノードにわたって同期されるべき共通の情報を独立に進化させることが可能な、同期ネットワークの複数のノードの間の知識交換の必要性を考慮して、本発明は、任意の２つのノード間で１つまたは複数のサブセットを同期させる際に、ノードにわたって知識を表し、交換する効率的な方法を提供する。
【課題を解決するための手段】
【００１５】
様々な非限定的な実施形態において、第１のノードが、オブジェクト、およびそれらのオブジェクトのバージョンを含む、第１のノードの知識および／または部分的知識を第２のノードに送信する。第２のノードは、第２のノードの知識および／または部分的知識を第１のノードの知識および／または部分的知識と比較し、次に、第１のノードが認識していない最新バージョンのオブジェクトがあれば、そのバージョンを第１のノードに送信する。さらに、第２のノードは、第２のノードの知識および／または部分的知識を第１のノードに送信する。すると、第１のノードは、同様のオブジェクトごとのバージョン比較を実行して、第２のノードのオブジェクトを、第１のノードの知識および／または部分的知識に合わせて最新にするために、オブジェクトの独立した進化による矛盾、および第２のノードに送信されるべき変更を特定する。
【００１６】
より詳細な説明、および添付の図面で現れる例示的な、非限定的な実施形態の様々な態様の基本的理解または一般的理解を可能にすることに役立つように、簡略化された概要が、本明細書で与えられる。しかし、この概要は、広範な概略、または網羅的な概略であることは意図されていない。そうではなく、この概要の唯一の目的は、以下の本発明の様々な実施形態のより詳細な説明の前置きとして、本発明のいくつかの例示的な、非限定的な実施形態と関係するいくつかの概念を、簡略化された形態で提示することである。
【００１７】
共通の情報のセット、またはそのようなセットのサブセットを共有する複数のノードに関する同期知識および／または同期部分的知識を表すためのシステムおよび方法が、添付の図面を参照してさらに説明される。
【図面の簡単な説明】
【００１８】
【図１】システムの明確に定義された２つのエンドポイント間で同期をもたらす専用同期システムを示す図である。
【図２Ａ】本発明によるマルチマスタシステムにおいてどのように部分的知識を表すかという目的を示すブロック図である。
【図２Ｂ】本発明による、異なるデバイスが、異なるが、類似した２つのスキーマからのデータのサブセットを同期することに関する選好を示すことが可能である、例示的な、非限定的なシナリオを示す図である。
【図３Ａ】本発明によるノードの緩く結合されたネットワークの４つのノードの間の例示的な、非限定的な知識交換を示す図である。
【図３Ｂ】デバイスのいくつかが互いに切断される場合の、本発明によるノードの緩く結合されたネットワークの４つのノードの間の例示的な、非限定的な知識交換を示す図である。
【図４Ａ】本発明によるネットワークのノードの間で共有される複数のオブジェクトの文脈における例示的な知識交換を示す図である。
【図４Ｂ】本発明によるネットワークのノードの間で共有される複数のオブジェクトの文脈における例示的な知識交換を示す図である。
【図４Ｃ】本発明によるネットワークのノードの間で共有される複数のオブジェクトの文脈における例示的な知識交換を示す図である。
【図５】本発明によるネットワークのノードの間で共有される複数のオブジェクトの文脈における例示的な知識交換のためのプロセスを示す例示的な、非限定的な流れ図である。
【図６】本発明による知識および部分的知識に基づいて変更を要求するため、および伝えるためのフレームワークを示す一般的なアーキテクチャを示す図である。
【図７Ａ】本発明の様々な非限定的な実施形態に従って実施される知識の例示的なフィルタ表現を示す図である。
【図７Ｂ】本発明の様々な非限定的な実施形態に従って実施されるフィルタ表現の組合せを示す図である。
【図８】本発明による、選別された知識の異なる２つのバージョンが、組み合わされた選別された知識を形成するように組み合わされる実施例を示す図である。
【図９】本発明による、ネットワークのノードの間で共有される複数のオブジェクトの文脈における知識交換および／または部分的知識交換のためのプロセスを示す例示的な、非限定的な流れ図である。
【図１０】本発明による知識交換を実行するためのデバイスの例示的な、非限定的な実施形態を示すブロック図である。
【図１１】本発明が実施されることが可能である、例示的な、非限定的なネットワーク化された環境を示すブロック図である。
【図１２】本発明が実施されることが可能である、例示的な、非限定的なコンピューティングシステム環境または動作環境を示すブロック図である。
【発明を実施するための形態】
【００１９】
概略
背景技術において説明したとおり、特に、１つのデバイスからのデータのサブセットだけを別のデバイスに同期することが望ましい場合に、互いに専用の連絡状態のままでない、緩く結合されたデバイスのセットに関する同期知識を効率的に表す方法は、存在しない。しかし、デバイスが現れたり、消えたりして、専用の連絡が想定され得ない場合、同期の見地から、それらのデバイスが知っていること、および知らないことを効率的に表すことが、望ましい。特に、部分的知識交換が、それらのデバイスの間で行われることが可能である場合、全体像は、デバイスが接続されたままであると想定され得る場合でさえ、ハードコードされたメタデータにおいて記述するのが、非常に面倒で、困難になる可能性がある。
【００２０】
それらのデバイスが、接続されたままでない場合、状況は、さらに複雑になる。例えば、トポロジが図２Ａに示されるとおりである、３つだけのデバイス、音楽サーバ、ラップトップ、およびＭＰ３プレーヤを有するマルチマスタ状況を考慮されたい。サーバ２００が、音楽のサブセットをラップトップ２１０に同期し、ラップトップ２１０が、音楽のサブセットをサーバ２００に同期する。さらに、ＭＰ３プレーヤ２２０が、音楽のサブセットをラップトップ２１０に同期し、ラップトップ２１０が、音楽のサブセットをＭＰ３プレーヤ２２０に同期する。このため、例えば、ラップトップ２１０は、ラップトップ２１０の知識のサブセット２１２Ｐ１をサーバ２００と同期させるが、知識の異なるサブセット２１２Ｐ２をＭＰ３プレーヤ２２０と同期させることが可能である。サーバ２００は、サーバ２００の知識のサブセット２０２Ｐをラップトップ２１０と同期させることができ、さらにＭＰ３プレーヤも、ＭＰ３プレーヤの知識のサブセット２２Ｐをラップトップ２１０と同期させることができる。これに関して、サブセット２０２Ｐは、サブセット２２２Ｐと異なることが可能である。ラップトップ２１０が、サーバ２００に接続されたり、サーバ２００から切断されたりし、さらにＭＰ３プレーヤ２２０が、ラップトップ２１０に接続されたり、ラップトップ２１０から切断されたりするにつれ、これらのデバイス間の部分的知識交換に関するダイアログは、たった数回の同期の後に極めて複雑になる。この問題は、さらなるデバイスが関与して、異なるレベルの部分的知識をもってくる場合、より困難になる。
【００２１】
さらにいっそう複雑にしているのは、異なるデバイスが、例えば、異なるエンドポイントが、同一の概念を表すのに異なるスキーマを使用する場合、類似したデータを非常に異なる仕方で編成する可能性があることである。例えば、発送注文または連絡先が、異なるデバイス上で異なるスキーマを使用して表される可能性がある。図２Ｂに示されるとおり、デバイスＰＣ１、ＰＣ２、ＭＰ１、およびＬＴ１のそれぞれが、異なるスキーマを使用する連絡先などの類似したデータを表すことが可能である。例えば、ＰＣ１は、１つのＮａｍｅフィールド、１つのＡｄｄｒｅｓｓフィールド、３つのＰｈｏｎｅフィールド、および１つのＥｍａｉｌフィールドを有する連絡先スキーマＳ１を含むことが可能であり、さらに移動電話機ＭＰ１は、１つのＮａｍｅフィールド、１つのＡｄｄｒｅｓｓフィールド、１つのＰｈｏｎｅフィールド、および２つのＥｍａｉｌフィールドを有する連絡先スキーマＳ２を含むことが可能である。ＰＣ１は、ＭＰ１が、３つのＰｈｏｎｅフィールドを格納する手段を有さないため、ＰＣ１の知識のすべてをＭＰ１に転送することはできないが、それでも、ＰＣ１の知識のサブセットを移動電話機ＭＰ１に送信する柔軟な方法が存在すべきである。具体的には、１つのＮａｍｅフィールド、１つのＡｄｄｒｅｓｓフィールド、１つのＰｈｏｎｅフィールド、および１つのＥｍａｉｌフィールドの１つまたは複数を移動電話機ＭＰ１に送信する方法が、存在すべきである。移動電話機ＭＰ１は、ＰＣ１の全体像は有さないが、ＭＰ１が、知識交換に従ってデータのサブセットだけでも同期させることができる場合、以前よりも多くの知識を有することになる。
【００２２】
同期データをサブセット化する問題は、任意の同期シナリオに拡張可能である。例えば、１つのデバイスが、高精細度ビデオをサポートすることが可能であるのに対して、別のデバイスは、低精細度ビデオをサポートすることしかできない可能性があり、あるいは１つのデバイスが、高解像度写真をサポートすることが可能であるのに対して、移動電話機は、サムネイルサイズの写真をサポートすることしかできない可能性がある。そのような事例において、第２のデバイスにビデオまたは写真をそれぞれ同期させることは、より高い解像度のバージョンをより低い解像度のバージョンにトランスコードすることを含み、これは、事実上、サブセット化操作であり、すなわち、第１のデバイス上で利用可能な情報のサブセットだけが、第２のデバイスに同期される。
【００２３】
マルチマスタ同期システムにおいて部分的知識同期を効率的に記述するそのような必要性を考慮して、以下に説明される様々な非限定的な実施形態では、本発明は、知識の進化を追跡して、記述し、さらに他のデバイスから学習された部分的知識、つまり、知識のサブセットに応じて、システムにおけるデバイスの現在の知識を簡潔に表す効率的で、柔軟な方法を提供する。一実施形態では、バージョン管理情報を有する知識ベクトルを使用して、知識が表され、さらに同期されるデータのサブセットは、部分的知識交換をそのものとして効率的に記述するさらなるメタデータを含む。
【００２４】
本明細書の以下に記述されることの一般的なロードマップとして、第１に、あるデバイスが、緩く結合されたネットワークにおける別の（１つまたは複数の）デバイスにアクセスを有する場合はいつでも、そのデバイスが、いずれの変更が、そのデバイスによって取り出されて、その別の（１つまたは複数の）デバイスに伝えられるべきかを特定するために、その別の（１つまたは複数の）デバイスと知識を交換することを確実にする一般的な機構が、説明される。次に、知識交換のための一般的な機構がどのように、それらのデバイスの間の部分的知識交換の表現を含むように拡張され得るかが、示される。データのサブセットに入る、またはデータのサブセットから出る移動が存在しないことが知られている場合にデバイスの間でデータのサブセットを同期させることに関する特殊な事例が、考慮される。
【００２５】
このようにして、第１のデバイスと第３のデバイスは、決して直接に通信しない可能性があるが、各デバイスが、第２のデバイスに接続することができる場合、３つすべてのデバイスにわたって知識の集合的な共有が達せられることが可能であり、これらのデバイスのそれぞれが、その他のデバイスのそれぞれからどのような変更を受け取るべきかが特定される。本発明を使用して、第２のデバイスにおいて第１のデバイスから学習された部分的知識と第３のデバイスから学習された部分的知識が組み合わされて、第２のデバイスによって理解されるすべての知識の単一の表現にされることが可能であり、この表現が、今度は、その他のデバイスに同期されることが可能である。
【００２６】
音楽、電子メール、ピクチャ、ビデオなどのデータを共有するデバイスの増殖を考慮して、有利には、本発明の知識交換技術は、任意の数のデバイスに、さらに任意の数の独立した知識ベース（すなわち、共通の情報の異なるセット）に同時に、すなわち、デバイスの任意の進化するセットが、データ全体または部分的データを共有することを所望する任意の場合にスケーラブルである。分散システムにおいて、そのような知識または部分的知識を表すことの様々な実施形態が、以下により詳細に説明される。
【００２７】
効率的な知識提示および知識交換
本発明によるデータのサブセットの同期を説明することの前置きとして、このセクションでは、データ同期システムにおいて知識を効率的に表すための一般的な機構の概略が、提示される。この一般的な機構は、（１）第２のノードから第１のノードによって必要とされる最小限のデータだけが送信されることを要求することによる、接続されたデバイス間の知識の効率的な交換、（２）第１のノードと第２のノードの間の、データの状態に関する不一致、すなわち、矛盾を効率的に、正しく認識する能力、（３）任意の数のノードを同期させる能力、および（４）任意のノードを、他の任意のノードを介して同期させる能力、すなわち、ピアツーピアのマルチマスタ同期環境において機能する能力を含む。
【００２８】
この一般的な機構を使用して、任意の数の変更が、この２つのデバイス間で共有されるべきいくらかの情報に行われることが可能である。しかし、この２つのデバイスが接続されるといつでも、デバイスの知識を互いに交換することによって、これらのデバイスは、互いが何を知っており、何を知らないかを再構築するのに必要とされる少なくとも最小限の量の情報を認識するようになり、これらのデバイス間の交換を円滑にする。２つより多くのデバイスが関与する場合、知識は、共有されるべき情報のより大きいベースの不完全な知識である可能性があるが、より多くの知識が、その複数のデバイスの間で共有されるので、集合的な知識は、デバイスが、時間の経過とともにその他のデバイスに接続されるにつれ、デバイスによって蓄積され続けることに留意されたい。
【００２９】
有利には、本発明は、オブジェクトのセットの最新バージョンを保持することにすべてが関心を有するデバイスのセットに関する同期を実行するように動作するが、そのようなデバイスが、セットのその他のオブジェクトと接続したり、接続が切れたりすることも許す。あるデバイスが、１つまたは複数のネットワークを介してデバイスのセットの他のデバイスと再び接続されるといつでも、そのデバイスは、その他の（１つまたは複数の）デバイスが、その他の（１つまたは複数の）デバイスの集合的な知識で表すのと同じだけ最新である集合的な知識を再獲得する。このようにして、緩く結合されたデバイスでさえ、デバイスのセットと連絡状態になったり、連絡しなくなったりし、その後、集合的な知識の最新セットを所有するデバイスの任意のセットと連絡状態になることによって、逃したすべての知識を再学習することが可能である。
【００３０】
図３Ａは、本発明の知識交換が、任意の数のデバイスに一般化可能である、またはスケーラブルであることを示す。図示されるとおり、４つのデバイス３００、３１０、３２０、および３３０が、これらのデバイスにわたって共有されるべき共通の情報のセットについて各デバイスが何を知っており、何を知らないかをそれぞれ示す知識表現３０２、３１２、３２２、および３３２を有して示される。
【００３１】
有利には、図３Ｂに示されるとおり、ネットワークにおける接続が切断された場合でさえ、知識の完全なセットが、それでも、その他のデバイスへの少なくとも１つの接続が、直接に、または間接的に存在する限り、デバイス３００、３１０、３２０、および３３０のすべてによって獲得されることが可能である。例えば、図示されるとおり、デバイス３３０の知識３３２は、デバイス３２０との知識交換を介し、次に、デバイス３２０とデバイス３１０の間の知識交換を介し、最後に、デバイス３１０とデバイス３００の間の知識交換を介して、依然としてデバイス３００に到達する。
【００３２】
より多くのデバイスが、共有されるべき共通の情報についての知識を共有していると、本発明の知識交換は、いずれのデバイスに集合的な知識が由来するかに拘らないため、それらのデバイスのすべてが、利益を得る。本発明のデバイスはそれぞれ独立に、各デバイスが接続されているその他のデバイスの任意のデバイスから、デバイスの間で共有されるべき情報について可能な限り多くの知識を獲得しようと試みるように動作する。
【００３３】
例示的な非限定的な詳細において、２つのノードが、対話に参加し、この会話の終わりに、関与するデータセットに関して均等の知識を有する方法が、さらに詳細に説明される。この方法は、ピアツーピアネットワークに入るそれぞれの新たなデバイスに関して知識交換能力を作成することによって、２つのノードを超えてスケーラブルである。
【００３４】
このため、図４Ａに示されるとおり、任意の数のノードを有するピアツーピアネットワークのノード４００が、ノード４１０とデータを交換することを所望する。ノードＡは、ノード４１０からの変更を要求することから始め、そうするためにノード４００は、図示されるとおり、ノード４１０にノード４００の知識（ＫN400と表される）を送信する。
【００３５】
デバイスまたはノードの知識は、デバイスの間で共有されるべき各オブジェクトに文字識別子でラベルと付けることによって表され、次に、後続の番号が、このオブジェクトの最新バージョンを表す。例えば、図４Ａに示されるＫN400は、ノード４００とノード４１０の間でそれぞれ同期されるべきオブジェクトＡ、Ｂ、Ｃ、およびＤを含み、これらのオブジェクトのそれぞれの後に続く番号が、そのデバイス上で知られているそのオブジェクトの最新バージョンを表す。例えば、時刻ｔ＝１における知識ＫN400は、図４ＡにＡ４、Ｂ３、Ｃ６、Ｄ０として表記される、Ａの第５番のバージョン、Ｂの第４番のバージョン、Ｃの第７番のバージョン、およびＤの第１番のバージョンを含む。これに対して、時刻ｔ＝１におけるノード４１０の知識ＫN410は、図４ＡにＡ３、Ｂ６、Ｃ６、Ｄ２として表記される、Ａの第４番のバージョン、Ｂの第７番のバージョン、Ｃの第７番のバージョン、およびＤの第３番のバージョンを含むことが可能である。
【００３６】
図４Ｂに示されるとおり、時刻Ｔ＝２において、ノード４１０が、ノード４００から受信された知識ＫN400をノード４１０自らの知識ＫN410と比較し、さらにノード４００に何が送信される必要があるかを特定する。この例では、結果として、ノード４１０は、Ｂ３、Ｄ０というノード４００の知識が、Ｂ６およびＤ２というノード４１０の知識より遅れているので、ＢおよびＤと関係する変更をノード４００に送信する。ノード４１０は、Ｂ６とＢ３の間の変更、およびＤ２とＤ０の間の変更をノード４００に送信する際、ノード４１０が有する知識ＫN410の最新バージョン（ノード４１０上で最後の変更が行われた任意の時点を反映する）も一緒に送信する。
【００３７】
時刻ｔ＝３を表す図４Ｃに示されるとおり、ノード４００に知識ＫN410を送信することは、ノード４００が、ノード４００とノード４１０が同一のバージョンにある間に、ノード４００とノード４１０がともに、あるオブジェクトに変更を行ったことを見出した場合、ノード４００が矛盾を検出する（例えば、後の解決のために、これらの矛盾を格納する）ことを可能にする。このことは、自律的な更新、効率的な列挙を可能にするだけでなく、ノードが出会い、変更を交換する場合に、正しい矛盾検出も可能にする。例えば、この実施例では、Ｃ６が、知識ＫN410とＫN410の両方において同一のオブジェクトではない場合、例えば、これら両方のオブジェクトが、Ｃ５からＣ６に独立に進化している場合、いずれのＣ６が正しいＣ６であるかは、例えば、関与する同期シナリオおよびデバイスにふさわしい事前設定されたポリシー解決に準拠する、矛盾解決のために取っておかれることが可能である。
【００３８】
前述した一般的な機構を使用する分散マルチマスタ同期環境の任意の２つのノード間の例示的な知識交換プロセスが、図５の流れ図に示される。５００で、ノードＡが、ノードＢとの同期を要求して、ノードＡが知らない変更をノードＢに求める。ノードＢを整備するため、５１０で、ノードＡが、ノードＡの知識をノードＢに送信する。５２０で、ノードＢが、ノードＡから受信された知識をノードＢ自らの知識と比較して、ノードＡに送信されるべき、いずれの変更についてノードＢが知っているかを特定する。５３０で、ノードＢが、そのような変更をノードＡに送信し、それに加えて、ノードＢは、ノードＢの知識をノードＡに送信して、ノードＡが、５４０で、同様の知識比較を実行することができるようにする。
【００３９】
５５０で、ノードＡが、バージョンの独立した進化が、ノードＡとノードＢの上で生じている場合に、ノードＢの知識において反映されている最新バージョンと、ノードＡの知識において反映されている最新バージョンとの間の潜在的な矛盾を検出する。本発明によれば、任意の矛盾解決ポリシーが適用されて、矛盾が生じた場合に、いずれのノードが、その他のノードに勝るかが決定されることが可能である。５６０で、ノードＢによって所有されていないノードＡからの最新の変更が、ノードＢに送信される。矛盾解決ポリシーは、ノードＡとノードＢの間で共通の情報を維持するのに、ノードＢからノードＡに変更が送信されるか、またはノードＡからノードＢに変更が送信されるかをさらに規定する。独立したバージョン管理が許される場合、または所望される場合、矛盾解決がまったく行われないことも、別のオプションである。
【００４０】
効率的な知識サブセット提示および知識サブセット交換
マルチマスタ同期環境において知識を表すための一般化された機構に関連して前述したとおり、デバイスまたはノードの知識は、デバイスの間で共有されるべき各オブジェクトに、このオブジェクトの最新のバージョンを表す後続の番号を含む文字識別子でラベルを付けることによって、効率的に表されることが可能である。これに関して、知識は、レプリカの状態ベースの同期の要約を定義する。しかし、背景技術および発明の概要において述べたとおり、多くの事例では、所与のエンドポイント内に含まれるデータのサブセットを同期させることが有用である。これが行われる場合、本発明によれば、知識は、そのサブセットを反映するように増補される。例示的な、非限定的な実施形態では、本発明は、フィルタ機構を介して、このことを実現し、さらに選別された知識の形態でサブセットを表す。
【００４１】
さらに、同期環境におけるサブセット化の事例は、サブセットに入る移動、またはサブセットから出る移動がまったくない場合に、特に興味深い。これに関して、本発明は、まったく移動がない場合に、選別された知識を使用し、表す様々な方法を説明する。特に、このタイプのサブセット化は、アイテムのプロパティに適用されて、異なる２つの同期するエンドポイントが、異なる（しかし、互換性のある）スキーマを有し、それでも同期することを許すことが可能である。
【００４２】
したがって、本明細書で説明される選別された知識としてのサブセット化表現に関する用途は、事実上、無限である。すべての種類のサブセット化が、同期シナリオにおいて非常に普及している。フィルタについての情報を効率的に表現し、組み合わせることができることは、非常に重要であり、さらに、有利には、本発明は、レプリカが、類似するが、同一ではないスキーマを維持し、それでも、マルチマスタ同期環境において効率的な知識交換に従って同期することを許す。
【００４３】
より詳細には、本発明は、前のセクションで説明されるとおり、知識ベースの同期を伴う移動禁止フィルタに関する様々な実施形態を提供する。前述したとおり、知識は、通常、所与のエンドポイントが、所与のデータセットに関して、このエンドポイントが同期されるコミュニティ内の他の任意のエンドポイントから見たことのある最大ティックカウントを表す、バージョンベクトルとして表される。このベクトルを考える別の方法は、このベクトルが、デバイスによって所有されるオブジェクトの知識の範囲を定義するので、範囲ベクトルとしてである。
【００４４】
範囲全体を表すベクトルに加えて、知識は、例外を含むことも可能である。知識例外もやはり、バージョンベクトルから成り、その範囲のいくらかのサブセットに関して、その範囲全体について知られているのとは異なる量の情報が知られている状況を表す。このことは、ある単一のアイテムに関する例外の形態をとること、またはある部類のアイテムの例外の形態をとることが可能である。
【００４５】
本発明によれば、選別された知識は、知識における例外の形態をとることもできる。単一のアイテム、またはある部類のアイテムを表す例外の代わりに、例外ベクトルが、フィルタのコンテンツに適用される。
【００４６】
これに関して、本発明は、移動をまったく伴わないフィルタの事例に関するフィルタのコンテンツの記述および保持を可能にする。ローカルレプリカに関するベクトル成分は、適用されるフィルタにかかわらず、知られていることにまず、留意されたい。このことを言い表す別の仕方は、任意の所与のレプリカが、そのレプリカが行ったことのあるすべての変更を知っていると表明することができることである。
【００４７】
レプリカが表現することができるデータの選別されたサブセットを、そのレプリカが保持するという概念は、レプリカが保持することができる最大量の情報を、そのレプリカが保持しているという概念とは区別することができ、ただし、その最大量もやはり、コミュニティ内で保持されるデータのサブセットである。レプリカが保持することができる最大量の情報を、そのレプリカが保持している事例は、特に興味深く、選別されたレプリカとして分類されることが可能である。レプリカは、フィルタにかかわらず、範囲レベルにおけるすべてのローカルの変更を知っているので、別のレプリカから変更を受信していない選別されたレプリカは、そのレプリカの知識を、選別されたものとして表現する必要がない。
【００４８】
データを送信すること、および受信することに関して、一実施形態では、本発明によるデータを送信すること、および受信することをサポートする、考慮されるべき少なくとも２つの事例が、存在する。考慮されるべき第１の事例は、レプリカが保持する可能なデータのすべてが送信されている場合である。第２の事例は、レプリカによって保持されるデータのサブセットだけが、送信されている場合である。
【００４９】
選別された同期、または選別されていない同期を使用して、第１の事例、すなわち、レプリカからデータのすべてを受信する事例に関して、あるレプリカが、別のレプリカによって知られているデータのすべてを受信すると、このレプリカは、そのレプリカのすべての知識を暗黙に学習する。このことは、選別されたレプリカからの情報を学習することを考慮する場合、非常に興味深くなる。選別されたレプリカが、範囲全体に適用される情報だけしか含まない場合、選別されたレプリカから変更を受信するレプリカは、単に範囲レベルベクトルを、このレプリカの知識に適用するにすぎない。
【００５０】
レプリカから部分的データを受信する第２の事例は、本発明の選別された同期の主題である。これが行われることが可能な複数の仕方が、存在する。例えば、送信元レプリカが、宛先によって保持されるデータの厳密なスーパーセットを含むことが可能であり、あるいは、送信元と宛先の間に共通の重なり合いが存在することが可能である。いずれの場合でも、宛先は、送信元から部分的知識を学習することしかできない。
【００５１】
本発明によれば、宛先レプリカが、送信元レプリカから部分的知識を学習することしかできない場合、宛先レプリカは、フィルタを表す例外と、その場合に何が学習されたかを表すベクトルとを作成する。
【００５２】
選別された同期を達するのに、各レプリカは、そのレプリカのストアの中に保持される選別されたセットの記述を保持する。各レプリカは、そのレプリカの知識と一緒に、別のレプリカに変更を送信する際、フィルタが交換されない場合でさえ、このフィルタ定義を宛先に送信する。
【００５３】
すると、宛先はまず、送信元からのデータの選別されたセットが、厳密に、宛先自らのフィルタのサブセットであるかどうかを調べる。データの選別されたサブセットが、宛先自らのフィルタのサブセットである場合、宛先は、単に、送信元の知識を学習する。フィルタが、厳密なサブセットではない場合、宛先は、宛先自らのフィルタと、送信元レプリカからのフィルタとの共通部分への、送信元の知識の投影しか学習しない。
【００５４】
図６は、前述したとおり、選別された知識が可能である場合に、知識を交換するための一般化された機構を示す。図示されるとおり、各レプリカＡおよびＢは、それぞれ、プロバイダＰＡおよびプロバイダＰＢを有する。本発明の技術によれば、各レプリカＡおよびＢは、それぞれ、知識ＫAおよびＫBを保持し、さらに、場合により、選別された知識ＦAおよびＦBも保持する。サブセット化を伴わない事例と同様に、レプリカのいずれも、別のレプリカの変更を要求し（６００）、その別のレプリカが変更を伝えることに応答して、変更を受信する（６１０）ことができる。選別された知識ＦAと選別された知識ＦBが同一の範囲である場合、一般化された知識交換の場合と同じく、以下のとおりである。すなわち、
ＫA＝ＫA∪ＫB
【００５５】
選別された知識ＦAと選別された知識ＦBが同一の範囲ではない場合、代わりに、知識は、以下のとおり、既存の知識に加え、それぞれのフィルタＦAおよびＦBの共通部分に投影された、他方のレプリカの知識の関数である。すなわち、
ＫA＝ＫA∪（ＫB→（ＦA∩ＦB））
【００５６】
前述したとおり、このタイプのサブセット化は、アイテムのプロパティに適用されて、異なる２つの同期するエンドポイントが、異なるが、互換性のあるスキーマを有し、それでも同期することを許すことが可能である。図７Ａに示されるとおり、例えば、ノードＰＣ１上に格納された連絡先オブジェクトのプロパティに関して、連絡先スキーマＳ１が、図２Ａから適用され、さらにノードＭＰ１上に格納された連絡先オブジェクトのプロパティに関して、連絡先スキーマＳ２が、やはり図２Ａから適用される。そのような事例において、選別された知識の共通部分は、ＰＣ１とＭＰ１がともに、スキーマＳ１およびＳ２においてＮａｍｅを有し、ＰＣ１とＭＰ１がともに、スキーマＳ１およびＳ２においてＡｄｄｒｅｓｓを有し、ＭＰ１が、１つのＮａｍｅプロパティだけしか表すことができず、さらにＰＣ１が、スキーマＳ１およびＳ２においてＭＰ１に１つのＥｍａｉｌプロパティだけしか送信することができないので、範囲［Ｎａｍｅ、Ａｄｄｒｅｓｓ、Ｐｈｏｎｅ、Ｅｍａｉｌ］のフィルタＦ１をもたらす。このことが、例えば、プロパティ、およびエントリ、エントリ１、エントリ２、エントリ３、エントリ４、エントリ５などに対応する列７０２を有する、図７Ｂのフィルタ７００に関する共通の表現によって表される。
【００５７】
したがって、ノードＰＣ１とノードＭＰ１の間の知識交換の後、ノードＭＰ１は、選別された知識Ｆ２を有するノードＰＣ２とさらに同期することが可能であり、その場合、フィルタ表現７００を使用して、成分ごとに、例えば、列ごとに、成分上の選別されたバージョンが組み合わされることが可能である。
【００５８】
選別された知識ＦAとＦBの例示的な組合せが、図８に示され、選別された知識ＦAは、アイテムＡ１５、Ｂ３５、Ｃ２５、およびＥ３０を伴って、範囲［Ｎａｍｅ、Ａｄｄｒｅｓｓ、Ｐｈｏｎｅ］：を有して示され、ＦBは、アイテムＡ４５、Ｂ２５、Ｃ３０、およびＤ１６を伴って、範囲［Ｎａｍｅ、Ａｄｄｒｅｓｓ、Ｅｍａｉｌ］：を有して示される。選別された知識ＦAとＦBが組み合わされる場合、結果８００が、これらのアイテムに関する成分全体にわたる最大バージョンをとることによってもたらされる。名前８０１、アドレス８０２、電話８０３、および電子メール８０４に関する結果は、組み合わされた知識、およびそのレプリカに関する選別された知識の新たな表現を反映する。このようにして、知識と部分的知識がともに、マルチマスタ同期システム内で同期する任意のレプリカによって、本発明に従って柔軟で（デバイスが現れたり、消えたりする）、効率的な（他のデバイスから学習される知識および部分的知識のコンパクトな表現）仕方で学習されることが可能である。
【００５９】
図９は、マルチマスタ同期環境におけるデバイスのセットの間の知識の完全な同期と、任意の部分的な知識の同期の両方に対応するための例示的な流れ図を示す。９００で、ノードＡが、ノードＢから任意の変更を要求する。９１０で、これに応答して、ノードＡが、ＫAおよび任意の選別された知識ＦＫAをノードＢに送信し、９２０で、ノードＢが、ＫAおよび任意のＦＫAをノードＢ自らの知識ＫBと比較する。９３０で、選別された知識ＦＫAが存在しない場合、ＫAとＫBは、同一の範囲であり、知識交換は、９４０で、サブセット化なしに一般的な事例の場合と同様に進む。しかし、情報のサブセットが、同期実行の一環として表される場合、９５０で、ノードＡが認識していない最新の変更が、ノードＢからノードＡに送信される。また、ＫBおよび任意の選別された知識ＦＫBもノードＡに送信される。次に、９６０で、ノードＡが、知識ＫBおよび任意のＦＫBを知識ＦAおよび任意のＦＫAと比較し、これらの知識、および選別された知識が組み合わされて、ノードＡの新たな知識が形成される。９７０で、データの間の矛盾が、解決され、９８０で、ノードＢが認識していない最新の変更が、ノードＡからノードＢに送信される。
【００６０】
他の応用例がある中でも、とりわけ、これらのタイプのフィルタに関する例示的な、非限定的な応用例は、列、または同期フレームワークの任意の変更単位を選別することを目的とする。このことは、列変更が、システムにおいて移動操作を受ける可能性が高いので、特に当てはまる。このシナリオに関して注目に値する以下の２つの考慮すべき事項が存在する。すなわち、フィルタ表現および知識統合である。
【００６１】
フィルタ表現に関して、移動禁止フィルタの事例に関するフィルタ表現は、以下のとおりである。各フィルタが、フィルタ内に含まれる変更単位のリストとして表される。この表現は、表現の便利な手段、ならびに必要な場合にフィルタを組み合わせる能力をもたらす。フィルタを組み合わせる能力は、知識を統合するために有用である。
【００６２】
知識統合に関して、知識を最も簡潔な形態に保つために、知識を統合する能力は、維持されなければならない。これに関して、選別された知識の断片は、知識が最もコンパクトな形態に保たれ得るように統合されることが可能である。
【００６３】
フィルタを組み合わせる能力を考慮すると、フィルタは、変更単位のセットとして表現されることが可能であるので、フィルタにおける重なり合いが、両方のフィルタにおいて存在する変更単位のセットを分離することによって調停されることが可能である。
【００６４】
また、あるフィルタに関するベクトルは、そのフィルタ内の個々の変更単位のそれぞれに適用されるので、フィルタの組合せは、両方のフィルタにおける各変更単位に関して、その変更単位に関する組み合わされたベクトルを見出すことによって実行されることが可能である。次に、これらのベクトルのすべてが知られると、共通のベクトルを有する変更単位が、新たなフィルタとなるように組み換えられる。
【００６５】
図１０は、本発明による完全な、または部分的な知識交換を実行するためのデバイス１０００ｂの例示的な、非限定的な実施形態のブロック図である。図示されるとおり、デバイス１０００ｂは、本発明に従って、オブジェクトのセット１０３０を別のデバイスと同期させるための完全な、または部分的な知識交換技術を実行する同期モジュール１０２０を含む。同期モジュール１０２０は、本発明の知識交換技術に従ってデータを一般的に送受信するための同期通信モジュールを含むことが可能である。
【００６６】
また、同期モジュール１０２０は、例えば、許可モジュール１０４０を介して許可され、さらに第２のデバイスに接続された場合、第２のデバイスとの同期を開始することができる同期開始モジュール１０２２ａを含むことも可能である。また、同期モジュールは、オブジェクト１０３０のセットについての完全な、さらに／または部分的な知識１００２ｂを第２のデバイス（図示せず）に送信することによって、同期の開始に応答し、第２のデバイスを発信元とする、第２のデバイスの完全な、さらに／または部分的な知識１０１２ｂ、およびオブジェクトのセット１０３０に行われるべき変更を返信として受信するためのＩ／Ｏモジュールを含むことも可能である。次に、同期分析モジュール１０２４が、オブジェクトのセット１０３０に行われるべき変更を適用し、さらにデバイス間の同期を完了するのに第２のデバイスに送信されるべき変更を特定するために、第２のデバイスからの完全な、さらに／または部分的な知識１０１２ｂを、第１のデバイスの完全な、さらに／または部分的な知識１００２ｂと比較するように動作する。
【００６７】
また、本発明の知識を効率的に表すためのシステムおよび方法は、同一のプロバイダ上のメモリ内データを解決するコンテキストに適用されることも可能である。そのようなコンテキストにおいて、メモリ内データは、物理的ストアによってバックアップされないことが可能であり、例えば、メモリ内データは、ノードを同期させるようにＣＰＵ上のグラフソルバにおいて使用されることが可能である。また、本発明は、特に、シーングラフが、マルチコアアーキテクチャ上でより分散され、計算が、容積測定テクスチャなどのメモリ内データ構造に直接に書き込まれる際に、シーングラフのコンテキストにおいて適用されることも可能である。
【００６８】
例示的なネットワーク化された環境および分散環境
本発明の同期知識表現および同期知識交換は、コンピュータネットワークの一環として、または任意の種類のデータストアに接続された分散コンピューティング環境において展開されることが可能な、任意のコンピュータ、または他のクライアントデバイスもしくはサーバデバイスに関連して実施され得ることを、当業者は理解することができよう。これに関して、本発明は、本発明による同期技術に関連して使用されることが可能な、任意の数のメモリまたはストレージユニット、および任意の数のストレージユニットまたはストレージボリュームにわたって現れる任意の数のアプリケーションおよびプロセスを有する任意のコンピュータシステムまたはコンピュータ環境に関係する。本発明は、リモートストレージまたはローカルストレージを有する、ネットワーク環境または分散コンピューティング環境に展開されたサーバコンピュータと、クライアントコンピュータとを有する環境に適用されることが可能である。また、本発明は、プログラミング言語機能、リモートサービスおよびリモートプロセス、またはローカルサービスおよびローカルプロセスに関連して情報を生成するため、受信するため、および送信するための解釈能力および実行能力を有するスタンドアロンのコンピューティングデバイスに適用されることも可能である。
【００６９】
分散コンピューティングは、コンピューティングデバイスとコンピューティングシステムの間の交換によってコンピュータリソースおよびコンピュータサービスの共有をもたらす。これらのリソースおよびサービスには、情報の交換、ファイルなどのオブジェクトに関するキャッシュストレージおよびディスクストレージが含まれる。分散コンピューティングは、ネットワーク接続を利用して、クライアントが、クライアントの集合的な能力を活用して、企業全体に利益をもたらすことを可能にする。これに関して、様々なデバイスが、本発明に従って同期させるためのシステムおよび方法を関与させ得るアプリケーション、オブジェクト、またはリソースを有することが可能である。
【００７０】
図１１は、例示的なネットワーク化されたコンピューティング環境または分散コンピューティング環境の概略図を与える。分散コンピューティング環境は、コンピューティングオブジェクト１１１０ａ、１１１０ｂなど、およびコンピューティングオブジェクトまたはコンピューティングデバイス１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどを含む。これらのオブジェクトは、プログラム、メソッド、データストア、プログラマブルロジックなどを含むことが可能である。これらのオブジェクトは、ＰＤＡ、オーディオ／ビデオデバイス、ＭＰ３プレーヤ、パーソナルコンピュータなどの同一のデバイスまたは異なるデバイスの部分を含むことが可能である。各オブジェクトは、通信ネットワーク１１４０を介して別のオブジェクトと通信することができる。このネットワーク自体、図１１のシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティングデバイスを含むことが可能であり、さらにこのネットワーク自体、複数の互いに接続されたネットワークであることが可能である。本発明の態様によれば、各オブジェクト１１１０ａ、１１１０ｂなど、または１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどは、本発明による知識を使用する同期させるためのシステムおよび方法と一緒に使用するのに適したＡＰＩ、または他のオブジェクト、ソフトウェア、ファームウェア、および／またはハードウェアを利用する可能性があるアプリケーションを含むことが可能である。
【００７１】
また、１１２０ｃなどのオブジェクトは、別のコンピューティングデバイス１１１０ａ、１１１０ｂなど、または１１２０ａ、１１２０ｃ、１１２０ｄ、１１２０ｅなどの上でホストされてもよいことも理解することができよう。このため、図示される物理的環境は、接続されたデバイスをコンピュータとして示すことが可能であるものの、そのような例示は、単に例示的であり、物理的環境は、代替として、ＰＤＡ、テレビ、ＭＰ３プレーヤなどの様々なデジタルデバイスを含んで示され、または説明されてもよく、これらのデバイスのいずれも、インターフェース、ＣＯＭオブジェクトなどの様々な有線および無線のサービス、ソフトウェアオブジェクトなどを使用することが可能である。
【００７２】
分散コンピューティング環境をサポートする様々なシステム、構成要素、およびネットワーク構成が、存在する。例えば、コンピューティングシステムは、有線または無線のシステムによって、ローカルネットワークまたは広く分散したネットワークによって一緒に接続されることが可能である。現在、ネットワークの多くは、インターネットに結合され、インターネットは、広く分散したコンピューティングのためのインフラストラクチャを提供し、多くの異なるネットワークを包含する。これらのインフラストラクチャのいずれも、本発明による同期に付随して行われる例示的な通信のために使用されることが可能である。
【００７３】
自宅ネットワーキング環境において、電力線媒体、データ（無線と有線の両方）媒体、音声（例えば、電話）媒体、およびエンターテイメント媒体などの、固有のプロトコルをそれぞれがサポートすることが可能な少なくとも４つの異種のネットワークトランスポート媒体が、存在する。照明スイッチや器具などのほとんどの自宅制御デバイスは、接続のために電力線を使用することが可能である。データサービスは、ブロードバンド（例えば、ＤＳＬモデムまたはケーブルモデム）として自宅に入ることが可能であり、さらに無線（例えば、ＨｏｍｅＲＦまたは８０２．１１Ｂ）接続または有線（例えば、Ｈｏｍｅ  ＰＮＡ、Ｃａｔ  ５、イーサネット（登録商標）、電力線さえの）接続を使用して、自宅内でアクセス可能である。音声トラフィックは、有線（例えば、Ｃａｔ  ３）または無線（例えば、セル電話機）として自宅に入ることが可能であり、さらにＣａｔ  ３配線を使用して自宅内で配信されることが可能である。エンターテイメント媒体、または他のグラフィックデータは、衛星またはケーブルを介して自宅に入ることが可能であり、通常、同軸ケーブルを使用して自宅内で配信される。また、ＩＥＥＥ１３９４およびＤＶＩも、メディアデバイスのクラスタのためのデジタル相互接続である。これらのネットワーク環境、およびプロトコル標準として出現する可能性がある、または既に出現しているその他のネットワーク環境のすべてが、インターネットなどのワイドエリアネットワークを介して外部の世界に接続されることが可能な、イントラネットなどのネットワークを形成するように互いに接続されることが可能である。要するに、データの格納および伝送のための様々な異種の源が、存在し、したがって、本発明のコンピューティングデバイスのいずれも、任意の既存の仕方でデータを共有し、通信することができ、本明細書の実施形態において説明されるいずれの１つの仕方も、限定することは意図していない。
【００７４】
インターネットは、一般に、コンピュータネットワーキングの技術分野でよく知られている、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）スイートのプロトコルを利用するネットワークおよびゲートウェイの集まりを指す。インターネットは、ユーザが（１つまたは複数の）ネットワークを介して対話し、情報を共有することを可能にするネットワーキングプロトコルを実行するコンピュータによって互いに接続された地理的に分散したリモートコンピュータネットワークのシステムとして説明されることが可能である。そのような広範な情報共有のため、インターネットなどのリモートネットワークは、これまで概ね、基本的に制限なしに、専用の動作またはサービスを実行するためのソフトウェアアプリケーションを開発者が開発することができるオープンなシステムに進化してきた。
【００７５】
このため、ネットワークインフラストラクチャは、クライアント／サーバアーキテクチャ、ピアツーピアアーキテクチャ、または混成アーキテクチャなどの一群のネットワークトポロジを可能にする。「クライアント」は、「クライアント」が関係していない別のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。このため、コンピューティングにおいて、クライアントは、別のプログラムによって提供されるサービスを要求するプロセス、すなわち、大雑把に言って、命令またはタスクのセットである。クライアントプロセスは、他方のプログラム、またはそのサービス自体についてまったく機能上の詳細を「知る」必要なしに、要求対象のサービスを利用する。クライアント／サーバアーキテクチャ、特にネットワーク化されたシステムにおいて、クライアントは、通常、別のコンピュータ、例えば、サーバによって提供される共有ネットワークリソースにアクセスするコンピュータである。図１１の例示では、例として、コンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどが、クライアントと考えられることが可能であり、コンピュータ１１１０ａ、１１１０ｂなどが、サーバと考えられることが可能であり、サーバ１１１０ａ、１１１０ｂなどは、クライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどに後にレプリケートされるデータを保持し、ただし、任意のコンピュータが、状況に応じて、クライアント、サーバ、またはクライアントとサーバの両方と見なされることが可能である。これらのコンピューティングデバイスのいずれも、データを処理していること、または本発明による知識を使用する同期技術を関与させることが可能なサービスもしくはタスクを要求していることが可能である。
【００７６】
サーバは、通常、インターネットまたは無線ネットワークインフラストラクチャなどのリモートネットワークまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第１のコンピュータシステムにおいて活性であることが可能であり、サーバプロセスは、第２のコンピュータシステムにおいて活性であることが可能であり、これらのコンピュータシステムは、通信媒体を介して互いに通信しており、そのため、分散された機能がもたらされ、さらに複数のクライアントが、サーバの情報収集能力を利用することを許す。本発明による知識に基づいて同期させるための技術に準拠して利用される任意のソフトウェアオブジェクトが、複数のコンピューティングデバイスまたはコンピューティングオブジェクトにわたって分散されることが可能である。
【００７７】
（１つまたは複数の）クライアントと（１つまたは複数の）サーバは、（１つまたは複数の）プロトコル層によって提供される機能を利用して互いに通信する。例えば、ＨＴＴＰ（ハイパーテキスト転送プロトコル）が、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）、つまり、「ウェブ」と関連して使用される一般的なプロトコルである。通常、ＩＰ（インターネットプロトコル）アドレスなどのコンピュータネットワークアドレス、またはＵＲＬ（ユニバーサルリソースロケータ）などの他のリファレンスを使用して、サーバコンピュータまたはクライアントコンピュータが互いに対して識別されることが可能である。このネットワークアドレスは、ＵＲＬアドレスと呼ばれることが可能である。通信は、通信媒体を介して提供されることが可能であり、例えば、（１つまたは複数の）クライアントと（１つまたは複数の）サーバは、大容量通信のために（１つまたは複数の）ＴＣＰ／ＩＰ接続を介して互いに結合されることが可能である。
【００７８】
このため、図１１は、本発明が使用されることが可能な、（１つまたは複数の）サーバが、ネットワーク／バスを介して（１つまたは複数の）クライアントコンピュータと通信状態にある、例示的なネットワーク化された環境または分散環境を示す。より詳細には、本発明に従って、いくつかのサーバ１１１０ａ、１１１０ｂなどが、ＬＡＮ、ＷＡＮ、イントラネット、ＧＳＭネットワーク、インターネットなどであることが可能な通信ネットワーク／バス１１４０を介して、ポータブルコンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク化された器具、あるいはＶＣＲ、ＴＶ、オーブン、照明、加熱器などの他のデバイスなどのいくつかのクライアントコンピューティングデバイスまたはリモートコンピューティングデバイス１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどと互いに接続される。このため、本発明は、関連して任意の種類のデータを同期させることが望ましい任意のコンピューティングデバイスに適用され得ることが、企図される。
【００７９】
通信ネットワーク／バス１１４０がインターネットであるネットワーク環境において、例えば、サーバ１１１０ａ、１１１０ｂなどは、クライアント１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどが、ＨＴＴＰなどのいくつかの知られているプロトコルのいずれかを介して通信相手とするウェブサーバであることが可能である。サーバ１１１０ａ、１１１０ｂなどは、分散コンピューティング環境に特徴的であり得るように、クライアント１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどの役割をすることも可能である。
【００８０】
前述したとおり、通信は、適宜、有線または無線、あるいは有線と無線の組合せであることが可能である。クライアントデバイス１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどは、通信ネットワーク／バス１４を介して通信しても、通信しなくてもよく、さらに独立の通信が関連付けられていてもよい。例えば、ＴＶまたはＶＣＲの事例では、ＴＶまたはＶＣＲの制御にネットワーク化された態様が存在しても、存在しなくてもよい。各クライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなど、およびサーバコンピュータ１１１０ａ、１１１０ｂなどは、様々なアプリケーションプログラムモジュールまたはアプリケーションプログラムオブジェクト１３５ａ、１３５ｂ、１３５ｃなど、ならびに様々なタイプのストレージ要素またはストレージオブジェクトへの接続またはアクセスを備えていることが可能であり、これらの要素またはオブジェクトにわたって、ファイルまたはデータストリームが格納されることが可能であり、あるいはこれらの要素またはオブジェクトに、ファイルまたはデータストリームの（１つまたは複数の）部分が、ダウンロードされる、伝送される、または移されることが可能である。コンピュータ１１１０ａ、１１１０ｂ、１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどの任意の１つまたは複数が、本発明に従って処理される、または保存されるデータを格納するためのデータベースまたはメモリ１１３０などの、データベース１１３０または他のストレージ要素の維持および更新を担うことが可能である。このため、本発明は、コンピュータネットワーク／バス１１４０にアクセスする、またはコンピュータネットワーク／バス１１４０と対話することができるクライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなどと、クライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅなど、および他の同様のデバイス、およびデータベース１１３０と対話することができるサーバコンピュータ１１１０ａ、１１１０ｂとを有するコンピュータネットワーク環境において利用されることが可能である。
【００８１】
例示的なコンピューティングデバイス
前述したとおり、本発明は、デバイスのセットにわたって任意の種類のデータを同期させることが望ましい可能性がある任意のデバイスに適用される。したがって、ハンドヘルドデバイス、ポータブルデバイス、およびその他のコンピューティングデバイス、ならびにすべての種類のコンピューティングオブジェクトが本発明に関連して使用されるということ、すなわち、デバイスが、複数のデバイスにわたってデータを共有すること、あるいはその他の形でデータを受信すること、処理すること、または格納することから利益を得ることができるあらゆる状況が企図されることを理解されたい。したがって、図１２において以下に説明される以下の汎用リモートコンピュータは、一例にすぎず、本発明は、ネットワーク／バス相互運用性およびネットワーク／バス対話を有する任意のクライアントを使用して実施されることが可能である。このため、本発明は、非常にわずかな、または最小限のクライアントリソースが関与するネットワーク化された、ホストされたサービスの環境において、例えば、クライアントデバイスが、器具内に配置されたオブジェクトなどの、ネットワーク／バスへのインターフェースの役割をするにすぎない、ネットワーク化された環境において実施されてもよい。
【００８２】
必須ではないが、本発明は、デバイスまたはオブジェクトに関するサービスの開発者によって使用されるように、部分的に、オペレーティングシステムを介して実施されること、さらに／または本発明の（１つまたは複数の）構成要素に関連して動作するアプリケーションソフトウェア内に含められることが可能である。ソフトウェアは、クライアントワークステーション、サーバ、または他のデバイスなどの、１つまたは複数のコンピュータによって実行されている、プログラムモジュールなどの、コンピュータ実行可能命令の一般的な文脈において説明されることが可能である。本発明は、他のコンピュータシステム構成および他のコンピュータシステムプロトコルを使用して実施されてもよいことが、当業者には理解されよう。
【００８３】
このため、図１２は、本発明が実施されることが可能である適切なコンピューティングシステム環境１２００ａの例を示し、ただし、前段で明記するとおり、コンピューティングシステム環境１２００ａは、メディアデバイスの適切なコンピューティング環境の一例にすぎず、本発明の用法または機能の範囲について何ら限定を示唆することは意図していない。また、コンピューティング環境１２００ａが、例示的な動作環境１２００ａに示される構成要素のいずれの構成要素、または組合せと関係する依存関係または要件も有すると解釈してはならない。
【００８４】
図１２を参照すると、本発明を実施するための例示的なリモートデバイスは、コンピュータ１２１０ａの形態で汎用コンピューティングデバイスを含む。コンピュータ１２１０ａの構成要素には、処理装置１２２０ａ、システムメモリ１２３０ａ、ならびにシステムメモリを含む様々なシステム構成要素を処理装置１２２０ａに結合するシステムバス１２２１ａが含まれるが、以上には限定されない。システムバス１２２１ａは、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。
【００８５】
コンピュータ１２１０ａは、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１２１０ａによってアクセスされることが可能な任意の利用可能な媒体であることが可能である。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実施された揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体の両方を含む。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタルバーサタイルディスク）、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは所望される情報を格納するのに使用されることが可能であり、コンピュータ１２１０ａによってアクセスされることが可能な他の任意の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実現し、あらゆる情報配信媒体が含まれる。
【００８６】
システムメモリ１２３０ａは、ＲＯＭ（読み取り専用メモリ）および／またはＲＡＭ（ランダムアクセスメモリ）などの揮発性メモリおよび／または不揮発性メモリの形態でコンピュータ記憶媒体を含むことが可能である。起動中などにコンピュータ１２１０ａ内部の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（基本入出力システム）が、メモリ１２３０ａの中に格納されることが可能である。また、メモリ１２３０ａは、通常、処理装置１２２０ａが、即時にアクセスすることができ、さらに／または現在、処理しているデータおよび／またはプログラムモジュール群も含む。例として、限定としてではなく、メモリ１２３０ａは、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、およびプログラムデータも含むことが可能である。
【００８７】
また、コンピュータ１２１０ａは、その他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピュータ記憶媒体も含むことも可能である。例えば、コンピュータ１２１０ａは、リムーバブルでない不揮発性の磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、リムーバブルな不揮発性の磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、および／またはＣＤ−ＲＯＭまたは他の光媒体などのリムーバブルな不揮発性の光ディスクに対して読み取りまたは書き込みを行う光ディスクドライブを含むことも可能である。例示的な動作環境において使用されることが可能なその他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、以上には限定されない。ハードディスクドライブは、通常、インターフェースなどの、リムーバブルでないメモリインターフェースを介してシステムバス１２２１ａに接続され、磁気ディスクドライブまたは光ディスクドライブは、通常、インターフェースなどの、リムーバブルなメモリインターフェースでシステムバス１２２１ａに接続される。
【００８８】
ユーザは、キーボードや、マウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイスなどの入力デバイスを介して、コマンドおよび情報をコンピュータ１２１０ａに入力することができる。その他の入力デバイスには、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。以上、およびその他の入力デバイスは、しばしば、システムバス１２２１ａに結合されたユーザ入力１２４０ａおよび関連する（１つまたは複数の）インターフェースを介して処理装置１２２０ａに接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）などの他のインターフェースおよびバス構造で接続されてもよい。また、グラフィックスサブシステムが、システムバス１２２１ａに接続されることも可能である。また、モニタ、または他のタイプのディスプレイデバイスも、出力インターフェース１２５０ａなどのインターフェースを介してシステムバス１２２１ａに接続され、このインターフェースは、ビデオメモリと通信することが可能である。モニタに加え、コンピュータは、出力インターフェース１２５０ａを介して接続されることが可能な、スピーカやプリンタなどの他の周辺出力デバイスを含むことも可能である。
【００８９】
コンピュータ１２１０ａは、リモートコンピュータ１２７０ａのような１つまたは複数の他のリモートコンピュータに対する論理接続を使用する、ネットワーク化された環境または分散環境において動作することが可能であり、リモートコンピュータは、デバイス１２１０ａとは異なるメディア能力を有することが可能である。リモートコンピュータ１２７０ａは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノード、あるいは他の任意のリモートメディア消費デバイスまたはリモートメディア伝送デバイスであることが可能であり、コンピュータ１２１０ａに関連して前述した要素の任意の要素、またはすべての要素を含むことが可能である。図１２に示される論理接続は、ＬＡＮ（ローカルエリアネットワーク）またはＷＡＮ（ワイドエリアネットワーク）などのネットワーク１２７１ａを含むが、その他のネットワーク／バスを含むことも可能である。そのようなネットワーキング環境は、自宅、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００９０】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１２１０ａは、ネットワークインターフェースまたはネットワークアダプタを介してＬＡＮ１２１７ａに接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１２１０ａは、通常、インターネットなどのＷＡＮを介して通信を確立するためのモデムなどの通信構成要素、またはその他の手段を含む。内部にあることも、外部にあることも可能な、モデムなどの通信構成要素は、入力１２４０のユーザ入力インターフェース、またはその他の適切な機構を介してシステムバス１２２１ａに接続されることが可能である。ネットワーク化された環境において、コンピュータ１２１０ａに関連して示されるプログラムモジュール、またはプログラムモジュールの諸部分は、リモートメモリストレージデバイスの中に格納されることが可能である。図示され、説明されるネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されよう。
【００９１】
本発明を実施する複数の仕方、例えば、アプリケーションおよびサービスが、本発明による知識を表し、交換するためのシステムおよび方法を使用することを可能にする適切なＡＰＩ、ツールキット、ドライバコード、オペレーティングシステム、コントロール、スタンドアロンのソフトウェアオブジェクトまたはダウンロード可能なソフトウェアオブジェクトなどが、存在する。本発明は、ＡＰＩ（または他のソフトウェアオブジェクト）、ならびに本発明による知識交換を実行するソフトウェアオブジェクトまたはハードウェアオブジェクトの見地から、本発明の使用を企図する。このため、本明細書で説明される様々な実施形態は、完全にハードウェアである態様、一部がハードウェアであり、一部がソフトウェアである態様、ならびにソフトウェアである態様を有することが可能である。
【００９２】
「例示的」という用語は、例、実例、または例示の役割をすることを意味するように使用される。疑いを避けるため、本明細書で開示される主題は、そのような例によって限定されない。さらに、本明細書で「例示的」と説明されるいずれの態様または設計も、他の態様または設計より好ましい、または有利であると必ずしも解釈されるべきではなく、また当業者に知られている均等の例示的な構造および技術を排除することも意図していない。さらに、「含む」、「有する」、「含有する」という用語、およびその他の類似する語が、詳細な説明または特許請求の範囲において使用される限りにおいて、疑いを避けるため、そのような用語は、いずれのさらなる要素または他の要素も除外せずに、開かれたつなぎの言葉としての「備える」という用語と同様に、包含的であることが意図される。
【００９３】
前述したとおり、本発明の例示的な実施形態は、様々なコンピューティングデバイスおよびネットワークアーキテクチャに関連して説明されてきたが、基礎をなす概念は、別のコンピューティングデバイスまたは別のコンピューティングシステムとデータを同期させることが所望される任意のコンピューティングデバイスまたはコンピューティングシステムに適用されることが可能である。例えば、本発明の同期プロセスは、コンピューティングデバイスのオペレーティングシステムに、そのデバイス上の別個のオブジェクトとして、別のオブジェクトの一部として、再使用可能なコントロールとして、サーバからのダウンロード可能なオブジェクトとして、デバイスまたはオブジェクトとネットワークとの間の「ミドルマン」として、分散オブジェクトとして、ハードウェアとして、メモリの中で、以上のいずれかの組合せなどとして提供されて、適用されることが可能である。
【００９４】
前述したとおり、本明細書で説明される様々な技術は、ハードウェアまたはソフトウェアに関連して、あるいは、適宜、ハードウェアとソフトウェアの組合せに関連して実施されることが可能である。本明細書で使用される「構成要素」、「システム」などの用語も同様に、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアである、コンピュータ関連のエンティティを指すことを意図している。例えば、構成要素は、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータであることが可能であるが、以上には限定されない。例として、コンピュータ上で実行されているアプリケーションとそのコンピュータの両方が、構成要素であり得る。１つまたは複数の構成要素が、プロセス内、および／または実行のスレッド内に存在することが可能であり、さらに構成要素は、１つのコンピュータ上に局所化されていても、さらに／または２つ以上のコンピュータの間に分散されていてもよい。
【００９５】
このため、本発明の方法および装置、または本発明のいくつかの態様もしくは部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意のマシン可読記憶媒体などの、実態のある媒体として実体化されたプログラムコード（すなわち、命令）の形態をとることが可能であり、このプログラムコードが、コンピュータなどのマシンに読み込まれ、そのマシンによって実行されると、そのマシンが、本発明を実施するための装置となる。プログラマブルコンピュータ上のプログラムコード実行の事例において、コンピューティングデバイスは、一般に、プロセッサと、このプロセッサによって読み取り可能な記憶媒体（揮発性のメモリおよび／またはストレージ要素、ならびに不揮発性のメモリおよび／またはストレージ要素を含む）と、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含む。例えば、データ処理ＡＰＩ、再使用可能なコントロールなどの使用を介して、本発明の同期サービスおよび／または同期プロセスを実施する、または利用することができる１つまたは複数のプログラムは、好ましくは、コンピュータシステムと対話するように高レベルの手続き言語またはオブジェクト指向プログラミング言語で実施される。しかし、この（１つまたは複数の）プログラムは、所望される場合、アセンブリ言語または機械語で実施されることが可能である。いずれにしても、言語は、コンパイルされる、または解釈される言語であることが可能であり、ハードウェア実施形態と組み合わされることが可能である。
【００９６】
また、本発明の方法および装置は、電気配線またはケーブル配線を介して、光ファイバを介して、または他の任意の形態の伝送を介してなど、何らかの伝送媒体を介して伝送されるプログラムコードの形態で実体化される通信を介して実施されることも可能であり、このプログラムコードが、ＥＰＲＯＭ、ゲートアレイ、ＰＬＤ（プログラマブルロジックデバイス）、クライアントコンピュータなどのマシンによって受信され、そのマシンに読み込まれ、そのマシンによって実行されると、そのマシンが、本発明を実施するための装置となる。汎用プロセッサ上で実施されると、このプログラムコードは、プロセッサと一緒になって、本発明の機能を呼び出すように動作する独特の装置をもたらす。さらに、本発明に関連して使用されるいずれのストレージ技術は、常に、ハードウェアとソフトウェアの組合せであることが可能である。
【００９７】
さらに、開示される主題は、標準のプログラミング技術および／またはエンジニアリング技術を使用して、本明細書で詳細を述べる態様を実施するようにコンピュータベースのデバイス、またはプロセッサベースのデバイスを制御するソフトウェア、ファームウェア、ハードウェア、またはソフトウェア、ファームウェア、およびハードウェアの任意の組合せをもたらすシステム、方法、装置、または製造品として実施されることが可能である。本明細書で使用される「製造品」（または代替として、「コンピュータプログラム製品」）という用語は、任意のコンピュータ可読のデバイス、キャリア、または媒体からアクセス可能なコンピュータプログラムを包含することを意図している。例えば、コンピュータ可読媒体には、磁気ストレージデバイス（例えば、ハードディスク、フロッピー（登録商標）ディスク、磁気ストリップなど）、光ディスク（例えば、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタルバーサタイルディスク）など）、スマートカード、およびフラッシュメモリデバイス（例えば、カード、スティック）が含まれることが可能であるが、以上には限定されない。さらに、電子メールを送受信する際、あるいはインターネットまたはＬＡＮ（ローカルエリアネットワーク）などのネットワークにアクセスする際に使用されるようなコンピュータ可読電子データを伝送するのに、搬送波が使用されることが知られている。
【００９８】
前述したシステムは、いくつかの構成要素の間の対話に関連して説明されてきた。そのようなシステムおよび構成要素には、それらの構成要素または指定された部分構成要素、指定された構成要素または部分構成要素のいくつか、および／またはさらなる構成要素が、上述の様々な置換および組合せに従って含まれることが可能であることを理解することができよう。また、部分構成要素は、親構成要素内に含まれる（階層的）のではなく、他の構成要素と通信するように結合された構成要素として実施されることも可能である。さらに、１つまたは複数の構成要素が組み合わされて単一の構成要素とされて、総合的な機能をもたらしてもよく、あるいは、いくつかの別々の部分構成要素に分割されて、管理層などの任意の１つまたは複数の中間層が、統合された機能をもたらすために、そのような部分構成要素と通信するように結合されるように提供されてもよいことに留意されたい。また、本明細書で説明される任意の構成要素が、本明細書で特に説明されていないが、当業者に一般的に知られている他の１つまたは複数の構成要素と対話することも可能である。
【００９９】
以上に説明される例示的なシステムに鑑みて、開示される主題に従って実施されることが可能な方法は、図６の流れ図を参照して、よりよく理解されよう。説明を簡単にするため、これらの方法は、一連のブロックとして示され、説明されるものの、一部のブロックは、本明細書で図示され、説明されるのとは異なる順序で、さらに／または他のブロックと同時に行われることが可能であるので、主張される主題は、これらのブロックの順序によって限定されないことを理解し、認識されたい。順次でない、つまり、分岐したフローが、流れ図を介して示される場合、同一の結果、または類似した結果を実現する、これらのブロックの他の様々な分岐、フローパス、および順序が実施されてもよいことを理解することができよう。さらに、以降に説明される方法を実施するのに、例示されるすべてのブロックが要求されるわけではない可能性がある。
【０１００】
さらに、理解されるとおり、前段の開示されるシステム、および後段の方法の様々な部分は、人工知能ベース、または知識ベース、または規則ベースの構成要素、部分構成要素、プロセス、手段、方法、または機構（例えば、サポートベクターマシン、ニューラルネットワーク、エキスパートシステム、ベイズ信頼度ネットワーク、ファジー論理、データ融合エンジン、クラシファイアなど）を含む、あるいはそのような構成要素、部分構成要素、プロセス、手段、方法、または機構から成ることが可能である。そのような構成要素は、とりわけ、それらによって実行されるいくつかの機構またはプロセスを自動化して、システムおよび方法のいくつかの部分の適応性を高めるとともに、そのような部分をより効率的で、インテリジェントにすることができる。
【０１０１】
本発明は、様々な図の好ましい実施形態に関連して説明されてきたが、本発明を逸脱することなしに、本発明と同一の機能を実行するために、他の類似した実施形態が使用されてもよく、あるいは説明される実施形態に変形および追加が行われてもよいことを理解されたい。例えば、本発明の例示的なネットワーク環境は、ピアツーピアのネットワーク化された環境などの、ネットワーク化された環境の文脈で説明されるが、本発明は、そのような環境に限定されないこと、およびこの適用例において説明される方法は、有線または無線の、ゲームコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなどの任意のコンピューティングデバイスまたはコンピューティング環境に適用されてもよく、さらに通信ネットワークを介して接続され、ネットワークを介して対話する任意の数のそのようなコンピューティングデバイスに適用されてもよいことが、当業者には認識されよう。さらに、特に無線ネットワーク化されたデバイスの数が増大し続ける中で、ハンドヘルドデバイスオペレーティングシステム、およびその他のアプリケーション特有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図されることが、強調されなければならない。
【０１０２】
例示的な実施形態は、特定のプログラミング言語構造体の文脈で本発明を利用することについて述べるが、本発明は、そのように限定されず、むしろ、本発明に従ってノードのセットに関して知識を表し、交換するための方法をもたらすように、任意の言語で実施されることが可能である。さらに、本発明は、複数の処理チップまたは処理デバイスにおいて、または複数の処理チップまたは処理デバイスにわたって実施されてもよく、さらにストレージも同様に、複数のデバイスにわたって実施されてもよい。したがって、本発明は、いずれの単一の実施形態にも限定されるべきではなく、むしろ、添付の特許請求の範囲による広がりと範囲において解釈されるべきである。
【図１】
2010539604.tif 000003
【図２Ａ】
2010539604.tif 000004
【図２Ｂ】
2010539604.tif 000005
【図３Ａ】
2010539604.tif 000006
【図３Ｂ】
2010539604.tif 000007
【図４Ａ】
2010539604.tif 000008
【図４Ｂ】
2010539604.tif 000009
【図４Ｃ】
2010539604.tif 000010
【図５】
2010539604.tif 000011
【図６】
2010539604.tif 000012
【図７Ａ】
2010539604.tif 000013
【図７Ｂ】
2010539604.tif 000014
【図８】
2010539604.tif 000015
【図９】
2010539604.tif 000016
【図１０】
2010539604.tif 000017
【図１１】
2010539604.tif 000018
【図１２】
2010539604.tif 000019
【国際調査報告】
2010539604.tif 000020
2010539604.tif 000021