(57)【要約】  ＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）層が、コンピュータデバイス上に実装される。ＡＰＩ層は、コンピュータデバイス上で実行するローカルアプリケーションが、データストア層内のウェブデータにアクセスすることを可能にし、かつ、何らかの他のコンピュータデバイス上で実行するリモートアプリケーションが、データストア層内のウェブデータにアクセスすることをさらに可能にする。加えて、このウェブデータは、ウェブページを含むことが可能であり、ウェブページのあるものは構造化データを含み得、あるものは構造化データを含み得ない。ウェブブラウザは、オブジェクトモデルを介してウェブデータストアにアクセスすることが許可され、これらのウェブページに少なくとも部分的に基づき、ユーザインタフェースを生成する。
2010521721.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータデバイスに実装される方法であって、
前記コンピュータデバイスのデータストア層内のウェブデータを表す複数のオブジェクトを有するオブジェクトモデルを生成するステップ（５０６）、
前記コンピュータデバイス上で実行する複数のアプリケーションから要求を受け取って、前記ウェブデータに対して動作を実行するステップであって、前記要求が前記複数のオブジェクトの１つまたは複数のメソッドの呼び出しを介して受け取られるステップ（５０８）、および
前記ウェブデータに対して要求された動作を実行するステップ（５１０）、
を含むことを特徴とする方法。
【請求項２】
別のコンピュータデバイス上で実行するリモートアプリケーションから追加の要求を受け取って、前記ウェブデータにアクセスするステップ、および
前記リモートアプリケーションが前記ウェブデータにアクセスすることを可能にするステップ、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ウェブデータへの変更を識別するステップ、および
前記リモートアプリケーション、および前記複数のアプリケーションの１つまたは複数に、前記ウェブデータへの変更を通知するステップ、
をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記複数のアプリケーションのユーザが、前記データストア層内の特定のウェブデータを選択することを可能にするユーザインタフェース制御を表示するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ウェブデータへの変更がなされたかどうかをチェックするステップ、および
前記変更がなされた場合、前記複数のアプリケーションの１つまたは複数に前記ウェブデータへの変更を通知するステップ、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記複数のアプリケーションが、ウェブブラウザと、１つまたは複数の追加のアプリケーションと、を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ウェブデータが複数のウェブページから成り、前記データストア層が前記複数のウェブページの各ウェブページをアイテムとして記憶し、前記データストア層が複数のコレクションをさらに記憶し、前記複数のコレクションの各コレクションが１つまたは複数のアイテムを識別する、ことを特徴とする請求項１に記載の方法。
【請求項８】
命令が記憶される１つまたは複数のコンピュータ可読媒体であって、前記命令はコンピュータデバイスの１つまたは複数のプロセッサにより実行されるときに、前記１つまたは複数のプロセッサにアプリケーションプログラミングインタフェース（３０６）層を実装させて、前記コンピュータデバイス上で実行する１つまたは複数のローカルアプリケーション（３１０）が、データストア層（３０４）内のウェブデータにアクセスすることを可能にし、かつ、１つまたは複数の他のコンピュータデバイス上で実行する１つまたは複数のリモートアプリケーション（３１２）が、前記データストア層内の前記ウェブデータにアクセスすることをさらに可能にする
ことを特徴とするコンピュータ可読媒体。
【請求項９】
前記１つまたは複数のローカルアプリケーションが、ウェブブラウザと、ウェブブラウザエクステンションと、を含むことを特徴とする請求項８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１０】
前記命令が、１つまたは複数のプロセッサにエンジン層をさらに実装させて、前記ウェブデータを、前記ウェブデータへ更新が検索される１つまたは複数のソースの場所から取得したデータと比較することにより、前記ウェブデータへの変更を検出し、かつ、前記ウェブデータへの変更を前記データストア層に保存することを特徴とする請求項８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１１】
ウェブデータへの変更が検出されたときに、前記データストア層がイベントを発生させ、前記イベントが、前記１つまたは複数のローカルアプリケーションと、前記１つまたは複数のリモートアプリケーションに、前記ウェブデータへの変更が検出されたことを通知することを特徴とする請求項１０に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１２】
前記アプリケーションプログラミングインタフェース層が、同期化プロトコルモジュールを備えて、前記イベントを受け取り、前記ウェブデータへの変更のレコードを保持し、前記１つまたは複数のリモートアプリケーションに変更を通信することを特徴とする請求項１１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１３】
前記命令が、前記１つまたは複数のプロセッサに、前記コンピュータデバイスのデータ記憶装置を使用する前記データストア層を実装させることを特徴とする請求項８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１４】
前記アプリケーションプログラミングインタフェース層が、前記１つまたは複数のリモートアプリケーションの代わりに前記データストア層内の前記ウェブデータにアクセスする、同期化プロトコルモジュールを含むことを特徴とする請求項８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１５】
命令が記憶される１つまたは複数のコンピュータ可読媒体であって、前記命令は１つまたは複数のコンピュータデバイスのプロセッサにより実行されるときに、
構造化データを有する１つまたは複数のウェブページと、構造化データを有しない１つまたは複数のウェブページと、をウェブデータストアに記憶すること（５０４）、
前記１つまたは複数のウェブページを表す複数のオブジェクトを有するオブジェクトモデルを生成すること（５０６）、および
前記コンピュータデバイス上で実行するウェブブラウザと、前記コンピュータデバイス上で実行する１つまたは複数の他のアプリケーションとの両方が、前記オブジェクトモデルを介して前記ウェブデータストアにアクセスし、かつ、前記構造化データを有する１つまたは複数のウェブページと、前記構造化データを有しない１つまたは複数のウェブページとに少なくとも部分的に基づき、ユーザインタフェースを生成する、ことを可能にすること（５０８、５１０）、
を前記１つまたは複数のプロセッサに実行させることを特徴とするコンピュータ可読媒体。
【請求項１６】
前記ウェブブラウザと前記１つまたは複数の他のアプリケーションとが、前記オブジェクトモデルを介して前記ウェブデータストアにアクセスすることを可能にすることは、前記ウェブブラウザと前記１つまたは複数の他のアプリケーションとが、前記複数のオブジェクトの１つまたは複数のメソッドを呼び出すことにより、前記ウェブデータストアにアクセスすることを可能にすることであることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１７】
前記命令は、
前記ウェブブラウザと前記１つまたは複数のアプリケーションとの両方が、どのビヘイビアが前記コンピュータデバイスのビヘイビアストアに記憶されるかを列挙することを可能にすること
を前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１８】
前記ビヘイビアが、特定の構造化データ型に関連するビヘイビアのみであることを特徴とする請求項１７に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１９】
前記命令が、
前記ウェブブラウザと前記１つまたは複数のアプリケーションの両方が、前記コンピュータデバイスのビヘイビアストア内に記憶されるビヘイビアを呼び出すことを可能にすること
を前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２０】
前記命令は、
前記コンピュータデバイスのユーザが、前記ウェブブラウザまたは前記１つまたは複数の他のアプリケーションによりアクセスされる前記ウェブデータストア内の前記１つまたは複数のウェブページから、特定の構造化データを選択することを可能にする、ユーザインタフェース制御を表示すること
を前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
インターネットおよびワールドワイドウェブ（ウェブ）は、我々の日常生活には欠かせないものになってきており、仕事、娯楽、調査等に使用されている。現在、ユーザは、ウェブブラウザを使用して種々のウェブページにアクセスし、手動でそれらのウェブページからテキストをコピーすることによって、または、時にはそれらのウェブページから画像を保存すること、もしくはさらにウェブページ全体を保存することなどによって、それらのウェブページからデータを取得することが可能である。しかし、現在のところ、そのようなウェブページから取得されたデータに他のアプリケーションがアクセスする簡単な方法はない。従って、ウェブページからデータにアクセスする簡単な方法を有して、異なるアプリケーションにより使用できるようにすることは有益である。
【０００２】
この要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。この要約は、請求の主題の重要な特徴または主要な特徴を確認することを意図しておらず、請求の主題の範囲を限定するために使用されることを意図してもいない。
【０００３】
ウェブデータ使用のプラットフォームの１つまたは複数の態様に従うと、データストア層内のウェブデータを表す、オブジェクトを含むオブジェクトモデルが、コンピュータデバイス上で生成される。コンピュータデバイス上で実行しているアプリケーションからの要求も受け取られる。これらの受け取られた要求は、ウェブデータに対して動作を実行させるという要求であり、要求される動作が実行される。
【発明の概要】
【発明の効果】
【０００４】
ウェブデータ使用のプラットフォームの１つまたは複数の態様に従うと、ＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）層が、コンピュータデバイスに実装される。ＡＰＩ層は、コンピュータデバイス上で実行するローカルアプリケーション（複数可）が、データストア層内のウェブデータにアクセスすることを可能にする。ＡＰＩ層はさらに、何らかの他のコンピュータデバイス上で実行するリモートアプリケーション（複数可）が、データストア層内のウェブデータにアクセスすることを可能にする。
【０００５】
ウェブデータ使用のプラットフォームの１つまたは複数の態様に従うと、ウェブページが、ウェブデータストアに記憶される。これらのウェブページのうちのあるものは、構造化データを含み、他のものは構造化データを含まない。これらのウェブページを表す、異なるオブジェクトを有するオブジェクトモデルが生成される。ウェブブラウザが、オブジェクトモデルを介してウェブデータストアにアクセスすることが許可され、これらのウェブページに少なくとも部分的に基づき、ユーザインタフェースを生成する。
【０００６】
同じ数字が、同様の特徴を参照するために図面を通して使用される。
【図面の簡単な説明】
【０００７】
【図１】１つまたは複数の実施形態に従って、ウェブデータ使用のプラットフォームを使用することが可能な、一例のシステムを例示する図である。
【図２】１つまたは複数の実施形態に従って、構造化データを含む一例のウェブページを例示する図である。
【図３】１つまたは複数の実施形態に従って、一例のウェブデータプラットフォームを例示する図である。
【図４】１つまたは複数の実施形態に従って、ユーザインタフェース制御を表示する、一例のユーザインタフェースを例示する図である。
【図５】１つまたは複数の実施形態に従って、データストア層からウェブデータにアクセスするための、一例のプロセスを例示するフローチャートである。
【図６】１つまたは複数の実施形態に従って、データストア層内のウェブデータを更新するための、一例のプロセスを例示するフローチャートである。
【図７】１つまたは複数の実施形態に従って、ウェブデータ使用のプラットフォームを実装するよう構成することが可能な、一例のコンピュータデバイスを例示する図である。
【発明を実施するための形態】
【０００８】
ウェブデータ使用のプラットフォームについて本明細書において検討する。プラットフォームは、エンジン層、データストア層、およびＡＰＩ（ａｐｐｌｉｃａｔｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）層を含む。エンジン層は、ウェブデータを取得し、それを、記憶するためにデータストア層に提供する。ウェブデータへの変更はまた、エンジン層により検出され、データストア層に対して識別され得る。データストア層は、ウェブデータを記憶し、さらにウェブデータがその一部であるコレクションのインジケータを記憶する。ＡＰＩ層は、プラットフォームと同じコンピュータデバイス上で実行するアプリケーションだけでなく、他のコンピュータデバイス上で実行するアプリケーションが、データストア層からウェブデータにアクセスし使用することを可能にするインタフェースを、提供する。
【０００９】
図１は、１つまたは複数の実施形態に従って、ウェブデータ使用のプラットフォームを使用することが可能な、一例のシステムを１００例示する。システム１００は、ネットワーク１０６上で多数（ｘ個）のリモートデバイス１０４（１）．．．１０４（ｘ）と通信することが可能であるコンピュータデバイス１０２を含む。ネットワーク１０６は、インターネット、ローカルエリアネットワーク、他の公のおよび／またはプロプライエタリなネットワーク、その組合せ等を含む、任意の様々なネットワークであり得る。
【００１０】
コンピュータデバイス１０２は、任意の様々な異なるコンピュータデバイス、例えば、デスクトップコンピュータ、ハンドヘルドコンピュータ、ラップトップコンピュータ、サーバコンピュータ、自動車用コンピュータ、携帯電話、携帯情報端末（ＰＤＡ）、ゲーム機等であり得る。コンピュータデバイス１０２は、ウェブデータを記憶し、かつ、アプリケーションが記憶されるウェブデータにアクセスすることを可能にする、ウェブデータプラットフォーム１０８を含む。記憶されるウェブデータは、以下でさらに詳細に検討するように、例えば、ウェブページ、ウェブページのコレクションのインジケータ等を含む。記憶されるウェブデータは、プラットフォーム１０８により１つまたは複数のリモートデバイス１０４（１）．．．１０４（ｘ）から取得することが可能である。加えて、記憶されるウェブデータにアクセス可能なアプリケーションは、１つまたは複数のリモートデバイス１０４（１）．．．１０４（ｘ）上で実行しているアプリケーションとだけでなく、コンピュータデバイス１０２上で実行しているアプリケーションと、をも含む。
【００１１】
リモートデバイス１０４（１）．．．１０４（ｘ）は典型的には、サーバコンピュータであるが、代替として、コンピュータデバイス１０２に類似した任意の様々な異なるコンピュータデバイスであり得る。リモートデバイス１０４（１）．．．１０４（ｘ）は、ウェブデータプラットフォーム１０８により検索され記憶されることが可能なウェブデータを記憶することが可能である。加えて、リモートデバイス１０４（１）．．．１０４（ｘ）は、ウェブデータプラットフォーム１０８により記憶されるウェブデータにアクセスし使用する、アプリケーションを実行することが可能である。あるリモートデバイス１０４（１）．．．１０４（ｘ）は、ウェブデータプラットフォーム１０８により検索されるウェブデータを記憶し得、他のものはアプリケーションを実行して、ウェブデータプラットフォーム１０８により記憶されるウェブデータにアクセスする。代替として、同一のリモートデバイス１０４が、ウェブデータプラットフォーム１０８により検索されるウェブデータを記憶し、また、アプリケーションを実行しウェブデータプラットフォーム１０８により記憶されるウェブデータにアクセスすることが可能である。
【００１２】
１つまたは複数のリモートデバイス１０４（１）．．．１０４（ｘ）は、ウェブページ１１０を記憶する。ウェブページ１１０内のデータが、ウェブデータプラットフォーム１０８により取得され、ウェブデータとして記憶される。１つまたは複数のウェブページ１１０はそれぞれ、１つまたは複数の構造化データを含むことが可能である。構造化データは、データの消費者により既知であり予想されるフォーマットのデータであり、典型的にはウェブブラウザまたはビヘイビア（以下でさらに詳細に検討するように、構造化データを使用する方法の記述）である。構造化データは、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ；拡張マークアップ言語）フォーマットまたはＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）フォーマット等の、既知の構造化データ規格に従ってフォーマットすることが可能である。代替として、構造化データは、他の公のおよび／またはプロプライエタリな規格に従ってフォーマットすることが可能である。構造化データにどのフォーマットが使用されても、このフォーマットはウェブデータプラットフォーム１０８には既知であるため、以下でさらに詳細に検討するように、構造化データはプラットフォーム１０８により使用可能である。構造化データを構成するデータの量および種類は可変であり、データ型の一部として定義される。
【００１３】
異なる構造化データは、異なるデータ型のものであり得、また、構造化データ型とも称される。様々な異なるデータ型が使用可能であり、例えば、接触型、イベント型、カレンダ型、プロダクト型、画像型、音楽型、トリップ型、ウェブページ型、地理的位置型、等がある。データ型は、異なるプロパティまたはフィールドの任意の種類のデータ、例えば、日付、時間、マッピング座標、名前、電話番号、住所、製品の説明、宛先名、価格、等のデータを含むよう定義することが可能である。加えて、特定の実施形態において、全体のウェブページ１１０は、構造化データの１つの型として扱うことが可能である。
【００１４】
特定の構造化データの構造化データ型は、異なる方法で識別され得る。特定の実施形態において、構造化データ自身が、データ型を示す。例えば、異なるＨＴＭＬタグが使用されて、異なる構造化データ型を識別し、または、構造化データ自身のプロパティまたはパラメータが、構造化データ型を識別し得る。代替として、または加えて、構造化データは、異なる方法で、例えばページ１１０内のヘッダ情報、またはページ１１０内のもしくはページ１１０に関連する他のメタデータを使用することにより、識別可能である。
【００１５】
図２は、１つまたは複数の実施形態に従って、構造化データを含む一例のウェブページ２００を例示する。ウェブページ２００は、カレンダイベント２０２だけでなく、追加のテキスト２０４および画像２０６と、をも含む。この特定の例において、カレンダイベント２０２は、３つのフィールドまたはプロパティ−位置フィールドおよび２つの日付フィールドを有する。これらのフィールドは、ページのＨＴＭＬ２０８内に、例えば、例示の＜ｄｉｖ  ｃｌａｓｓ＝“ｌｃｐｒｏｐ＿ｌｏｃａｔｉｏｎ”／＞および＜ｄｉｖ  ｃｌａｓｓ＝“ｌｃｐｒｏｐ＿ｄａｔｅ”＞タグ等の適切なＨＴＭＬタグにより、記載される。図２の例において、ＨＴＭＬタグ＜ｄｉｖ  ｃｌａｓｓ＝“ｌｃｄａｔａ＿ｃａｌｅｎｄａｒ”＞は、消費者が構造化データとして認識するカレンダイベント構造化データ型である。
【００１６】
図１に戻って、ウェブページの記述が構造化データを有する場合、構造化データのインジケータがページと共にユーザに対して提示される。このインジケータは典型的には、アイコン等の視覚的インジケータであるが、インジケータは代替として異なる形式を採り得る（例えば、インジケータは、可聴式のインジケータでありえる）。特定の実施形態において、アイコンまたは他の視覚的インジケータが、ページからの構造化データの表示の隣、または近くに表示される。例えば、構造化データがイベントである場合、アイコンが、そのイベントの日付および時間の表示の近くに表示される。特定の実施形態において、構造化データを有するページがユーザに対して表示されるときはいつも、インジケータがユーザに提示される。他の実施形態において、少なくとも閾値の時間の間カーソル制御デバイスを使用して、ユーザが（構造化データ自身内等に、ページの記述により定義されるような）ページ上の場所の近くでポインタを動かすときはいつも、インジケータがユーザに対して提示される。
【００１７】
１つまたは複数の実施形態において、ブラウザは、インジケータを異なる方法で提示することが可能であり、ページの記述自身（例えば、ページを記述するＨＴＭＬコード）を、インジケータを提示するために変える必要は無い。例えば、構造化データのインジケータとしてアイコンをユーザに表示する状況において、ブラウザは、アイコンをページ上にオーバーレイとして提示することが可能である。このように、ページのＨＴＭＬコードを、このアイコンを表示するために修正する必要が無い。アイコンの場所は、異なる実施形態において可変である。例えば、ブラウザは、ページを分析して、アイコンを配置させるブランクのスペース（例えば、テキスト、リンク、グラフィック、または画像が、ほとんど無いまたは全く無いスペース）を識別し得る。ブラウザは、アイコンを、構造化データに対応するデータの表示に近接して位置決めしようとし得る（例えば、構造化データがイベントを記述する場合、ブラウザは、アイコンをそのイベントの記述の表示に近接して位置決めしようとし得る）。別の例として、アイコンを、表示の特定の部分に常に表示させ得る（例えば、ページが表示されているウィンドウの右上隅）。さらに別の例として、アイコンの場所を、構造化データ自身によるなどして（例えば、構造化データは、アイコンが配置されるべき場所のインジケータを含み得る）、識別し得る。
【００１８】
構造化データのインジケータをユーザに対して提示することに加えて、１つまたは複数の実施形態において、構造化データの内容のプレビューをも、ユーザに対して選択的に表示することが可能である。このプレビューは、例えば、ページの表示に重なる別個のコールアウトまたはウィンドウ内にあり得、少なくとも構造化データの内容の何らかを表示することが可能である。このプレビューに表示する内容の量は可変であり、ページの設計者により決めることが可能であり（例えば、プレビューとして表示される内容は、構造化データ自身内に規定することが可能である）、または代替として、ブラウザにより（例えば、ブラウザが表示されるウィンドウの大きさに基づき、コールアウトの大きさ、内容の量等により）決めることが可能である。代替として、このプレビューは、全く表示させない、または、ユーザがインジケータを選択するまで表示させないことができる。
【００１９】
ウェブページが構造化データを有する場合、構造化データ自身をウェブページの一部としてユーザに対して表示することが可能であるが、表示することが必要なわけではない。例えば、構造化データが、種々のプロパティ（例えば、イベント（スピーチ等）の日付、時間、および地理的位置）を含む場合、ウェブページは、構造化データとは別個のＨＴＭＬコードを使用して、これらのプロパティをウェブページの種々の部分に表示し得る。そのような状況において、構造化データは、ウェブページのＨＴＭＬに含まれるが、ユーザに対して表示されない。代替として、構造化データを、ウェブページの一部としてユーザに対して表示することが可能であり、または、構造化データのプレビューを、上記で検討したように、表示することが可能である。
【００２０】
加えて、１つまたは複数の実施形態において、オプションをユーザに提示して、構造化データを収集および／またはサブスクライブする。構造化データを収集することは、構造化データのコピーを保持することでもあり、それによって構造化データは、コンピュータデバイス１０２がオフラインの時でも（例えば、コンピュータデバイス１０２がネットワーク１１２に接続されていない時、または、ウェブページが検索されたリモートデバイス１０４が、一時的に利用できない時）、コンピュータデバイス１０２のユーザにアクセス可能になる。１つまたは複数の実施形態において、構造化データのみが、収集オプションの選択に応答して記憶されるが、代替の実施形態においては、ウェブページ全体が記憶され得る。
【００２１】
構造化データをサブスクライブすることは、構造化データに対する更新を要求することでもある。ユーザが、構造化データへの変更をサブスクライブすると、ウェブデータプラットフォーム１０８は、規則的または不規則な間隔でウェブページにアクセスして、更新バージョンのウェブページを（または代替として、そのウェブページから単に構造化データを）取得する。この更新されたバージョンは典型的には、構造化データが最初に検索されたのと同じウェブページから受け取られるが、代替として、以下でさらに詳細に検討するように、別のウェブページであり得る。ウェブデータプラットフォームはまた、更新バージョンのウェブページを、先に記憶されたバージョンのウェブページと比較し、ウェブページへのおよび／またはウェブページの構造化データへの任意の変更を、ユーザに通知することが可能である。
【００２２】
収集オプションおよび／またはサブスクライブオプションは、ユーザに対して提示され、任意の様々な方法でユーザにより選択されることが可能である。例えば、ユーザは、スクリーン上のボタンを選択する、プルダウンメニューからオプションを選択する、データ入力フィールドにテキストを入力する、音声コマンドをマイクロフォンを介して入力する、等が可能である。１つまたは複数の実施形態において、収集オプションおよび／またはサブスクライブオプションは、構造化データを伴うプレビューウィンドウ内のスクリーン上のボタン（複数可）をユーザが選択することにより、選択されることが可能である。
【００２３】
加えて、ビヘイビアを採用して構造化データを使用することが可能である。ビヘイビアは、構造化データを使用して、典型的にはコンピュータデバイス１０２のユーザにサービスを提供する方法の記述である。ビヘイビアは、典型的には、ソフトウェア命令およびコンピュータデバイス１０２により実行されるデータまたはコードの形式で存在するが、ビヘイビアは代替として、異なる方法で（ファームウェアおよび／またはハードウェア内等で）実装され得る。各ビヘイビアは、１つまたは複数の構造化データ型と関連する。特定の構造化データ型と関連するビヘイビアは、そのデータ型をどのように使用するかを理解している。例えば、特定の構造化データが、イベントデータ型であり得、その特定のデータが、イベント（例えば、コンサート、映画、会議等）の日付、時間、および記述を含み得る。イベントデータ型に関連するカレンダビヘイビアは、どのように、イベントから特定の日付、時間、および記述を抽出し、カレンダプログラムと対話して、その特定の日付および時間の特定の記述を有するユーザのカレンダに、イベントを追加するか、を理解している。
【００２４】
１つまたは複数の実施形態において、個々のビヘイビアは、１つまたは複数のローカルアプリケーションおよび／または１つまたは複数のリモートアプリケーションとどのように対話するかを理解しているように、プログラムされるかまたは構成される。例えば、あるビヘイビアはマイクロソフト（登録商標）アウトルック（登録商標）のメッセージングおよびコラボレーションクライアントとどのように対話するかを理解している、別のビヘイビアはグーグル（商標）カレンダとどのように対話するかを理解している、別のビヘイビアは別のプロプライエタリカレンダプログラムとどのように対話するかを理解している、別のビヘイビアは電子フォトアルバムプログラムとどのように対話するかを理解している、などがあり得る。
【００２５】
１つまたは複数の実施形態において、ビヘイビアを、コンピュータデバイス１０２上にインストールすることが可能である。典型的には、デバイス１０２のユーザは、ビヘイビアをインストールするのを可能にする特定のウェブページ１１０へ、ウェブブラウザを使用してナビゲートすることが可能である。そのようなウェブページ１１０は、ダウンロードしてビヘイビアとして実行する命令およびデータを含み、または代替として、そのような命令およびデータへのリンクを含む。ビヘイビアをコンピュータデバイス１０２上にインストールすることは、ビヘイビアのための命令およびデータを、コンピュータデバイス１０２にダウンロードし、コンピュータデバイス１０２を必要に応じて構成して、コンピュータデバイス１０２が命令およびデータを実行できるようにすること、である。ビヘイビアをインストールするのを可能にするウェブページは、構造化データを含むことが可能であるが、含むことが必要なわけではない。
【００２６】
ビヘイビアをインストールする方法として、ウェブページへナビゲートすることに加えて、ビヘイビアは、コンピュータデバイス１０２上に他の方法でインストールすることが可能である。すなわち、ビヘイビアは、命令およびデータをコンピュータデバイスへ転送するために一般的に使用される、任意の様々な異なる技術を使用して、コンピュータデバイス１０２上にインストールすることが可能である。例えば、１つまたは複数のビヘイビアのための命令およびデータを含有するファイルは、着脱可能記憶装置（例えば、光ディスク、磁気ディスク、フラッシュメモリ装置等）、ネットワーク１０６、別のコンピュータデバイスへの有線または無線の接続などを介して、コンピュータデバイス１０２へ転送することが可能である。別の例として、１つまたは複数のビヘイビアが、コンピュータデバイス１０２にプリインストールされ得るため、ビヘイビアは、ユーザが最初にコンピュータデバイス１０２を使用するときにはすぐにユーザに利用可能である。代替として、または加えて、アプリケーションをコンピュータデバイス１０２上にインストールする時に、１つまたは複数のビヘイビアが、コンピュータデバイス１０２上にインストールされ得る、などである。
【００２７】
図３は、１つまたは複数の実施形態に従って、一例のウェブデータプラットフォーム３００を例示する。ウェブデータプラットフォーム３００は、コンピュータデバイス上に実装され、図１のコンピュータデバイス１０２上に実装されるウェブデータプラットフォーム１０８であり得る。プラットフォーム３００は典型的には、単一のコンピュータデバイス上に実装されるが、代替として、多数のコンピュータデバイスに実装することができる。
【００２８】
ウェブデータプラットフォーム３００は、ウェブデータを使用する。一般的に、ウェブデータとは典型的にはウェブ上で利用可能なデータをさす。ウェブデータは、例えば、ウェブページ、ウェブページの特定の部分、ウェブページのコレクションのインジケータ、コメント等を含むことが可能である。１つまたは複数の実施形態において、ウェブデータのフォーマットはＨＴＭＬフォーマットであるが、他のマークアップ言語のフォーマットまたは他のフォーマットを代替として使用できる。ウェブデータがプラットフォーム３００により取得された後、プラットフォーム３００は選択的に、ウェブデータのフォーマットを、記憶するために変えることが可能である。
【００２９】
ウェブデータプラットフォーム３００には、エンジン層３０２、データストア層３０４、およびＡＰＩ層３０６が含まれる。プラットフォーム３００は、ビヘイビアストア層３４０も含み得る。一般的に、エンジン層３０２は、ウェブデータ３０８を取得し、そのデータをデータストア層３０４に、記憶するために提供する。先に取得されたウェブデータ３０８への変更はまた、エンジン層３０２により検出され、データストア層３０４に対して識別され得る。データストア層３０４は、ウェブデータを記憶し、さらに、ウェブデータがその一部であるコレクションのインジケータを記憶する。データストア層３０４はまた、コメントをウェブデータまたはコレクションに記憶することが可能である。ＡＰＩ層３０６は、プラットフォームと同じコンピュータデバイス上で実行するローカルアプリケーション３１０だけでなく、他のコンピュータデバイスで実行するリモートアプリケーション３１２が、データストア層３０４からウェブデータにアクセスし使用することを可能にする、インタフェースを提供する。
【００３０】
作動中、ウェブデータ３０８が、データストア層３０４に追加される。ウェブデータ３０８は、様々な異なるソースから取得することが可能である。典型的には、少なくともいくつかのウェブデータ３０８は、最初にウェブブラウザにより検索される。ウェブブラウザは、ＡＰＩ層３０６を介してデータストア層３０４と対話するローカルアプリケーション３１０であり得る。代替として、ウェブブラウザは、エンジン層３０２を介してウェブデータをデータストア層３０４へ転送し得る。ウェブブラウザを使用して、ユーザは特定のウェブページを閲覧するかまたは特定のウェブページへナビゲートすることが可能であり、その結果、ウェブブラウザがユーザにそのウェブページを表示する。そして、ユーザは、そのウェブページを自分のデータストアに追加させるよう要求することができる。この要求に応答して、ウェブページは、データストア層３０４に追加されたウェブデータになる。ウェブページをユーザのデータストアに追加させる要求は、様々な異なる形式をとることが可能であり、例えば、ウェブページを、お気に入りのウェブページまたはブックマークのウェブページのユーザのリストに追加させる要求、ウェブページを収集する、および／または、ウェブページ上の構造化データをサブスクライブする要求、オフラインでの使用のためにウェブページのコピーを記憶する要求等である。代替として、ユーザが、ウェブブラウザを使用して特定のウェブページをナビゲートするとき、そのウェブページは、自動的にデータストア層３０４に追加され得る。
【００３１】
加えて、少なくともいくつかのウェブデータ３０８は典型的には、サブスクライブされた更新済みのウェブページを検索するプロセスの間に取得される。そのようなウェブデータ３０８は、エンジン層３０２により検索され、データストア層３０４に提供される。代替として、ウェブデータ３０８は、他の方法で検索することが可能であり、例えば、着脱可能記憶装置（例えば、光ディスク、磁気ディスク、フラッシュメモリ装置等）を介して、図１のネットワーク１０６を介して、別のコンピュータデバイスへの無線および有線の接続を介するなどして、コンピュータデバイス１０２へ転送されたウェブデータを含有するファイルを受け取ることなどがある。別の例として、ウェブデータが、コンピュータデバイス１０２のインストールまたは作成のプロセスの一部として、データストア３０４に含まれ得るため、ウェブデータは、ユーザが最初にコンピュータデバイス１０２を使用するときにすぐに利用可能である。さらに別の例として、アプリケーション３１０がコンピュータデバイス１０２等にインストールされるときに、ウェブデータが、データストア層３０４に含まれ得る。さらに別の例として、アプリケーションが、構造化データ等のウェブデータを作成し、そのウェブデータをデータストア層３０４に保存し得る。そのようなウェブデータは、ファイルをコンバートする、データを一から生成する、等の種々の方法で、作成することが可能である。
【００３２】
データストア層３０４は、ウェブデータを記憶する。データストア層３０４は、１つまたは複数のアイテム３１４、１つまたは複数のコメント３１６、および１つまたは複数のコレクション３１８を含む。データストア層は、以下でさらに詳細に検討するように、ウェブデータ、および選択的に、関連するデータを記憶する。データストレージは、種々の場所、例えば、ローカル記憶装置上（例えば、プラットフォーム３００を実装するものと同じコンピュータデバイスの一部）、リモート記憶装置上（例えば、プラットフォーム３００を実装するデバイスから離れた別のコンピュータデバイスの一部）、着脱可能記憶装置上（例えば、フラッシュメモリ装置、ディスク等）などに、実装することが可能である。
【００３３】
各アイテム３１４は、ウェブページへのリンクを表し、従って、ウェブページに対応するか、または関連する。アイテム３１４は、ウェブページのデータ（例えば、ページのＨＴＭＬコード）を含むことが可能であり、または代替として、ウェブページのいくつかのまたは全てのデータが置かれるデータストア層３０４内の場所へのリンクを含むことが可能である。あるウェブページは、構造化データを含むことが可能であり、他のウェブページは、構造化データを含まないこともある。構造化データを含むウェブページに対して、対応するアイテム３１４が選択的に構造化データを識別して、構造化データが簡単に検索されるようにすることが可能である。ウェブページのデータに加えて、リンクを記述する種々のメタデータもまた、アイテム３１４に含まれる。表Ｉに、１つまたは複数の実施形態における各アイテム３１４に保持される一例のメタデータを記載する。
【００３４】
【表１】
2010521721.tif 000003
【００３５】
各コメント３１６は、アイテム３１４と関連し、アイテム３１４により表されるウェブページが取得されるのと同じソースから取得されることが可能である。各コメント３１６は、単一のコメント、または代替として、アイテム３１４に関連するコメントのコレクションであり得る。各コメントは、アイテム３１４により表されるウェブページを記述する種々の情報を含むが、典型的にはウェブページの一部としての表示はされない。
【００３６】
各コレクション３１８は、まとめてグループ化された１つまたは複数のアイテム３１４を識別する。グループ化は典型的には、ウェブブラウザが実行するが、代替として、別のアプリケーション３１０が実行し得る。１つまたは複数の実施形態において、グループ化は、ウェブページにリンクされた内の構造化データのデータ型に従って、自動的にアサインされる。そのような実施形態において、同じデータ型の構造化データを有する全てのウェブページが、同じコレクションにまとめてグループ化される。加えて、または代替として、グループ化はユーザによってアサインされる。そのような実施形態において、ユーザは、コレクションの名前または他の識別子を識別して、ユーザに希望に従って、特定のアイテムを特定のコレクションにアサインすることが、可能である。このアサインは、ウェブページが取得されるときに実行される、および／または他のとき（例えば、ウェブブラウザまたは別のアプリケーション３１０を介して）、実行することが可能である。
【００３７】
加えて、１つまたは複数のアプリケーション３１０および／または３１２は、データストア層３０４に登録されて、データストア層３０４への変更が通知されることが可能である。データストア層３０４は、そのようなアプリケーション３１０および／または３１２に、アイテム３１４、コメント３１６、および／またはコレクション３１８への変更を通知する。１つまたは複数の実施形態において、アプリケーション３１０および／または３１２は、データストア層３０４に登録されて、アイテム３１４への変更の通知を受け取ることが可能である。データストア層３０４は、どのアプリケーション３１０および／または３１２が登録されて通知を受け取るのかのレコードを保持し、アイテム３１４への変更があるたびに、それらのアプリケーション３１０および／または３１２のそれぞれに通知する。登録されたアプリケーションには典型的には、アイテムの任意のメタデータへの変更、アイテムの任意の追加、アイテムの任意の削除、およびアイテムに追加される任意の新しいコメントを含む、アイテム３１４への任意の変更が通知される。代替として、アプリケーションは、登録されて、アイテム３１４の特定の部分の変更（例えば、構造化データまたはフラグ等への変更のみ）、または、特定のアイテム３１４への変更のみの通知を受け取り得る。加えて、または代替として、アプリケーションはまた、コレクション３１８への変更、コメント３１６への変更、特定のデータ型の構造化データを有するアイテム３１４への変更等の内の１つまたは複数のために登録され得る。
【００３８】
加えて、１つまたは複数の実施形態において、プラットフォーム３００がその上で実行するオペレーティングシステムのイベント通知コンポーネントが活用されて、登録および通知を支援する。そのような実施形態において、アプリケーション３１０および／または３１２がオペレーティングシステムのイベント通知コンポーネントに登録されて、アプリケーション３１０および／または３１２に対して、それらが登録されたイベントがイベント通知コンポーネントにより受け取られるたびに、イベント通知コンポーネントにより通知させることが可能である。アプリケーション３１０および／または３１２は、アイテム変更イベントのために登録され、データストア層３０４は、イベント通知コンポーネントに任意のアイテム変更を通知する。オペレーティングシステムのイベント通知コンポーネントは、次に、登録されたアプリケーション３１０および／または３１２に対してイベントを発生させて（または、通知を通信させて）、それらにアイテム変更を通知する。 
【００３９】
プラットフォーム３００はまた、選択的に、１つまたは複数のビヘイビア３４２が記憶されるビヘイビアストア層３４０を含む。各ビヘイビア３４２は、上記で検討したように、構造化データを使用して、典型的には、プラットフォーム３００を実装するコンピュータデバイスのユーザにサービスを提供する方法の記述である。ビヘイビアが、プラットフォーム３００を実装するコンピュータデバイス上にインストールされるとき、ビヘイビアがどの構造化データ型と関連するのかについてのレコードが保持される。このレコードは、ビヘイビアストア層３４０内、データストア層３０４内、または代替として、何らかの別のストア層（図示せず）内に保持することが可能である。
【００４０】
エンジン層３０２は、ウェブデータ３０８を取得し、そのデータを、記憶するためにデータストア層３０４に提供する。先に取得されたウェブデータ３０８への変更はまた、エンジン層３０２により検出されることが可能であり、変更されたウェブデータはデータストア層３０４に記憶される。加えて、エンジン層３０２は、データストア層３０４および／またはプラットフォーム３００の他のコンポーネントに、変更を通知することが可能である。ウェブページへの変更を識別して、変更されたバージョンのウェブページを記憶する、このプロセスは、ウェブページを更新することでもある。
【００４１】
エンジン層３０２は、ダウンロードエンジン３２２、サニタイズモジュール３２４、およびマージ処理モジュール３２６を含む。ダウンロードエンジン３２２は、アイテム３１４により識別された、更新されたバージョンのウェブページを取得する。ダウンロードエンジン３２２は典型的には、識別されたウェブページをダウンロードするが、代替として、ウェブページの一部のみ（例えば、ウェブページ上の構造化データのみ）が更新される場合、ウェブページのその部分のみが検索される必要がある。ダウンロードエンジン３２２は、アイテム３１４により表される全てのウェブページの、更新されたバージョンを取得し得るか、または代替として、ユーザにより（例えば、ウェブページ上の構造化データをサブスクライブすることにより、または、更新を要求することにより）更新が要求されたウェブページのみの、更新されたバージョンを取得し得る。特定のウェブページに対して更新が要求されたかどうかのインジケータを、（例えば、表Ｉを参照して上記で検討したフラグの１つとして）対応するアイテム３１４のメタデータ内に保持することが可能である。各アイテム３１４に対して、ダウンロードエンジン３２２が、表された、更新されたバージョンのウェブページを取得するが、アイテム３１４は、ウェブページへの更新が検索されるべき場所を識別する（例えば、上記で検討したソースＵＲＬとして）。
【００４２】
一般的に、新しいバージョンのウェブページは、ダウンロードエンジン３２２によりウェブデータ３０８として受け取られ、サニタイズモジュール３２４によりサニタイズされて任意の潜在的に悪意のある内容を除去する。マージ処理モジュール３２６が次に、サニタイズされたウェブページを、データストア層３０４に先に記憶されたバージョンと比較して、新規に受け取られたバージョンのウェブページと、先に記憶されたバージョンのウェブページとの間に、任意の差異が存在するかどうかを判断する。ウェブページに任意の変更がある場合、マージ処理モジュール３２６は、新規に受け取られたウェブページをデータストア層３０４に記憶し、データストア層３０４および／またはＡＰＩ層３０６にウェブページが変更されたことを通知する。１つまたは複数の実施形態において、マージ処理モジュール３２６は、層３０４および／または層３０６にウェブページへの任意の変更を通知し、一方、他の実施形態において、マージ処理モジュール３２６は、層３０４および／または層３０６にウェブページ上の構造化データへの変更のみを通知する。さらに他の実施形態において、マージ処理モジュール３２６は、層３０４および／または層３０６にウェブページへの任意の変更を通知し、さらに層３０４および／または層３０６に構造化データに対して任意の変更があるかどうかを通知する。
【００４３】
アイテムがどの程度頻繁に更新されるかは、可変である。特定の実施形態において、アイテム自身が、どの程度頻繁に更新されるかを識別するプロパティを含む（例えば、表Ｉを参照して上記で検討したフラグの１つ）。他の実施形態において、他のメカニズムを使用して、頻度を決定するが、例えば、ユーザがどの程度頻繁に更新させたいかをユーザが入力し得る、特定の頻度が構造化データ型と関連し得る、などである。更新は、規則的な間隔（例えば、１日１回、１時間に１回、５分に１回、等）で、または、不規則な間隔（例えば、アイテムで識別された特定の時間および日付に至るまでの日の中の１日に１回、アイテムで識別されたのと同じ日に１時間に１回、ならびに、アイテムで識別されたのと同じ日に５分に１回、およびアイテムで識別された時間に先行する直前の１時間中の５分に１回）であり得る。
【００４４】
サニタイズモジュール３２４は、ダウンロードエンジン３２２により検索されたウェブページを採り上げ、ウェブページ上の任意の潜在的に悪意のある内容を識別する。サニタイズモジュール３２４は、任意のそのような識別された内容を除去し、マージ処理モジュール３２６に対して利用可能にされた、サニタイズされたウェブページとなる。サニタイズモジュール３２４は、特定のタグをチェックする、特定のアルゴリズムを使用する、特定のパターンを探す、などの任意の様々な従来の方法で作動して、潜在的に悪意のある内容を検出することが可能である。
【００４５】
マージ処理モジュール３２６は、サニタイズされたウェブページを、データストア層３０４に先に記憶されたウェブページと比較する。この比較に基づき、ウェブページへの任意の変更があるかどうかについてチェックされる。ウェブページへの変更は、ウェブページへの何らかのデータまたは他の内容もしくはコードの追加、ウェブページからの何らかのデータまたは他の内容もしくはコードの削除、および／または、ウェブページ内の何らかのデータまたは他の内容もしくはコードの修正であり得る。代替として、マージ処理モジュール３２６は、サニタイズされたウェブページの一部（例えば、サニタイズされたウェブページ内の構造化データ）を、データストア層３０４に先に記憶されたウェブページの一部（例えば、ウェブページ内の構造化データ）を比較するだけでも良い。
【００４６】
ウェブページに何の変更も無い場合、マージ処理モジュール３２６は、この時点でこのアイテムに対してさらに動作をとる必要が無い。代替として、マージ処理モジュール３２６は、アイテム３１４のメタデータを更新して、更新がなされたがウェブページへの変更が検出されなかった旨を反映させても良い。
【００４７】
しかし、ウェブページへの変更がある場合、データストア層３０４に先に記憶されたウェブページが、新規に受け取られたウェブページと交換される。古いバージョンのウェブページと新しいバージョンのウェブページとのこの交換は、マージ処理モジュール３２６により実行され得、または代替として、データストア層３０４の制御コンポーネントにより実行され得る。アイテム３１４が変更されると、データストア層３０４にはエンジン層３０２により変更が通知される。１つまたは複数の実施形態において、エンジン層３０２にアクセス可能であり、エンジン層３０２がデータストア層３０４内にウェブページを記憶するのを可能にし、エンジン層３０２がデータストア層３０４にウェブページへの任意の変更を通知するのを可能にするインタフェースを、データストア層３０４が提供する。
【００４８】
ウェブページへの変更は典型的には、上記で検討したように、エンジン層３０２により識別される。加えて、コメントへの変更は典型的には、コメントがダウンロードエンジン３２２によりウェブページと共に取得されるので、類似の方法で識別される。しかし、コレクション３１８またはビヘイビア３２０への変更は典型的には、アプリケーション３１０が行う。そのような変更は、変更がなされるときにデータストア層により検出され、登録されたアプリケーションには、上記で検討したように、ウェブページへの変更の通知に類似するそのような変更が通知される。例えば、アプリケーション３１０が、コレクションに対応するオブジェクトの方法を呼び出すことにより、コレクション３１８を変更すると仮定する（オブジェクトモデルについては以下でさらに詳細に検討する）。この呼び出された方法の処理の一部は、データストア層３０４にコレクション３１８への変更を通知することであり、典型的には、特定のコレクション３１８およびなされた変更を識別する。
【００４９】
ＡＰＩ層３０６は、プラットフォームと同じコンピュータデバイス上で実行するローカルアプリケーション３１０とだけでなく、他のコンピュータデバイス上で実行するリモートアプリケーション３１２が、データストア層３０４からウェブデータにアクセスすることを可能にする、インタフェースを提供する。ＡＰＩ層３０６は、オブジェクトモデル３３０、および同期化プロトコルモジュール３３２を含む。ローカルアプリケーション３１０は、ウェブブラウザアプリケーションだけでなく、ウェブブラウザアプリケーションに追加される任意のエクステンションを含む。エクステンションは、ウェブブラウザアプリケーションに、別のアプリケーション３１０もしくは３１２により、またはウェブページにより追加されて、ウェブブラウザの機能を拡張することが可能である。加えて、ローカルアプリケーション３１０は、ワードプロセシングアプリケーション、スプレッドシートアプリケーション、ゲーム、データベース等の、任意の様々なタイプのアプリケーションであり得る。同様に、リモートアプリケーション３１２は、ワードプロセシングアプリケーション、マッピングまたは方向アプリケーション、ゲーム等の任意の様々なタイプのアプリケーションであり得る。
【００５０】
オブジェクトモデル３３０は、データストア層３０４内のデータに基づくオブジェクトモデルである。オブジェクトモデル３３０は、データストア層３０４のアイテム３１４、コメント３１６、およびコレクション３１８を表す異なるオブジェクトを含む。これらのオブジェクトは、アイテム３１４、コメント３１６、およびコレクション３１８として記憶されるデータに対応する、種々のプロパティを含む。例えば、アイテム３１４を表すオブジェクトは、ウェブページのデータ（例えば、ページのＨＴＭＬコード）を有するプロパティの他に、表Ｉを参照して上記で検討したメタデータの各タイプの追加のプロパティを含むことが可能である。
【００５１】
加えて、ウェブページが構造化データを含む実施形態において、構造化データ自身が、アイテムのオブジェクトの異なるプロパティであり得る。例えば、ウェブページが、構造化データとして名前および電話番号を有する接触構造化データ型を含むと仮定する。このウェブページは、アイテム３１４として記憶され、オブジェクトモデル３３０内の対応するオブジェクトが、接触の名前および接触の電話番号であるプロパティを含む。
【００５２】
プロパティに加えて、オブジェクトモデル３３０内の各オブジェクトは、アプリケーション３１０がオブジェクトと対話するのを可能にする、異なるメソッドを含むことが可能である。そのようなメソッドの例には、作成メソッド、読込メソッド、編集メソッド、削除メソッド、列挙メソッドが含まれる。作成メソッドは、アプリケーション３１０によるオブジェクトの作成およびオブジェクトへのデータの投入と、対応するデータのデータストア層３０４への記憶を、可能にする。読込メソッドは、アプリケーション３１０によるオブジェクトのプロパティの検索を、可能にする。編集メソッドは、アプリケーション３１０によるオブジェクトのプロパティの変更と、そのような変更のデータストア層３０４への記憶を、可能にする。削除メソッドは、オブジェクトの削除と、データストア層３０４からの対応するデータの削除を、可能にする。列挙メソッドは、アプリケーション３１０によるオブジェクトのメソッドおよび／またはプロパティの識別を可能にする。
【００５３】
加えて、ＡＰＩ層３０６内のビヘイビアオブジェクトモデルはまた、ビヘイビア３４２を表す異なるオブジェクトを含み、アプリケーション３１０がオブジェクトと対話することを可能にする。このオブジェクトモデルは、オブジェクトモデル３３０の一部、または代替として、層３０６内の別のオブジェクトモデルの一部として含まれ得る。ビヘイビア３４２を表すオブジェクトは、ビヘイビア３４２に対応する種々のプロパティを含む。例えば、特定のビヘイビア３４２を表すオブジェクトは、ビヘイビアを実施するために実行されるコードが記憶されている（または代替として、コードがオブジェクトの一部として含まれ得る）場所の識別子を有するプロパティを含むことが可能である。オブジェクトはまた、ビヘイビア３０２に関するメタデータ、例えば、ビヘイビアのソースの識別子、ビヘイビアにより提示されるサービスの識別子、ビヘイビアに関連する構造化データ型の識別子等を、含むことが可能である。
【００５４】
ビヘイビアオブジェクトモデル内の各オブジェクトはまた、アプリケーション３１０がオブジェクトと対話することを可能にする、異なるメソッドを含む。そのようなメソッドの例には、呼出メソッド、タイプメソッドによる列挙ビヘイビア、読込メソッド、追加メソッド、および削除メソッド、が含まれる。呼出メソッドは、アプリケーション３１０が、オブジェクトにより表されるビヘイビアを呼び出すことを可能にする。オブジェクトにより表されるビヘイビアのコードは、オブジェクトにより表されるビヘイビアが呼び出されると、実行される。読込メソッドは、アプリケーション３１０によるオブジェクトのプロパティの検索を、可能にする。追加メソッドは、ビヘイビアストア３４０へのビヘイビアの追加と、そのビヘイビアを表す、オブジェクトのビヘイビアオブジェクトモデルへの追加を、可能にする。削除メソッドは、ビヘイビアストア３４０からのビヘイビアの削除と、そのビヘイビアを表す、オブジェクトのビヘイビアオブジェクトモデルからの削除を、可能にする。
【００５５】
タイプメソッドによる列挙ビヘイビアは、特定の構造化データ型に関連する異なるビヘイビアを、アプリケーション３１０に対して識別することを可能にする。この列挙は、異なる方法で行うことが可能であり、例えば、この情報を保持するビヘイビアオブジェクトモデル内に追加のオブジェクトを有することにより（この追加のオブジェクトのメソッドは、アプリケーション３１０により直接呼び出すことが可能であり、または代替として、アプリケーション３１０により呼び出された別のオブジェクトのメソッドにより呼び出すことが可能である）、ビヘイビアストア層３４０に記憶される関連性のレコード（例えば、ビヘイビアが追加されるたびに、または関連性が変わるたびに、更新される）にアクセスすることにより、ビヘイビアオブジェクトモデル内のオブジェクトに、その関連する構造化データ型についてお互いにクエリを行わせることなどにより行うことが可能である。列挙ビヘイビアメソッドは、ビヘイビアストア層３４０内にある異なるビヘイビア３４２を、アプリケーション３１０に対して識別することを可能にする。この列挙は、異なる方法で行うことが可能であり、例えば、この情報を保持するビヘイビアオブジェクトモデル内に追加のオブジェクトを有することにより（この追加のオブジェクトのメソッドは、アプリケーション３１０により直接呼び出すことが可能であり、または代替として、アプリケーション３１０により呼び出された別のオブジェクトのメソッドにより呼び出すことが可能である）、ビヘイビアストア層３４０に記憶されるビヘイビアのレコード（例えば、ビヘイビアが追加または削除されるたびに、更新される）にアクセスすることにより、ビヘイビアオブジェクトモデル内のオブジェクトに、それらが表すビヘイビアについてお互いにクエリを行わせることなどにより行うことができる。
【００５６】
同期化プロトコルモジュール３３２は、リモートアプリケーション３１２が、データストア層３０４内のデータと同期されるデータを保持することを可能にする。１つまたは複数の実施形態において、イベントの通知を受け取ることを要望する各リモートアプリケーション３１２は、この要望の表示子をモジュール３３２へ送る。加えて、リモートアプリケーション３１２は、データストア層３０４への変更に対する通知のために登録され得、または代替として、モジュール３３２が、アプリケーション３１２の代わりに通知のために登録され得る。アプリケーション３１２またはモジュール３３２のどちらが通知のために登録されるかに関わらず、同期化プロトコルモジュール３３２は通知を受け取る。モジュール３３２は、リモートアプリケーション３１２と次に通信するときまで通知のレコードを保持し、その時点で、モジュール３３２は、受け取って保持していた全ての通知をリモートアプリケーション３１２に送る。モジュール３３２はまた、対応する変更されたデータをデータストア層３０４からリモートアプリケーション３１２へ送り得、または代替として、リモートアプリケーション３１２がデータを要求するのを待ち得る。
【００５７】
リモートアプリケーション３１２と同期化モジュール３３２との間の通信は、アプリケーション３１２および／またはモジュール３３２により開始することが可能である。１つまたは複数の実施形態において、アプリケーション３１２は、モジュール３３２がアプリケーション３１２の代わりに受け取った通知を求める要求を（例えば、図１のネットワーク１０６上を）モジュール３３２に送ることにより、通信を開始する。他の実施形態において、アプリケーション３１２は、どのようにアプリケーション３１２に通知を通信するかを示す表示子をモジュール３３２に提供し、モジュール３３２は、この表示子を保持する。この表示子は、例えば、アプリケーション３１２のための通知が受け取られるときにアクセスされるＵＲＬであり得る。アプリケーション３１２の代わりにモジュール３３２により受け取られた通知は、モジュール３３２に与えられた表示子により定義される全ての方法（および全ての頻度）で、アプリケーション３１２に通信される。
【００５８】
データストア層３０４への変更をリモートアプリケーション３１２へ通信することにより、リモートアプリケーション３１２が、データストア層３０４内の自身で所有するウェブデータのコピーを維持すること、さらに、リモートアプリケーション３１２が、ウェブデータストア層３０４内のものと同期される、自身のウェブデータのコピーを維持すること、が可能になる。リモートアプリケーション３１２が最初に、ウェブデータへの変更の通知を取得することを所望すると、リモートアプリケーション３１２はまだ何もデータを受け取っていないため、データストア層３０４内の全てのウェブデータが変更されたものとしてみなされ得ることに留意されたい。そのような状況において、データストア層３０４内の現在のウェブデータが典型的には、リモートアプリケーション３１２に通信される。
【００５９】
加えて、１つまたは複数の実施形態において、ウェブページは、ウェブブラウザアプリケーション３１０を介してデータストア層３０４へのアクセスを得ることができる。これらの実施形態において、オブジェクトモデル３３０は、ウェブページを表示するウェブブラウザアプリケーション３１０がオブジェクトモデル３３０にアクセスすることを可能にする。このようにして、ウェブページは、アプリケーション３１０としてアプリケーションをインストールせずに、データストア層３０４内のデータ、およびビヘイビアストア層３４０内のビヘイビアに、アクセスしてそれを利用することが可能である。
【００６０】
加えて、ＡＰＩ層３０６は、データストア層３０４および／またはビヘイビアストア層３４０内の、ＡＰＩおよび／または異なるウェブデータへのアクセスを制御することが可能である。そのようなアクセスを制御することにより、異なるウェブページおよび／またはウェブサイトを、異なる機能性および／またはウェブデータに制限することが可能である。例として、ＡＰＩは、読み込み機能性および書き込み機能性等の、異なる機能性に分離され得る。異なるウェブページおよび／またはウェブサイトは、書き込み機能性へのアクセスが許可されることが可能で、一方、他のものは読み込み機能性のみへのアクセスが許可される。別の例として、特定のウェブページおよび／またはウェブサイトは、特定の１つまたは複数のアイテム３１４、特定の１つまたは複数のコレクション３１８等のみへのアクセスに制限され得る。特定のウェブページおよび／またはウェブサイトに許可された特定のアクセスは、プラットフォーム３００を実装するコンピュータデバイスのユーザにより識別され得、それによって、ユーザが自分のウェブデータへのアクセスを制御することを可能にする。
【００６１】
さらに、１つまたは複数の実施形態において、ＡＰＩ層３０６は、ユーザが特定のウェブデータを選択することを可能にするユーザインタフェース制御を表示する、ウェブデータピッカ制御モジュールを含む。ユーザインタフェース制御は、データストア層３０４内の種々のウェブデータの少なくともいくつかの識別子を表示し、ローカルアプリケーション３１０のユーザが、それに対して動作を実行すべき特定のウェブデータを選択することを可能にする。例えば、ローカルアプリケーション３１０がコレクションについての情報を表示している場合、アプリケーション３１０は、データストア層３０４からコレクションの識別子を一覧にする制御をユーザに対して表示することが可能である。これにより、ユーザは、表示させたいコレクション（複数可）を容易に選択できるようになる。別の例として、ローカルアプリケーション３１０が、特定の構造化データ型（例えば、カレンダイベント、位置等）についての情報を表示している場合、アプリケーション３１０は、データストア層３０４からその型の異なる構造化データの識別子を一覧にする制御をユーザに対して教示することが可能である。これにより、ユーザは、表示させたい構造化データ（複数可）を容易に選択できるようになる。ウェブデータに対して動作させるという要求をアプリケーションが受け取ると、ユーザインタフェース制御が表示される。ユーザは、スクリーン上のボタンを選択する、プルダウンメニューからアイテムを選択する、アプリケーションの実行を要求する、等の任意の様々な方法で、ウェブデータに対して動作させるという要求を行うことが可能である。
【００６２】
図４は、１つまたは複数の実施形態に従って、ユーザインタフェース制御を表示する一例のユーザインタフェースを例示する。図４において、タイトル４０２および種々のテキスト４０４および画像４０６を含むアプリケーションウィンドウ４００が例示される。ウィンドウ４００はまた、ユーザが選択することが可能な異なるウェブデータを一覧にするユーザインタフェース制御４０８を含む。例示によると、コントロール４０８は、アイテムのコレクションを表示するが、代替としてアイテム自身または他のウェブデータを表示することが可能であることを理解されたい。インタフェース制御４０８内に表示される特定のウェブデータは、ウィンドウ４００を生成するアプリケーションにより提供される特定の機能性に基づき、可変である。
【００６３】
ユーザは、様々な異なる方法で、コントロール４０８から特定のコレクションを選択することが可能である。１つまたは複数の実施形態において、ユーザは、ポインタまたはカーソル４１０をコントロール４０８上の識別子上でナビゲートし、カーソル制御デバイス（例えば、マウス）上のボタンをクリックして、識別子を選択する。そして、識別されたコレクションは、アプリケーションが実行されて作動する全ての方法で、アプリケーションにより、動作する。
【００６４】
図５は、１つまたは複数の実施形態に従って、データストア層からウェブデータにアクセスするための、一例のプロセス５００を例示するフローチャートである。プロセス５００は、図１のコンピュータデバイス１０２等のコンピュータデバイスにより実行され、ソフトウェア、ファームウェア、ハードウェア、またはその組合せにおいて実装することが可能である。特定の実施形態において、プロセス５００は、図３のウェブデータプラットフォーム３００に実装される。
【００６５】
最初に、ウェブデータが取得される（動作５０２）。ウェブデータは、例えば、ウェブページ、ウェブページのコレクションの表示、ビヘイビア、コメント等のことである。ウェブデータは、様々な異なる方法で取得することが可能である。例えば、ウェブデータは、ユーザがウェブブラウザを使用してウェブページへナビゲートすることにより、インターネットまたは他のネットワーク上でファイルを受け取ることにより、着脱可能記憶装置からファイルを受け取ることにより、などして取得することが可能である。加えて、コメント、およびコレクションの表示等の、何らかのウェブデータは、テキスト、キャラクタ、アイコンの選択、またはプロセス５００を実装するデバイスのユーザからの、他の（例えば、可聴式の）入力を受け取ることにより、取得することが可能である。
【００６６】
取得されたウェブデータは、ウェブデータストア（動作５０４）に記憶される。このウェブデータストアは、例えば、図３のデータストア層３０４である。１つまたは複数の実施形態において、動作５０２において取得された任意のウェブデータは、動作５０４において記憶される。他の実施形態において、ウェブデータを記憶させるというユーザからの要求が受け取られ、要求されたデータのみが記憶される。
【００６７】
ウェブデータストア内のウェブデータを表すオブジェクトモデルが生成される（動作５０６）。動作５０６において生成されるこのオブジェクトモデルは、多数のオブジェクトを含み、それぞれがウェブデータストアからのウェブデータを表す（例えば、それぞれがアイテム、コレクション、またはコメントを表す）。１つまたは複数の実施形態において、動作５０６において生成されるオブジェクトモデルは、図３のオブジェクトモデル３３０である。１つまたは複数の実施形態において、ビヘイビアストアからのビヘイビアを表すオブジェクトモデルがまた、動作５０６において生成される。
【００６８】
オブジェクトモデルを有するため、要求をアプリケーションから受け取り、ウェブデータに対して動作を実行することが可能である（動作５０８）。１つまたは複数の実施形態において、この要求は、プロセス５００を実装しているものと同じコンピュータデバイス上で実行するローカルアプリケーションからの要求である。リモートアプリケーションは、上記で検討したように、ウェブデータへの変更が通知され得、自身が所有するウェブデータのコピーを保持することが可能であり、そのようなリモートアプリケーションが、自身が所有するウェブデータのコピーにアクセスしてそのデータに対して動作を実行することを可能にする。
【００６９】
ウェブデータに対して実行される動作は、任意の様々な動作であり得、典型的には、オブジェクトモデル内のオブジェクトによりメソッドとして顕在化される動作である。これには、例えば、コレクション、アイテム、コメント、およびビヘイビアを表すオブジェクトにより顕在化されるメソッドである。要求は、オブジェクトモデル内のオブジェクトの適切なメソッドを呼び出すアプリケーションにより受け取られる。
【００７０】
要求された動作が実行され（動作５１０）、プロセス５００は、動作５０６に戻る。動作が、オブジェクトモデルに対して任意の変更を及ぼした場合は、その変更は本質的に、その変更を組み込む新規に生成されたオブジェクトモデルになるということになる。しかし、変更されなかったオブジェクトモデルの部分は再生する必要が無いということを理解されたい。
【００７１】
アプリケーションから要求をうけとることに加えて、ウェブデータへの更新もまた、受け取られる（動作５１２）。これらの更新は、先に記憶されたウェブデータを新しいバージョンのウェブデータと比較した結果による、ウェブデータへの変更である。典型的には、これらの更新は、図３のエンジン層３０２から受け取られる。受け取られた更新済みのデータは、ウェブデータストアに記憶され（５１４）、この変更されたデータを表す新しいオブジェクトモデルが生成される（動作５０６）。変更されなかったオブジェクトモデルの部分は動作５０６において再生する必要が無いということを理解されたい。この変更されたデータの通知はまた、上記で検討したように、１つまたは複数のアプリケーションへ通信されることが可能である。
【００７２】
図６は、１つまたは複数の実施形態に従って、データストア層内のウェブデータを更新するための、一例のプロセス６００を例示するフローチャートである。プロセス６００は、図１のコンピュータデバイス１０２等のコンピュータデバイスにより実行され、ソフトウェア、ファームウェア、ハードウェア、またはその組合せにおいて実装することが可能である。特定の実施形態において、プロセス６００は、図３のウェブデータプラットフォーム３００に実装される。
【００７３】
プロセス６００は、各ウェブページが更新のためにチェックされるたびに、各ウェブページに対して実行される。ウェブページ をどの程度頻繁に更新するかは可変である。特定の実施形態において、データストア層に記憶されるウェブページに対応するアイテムは、  ウェブページ をどの程度頻繁に更新するかを識別するメタデータを含む。他の実施形態において、他のメカニズムが使用されて頻度を決定するが、例えば、ユーザがどの程度頻繁に更新を起こしたいかを入力する、特定の頻度が異なるウェブページまたは構造化データの特定の型を有するウェブページに関連し得る、などである。 チェックは、規則的な間隔（例えば、１日１回、１時間に１回、５分に１回、等）で、または、時間と共に可変の不規則な間隔であり得る。 
【００７４】
最初に、更新に関してチェックされる新しいバージョンのウェブページが検索される（動作６０２）。新しいバージョンが検索される場所が、例えば、データストア層に記憶されたウェブページに対応するアイテムのメタデータ内で識別される。
【００７５】
新しいバージョンのウェブページは次に、データストア内の先に記憶されたバージョンのウェブページと比較される（動作６０４）。比較を考慮して、ウェブページへの任意の変更があるかどうかについてチェックを行う（動作６０６）。ウェブページへの変更は、ウェブページへの何らかのデータの追加、ウェブページからの何らかのデータの削除、および／または、ウェブページ内のデータの修正であり得る。プロセス６００は、ウェブページへの変更に関するチェックを参照して検討したが、代替として、プロセス６００においては、ウェブページの一部のみ（例えば、ウェブページ上の構造化データ）への変更をチェックし、更新しても良い。
【００７６】
構造化データへの変更が無い場合、プロセス６００は選択的に、データストア層内のウェブページに対応するアイテムのメタデータに、更新チェックの日付および時間を記録する（動作６０８）。この日付および時間は、動作６０２において新しいバージョンのウェブページが検索された日付および時間、動作６０４において比較がなされた日付および時間、などであり得る。代替として、動作６０８は、実行されなくても良い。そして、動作６０８が実行されるかどうかに関わらず、この時のこのウェブページの更新のプロセス６００は、完了する（動作６１０）。加えて、データストア層は、ウェブデータへの変更の通知のために登録された任意のアプリケーションに、ウェブページへの変更を通知する（動作６１６）。
【００７７】
動作６０６に戻って、ウェブページへの変更があるが場合は、データストア内のウェブページを、動作６０２において検索されたウェブページのバージョンと交換する（動作６１２）。データストア層にはまた、構造化データへの変更が通知される（動作６１４）。データストア層には、明確な変更のコマンドまたはインジケータにより変更が通知され得、または代替として、ウェブページが更新されることにより暗示的に変更が通知され得る。
【００７８】
更新チェックの日付および時間はまた、データストア層内のウェブページに対応するアイテムのメタデータに記録される（動作６１８）。この日付および時間は、動作６０２において新しいバージョンのウェブページが検索された日付および時間、動作６０４において比較がなされた日付および時間、などであり得る。そして、この時のこのウェブページの更新のプロセス６００は、完了する（動作６１０）。
【００７９】
図７は、１つまたは複数の実施形態に従って、ウェブデータ使用のプラットフォームを実装するよう構成することが可能な、一例のコンピュータデバイス７００を例示する。コンピュータデバイス７００は、例えば、図１のコンピュータデバイス１０２であり得、例えば、図３のプラットフォーム３００を実装可能である。
【００８０】
コンピュータデバイス７００には、１つまたは複数のプロセッサまたは処理ユニット７０２、１つまたは複数のメモリおよび／または記憶コンポーネント７０６を含むことが可能な１つまたは複数のコンピュータ可読媒体７０４、１つまたは複数の入力／出力（Ｉ／Ｏ）デバイス７０８、および、種々のコンポーネントおよびデバイスがお互いに通信することを可能にするバス７１０が含まれる。コンピュータ可読媒体７０４および／またはＩ／Ｏデバイス（複数可）７０８は、コンピュータデバイス７００の一部として含まれ、または代替として、コンピュータデバイス９００に接続されることが可能である。バス７１０は、メモリバスまたはメモリコントローラ、周辺機器用バス、アクセラレイティッドグラフィックポート、および、プロセッサまたは任意の様々なバスアーキテクチャを使用するローカルバスを含む、任意の種々のタイプのバス構造の任意の１つまたは複数を表す。バス７１０は、有線および／または無線のバスを含むことが可能である。
【００８１】
メモリ／記憶コンポーネント７０６は、１つまたは複数のコンピュータ記憶媒体を表す。コンポーネント７０６は、揮発性媒体（ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ等）および／または不揮発性媒体（ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、フラッシュメモリ、光ディスク、磁気ディスク等）を含むことが可能である。コンポーネント７０６は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブ等）や、着脱可能媒体（例えば、フラッシュメモリドライブ、着脱可能ハードドライブ、光ディスク等）を含むことが可能である。
【００８２】
１つまたは複数の入力／出力デバイス７０８は、ユーザがコマンドおよび情報をコンピュータデバイス７００に入力するのを可能にし、また、情報がユーザおよび／または他のコンポーネントまたはデバイスに対して提示されることを可能にする。入力デバイスの例には、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロフォン、スキャナ等が含まれる。出力デバイスの例には、ディスプレイデバイス（例えば、モニタまたはプロジェクタ）、スピーカ、プリンタ、ネットワークカード等が含まれる。
【００８３】
種々の技術が、ソフトウェアまたはプログラムモジュールの一般的文脈において本明細書に記載され得る。一般に、ソフトウェアは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。これらのモジュールおよび技術の実装は、何らかの形式のコンピュータ可読媒体に記憶され得、またはこれを介して転送され得ることが可能である。コンピュータ可読媒体は、コンピュータデバイスによりアクセス可能な任意の利用可能な媒体（複数可）であり得る。限定ではなく例として、コンピュータ可読媒体は、「コンピュータ記憶媒体」および「通信媒体」を含み得る。
【００８４】
「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶するための、任意の方法および技術で実装される、揮発性および不揮発性媒体、着脱可能および着脱不可能媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を記憶するために使用することが可能な、かつコンピュータによってアクセス可能な任意の他の媒体が含まれるが、これに限定されない。
【００８５】
「通信媒体」は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他の転送メカニズム等の変調されたデータ信号内の他のデータを具現化する。通信媒体はまた、任意の情報配信媒体を含む。用語「変調されたデータ信号」とは、１つまたは複数の特徴のセットを有する信号、または、信号内の情報を符号化するような方法で変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワーク接続または直接有線接続等の有線媒体、並びに、音響、ＲＦ、赤外線、および他の無線媒体等の無線媒体が含まれる。任意の上記のものの組合せもまた、コンピュータ可読媒体の範囲内に含まれる。
【００８６】
主題が、構造的特徴および／または方法論的な動作に特有の言語で記載されたが、添付の請求項に定義される主題が必ずしも上記に記載された特有の特徴または動作に限定されないことは理解されるべきである。むしろ、上記に記載される特有の特徴および動作は、請求項を実装する例示の形式として開示される。
【図１】
2010521721.tif 000004
【図２】
2010521721.tif 000005
【図３】
2010521721.tif 000006
【図４】
2010521721.tif 000007
【図５】
2010521721.tif 000008
【図６】
2010521721.tif 000009
【図７】
2010521721.tif 000010
【国際調査報告】
2010521721.tif 000011
2010521721.tif 000012