(57)【要約】  オフラインのデータを１つまたは複数の協働しているコンピュータ環境に同期させるシステム及び方法が提供される。例として、例示的な同期環境は、同期エンジン、データストア、及び命令セットを含む。該命令セットは、少なくとも１つの命令を含み、該少なくとも１つの命令は、例示的な同期エンジンに、１つまたは複数の協働しているデータソースのエンドポイントから例示的な同期エンジンが受信したデータの同期を調整するよう命令する。例として、同期の要求及び同期されるべきデータは、１つまたは複数の協働するエンドポイントのソースエンドポイントから、例示的な同期エンジンが受信することができる。同期の要求に応じて、例示的な同期エンジンは、選択された同期パラダイム（例えば、ナレッジベースの同期）を受信したデータに適用して、例えば、協働しているデータストアに格納されているデータの同期を可能にすることができる。
2011519441.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のネットワークを介して接続可能な１つまたは複数のデータソースを同期させる方法であって、
前記１つまたは複数のデータソース（１１０）からデータを受信するステップと、
前記１つまたは複数のデータソース（１１０）からの前記データについての同期メタデータ（１１５）を識別するステップと、
前記１つまたは複数のデータソース（１１０）から受信した前記データのタイプに応じて、前記受信したデータについてのナレッジベースの同期（６２０）を行なうステップであって、前記ナレッジベースの同期（６２０）は、前記１つまたは複数のデータソース（１１０）の１つまたは複数の他のデータソースへの接続状態及び、前記１つまたは複数のデータソース（１１０）の前記データに対する変更を含むいずれかを表すデータを利用する、ステップと、
前記１つまたは複数のデータソース（１１０）からの同期されたデータを表すデータを含む新しいデータソース（２３０）を生成するステップと
を含むことを特徴とする方法。
【請求項２】
参加ユーザの入力を用いて前記受信したデータから変更を検出するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
１つまたは複数の選択されたマシン可読技術を実行することによって前記受信したデータの変更を検出するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記変更を一時的なデータ記憶装置に格納するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記受信したデータと前記検出した変更との間の同期を行なうステップを更に含むことを特徴とする請求項４に記載の方法。
【請求項６】
ナレッジベースの同期処理の一部として１つまたは複数のフィルタリング技術を前記受信したデータに適用するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項７】
第１のデータソースから第１のデータを受信しかつ第２のデータソースから第２のデータを受信するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記第１のデータ及び前記第２のデータについての同期メタデータを識別するステップを更に含むことを特徴とする請求項７に記載の方法。
【請求項９】
参加ユーザからの入力を含む１つまたは複数の選択された技術に基づいてかつ自動化されたデータ比較処理を介して、前記受信した第１のデータと前記受信した第２のデータとの間のコンフリクトを解消するステップを更に含むことを特徴とする請求項８に記載の方法。
【請求項１０】
コンピュータ環境に命令して方法を実行させるためのコンピュータ実行可能命令を含むコンピュータ読み取り可能な記憶媒体であって、該方法は、
１つまたは複数のデータソース（１１０）からデータを受信するステップと、
前記１つまたは複数のデータソース（１１０）からの前記データについての同期メタデータ（１１５）を識別するステップと、
前記１つまたは複数のデータソース（１１０）から受信したデータのタイプに応じて、前記受信したデータについてのナレッジベースの同期（６２０）を行なうステップと、
前記１つまたは複数のデータソース（１１０）からの同期されたデータを表すデータを含む新しいデータソース（２３０）を生成するステップと、
を含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１１】
オフラインのデータを同期させるシステムであって、
１つまたは複数のデータソース（１１０）からデータを受信する同期エンジン（２２０）と、
選択された同期パラダイム（２２４）に基づいて同期のためにオフラインのデータを処理するよう前記同期エンジン（２２０）に命令するための少なくとも１つの命令を含む命令セットと、
を含み、
前記選択された同期パラダイム（２２４）は、ナレッジベースの同期（６２０）に基づいて前記受信したデータを同期させる際に使用するための前記１つまたは複数のデータソース（１１０）からの前記受信したデータについての同期メタデータ（１１５）を識別して、同期データを含む新しいデータソース（２３０）を生成する工程を含む１つまたは複数の工程を含むことを特徴とするシステム。
【請求項１２】
前記選択された同期パラダイムに基づいて実行される同期プロセスのうちの１つまたは複数の工程を表すデータを格納するデータストアを更に含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記同期エンジンは、コンピュータアプリケーションを含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記選択された同期パラダイムは１つまたは複数の工程を含み、前記１つまたは複数の工程は、非ナレッジベースの同期技術に基づいて前記１つまたは複数のデータソースからの前記受信したデータを同期させる工程を含むことを特徴とする請求項１１に記載のシステム。
【請求項１５】
前記データストアは、第１の書式からのデータを第２の書式からのデータと同期させるプロセスの一部としてデータを格納することを特徴とする請求項１２に記載のシステム。
【請求項１６】
前記同期エンジンは、前記受信したデータ内の変更を検出して、協働している一時的なデータストアに当該変更を格納することを特徴とする請求項１１に記載のシステム。
【請求項１７】
前記同期エンジンは、前記受信したデータからかつ／または協働しているメタデータのデータストアから同期メタデータを識別することを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記同期エンジンは、前記受信したデータと前記協働している一時的データストアとの間の前記同期を行なうことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記同期エンジンは、前記同期されたデータを表すデータを含む新しいデータソースを生成することを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記同期エンジンは、前記１つまたは複数のデータソースからの前記受信したデータに関するティック数を更新することを特徴とする請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データソースを同期させる方法およびシステムに関し、より具体的には、オフラインのデータソースを同期させる方法およびシステムに関する。
【背景技術】
【０００２】
多くの実際的なコンピュータシステムの企業アプリケーションでは、技術的な検討事項またはセキュリティ上の検討事項によって、システムは電子的に接続されていなくてもよい（例えば、オンライン方式で接続されなくてもよい）ということが必要になる。例えば、いくつかのバッチシステムは、様々な間隔（毎週、毎日等）でのみ、異なるシステムで行われた変更をマージするために通信することができる。別の例として軍のコンピュータシステムが挙げられる。かかる環境において、異なるセキュリティレベルを備えたシステムは、通常電子的に接続されていない。極端な場合には、現在の方式は、協働しているセキュリティシステムから得られるデータをオペレータが印刷して手作業で入力することを必要とするかもしれない。また、様々な政府のアプリケーションでは、書式の入力を（例えば、ウェブブラウザの計算アプリケーションを介してカスタマが）オンラインでできる書式の処理作業があるが、当該処理は物理的な書式を使用している。これらの例の全てにおいて、データが様々なエンドポイントで同時に、一部は電子的に、一部は電子的にではなく、操作されるという問題がある。
【０００３】
様々な分散データシステムがあり、該分散データシステムは、データを互いに共有するデバイス及びオブジェクトを有している。例えば、音楽共有システムは、ＰＣ、携帯電話、ゲーム機、及びＭＰ３プレーヤの間で音楽を同期させることができる。電子メールデータは、ワークサーバ、クライアントＰＣ、及び携帯用電子メールデバイスの間で同期される。今日、かかるデバイスが共通の情報により同期する範囲で、同期は、該デバイスの間の静的なセットアップにより行われる。しかしながら、例えば、携帯電話がトンネル内にある場合、または同期されるべきデバイスの数が動的である場合など、これらのデバイスが互いに通信することから切り離され得るように疎結合されている（loosely coupled）と、該デバイスが互いに再接続するときにまたは該デバイスがネットワークに参加するときにどんな変更を互いのデバイスが必要としているかを該デバイスが判断する方法を有していることが望ましい。更に、電子システムは、非電子でオフラインのデータソース（例えば、印刷された書式、データのプリントアウトを必要とするセキュリティ対応アプリケーション等）からの更新を必要とするかもしれない。
【０００４】
多くの解決法が、分散システムにわたる絶えざる編集エンドポイント問題に対処するために用いられている。通常、多くのオンラインアプリケーションでは、エンドポイントの編集は、データが１つのエンドポイント上で変化できるようにすることで軽減することができる。例えば、バッチ処理システムについて、選択されたシステム（例えば、「オーナ」システム）で行われる変更以外の変更は、コンピュータシステムで拒否されるかもしれない。他のセキュリティ対応システム及びセキュリティ対応アプリケーション（例えば、軍のアプリケーション及び政府のアプリケーション）について、人間のオペレータが、同時に異なったエンドポイントで行われた変更を手作業でマージするために雇われているかもしれない。書式処理のために、オフラインの非電子データを同期させる作業は特に難しいかもしれない。なぜなら、２人以上の事務職員は、同時に処理用の書式のコピーを印刷することができるからである。例えば、異なった職員が、同じ書式の異なった部分を処理することができる。かかる方式は、複数のコンフリクトした更新につながるかもしれない。例えば、異なった職員が、双方ともに書式のいくつかの共通の部分を更新することを選択するかもしれない。
【０００５】
しかしながら、現在の解決法は、時間、労働、及び金を含むリソースの相当な支出を必要としていて参加ユーザにとってひいき目に見ても困難である。現在の解決法はまた、信頼性を高め、効率化を進め、かつ様々なリソースの必要性を減らすために既存の方式に適用することができる同期技術を利用していない。更に、現在の解決法は、オフラインの非電子データが電子システム及びアプリケーションと協働するのを可能にする通信／データ処理インタフェースを提供していない。
【０００６】
前述のことから、既存の方式の欠点を克服するシステム及び方法の必要性が存在するということが理解される。
【発明の概要】
【０００７】
この概要は、詳細な説明において詳述される単純化された形式の概念の選択を導くために提供される。この概要は、請求された本発明の重要な特徴または基本的特徴を識別することを意図していないし、請求された本発明の範囲を限定するために用いられることも意図していない。
【０００８】
本明細書において説明されているシステム及び方法は、オフラインのデータを１つまたは複数の協働しているコンピュータ環境に同期させることを提供する。例示的な実施例において、例示的な同期環境は、同期エンジン、データストア、及び命令セットを含む。該命令セットは、１つまたは複数の協働するデータソースエンドポイントから例示的な同期エンジンが受信したデータの同期を調整するよう例示的な同期エンジンに命令するための少なくとも１つの命令を含む。
【０００９】
例示的な動作において、同期の要求及び同期されるべきデータを、１つまたは複数の協働しているエンドポイントのソースエンドポイントから、例示的な同期エンジンが受信することができる。同期の要求に応じて、例示的な同期エンジンは、選択された同期パラダイム（例えば、ナレッジベースの同期）を受信したデータに適用して、例えば協働しているデータストアに格納されていてかつ／または該１つもしくは複数の協働しているエンドポイントのソースエンドポイントから受信した受信データの間に格納されているデータの同期を可能にすることができる。
【００１０】
例示的な実施例において、同期パラダイムは、１つまたは複数の工程を実行する例示的な同期エンジンに提供される１つまたは複数の命令を含むことができる。１つまたは複数の工程は、オフラインデータにナレッジを適用する工程、受信したデータ及び／または格納されたデータに非ナレッジベースの同期を適用する工程、バージョンのデータ（例えば、人が読めるバージョンのデータ及び／またはマシンが読めるバージョンのデータ）を受信したデータ（例えば、紙の書式）の手段にコード化／添付する工程、受信したデータ（例えば、紙の書式）の手段にナレッジデータ（例えば、人が読めるか、かつ／またはマシンが読めるバージョンのデータ）をコード化／添付する工程、受信したデータについての同期メタデータを格納する工程かつ／または１つまたは複数の同期処理の間同期メタデータを例示的に参照する受信したデータの手段に識別データを格納する工程、及び、同期処理の一部として受信したデータをフィルタリングする工程、を含む。
【００１１】
以下の説明及び添付の図面は、本発明の詳細な特定の例示的な態様において記載されている。しかしながら、これらの態様は、本発明を用いることができる様々な方法のうちのほんのいくつかを示していて、請求された本発明は、全てのかかる態様及び該態様の均等物を含むよう意図されている。
【図面の簡単な説明】
【００１２】
オフラインの非電子データの同期に対応する共通情報を共有するオフラインのデータソースについての同期ナレッジを表すためのシステム及び方法が、添付の図面を参照して更に説明される。
【００１３】
【図１】システムの２つの特定のエンドポイント同士の間の同期を提供する専用の同期システムを示す図である。
【図２Ａ】本明細書において説明されているシステム及び方法によるノードの疎結合ネットワークの２つのデータソースの間の例示的かつ非限定的なナレッジ交換を示す図である。
【図２Ｂ】本明細書において説明されているシステム及び方法によるナレッジ交換を実行するための例示的かつ非限定的な実施例のブロック図である。
【図３】本明細書において説明されているシステム及び方法によるノードの疎結合ネットワークの協働しているデータソース同士の間の例示的かつ非限定的なナレッジ交換を示す図である。
【図４】本明細書において説明されているシステム及び方法によるノードの疎結合ネットワークの協働している構成要素同士の間の例示的かつ非限定的なナレッジ交換を示す図である。
【図４Ａ】本明細書において説明されているシステム及び方法によるノードの疎結合ネットワークの協働している構成要素同士の間の他の例示的かつ非限定的なナレッジ交換を示す図である。
【図５Ａ】本明細書において説明されているシステム及び方法によるネットワークのノードの間で共有される複数のオブジェクトの内容における例示的なナレッジ交換を示す図である。
【図５Ｂ】本明細書において説明されているシステム及び方法によるネットワークのノードの間で共有される複数のオブジェクトの内容における例示的なナレッジ交換を示す図である。
【図５Ｃ】本明細書において説明されているシステム及び方法によるネットワークのノードの間で共有される複数のオブジェクトの内容における例示的なナレッジ交換を示す図である。
【図６】本明細書において説明されているシステム及び方法によるネットワークにおいて協働している複数のデータソースの内容におけるナレッジ交換についてのプロセスを示す例示的かつ非限定的なフローチャートである。
【図７】本発明を実施することができる例示的かつ非限定的なネットワーク化された環境を表すブロック図である。
【図８】本発明を実施することができる例示的かつ非限定的なコンピュータシステム即ち動作環境を表すブロック図である。
【発明を実施するための形態】
【００１４】
概説
背景技術で検討したように、互いだけに専念して連絡を取り続けていない一組の疎結合されたオンラインのデータソース及び疎結合されたオフラインのデータソースについての同期ナレッジを効率的に表す方法はない。専念して連絡を取っていると推測される場合には、あらゆる変更は、該変更を受信すべきデータソースにすぐにまたは周期的に送り出される。しかしながら、現れて消えるデータソースと専念して連絡を取っていることを推定することができない場合には、これらのデータソースは同期スタンドポイントからの知っていること及び知らないことを効率的に表すことが望ましい。
【００１５】
従って、本明細書において説明されているシステム及び方法が、データ同期システムにおいて分散データソース（オンライン及びオフライン）についての効率的なナレッジ表現を可能にする。協働しているデータソースの疎結合されたネットワークにおいてデータソースが自身のデータを更新するときはいつでも、更新されたデータソースは、どの変更が後続処理のために注目されるべきか、かつできるだけ格納されるべきかを判断するために、１つまたは複数の他のデータソースとナレッジを交換することが例示的に動作可能となる、ということを確実にするために効率的なメカニズムが提供される。
【００１６】
第１のデータソースと第３のデータソースとは直接通信しないが、各々が同期エンジンに接続することが可能な場合、集団的なナレッジの共有を、同期エンジンと協働しているデータソースの全てにわたって実現することができ、データソースの各々がどんな変更／更新を行なうべきかを判断することができる。紙の書式、非電子の作品、物理的な図面などの共有データソースの急増を考慮すると、本明細書で説明されるシステム及び方法のナレッジ交換技術は、同時に任意の数のデータソース及び任意の数の独立したナレッジベース（即ち、共通の情報の異なったセット）に拡張可能である。即ち、あらゆる進化していくデータソースのセットはデータの更新を共有することを望むどこででも拡張される。分散システムにおけるかかるナレッジを表す様々な実施形態が、以下で詳述される。
【００１７】
効率的なナレッジの表現及び交換
以下に説明される様々な例示的かつ非限定的な実施形態において、ナレッジはデータ同期システムにおいて効率的に表される。本明細書において説明されるシステム及び方法によって実現される限定的でない利点は、１つまたは複数のデータソースについてのナレッジの効率的な識別を含む。該識別は、所定のデータソースについての効率的で正しいデータ更新に必要とされる最小限のデータを処理することができる。即ち、任意の数のオフラインのデータソースを同期させる能力と、いずれかの他のデータソースを介していずれかのデータソースを同期させる能力、即ち、ピアツーピア、マルチマスタ同期環境において動作する能力とである。
【００１８】
図１は、オフラインのデータの同期についての高いレベルの同期環境１００を示す。同期環境１００において、例示的な同期エンジン１０５は、１つまたは複数のデータソース１１０と協働して、（例えば、複数のデータソース１１０の中の、データソース１１０同士の間の、複数のデータソース１１０内の）１つまたは複数のデータソース１１０によって提供されるデータ更新を同期させる。同期エンジン１０５の間の専用の同期によって、協働しているオフラインのデータソース１１０同士の間で同期するために必要なナレッジ１１５の状態は、同期エンジン１０５が追跡することができる。かかるナレッジ１１５はまた、１つの即ち協働しているオフラインデータソース１１０によっても任意で追跡することができる。しかしながら、同期エンジン１０５とオフラインデータソース１１０との間の接続が、時々切断されるようになる場合、及び同期しているデータソースの数が増加する場合、これらのデバイスの全てにわたって必要なナレッジを追跡することは、難しい問題になる。
【００１９】
図２Ａは、２つの協働しているデータストア２００及び２１０（例えば、デバイス）の間の本発明のナレッジ交換を、高いレベルで示す。本明細書において説明されているシステム及び方法により、データソース２００とデータソース２１０との間で共有されることになっているいくつかの情報に対して任意の数の変更が行われてもよい。しかしながら、該データソースが自分たちのナレッジ２０２及び２１２を交換することによって協働するとき（即ち、例示的な同期エンジンと）はいつでも、該データソースは、データソース同士の間の変更を促進するために互いに知っていること及び知らないことを再構築するのに必要とされる少なくとも最低限の情報量を知るようになる（即ち、例示的な同期エンジンによって促進されるように）。２つより多くのデータソースが含まれる場合には、ナレッジ２０２及び２１２は、共有されるべきより大きい情報ベースについての不完全なナレッジであってもよいが、より多くのナレッジが複数のデータソースの周囲で共有されるにつれ、該データベースが時間とともに他のデータソースに接続するように、集合的なナレッジは該データソースによって蓄積され続ける点に注意される。
【００２０】
図２Ｂは、本発明によるナレッジ交換を行なうデバイス２００ｂの例示的かつ非限定的な実施例のブロック図である。図示するように、デバイス２００ｂは、同期モジュール２２０を含み、同期モジュール２２０は、本発明による一組のオブジェクト２３０を別のデバイスに同期させるナレッジ交換技術を実行する。同期モジュール２２０は、本発明のナレッジ交換技術により通常にデータを送信しかつ受信する同期通信モジュールを含むことができる。
【００２１】
同期モジュール２２０は、同期開始モジュール２２２ａを含むことができ、同期開始モジュール２２２ａは、例えば許可モジュール２４０を介して許可されて第２のデバイスに接続される場合に、第２のデバイスとの同期を開始することができる。同期モジュールはまた、Ｉ／Ｏモジュールを含むことができ、該Ｉ／Ｏモジュールは、一組のオブジェクト２３０についてのナレッジ２０２ｂを第２のデバイス（図示せず）に送信することで同期の開始に応答し、かつ第２のデバイス及び第２のデバイスに由来する一組のオブジェクト２３０に行われることになっている変更についてのナレッジ２１２ｂを受信する。今度は、同期分析モジュール２２４は、一組のオブジェクト２３０に行われることになっている変更を適用して、第２のデバイスからのナレッジ２１２ｂを第１のデバイスのナレッジ２０２ｂと比較し、第２のデバイスに送信する変更を判断して該デバイス同士の間の同期を完了するよう動作する。
【００２２】
本明細書において説明されるシステム及び方法は、一組のオブジェクトの最新のバージョンを維持することに関心がある一組のデバイスについての同期を行なうよう動作するが、かかるデバイスが該一組のうちの他のオブジェクトと接続するようにしかつ接続を終えるようにすることが有利である。デバイスが１つまたは複数のネットワークを介して一組のデバイスのうちの他のデバイス（または複数の他のデバイス）と接続を回復するときはいつでも、該デバイスは、集合的なナレッジを取り戻し、集合的なナレッジは、他のデバイス（または複数の他のデバイス）が自身の集合的なナレッジを表すのと同じくらい最新である。このように、疎結合されたデバイスさえ、一組のデバイスと連絡を取ることができかつ連絡を取ることを終えることができ、次に、最新の一組の集合的なナレッジを所有するいずれかの一組のデバイスと連絡を取るようになることで、該デバイスが逃した全てのナレッジを再獲得することができる。
【００２３】
図３は、本明細書において説明されているシステム及び方法のナレッジ交換が任意の数のデバイスに対して一般化即ち拡張が可能であることを示す。示すように、４つのデバイス２００、２１０、２２０、及び２３０は、ナレッジ表現２０２、２１２、２２２、及び２３２とともに示されていて、ナレッジ表現２０２、２１２、２２２、及び２３２は、該デバイスにわたって共有されることになっている一組の共通の情報について各デバイスが知っていること及び知らないことをそれぞれ示す。
【００２４】
図４は、例示的な同期環境４００の様々な協働している関係者及び構成要素のインタラクションを示す。図４に示されているように、例示的な実施例において、例示的な同期環境４００は、第１の参加ユーザ４０５、１人または複数の第２の参加ユーザ４１０、第３の参加ユーザ４１５、同期エンジン４２０、及び命令セット４２５を含む。書式処理の場合を検討する。例示的な動作において、第１の参加ユーザ４０５は書式データ（例えば、書式に関するデータ）を入力し、一方、第２の参加ユーザ４１０は、第１の参加ユーザ４０５に連続して同じ書式についてのデータを入力することができる。例示的な動作において、第３の参加ユーザ４１５は、第２の参加ユーザ４１０と平行して、該書式に関するデータを入力することができる。次に、参加ユーザからの書式は、命令セット４２５からの１つまたは複数の命令を実行している同期サーバ４２０が処理することができる。
【００２５】
図４の例示的な実施例は、オフラインデータの同期についての例示的な使用事例を表すことができる。この例示的な使用事例において、書式を処理するお役所仕事が考慮される。この例では、カスタマは、最初のいくつかのデータ入力をオンラインで行う（それは紙の書式にであるかもしれないが）。次に、職員は、該書式の様々なコピーをプリントして、オフラインで該書式に取り組む。そして、おそらく、該書式がサーバに戻される前に、数人の職員の間で該書式を送る。更に、該書式の複数のコピーは、同時に、異なった職員の間で（潜在的な更新のために）送られるかもしれない。即ち、常に、２つ以上の「流通している」紙の書式があるかもしれない。
【００２６】
この例示的なユーザの場合において、同期トポロジが、様々な紙の書式とコンピュータシステム（例えば、同期サーバ４２０）との間で存在することができる。コンピュータシステムは、紙の書式の各々であるようなエンドポイントであるかもしれない。各々は、それ自身の識別データを有する複製と考えることができる（同じ職員に与えられた同じ書式が生成されることによって、同じ複製の識別データが含まれているかもしれないが）。
【００２７】
例示的に、同期メタデータは、各書式に添付することができる。特に、ナレッジ同期の場合において、ナレッジ（用いられる場合には複製キーマップを含む）は、書式及び書式上の各データ項目（即ち、フィールド）に付随する同期バージョンに添付することができる。メタデータはいくつかのマシン可読の書式（例えば、バーコード、磁気ストライプ、ＲＦＩＤ）で、または人間の読めるいくつかの書式（数、文字等）で、添付することができる。あるいは、いくつかの人間の読める識別子もしくは参照記号またはマシン可読の識別子もしくは参照記号が、いくつかの周知のメタデータサーバに対するインデックスとして役立つ書式として格納されてもよい。該インデックスは、後の同期動作の間、書式についてのメタデータを取り出すためにアクセスすることができる。
【００２８】
例示的な実施例において、データ要素は、同期のためにその項目ユニットＩＤ／変更ユニットＩＤを後で判断することができるように、書式上で識別されてもよい。かかる動作は、書式に関するデータをコード化することによって行なわれてもよく、または内容から推定されてもよい。例えば、各フィールドは、書式上の周知の位置を有していてもよい。
【００２９】
書式は、例示的に、同期トポロジの参加者であってもよいコンピュータサーバ（例えば、同期エンジン４２０）と同期することができる。このことは、書式上で変更の検出を行なうことで動作可能に実現することができる（例えば、参加ユーザのうちの１人に変更を入力することを頼むこと、または光学式文字読取装置（ＯＣＲ）などのいくつかのマシン可読の方法を介して変更を判断してコンピュータに変更されたデータを伝えること、のいずれか）。次に、標準的な同期技術を実行することができる。
【００３０】
例示的な使用事例についての例示的な動作において、ナレッジ同期は、例示的に以下の方法を行なうことができる。１）書式データをローディングして変更を検出し、該変更を一時的記憶装置に格納すること、２）書式またはメタデータサーバのいずれかから書式（ナレッジ、バージョン）についての同期メタデータを得て、該同期メタデータをコンピュータの一時的記憶装置に格納すること、３）コンピュータサーバのエンドポイントと一時的記憶装置との間の同期を行なうこと、及び４）書式上の更新されたティック数（tick-count）を記録するかまたは該書式を破壊して、添付されている更新済みのティック数を有する書式の新しいコピーを発行すること。
【００３１】
図４Ａは、例示的な同期環境４５０のブロック図である。図４Ａに示すように、例示的な同期環境４５０は、第１の参加ユーザ４５５、第２の参加ユーザ４６０、同期エンジン４６５、及び出力データ４７０を含む。例示的な動作において、第１の参加ユーザ４５５は、第１の書式（図示せず）についての書式データを追加することができ、第２の参加ユーザ４６０は、第２の書式（図示せず）についての書式データを追加することができる。第１の書式及び第２の書式（図示せず）のコンテンツは、同期エンジン４６５がマージして出力データ４７０を生成することができる。
【００３２】
例示的な実施例についての配備を代表する例示的な使用事例において、いくつかの中間のコンピュータシステム（例えば、図４の同期エンジン４２０）の使用を介して２つのマシン可読の書式をマージすることができる。例示的な実施例において、書式の同期は、書式が協働しているデータストアへいかなるアクセスをする必要もなく、また該データストアがエンドポイントである必要もないようにすることができる。代わりに、コンピュータサーバ（例えば、図４の同期エンジン４２０）は、例示的な以下のステップを含む例示的な方法により以下のような２つの書式の間の「双方向性同期」を行なうことができる。以下のステップは、１）（例えば、ＯＣＲを介して）第１の書式からデータ及び同期メタデータ（例えばバージョン、ナレッジ）を読み出して、いくつかの一時的記憶装置（例えば、協働しているデータストア）のコンピュータに該データ及び同期メタデータを格納するステップ、２）第２の書式からデータ及び同期メタデータを読み出して、協働しているデータストアに該データ及びメタデータを格納するステップ、３）自動的にまたはコンソールオペレータからのフィードバックを介してのいずれかで適当にコンフリクトを検出し、かつ解決している２つの一時的ストア同士の間の同期を行なうステップ、４）２つの一時的ストア（新しく選択されたストア及び適当に更新されたバージョンについての複製の識別子を備えたナレッジを含んでいる）のいずれかに対応している新しい書式を発行するステップ。あるいは、同期エンジンは、両方の職員が書式のコピーを必要とする場合に一時的ストア毎に１つで、２つの書式を発行することができる。５）一時的記憶装置からデータ／メタデータを廃棄するステップ、である。
【００３３】
例として、例示的な方法は、一時的記憶装置へ入力書式をローディングして、定常状態に至るまで一時的ストア同士の間で例示的な双方向性の同期動作を行なうことで、２つより多くの書式にまで広げることができる。
【００３４】
例示的に、書式が別の書式とマージされず、かつ書式が同じ中央コンピュータと同期される場合、書式は単一の参加者と見なされてもよい。この例示的な実施例において、書式にバージョン／ナレッジを格納する必要はない。代わりに、書式が中心となる参加者によって識別されるように、書式は選択された識別子を格納するよう動作することができる。
【００３５】
また、各々がデータのサブセットを有する異なった書式のシナリオが考慮されてもよい。例えば、おそらく図４に説明されているような第２の参加ユーザ４１０は、図４に説明されているような第３の参加ユーザ４１５と同じデータのサブセットを必要としない。かかる場合、各書式は、全体的なデータセットのうちのフィルタリングされた表現を維持すると見なすことができる。即ち、書式はフィルタリングされた複製である。例示的に、フィルタ定義は、特定の書式スタイルから推定されてもよいし、または書式とともにまたは周知のメタデータサーバにおいてのいずれかで明示的に格納されてもよい。
【００３６】
図５は、例示的な同期環境５００を示す。任意の数のノードを有するピアツーピアネットワークのノード５０５は、データをノード５１０と交換することを所望する。ノードＡは、ノード５１０に変更を要求することから始め、変更を要求するために、ノード５０５は、示したように自信のナレッジ（ＫN505で表される）をノード５１０に送信する。
【００３７】
示した例において、デバイスまたはノードの例示的なナレッジは、デバイスの間で共有されることになっている各オブジェクトに文字の識別子を用いてラベルをつけて表され、次に後続の数字は、このオブジェクトについての最新のバージョンを表す。例えば、図５Ａに示したようなＫN500は、各々がノード５００とノード５１０との間で同期されることになっているオブジェクトＡ、Ｂ、Ｃ、及びＤを含む。オブジェクトの各々に続いている数は、デバイスの公知のオブジェクトの最新のバージョンを表す。例えば、時間ｔ＝１におけるナレッジＫN500は、図５のＡ４、Ｂ３、Ｃ６、Ｄ０として記録されているＡの第５版、Ｂの第４版、Ｃの第７版、及びＤの第１版を含む。対照的に、時間ｔ＝１におけるノード５１０のナレッジＫN510は、図５のＡ３、Ｂ６、Ｃ６、Ｄ２として記録されているＡの第４版、Ｂの第７版、Ｃの第７版、及びＤの第３版を含むことができる。
【００３８】
図５Ｂに示すように、時間Ｔ＝２において、ノード５１０は、ノード５００から受信したナレッジＫN500とそれ自身のナレッジＫN510とを比較して、何がノード５００に送信される必要があるかを判断する。この例では、結果として、ノード５１０は、ノード５００のＢ３、Ｄ０についてのナレッジがノード５１０のＢ６及びＤ２のナレッジに遅れているので、Ｂ及びＤに関する変更をノード５００に送信する。ノード５１０がノード５００にＢ６とＢ３との間の変更及びＤ２とＤ０との間の変更を送信する場合、ノード５１０も、ノード５１０が有するナレッジＫN510の最新バージョン（ノード５１０の最後の変更が行われたときはいつでも反映している）とともに送信する。
【００３９】
図５Ｃに示したように、時間ｔ＝３を表すと、ノード５００及びノード５１０の両方がオブジェクトに変更を行ったがこれらが同じバージョンであったということが後にわかった場合に、ナレッジＫN510がノード５００に送信されることによって、ノード５００はコンフリクトを検出できるようになる（例えば、それらを後の解明のために格納する）。このことは自律更新、効率的な列挙を可能にするが、ノードが会って変更を交換する場合のコンフリクトの的確な検出も可能にする。例えば、この例において、両方がＣ５からＣ６へ別個に進化している場合などの、Ｃ６がナレッジＫN510とＫN510とにおいて同じオブジェクトでない場合、どちらのＣ６が正しいＣ６であるかは、例えば含まれている同期シナリオ及びデバイスに適する予め設定されたポリシに基づいて、コンフリクトの解消のために取っておくことができる。
【００４０】
分散マルチマスタ同期環境のデータソースについての例示的なナレッジ交換プロセスは、図６のフローチャートに示される。符号６００において、データが１つまたは複数のデータソースから受信される。次に、処理は、同期メタデータを判断するブロック６００へ進む。次に、ブロック６２０において同期を行なうことができる（例えば、１つまたは複数のオフラインのデータソースから受信されるデータの性質に基づくナレッジベースの同期または非ナレッジベースの同期）。次に同期メタデータは、ブロック６３０において更新される。同期結果は、ブロック６４０において１つまたは複数の協働しているデータストアに格納される。次に処理は、ブロック６５０に進み、同期結果が１つまたは複数のデータソースに伝えられる（例えば、同期されたデータ／更新されたデータを表す新しいデータソースを生成し、ブロック６００において説明されたようなデータを提供している１つまたは複数のデータソースを置換する）。
【００４１】
本明細書において説明されているシステム及び方法のナレッジを効率的に表すシステム及び方法はまた、同じプロバイダがメモリデータにおいて解決している内容に適用されてもよい。かかる内容において、メモリ内データは、物理的なストアによって支援されないかもしれない。例えば、メモリ内データは、ＣＰＵのグラフソルバにおいて使用されてノードを同期させるかもしれない。本明細書において説明されているシステム及び方法はまた、特にこれらがマルチコアアーキテクチャ上でより分散されるようになって、計算がボリュームメトリックテクスチャなどのメモリデータ構造に直接書き込まれるときに、シーングラフの内容において適用することができる。
【００４２】
例示的なネットワーク化された環境及び分散環境
当業者は、本発明の同期ナレッジ表現及び交換は、あらゆる種類のデータストアに接続されたコンピュータネットワークの一部として配置することができるか、または分散コンピュータ環境において配置することができるいずれかのコンピュータまたは他のクライアントデバイスもしくはサーバデバイスと関連して実施することができると理解できる。この点で、本発明は、任意の数のメモリまたは記憶装置を有するあらゆるコンピュータシステムまたはコンピュータ環境、及び本発明による同期技術と関連して用いることができる、任意の数の記憶デバイスまたは記憶ボリュームにわたって存在する任意の数のアプリケーション及びプロセスに関連する。本発明は、リモートの記憶装置またはローカルの記憶装置を有するネットワーク環境または分散コンピュータ環境に配置されるサーバコンピュータ及びクライアントコンピュータを備えた環境に適用することができる。本発明はまた、リモートのサービスプロセスまたはローカルのサービスプロセスと関連する情報を生成し、受信し、かつ送信するためのプログラミング言語機能、翻訳能力、及び実行能力を有するスタンドアロン型コンピュータデバイスに適用することができる。
【００４３】
分散コンピュータは、コンピュータデバイスとコンピュータシステムとの間で交換することでコンピュータリソース及びコンピュータサービスを共有することを提供する。これらのリソース及びサービスは、ファイルなどのオブジェクトについての情報、キャッシュストレージ、及びディスクストレージの交換を含む。分散コンピュータは、ネットワーク接続性という利点を有し、クライアントに自分たちの共有する力を利用して企業全体の利益になることができるようにする。この点で、様々なデバイスは、本発明による同期化のためのシステム及び方法を関係させることができるアプリケーション、オブジェクト、またはリソースを有することができる。
【００４４】
図７は、例示的なネットワーク化されたコンピュータ環境または分散コンピュータ環境のブロック図を提供する。分散コンピュータ環境は、コンピュータオブジェクト７１０ａ、７１０ｂ等、及びコンピュータオブジェクトまたはコンピュータデバイス７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等を含む。これらのオブジェクトは、プログラム、方法、データストア、プログラマブル論理等を含むことができる。オブジェクトは、例えば、ＰＤＡ、オーディオデバイス／ビデオデバイス、ＭＰ３プレーヤ、パーソナルコンピュータ等の同じデバイスまたは異なったデバイスの一部を含むことができる。各オブジェクトは、通信ネットワーク７４０を経由して別のオブジェクトと通信することができる。このネットワークは、これ自体、図７のシステムに対してサービスを提供する他のコンピュータオブジェクト及びコンピュータデバイスを含むことができ、これ自体複数の相互に接続されたネットワークを表すことができる。本発明の態様によれば、各オブジェクト７１０ａ、７１０ｂ等、または７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等は、アプリケーションを含むことができ、該アプリケーションは、本発明によるナレッジと同期するためのシステム及び方法の用途に適した、ＡＰＩまたは他のオブジェクト、ソフトウェア、ファームウェア及び／もしくはハードウェアを使用することができる。
【００４５】
当然のことながら、符号７２０ｃなどのオブジェクトは、別のコンピュータデバイス７１０ａ、７１０ｂ等または７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等でホストされてもよい。よって、示された物理的な環境は、接続されたデバイスをコンピュータとして示すことができるが、かかる説明は単に例示的であって、代わりに物理的な環境は、例えばＰＤＡ、テレビジョン、ＭＰ３プレーヤ等の様々なデジタルデバイスを含むように表されてもよいしまたは説明されてもよい。該デジタルデバイスのいずれも様々な有線サービス及び無線サービス、インタフェース、ＣＯＭオブジェクトなどのソフトウェアオブジェクトを用いることができる。
【００４６】
分散コンピュータ環境をサポートする様々なシステム、構成要素、及びネットワーク構成がある。例えば、コンピュータシステムは、有線システムまたは無線システムによって、ローカルネットワークまたは広域分散ネットワークによって、接続することができる。現在、ネットワークのうちの多くのものはインターネットに接続されていて、インターネットは、広域分散コンピュータのためのインフラストラクチャを提供し、多くの異なったネットワークを包含する。インフラストラクチャのいずれも、本発明に基づく同期化に付随される例示的な通信に用いることができる。
【００４７】
ホームネットワーク環境において、少なくとも４つの異種のネットワーク搬送媒体があり、各々、電力線、データ（無線及び有線の両方）、音声（例えば、電話）、及び娯楽媒体などの固有のプロトコルをサポートすることができる。明かりのスイッチ及び電気器具のような大部分の家庭の制御デバイスは、接続のために電力線を使用することができる。データサービスは、ブロードバンド（例えば、ＤＳＬまたはケーブルモデムのいずれか）として家庭に入ることができて、無線接続（例えば、ＨｏｍｅＲＦまたは８０２．１１Ｂ）または有線接続（例えば、ホームＰＮＡ、Ｃａｔ５、イーサネット（登録商標）、または電力線でも）のいずれかを用いて家庭内でアクセス可能である。音声トラフィックは、有線（例えば、Ｃａｔ３）または無線（例えば、携帯電話）のいずれかとして家庭に入ることができ、Ｃａｔ３配線を用いて家庭内で分散することができる。娯楽媒体、即ち他のグラフィックデータは、衛星またはケーブルのいずれかを介して家庭に入ることができ、通常、同軸ケーブルを用いて家庭内で分散される。ＩＥＥＥ  １３９４及びＤＶＩもまた、メディアデバイスのクラスタのためのデジタル相互接続部である。これらのネットワーク環境の全て及びプロトコル標準として出現するかもしれないまたはすでに出現したかもしれない他のネットワーク環境は、イントラネットなどのネットワークを形成するために相互接続されてもよい。イントラネットは、インターネットなどのワイドエリアネットワークを経由して外部に接続することができる。要するに、様々な異種のソースが、データの格納及び送信のために存在する。従って、本発明のコンピュータデバイスのいずれも、いずれかの既存の方法でデータを共有しかつ伝えることができ、本明細書の実施形態において説明される１つの方法は、限定であるよう意図されていない。
【００４８】
一般にインターネットは、ネットワーク及びゲートウェイの集合をいい、これらは、コンピュータネットワーク技術において周知であるプロトコルのうちのＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）群を利用する。インターネットは、ユーザがネットワーク（または複数のネットワーク）を介して情報をインタラクションしかつ共有できるようにするネットワーキングプロトコルを実行しているコンピュータが相互接続している地理的に分散されたリモートコンピュータネットワークのシステムとして説明することができる。かかる広範囲にわたる情報の共有のため、インターネットなどのリモートネットワークは、よってオープンシステムへと非常に広く発展した。該オープンシステムを用いて、開発者は、本質的に制限なしに、専門化された動作またはサービスを行なうためのソフトウェアアプリケーションを設計することができる。
【００４９】
よって、ネットワークインフラストラクチャは、クライアント／サーバアーキテクチャ、ピアツーピアアーキテクチャ、またはハイブリッドアーキテクチャなどのネットワークトポロジのホストを利用可能にする。「クライアント」は、クラスまたはグループのメンバであり、該メンバは、該メンバが関係しない別のクラスまたはグループのサービスを利用する。よって、コンピュータにおいて、クライアントは、プロセスである。即ち、大雑把に言えば、一組の命令またはタスクである。該一組の命令またはタスクは、別のプログラムが提供するサービスを要求する。クライアントプロセスは、他のプログラムまたはサービス自体についてのあらゆる動作の詳細を「知る」必要なしに要求されたサービスを利用する。特にネットワーク化されたシステムであるクライアント／サーバアーキテクチャにおいて、クライアントは、通常、例えばサーバなどの別のコンピュータが提供する共有ネットワークリソースにアクセスするコンピュータである。図７の説明において、例として、コンピュータ７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等は、クライアントであると考えることができる、コンピュータ７１０ａ、７１０ｂ等は、サーバであると考えることができる。あらゆるコンピュータは、環境に応じて、クライアント、サーバ、またはその両方とみなすことができるが、サーバ７１０ａ、７１０ｂ等は、クライアントコンピュータ７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等に複製されるデータを維持している。これらのコンピュータデバイスのいずれも、データを処理していてもよいしまたは本発明に基づいてナレッジと同期技術を関係させることができるサービスまたはタスクを要求していてもよい。
【００５０】
サーバは、通常、例えばインターネットインフラストラクチャまたはワイヤレスネットワークインフラストラクチャなどのリモートネットワークまたはローカルネットワークを介してアクセスできるリモートのコンピュータシステムである。クライアントプロセスは、第１のコンピュータシステムで動作中でもよく、サーバプロセスは、第２のコンピュータシステムで動作中でもよくて、クライアントプロセスとサーバプロセスとは、通信媒体を介して互いに通信し、よって分散機能を提供して複数のクライアントがサーバの情報収集能力を利用することができる。本発明によるナレッジに基づく同期化技術に基づいて利用されるあらゆるソフトウェアオブジェクトは、複数のコンピュータデバイスまたはコンピュータオブジェクトにわたって分散されていてもよい。
【００５１】
クライアント（または複数のクライアント）及びサーバ（または複数のサーバ）は、プロトコル層（または複数のプロトコル層）が提供する機能を利用して互いに通信する。例えば、ＨＴＴＰ（Hypertext Transfer Protocol）は、ＷＷＷ（World Wide Web）、即ち「ウェブ」とともに用いられる一般的なプロトコルである。通常、インターネットプロトコル（ＩＰ）アドレスなどのコンピュータネットワークアドレスまたはＵＲＬ（Universal Resource Locator）アドレスなどの他のリファレンスは、サーバコンピュータまたはクライアントコンピュータを互いに識別するために用いられる。ネットワークアドレスは、ＵＲＬアドレスと称することができる。通信は、通信媒体を通じて提供することができる。例えば、クライアント（または複数のクライアント）及びサーバ（または複数のサーバ）は、大容量通信のためにＴＣＰ／ＩＰ接続（または複数のＴＣＰ／ＩＰ接続）を介して互いに接続することができる。
【００５２】
よって、図７は、ネットワーク／バスを介してクライアントコンピュータ（または複数のクライアントコンピュータ）と通信するサーバ（または複数のサーバ）を備えていて、本発明を用いることができる例示的なネットワーク化された環境または分散環境を示す。詳細には、いくつかのサーバ７１０ａ、７１０ｂ等は、通信ネットワーク／バス７４０を介して相互接続されていて、これらは、本発明による、携帯用コンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク化された電気器具、またはＶＣＲ、ＴＶ、オーブン、照明、ヒータなどの他のデバイスなどの、多くのクライアントコンピュータデバイス即ちリモートコンピュータデバイス７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅを備えたＬＡＮ、ＷＡＮ、イントラネット、ＧＳＭネットワーク、インターネット等であってもよい。よって、本発明は、あらゆる種類のデータを同期させることが望ましい関連するあらゆるコンピュータデバイスに適用することができると考えられる。
【００５３】
通信ネットワーク／バス７４０がインターネットであるネットワーク環境において、例えばサーバ７１０ａ、７１０ｂ等は、ウェブサーバであってもよく、該ウェブサーバと、クライアント７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等は、ＨＴＴＰなどの多くの公知のプロトコルのうちのいずれかを介して通信する。サーバ７１０ａ、７１０ｂ等はまた、分散コンピュータ環境に特有であってもよいような、クライアント７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等として働くことができる。
【００５４】
上記のように、通信は、有線もしくは無線、または適当である場合には、組み合わせであってもよい。クライアントデバイス７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等は、通信ネットワーク／バス７４０を介して通信してもよいし通信しなくてもよい。該クライアントデバイス７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等は、これらに付随する独自の通信機能を有していてもよい。例えば、ＴＶまたはＶＣＲの場合、その制御に対するネットワーク化された態様があってもよいしまたはなくてもよい。各クライアントコンピュータ７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等及びサーバコンピュータ７１０ａ、７１０ｂ等は、様々なアプリケーションプログラムモジュールまたはオブジェクト１３５ａ、１３５ｂ、１３５ｃ等を備えていてもよくかつ様々なタイプの記憶要素またはオブジェクトとの接続またはアクセスを備えていてもよい。該記憶要素またはオブジェクトを介してファイルまたはデータストリームが格納されてもよいし、または、該記憶要素またはオブジェクトに対してファイルまたはデータストリームの一部分（または複数の部分）がダウンロードされてもよいし、送信されてもよいし、移動されてもよい。コンピュータ７１０ａ、７１０ｂ、７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等のうちのいずれか１つまたは複数は、本発明により処理されたかまたは記録されたデータを格納するためのデータベースまたはメモリ７３０などのデータベース７３０または他の記憶要素の維持及び更新に関与することができる。よって、本発明は、クライアントコンピュータ７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等を有するコンピュータネットワーク環境において利用することができる。該クライアントコンピュータ７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等は、コンピュータネットワーク／バス７４０及びサーバコンピュータ７１０ａ、７１０ｂ等にアクセスしてインタラクションすることができ、サーバコンピュータ７１０ａ、７１０ｂ等は、クライアントコンピュータ７２０ａ、７２０ｂ、７２０ｃ、７２０ｄ、７２０ｅ等もしくは他の同様のデバイス、及びデータベース７３０とインタラクションすることができる。
【００５５】
例示的なコンピュータデバイス
上記のように、本発明は、一組のデバイスを介してあらゆる種類のデータが同期されることが望ましいかもしれないあらゆるデバイスに適用する。従って、ハンドヘルドコンピュータデバイス、携帯用コンピュータデバイス、及び他のコンピュータデバイス並びに全ての種類のコンピュータオブジェクトは、本発明に関連して、即ち、デバイスが複数のデバイスにわたってデータを共有することから利益を得ることができるか、またはそうでなければデータを受信することができるか、そうでなければデータを受信し、処理し、または格納することができるどこででも、使用が検討されると理解されなければならない。従って、図８で後述される下記の汎用リモートコンピュータは、ほんの一例であり、本発明は、ネットワーク／バスの相互運用及びインタラクションするあらゆるクライアントで実施されてもよい。よって、本発明は、ネットワーク化されたホストされるサービスの環境において実行することができる。該環境において、ほんの少しまたは最小限のクライアントリソースが関与する。例えば、クライアントデバイスが、単にネットワーク／バスに対するインタフェース（例えば電気器具に配されたオブジェクトなど）として働くネットワーク化された環境などである。
【００５６】
要求されていないが、本発明は、デバイスまたはオブジェクトについてのサービスの開発者が使用するために、オペレーティングシステムを介して一部が実施されてもよいし、かつ／または本発明の構成要素（または複数の構成要素）と関連して動作するアプリケーションのソフトウェア内に一部が含まれてもよい。ソフトウェアは、クライアントワークステーション、サーバ、または他のデバイスなどの１つまたは複数のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な内容で記載することができる。当業者は、本発明が、他のコンピュータシステム構成及びプロトコルで実施することができると理解している。
【００５７】
よって、図８は、適当なコンピュータシステム環境８００ａの例を示す。コンピュータシステム環境８００ａにおいて、本発明を実施することができるが、上記で明らかになったように、コンピュータシステム環境８００ａは、メディアデバイスについての適切なコンピュータ環境の一例にすぎず、本発明の使用の範囲または機能の範囲に関していかなる限定も示唆することを意図していない。コンピュータ環境８００ａは、例示的な操作環境８００ａにおいて説明される構成要素のうちのいずれか１つまたは組み合わせに関するいかなる依存関係または要件をも有しているものと解釈されてはならない。
【００５８】
図８を参照すると、本発明を実施するための例示的なリモートデバイスは、コンピュータ８１０ａの形で汎用コンピュータデバイスを含む。コンピュータ８１０ａの構成要素は、処理装置８２０ａ、システムメモリ８３０ａ、及びシステムメモリを含む様々なシステム構成要素を処理装置８２０ａに接続するシステムバス８２１ａを含むことができるが、これらに限定されるものではない。システムバス８２１ａは、メモリバスまたはメモリコントローラを、周辺バス、及び様々なバスアーキテクチャのいずれかを用いるローカルバス含むいくつかのタイプのバス構造のうちのいずれかであってもよい。
【００５９】
コンピュータ８１０ａは、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ８１０ａがアクセスすることができるいかなる利用可能な媒体であってもよい。例であって限定ではないが、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、例えばコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するためのいずれかの方法または技術で実装される揮発性及び不揮発性、着脱自在及び固定式の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を格納するために用いることができてコンピュータ８１０ａがアクセスすることができるあらゆる他の媒体を含むが、これらに限定されるものではない。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の搬送メカニズムなどの変調されたデータ信号内の他のデータを具体化し、あらゆる情報配信媒体を含む。
【００６０】
システムメモリ８３０ａは、例えばＲＯＭ（Read Only Memory）及び／またはＲＡＭ（Random Access Memory）などの揮発性メモリ及び／または不揮発性メモリの形でコンピュータ記憶媒体を含むことができる。スタート・アップの間などコンピュータ８１０ａ内の要素同士の間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、メモリ８３０ａに格納することができる。メモリ８３０ａは通常、データ及び／またはプログラムモジュールも含み、これらはすぐにアクセス可能であってかつ／またはそのとき処理ユニット８２０ａで動作している。例であって限定ではないが、メモリ８３０ａはまた、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含むことができる。
【００６１】
コンピュータ８１０ａは、また、他の着脱自在／固定式で揮発性／不揮発性のコンピュータ記憶媒体を含むことができる。例えば、コンピュータ８１０ａは、固定式で不揮発性の磁気媒体から読み出しまたはそこに書き込むハードディスクドライブ、着脱自在で不揮発性の磁気ディスクから読み出しまたはそこに書き込む磁気ディスクドライブ、及び／またはＣＤ−ＲＯＭもしくは他の光媒体などの着脱自在で不揮発性の光ディスクから読み出しまたはそこに書き込む光ディスクドライブを含むことができる。例示的な動作環境において用いることができる他の着脱自在／固定式で揮発性／不揮発性のコンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどを含むが、これらに限定されるものではない。ハードディスクドライブは通常、インタフェースなどの固定式のメモリインタフェースを介してシステムバス８２１ａに接続されていて、磁気ディスクドライブまたは光ディスクドライブは通常、インタフェースなどの着脱自在のメモリインタフェースでシステムバス８２１ａに接続されている。
【００６２】
ユーザは、キーボード、及びマウス、トラックボール、またはタッチパッドと一般に称されるポインティングデバイスなどの入力デバイスを介してコンピュータ８１０ａに命令及び情報を入力することができる。他の入力デバイスは、マイクロホン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどを含むことができる。これらの入力デバイス及び他の入力デバイスは、システムバス８２１ａに接続されているユーザ入力部８４０ａ及び付随するインタフェース（または複数のインタフェース）を介して処理装置８２０ａに接続されることが多いが、パラレルポート、ゲームポート、またはＵＳＢ（Universal Serial Bus）などの他のインタフェース及びバス構造によって接続されてもよい。グラフィックスサブシステムもシステムバスに８２１ａに接続することができる。モニタまたは他の種類のディスプレイデバイスも、ビデオメモリと順番に通信することができる、出力インタフェース８５０ａなどのインタフェースを介してシステムバス８２１ａに接続することができる。モニタに加えて、コンピュータはまた、スピーカ及びプリンタなどの他の周辺出力デバイスを含むことができ、これらは出力インタフェース８５０ａを介して接続されてもよい。
【００６３】
コンピュータ８１０ａは、今度はデバイス８１０ａと異なった媒体能力を有することができる、リモートコンピュータ８７０ａなどの１つまたは複数の他のリモートコンピュータに対する論理接続を用いてネットワーク化された環境または分散環境において動作することができる。リモートコンピュータ８７０ａは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスもしくは他の共通のネットワークノード、またはあらゆる他のリモート媒体の消費デバイスもしくは送信デバイスであってもよくて、コンピュータ８１０ａに関連して上記に述べた要素のうちのいずれかまたは全てを含むことができる。図８に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）などのネットワーク８７１ａを含むが、他のネットワーク／バスも含むことができる。かかるネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいて一般的である。
【００６４】
ＬＡＮネットワーク環境において用いられると、コンピュータ８１０ａは、ネットワークインタフェースまたはアダプタを介してＬＡＮ８７１ａに接続される。ＷＡＮネットワーク環境において用いられると、コンピュータ８１０ａは通常、モデムなどの通信構成要素、またはインターネットなどのＷＡＮを介して通信を確立するための他の手段を含む。内蔵であってもよいしまたは外付けであってもよいモデムなどの通信構成要素は、入力部８４０ａのユーザ入力インタフェースまたは他の適当なメカニズムを介してシステムバス８２１ａに接続することができる。ネットワーク化された環境において、コンピュータ８１０ａまたはその一部に関連して示されたプログラムモジュールは、リモートのメモリ記憶装置デバイスに格納することができる。示されかつ説明されたネットワーク接続は例示的であって、コンピュータ同士の間の通信リンクを確立する他の手段を用いることができるということが理解される。
【００６５】
例えば、適当なＡＰＩ、ツールキット、ドライバコード、オペレーティングシステム、制御部、スタンドアロン型またはダウンロード可能なソフトウェアオブジェクト等の、本発明を実施する複数の方法がある。これらは、アプリケーション及びサービスが、本発明によるナレッジを表しかつ交換するためのシステム及び方法を使用できるようにする。本発明は、ＡＰＩ（または他のソフトウェアオブジェクト）の見地からも、本発明によるナレッジ交換を行なうソフトウェアオブジェクトまたはハードウェアオブジェクトからも本発明の使用を検討している。よって、本明細書において説明されている本発明の様々な実施例は、ソフトウェアにおいてと同様に、完全にハードウェアにおいて、一部がハードウェアにおいて、一部がソフトウェアにおいてといった態様を有することができる。
【００６６】
用語「例示的な」は、本明細書において、例、事例、または説明となることを意味するために用いられる。誤解を避けるために、本明細書において開示される本発明は、かかる例に限定されない。更に、「例示的」として本明細書において説明されるいずれかの態様または設計は、他の態様または設計より好適または有利であると必ずしも解釈されるというわけではなく、当業者に公知である均等の例示的な構造及び技術を排除することも意味しない。更に、用語「含む」、「有する」、「備えた」、及び他の同様の文言は、詳細な説明または、特許請求の範囲のいずれかにおいて用いられる範囲で、誤解を避けるために、かかる用語は、いずれかの追加の要素または他の要素を排除することなしにオープンの移行語句として、用語「含む」と同様の方法で包括的であることが意図される。
【００６７】
上記のように、本発明の例示的な実施形態が様々なコンピュータデバイス及びネットワークアーキテクチャと関連して説明されてきたが、基本的な概念は、データを他のコンピュータまたはシステムと同期させることが望ましいあらゆるコンピュータデバイスまたはシステムに適用することができる。例えば、本発明の同期プロセスは、コンピュータデバイスのオペレーティングシステムに適用することができる。該オペレーティングシステムは、デバイスの別個のオブジェクトとして、別のオブジェクトの一部として、再利用可能な制御として、サーバからダウンロード可能なオブジェクトとして、デバイスまたはオブジェクトとネットワークとの間の「中間の管理層」として、分散されたオブジェクトとして、ハードウェアとして、メモリにおいて、前述のもののうちのいずれかの組み合わせ等として提供される。
【００６８】
上記のように、本明細書において説明された様々な技術は、ハードウェアもしくはソフトウェア、または、適当な場合には、両方の組合せに関連して実施することができる。本明細書で用いられるように、用語「構成要素」、「システム」などは、コンピュータ関連のエンティティ、ハードウェア、ハードウェア及びソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかに言及することが同様に意図されている。例えば、構成要素は、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、及び／またはコンピュータであってもよいが、これらに限定されない。例として、コンピュータで実行中のアプリケーション及びコンピュータの両方は構成要素であってもよい。１つまたは複数の構成要素は、実行プロセス及び／または実行スレッド内に存在することができ、構成要素は、１つのコンピュータで局所化されてもよいしかつ／または２つ以上のコンピュータの間で分散されてもよい。
【００６９】
よって、本発明の方法及び装置、またはその特定の態様もしくはその一部は、例えばフロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、またはいずれかの他のマシン可読の記憶媒体などの具体的な媒体で具体化されるプログラムコード（即ち、命令）の形を取ることができる。そこで、プログラムコードがコンピュータなどのマシンにロードされて実行されると、該マシンは、本発明を実施するための装置になる。プログラム可能なコンピュータでプログラムコードを実行する場合、コンピュータデバイスは通常、プロセッサ、プロセッサが読み出すことができる記憶媒体（揮発性及び不揮発性のメモリ及び／または記憶要素を含む）、少なくとも１つの入力デバイス、及び少なくとも１つの出力デバイスを含む。例えば、データ処理ＡＰＩ、再利用可能制御などの使用を介して本発明の同期サービス及び／または同期プロセスを実施することができるかまたは利用することができる１つまたは複数のプログラムは、コンピュータシステムと通信するために高水準手続き言語またはオブジェクト指向プログラミング言語で実装されることが望ましい。しかしながら、必要に応じて、プログラム（または複数のプログラム）は、アセンブリ言語または機械語で実装されてもよい。いずれにせよ、言語はコンパイラ型言語またはインタプリタ型言語であってもよく、ハードウェアの実装と組み合わされる。
【００７０】
本発明の方法及び装置はまた、電気配線または電気ケーブルを介して、光ファイバを介して、またはあらゆる他の送信形式を介してなどの、いくつかの送信媒体を介して送信されるプログラムコードの形で具体化された通信を介して実施されてもよい。プログラムコードは、例えばＥＰＲＯＭ、ゲートアレイ、プログラム可能論理回路（ＰＬＤ）、クライアントコンピュータ等などのマシンによって受信され、ロードされ、実行されると、該マシンは、本発明を実施するための装置になる。汎用プロセッサで実施されると、プログラムコードはプロセッサと組み合わされて、本発明の機能を呼び出すよう動作する固有の装置を提供する。更に、本発明と関連して用いられるあらゆる記憶技術は、常にハードウェアとソフトウェアとの組合せであってもよい。
【００７１】
更に、開示された本発明は、システム、方法、装置、または標準プログラミング技術及び／もしくは工学技術を用いてソフトウェア、ファームウェア、ハードウェア、もしくはコンピュータまたはこれらの組み合わせを製造する製品として実施されて、本明細書において詳述される態様を実施するためのコンピュータベースのデバイスまたはプロセッサベースのデバイスを制御してもよい。本明細書において用いられる用語「製品」（あるいは、「コンピュータプログラム製品」）は、いずれかのコンピュータ可読デバイス、搬送波、または媒体からアクセスできるコンピュータプログラムを含むよう意図されている。例えば、コンピュータ可読媒体は、磁気記憶デバイス（例えば、ハードディスク、フロッピディスク、磁気ストリップ・・・）、光ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）・・・）、スマートカード、及びフラッシュメモリデバイス（例えばカード、ステック）を含むことができるが、これらに限定されるものではない。更に、搬送波は、電子メールを送受信する際に、またはインターネットもしくはローカルエリアネットワーク（ＬＡＮ）などのネットワークにアクセスする際に用いられるコンピュータ可読の電子データのようなコンピュータ可読の電子データを搬送するために用いることができることは公知である。
【００７２】
前述のシステムは、いくつかの構成要素同士の間のインタラクションに関して説明されてきた。かかるシステム及び構成要素は、これらの構成要素または特定の下位の構成要素、特定の構成要素または特定の下位の構成要素のうちのいくつか、及び／または追加の構成要素を含むことができ、前述のもののうちの様々な順序及び組合せによると理解することができる。下位の構成要素はまた、（階層的な）親の構成要素内に含まれるよりはむしろ他の構成要素に通信可能に接続された構成要素として実施することができる。更に、１つまたは複数の構成要素は、集積された機能を提供している単一の構成要素に結合されてもよいしまたはいくつかの別個の下位の構成要素に分割されてもよい点に留意する必要がある。例えば管理層などのいずれか１つまたは複数の中間層は、かかる下位の構成要素に通信可能に接続されて統合した機能を提供するよう提供されてもよい。本明細書において説明されたあらゆる構成要素は、本明細書において具体的に説明されていないが、当業者が通常知っている１つまたは複数の他の構成要素とインタラクションすることができる。
【００７３】
上記に説明した例示的なシステムを考慮して、開示された本発明に従って実施することができる方法は、図６フローチャートを参照してよりよく理解することができる。説明を簡潔にするために、方法は一連のブロックとして示されかつ説明されているが、いくつかのブロックは本明細書において示されかつ説明されていることと異なる順番でかつ／または他のブロックと同時に起こってもよいので、請求された本発明は、ブロックの順番で限定されないことが理解されかつ認められることになっている。不連続または分岐されたフローがフローチャートを介して示されている場合には、同じ結果または同様の結果を実現する様々な他の分岐、フローパス、及びブロックの順番を実施することができるということが理解される。更に、全ての示されたブロックが、以下に説明される方法を実施するために必要とされるとは限らない。
【００７４】
更に、理解されるように、上記の開示されたシステム及び下記の方法のうちの様々な部分は、人工知能もしくはナレッジまたは規則ベースの構成要素、下位の構成要素、プロセス、手段、方法、またはメカニズム（例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンビリーフネットワーク、ファジー論理、データ融合エンジン、分類器・・・）を含むことができるか、またはこれらから成ることができる。とりわけ、かかる構成要素は、該構成要素によって実行される特定のメカニズムまたはプロセスを自動化して、システム及び方法の一部をより適応できるようにしかつより効率的でインテリジェントにすることができる。
【００７５】
本発明は様々な図の好適な実施形態に関連して説明されてきたが、他の同様の実施形態を用いることができるか、または改良及び追加を本発明の同じ機能を実行するために本発明から乖離することなしに説明された実施形態に行ってもよいということが理解されなければならない。例えば、本発明の例示的なネットワーク環境がピアツーピアのネットワーク化された環境などのネットワーク化された環境の内容において説明されているが、当業者は、本発明はこれに限定されないということ、本願において説明されているような方法は、有線であろうが無線であろうが、例えばゲーム機、ハンドヘルドコンピュータ、携帯用コンピュータ等の、あらゆるコンピュータデバイス及びコンピュータ環境に適用することができ、通信ネットワークを介して接続されかつネットワークを介してインタラクションしている任意の数のかかるコンピュータデバイスに適用することができるということを理解できる。更に、特に無線ネットワーク化されたデバイスの数が急増し続けているので、ハンドヘルドデバイスのオペレーティングシステム及び他のアプリケーションの特定のオペレーティングシステムを含む様々なコンピュータプラットフォームが検討されることが強調されなければならない。
【００７６】
例示的な実施形態は、特定のプログラミング言語構築物の内容において本発明を利用することに言及するが、本発明はそれに限定されておらず、むしろ本発明による一組のノードについてナレッジを表しかつ交換するための方法を提供するあらゆる言語で実施することができる。また更に、本発明は、複数の処理チップまたは処理デバイスを介して実施することができ、記憶装置は、複数のデバイスを介して同様に実行することができる。従って、本発明は、いずれかの単一の実施形態に限定されるべきではなく、むしろ添付の特許請求の範囲に基づいて広さ及び範囲において解釈されるべきである。
【図１】
2011519441.tif 000003
【図２Ａ】
2011519441.tif 000004
【図２Ｂ】
2011519441.tif 000005
【図３】
2011519441.tif 000006
【図５Ａ】
2011519441.tif 000007
【図５Ｂ】
2011519441.tif 000008
【図５Ｃ】
2011519441.tif 000009
【図６】
2011519441.tif 000010
【図８】
2011519441.tif 000011
【図４】
2011519441.tif 000012
【図４Ａ】
2011519441.tif 000013
【図７】
2011519441.tif 000014
【国際調査報告】
2011519441.tif 000015
2011519441.tif 000016