(57)【要約】      （修正有）【課題】マルチマスタネットワークコンピューティングのエコシステム内でエンドポイントがローミングし、共通の情報を相互と共有し、同期するためのメタデータおよびメッセージングを示すウェブサービス同期プロトコルを提供する。【解決手段】２つのエンドポイントの１つまたは複数がウェブサービスをサポートする場合に２つのエンドポイント間でデータを同期するために一般的なＳＯＡＰベースのプロトコルが定義される。このプロトコルは、ＸＭＬウェブサービスを使用した知識に基づく転送のためのメッセージングを定義することにより、機器、サービス、およびアプリケーションがファイアウォールを通じて同期することを可能にし、共通の情報セットまたはサブセットを複数のエンドポイントにわたって可能にすることによって柔軟性を可能にし、またエンドポイントで同期される実際のデータのスキーマを規定しないことによって拡張性を可能にする。【選択図】図２Ｂ
2014089719.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のネットワークを介して通信上結合された複数のノードのうちの１ノードとウェブサービスエンドポイントとの間でオブジェクトのセットを同期する方法であって、
前記ウェブサービスエンドポイントによって維持されている対応するオブジェクトセットと同期される前記オブジェクトのセットのうち１オブジェクトの少なくとも１バージョンを、前記ノードによって発展させるステップ９００と、
前記オブジェクトのセットについての前記ウェブサービスエンドポイントによる同期のために、前記ノードで表現された前記オブジェクトのセットとそれに対応する前記オブジェクトのセットの前記オブジェクトのバージョンとに関する前記ノードの知識を、前記ノードから前記ウェブサービスエンドポイントに送信するステップ９１０と
ここで、前記知識の表現はデータタイプに依存しないものであり、
を具えたことを特徴とする方法。
【請求項２】
前記送信するステップ９１０は、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）標準に準拠した少なくとも１つの拡張可能マークアップ言語（ＸＭＬ）メッセージを含むウェブサービス要求を開始することを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記ウェブサービスエンドポイントの知識と前記ノードの前記知識との比較に基づく、前記ノードが認識していない前記オブジェクトのセットへの第１の変更を、前記ウェブサービスエンドポイントから前記ノードで受信するステップ９３０をさらに具えたことを特徴とする請求項１記載の方法。
【請求項４】
前記第１の変更を前記ノードで表現された前記オブジェクトのセットに適用するステップ９４０をさらに具え、前記オブジェクトのセットを、前記第１およびウェブサービスエンドポイントの集積された知識と同等に最新の状態にすることを特徴とする請求項３記載の方法。
【請求項５】
前記第１の変更に基づいて、前記ノードで表現されている第１の知識とそれに対応するバージョンを更新するステップ９４０をさらに具えたことを特徴とする請求項３記載の方法。
【請求項６】
前記ノードが前記オブジェクトのセットへの第１の変更を前記ウェブサービスエンドポイントから受信するステップ９３０は、前記ノードが認識していない、前記オブジェクトのセットの最新バージョンの知識を表す第１の変更を前記ウェブサービスエンドポイントから前記ノードが受信することを含むことを特徴とする請求項３記載の方法。
【請求項７】
前記ウェブサービスエンドポイントで表現されている前記オブジェクトのセットとそれに対応する前記オブジェクトのセットのオブジェクトのバージョンとに関する前記ウェブサービスエンドポイントの知識を、前記ウェブサービスエンドポイントから前記ノードが受信するステップ９３０をさらに具えたことを特徴とする請求項１記載の方法。
【請求項８】
前記ウェブサービスエンドポイントの前記知識を前記ノードの前記知識と比較するステップ９４０をさらに具え、前記ウェブサービスエンドポイントが認識していない、前記ウェブサービスエンドポイントに送るべき前記オブジェクトのセットへの第２の変更を判定することを特徴とする請求項７記載の方法。
【請求項９】
前記ウェブサービスエンドポイントが認識していない前記第２の変更を前記ウェブサービスエンドポイントに送信するステップ９３０をさらに具えたことを特徴とする請求項８記載の方法。
【請求項１０】
前記ウェブサービスエンドポイントおよび前記ノードの前記知識から、前記オブジェクトのセットのオブジェクトが前記ノードと前記ウェブサービスエンドポイントで独立して発展したかどうかを検出するステップ９５０をさらに具えたことを特徴とする請求項７記載の方法。
【請求項１１】
前記ノードと前記ウェブサービスエンドポイントでオブジェクトが独立して発展した場合には、前記第１およびウェブサービスエンドポイントの前記オブジェクトのセットに伝達すべきバージョンは、前記ウェブサービスエンドポイントにおける前記オブジェクトのバージョンであるか、または前記ノードにおける前記オブジェクトのバージョンであるかを判定するステップ９５０を有する特徴とする請求項７記載の方法。
【請求項１２】
請求項１の方法を実行するためのコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。
【請求項１３】
１つまたは複数のネットワークを介して通信上結合された複数のノードのうちの１ノードとウェブサービスプロバイダとの間でオブジェクトのセットを同期する方法であって、
前記複数のノードのうちの１ノードまたはウェブサービスプロバイダから、それぞれ前記ウェブサービスプロバイダまたは前記複数のノードのうちの前記１ノードによる同期を求める要求を受信するステップ９００と、
ここで、オブジェクトのセットに対する変更のセットと、それに対応するそれぞれ前記１ノードまたは前記ウェブサービスプロバイダで表現されている前記オブジェクトのセットのオブジェクトのバージョンと、前記変更のセットに関連付けられた必須知識の定義とを受信するステップを含み、
前記必須知識の定義をそれぞれ前記ウェブサービスプロバイダまたは前記１ノードで処理するステップ７６０と
ここで、それぞれ前記ウェブサービスプロバイダまたは前記１ノードが前記必須知識を有する場合は、それぞれ前記ウェブサービスプロバイダまたは前記１ノードが有する少なくとも１つのデータストア中の前記オブジェクトのセットに前記変更のセットを適用するものであり、
を具えたことを特徴とする方法。
【請求項１４】
前記受信するステップ９００は、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）標準に準拠した少なくとも１つの拡張可能マークアップ言語（ＸＭＬ）メッセージを含むウェブサービス要求を受信するステップを含むことを特徴とする請求項１３記載の方法。
【請求項１５】
前記受信するステップ９００は、前記変更のセットと、それに対応するバージョンと、必須知識の定義とを、ファイアウォールの存在に関係なく、前記ノードまたは前記ウェブサービスプロバイダのいずれかで受信することを含むことを特徴とする請求項１３記載の方法。
【請求項１６】
請求項１３の方法を行う手段を備えることを特徴とするコンピューティング機器。
【請求項１７】
１つまたは複数のネットワークを介して接続可能な複数のノードの中の第１のノードであって、前記第１のノードと、前記複数のノードの中のウェブサービスノードとの間でオブジェクトのセットを同期する第１のノードであって、
前記複数のノードの中の前記第１のノードと前記ウェブサービスノードとの間で前記オブジェクトのセットを同期する同期コンポーネント１０２０を具え、前記同期コンポーネント１０２０は、
同期通信コンポーネント１０２２ａであって、前記ウェブサービスノードと前記第１のノードとの間の知識交換のためのメタデータ構造をデータタイプに関係なく定義するウェブサービス同期プロトコルを介して前記ウェブサービスノードとの同期を開始し、前記ウェブサービス同期プロトコル２０５に基づいて前記オブジェクトのセットと同期する要求を前記ウェブサービスノードに送信し、前記オブジェクトのセットとそれに対応するバージョニング情報の外部知識を前記ウェブサービスノードから受信する同期通信コンポーネント１０２２ａと、
同期分析コンポーネント１０２４であって、前記オブジェクトのセットとそれに対応するバージョニング情報の前記外部知識を、前記オブジェクトのセットとそれに対応するバージョニング情報の前記ローカルな知識と比較して、前記オブジェクトのセットとそれに対応するバージョニング情報の改訂後のローカルな知識によって反映されるべき変更を判定することにより、前記第１のノードで表現される前記オブジェクトのセットとそれに対応するバージョニング情報のローカルな知識を更新する同期分析コンポーネント１０２４と
を具えたことを特徴とするノード。
【請求項１８】
前記ウェブサービス同期プロトコル２０５は、前記第１のノードと前記ウェブサービスノードとの間で同期される実際のデータのスキーマを規定しないことを特徴とする請求項１７記載の第１のノード。
【請求項１９】
前記同期分析コンポーネント１０２４は、前記オブジェクトのセットとそれに対応するバージョニング情報の前記ローカルな知識を用いて、前記前記オブジェクトのセットとそれに対応するバージョニング情報の前記外部知識を分析して、前記ウェブサービスノードが知らない、前記ウェブサービスノードに送信すべき第２の変更を判定することを特徴とする請求項１７記載の第１のノード。
【請求項２０】
前記同期通信コンポーネント１０２２ａはさらに、前記第２の変更を前記ウェブサービスノードに送信することを特徴とする請求項１９記載の第１のノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マルチマスタ同期環境内で疎結合された機器が相互と同期するための同期プロトコルに関する。
【背景技術】
【０００２】
移動型のコンピューティング機器と通信機器が普及した結果、それに対応してユーザが希望する場所で情報を配信および受信できる能力に対する要望が生まれている。簡単に言うと、ユーザは、場所、時間、および機器能力に関係なく、各種機器からのユビキタスな情報およびアプリケーションへのアクセスを求めており、加えて、ユーザはそのような情報にその場でアクセスして更新できることを望み、またデータが可能な限り正確で最新のものである保証も求めている。
【０００３】
機器およびオブジェクトに互いにデータの複製を共有させることを試みる各種の分散データシステムがある。例えば、音楽共有システムでは、ＰＣ、携帯電話、ゲーム機、およびＭＰ３プレーヤ間で音楽を同期することができる。電子メールデータが、ワークサーバ、クライアントＰＣ、および携帯型の電子メール機器間で同期されることができる。しかし、現在のところ、そのような機器が互いと共通の情報セットを同期する限りでは、同期は、機器間の静的な設定に従って行われる。しかし、そうした機器の接続が頻繁あるいは断続的に切断される場合、すなわち、例えば携帯電話がトンネル内にある時や同期させる機器の数が動的である場合のように、機器が疎結合されていて互いとの通信から切断される可能性がある場合には、相互と再接続する時やネットワークに加わる際に、互いの機器が必要とする変更を機器が判定するためのトポロジーに依存しない方法があることが望まれる。
【０００４】
現在は、図１に示すように、電子メールサーバが電子メールクライアントと同期する際のように、マスタノード１００が専用方式でクライアントノード１１０と同期する各種の例がある。２つの機器間専用の同期なので、２つの機器間で同期が必要な情報１０２はマスタノード１００によって追跡することができる。この情報１０２は、クライアントノード１１０によっても任意で追跡されることができるが、マスタノード１００とクライアントノード１１０間の接続が時折切断される場合、および同期する機器の数が増えた場合には、共通の情報のうち各機器が必要とする必要な情報をそれらの機器すべてにわたって追跡することは困難な問題となる。
【０００５】
現在の解決法は、多くの場合、同期のセマンティックの基盤を、任意のノードではなく特定のノード（例えば電子メールサーバ）についてのクロックまたは論理的なウォーターマークのみに置いている。そうしたシステムは、接続するノードまたはマスタが１つの場合には良好に機能する。しかし、ノードの接続のトポロジーまたはパターンが予測不能な変化をした時には問題が発生する。
【０００６】
他のシステムは、この問題に対処するために、特定の種類のデータオブジェクトについての独自開発の同期モデルを構築し、データフォーマットに固有の膨大な量の基本メタデータを機器間で追跡する。例えば、特定のＷｏｒｄ処理文書のフォーマットのオブジェクトを同期するには、オブジェクトは時間の経過と共に変化するため、文書とその基本プリミティブを表現することと、共通のＷｏｒｄ処理文書のセットに従って同期することを望む他の機器に対してその情報を効率的に表現することに多くの間接費と複雑性が注ぎ込まれなければならない。そのようなシステムは構築が高コストで複雑であり、またそれらが基礎とするカスタムのデータフォーマットのために拡張不可能であるのに加えて、そのようなシステムは、生成し、分析し、追跡すべきメタデータの量が多いために本質的に非スケーラブルである。
【０００７】
また、そうした解決法は、例えばＷｏｒｄ処理文書等の１つの特定のドメインにしか適用することができない。例えば画像、映像、電子メール、文書、データベースストア等のあらゆる種類の同期オブジェクトを考えると、マルチマスタ環境ですべての機器にわたってそのようなオブジェクトの発展を追跡するために、各オブジェクトタイプに基づいた特化された同期解決法を実装することは、現在では実現不可能であることが理解できる。したがって、そのような解決法は、データセマンティックから同期セマンティックを切り離すとは言えない。
【０００８】
そのため、あるトポロジーにあるコンピュータが相互に接続する方式を変える時、あるいはコンピュータの数が増加した時に、ノードに依存しない同期の知識が必要とされる。例えば、メディアプレーヤの場合は、複数のコンピュータおよび複数のウェブサイト間での同期が望まれる可能性がある。大半の事例では、大半のアプリケーションは、数個のよく知られたエンドポイント（ホームＰＣとメディアプレーヤ）の間でしかデータを同期させることができない。しかし、そのメディアプレーヤアプリケーションのユーザにとって機器コミュニティが時間と共に進展して行くと、機器に利用される音楽ライブラリのデータ同期の柔軟性の必要性が高まり、その結果、より堅牢なシステムの必要性が生じる。
【０００９】
この必要性は、データの受信、生成、処理、記憶、更新、伝送や、機器との間の各種ネットワークトラフィックの生成に関係することが増えているウェブサービスのエンドポイントの成長を考えるときに、より複雑になる。これに関して、機器の同期の必要性の発展と並行して、同時に発生している傾向は、ウェブサービス、すなわちネットワークを通じた相互動作可能なマシン間対話を支援するように設計されたソフトウェアシステムによって作成、記憶、操作、送信等されるデータが増加していることである。通例、ウェブサービスは、クライアント機器からインターネット等のネットワークを通じてアクセスされることが可能なＷｅｂＡＰＩであり、要求されるサービスをホストしているリモートシステムで実行される。しかし、疎結合のマルチマスタ同期環境の一部である一般的なエンドポイントとしてのウェブサービスとの間で同期を行う手段も存在しない。
【００１０】
この点で、マルチマスタ環境における同期の観点から見ると、２つの機器は直接接続することはできないかもしれないが、共通のウェブサービスエンドポイントを介して接続できる可能性があるため、どの機器とも同期可能なエンドポイントのウェブサービス実装は、有用なシナリオである。これに関して、接続された機器のセットすべての集積された知識を、同期されるオブジェクトと無関係に理解するための機構がないときに、疎結合の機器とウェブサービスの間で同期を試みると複雑化が生じる。これは、そうした機器は常に、発展および退化するノードのネットワークトポロジの一部としてそれら全機器を結合する１つまたは複数のネットワークに接続し、接続を切断するためである。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
したがって、個人／機器の集積された知識に許される最大の程度まで共通の情報をまとめることができるように、各接続機器が何を知っており、何を知らないのかを表すための効率的で単純で汎用性のある機構が必要とされる。さらに、そのようなマルチマスタシステム内で同期ノードとしてのウェブサービスを収容して、疎結合のノードシステムが、保持しているデータとそのデータのバージョンを記述し、データを受信した場所を記述し、さらに会話に関係する別のノードから必要とするデータを記述することを容易にする必要性がある。
【００１２】
上記およびその他の疎結合機器間の同期の現状の欠陥についてのさらなる詳細は、以下の本発明の各種実施形態の説明から明らかになろう。
【課題を解決するための手段】
【００１３】
マルチマスタネットワークコンピューティングのエコシステム内でエンドポイントがローミングし、共通の情報を相互と共有し、同期するためのメタデータおよびメッセージングを示すウェブサービス同期プロトコルが提供される。各種の非制限的実施形態で、２つのエンドポイントの１つまたは複数がウェブサービスをサポートする場合に２つのエンドポイント間でデータを同期するために一般的なＳＯＡＰベースのプロトコルが定義される。このプロトコルは、ＸＭＬウェブサービスを使用した知識に基づく転送のためのメッセージングを定義し、複数のエンドポイントにわたって共通の情報セットまたはサブセットを可能にする柔軟性のある方式で、機器、サービス、およびアプリケーションがファイアウォールを通じて同期することを可能にし、エンドポイントで同期される実際のデータのスキーマを規定しないことにより拡張性を可能にする。
【００１４】
以下のより詳細な説明と添付図面で示す例示的な非制限的実施形態の各種態様を基本的に、あるいは一般的に理解することを助けるために簡略化した要約が提供される。ただし、この要約は、広範にわたる、あるいは網羅的な概略ではない。この要約の唯一の目的は、以下の本発明の各種実施形態のより詳細な説明の前置きとして、本発明の例示的な非制限的実施形態の一部に関連するいくつかの概念を簡略化した形で示すことである。
【００１５】
このウェブサービス同期プロトコルと、該プロトコルを使用した同期の技術について、添付図面を参照してさらに説明する。
【図面の簡単な説明】
【００１６】
【図１】システム中の２つの明確に定義されたエンドポイント間の同期を提供する専用同期システムの図である。
【図２Ａ】一部のノードが互いと接触する頻度が少ない、あるいは全く接触しない場合がある、例示的なマルチマスタ同期環境を示すブロック図である。
【図２Ｂ】本発明の非制限的実施形態に係るウェブサービス同期プロトコルによりノードがウェブサービスエンドポイントと同期する例示的シナリオの図である。
【図２Ｃ】本発明の非制限的実施形態に係るウェブサービス同期プロトコルによりウェブサービスエンドポイントがノードと同期する例示的シナリオの図である。
【図２Ｄ】本発明のウェブサービス同期プロトコルの非制限的実施形態によりマルチマスタ同期環境のノードがよりリッチな知識交換を達成する例示的シナリオの図である。
【図３Ａ】疎結合されたノードのネットワークの４つのノード間の例示的で非制限的な知識の交換を説明する図である。
【図３Ｂ】一部の機器の接続が互いから切断された時の疎結合ノードネットワークの４つのノード間での例示的で非制限的な知識交換を説明する図である。
【図４Ａ】ネットワークのノード間で共有される複数のオブジェクトのコンテクストで例示的な知識交換を説明する図である。
【図４Ｂ】ネットワークのノード間で共有される複数のオブジェクトのコンテクストで例示的な知識交換を説明する図である。
【図４Ｃ】ネットワークのノード間で共有される複数のオブジェクトのコンテクストで例示的な知識交換を説明する図である。
【図５Ａ】ネットワークノード間で共有される複数のオブジェクトのコンテクストで知識交換のプロセスを説明する、例示的で非制限的な流れ図である。
【図５Ｂ】知識および部分的知識に基づいて変更を要求および伝達するためのフレームワークを示す一般的アーキテクチャの図である。
【図６】本発明のウェブサービス同期プロトコルの非制限的実施形態によるノードおよび／またはウェブサービスプロバイダによるウェブサービス通信のための一般的アーキテクチャの図である。
【図７Ａ】本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。
【図７Ｂ】本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。
【図７Ｃ】本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。
【図７Ｄ】本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。
【図８】本発明の非制限的実施形態による部分的知識の表現によって可能になる例を説明する図であり、２つの異なるバージョンの知識が異なるスキーマに従って表現されるが、共通の知識表現に従って同期されることを説明する図である。
【図９】本発明の非制限的実施形態による、ネットワークのノードおよび／またはウェブサービスエンドポイント間で共有される複数のオブジェクトのコンテクストで知識および／または部分的知識の交換を行うプロセスを説明する、例示的で非制限的な流れ図である。
【図１０】別のノードまたはウェブサービスエンドポイントと知識の交換を行う機器の例示的で非制限的な実装のブロック図である。
【図１１】本発明を実施することが可能な例示的で非制限的なネットワーク環境を表すブロック図である。
【図１２】本発明を実施することが可能な例示的で非制限的なコンピューティングシステムまたは動作環境を表すブロック図である。
【発明を実施するための形態】
【００１７】
概要
背景技術の項で述べたように、分断され、分散した現在のコンピューティングの方式を考えると、機器のアプリケーションと情報を使用し、職場にあるそのアプリケーションおよび情報に更新を同期する、あるいは家庭ネットワークの機器等に更新を同期する能力が望まれる。この点で、同期のシナリオは無限である。
【００１８】
マルチマスタ同期環境では、同期の能力は、機器が、ウェブサービスエンドポイントを含む疎結合のノードセットにある１つまたは複数のノードに接触する場合に、時と場所に関係なく要求される。ただし、負担になるほどの量のデータ固有のメタデータを追跡せずに、効率的な知識の交換を行うことが望ましい。不都合な点として、ネットワーク化されたデータは現在はモバイル機器との同期をサポートしておらず、モバイル機器はネットワーク化されたデータとの同期をサポートしていない。むしろ、モバイル機器向けの種々の独自開発のデータ同期プロトコルが普及している。それらの各プロトコルは、選択された機器のサブセットで実装された、小さなネットワーク化データのセットにアクセスできる選択された移送機構にのみ利用することができる。単一の同期標準が存在しないことが、エンドユーザ、機器製造者、アプリケーション開発者、サービスプロバイダに対して多くの問題を呈している。
【００１９】
したがって、モバイルコンピューティングは、データの同期という広範な問題を抱える。ハンドヘルドコンピュータ、携帯電話、ポケットベル、ラップトップ等の一般的なモバイル機器はすべて、各自のデータを、ネットワークアプリケーション、音楽アプリケーション、デスクトップカレンダー、および情報が記憶されている他の場所と同期させる。しかし、断続的な接続性の状況下で動作中にそのような情報にアクセスして更新するこの能力は、急速にモバイルコンピューティングの一般的な部分になりつつある。それでも、現在、ほぼあらゆる機器は、データ同期を行うために異なる技術を使用している。
【００２０】
したがって、ウェブサービスエンドポイントを含む疎結合された複数の機器間で共通の情報を共有することを望む分散データシステムはいずれも、機器が認識している共通の情報への変更と、認識していない変更を表現する効率的な方式を必要としている。
【００２１】
こうした必要性を鑑みて、本発明は、各種の非制限的実施形態で、マルチマスタ同期環境においてウェブサービスエンドポイントがノードおよび他のウェブサービスエンドポイント間での共通の情報セットまたはサブセットの同期に加わることを可能にする、データタイプに無関係の同期プロトコルを提供する。機器がネットワーク内の別のノードまたはウェブサービスエンドポイントに接続された時にデータ同期のセッションを行うための通信を定義するデータ同期プロトコルが提供される。このプロトコルは、オブジェクトの識別とバージョニングを含むノード間の同期のための知識フレームワークと、ローカルデータおよびネットワークデータを同期するための効率的な知識交換向けの共通のプロトコルコマンドをサポートする。
【００２２】
図２Ａに示すように、典型的なマルチマスタ同期環境は、音楽を記憶し、音楽のコレクションが変化した時には必ずどこにいても所有する音楽をユーザのすべての機器にわたって同期したいというユーザの要望によって表すことができる。例えば、ユーザは、自宅に相互と同期することが可能なＭＰ３プレーヤ２２０とコンピューティング機器２３０を有する。同様に、職場には、別のコンピュータ機器２００と携帯電話２４０を有する。この点で、ユーザは、携帯電話２４０に接触している時には携帯電話２４０を機器２００と同期させることに問題はないが、会社の方針の一環としてユーザは携帯電話２４０を仕事以外には携行することができない。そのため、この仮定のシナリオでは、自宅にある機器は知識に基づく交換を介して同期することができ、職場の機器は知識に基づく交換を介して同期することができるが、職場の機器から自宅の機器、またはその逆に知識を転送するブリッジは存在しない。したがって、ウェブサービスエンドポイントと同期できることが望ましいと考えられる。以下でより詳細に説明する各種の非制限的実施形態における本発明のプロトコルは、ＸＭＬメッセージングを介してウェブサービスエンドポイントとの間でそのような知識に基づく交換を可能にして、マルチマスタ同期環境における付加的な同期の選択肢と柔軟性を提供する。
【００２３】
図２Ｂに示すように、マルチマスタ同期エコシステムのノード間で共通の情報セットまたはサブセットについての理解を交換するための知識に基づく効率的な同期フレームワークを活用して、ウェブサービスエンドポイントとの間で知識に基づく交換が可能になる。図に示すように、ＰＣ２００は知識２０２を有し、この知識２０２は、オブジェクトのセットとそれらオブジェクトのバージョン（例えばタイムスタンプ）を含む。ＰＣ２００は、ウェブサービスエンドポイント２１０のウェブサービス同期要求を呼び出すことにより、自身の知識２０２をウェブサービス２１０に送信し、ウェブサービス２１０は、自身の知識２１２を知識２０２と比較する。そして、ウェブサービス２１０は知識２１２をＰＣ２００に返す。この知識交換フレームワークの詳細については下記でより詳しく説明する。これに関して、ＰＣ２００がウェブサービス２１０にＸＭＬメッセージを送信して知識２０２および２１２に基づいて知識に基づく同期を行う方式を定義するウェブサービス同期プロトコル２０５が提供される。その結果、ウェブサービスエンドポイント２１０は、クライアントによって理解されていてウェブサービスエンドポイント２１０が認識していない知識２０２、およびその逆の知識を拾い出す。
【００２４】
ウェブサービスエンドポイント２１０との交換の結果、図２Ｃに示すように知識２１２が知識２１２’に更新される。図２Ｃでは、図２Ｂの機器２００が切断されるが、ＭＰ３プレーヤ２２０がウェブサービス２１０に接続され、ウェブサービス同期プロトコル２０５でウェブサービスエンドポイント２１０との同期の要求を行う。これに関して、知識２２２および２１２’に関して知識の交換が行われ、この場合、ＭＰ３プレーヤ２２０は、ＭＰ３プレーヤ２２０が知らない知識２１２’の部分を知り、またウェブサービス２１０もウェブサービス２１０が知らない知識２２２の部分を知る。
【００２５】
このようにして、図２Ｄに示すように、ウェブサービスエンドポイント２１０は、マルチマスタ同期環境で接続、切断、および同期するノード間で知識を表現するための同じ同期フレームワークに従って、どのノードとも同期することができ、それにより、一部のノードがマルチマスタ同期グループの他のノードと直接接続することが全くない場合でも、ユーザの全ノードにわたる知識の学習を容易にすることができる。
【００２６】
＜効率的な知識の表現および交換＞
本発明の各種の非制限的実施形態に係る、ウェブサービスエンドポイントとの同期を含むマルチマスタ同期環境におけるノード間のデータまたはデータのサブセットを同期する同期プロトコルの説明の前置きとして、この項では、データ同期システムで効率的に知識を表現するための一般的な機構の概要を述べる。この一般的機構は次を含む。（１）第１のノードが第２のノードから必要とする最小限のデータだけを送信すればよいようにすることによる、接続機器間での効率的な知識の交換。（２）第１のノードと第２のノード間のデータ状態についての不整合、すなわち競合を効率的かつ正確に認識する能力。（３）任意数のノードを同期する能力。（４）任意の他のノードを介して任意のノードを同期する能力。すなわちピアツーピアのマルチマスタ同期環境で動作する能力。
【００２７】
この一般的な機構では、２つの機器間で共有すべき何らかの情報に任意数の変更が加えられることができる。２つの機器が接続されると、互いと知識を交換することにより、少なくとも互いが知っていることと知らないことを再構築するために必要な最小限量の情報を認識して、機器間での変更を容易にする。３台以上の機器が関係する場合は、知識は、共有される情報のより大きなベースの不完全な知識である可能性があるが、複数の機器間でより多くの知識が共有されるため、時間と共に機器が他の機器に接続するのに従って、収集された知識が機器に蓄積され続けることに留意されたい。
【００２８】
有利には、本発明は、各種の非制限的実施形態で、そのすべてがオブジェクトのセットの最新のバージョンを保持することに関係する機器のセット、または下記で述べるように機器のサブセットについて同期を行うように動作するが、そのような機器が、そのセットの他のオブジェクトと接続し、接続を断つことも可能にする。機器が１つまたは複数のネットワークを介して機器セットの他の機器と再度接続されると、機器は、他の機器が各自の集積された知識で表すのと同等に最新の集積知識を回復する。このようにして、疎結合の機器であっても機器のセットと接触し、接触を断ち、次いで集積された知識の最新のセットを所有している機器セットと接触することにより、入手し損ねていたすべての知識を再学習することができる。
【００２９】
図３Ａは、知識の交換が任意数の機器に合わせて一般化可能あるいはスケーラブルであることを示す。図に示すように、４つの機器３００、３１０、３２０、３３０が、それら機器の間で共有される共通の情報のセットに関して各機器が知っていることと知らないことをそれぞれ表す知識の表現３０２、３１２、３２２、３３２と共に示される。
【００３０】
有利な点として、図３Ｂに示すように、ネットワーク内の接続が切断状態になっても、他の機器との間に少なくとも１つの直接または間接の接続が存在する限り、すべての機器３００、３１０、３２０、３３０によって完全な知識のセットが得られる。例えば、図示するように、機器３３０の知識３３２は、機器３２０との知識の交換を介し、次いで機器３２０と３１０の間の知識の交換を介し、そして最後に機器３１０と３００の間の知識の交換を介して、なお機器３００に到達する。
【００３１】
より多くの機器が、共有される共通の情報についての知識を共有する場合、本発明の各種の非制限的実施形態による知識の交換は、集積された知識がどの機器から得られるのかを意識しないので、すべての機器が利益を得ることができる。機器は各々独立して動作して、その機器が接続された他の機器のいずれかから機器間で共有される情報に関しての多くの知識を得ることを試みる。
【００３２】
会話に参加し、会話の最後に対象データセットについての同等な知識を持つ２つのノードについて、例示的で非制限的な詳細で方法をさらに詳しく説明する。この方法は、ピアツーピアネットワークに参加する新たな各機器に対して知識交換能力を作成することにより、２つのノードを超えてスケーラブルである。
【００３３】
したがって、図４Ａに示すように、任意数のノードを有するピアツーピアネットワークのノード４００が、ノード４１０とのデータ交換を望んでいる。ノードＡは、ノード４１０に変更を要求することによって開始し、要求するために、図示するようにノード４００は自身の知識（Ｋ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をプロバイダＷＳＰに提供し、ウェブサービスエンドポイントはその知識ＫAを自身の知識ＫBに組み込むか、または、その知識が新しくない場合は、ウェブサービスエンドポイントは、変更を伝達する試みを無視する。
【００６５】
図７Ｄに示すさらに別のメッセージングのシナリオでは、ブラインドプッシュに代えて、プロバイダＰは、自身の知識ＫAと、有効な同期の目的で知識ＫAを消費するためにプロバイダＷＳＰによって理解されなければならない必須知識ＰＫAのセットを伝達する、またはその逆方向に同様の知識を伝達する。したがって、この同期の通信は、受信者が一定量の知識をすでに持っていることを条件とし、そうでない場合データは破棄される。この時、相互と同期するために完全な知識の交換が必要とされる場合もある。
【００６６】
前述の項でマルチマスタ環境における同期データの効率的な表現のための同期フレームワークに従った知識の操作と、様々なメッセージングのシナリオで知識を操作するための各種技術の概要を示したので、次いで、ウェブサービス同期プロトコルの例示的で非制限的な実装について述べる。このウェブサービス同期プロトコルでは、知識は、次の例示的なＸＭＬ擬似構造に従って表すことができる。
【００６７】
【表１】
2014089719.tif 000003
【００６８】
上記ＸＭＬ表現中の／Ｋｎｏｗｌｅｄｇｅ／ＳｃｏｐｅＶｅｃｔｏｒは、特定のオーバーライドを含んでいるデータセット中のすべての項目に適用されるＶｅｃｔｏｒＣｌｏｃｋを含む。
【００６９】
／Ｋｎｏｗｌｅｄｇｅ／ＲａｎｇｅＥｘｃｅｐｔｉｏｎｓは、ＳｃｏｐｅＶｅｃｔｏｒをオーバーライドすべきＶｅｃｔｏｒＣｌｏｃｋｓがある範囲のリストである。
【００７０】
そして、／Ｋｎｏｗｌｅｄｇｅ／ＲａｎｇｅＥｘｃｅｐｔｉｏｎｓ／Ｒａｎｇｅ：ｌｏｗｅｒＢｏｕｎｄは、その範囲内に含まれる最小の項目である。
【００７１】
／Ｋｎｏｗｌｅｄｇｅ／ＲａｎｇｅＥｘｃｅｐｔｉｏｎｓ／Ｒａｎｇｅ：ｕｐｐｅｒＢｏｕｎｄは、その範囲に含まれない、ｌｏｗｅｒＢｏｕｎｄより大きい最小の項目を表す。
【００７２】
／Ｋｎｏｗｌｅｄｇｅ／ＲａｎｇｅＥｘｃｅｐｔｉｏｎｓ／Ｒａｎｇｅは、その範囲に使用すべきＶｅｃｔｏｒＣｌｏｃｋである。
【００７３】
／Ｋｎｏｗｌｅｄｇｅ／ＩｔｅｍＥｘｃｅｐｔｉｏｎｓは、ＳｃｏｐｅＶｅｃｔｏｒをオーバーライドすべきＶｅｃｔｏｒＣｌｏｃｋか、またはオーバーライドする側のＶｅｃｔｏｒＣｌｏｃｋを有するＣｈａｎｇｅＵｎｉｔｓのセットを含む項目のリストを表す。
【００７４】
／Ｋｎｏｗｌｅｄｇｅ／ＩｔｅｍＥｘｃｅｐｔｉｏｎｓ／Ｉｔｅｍは、その例外が適用される、自身の識別子によって指定される項目を表す。
【００７５】
／Ｋｎｏｗｌｅｄｇｅ／ＩｔｅｍＥｘｃｅｐｔｉｏｎｓ／Ｉｔｅｍ／ＩｔｅｍＶｅｃｔｏｒは、同じくその項目に適用されるスコープベクタまたは範囲ベクタをオーバーライドするＶｅｃｔｏｒＣｌｏｃｋである。
【００７６】
／Ｋｎｏｗｌｅｄｇｅ／ＩｔｅｍＥｘｃｅｐｔｉｏｎｓ／Ｉｔｅｍ／ＣｈａｎｇｅＵｎｉｔｓは、存在する場合には、ある項目中に含まれる変更単位のリストと、その変更単位に適用されるオーバーライドＶｅｃｔｏｒＣｌｏｃｋを表す。変更単位は、例えば項目のプロパティである。変更単位は、設定／解除することはできるが、スキーマに準拠しており、削除することはできない。
【００７７】
／Ｋｎｏｗｌｅｄｇｅ／ＩｔｅｍＥｘｃｅｐｔｉｏｎｓ／ｌｔｅｍ／ＣｈａｎｇｅＵｎｉｔｓ／Ｕｎｉｔは、識別子と、当該の変更単位に同じく適用されるスコープ、範囲、または項目ベクタをオーバーライドするＶｅｃｔｏｒＣｌｏｃｋとを指定する。
【００７８】
変更バッチは、２つの同期の当事者間で通信される変更のグループ化であり、次のＸＭＬ擬似構造をとる。
【００７９】
【表２】
2014089719.tif 000004
【００８０】
上の変更バッチの擬似構造では、ＣｈａｎｇｅＢａｔｃｈ／ＰｒｅｒｅｑｕｉｓｉｔｅＫｎｏｗｌｅｄｇｅは、現在の変更バッチについての必須知識を指定する。この知識は、変更を受け取るエンドポイントの知識によって包摂される。
【００８１】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔは、Ｍａｄｅ Ｗｉｔｈ Ｋｎｏｗｌｅｄｇｅを共有するバッチ中の変更のセットである。
【００８２】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／ＭａｄｅＷｉｔｈＫｎｏｗｌｅｄｇｅは、変更セットに適用される知識である。これは、競合の検出と、ＣｈａｎｇｅＢａｔｃｈを受け取るエンドポイントの知識に加えることができる知識断片の生成に使用される。
【００８３】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓは、変更のリストである。
【００８４】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅは、／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓの個々の変更を記述する。
【００８５】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＩｔｅｍＩｄは、送信される項目の同期識別子である。プロバイダは、Ａｄｄｒｅｓｓ要素を使用してこのメッセージに実際のデータを含める（リンクまたは埋め込み）ことにより最適化することもできる。
【００８６】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＩｓＴｏｍｂｓｔｏｎｅは、その項目が、削除された項目に相当するメタデータであるかどうかを示すフラグである。
【００８７】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＢｅｇｉｎｓＲａｎｇｅは、その項目が連続した一連の項目中で先頭にあるかどうかを示すフラグである。
【００８８】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＣｒｅａｔｉｏｎＶｅｒｓｉｏｎは、そのスコープに入った時に項目に与えられたバージョンである。
【００８９】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＵｐｄａｔｅＶｅｒｓｉｏｎは、存在する場合、その変更バッチで通信される項目のバージョンである。
【００９０】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＣｈａｎｇｅＵｎｉｔｓは、存在する場合、その項目中に含まれる変更単位のリストである。
【００９１】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＣｈａｎｇｅＵｎｉｔｓ／Ｕｎｉｔは、その項目中の特定の変更単位を記述する。
【００９２】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＣｈａｎｇｅＵｎｉｔｓ／Ｕｎｉｔ／ＵｎｉｔＩｄは、その変更単位の識別子である。Ｃｈａｎｇｅ／ＩｔｅｍＩｄフィールドと同様に、この識別子を使用して、Ａｄｄｒｅｓｓ要素を使用してデータを埋め込むか、リンクすることができる。
【００９３】
／ＣｈａｎｇｅＢａｔｃｈ／ＣｈａｎｇｅＳｅｔ／Ｃｈａｎｇｅｓ／Ｃｈａｎｇｅ／ＣｈａｎｇｅＵｎｉｔｓ／Ｕｎｉｔ／ＵｐｄａｔｅＶｅｒｓｉｏｎは、その変更バッチで通信される項目中の変更単位のバージョンである。
【００９４】
／ＣｈａｎｇｅＢａｔｃｈ／ＭｏｒｅＤａｔａｌｓＡｖａｉｌａｂｌｅは、供給側で知られているＰｒｅｒｅｑｕｉｓｉｔｅＫｎｏｗｌｅｄｇｅとＭａｄｅＷｉｔｈＫｎｏｗｌｅｄｇｅとの間のすべての変更がそのバッチに含まれていることを示すフラグである。
【００９５】
この同期プロトコルのメッセージングに関して、ＧｅｔＫｎｏｗｌｅｄｇｅメッセージは、サービスの現在の知識のコピーを得るために機器ノードがウェブサービスエンドポイントに送信できるメッセージであり、次の例示的なＸＭＬ擬似構造を有する。
【００９６】
【表３】
2014089719.tif 000005
【００９７】
ＧｅｔＫｎｏｗｌｅｄｇｅは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。ウェブサービスのプロバイダは、ＵＲＩを使用して、例えば「４−ｓｔａｒｍｕｓｉｃ」、「Ｖｉｄｅｏ」、「Ｐｕｂｌｉｃ Ｃｏｎｔａｃｔｓ」等の同期させる項目の論理的なセットを完全に解決する。
【００９８】
ＧｅｔＫｎｏｗｌｅｄｇｅＲｅｓｐｏｎｓｅメッセージは、ＧｅｔＫｎｏｗｌｅｄｇｅメッセージに対するウェブサービスからの応答であり、サービスの知識のスナップショットを含んでおり、次の例示的ＸＭＬ擬似構造を有する。
【００９９】
【表４】
2014089719.tif 000006
【０１００】
／ＧｅｔＫｎｏｗｌｅｄｇｅＲｅｓｐｏｎｓｅ／ＳｃｏｐｅＲｅｐｌｉｃａは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
【０１０１】
／ＧｅｔＫｎｏｗｌｅｄｇｅＲｅｓｐｏｎｓｅ／Ｋｎｏｗｌｅｄｇｅは、所与のＳｃｏｐｅ−Ｒｅｐｌｉｃａについてのサービスの知識である。
【０１０２】
ＲｅｑｕｅｓｔＣｈａｎｇｅｓメッセージは、サービスが変更のバッチを列挙して返すことを要求するためにウェブサービスに送信され、次の例示的ＸＭＬ擬似構造を有する。
【０１０３】
【表５】
2014089719.tif 000007
【０１０４】
／ＲｅｑｕｅｓｔＣｈａｎｇｅｓ／ＳｃｏｐｅＲｅｐｌｉｃａは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
【０１０５】
／ＲｅｑｕｅｓｔＣｈａｎｇｅｓ／Ｋｎｏｗｌｅｄｇｅは、変更を列挙するための基礎としてサービスがすべきクライアントの知識である。
【０１０６】
／ＲｅｑｕｅｓｔＣｈａｎｇｅｓ／ＲｅｑｕｅｓｔＰａｒａｍｓ／ＥｎｕｍｅｒａｔｅＡｌｌＩｔｅｍｓＯｎＦｏｒｇｏｔｔｅｎＫｎｏｗｌｅｄｇｅＦａｉｌｕｒｅは、クライアントの知識がサーバの忘れられた知識を包摂することができない場合に、サーバが自身のストアにあるすべての項目を列挙して、クライアントに削除された項目を除去させることを示すフラグである。
【０１０７】
ＲｅｑｕｅｓｔＣｈａｎｇｅｓＲｅｓｐｏｎｓｅメッセージは、ＲｅｑｅｓｔＣｈａｎｇｅｓに対する応答であり、そのバッチ中のすべての変更を有する変更バッチを含む。ＣｈａｎｇｅＢａｔｃｈ中のＰｒｅｒｅｑｕｉｓｉｔｅＫｎｏｗｌｅｄｇｅは、ＲｅｑｕｅｓｔＣｈａｎｇｅメッセージの一部として送信された知識である。
【０１０８】
【表６】
2014089719.tif 000008
【０１０９】
／ＲｅｑｕｅｓｔＣｈａｎｇｅｓＲｅｓｐｏｎｓｅ／ＳｃｏｐｅＲｅｐｌｉｃは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
【０１１０】
／ＲｅｑｕｅｓｔＣｈａｎｇｅｓＲｅｓｐｏｎｓｅ／ＣｈａｎｇｅＢａｔｃｈは、サービスによって識別された、クライアントに返す必要がある変更のバッチである。
【０１１１】
／ＲｅｑｕｅｓｔＣｈａｎｇｅｓＲｅｓｐｏｎｓｅ／ＦｕｌｌＩｔｅｍＳｅｔＥｎｕｍｅｒａｔｅｄは、忘れられた知識の確認が失敗したために変更バッチがサービスのＳｃｏｐｅ−Ｒｅｐｌｉｃａにある項目の完全な列挙を含んでいることを示すフラグである。
【０１１２】
完全な列挙の場合に、／ＲｅｑｕｅｓｔＣｈａｎｇｅｓＲｅｓｐｏｎｓｅ／ＦｏｒｇｏｔｔｅｎＫｎｏｗｌｅｄｇｅは、変更のバッチでクライアントが学習すべきサービスの忘れられた知識である。
【０１１３】
ＣｏｎｖｅｙＣｈａｎｇｅｓメッセージは、変更のセットがサービスにプッシュされる時にサービスに送信される。ＣｈａｎｇｅＢａｔｃｈで送信される知識は、列挙に使用された知識である。このメッセージは、ＧｅｔＫｎｏｗｌｅｄｇｅの呼び出しによって得るか、以前の同期メッセージを通じて得られるキャッシュされたコピーとして得られた可能性があり、次の例示的ＸＭＬ擬似構造を有する。
【０１１４】
【表７】
2014089719.tif 000009
【０１１５】
／ＣｏｎｖｅｙＣｈａｎｇｅｓ／ＳｃｏｐｅＲｅｐｌｉｃａは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
【０１１６】
／ＣｏｎｖｅｙＣｈａｎｇｅｓ／ＣｈａｎｇｅＢａｔｃｈは、クライアントによって識別された、サービスに適用される必要がある変更バッチである。
【０１１７】
／ＣｏｎｖｅｙＣｈａｎｇｅｓ／ＦｕｌｌＩｔｅｍＳｅｔＥｎｕｍｅｒａｔｅｄは、忘れられた知識の確認が失敗したために変更バッチがクライアントのＳｃｏｐｅ−Ｒｅｐｌｉｃａ中の項目の完全な列挙を含んでいることを示すフラグである。
【０１１８】
完全な列挙の場合に、／ＣｏｎｖｅｙＣｈａｎｇｅｓ／ＦｏｒｇｏｔｔｅｎＫｎｏｗｌｅｄｇｅは、その変更バッチでサービスが学習すべきクライアントの忘れられた知識である。
【０１１９】
ＣｏｎｖｅｙＣｈａｎｇｅｓＲｅｓｐｏｎｓｅメッセージは、ＣｏｎｖｅｙＣｈａｎｇｅｓメッセージに対する応答であり、変更を適用した結果のウェブサービスについての知識を含んでおり、次の例示的なＸＭＬ擬似構造を有する。
【０１２０】
【表８】
2014089719.tif 000010
【０１２１】
／ＣｏｎｖｅｙＣｈａｎｇｅｓＲｅｓｐｏｎｓｅ／ＳｃｏｐｅＲｅｐｌｉｃａは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
【０１２２】
／ＣｏｎｖｅｙＣｈａｎｇｅｓＲｅｓｐｏｎｓｅ／ＲｅｓｕｌｔｉｎｇＫｎｏｗｌｅｄｇｅは、伝達された変更バッチを適用した後のサービスの知識である。
【０１２３】
このように、マルチマスタネットワークコンピューティングのエコシステム内でエンドポイントがローミングし、共通の情報を相互と共有し、同期するためのメタデータおよびメッセージングを示すウェブサービス同期プロトコルが提供される。
【０１２４】
２つのエンドポイントの１つまたは複数がウェブサービスをサポートする場合に２つのエンドポイント間でデータを同期するために一般的なＳＯＡＰベースのプロトコルが定義される。このプロトコルは、ＸＭＬウェブサービスを使用した知識に基づく転送のためのメッセージングを定義することにより、機器、サービス、およびアプリケーションがファイアウォールを通じて同期することを可能にし、共通の情報セットまたはサブセットを複数のエンドポイントにわたって可能にすることによって柔軟性を可能にし、またエンドポイントで同期される実際のデータのスキーマを規定しないことによって拡張性を可能にする。
【０１２５】
図８は、マルチマスタ同期環境においてノードおよび／またはウェブサービスエンドポイントの間で共通の情報のセットまたはサブセットを同期するための知識に基づくフレームワークにより、ノードおよび／またはウェブサービスエンドポイントが異なるスキーマで同じデータを記憶することが可能になることを示す。異なるエンドポイントは、同期されるスキーマ要素の共通の表現を取り決めなければならない。すなわち、この同期プロトコルは、知識の表現に関してデータ型に無関係であり、そのため各ノードは、各自の要望に応じて基礎となるスキーマ要素を記憶することができる。
【０１２６】
図に示すように、ノード、例えばＰＣ１は、連絡先オブジェクトを表す第１のスキーマＳ１を含むことができ、一方、ウェブサービスエンドポイントＷＳＥは、異なるスキーマＳ２に従って連絡先オブジェクトを記憶することができる。この点に関して、効率的な知識の表現は同期対象データのタイプに依存しないので、異なる機器は、どの知識、例えば知識のサブセットを消費するかについて異なる決定をすることができる。
【０１２７】
図９は、本発明のプロトコルの非制限的実施形態に係る、ノードとウェブサービスの間で知識を交換するための例示的な非制限的な方法の流れ図である。ただし、図７Ａ、７Ｂ、７Ｃ、および７Ｄから明らかにしたように、本発明は図９に表される完全な知識の交換パターンに限定されず、ｐｉｎｇｔｏ ｐｕｌｌ、プル、およびプッシュのシナリオと、必須知識のシナリオがすべて、柔軟性のある同期プロトコルに従って企図される。
【０１２８】
９００で、ノードがウェブサービスに変更を要求する。９１０で、ノードは自身の知識をウェブサービスに送信する。９２０で、ウェブサービスは自身の知識をノードの知識と比較する。９３０で、ウェブサービスは、ノードが認識していない最新の変更をウェブサービスからノードに送信する。また、ノードは、９４０で、自身の知識と比較するためにウェブサービスの知識を受け取る。９５０で、ノードの知識とウェブサービスの知識中で独立して発展した変更間の競合が検出される。最後に９６０で、ウェブサービスが認識していない最新の変更がノードからウェブサービスに送信される。このように、知識の分析により、もう一方のエンドポイントが要求し、かつまだ持っていない変更のみを送ることで効率的な知識交換が可能になる。
【０１２９】
図１０は、完全または部分的な知識の交換を行う機器１０００ｂの例示的で非制限的な実装のブロック図である。図に示すように、機器１０００ｂは、本発明の非制限的実施形態により別の機器との間でオブジェクトのセット１０３０を同期するために完全または部分的な知識交換の技術を行う同期モジュール１０２０を含む。同期モジュール１０２０は、本発明の非制限的実施形態の知識交換技術により一般にデータを送受信する同期通信モジュール１０２２を含むことができる。
【０１３０】
同期通信モジュール１０２２は同期開始モジュール１０２２ａも含んでよく、同期開始モジュール１０２２ａは、例えば権限付与モジュール１０４０を介して許可された場合に第２の機器との同期を開始し、第２の機器に接続することができる。同期モジュール１０２０は、Ｉ／Ｏモジュール１０２２ｂも含んでよく、Ｉ／Ｏモジュール１０２２ｂは、第２の機器（図示せず）にオブジェクトのセット１０３０についての完全な知識および／または部分的な知識１００２ｂを送信することによって同期の開始に応答し、第２の機器の完全な知識および／または部分的知識１０１２ｂと、第２の機器で発生した、オブジェクトのセット１０３０に加えるべき変更とを受け取る。次いで、同期分析モジュール１０２４は、オブジェクトのセット１０３０に行う変更を適用し、そして機器間の同期を完了するために第２の機器に送る変更を判定するために、第２の機器から得た完全な知識および／または部分的知識１０１２ｂを第１の機器の完全な知識および／または部分的知識１００２ｂと比較するように動作する。
【０１３１】
＜ウェブサービスに関する補足コンテクスト＞
ウェブサービスを定義する仕様は意図的にモジュール方式にしてあり、その結果、それらの仕様すべてを含む１つの文書は存在しない。加えて、単一の仕様セットも、また安定した仕様のセットも存在しない。一般に、状況と技術の選択に応じて他の仕様で補足される数個の「コア」仕様があり、それらにはＸＭＬ、ＳＯＡＰ、ＷＳＤＬ、ＵＤＤＩが含まれる。
【０１３２】
Ｓｉｍｐｌｅ ＯｂｊｅｃｔＡｃｃｅｓｓ Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）は、ＸＭＬを基にした拡張可能なメッセージエンベロープフォーマットであり、基礎となるプロトコルへの「バインディング」を有する。ＳＯＡＰは、コンピュータネットワークを通じてＸＭＬベースのメッセージを交換するためのプロトコルであり、通常はハイパーテキスト転送プロトコル（ＨＴＴＰ）／ＨＴＴＰＳｅｃｕｒｅ（ＨＴＴＰＳ）を使用する。ＳＯＡＰは、ウェブサービススタックの基礎レイヤを形成し、その上により抽象的なレイヤを構築できる基本のメッセージングフレームワークを提供する。
【０１３３】
ＳＯＡＰには数個の異なるメッセージパターンタイプがあるが、中でも最も一般的なのはＲｅｍｏｔｅＰｒｏｃｅｄｕｒｅ Ｃａｌｌ（ＲＰＣ）パターンである。ＲＰＣパターンでは、１つのネットワークノード（クライアント）が別のノード（サーバ）に要求メッセージを送信し、サーバは直ちにクライアントに応答メッセージを送信する。ＨＴＴＰ上でＳＯＡＰを使用すると、従来のリモート実行技術よりも容易にプロキシおよびファイアウォールを越えて通信することができる。
【０１３４】
ＳＯＡＰは、汎用性が高いため、種々の異なるトランスポートプロトコルの使用を可能にする。標準スタックはトランスポートプロトコルとしてＨＴＴＰを使用するが、他のプロトコルも使用可能である（ＴＣＰ、ＳＮＭＰ等）。
【０１３５】
ＷＳＤＬは、特定プロトコルへのバインディングについての詳細と共にサービスインタフェースを記述することを可能にするＸＭＬフォーマットであり、通例はサーバおよびクライアントコードの生成と、コンフィギュレーションのために使用される。
【０１３６】
Ｕｎｉｖｅｒｓａｌ Ｄｅｓｃｒｉｐｔｉｏｎ，Ｄｉｓｃｏｖｅｒｙ ａｎｄ Ｉｎｔｅｇｒａｔｉｏｎ（ＵＤＤＩ）は、ウェブサービスについてのメタデータをパブリッシュおよび発見するためのプロトコルであり、アプリケーションが設計時または実行時にウェブサービスを発見できるようにする。ＵＤＤＩは、企業が、サービスの一覧をパブリッシュし、互いを発見し、サービスまたはソフトウェアアプリケーションがインターネット上でどのように対話するかを定義できるようにするオープン業界イニシアチブである。ＵＤＤＩの企業登録は、次の３つの構成要素からなる。
【０１３７】
ホワイトページ−アドレス、連絡先、および既知の識別子。
【０１３８】
イエローページ−標準的な分類法に基づく産業分類。
【０１３９】
グリーンページ−企業によって公開されるサービスについての技術情報。
【０１４０】
ＵＤＤＩは、コアウェブサービス標準の１つである。ＵＤＤＩは、ＳＯＡＰメッセージによって照会され、ＵＤＤＩのディレクトリに掲載されたウェブサービスと対話するために必要なプロトコルバインディングとメッセージフォーマットを記述したＷＳＤＬ文書へのアクセスを提供するように設計されている。
【０１４１】
＜例示的なネットワーク環境および分散環境＞
当業者は、上記で説明した同期知識の表現とウェブサービスエンドポイントとの交換の各種の非制限的実施形態は、コンピュータネットワークの一部として配置される、あるいは分散コンピューティング環境内に配置されることが可能で任意種のデータストアに接続されたコンピュータまたは他のクライアントまたはサーバ機器との関連で実施できることを理解することができよう。これに関して、本発明は、本発明による同期技術との関連で使用することが可能な、任意数のメモリまたは記憶装置と、任意数の記憶装置またはボリュームにわたって行われる任意数のアプリケーションおよびプロセスとを有するコンピュータシステムまたは環境に関連する。本発明は、リモートまたはローカルのストレージを有するネットワーク環境または分散コンピューティング環境に配置されたサーバコンピュータとクライアントコンピュータを有する環境に適用することができる。本発明は、リモートまたはローカルのサービスおよびプロセスとの関連で情報を生成、受信、および送信するためのプログラミング言語機能、解釈および実行機能を有する独立型のコンピューティング機器にも適用されてよい。
【０１４２】
分散コンピューティングは、コンピューティング機器とシステムの間の交換により、コンピュータリソースとサービスの共有を提供する。このリソースおよびサービスには、情報の交換、ファイル等のオブジェクトのキャッシュ記憶およびディスク記憶が含まれる。分散コンピューティングはネットワーク接続性を利用して、クライアントがその集合的な力を活かして事業全体を利することを可能にする。この点で、各種の機器が、本発明による同期のシステムおよび方法に関連する可能性のあるアプリケーション、オブジェクト、またはリソースを有する可能性がある。
【０１４３】
図１１は、例示的なネットワーク化または分散型コンピューティング環境の概略図である。分散コンピューティング環境は、コンピューティングオブジェクト１１１０ａ、１１１０ｂ等と、コンピューティングオブジェクトまたは機器１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等を備える。これらのオブジェクトは、プログラム、メソッド、データストア、プログラマブルロジック等を備えることができる。オブジェクトは、ＰＤＡ、オーディオ／ビデオ機器、ＭＰ３プレーヤ、パーソナルコンピュータ等の同一の機器または異なる機器の一部分を構成することができる。各オブジェクトは、通信ネットワーク１１４０を介して別のオブジェクトと通信することができる。このネットワークはそれ自体が、図１１のシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティング機器を備えてよく、またそれ自体が、相互に接続された複数のネットワークを表すことができる。本発明の一態様によると、各オブジェクト１１１０ａ、１１１０ｂ等、または１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等は、本発明による知識を同期するシステムおよび方法で使用するのに適した、ＡＰＩ、他のオブジェクト、ソフトウェア、ファームウェア、および／またはハードウェアを使用する可能性のあるアプリケーションを含むことができる。
【０１４４】
また、１１２０ｃ等のオブジェクトが別のコンピューティング機器１１１０ａ、１１１０ｂ等、あるいは１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等でホストされてもよいことも理解できる。そのため、図の物理的環境では接続された機器をコンピュータとして示すことができるが、そのような図示は単に例示的なものであり、物理的環境は代わりにＰＤＡ、テレビ、ＭＰ３プレーヤ等の各種デジタル機器を備えるものと図示または説明してもよく、それらの機器は、各種のワイヤードおよびワイヤレスサービス、インタフェース、ＣＯＭオブジェクト等のソフトウェアオブジェクトを用いることができる。
【０１４５】
分散コンピューティング環境を支援する各種のシステム、コンポーネント、およびネットワーク構成がある。例えば、コンピューティングシステムは、ワイヤードまたはワイヤレスシステム、ローカルネットワークまたは広域分散ネットワークによって共に接続することができる。現在、そうしたネットワークの多くはインターネットに結合されており、インターネットは、広域分散コンピューティングのインフラストラクチャを提供し、多くの種々のネットワークを包含する。インフラストラクチャはいずれも、本発明による同期に関連するようにされた例示的通信に使用することができる。
【０１４６】
家庭ネットワーク環境では、電力線、データ（ワイヤレスおよびワイヤードの両方）、音声（例えば電話）、娯楽媒体等、それぞれが独自のプロトコルをサポートする可能性のある異種のネットワーク移送媒体が少なくとも４つある。照明のスイッチや電気器具等の大半の家庭用制御装置は、接続に電力線を使用することができる。データサービスは、広帯域（例えばＤＳＬまたはケーブルモデム）として住宅に入り、住宅内ではワイヤレス（例えばＨｏｍｅＲＦや８０２．１１Ｂ）またはワイヤード（例えばＨｏｍｅＰＮＡ、Ｃａｔ５、Ｅｔｈｅｒｎｅｔ（登録商標）、さらには電力線）の接続性を使用してアクセスされることができる。音声トラフィックは、ワイヤード（例えばＣａｔ３）またはワイヤレス（例えば携帯電話）として住宅に入り、住宅内ではＣａｔ３配線を使用して分配されることができる。娯楽媒体あるいは他のグラフィックデータは、衛星またはケーブルを通じて住宅に入ることができ、住宅内では通例は同軸ケーブルを使用して分配される。ＩＥＥＥ１３９４およびＤＶＩもメディア機器群向けのデジタル相互接続である。上記のネットワーク環境、および今後プロトコル標準として出現する可能性のある、あるいはすでに出現しているネットワーク環境すべてを相互に接続してイントラネット等のネットワークを形成することができ、そのネットワークをインターネット等のワイドエリアネットワークを介して外界に接続することができる。要するに、データの記憶と送信には各種の異種のデータ源が存在しており、そのため、本発明のコンピューティング機器は既存のどの方式でもデータを共有および通信することができ、本明細書の実施形態で記載される方式はいずれも制限的なものではない。
【０１４７】
インターネットは、通常、コンピュータネットワーキングの技術ではよく知られた伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）プロトコルスイートを利用するネットワークおよびゲートウェイの集合を言う。インターネットは、ユーザがネットワークを通じて対話し、情報を共有することを可能にするネットワーキングプロトコルを実行するコンピュータによって相互に接続された、地理的に分散した遠隔のコンピュータネットワークからなるシステムと説明することができる。そのような広範な情報共有のために、インターネットのようなリモートネットワークは一般に、これまでのところは、開発者が特化された動作やサービスを行うためのソフトウェアアプリケーションを基本的に制約なしに設計することができるオープンシステムに発展してきた。
【０１４８】
したがって、ネットワークインフラストラクチャは、クライアント／サーバ、ピアツーピア、混合アーキテクチャ等の多数のネットワークトポロジを可能にしている。「クライアント」は、そのクラスまたはグループが関係しない他のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。したがって、コンピューティングでは、クライアントは、別のプログラムから提供されるサービスを要求するプロセス、すなわち大まかに言うと命令またはタスクのセットである。クライアントプロセスは、他方のプログラムまたはサービス自体について何らの動作の詳細を「知る」必要なしに、要求したサービスを利用する。クライアント／サーバアーキテクチャ、特にネットワーク化されたシステムでは、クライアントは通常、別のコンピュータ、例えばサーバから提供される共有ネットワークリソースにアクセスするコンピュータである。図１１の図示では、一例として、コンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等をクライアントと考えることができ、コンピュータ１１１０ａ、１１１０ｂ等をサーバと考えることができ、サーバ１１１０ａ、１１１０ｂ等はデータを保持し、そのデータがクライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等に対して複製されるが、状況に応じてどのコンピュータもクライアント、サーバ、あるいはその両方と考えることができる。これらのコンピューティング機器はいずれも、本発明による知識の同期技術に関連する可能性のあるデータを処理する、あるいはサービスやタスクを要求することができる。
【０１４９】
サーバは通例、インターネットやワイヤレスネットワークインフラストラクチャ等のリモートまたはローカルのネットワークを通じてアクセスできるリモートのコンピュータシステムである。第１のコンピュータシステムでクライアントプロセスがアクティブであり、第２のコンピュータシステムでサーバプロセスがアクティブであり、通信媒体を通じて互いと通信し、それにより分散した機能を提供し、複数のクライアントがサーバの情報収集能力を利用できるようにすることが可能である。本発明による知識に基づく同期の技術に関連して利用されるソフトウェアオブジェクトは、複数のコンピューティング機器またはオブジェクトに分散させてよい。
【０１５０】
クライアントとサーバは、プロトコルレイヤによって提供される機能を利用して相互と通信する。例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）は、ワールドワイドウェブ（ＷＷＷ）あるいは「ウェブ」との関連で使用される一般的なプロトコルである。典型的には、インターネットプロトコル（ＩＰ）アドレス等のコンピュータネットワークアドレスやユニバーサルリソースロケータ（ＵＲＬ）等の他の参照を使用して、サーバまたはクライアントコンピュータを互いに対して識別することができる。ネットワークアドレスは、ＵＲＬアドレスと呼ぶ場合がある。通信は、通信媒体を通じて提供されることができ、例えば高容量通信のためにＴＣＰ／ＩＰ接続を介してクライアントとサーバを互いに結合することができる。
【０１５１】
したがって、図１１には、本発明を用いることができる例示的なネットワーク環境または分散環境を示し、サーバはネットワーク／バスを介してクライアントコンピュータと通信する。より詳細には、本発明により、複数のサーバ１１１０ａ、１１１０ｂ等が、ＬＡＮ、ＷＡＮ、イントラネット、ＧＳＭネットワーク、インターネット等の通信ネットワーク／バス１１４０を介して、携帯型コンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク家電、あるいはＶＣＲや、ＴＶ、オーブン、照明、ヒータ等の他の装置である複数のクライアントまたはリモートコンピューティング機器１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等と相互に接続される。したがって、本発明は、任意種のデータの同期がそれとの関連で望まれるコンピューティング機器に適用されることが企図される。
【０１５２】
例えば通信ネットワーク／バス１１４０がインターネットであるネットワーク環境では、サーバ１１１０ａ、１１１０ｂ等は、クライアント１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等がＨＴＴＰ等のいくつかの周知のプロトコルのいずれかを介して通信するウェブサーバとすることができる。サーバ１１１０ａ、１１１０ｂ等は、分散コンピューティング環境の特徴であるように、クライアント１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等として機能することもできる。
【０１５３】
先に触れたように、通信は、適宜、ワイヤードまたはワイヤレス、あるいはその組み合わせでよい。クライアント機器１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等は、通信ネットワーク／バス１１４０を介して通信する場合もしない場合もあり、また各自に関連付けられた独立した通信を有してよい。例えば、ＴＶやＶＣＲの場合は、その制御にネットワーク化された側面がある場合もない場合もある。各クライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等およびサーバコンピュータ１１１０ａ、１１１０ｂ等は、各種のアプリケーションプログラムモジュールまたはオブジェクト１１３５ａ、１１３５ｂ、１１３５ｃ等を備えることができ、また、各種の記憶要素または記憶オブジェクトへの接続あるいはアクセスを備えることができ、それらの記憶要素または記憶オブジェクトにファイルまたはデータストリームが記憶される、あるいはファイルまたはデータストリームの一部がダウンロード、送信、または移動されることができる。コンピュータ１１１０ａ、１１１０ｂ、１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等の１つまたは複数が、データベース１１３０、または本発明により処理または保存されるデータを格納するデータベースまたはメモリ１１３０等の他の記憶要素の維持と更新を担うことができる。したがって、本発明は、コンピュータネットワーク／バス１１４０にアクセスし、対話することができるクライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等と、クライアントコンピュータ１１２０ａ、１１２０ｂ、１１２０ｃ、１１２０ｄ、１１２０ｅ等およびその他の同様の機器と対話することが可能なサーバコンピュータ１１１０ａ、１１１０ｂ等と、データベース１１３０とを有するコンピュータネットワーク環境で利用することができる。
【０１５４】
＜例示的コンピューティング機器＞
上述のように、本発明は、機器のセットにわたって任意種のデータを同期することが望ましい場合がある機器に適用される。したがって、ハンドヘルド、携帯型、およびその他のコンピューティング機器と、あらゆる種類のコンピューティングオブジェクトが本発明との関連で使用されるものと企図される。すなわち、機器が複数の機器間のデータ共有から利益を得る、あるいは他の状況でデータの受信、処理、または記憶する可能性のある場合が企図されることを理解されたい。そのため、下記の図１２で説明する汎用リモートコンピュータは一例に過ぎず、本発明は、ネットワーク／バスの相互運用性および対話を有するどのクライアントにも実装することが可能である。したがって、本発明は、非常に少ないクライアントリソースまたは最小限のクライアントリソースが関連する、ホストされたネットワーク化サービスからなる環境で実施することができる。これは例えば、クライアント機器が、電気器具中に配置されたオブジェクトのように、単にネットワーク／バスへのインタフェースとして機能するネットワーク環境である。
【０１５５】
これは必須ではないが、本発明はその一部を、機器やオブジェクト向けのサービスの開発者が使用するためにオペレーティングシステムを介して実施する、かつ／または本発明のコンポーネントとの関連で動作するアプリケーションソフトウェアに組み込むことができる。ソフトウェアは、クライアントワークステーション、サーバ、その他の機器等、１つまたは複数のコンピュータによって実行されるプログラムモジュールのようなコンピュータ実行可能命令の一般的文脈で説明することができる。当業者には、本発明は他のコンピュータシステム構成およびプロトコルで実施してもよいことが理解されよう。
【０１５６】
したがって、図１２に、本発明を実施することができる適切なコンピューティングシステム環境１２００ａの一例を示すが、上記で明らかにしたように、コンピューティングシステム環境１２００ａはメディア機器に適したコンピューティング環境の一例に過ぎず、本発明の使用または機能性の範囲に関して制限を示唆するものではない。また、コンピューティング環境１２００ａは、例示的動作環境１２００ａに図示される構成要素の１つまたは組み合わせに関連して依存性や必要性を有するものとも解釈すべきでない。
【０１５７】
図１２を参照すると、本発明を実施する例示的リモート機器は、コンピュータ１２１０ａの形態の汎用コンピューティング機器を含む。コンピュータ１２１０ａの構成要素には、これらに限定しないが、処理装置１２２０ａ、システムメモリ１２３０ａ、およびシステムメモリを含む各種のシステム構成要素を処理装置１２２０ａに結合するシステムバス１２２１ａが含まれてよい。システムバス１２２１ａは、各種のバスアーキテクチャを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数種のバス構造のいずれでもよい。
【０１５８】
コンピュータ１２１０ａは、通例、各種のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１２１０ａからアクセスすることが可能な利用可能媒体でよい。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、あるいは他のデータ等の情報を記憶するための方式または技術で実装された、揮発性および不揮発性、取り外し可能および取り外し不能両方の媒体が含まれる。コンピュータ記憶媒体には、これらに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、コンピュータ１２１０ａによるアクセスが可能な他の媒体が含まれる。通信媒体は通例、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他の移送機構等の変調データ信号として表し、任意の情報配信媒体を含む。
【０１５９】
システムメモリ１２３０ａは、読み取り専用メモリ（ＲＯＭ）および／またはランダムアクセスメモリ（ＲＡＭ）等の揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含むことができる。基本入出力システム（ＢＩＯＳ）は、起動時等にコンピュータ１２１０ａ中の要素間の情報転送を助ける基本ルーチンを含んでおり、メモリ１２３０ａに記憶することができる。メモリ１２３０ａは通例、処理装置１２２０ａから即座にアクセス可能な、かつ／または処理装置１２２０ａによって現在操作されているデータおよび／またはプログラムモジュールも保持する。限定ではなく例として、メモリ１２３０ａは、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、およびプログラムデータも含むことができる。
【０１６０】
コンピュータ１２１０ａは、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含んでよい。例えば、コンピュータ１２１０ａは、取り外し不能、不揮発性の磁気媒体の読み書きを行うハードディスクドライブ、取り外し可能、不揮発性の磁気ディスクの読み書きを行う磁気ディスクドライブ、および／またはＣＤ−ＲＯＭやその他の光学媒体等の取り外し可能、不揮発性の光ディスクの読み書きを行う光ディスクドライブを含むことができる。例示的動作環境で使用できるこの他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体には、これらに限定しないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体素子ＲＡＭ、固体素子ＲＯＭ等がある。ハードディスクドライブは、通例、インタフェース等の取り外し不能メモリインタフェースを通じてシステムバス１２２１ａに接続され、磁気ディスクドライブまたは光ディスクドライブは、通例、インタフェース等の取り外しメモリインタフェースでシステムバス１２２１ａに接続される。
【０１６１】
ユーザは、キーボードや、一般にはマウス、トラックボール、あるいはタッチパッドと呼ばれるポインティング機器等の入力装置を通じてコンピュータ１２１０ａにコマンドと情報を入力することができる。他の入力装置には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ等がある。上記およびその他の入力装置は、多くの場合、ユーザ入力１２４０ａと、システムバス１２２１ａに結合された関連付けられたインタフェースとを通じて処理装置１２２０ａに接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）等の他のインタフェースおよびバス構造で接続してもよい。グラフィックサブシステムもシステムバス１２２１ａに接続されてよい。モニタあるいは他の種の表示装置も出力インタフェース１２５０ａ等のインタフェースを介してシステムバス１２２１ａに接続され、そのインタフェースがビデオメモリと通信することができる。モニタに加えて、コンピュータは、スピーカやプリンタ等の他の周辺出力装置も含むことができ、それらの出力装置は出力インタフェース１２５０ａを通じて接続することができる。
【０１６２】
コンピュータ１２１０ａは、リモートコンピュータ１２７０ａ等の１つまたは複数の他のリモートコンピュータとの間の論理接続を使用するネットワーク環境または分散環境で動作することができ、リモートコンピュータは、機器１２１０ａとは異なる媒体機能を有する可能性がある。リモートコンピュータ１２７０ａは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア機器、あるいはその他の一般的なネットワークノード、あるいは他のリモートメディア消費または送信機器であり、コンピュータ１２１０ａに関して上記で説明した要素のいずれかまたはすべてを含むことができる。図１２に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）等のネットワーク１２７１ａを含むが、他のネットワーク／バスを含んでもよい。このようなネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【０１６３】
ＬＡＮネットワーク環境で使用される場合、コンピュータ１２１０ａは、ネットワークインタフェースまたはアダプタを通じてＬＡＮ１２７１ａに接続される。ＷＡＮネットワーク環境で使用される場合、コンピュータ１２１０ａは通例、モデムやインターネット等のＷＡＮを通じて通信を確立する他の手段等の通信コンポーネントを含む。モデム等の通信コンポーネントは、内部にあっても外部にあってもよく、入力１２４０ａのユーザ入力インタフェース、あるいは他の適切な機構を介してシステムバス１２２１ａに接続することができる。ネットワーク環境では、コンピュータ１２１０ａに関して図示するプログラムモジュールまたはその一部は、遠隔のメモリ記憶装置に記憶してよい。ここで図示および説明するネットワーク接続は例示的なものであり、構成要素間に通信リンクを確立する他の手段が使用されてよいことは理解されよう。
【０１６４】
本発明を実施するには、アプリケーションとサービスが本発明による知識の表現および交換のシステムおよび方法を使用することを可能にする、例えば適当なＡＰＩ、ツールキット、ドライバコード、オペレーティングシステム、コントロール、スタンドアロンまたはダウンロード可能なソフトウェアオブジェクト等、多数の方式がある。本発明は、ＡＰＩ（あるいは他のソフトウェアオブジェクト）の観点から、また本発明による知識交換を行うソフトウェアまたはハードウェアオブジェクトの観点からの本発明の使用を企図する。そのため、本明細書に記載する本発明の各種実施は、完全にハードウェア、部分的にハードウェアで部分的にソフトウェア、ならびにソフトウェアの形態の態様を有することができる。
【０１６５】
単語「例示的な」は、本明細書では、例、事例、または例示の役割を果たすことを意味するために用いられる。不確かさを避けるために、本明細書に開示される主題はそのような例によって限定されない。また、本明細書に「例示的」と説明される態様または設計は、必ずしも、他の態様または設計よりも好ましい、あるいは有利であると解釈されず、また、当業者に周知の同等の例示的構造および技術を排除するものでもない。さらに、用語「〜を包含する」、「〜を有する」、「〜を含む」、および他の同様の単語が詳細な説明または特許請求の範囲で使用される限りにおいて、不確かさを回避するために、そのような用語は、追加的要素または他の要素を排除しないオープンな移行語としての用語「〜を備える（ｃｏｍｐｒｉｓｉｎｇ）」と同じく包含的な意味とする。
【０１６６】
上述のように、各種のコンピューティング機器およびネットワークアーキテクチャとの関係で本発明の例示的実施を説明したが、基礎となる概念は、別のコンピューティング機器またはシステムとデータを同期することが望まれるどのコンピューティング機器またはシステムにも適用することができる。例えば、本発明の同期プロセスは、コンピューティング機器のオペレーティングシステムに適用されることができ、このプロセスは、機器上の独立したオブジェクト、別のオブジェクトの一部、再使用可能なコントロール、サーバからダウンロード可能なオブジェクト、機器またはオブジェクトとネットワークとの間の「仲介者」、分散オブジェクト、ハードウェアとして、あるいはメモリ中に、あるいはそれらの組み合わせとして提供される。
【０１６７】
上記のように、本明細書に記載される各種技術は、ハードウェアまたはソフトウェア、あるいは適当な場合にはそれら両方の組み合わせとの関連で実装されることができる。本明細書で使用される用語「コンポーネント」、「システム」等は、同様にコンピュータに関連するエンティティを指すものとし、このエンティティは、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアである。例えば、コンポーネントは、これに限定されないが、プロセッサで実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータである。例示として、コンピュータで実行されるアプリケーションとコンピュータの両方がコンポーネントとなりうる。１つまたは複数のコンポーネントがプロセスおよび／または実行のスレッド内に存在することができ、コンポーネントは、１台のコンピュータに局所化しても、かつ／または２台以上のコンピュータに分散させてもよい。
【０１６８】
したがって、本発明の方法および装置、またはその特定の態様あるいは部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、あるいはその他の機械可読の記憶媒体等の有形の媒体に実現されたプログラムコード（すなわち命令）の形態をとることができ、そのプログラムコードがコンピュータ等のマシンにロードされて実行されると、そのマシンは本発明を実施する装置となる。プログラマブルコンピュータでプログラムコードが実行される場合は、コンピューティング機器は一般に、プロセッサ、プロセッサに可読の記憶媒体（揮発性および不揮発性のメモリおよび／または記憶素子を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。例えばデータ処理ＡＰＩや再使用可能なコントロール等を通じて本発明の同期サービスおよび／またはプロセスを実施または利用することができる１つまたは複数のプログラムは、コンピュータシステムと通信するために、高級手続き言語またはオブジェクト指向のプログラミング言語で実装されることが好ましい。ただし、プログラムは、必要であればアセンブリ言語やマシン言語で実装することができる。いずれの場合も、言語はコンパイルまたは解釈される言語であり、ハードウェア実装と組み合わせられる。
【０１６９】
本発明の方法および装置は、電気配線またはケーブル、光ファイバー、あるいは他の形態の伝送等の何らかの伝送媒体を通じて伝送されるプログラムコードの形態に実現された通信を介して実施することもでき、プログラムが受信され、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピュータ等のマシンにロードされて実行されると、そのマシンは本発明を実施する装置になる。汎用プロセッサで実施される場合、プログラムコードはプロセッサと組み合わさって、本発明の機能を起動するように動作する独自の装置を提供する。また、本発明との関連で使用される記憶技術も常にハードウェアとソフトウェアの組み合わせでよい。
【０１７０】
さらに、ここに開示される主題は、ここに詳細に述べられる態様を実施するようにコンピュータまたはプロセッサを利用した機器を制御するソフトウェア、ファームウェア、ハードウェア、あるいはそれらの組み合わせを生成する標準的なプログラミングおよび／またはエンジニアリング技術を使用して、システム、方法、装置、または製造物として実施されることができる。本明細書で使用される用語「製造物」（あるいは「コンピュータプログラム製品」）は、コンピュータ可読媒体、キャリア、媒体からアクセスすることが可能なコンピュータプログラムを包含するものとする。例えば、コンピュータ可読媒体には、これらに限定されないが、磁気記憶装置（例えばハードディスク、フロッピー（登録商標）ディスク、磁気ストリップ等）、光ディスク（例えばコンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）等）、スマートカード、およびフラッシュメモリデバイス（例えばカード、スティック）が含まれる。また、搬送波を用いて、電子メールの送受信や、インターネットやローカルエリアネットワーク（ＬＡＮ）等のネットワークへのアクセスで使用されるようなコンピュータ可読の電子データを搬送できることが知られている。
【０１７１】
上記のシステムは、数個の構成要素間の対話について説明した。そのようなシステムおよび構成要素は、上述した構成要素の各種置き換えおよび組み合わせに従って、上記の構成要素または指定された下位構成要素、指定された構成要素または下位構成要素の一部、および／または追加的な構成要素を含むことができることが理解できる。下位構成要素は、親構成要素の中に含まれる（階層的）のではなく、他の構成要素に通信上結合された構成要素として実装することもできる。また、１つまたは複数の構成要素を組み合わせて、集約的機能を提供する１つの構成要素としても、数個の別個の下位構成要素に分割してもよく、また統合された機能を提供するために、管理レイヤのような任意の１つまたは複数の中間レイヤが提供されて、そのような下位構成要素と通信上結合してもよいことに留意されたい。本明細書に記載される構成要素は、本明細書には明記されないが当業者には一般に周知の１つまたは複数の他の構成要素と対話してもよい。
【０１７２】
上記の例示的システムに照らして、ここに開示される主題に従って実施することが可能な方法論は、図のフローチャートを参照するとよりよく理解されよう。説明を簡潔にするために、方法論は一連のブロックとして図示および説明するが、一部のブロックは、本明細書に図示および説明する順序とは異なる順序で、かつ／または他のブロックと同時に行ってもよいため、特許請求の範囲の主題はブロックの順序によって制限されないことを理解および認識されたい。連続していない流れまたは分岐した流れがフローチャートを介して示される箇所は、同じまたは同様の結果を達成する各種の他の分岐、流れの経路、およびブロックの順序が実施されてよいことが理解できる。さらに、以下に記載される方法論を実施するために図示されるブロックのすべてが必要とは限らない。
【０１７３】
さらに、理解されるように、上記の開示されるシステムおよび下記の方法の各種部分は、人工知能または知識またはルールベースの構成要素、下位構成要素、プロセス、手段、方法論、または機構（例えば、サポートベクタマシン、ニューラルネットワーク、エキスパートシステム、ベイズ信念ネットワーク、ファジー論理、データフュージョンエンジン、クラシファイア等）を含む、あるいはそれらから構成されてよい。そのような構成要素は特に、特定の機構または実行されるプロセスを自動化することにより、本システムおよび方法の一部分の適応性を高め、また効率的かつインテリジェントにすることができる。
【０１７４】
本発明について各種図の好ましい実施形態との関連で説明したが、他の同様の実施形態を使用してよい、あるいは本発明から逸脱することなく本発明の同じ機能を行うためにここに記載された実施形態に変更および追加を加えてよいことを理解されたい。例えば、本発明の例示的なネットワーク環境については、ピアツーピア型のネットワーク環境等のネットワーク化された環境の文脈で説明したが、当業者は、本発明はそれに限定されず、本願に記載した方法は、ワイヤードまたはワイヤレスのゲーム機、ハンドヘルドコンピュータ、携帯型コンピュータ等の任意のコンピューティング機器あるいは環境に適用することができ、また、ネットワークを介して接続され、ネットワークを通じて対話する任意数のそのようなコンピューティング機器に適用可能であることを認識されよう。さらに、特にワイヤレスのネットワーク機器の数が増え続けているため、ハンドヘルド機器向けのオペレーティングシステムおよび他の特定用途向けのオペレーティングシステムを含む各種のコンピュータプラットフォームが企図されることを強調したい。
【０１７５】
例示的実施形態は、本発明を特定のプログラミング言語構成のコンテクストで利用することを示すが、本発明はそれに限定されず、任意の言語で実施して本発明に係るノードのセットについての知識を表現および交換する方法を提供してよい。さらに、本発明は、複数の処理チップまたはデバイス中に、またはそれらにわたって実装されてよく、記憶も同様に複数のデバイスにわたって実施することができる。したがって、本発明は、どの１つの実施形態にも限定されるべきではなく、添付の特許請求の範囲に従った範囲で解釈すべきである。
【図１】
2014089719.tif 000011
【図２Ａ】
2014089719.tif 000012
【図２Ｂ】
2014089719.tif 000013
【図２Ｃ】
2014089719.tif 000014
【図２Ｄ】
2014089719.tif 000015
【図３Ａ】
2014089719.tif 000016
【図３Ｂ】
2014089719.tif 000017
【図４Ａ】
2014089719.tif 000018
【図４Ｂ】
2014089719.tif 000019
【図４Ｃ】
2014089719.tif 000020
【図５Ａ】
2014089719.tif 000021
【図５Ｂ】
2014089719.tif 000022
【図６】
2014089719.tif 000023
【図７Ａ】
2014089719.tif 000024
【図７Ｂ】
2014089719.tif 000025
【図７Ｃ】
2014089719.tif 000026
【図７Ｄ】
2014089719.tif 000027
【図８】
2014089719.tif 000028
【図９】
2014089719.tif 000029
【図１０】
2014089719.tif 000030
【図１１】
2014089719.tif 000031
【図１２】
2014089719.tif 000032
【手続補正書】
【提出日】平成25年12月25日(2013.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つまたは複数のネットワークを介して通信上結合された複数のノードのうちの１ノードとウェブサービスエンドポイントとの間でオブジェクトのセットを同期する方法であって、
前記ウェブサービスエンドポイントによって維持されている対応するオブジェクトセットと同期される前記オブジェクトのセットのうち１オブジェクトの少なくとも１バージョンを、前記ノードによって発展させるステップと、
前記オブジェクトのセットについての前記ウェブサービスエンドポイントによる同期のために、前記ノードで表現された前記オブジェクトのセットとそれに対応する前記オブジェクトのセットの前記オブジェクトのバージョンとに関する前記ノードの知識を、前記ノードから前記ウェブサービスエンドポイントに送信するステップであって、前記知識の表現はデータタイプに依存しないものである、送信するステップと
を具えたことを特徴とする方法。
【請求項２】
前記送信するステップは、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）標準に準拠した少なくとも１つの拡張可能マークアップ言語（ＸＭＬ）メッセージを含むウェブサービス要求を開始することを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記ウェブサービスエンドポイントの知識と前記ノードの前記知識との比較に基づく、前記ノードが認識していない前記オブジェクトのセットへの第１の変更を、前記ウェブサービスエンドポイントから前記ノードで受信するステップをさらに具えたことを特徴とする請求項１記載の方法。
【請求項４】
前記第１の変更を前記ノードで表現された前記オブジェクトのセットに適用するステップをさらに具え、前記オブジェクトのセットを、前記第１およびウェブサービスエンドポイントの集積された知識と同等に最新の状態にすることを特徴とする請求項３記載の方法。
【請求項５】
前記第１の変更に基づいて、前記ノードで表現されている第１の知識とそれに対応するバージョンを更新するステップをさらに具えたことを特徴とする請求項３記載の方法。
【請求項６】
前記ノードが前記オブジェクトのセットへの第１の変更を前記ウェブサービスエンドポイントから受信するステップは、前記ノードが認識していない、前記オブジェクトのセットの最新バージョンの知識を表す第１の変更を前記ウェブサービスエンドポイントから前記ノードが受信することを含むことを特徴とする請求項３記載の方法。
【請求項７】
前記ウェブサービスエンドポイントで表現されている前記オブジェクトのセットとそれに対応する前記オブジェクトのセットのオブジェクトのバージョンとに関する前記ウェブサービスエンドポイントの知識を、前記ウェブサービスエンドポイントから前記ノードが受信するステップをさらに具えたことを特徴とする請求項１記載の方法。
【請求項８】
前記ウェブサービスエンドポイントの前記知識を前記ノードの前記知識と比較するステップをさらに具え、前記ウェブサービスエンドポイントが認識していない、前記ウェブサービスエンドポイントに送るべき前記オブジェクトのセットへの第２の変更を判定することを特徴とする請求項７記載の方法。
【請求項９】
前記ウェブサービスエンドポイントが認識していない前記第２の変更を前記ウェブサービスエンドポイントに送信するステップをさらに具えたことを特徴とする請求項８記載の方法。
【請求項１０】
前記ウェブサービスエンドポイントおよび前記ノードの前記知識から、前記オブジェクトのセットのオブジェクトが前記ノードと前記ウェブサービスエンドポイントで独立して発展したかどうかを検出するステップをさらに具えたことを特徴とする請求項７記載の方法。
【請求項１１】
前記ノードと前記ウェブサービスエンドポイントでオブジェクトが独立して発展した場合には、前記第１およびウェブサービスエンドポイントの前記オブジェクトのセットに伝達すべきバージョンは、前記ウェブサービスエンドポイントにおける前記オブジェクトのバージョンであるか、または前記ノードにおける前記オブジェクトのバージョンであるかを判定するステップを有する特徴とする請求項７記載の方法。
【請求項１２】
請求項１の方法を実行するためのコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。
【請求項１３】
１つまたは複数のネットワークを介して接続可能な複数のノードの中のノードであって、該ノードと、前記複数のノードの中のウェブサービスノードとの間でオブジェクトのセットを同期し、
前記複数のノードの中の前記ノードと前記ウェブサービスノードとの間で前記オブジェクトのセットを同期する同期コンポーネントを具え、前記同期コンポーネントは、
同期通信コンポーネントであって、前記ウェブサービスノードと前記ノードとの間の知識交換のためのメタデータ構造をデータタイプに関係なく定義するウェブサービス同期プロトコルを介して前記ウェブサービスノードとの同期を開始し、前記ウェブサービス同期プロトコルに基づいて前記オブジェクトのセットと同期する要求を前記ウェブサービスノードに送信し、前記オブジェクトのセットとそれに対応するバージョニング情報の外部知識を前記ウェブサービスノードから受信する同期通信コンポーネントと、
同期分析コンポーネントであって、前記オブジェクトのセットとそれに対応するバージョニング情報の前記外部知識を、前記オブジェクトのセットとそれに対応するバージョニング情報のローカルな知識と比較して、前記オブジェクトのセットとそれに対応するバージョニング情報の改訂後のローカルな知識によって反映されるべき変更を判定することにより、前記ノードで表現される前記オブジェクトのセットとそれに対応するバージョニング情報のローカルな知識を更新する同期分析コンポーネントと
を具えたことを特徴とするノード。
【請求項１４】
前記ウェブサービス同期プロトコルは、前記ノードと前記ウェブサービスノードとの間で同期される実際のデータのスキーマを規定しないことを特徴とする請求項１３記載のノード。
【請求項１５】
前記同期分析コンポーネントは、前記オブジェクトのセットとそれに対応するバージョニング情報の前記ローカルな知識を用いて、前記前記オブジェクトのセットとそれに対応するバージョニング情報の前記外部知識を分析して、前記ウェブサービスノードが知らない、前記ウェブサービスノードに送信すべき第２の変更を判定することを特徴とする請求項１３記載のノード。
【請求項１６】
前記同期通信コンポーネントはさらに、前記第２の変更を前記ウェブサービスノードに送信することを特徴とする請求項１５記載のノード。