(57)【特許請求の範囲】
【請求項１】
コンピューティング環境における、少なくとも１つのプロセッサーで少なくとも部分的に行われる方法であって、データベース・クエリを処理するステップを含み、前記データベース・クエリは、データ・ソースからのデータを選択するための１以上のパラメーターを含み、該１以上のパラメーターは、値が読み出される識別されるエンティティを含み、前記データベース・クエリを処理するステップは、
識別される前記エンティティの第１のサブセットについての値が、第１のデータベースから、識別される前記エンティティの前記第１のサブセットにより入手可能であることを判定するステップであって、識別される前記エンティティの前記第１のサブセットは、前記第１のデータベースについてのパラメーターに対応し、該パラメーターは、前記１以上のパラメーターから選択される、ステップと、
識別される前記エンティティの第２のサブセットについての値が、前記第１のデータベースから、前記１以上のパラメーターのうちの強化パラメーターを認識することにより、入手不可能であることを判定するステップであって、前記強化パラメーターは、前記第１のデータベースからの値が識別される前記エンティティの前記第２のサブセットについての前記値で強化されることを示す、ステップと、
前記第１のデータベースから、前記パラメーターに対応する、識別される前記エンティティの前記第１のサブセットについての前記値を読み出すステップと、
識別される前記エンティティの前記第２のサブセットについての値を第２のデータベースから読み出すリクエストを、前記強化パラメーターを認識することに応答して生成するステップであって、前記リクエストは、識別されるエンティティの前記第１のサブセットのうちの１つの識別されるエンティティについての値を用いて、識別されるエンティティの前記第２のサブセットについて読み出す値を特定し、前記第２のデータベースは前記第１のデータベースと異なる、ステップと、
識別される前記エンティティの前記第２のサブセットについての値を、前記リクエストの結果として受けるステップと、
前記データベース・クエリに対する強化されたデータベース・クエリ応答を生成するステップであって、前記強化されたデータベース・クエリ応答は、識別される前記エンティティの前記第１のサブセットについての前記第１のデータベースからの前記値を含み、識別される前記エンティティの前記第２のサブセットについての前記第２のデータベースからの前記値を含む、ステップと
を含む、方法。
【請求項２】
請求項１に記載の方法であって、識別される前記エンティティの前記第２のサブセットについての値を受けるステップは、前記第２のデータベースから強化データを取得するステップを含む、方法。
【請求項３】
請求項２に記載の方法であって、前記強化データを取得するステップは、少なくとも１つのエンティティ・コンポーネントを少なくとも１つのデータ・ソースにマッピングするステップを含み、前記少なくとも１つのデータ・ソースは複数のデータ・ソースから、あるポリシーを用いて選択される、方法。
【請求項４】
請求項１に記載の方法であって、識別される前記エンティティの前記第２のサブセットについての値を読み出すリクエストを生成するステップは、
前記データベース・クエリに含まれる明示強化コマンドを識別するステップであって、前記明示強化コマンドは、前記強化パラメーターを形成するために用いられるクエリ言語コマンドから識別される、ステップと、
前記明示強化コマンドを１以上のネイティブ・リクエストに変換するステップであって、前記第２のデータベースについてのプロトコルを識別するステップと、該プロトコルに基づくネイティブ・リクエストを作成するステップを含むステップと
を含む、方法。
【請求項５】
請求項４に記載の方法であって、前記明示強化コマンドを変換するステップは、関連ディレクトリー・エントリーにアクセスするステップを含み、前記関連ディレクトリー・エントリーは、前記第２のデータベースと通信し、前記１以上のネイティブ・リクエストを開始するための前記プロトコルを定める、方法。
【請求項６】
請求項２に記載の方法であって、前記強化されたデータベース・クエリ応答を生成するステップは、識別される前記エンティティの前記第１のサブセットについての前記値を強化するために、前記第２のデータベースが提供する前記強化データをデータベース・クエリ応答に置き、前記強化されたデータベース・クエリ応答に対応するビューを返すステップ、及び、テーブル・データに前記強化されたデータベース・クエリ応答を移入するステップのうちの一方又は双方を含む、方法。
【請求項７】
請求項６に記載の方法であって、前記強化されたデータベース・クエリ応答を生成するステップは、前記少なくとも１つのデータ・ソースが提供する強化データとのデータベース・オペレーションに応答して返された、リレーショナル・データベースのデータを強化するステップを含む、方法。
【請求項８】
請求項２に記載の方法であって、前記データベース・クエリを処理するステップは、前記強化パラメーターを前記データベース・クエリから抽出するステップを含む、方法。
【請求項９】
請求項８に記載の方法であって、前記強化パラメーターを前記データベース・クエリから抽出するステップは、前記第２のデータベースからのある値を識別するパラメーターを抽出するステップを含み、前記パラメーターは時間及び場所の一方又は双方のパラメーターを含む、方法。
【請求項１０】
請求項１に記載の方法であって、前記第２のデータベースに接続するステップと、前記第２のデータベースと通信するためのプロトコルを識別するステップと、前記第２のデータベースから識別される前記エンティティの前記第２のサブセットについての前記値を読み出すために、前記プロトコルの使用と関連するデータを格納するステップとを更に含む方法。
【請求項１１】
請求項１０に記載の方法であって、識別される前記エンティティの前記第２のサブセットについての前記値を読み出すために、前記プロトコルの使用と関連する前記データを格納するステップは、データベース・クエリを前記第２のデータベースにて認証するように構成された１以上の資格情報を格納するステップ、及び、識別される前記エンティティの前記第２のサブセットについての前記値と関連する１以上のフォーマットを格納するステップのうちの一方または双方を更に含む、方法。
【請求項１２】
請求項１０に記載の方法であって、識別される前記エンティティの前記第２のサブセットについての前記値を読み出すために、前記プロトコルの使用と関連する前記データを格納するステップは、前記データをディレクトリー・エントリーに格納するステップを含み、前記ディレクトリー・エントリーは、前記データベース・クエリに基づいて前記第２のデータベースに対するネイティブ・リクエストを作成するために使用される、方法。
【請求項１３】
コンピューティング環境におけるシステムであって、
１以上のプロセッサーと、
データベース・クエリを処理するよう構成された強化サービスと
を備え、前記データベース・クエリは、データ・ソースからのデータを選択するための１以上のパラメーターを含み、該１以上のパラメーターは、値が読み出されるエンティティを識別し、前記データベース・クエリを処理することは、
識別される前記エンティティの第１のサブセットについての値が、第１のデータベースから、識別される前記エンティティの前記第１のサブセットにより入手可能であることを判定するステップであって、識別される前記エンティティの前記第１のサブセットは、前記第１のデータベースについてのパラメーターに対応し、該パラメーターは、前記１以上のパラメーターから選択される、ステップと、
識別される前記エンティティの第２のサブセットについての値が、前記第１のデータベースから、前記１以上のパラメーターのうちの強化パラメーターを認識することにより、入手不可能であることを判定するステップであって、前記強化パラメーターは、前記第１のデータベースからの値が識別される前記エンティティの前記第２のサブセットについての前記値で強化されることを示す、ステップと、
前記第１のデータベースから、前記パラメーターに対応する、識別される前記エンティティの前記第１のサブセットについての前記値を読み出すステップと、
識別される前記エンティティの前記第２のサブセットについての値を第２のデータベースから読み出すリクエストを、前記強化パラメーターを認識することに応答して生成するステップであって、前記リクエストは、識別されるエンティティの前記第１のサブセットのうちの１つの識別されるエンティティについての値を用いて、識別されるエンティティの前記第２のサブセットについて読み出す値を特定し、前記第２のデータベースは前記第１のデータベースと異なる、ステップと、
識別される前記エンティティの前記第２のサブセットについての値を、前記リクエストの結果として受けるステップと、
前記データベース・クエリに対する強化されたデータベース・クエリ応答を生成するステップであって、前記強化されたデータベース・クエリ応答は、識別される前記エンティティの前記第１のサブセットについての前記第１のデータベースからの前記値を含み、識別される前記エンティティの前記第２のサブセットについての前記第２のデータベースからの前記値を含む、ステップと
を含む、システム。
【請求項１４】
請求項１３に記載のシステムであって、識別される前記エンティティの前記第２のサブセットについての前記値を受けるよう構成された前記強化サービスは、強化データを前記第２のデータベースから受けるよう構成された前記強化サービスを含み、
強化されたデータベース・クエリ応答を生成するよう構成された前記強化サービスは、前記強化データを、識別される前記エンティティの前記第１のサブセットについての前記値と組み合わせるよう構成された前記強化サービスを含む、システム。
【請求項１５】
請求項１３に記載のシステムであって、変換機構を更に備え、該変換機構は、識別される前記エンティティの前記第２のサブセットについての前記値をリクエストするための少なくとも１つのプロトコルを識別し、前記第２のデータベースと前記少なくとも１つのプロトコルを用いて接続し、１以上のネイティブ・リクエストを前記プロトコルに基づき開始するように構成された、システム。
【請求項１６】
請求項１３に記載のシステムであって、前記第２のデータベースと通信するためのプロトコル関係データを格納するように構成されたディレクトリーを更に備え、前記強化サービスは、前記ディレクトリーにアクセスして、識別される前記エンティティの前記第２のサブセットについての前記値に対するネイティブ・リクエストを伝達するためにプロトコル関係データを取得する、システム。
【請求項１７】
請求項１３に記載のシステムであって、前記強化サービスは、少なくとも１つのエンティティ・コンポーネントを少なくとも１つのデータ・ソースに、あるポリシーに基づきマッピングする、システム。
【請求項１８】
コンピューターにデータベース・クエリを処理させるコンピューター・プログラムであって、前記データベース・クエリは、データ・ソースからのデータを選択するための１以上のパラメーターを含み、該１以上のパラメーターは、値が読み出されるエンティティを識別し、前記データベース・クエリを処理することは、
識別される前記エンティティの第１のサブセットについての値が、第１のデータベースから、識別される前記エンティティの前記第１のサブセットにより入手可能であることを判定するステップであって、識別される前記エンティティの前記第１のサブセットは、前記第１のデータベースについてのパラメーターに対応し、該パラメーターは、前記１以上のパラメーターから選択される、ステップと、
識別される前記エンティティの第２のサブセットについての値が、前記第１のデータベースから、前記１以上のパラメーターのうちの強化パラメーターを認識することにより、入手不可能であることを判定するステップであって、前記強化パラメーターは、前記第１のデータベースからの値が識別される前記エンティティの前記第２のサブセットについての前記値で強化されることを示す、ステップと、
前記第１のデータベースから、前記パラメーターに対応する、識別される前記エンティティの前記第１のサブセットについての前記値を読み出すステップと、
識別される前記エンティティの前記第２のサブセットについての値を第２のデータベースから読み出すリクエストを、前記強化パラメーターを認識することに応答して生成するステップであって、前記リクエストは、識別されるエンティティの前記第１のサブセットのうちの１つの識別されるエンティティについての値を用いて、識別されるエンティティの前記第２のサブセットについて読み出す値を特定し、前記第２のデータベースは前記第１のデータベースと異なる、ステップと、
識別される前記エンティティの前記第２のサブセットについての値を、前記リクエストの結果として受けるステップと、
前記データベース・クエリに対する強化されたデータベース・クエリ応答を生成するステップであって、前記強化されたデータベース・クエリ応答は、識別される前記エンティティの前記第１のサブセットについての前記第１のデータベースからの前記値を含み、識別される前記エンティティの前記第２のサブセットについての前記第２のデータベースからの前記値を含む、ステップと
を含む、コンピューター・プログラム。
【請求項１９】
請求項１８に記載のコンピューター・プログラムであって、前記コンピューターに、更に、前記強化されたデータベース・クエリ応答に含まれる、識別される前記エンティティの前記第２のサブセットについての前記値の少なくとも一部を、前記第１のデータベースのデータベース・テーブルに挿入させるコンピューター・プログラム。
【請求項２０】
請求項１９に記載のコンピューター・プログラムであって、前記コンピューターに、更に、前記データベース・テーブルを、スケジュールに基づき、自動的に生成される強化されたデータベース・クエリからのデータで自動的にリフレッシュさせるコンピューター・プログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ソフトウェア・アプリケーションのオペレーションは、効率的なコンピューティング・リソースの使用に応じたものとなる。従って、積極的ユーザー経験を促進させるためには、データ・ストレージおよび処理機構をサポートすることが必要とされている。
【０００２】
[0002]  そのようなソフトウェア・アプリケーションは、構造化データ・レコード（例えば、テーブル・データ）を含むエンタープライズ内部データベースへアクセスするデータベース・アプリケーションを含む。データベース・アプリケーションは、データベース管理システムのための開発プラットフォームに構築される。ユーザーがデータベース・クエリを通信するとき、データベース・アプリケーションは、内部データベースへアクセスし、（通常は）データベース・クエリと一致するテーブル・データを含む応答を提供する。
【０００３】
[0003]  内部データに加えて、ユーザーは、ときおり、１または複数の外部データ・ソースからのデータを、取得した内部データベースのデータと共に見るために、１または複数の外部データ・ソースからのデータへアクセスすることを望む。そうするためには、それぞれの外部データ・ソースと通信する方法、例えば、その認証モデル、通信プロトコル（接続ストリング）、および／または課金要件などのような他の情報を理解するアプリケーション（データ・ソース・プロバイダー）を開発する必要がある。一般にデータを分析したいだけの典型的なクエリの作者にとって、そのようなアプリケーションの開発は、クエリの作者の能力が及ぶものではなく、また、時間もかかりすぎる。
【発明の概要】
【０００４】
[0004]  この概要は、以下の詳細な説明で更に説明する代表的概念のうちの選択したものを簡素化した形で紹介するために提供される。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定するために用いることを意図していない。
【０００５】
[0005]  簡単に説明すると、ここで説明する主題事項の様々な態様は変換機構を維持することに関連し、この変換機構は、複雑ではないクエリ・コマンドを用いて、内部データベース・クエリから受け取ったデータが外部データ・ソースからのデータにより強化されることを、可能とする。１つの態様では、変換機構は外部データの取得を容易にする。なぜなら、様々な外部データ・ソースに対しての個別のプロバイダーは必要ではないからである。クエリの作者やアプリケーション開発者は、例えば、データベース・クエリを認証する方法や、外部データ・ソースからテーブル・データをインポートする方法や、アクセスに対してのユーザーへの課金の方法を、扱う必要がない。
【０００６】
[0006]  別の態様では、強化（enrichment）サーバーは、変換機構を用いて、内部データベースと、１以上の外部データベースからのテーブル・データとを組み合わせる。内部データベースは非公開（プライベート）データを含み得るので、強化サーバーは、非公開データと様々な公開情報とのシームレスの拡張（augmentation）を可能とする。
【０００７】
[0007]  １つの態様では、強化サーバーは、データベース・クエリから、エンティティを識別するパラメーターを抽出する。エンティティは、コンポーネントとしてデータ・タイプのグループを含み、それらのコンポーネントの値は、ユーザーにより要求されているものである。また、パラメーターは、外部データ・ソースからデータを選択するためのサーチ基準などとして用いられる値を含む。これらのパラメーターを用いて、変換機構は、外部データ・ソースからのデータを要求するためのプロトコルの適切なネイティブ機能コールを開始する。
【０００８】
[0008]  本発明は、例を用いて示されるが、添付の図面のものには限定されない。図面では、同じ参照番号は同様のエレメントを示す。
【図面の簡単な説明】
【０００９】
【図１】図１は、外部データ・ソースからのデータを用いてデータベース・クエリ応答を強化するための例示的なシステムを示すブロック図である。
【図２】図２は、１つの例示的な実施に従った、外部データ・ソースからのデータを用いてデータベース・クエリ応答を強化するためのステップを示すフロー図である。
【図３】図３は、１つの例示的な実施に従った、様々な情報に対してのリクエストを外部データ・ソースへ通信するためにディレクトリーを用いるためのステップを示すフロー図である。
【図４】図４は、１つの例示的な実施に従った、外部データ・ソースからのデータを、強化されたデータベース・クエリ応答に変換するためのステップを示すフロー図である。
【図５】図５は、１つの例示的な実施に従った、データベース・クエリを、外部データ・ソースに対してのネイティブ・リクエストに変換するためのディレクトリーを構築するためのステップを示すフロー図である。
【図６】図６は、１つの例示的な実施に従った、エンティティ・コンポーネントを外部データ・ソースにマップするためのステップを示すフロー図である。
【図７】図７は、ここで説明する様々な実施形態を実施することができる、例示的な限定的ではないネットワーク化された環境を表すブロック図である。
【図８】図８は、ここで説明する様々な実施形態の１以上の態様を実施することができる、例示的な限定的ではないコンピューティング・システムまたは動作環境を表すブロック図である。
【発明を実施するための形態】
【００１０】
[0017]  ここで説明される技術の様々な態様は、一般に、外部データ・ソースから抽出されたデータを用いてデータベース・クエリ応答を強化することに関連する。データベース・クエリは、外部データ・ソースからデータを選択するための１以上の基準を指定する１以上のパラメーターを含む。１つの例示的なパラメーターは、データ・タイプのグループのエンティティ識別子（例えば、名前）を含む。それぞれのデータ・タイプは、１以上の他のデータ・タイプを含むことができる。他の例示的なパラメーターは、データ・タイプのグループの１以上のデータ・タイプに対する１以上の値を含む。幾つかの他の例示的なパラメーターは、例えば、外部データ・ソースにより返される値を特定の時間および／または場所に限定するコンテキスト・パラメーター（contextual parameters）であり得る。データベース・クエリに対しての強化された応答はテーブル・データを含むので、データ・タイプのグループは１以上の列（column）を定め、１以上の値は１以上の行（row）を定める。１つの例示的な実施では、テーブル・データのそれぞれの列内の列データは、１以上の値に対応する。
【００１１】
[0018]  １つの例示的な実施では、データベース・クエリは、様々な情報を用いて会社データ（company data）を強化することと関連し、その様々な情報の例は金融情報であり、例えば、株価、従業員統計、決算報告書、時価総額（「ｍａｒｋｅｔ  ｃａｐｓ」）、ストック・ティッカー（stock ticker）価格などである。１以上の外部データ・ソース、例えば、金融ニュース・メディア、株式市場、サーチ・エンジンなどは、１以上の会社名に関しての様々な金融情報を、そのようなデータを要求するネイティブ機能コールまたはクエリ（「リクエスト」）に応答して、提供する。様々な金融情報の幾つかの部分を定めるデータ・タイプは、エンティティを構成する。従って、データベース・クエリは、エンティティ名と、１以上の会社名とをパラメーターとして含む。
【００１２】
[0019]  例示的なエンティティは、幾つかのコンポーネント（例えば、データ・タイプ）を含み、従業員数、時価総額、および株価を表すコンポーネントを含む。エンティティは他の多くのコンポーネント、例えば、会社役員、総売上高、会社登記地、存続年などを含むこともできる。外部ソースからのそのようなデータへアクセスするために、変換機構は、エンティティ・コンポーネントの何れか（例えば、ユーザー・クエリにおいて明らかにされている）を含む１以上の例示的パラメーターを提供し、適切な外部データ・ソースで実行されている接続ソフトウェアに命令してネイティブ機能を実行させる。従って、接続ソフトウェアは、例えば、従業員数、時価総額、および／または株価が指定されていた場合には、それらに関する値を返す。
【００１３】
[0020]  例えば、Ｃという名前の「ｃｏｍｐａｎｉｅｓ」（「会社」）テーブルとともに、あるエンタープライズについて考えるが、このテーブルは、会社の様々な行に対しての郵便番号データの列（多くの他の列の中からのものであり得る）を有する会社名の行を含むものとする。内部データベースは、各会社に対してのストック・ティッカー・データや従業員数を含まないが、そのような情報は外部ソースから入手可能であるものと考える。名前、郵便番号、ティッカー、および従業員数（name, zipcode, ticker, and num_employee）とフォーマットされたデータを見るために、以前は、内部クエリ結果と外部ソースからのデータとをマージするためのカスタム・アプリケーション（プロバイダー）が必要であった。データ強化を用いる場合、ユーザーに対して要求されるのは、例えば、ｔｉｃｋｅｒ、ｎｕｍ＿ｅｍｐｌｏｙｅｅｓ、ｍａｒｋｅｔ＿ｃａｐ（ティッカー、従業員数、時価総額）などのような適切なコンポーネントを含む予め定めたエンティティ（例えば、「ＣｏｍｐａｎｙＦｉｎａｎｃｉａｌ」（「会社金融」））を指定し、適切なクエリ
SELECT name, zipcode, ticker, num_employees
FROM Companies c
ENRICH on CompanyFinancial (c.name)
をサブミット（submit）することのみである。
【００１４】
[0021]  第１ラインは、検索するデータの列を指定するものであり、名前（ｎａｍｅ）および郵便番号はエンタープライズ内部データベースから入手可能であり、ティッカー（ｔｉｃｋｅｒ）および従業員数（ｎｕｍ＿ｅｍｐｌｏｙｅｅｓ）は外部ソース（１以上）から入手可能である。第２ラインは、強化するテーブルを示す。第３ラインは、データ強化であり、予め定めたエンティティ「ＣｏｍｐａｎｙＦｉｎａｎｃｉａｌ」を特定し、このエンティティは外部データに対するコンポーネントを含み、ｃ．ｎａｍｅパラメーターは、外部データを返す対象となる会社、即ち、「Ｃｏｍｐａｎｉｅｓ  ｃ」テーブル内のものを、指定する。ユーザーは、「ＣｏｍｐａｎｙＦｉｎａｎｃｉａｌ」エンティティを指定することにより必要なデータ列（この例ではｔｉｃｋｅｒおよびｎｕｍ＿ｅｍｐｌｏｙｅｅｓ）を満足させられるであろうことを決定するために、「ＣｏｍｐａｎｙＦｉｎａｎｃｉａｌ」エンティティを見ることができることに、留意されたい。
【００１５】
[0022]  エンティティ・コンポーネントのうちの１つ、例えば、従業員数が、１つのデータ・ソースから入手できない（または不明の状態である）場合、変換機構は、別の外部データ・ソースで実行されている接続ソフトウェアに命令して、未知のエンティティ・コンポーネントへアクセスするために別のネイティブ機能を実行させることができる。従って、変換機構は、通信する１以上のデータ分離プロバイダーに対する必要性を、外部データ・ソースの各タイプと置き換える。
【００１６】
[0023]  外部データ・ソースは、データを通信するために独特または専用のプロトコル（例えば、アプリケーション・プログラミング・インターフェース（ＡＰＩ））を使用する場合があるので、変換機構は、構成データ（configuration data）（例えば、ディレクトリーに維持される）にアクセスして、そのプロトコルとコンパチブルの機能コールまたはリモート・クエリを構成する。機能コールまたはリモート・クエリは、強化のために使用する様々な情報（例えば、金融情報）の幾つかを識別するための基準を含む。変換機構が機能コールまたはクエリを開始した後、外部データ・ソースは、その基準と一致するデータを返す。データはネイティブ・フォーマットに従って配されているので、変換機構は、そのデータをコンパチブル・テーブル・データに変換する。
【００１７】
[0024]  例えば、変換機構は、株式市場データベースから特定の会社の株価を要求する機能をコール（呼び出し）することができる。そのようなコールは、特定の会社名（またはシンボル）と、株価が要求されていることを示す何らかのインジケーション（例えば、属性）とを含む。株価は、ネイティブ・フォーマットで変換機構へ通信される。変換機構は、株価を抽出し、その株価を、強化されたデータベース・クエリ応答の一部を形成するテーブル・データへ、挿入する。テーブル・データは、非公開データを含むエンタープライズ・データの内部データベースの１以上の列に移入する（populate）ために用いることができる。
【００１８】
[0025]  上記のように、例示的パラメーターの幾つかは、場所および／または時間の値を指定するコンテキスト・パラメーターを含むことができる。変換機構は、コンテキスト・パラメーターを用いて、外部データ・ソースから場所および／または時間の値に対応するデータを識別する。例えば、変換機構は、特定の日付／時間をネイティブ機能コールのパラメーターとして用いて、その特定の日付／時間の株価を選択する。別の例では、変換機構は、或る時間間隔（例えば、或る日数）における平均株価を計算するための別のネイティブ機能コールを開始する。
【００１９】
[0026]  代替の例示的な実施では、データベース・クエリは、プライベートの会社データを、特定の地理的な場所での又はその場所の近くでの様々なニュース情報を用いて強化するパラメーターを含み、特定の地理的な場所は、物理的な場所（例えば、地理学的または測地学的な座標）やインターネット・リソースの場所（例えば、インターネット・プロトコル（ＩＰ）・アドレス）で表すことができる。例えば、変換機構は、特定のグローバル・ポジショニング・システム（ＧＰＳ）位置の範囲内の会社関連ニュースに関するネイティブ機能コールを、開始することができる。更に、ネイティブ機能コールは、例えば、歴史上のニュースや現在のニュースなどのような、特定の時間間隔に関しての会社関連ニュースを要求することができる。
【００２０】
[0027]  図１は、外部データ・ソースからのデータを用いてデータベース・クエリ応答を強化するための例示的なシステムを示すブロック図である。例示的なシステム（例えば、多くのサーバーのうちの１つのサーバーで実施される）は、様々なデータベース・サービスをサポートすることができる。例示的なシステムは、様々なコンポーネント、例えば、ＳＱＬエンジン１０２、強化サーバー１０４、およびここで説明する変換機構１０６を含む。強化サーバー１０４は、強化サービスを含む１以上のサーバーとすることができる。
【００２１】
[0028]  ＳＱＬエンジン１０２は、エンティティ識別子などのような様々なパラメーター（強化パラメーターと呼ばれる場合もある）を含むデータベース・クエリを受け取る。強化サーバー１０４は、エンティティ・データ１０８へアクセスし、クエリ内の各コンポーネントを、内部データ１０９からまたはエンティティ識別子と一致するエンティティを介して入手可能であることを、検証することができる。エンティティの外部コンポーネントに対して、強化サーバー１０４は、変換機構１０６を用いて、１以上の外部データ・ソース１１０１−１１０ｎにあるデータにアクセスし、様々なエンティティ・コンポーネントに対する値を選択する。それらの値は、強化サーバー１０４を介してＳＱＬエンジン１０２へ通信される強化されたデータベース・クエリ応答内にテーブル・データの形態で格納することができる。１つの実施では、ＳＱＬエンジン１０２は、内部データベース１０９の幾つかの部分（例えば、テーブル・データの１以上の列）に、強化されたデータベース・クエリ応答を移入するように構成される。
【００２２】
[0029]  それぞれの外部ソースとの通信の方法を知るために、変換機構は、エンティティ・コンポーネントに対応するそれぞれのデータ・ソースに関して維持されている情報を用いてディレクトリー１１２へアクセスする。例えば、ディレクトリー１１２は、それぞれの外部データ・ソース１１０１−１１０ｎに対するエントリーを有し、各エントリーは、外部データ・ソースとデータを通信するためのプロトコルを定め、それは、ネイティブ機能コール、データ・フォーマット、課金プロシージャー、セキュリティ資格情報などを含む。容易に理解できるように、ディレクトリーに代えて又はディレクトリーに加えて、そのような情報を決定するための任意の適切な機構を用いることができ、例えば、プロトコル／関連データを別のデータ・ストアで維持することや、プロトコル／関連データを変換機構内へハード・コーディングすることなどを含む。
【００２３】
[0030]  強化サーバー１０４および変換機構１０６は、ローカルおよび／またはネットワークのデータベースへのアクセスを制御するように、ローカル・コンピューター／ネットワークに格納して動作させることができる。代替的には、強化サーバー１０４および／または変換機構１０６を、クラウド・コンピューティング・アプリケーションに含ませることができ、その場合、ローカル・コンピューターは、主に、リモート・サーバー・データ・センターでのコンピューティング・リソースのシェアのためのインターフェースとして機能する。例えば、クラウド・コンピューティング・アプリケーションは、内部データベースにテーブル・データを格納するが、内部データベースはローカル・コンピューターに格納されない。
【００２４】
[0031]  １つの例示的な実施に従うと、強化サーバー１０４は、様々なエンティティ・コンポーネントのそれぞれを、複数のデータ・ソース１１０１−１１０ｎのうちの適切な外部データ・ソースへマップするために、ポリシー１１４を用いることができる。例えば、ポリシー１１４は、適切な外部データ・ソースを選択することと関連する優先順位（preference）を含むことができる。より特定的な例では、ポリシー１１４は、無料のデータ・サービスに関する優先順位を商用／有料のデータ・サービスよりも高く示すことができ、それにより、強化サーバー１０４は、無料というオプションが存在しない場合のみ、商用／有料データ・サービスを選択する。また、ポリシーにおいて価格の制限を指定することもできる。別の例では、ポリシー１１４は、特定のデータ・ソースへ高い優先順位を割り当てる。エンティティ・コンポーネントに対する値を検索または計算できない場合以外、強化サーバー１０４は、データベース・クエリ応答を強化するためのデータへアクセスするために、その特定のデータ・ソースを用いる。
【００２５】
[0032]  １つの例示的な実施に従うと、複数の外部データ・ソース１１０１−１１０ｎは、任意のタイプのリモートまたはインターネットのデータ・サービス（例えば、データ・フィード、レポート、商用または無料のデータベース、サーチ・エンジンなど）を含み、それらから、テーブル・データが、検索されて、強化されたデータベース・クエリ応答を生成するために用いられる。外部データ・ソース１１０１−１１０ｎのそれぞれは、他のコンピューター・システムによるテーブル・データへのアクセスを可能とする特定のプロトコルを実施する。特定のプロトコルは、アプリケーション・プログラミング・インターフェースを含むことができ、その場合、特定の機能を呼び出すことによりテーブル・データの幾つかの部分が取得される。特定の機能は、特定のものでのネイティブな機能なので、ネイティブ機能と呼ばれる。
【００２６】
[0033]  ネイティブ機能に対する入力パラメーターは、返されるテーブル・データの部分を識別する。例えば、変換機構１０６は、会社名および要求されるデータ、例えば、現在の株価、を指定する入力パラメーターを用いて機能を呼び出す。外部データ・ソースの１つは、株価を提供するデータベースをサーチし、会社名および現在の株価を含むテーブル・データを返す。別の例では、変換機構１０６は、以前の日、例えば、昨日の株価を要求することができる。入力パラメーターは、会社名に加えて、日を指定するパラメーターを含む。
【００２７】
[0034]  図２は、１つの例示的な実施に従った、外部データ・ソースからのデータを用いてデータベース・クエリ応答を強化するためのステップを示すフロー図である。図２に示すステップは、データベース・クエリがＳＱＬエンジン１０２により処理されるときに、ステップ２０２で始まり、ステップ２０４へ進む。ステップ２０４は、データベース・クエリ内の強化パラメーターを認識し、データベース・クエリを強化サーバー１０４へ送信することを表す。
【００２８】
[0035]  ステップ２０６は、データベース・クエリから強化パラメーターを抽出することを示し、これは、エンティティ識別子と、１以上のエンティティ・コンポーネントの１以上の値とを含む。ここで説明するように、これらのエンティティ・コンポーネントは、データベース・クエリを強化することと関連するデータ・タイプを含む。また、ここで説明するように、外部データ・ソースからの結果は１以上の値と対応する。ステップ２０８は、エンティティ・コンポーネントを外部データ・ソースへマップすることを表す。ステップ２０８の１つの例示的な実施が図６に示されており、その実施では、ポリシーは、特定のエンティティ・コンポーネントに対してのデータを検索するために使用する外部データ・ソースを決定する。
【００２９】
[0036]  ステップ２１０は変換機構１０６を実施し、変換機構１０６は、様々なデータに対してのネイティブ・リクエストを作成して外部データ・ソースへ通信する。ネイティブ・リクエストは、外部データ・ソースへ接続し、コンパチブルのコマンドを実行し、結果を取得するためのプロトコルに従って、構成される。１つの例では、ネイティブ・リクエストは、外部データ・ソースにより実施されるネイティブ機能コールを含む。図３は、ステップ２１０の例示的な実施を示し、その実施では、データベース・クエリを、エンティティ・コンポーネントに対するデータを要求するネイティブ機能コールに変換するために、ディレクトリーが用いられる。
【００３０】
[0037]  ステップ２１２は、ネイティブ・リクエストに対する応答として外部データ・ソースから受け取ったデータを処理することに関するステップである。１つの例示的な実施では、変換機構１０６は、外部データ・ソースから供給されたデータを、強化されたデータベース・クエリ応答を生成するために用いられるテーブル・データに変換する。強化サーバー１０４は、強化されたデータベース・クエリ応答を、ＳＱＬエンジン１０２へ通信し、ＳＱＬエンジン１０２は、例えば、スキーマに従って、強化されたデータベース・クエリ応答のビューを返すこと、および／またはテーブル・データを内部データベースの内部テーブルへ挿入することを行う。内部テーブルは、スケジュールを基にするなどにより自動的にリフレッシュすることができ、これは、例えば、自動的に、外部データに対しての新たなクエリを生成し、そのデータを、強化されたデータ応答において用いて更新データを挿入することなどにより、行うことができる。
【００３１】
[0038]  オプションとして、強化サーバー１０４は、課金活動やデータ・ソース診断などに関する統計を収集する。それらの統計は、様々な目的、例えば、課金費用の監査、データ・ソースの分析、およびポリシーの更新などで用いることができる。例えば、ポリシーは、特定のデータ・ソースの使用限度を含むことができる。統計が、使用限度に到達していることを示す場合、ポリシーから、別のデータ・ソースを選択することができる。ステップ２１４は、データベース・クエリ応答を強化することの終了を表す。
【００３２】
[0039]  図３は、１つの例示的な実施に従った、様々な情報に対してのリクエストを外部データへ通信するためにディレクトリーを用いるステップを示すフロー図である。それらのリクエストは、外部データ・ソースに対してのネイティブ・コマンドとして構成される。強化サーバー１０４は、変換機構を用い、ＳＱＬエンジン１０２から送られたデータベース・クエリに基づいて、それらのリクエストを作る。図３に示すステップは、ステップ３０２で始まり、ステップ３０４へ進み、このステップで、強化サーバー１０４は、変換機構１０６を実施してディレクトリーへアクセスする。
【００３３】
[0040]  ステップ３０６は、外部データ・ソースと関連するディレクトリー・エントリーの検査を表す。ステップ３０８は、外部データ・ソースと通信するためのプロトコルを識別することを示す。ディレクトリー・エントリーは、外部データ・ソースとデータを通信するためのプロトコルを定め、ネイティブ機能コール、データ・フォーマット、課金プロシージャー、セキュリティ資格情報などを含む。従って、そのようなプロトコルは、外部データ・ソースに対しての１以上のネイティブ機能コールを開始するために、変換機構１０６により用いられる。
【００３４】
[0041]  ステップ３１０は、外部データ・ソースと接続することに関する。ディレクトリー・エントリー内のプロトコルはまた、ＩＰアドレスなどのような場所と、外部データ・ソースに対する任意の認証プロシージャーとを含む。例えば、アカウント・ユーザー名とパスワードとが、外部データ・ソースへアクセスするために必要とされ得る。セッション（例えば、ＨＴＴＰまたはＨＴＴＰＳのセッション）を確立した後、変換機構１０６は、ステップ３１２に示すように、１以上の特定のデータベースまたはテーブルを選択し、様々な情報を要求するコールを開始する。それらのコールは、外部データ・ソースのＡＰＩと関連するネイティブ機能コールを含む。ステップ３１４は、様々な情報に関するリクエストを外部データ・ソースへ通信するためにディレクトリーを用いることの終了を、示す。
【００３５】
[0042]  図４は、１つの例示的な実施に従った、外部データ・ソースからのデータを、強化されたデータベース・クエリ応答に変換するステップを示すフロー図である。図４に示すステップはステップ４０２で始まり、ステップ４０４へ進み、このステップは、様々な情報、例えば、金融やニュースの情報などに関してのネイティブ・リクエストに応答して外部データ・ソースから、変換機構１０６がデータを受け取るときのものである。
【００３６】
[0043]  ステップ４０６は、外部データ・ソースから受け取ったデータと関連するフォーマットを検査することに関する（なお、例えば、ディレクトリー内の情報から、フォーマットが予め知られている場合もある）。１つの例示的な実施では、特定の外部データ・ソースは、一意なフォーマットの値、例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）フォーマットの値を返す。変換機構１０６は、ステップ４０８で表すように、それらの値をテーブル・データに変換し、強化されたデータベース・クエリ応答を作成する。変換機構１０６は、それらの値に対して追加の処理、例えば、或る期間にわたる株価を統合し、株価の平均やメジアンを計算することなどを、行うことができる。
【００３７】
[0044]  ステップ４１０は、強化されたテーブルのビューを返すこと、および／または強化されたデータベース・クエリ応答を用いて内部データベースに移入することに関する。１つの例示的な実施に従うと、強化サーバー１０４を介して、特定の外部データ・ソースにより返された値から生成されたテーブル・データを、内部データベースの特定のテーブルまたは１以上の列へ挿入することができる。一例では、テーブル・データは、挿入オペレーションを一連のコピー・データ・オペレーションへとレンダリングする特定のテーブルと、類似のスキーマを共有する。代替的には、特定のテーブルは、ブランク、または内部データベースと関連するリレーショナル・パラダイムの外側にある一時的テーブルである。ステップ４１２は、強化されたデータベース・クエリ応答の完成を示す。
【００３８】
[0045]  図５は、１つの例示的な実施に従った、データベース・クエリを外部データ・ソースに対するネイティブ・リクエストに変換するためのディレクトリーを構築するステップを示すフロー図である。ディレクトリーは、変換機構１０６の一部を形成する。図５に示すステップは、ステップ５０２で始まり、ステップ５０４へ進み、このステップは、変換機構１０６がブランク・ディレクトリー・エントリーを生成するときのものである。
【００３９】
[0046]  以下で更に説明するが、１つの例示的な実施に従うと、変換機構１０６は、様々な情報、例えば、外部データ・ソースと通信するためのプロトコルを、ブランク・ディレクトリー・エントリーに格納する。プロトコルは、情報を要求するためのネイティブ機能コールと、要求した情報を整理するためのフォーマットとを定める。一例では、プロトコルは、ユーザー名およびパスワードのような様々な資格情報を必要とする。
【００４０】
[0047]  ステップ５０６は、外部データ・ソースと接続することに関する。例えば、変換機構１０６は、ＩＰアドレスを用いて、外部データ・ソースへのインターフェース、例えば、アプリケーション・プログラミング・インターフェース（ＡＰＩ）とのセッションを生成する。変換機構１０６は、インターフェースを介しての外部データ・ソースと通信を行う。これはステップ５０８により表されている。幾つかの実施では、変換機構１０６はインターフェースを用いて、それぞれの使用可能なデータベースを列挙し、ここで説明したポリシーに応じて、適切なデータベースを選択する。
【００４１】
[0048]  ステップ５１０は、外部データ・ソースと関連するプロトコルを用いるための要件を決定することに関する。１つの例示的な実施では、変換機構１０６は、インターフェースにより実行可能であり且つ様々な情報を返すように構成された機能を識別する。それらの機能は、外部データ・ソースでネイティブなものであり、１以上の使用可能なデータベースへのアクセスを可能とするものである。また、変換機構１０６は、一例によると、１以上の使用可能なデータベースをサーチするために必要な資格情報を決定する。代替例では、変換機構はまた、外部データ・ソースとのデータの交換のために一意または専用のフォーマットが用いられるか否かを決定する。ステップ５１２で表すように、プロトコルを使用するための要件に関する何れの情報も、ブランク・ディレクトリー・エントリーに格納される。完成すると、ディレクトリー・エントリーは、ディレクトリーを更新するために用いられる。これはステップ５１４により示されている。
【００４２】
[0049]  ステップ５１６は、次の外部データ・ソースに関して別のエントリーを用いてディレクトリーを更に更新するか否かに関する判断を表す。検査の対象となる更なる外部データ・ソースが有る場合、ステップ５０４ないし５１４が反復される。それに対して、検査の対象となる更なる外部データ・ソースが無い場合、ステップ５１６が行われて、ディレクトリーの構築が終了する。ディレクトリーは、任意の時、例えば、新たなデータ・ソースが付加されたときやそのプロトコルを変更する時に、再構築または更新することができる。
【００４３】
[0050]  図６は、１つの例示的な実施に従った、エンティティ・コンポーネントを外部データ・ソースへマップするステップのフロー図である。それぞれのエンティティ・コンポーネントはデータ・タイプを含み、その値（１または複数）はデータベース・クエリ応答を強化する。本開示で述べるように、データベース・クエリは、データ・タイプのグループを表すエンティティを指定する。図６に示すステップはステップ６０２で始まり、ステップ６０４へ進み、このステップは、変換機構１０６がエンティティ・コンポーネントを検査するときのものである。
【００４４】
[0051]  ステップ６０６は、エンティティ・コンポーネントに対しての一致する外部データ・ソースを識別することに関する。一致する外部データ・ソースは、エンティティ・コンポーネントと対応する情報を提供するように構成される。例えば、一致する外部データ・ソースは、エンティティ・コンポーネントと同じデータ・タイプを有するデータを提供する。一致する外部データ・ソースにより提供されるデータは、更なる処理を必要とし得る。一例として、そのようなデータは、エンティティ・コンポーネントに格納される別の値を計算するためにアルゴリズムが入力パラメーターとして用いる値を、含む。
【００４５】
[0052]  一致する外部データ・ソースを識別した後のステップ６０８は、様々な情報を要求する対象となる適切なものを選択するためのポリシーへアクセスすることに関し、これはステップ６１０として表されている。１つの例示的な実施では、ポリシーは、様々なファクタ、例えば、課金要件やパフォーマンスなどに基づいた、特定の外部データ・ソースに対しての優先順位を含む。一例では、ポリシーは、無料データ・ソースの優先を示す。従って、一致する外部データ・ソースのうちの無料のもののみが、オプションとして考慮される。１より多くの一致する外部データ・ソースが無料である場合、それらのうちの何れかが選択され得る。
【００４６】
[0053]  ステップ６１２は、別のエンティティ・コンポーネントを適切な外部データ・ソースへマップすることに関する判断を表す。更なるエンティティ・コンポーネントが有る場合、強化サーバーは、変換機構１０６を介して、ステップ６０４へ戻り、６１０までの各ステップを次のエンティティ・コンポーネントに対して反復する。それに対して、更なるエンティティ・コンポーネントが無い場合、エンティティ・コンポーネントのマッピングは終了する。これはステップ６１４により表している。
【００４７】
[0054]  図７は、例示的なネットワーク型または分散型のコンピューティング環境の概略的な図を提供する。分散型コンピューティング環境は、コンピューティング・オブジェクト７１０、７１２などと、コンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などとを含み、これらは、プログラム、メソッド、データ・ストア、プログラマブル・ロジックなどを含むことができ、例示のアプリケーション７３０、７３２、７３４、７３６、７３８として表されている。コンピューティング・オブジェクト７１０、７１２などと、コンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などとは、様々なデバイス、例えば、パーソナル・デジタル・アシスタント（ＰＤＡ）、オーディオ／ビデオ・デバイス、モバイル・フォン、ＭＰ３プレーヤー、パーソナル・コンピューター、ラップトップなどを含み得ることを、理解することができる。
【００４８】
[0055]  コンピューティング・オブジェクト７１０、７１２などと、コンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などとのそれぞれは、通信ネットワーク７４０を用いて、直接的または間接的に、コンピューティング・オブジェクト７１０、７１２などと、コンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などとのうちの他の１以上のものと通信することができる。通信ネットワーク７４０は、図７では単一のエレメントとして示されているが、図７のシステムへサービスを提供する他のコンピューティング・オブジェクトおよびコンピューティング・デバイスを含むものであり得、かつ／または複数の相互接続されたネットワークを表すもので有り得るが、それらは図に示していない。また、コンピューティング・オブジェクト７１０、７１２など、またはコンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などのそれぞれは、アプリケーション７３０、７３２、７３４、７３６、７３８などのようなアプリケーションを含むことができ、アプリケーションは、本開示の様々な実施形態に従って提供されたアプリケーションとの通信やアプリケーションのインプリメンテーションに適切なＡＰＩ、または他のオブジェクト、ソフトウェア、ファームウェア、および／またはハードウェアを使用し得る。
【００４９】
[0056]  分散型コンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワーク構成がある。例えば、複数のコンピューティング・システムは、有線またはワイヤレスのシステムにより、ローカル・ネットワークや広く分散されたネットワークにより、共に接続することができる。現在、多くのネットワークはインターネットと接続されており、インターネットは、広く分散したコンピューティングに対するインフラストラクチャーを提供するものであり、かつ多くの異なるネットワークを含む。なお、任意のネットワーク・インフラストラクチャーを、様々な実施形態において説明したシステムによりなされる例示的な通信に、用いることができる。
【００５０】
[0057]  即ち、クライアント／サーバーや、ピア・ツー・ピアや、ハイブリッドのアーキテクチャー等のネットワーク・トポロジーおよびネットワーク・インフラストラクチャーのホストを用いることができる。「クライアント」は、１つのクラスまたはグループのメンバーであり、この１つのクラスまたはグループのメンバーは、それと関連していない別のクラスまたはグループのサービスを用いる。クライアントは、サービスを要求するプロセス、例えば、概略的には、命令やタスクの組とすることができ、このプロセスは、別のプログラムやプロセスにより提供されるサービスを要求するプロセスである。クライアントのプロセスは、要求したサービスを用いるが、他のプログラムやサービス自体の作業の詳細について「知る」必要は無い。
【００５１】
[0058]  クライアント／サーバーのアーキテクチャー、特にネットワーク型のシステムでは、クライアントは、通常はコンピューターであり、このコンピューターは、例えばサーバーである別のコンピューターにより提供される共有ネットワーク・リソースへ、アクセスする。図７では、限定ではない例として、コンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などを、クライアントと考えることができ、コンピューティング・オブジェクト７１０、７１２などを、サーバーと考えることができ、その場合、サーバーとして動作するコンピューティング・オブジェクト７１０、７１２などはデータ・サービスを提供し、そのデータ・サービスは、例えば、クライアントであるコンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などからデータを受け取ること、データを格納すること、データを処理すること、データをクライアントであるコンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などへ送ることなどである。なお、何れのコンピューターも、状況に応じて、クライアント、サーバー、またはそれら双方と考えることができる。
【００５２】
[0059]  サーバーは、典型的にはリモート・コンピューター・システムであり、リモートまたはローカルのネットワーク、例えば、インターネットやワイヤレス・ネットワーク・インフラストラクチャーを通じて、アクセス可能である。クライアントのプロセスは、第１のコンピューター・システムでアクティブにすることができ、サーバーのプロセスは、第２のコンピューター・システムでアクティブにすることができ、互いに通信媒体を介して通信し、それにより、分散型の機能を提供し、且つ複数のクライアントがサーバーの情報収集能力の利点を用いることを可能にする。
【００５３】
[0060]  通信ネットワーク７４０またはバスがインターネットであるネットワーク環境では、例えば、コンピューティング・オブジェクト７１０、７１２などをウェブ・サーバーとすることができ、そのウェブ・サーバーと、他のコンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などとが、多数の既知のプロトコルのうちの何れか、例えば、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）を介して、通信するようにできる。また、分散型コンピューティング環境の特徴であり得るが、サーバーとして動作するコンピューティング・オブジェクト７１０、７１２などは、例えば、コンピューティング・オブジェクトまたはデバイス７２０、７２２、７２４、７２６、７２８などのようなクライアントとして働くこともできる。
【００５４】
例示的なコンピューティング・デバイス
[0061]  述べたように、好都合なことに、ここで説明した技術は任意のデバイスに適用することができる。従って、手持ち型、ポータブル、および他のコンピューティング・デバイス、および全ての種類のコンピューティング・オブジェクトを、様々な実施形態と関連して使用することが可能であると考えられていることが、理解される。従って、図８における以下で説明する汎用リモート・コンピューターは、コンピューティング・デバイスの単なる一例である。
【００５５】
[0062]  実施形態は、部分的に、デバイスまたはオブジェクトに対するサービスの開発者による使用のために、オペレーティング・システムを介して実施することができ、かつ／またはここで説明した様々な実施形態の１以上の機能的特徴を実施するように動作するアプリケーション・ソフトウェア内に含ませることができる。ソフトウェアは、クライアント・ワークステーションやサーバーや他のデバイスなどのような１以上のコンピューターで実行されるプログラム・モジュールなどのような、一般的なコンピューター実行可能命令の脈絡で説明することができる。コンピューター・システムは、データの通信に使用できる様々な構成およびプロトコルを有し、従って、特定の構成やプロトコルが限定と考慮されないことを、当業者は理解するであろう。
【００５６】
[0063]  従って、図８は、適切なコンピューティング・システム環境の一例を示すものであり、このコンピューター・システム環境において、ここで説明した実施形態の１つまたは態様を実施することができる。なお、上記で明らかにしたが、このコンピューター・システム環境８００は、適切なコンピューティング環境の単なる一例であり、使用や機能の範囲に関する限定を示唆することを意図していない。更に、このコンピューター・システム環境８００は、この例示的なコンピューター・システム環境８００において示されるコンポーネントの何れか又はコンポーネントの組み合わせの何れかと関連する依存性を有するものとして解釈することを、意図していない。
【００５７】
[0064]  図８を参照すると、１以上の実施形態を実施するための例示的なリモート・デバイスは、コンピューター８１０の形態の汎用コンピューティング・デバイスを含む。コンピューター８１０のコンポーネントは、処理ユニット８２０、システム・メモリ８３０、およびシステム・メモリを含む様々なコンポーネントを処理ユニット８２０と結合するシステム・バス８２２を含み得るが、これらには限定されない。
【００５８】
[0065]  コンピューター８１０は、典型的には、様々なコンピューター読取可能媒体を含み、それらは、コンピューター８１０によりアクセス可能な任意の使用可能な媒体とすることができる。システム・メモリ８３０は、リード・オンリー・メモリ（ＲＯＭ）および／またはランダム・アクセス・メモリ（ＲＡＭ）などのような揮発性および／または不揮発性のメモリの形態のコンピューター・ストレージ・メモリを含むことができる。限定ではなく例として、システム・メモリ８３０はまた、オペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを含むことができる。
【００５９】
[0066]  ユーザーは、入力デバイス８４０を通じてコンピューター８１０へコマンドおよび情報を入力することができる。また、モニターまたは他のタイプのディスプレイ・デバイスも、出力インターフェース８５０などのようなインターフェースを介してシステム・バス８２２へ接続される。また、このコンピューターは、モニターに加えて、他の周辺出力デバイス、例えば、スピーカーやプリンターを含むことができ、それらも出力インターフェース８５０を通じて接続することができる。
【００６０】
[0067]  コンピューター８１０は、リモート・コンピューター８７０などのような１以上の他のリモート・コンピューターへの論理接続を用いて、ネットワーク型または分散型の環境で動作することができる。リモート・コンピューター８７０は、パーソナル・コンピューター、サーバー、ルーター、ネットワークＰＣ、ピア・デバイス、または他のコモン・ネットワーク・ノード（common network node）、または他の任意のリモートの媒体の消費または伝送のデバイス（remote media consumption or transmission device）であり得、また、上記でコンピューター８１０と関連して説明したエレメントの何れかまたは全てを含み得る。図８に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）やワイド・エリア・ネットワーク（ＷＡＮ）などのようなネットワーク８７２を含むが、他のネットワーク／バスを含むこともできる。そのようなネットワーク環境は、家庭、オフィス、エンタープライズ・ワイド・ネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
【００６１】
[0068]  上述のように、様々なコンピューティング・デバイスおよびネットワーク・アーキテクチャーと関連させて例示的な実施形態を説明したが、基礎的な概念は、リソースの使用の効率を改善することが望まれる任意のネットワーク・システムおよび任意のコンピューティング・デバイスまたはシステムに、適用することができる。
【００６２】
[0069]  また、同じまたは類似の機能を実施するための複数の手法、例えば、適切なＡＰＩ、ツール・キット、ドライバー・コード、オペレーティング・システム、コントロール、スタンドアローンまたはダウンロード可能なソフトウェア・オブジェクトなどがあり、これらは、アプリケーションおよびサービスが、ここで提供される技術の利点を得ることを可能にする。即ち、ここでの実施形態は、ＡＰＩ（または他のソフトウェア・オブジェクト）の観点から、およびここで説明した１以上の実施形態を実現するソフトウェア・オブジェクトまたはハードウェア・オブジェクトの観点から予期される。即ち、ここで説明した様々な実施形態は、完全にハードウェアの態様、部分的にハードウェアで部分的にソフトウェアの態様、およびソフトウェアの態様を有することができる。
【００６３】
[0070]  ここでは、「例示」という単語は、例や、事例や、実例を意味するものとして用いている。疑いをなくすためであるが、ここで開示した主題事項は、そのような例により限定されない。更に、ここで「例示」として説明した何れの態様や設計も、他の態様や設計よりも好適または好都合であると必ずしも解釈されるものではなく、また、当業者に知られた等価の例示的な構成および技術を除外することを意味しない。更に、用語「含む（includes）」、「有する（has）」、「包含する（contains）」、および類似の他の単語が使用される範囲において、疑いをなくすためであるが、それらのような用語は、特許請求の範囲において用いられた場合には、何れの追加のエレメントや他のエレメントも除外しない、オープン・トランジション・ワード（open transition word）としての用語「含む（comprising）」と同様の様式で、含むことを意図している。
【００６４】
[0071]  上述のように、ここで説明した様々な技術は、ハードウェアまたはソフトウェア、または、適切である場合にはそれらの組み合わせと関連して、実施することができる。ここで使用しているように、用語「コンポーネント」、「モジュール」、「システム」、およびそれらと同様のものは、同様に、コンピューター関連エンティティを示すことを意図しており、それは、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行中のソフトウェアの何れかである。例えば、コンポーネントは、プロセッサーで実行されるプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピューターであり得るが、これらには限定されない。例として、コンピューターで実行されるアプリケーションとコンピューターとの双方を、１つのコンポーネントとすることができる。１以上のコンポーネントが、１つのプロセスおよび／または実行のスレッドの中に存在することがあり、また、コンポーネントは、１つのコンピューターにローカライズされることも、２以上のコンピューターに分散されることもできる。
【００６５】
[0072]  上記のシステムは、幾つかのコンポーネントの間での対話と関連して説明した。そのようなシステムおよびコンポーネントが、それらのコンポーネントまたは指定されたサブコンポーネント、指定されたコンポーネントまたはサブコンポーネントのうちの幾つか、および／または追加のコンポーネントを含むことができ、上記のものの様々な置換や組み合わせに従いうることは、理解できる。また、サブコンポーネントは、親コンポーネント内に含まれるもの（階層的）としてではなく、他のコンポーネントと通信するように結合されたコンポーネントとして実施することができる。更に、１以上のコンポーネントを、１つのコンポーネントへと組み合わせて統合された機能を提供できること、また、幾つかの個別のサブコンポーネントへと分割できることに、留意されたい。また、そのようなサブコンポーネントへ通信するように結合する任意の１以上の中間層、例えば管理層（management layer）などを提供することにより、統合した機能を提供できることにも、留意されたい。また、ここで説明した何れのコンポーネントも、ここで特に説明していないが当業者には一般に知られている１以上の他のコンポーネントと、対話することができる。
【００６６】
[0073]  ここで説明した例示的なシステムを考慮すると、説明した主題事項に従って実施され得る方法も、様々な図のフローチャートを参照すると理解できる。説明を簡素にする目的で、方法は一連のブロックで示されて説明されているが、様々な実施形態はブロックの順序により限定されないことが、理解および認識される。なぜなら、幾つかのブロックは、ここで示されて説明された順とは別の順で生じることや、他のブロックと同時に生じることができるからである。非順次的な、または分岐した流れをフローチャートにより示す場合において、同様または類似の結果が得られる様々な別の分岐、フロー経路、およびブロックの順序を実施できることを、理解することができる。更に、幾つかの示したブロックは、ここで説明した方法の実施におけるオプションである。
【００６７】
結論
[0074]  本発明は、様々な変更や代替的構成が可能であり、その特定の例示的な実施形態を図に示し、詳細に説明した。しかし、本発明をここで説明した特定の形態に限定することは意図しておらず、本発明は、本発明の精神および範囲の中にある全ての変更、代替的構成、および等価物を網羅することを意図している、ということを理解すべきである。
【００６８】
[0075]  ここで説明した様々な実施形態に加えて、対応するエレメント（１以上）の機能から逸脱せずに同じまたは等価の機能を行うために、他の類似の実施形態を使用できることや、説明した実施形態（１以上）に対する変更や付加を行えることも、理解される。更に、複数の処理チップや複数のデバイスが、ここで説明した１以上の機能の実行を共有することができ、同様に、ストレージは、複数のデバイスにわたって達成することができる。従って、本発明は、何れの実施形態にも限定されず、特許請求の範囲に従った幅、精神、および範囲で解釈される。
【図１】
0005940149.tif 000002
【図２】
0005940149.tif 000003
【図３】
0005940149.tif 000004
【図４】
0005940149.tif 000005
【図５】
0005940149.tif 000006
【図６】
0005940149.tif 000007
【図７】
0005940149.tif 000008
【図８】
0005940149.tif 000009