(57)【特許請求の範囲】
【請求項１】
プロセッサを含むコンピュータシステムにおける、データベースのためのデータエンリッチメントを推奨するための方法であって、前記方法は、前記プロセッサが、
前記データベースのためのデータエンリッチメントの推奨を提供する要求を受けるステップと、
前記データベースのメタデータを解析するステップであって、該メタデータは、前記データベースの構造を定める、ステップと、
前記データベースのための第１のデータエンリッチメントを前記メタデータの前記解析に基づき推奨するステップであって、前記第１のデータエンリッチメントは前記データベースを補うためのものである、ステップと、
前記データベースのための第２のデータエンリッチメントを前記第１のデータエンリッチメントと前記第２のデータエンリッチメントの類似性に基づき提案するステップであって、前記第２のデータエンリッチメントは前記データベースを補うためのものである、ステップと、
前記第２のデータエンリッチメントを提供することが可能なデータソースを識別するステップであって、
前記第２のデータエンリッチメントのためのエンリッチメントデータを２つの異なるエンリッチメントを行うデータソースから取得する第１のクエリと第２のクエリの特性を比較するステップと、
最速のクエリを、前記第１のクエリと前記第２のクエリの前記特性の前記比較に基づき選択するステップと、
前記最速のクエリに関連付けられた前記エンリッチメントを行うデータソースの識別子を求めるステップと
により識別するステップと
を含む、方法。
【請求項２】
請求項１に記載の方法であって、前記第１のデータエンリッチメントを提供することが可能なデータソースを識別するステップであって、
前記メタデータ内で識別子を見つけるステップと、
前記識別子を前記第１のデータエンリッチメントに関連付けるデータ構造を用いて、前記識別子を前記データソースにマッピングするステップと
により識別するステップを更に含む方法。
【請求項３】
請求項２に記載の方法であって、前記メタデータ内で識別子を見つけるステップは、前記メタデータ内でカラム名を見つけるステップを含み、前記識別子を前記データソースにマッピングするステップは、識別子をデータエンリッチメントに関連付けるテーブルを用いるステップを含む、方法。
【請求項４】
請求項２に記載の方法であって、前記メタデータ内で識別子を見つけるステップは、前記メタデータ内でテーブル名を見つけるステップを含み、前記識別子を前記データソースにマッピングするステップは、識別子をデータエンリッチメントに関連付けるテーブルを用いるステップを含む、方法。
【請求項５】
請求項２に記載の方法であって、前記メタデータ内で識別子を見つけるステップは、前記メタデータ内で、記憶されているプロシージャ名を見つけるステップを含み、前記識別子を前記データソースにマッピングするステップは、識別子をデータエンリッチメントに関連付けるテーブルを用いるステップを含む、方法。
【請求項６】
請求項２に記載の方法であって、前記メタデータ内で識別子を見つけるステップは、前記データベースのカラムのデータタイプを見つけるステップを含み、前記識別子を前記データソースにマッピングするステップは、識別子をデータエンリッチメントに関連付けるテーブルをサーチするステップを含む、方法。
【請求項７】
請求項１に記載の方法であって、前記第１のデータエンリッチメントを推奨するステップは、前記第１のデータエンリッチメントの名前、前記第１のデータエンリッチメントの入力データタイプ及び前記第１のデータエンリッチメントの出力データタイプを送るステップを含み、前記名前、前記入力データタイプ、前記出力データタイプは、前記データベースを通じてデータエンリッチメントを参照するソフトウェアを開発する際に用いるためのものである、方法。
【請求項８】
請求項１に記載の方法であって、最速のクエリを前記比較に基づき選択するステップは、前記第１のクエリと前記第２のクエリのどちらが最小のレイテンシを有するかに応じて最速のクエリを選択するステップを含む、方法。
【請求項９】
請求項１に記載の方法であって、前記第１のデータエンリッチメントを示すものをグラフィカルインターフェースにて表示するステップを更に含む方法。
【請求項１０】
請求項１に記載の方法であって、
前記第２のデータエンリッチメントのためのエンリッチメントデータを２つの異なるエンリッチメントを行うデータソースから取得する第１のクエリと第２のクエリの特性を比較するステップは、前記第１のクエリと前記第２のクエリのクエリ時間を比較するステップを含み、
最速のクエリを、前記第１のクエリと前記第２のクエリの前記特性の前記比較に基づき選択するステップは、前記第１のクエリと前記第２のクエリのうちの最速のクエリを前記クエリ時間の比較に基づき選択するステップを含む、
方法。
【請求項１１】
請求項１０に記載の方法であって、前記第１のクエリと前記第２のクエリのうちの最速のクエリを前記クエリ時間の比較に基づき選択するステップは、前記第１のクエリと前記第２のクエリのうちの最速のクエリを、前記第１のクエリと前記第２のクエリのどちらが、前記第２のデータエンリッチメントのためのエンリッチメントデータを取得する際に最小のレイテンシを有するかに応じて選択するステップを含む、方法。
【請求項１２】
プロセッサと、
システムメモリと、
データ及び該データに関するメタデータを格納するデータベースであって、前記メタデータは前記データベースの構造を定める、データベースと、
コンピュータ実行可能命令を格納した１以上のコンピュータ記憶媒体と
を備えたシステムであって、前記コンピュータ実行可能命令は、前記システムを推奨エンジンとして機能させ、該推奨エンジンは、
前記データベースのためのデータエンリッチメントの推奨を提供する要求を受け、
前記メタデータを解析し、
前記データベースのための第１のデータエンリッチメントを前記メタデータの前記解析に基づき推奨し、前記第１のデータエンリッチメントは前記データベースを補うためのものであり、
前記データベースを補うために、前記データベースのための第２のデータエンリッチメントを前記第１のデータエンリッチメントと前記第２のデータエンリッチメントの類似性に基づき提案し、
前記第２のデータエンリッチメントを提供することが可能なデータソースを、
前記第２のデータエンリッチメントのためのエンリッチメントデータを２つの異なるデータソースから取得する第１のクエリと第２のクエリのうちの最速のクエリを、前記第１のクエリと前記第２のクエリのクエリ時間に基づき選択し、
最速のクエリに関連付けられた前記データソースの識別子を求める
ことにより識別する
ように構成された、システム。
【請求項１３】
請求項１２に記載のシステムであって、ＤＭＢＳ、前記データベース及び前記推奨エンジンは、ソフトウェアコンポーネントから遠隔に位置する１以上のサーバにおいてホストされ、前記ソフトウェアコンポーネントは、ソフトウェア開発者により前記データベースを増大させるために用いられる、システム。
【請求項１４】
請求項１２に記載のシステムであって、前記ＤＢＭＳ、前記データベース、前記推奨エンジン及びソフトウェアコンポーネントは、あるコンピュータにおいてホストされ、前記ソフトウェアコンポーネントはアプリケーションである、システム。
【請求項１５】
請求項１２に記載のシステムであって、前記第１のデータエンリッチメントを推奨するように構成された前記推奨エンジンは、
前記メタデータ内で識別子を見つけ、
前記識別子を前記第１のデータエンリッチメントに、前記識別子を前記第１のデータエンリッチメントに関連付けるデータ構造を用いてマッピングする
ように構成された推奨エンジンを含む、システム。
【請求項１６】
請求項１２に記載のシステムであって、第１のクエリと第２のクエリのうちの最速のクエリを選択するように構成された前記推奨エンジンは、最速のクエリを、前記第１のクエリと前記第２のクエリのどちらが最小のレイテンシを有するかに応じて選択するように構成された推奨エンジンを含む、システム。
【請求項１７】
コンピュータ実行可能命令を含むコンピュータ記憶媒体であって、前記コンピュータ実行可能命令は、コンピュータにあるアクションを実行させ、該アクションは、
データベースのためのデータエンリッチメントの推奨を提供する要求を受けることと、
前記データベースのメタデータを解析することであって、該メタデータは、前記データベースの構造を定める、ことと、
前記データベースのための第１のデータエンリッチメントを前記メタデータの前記解析に基づき推奨することであって、前記第１のデータエンリッチメントは前記データベースを補うためのものである、ことと、
前記データベースを補うために、前記データベースのための第２のデータエンリッチメントを前記第１のデータエンリッチメントと前記第２のデータエンリッチメントの類似性に基づき提案することと、
前記第２のデータエンリッチメントを提供することが可能なデータソースを識別するスことであって、
異なるデータソースからの前記第２のデータエンリッチメントのためのエンリッチメントデータにアクセスする第１のクエリと第２のクエリのうちの、最速のクエリ時間を有するクエリを選択し、
前記クエリに関連付けられたデータソースの識別子を求める
ことにより識別することと
を含む、コンピュータ記憶媒体。
【請求項１８】
請求項１７に記載のコンピュータ記憶媒体であって、前記アクションは、推奨をエンリッチメントを行うデータソースに関連付けるデータ構造を受けることと、前記推奨及び該推奨の関連付けられたエンリッチメントを行うデータソースの少なくとも一部をグラフィカルインターフェースを介して表示することとを更に含む、コンピュータ記憶媒体。
【請求項１９】
請求項１７に記載のコンピュータ記憶媒体であって、前記アクションは、前記第１のデータエンリッチメントを推奨することに関して満たされるべき１以上のポリシーを提供することを更に含む、コンピュータ記憶媒体。
【請求項２０】
請求項１７に記載のコンピュータ記憶媒体であって、第１のクエリと第２のクエリのうちの、最速のクエリ時間を有するクエリを選択することは、前記第１のクエリと前記第２のクエリのうちの、最小のレイテンシを有するクエリを選択することを含む、コンピュータ記憶媒体。
【請求項２１】
請求項１７から２０のうちの何れか一項に記載のコンピュータ実行可能命令を含むコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]データベースは、今日の業務において一般的な物品である。非常に単純な業務用ソフトウェアアプリケーションであっても、多くの場合、データベースの使用を含む。データベースの使用が増加するにつれて、業務や他のデータベースにおいて見つかるデータを増加させるデータを提供するデータソースもまた、増えている。例えば、ソフトウェア開発者が、住所を決定するために、データベースにアクセスするソフトウェアアプリケーションを作成することがありうる。インターネット上では、ある目的地に行くための指示を含む地図を生成するデータソースが、いくつか利用可能である。別の例では、インターネット上には、気象情報を提供するいくつかのサイトが存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
実際、非常に多くのデータソースが利用可能であるため、ソフトウェア開発者が、これらのデータソースを発見して用いることは容易でない。
[0002]本明細書に特許請求されている主題は、上述したような環境においてだけ、どのような短所でも解決したり、動作したりする実施形態に限定されることはない。そうではなく、この背景は、本明細書に記載されているいくつかの実施形態を実施することが可能な、ある例示的な技術領域を説明するためだけに提供されている。
【課題を解決するための手段】
【０００３】
[0003]簡単には、本明細書に記載されている主題の態様は、データソースを推奨することに関する。複数の態様において、データベースのためにデータエンリッチメントの推奨を提供する要求が、推奨エンジンにおいて受け取られる。この推奨エンジンは、データベースと関連するデータの静的および動的な解析を実行することができ、更には、ポリシーに基づいて推奨を洗練することもできる。次に、推奨エンジンは、もし存在する場合にはデータエンリッチメントの推奨を提供することにより、例えばソフトウェア開発者が、データエンリッチメントが用いられるべきかどうかを示すことを可能にする。
【図面の簡単な説明】
【０００４】
【図１】[0004]本明細書に記載されている主題の態様を組み入れることが可能な例示的な汎用コンピューティング環境を表すブロック図である。
【図２】[0005]本明細書に記載されている主題の態様を実装可能な例示的な環境を表すブロック図である。
【図３】[0006]本明細書に記載されている主題の態様によって生じうる例示的なアクションを概略的に表す流れ図である。
【図４】本明細書に記載されている主題の態様によって生じうる例示的なアクションを概略的に表す流れ図である。
【発明を実施するための形態】
【０００５】
定義
[0007]本明細書では、「含む」という語およびその変形は、「含むが、それには限定されない」ことを意味する非限定的な用語であると解釈されるべきである。「または」という語は、文脈から他の意味であることが明らかに示唆されていない限り、「および／または」と解釈されるべきである。「基づく」という語は、「少なくとも部分的に基づく」と解釈されるべきである。「ある実施形態（one embodiment、an embodiment)」という語は、「少なくともひとつの実施形態」と解釈されるべきである。「別の実施形態」という語は、「少なくとも１つの他の実施形態」と解釈されるべきである。
【０００６】
[0008]本明細書では、「ａ」、「ａｎ」、「ｔｈｅ」などの語は、指示されている項目またはアクションの１つまたは複数を含む。特に、特許請求の範囲においては、ある項目の参照は、そのような項目が少なくとも１つは存在していることを全体的に意味し、あるアクションへの参照は、その行為の少なくとも１つの例が実行されることを意味する。
【０００７】
[0009]本明細書では、「第１」、「第２」、「第３」などという語が使用されることがある。追加の文脈ではなく、特許請求の範囲におけるこれらの語の使用は、順序を含意することを意図するのではなく、むしろ識別の目的で用いられている。例えば、「第１のバージョン」および「第２のバージョン」という句は、必ずしも、第１のバージョンが真に第１のバージョンであり、または、第２のバージョンよりも前に生成されたことを意味するのではなく、第１のバージョンが第２のバージョンよりも前に要求または処理されることを意味するのでもない。むしろ、これらの句は、別のバージョンであることを識別するために用いられている。
【０００８】
[0010]見出しはあくまでも便宜のためであり、与えられたトピックに関する情報は、そのトピックを示す見出しが付されているセクション以外の箇所に見いだされる場合もありうる。
【０００９】
[0011]これ以外の定義は、明示的なものも、非明示的なものも、以下に含まれている場合がありうる。
例示的な動作環境
[0012]図１は、本明細書に記載されている主題の態様を実現することができる適切なコンピューティングシステム環境１００の一例を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本明細書に記載されている主題の形態の使用範囲や機能に関して、何の限定も示唆することを意図していない。また、例示的な動作環境１００において示されるコンポーネントのどのような１つまたはその組み合わせに関して、いかなる依存性や要件を有するように、コンピューティング環境１００を解釈してはならない。
【００１０】
[0013]本明細書に記載されている主題の形態は、複数の他の汎用または特殊目的のコンピューティングシステム環境または構成とであっても、動作する。本明細書に記載されている主題の態様と共に使用するのに適していると考えられる周知のコンピューティングシステム、環境、または構成の例には、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサーシステム、マイクロコントローラベースのシステム、セットトップボックス、プログラマブル家電機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、ゲームデバイス、プリンタ、セットトップを含む機器、メディアセンター、または他の機器、車両組み込み型もしくは取り付け型のコンピューティングデバイス、他のモバイルデバイス、以上のシステムまたはデバイスの内の任意のものを含む分散型コンピューティング環境等が含まれる。
【００１１】
[0014]本明細書に記載されている主題の形態は、コンピュータによって実行されるプログラムモジュールなど、コンピュータ実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、これらは、特定のタスクを実行するか、または特定の抽象データタイプを実現する。また、本明細書に記載されている主題の態様は、分散型コンピューティング環境でも使用することができ、この場合、通信ネットワークを通じてリンクされているリモート処理デバイスによってタスクが実行される。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモート双方のコンピュータ記憶媒体に配置することができる。
【００１２】
[0015]図１を参照すると、本明細書に記載されている主題の態様を実現するシステム例は、コンピュータ１１０の形態である汎用コンピューティングデバイスを含む。コンピュータは、命令を実行することができる任意の電子デバイスを含みうる。コンピュータ１１０のコンポーネントは、処理ユニット１２０、システムメモリ１３０、およびシステムバス１２１を含みうる。システムバス１２１は、システムメモリを含む様々なシステムコンポーネントを処理ユニット１２０に結合する。システムバス１２１は、メモリバスまたはメモリコントローラー、周辺バス、および様々なバスアーキテクチャーのうち任意のものを用いるローカルバスを含む、様々なタイプのバス構造のうち任意のものでよい。一例としては、そして限定ではないが、このようなアーキテクチャーは、業界標準アーキテクチャー（ＩＳＡ）バス、マイクロチャネルアーキテクチャー（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカルバス、メザニンバス(Mezzanine bus)としても知られている周辺コンポーネント相互接続（ＰＣＩ）バス、周辺コンポーネント相互接続拡張（ＰＣＩ−Ｘ）バス、高度グラフィクスポート（ＡＧＰ）、およびＰＣＩエクスプレス（ＰＣＩｅ）を含む。
【００１３】
[0016]コンピュータ１１０は、典型的には、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、リムーバブルおよび非リムーバブルな媒体を含む。一例として、そして限定ではないが、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含みうる。
【００１４】
[0017]コンピュータ読み取り可能記憶媒体は、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブルな媒体を含み、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータというような、情報の任意の記憶方法または技術で実現される。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、あるいは所望の情報を格納するために用いることができ、コンピュータ１１０によってアクセスされうる任意のその他の媒体が含まれる。
【００１５】
[0018]通信媒体は、典型的には、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または搬送波や他の伝送メカニズムのような変調データ信号における他のデータを具体化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その信号における情報をエンコードするようにその特性の１つまたは複数が設定または変化させられている信号を意味する。一例として、そして限定ではないが、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、ＲＦ、赤外線、および他のワイヤレス媒体などのワイヤレス媒体を含む。以上のうちの任意のものの組み合わせもまた、コンピュータ読み取り可能媒体の範囲に含まれるべきである。
【００１６】
[0019]システムメモリ１３０は、リードオンリメモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、起動中の間などに、コンピュータ１１０内のエレメント間における情報の転送を補助する基本ルーチンを含み、ＲＯＭ１３１に格納されているのが典型的である。ＲＡＭ１３２は、典型的には、処理ユニット１２０が直ちにアクセス可能であるデータおよび／またはプログラムモジュール、および／または現在処理ユニット１２０によって処理されているデータおよび／またはプログラムモジュールを含む。一例として、そして限定ではないが、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００１７】
[0020]また、コンピュータ１１０は、その他のリムーバブル／非リムーバブルであり、揮発性／不揮発性のコンピュータ記憶媒体も含むことがある。一例として示しているだけであるが、図１は、非リムーバブルで不揮発性の磁気媒体からの読み取りおよびこれへの書き込みを行うハードディスクドライブ１４１、リムーバブルで不揮発性の磁気ディスク１５２からの読み取りおよびこれへの書き込みを行う磁気ディスクドライブ１５１、ならびにＣＤＲＯＭまたはその他の光媒体のようなリムーバブルで不揮発性の光ディスク１５６からの読み取りおよびこれへの書き込みを行う光ディスクドライブ１５５を図解している。この例示的な動作環境で使用可能なその他のリムーバブル／非リムーバブルで揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、他の光ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１４１は、インターフェース１４０を介してシステムバス１２１に接続することができ、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、インターフェース１５０のようなリムーバブルで不揮発性のメモリのためのインターフェースによって、システムバス１２１に接続することができる。
【００１８】
[0021]先に論じた図１に図解されているドライブおよび関連のコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、およびコンピュータ１１０のその他のデータの格納を提供する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するように図解されている。なお、これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じ場合もあるし、異なる場合もあることに注意すべきである。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくともこれらが異なるコピーであることを示すように、本明細書では異なる番号が与えられている。
【００１９】
[0022]ユーザは、キーボード１６２のような入力デバイス、および一般にマウス、トラックボールまたはタッチパッドと称されるポインティングデバイス１６１を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力デバイス（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星ディッシュ、スキャナー、タッチスクリーン、ライティングタブレット等を含むことがある。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース１６０を介して、処理ユニット１２０に接続されている。ユーザ入力インターフェース１６０は、システムバスに結合されているが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）のようなその他のインターフェースおよびバス構造によって接続されうる。
【００２０】
[0023]モニタ１９１またはその他の形式のディスプレイデバイスも、ビデオインターフェース１９０のようなインターフェースを介して、システムバス１２１に接続されている。モニタに加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のようなその他の周辺出力装置も含むことがあり、これらは出力周辺インターフェース１９５を通じて接続されうる。
【００２１】
[0024]コンピュータ１１０は、リモートコンピュータ１８０のような１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク接続環境において動作することも可能である。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバー、ルーター、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードとすることができ、図１にはメモリ記憶装置１８１のみが示されているが、典型的には、コンピュータ１１０に関して先に説明したエレメントの多くまたはすべてを含む。図１に示されている論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むこともありうる。このようなネットワーク環境は、事務所、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて、一般的である。
【００２２】
[0025]ＬＡＮネットワーク環境で用いられるとき、コンピュータ１１０は、ネットワークインターフェースまたはアダプター１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で用いられるときには、コンピュータ１１０は、モデム１７２、またはインターネットのようなＷＡＮ１７３を通じて通信を確立するためのその他の手段を含みうる。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０またはその他のしかるべき機構を介してシステムバス１２１に接続されうる。ネットワーク接続された環境では、コンピュータ１１０に関して図示されているプログラムモジュール、またはその一部は、リモートメモリ記憶装置に格納されうる。一例として、そして限定ではないが、図１は、リモートアプリケーションプログラム１８５をメモリ装置１８１に存在するものとして示している。なお、図示されているネットワーク接続は例示であり、複数のコンピュータ間で通信リンクを確立する他の手段を用いることが可能であることが理解されるであろう。
【００２３】
データエンリッチメント
[0026]先に述べたように、ソフトウェア開発者が増大するデータソースを発見し用いることは、容易でない。図２は、本明細書に記載されている主題の態様を実装することができる例示的環境を表すブロック図である。図２に図解されているコンポーネントは例示的なものであり、必要となるまたは含まれうるコンポーネントのすべてを含むことは意図していない。他の実施形態では、図２との関係で説明されるコンポーネントが、本明細書に記載されている主題の諸態様の精神または範囲から逸脱することなく、他のコンポーネント（図示されているまたは図示されていない）に含まれること、または、下位のコンポーネントに配置されることがありうる。
【００２４】
[0027]本明細書で用いられるコンポーネントという用語は、あるデバイスの全体または一部などのハードウェア、１つまたは複数のソフトウェアモジュールまたはその部分の集まり、１つまたは複数のソフトウェアモジュールまたはその部分と１つまたは複数のデバイスまたはその部分との何らかの組み合わせなどを含むように読まれるべきである。
【００２５】
[0028]図２を参照すると、この環境は、アプリケーション２０５、データベース管理システム（ＤＭＢＳ）２０６、エンリッチメントを行うデータソース２０７、推奨エンジン２０８、データストア２１０および２１１、ならびにそれ以外のコンポーネント（図示せず）を含みうる。
【００２６】
[0029]これらの様々なコンポーネントは、相互に比較的近接して配置される（例えば、同じマシンに、または同じネットワーク上の複数のマシンに）ことがありうるし、または、世界中に分散されることもありうる。これらの様々なコンポーネントは、オフィス内のネットワークとオフィス間のネットワークとを含む様々なネットワークを介して相互に通信することができる。
【００２７】
[0030]アプリケーション２０５、ＤＢＭＳ２０６、エンリッチメントを行うデータソース２０７、および推奨エンジン２０８は、１つまたは複数のコンピューティングデバイスを含む、または１つまたは複数のコンピューティングデバイス上に存在する。そのようなデバイスは、例えば、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサーシステム、マルチコントローラーベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、ゲームデバイス、プリンタ、セットトップ、メディアセンターまたは他の機器を含む機器、車両組み込みまたは車両付随のコンピューティングデバイス、他の携帯デバイス、以上のシステムまたはデバイスの任意のものを含む分散型コンピューティング環境などを含みうる。上述したものの１つとして動作するように構成されうる例示的なデバイスが、図１のコンピュータ１１０を構成する。
【００２８】
[0031]アプリケーション２０５は、図２の他のエンティティの１つまたは複数との通信が可能なプロセスを含みうる。本明細書で用いられている「プロセス」という用語およびその変形例は、１つまたは複数の伝統的プロセス、スレッド、コンポーネント、ライブラリ、タスクを実行するオブジェクトなどを含みうる。プロセスは、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせにおいて、実装可能である。ある実施形態では、プロセスは、どのように称されるにしても、あるアクションを実行することができる、または、あるアクションを実行する際に用いられる、任意の機構である。プロセスは、複数のデバイスに分散されることがあるし、または、単一のデバイスでもありうる。同様に、アプリケーション２０５は、１つまたは複数のデバイスに分散されている複数のコンポーネントを有することがある。
【００２９】
[0032]ある実施形態では、アプリケーション２０５は、ソフトウェア開発ツールを含むことがある。ソフトウェア開発ツールは、ソフトウェア開発者が、コードを入力および更新し、コードをデバグし、データベースを作成および更新し、コードを１つまたは複数のデータベースと関連付け、コードをコンパイルし、パッケージを作成し、それ以外のアクションを行うことなどを可能にする統合型開発環境（ＩＤＥ）を実装しうる。
【００３０】
[0033]データストア２１０におけるデータは、ＤＢＭＳ２０６を介してアクセス可能である。ＤＢＭＳは、データベースの組成、格納、管理、およびデータ検索を制御する１つまたは複数のプログラムを含みうる。ＤＢＭＳは、データベースにおけるデータへのアクセスの要求を受け取り、このアクセスを提供するのに必要な動作を実行することができる。本明細書において用いられているアクセスとは、データの読み出し、データの書き込み、データの消去、データの更新、以上の２つまたはそれより多くを含む組み合わせなどを含みうる。
【００３１】
[0034]データストア２１０上に格納されたデータベースは、リレーショナルデータベース、オブジェクト指向データベース、階層的データベース、ネットワークデータベース、他のタイプのデータベース、以上のものの何らかの組み合わせまたは拡張などを含みうる。データベースに格納されているデータは、テーブル、レコード、オブジェクト、それ以外のデータ構造などに編成されうる。データベースに格納されているデータは、専用のデータベースファイル、専用のハードドライブパーティション、ＨＴＭＬファイル、ＸＭＬファイル、スプレッドシート、フラットファイル、文書ファイル、コンフィギュレーションファイル、それ以外のファイルなどに格納されうる。データベースは、そのデータベースに対してリードオンリであるデータセットを参照する場合も、または、そのデータセットを読み出しかつ書き込む能力を有する場合もありうる。
【００３２】
[0035]本明細書に記載されている主題の諸態様を説明する際には、簡潔にするために、ときには、リレーショナルデータベースに関連する用語が本明細書で用いられる。本明細書においてリレーショナルデータベースの用語が用いられることもあるが、本明細書に本明細書に記載の教示は、上述した他のタイプのデータベースにも適用することができる。
【００３３】
[0036]エンリッチメントを行うデータソース２０７は、データを供給できる任意のエンティティを含みうる。例えば、エンリッチメントを行うデータソース２０７は、データ（例えば、郵便番号）を受け取りそれに応答してデータ（例えば、気象情報）を提供するサービスを含みうる。他の例としては、エンリッチメントを行うデータソース２０７は、現実のまたは遅延した株価（real or delayed stock prices）を提供するサービスを含みうる。エンリッチメントを行うそれぞれのデータソースは、１つまたは複数のコンピュータによって実行されるプロセスを介して実装されうる。
【００３４】
[0037]データストア２１０上に格納されているデータベースは、エンリッチメントを行うデータソース２０７によってエンリッチメントが可能である。ＤＢＭＳ２０６は、エンリッチメントを行うデータソース２０７からデータを取得し、それがＤＢＭＳ２０６によって管理されているデータベースから来ているかのように、（例えば、アプリケーション２０５に）そのデータを生じさせることができる。エンリッチメントを行うデータソース２０７から取得可能なデータは、本明細書において、データエンリッチメントと称されることがある。例えば、ＤＢＭＳ２０６は、データベースにおいて発見した郵便番号情報を用いて、エンリッチメントを行うデータソースから気象情報を取得することができる。この気象情報は、ＤＢＭＳ２０６によって開示されるテーブルの１つまたは複数のカラムを介してアクセス可能でありうる。
【００３５】
[0038]ＤＢＭＳ２０６は、データストア２１０のデータベースが提供されているデータエンリッチメントを示す情報を格納することができる。データベースからのデータを提供する際に、ＤＢＭＳ２０６は、データエンリッチメントを利用可能にすることもできる。
【００３６】
[0039]ある実施形態では、推奨エンジン２０８はデータエンリッチメントの推奨をＤＢＭＳ２０６に提供し、すると、ＤＢＭＳ２０６が、これらの推奨をアプリケーション２０５に提供することができる。別の実施形態では、推奨エンジン２０８は、データエンリッチメントの推奨を直接にアプリケーション２０５に提供することもできる。推奨は、推奨の名称またはそれ以外の識別子、その推奨と関連するデータエンリッチメントによって必要とされる入力データタイプ、およびデータエンリッチメントによって提供される出力データタイプを含みうる。
【００３７】
[0040]推奨エンジン２０８は、これらの推奨を、様々な方法で決定することができる。例えば、それらの方法のいくつかは、以下のものを含む。
[0041]１．動的解析。ＤＢＭＳ２０６は、ＤＢＭＳ２０６によって実行されるクエリに関する統計的な情報を収集することができる。この情報は推奨エンジン２０８に提供されうるが、推奨エンジン２０８は、この情報を用いて新たなエンリッチメントおよびデータソースを提案することができる。例えば、クエリがＣＯＭＰＡＮＹＦＩＮＡＮＣＩＡＬのエンリッチメントを用いる場合には、推奨エンジン２０８はＣＯＭＰＡＮＹＮＥＷＳのエンリッチメントも同様に推奨することがありうる。この推奨は、両方のエンリッチメントが会社名を入力として用いているために、提供されうるのである。
【００３８】
[0042]動的解析を用いてエンリッチメントを決定するために、推奨エンジン２０８は、複数のエンリッチメントの間でマッピングを行うデータ構造を用いることがある。例えば、推奨エンジン２０８は、それぞれのローが第１のエンリッチメントと第２のエンリッチメントとのフィールドを含む複数のローを含むテーブルを維持しているか、またはそのようなテーブルを提供されていることがある。第２のエンリッチメントは、第１のエンリッチメントに基づいて推奨されるデータエンリッチメントである。ゼロまたはそれよりも多くのローを用いることにより、このテーブルは、第１のエンリッチメントを、その第１のエンリッチメントに基づいて推奨されうるゼロまたはそれより多くの他のエンリッチメントにマッピングするのに用いることができる。
【００３９】
[0043]クエリ時間のような統計は、現時点で用いられているデータソースとは異なるインデクスが付されているデータソースを推奨するのに用いられることがある。例えば、株式ティッカー（stock ticker）データソースは、会社名または（例えばＭＳＦＴのような）株式コード（stock symbol）を用いて最新の株価を提供するのに用いることができる。会社名が提供されると、株式ティッカーデータソースは、その会社がその証券市場で知られている株式コードを参照する必要がありうる。すると、データソースがこの株式コードを用いて、ティッカーデータを取得することができる。
【００４０】
[0044]ティッカーデータを取得するのに上述の方法を用いずに、株式コードを受け取るデータソースは、直ちにそのティッカーデータを直接取得することができ、それにより、会社名をティッカー名に変換しなければならないデータソースよりも高速でデータを取得することができる。会社のテーブルが株式コードのフィールドを有しているにもかかわらず、ティッカーデータを得るのに会社名のデータエンリッチメントを用いている場合には、推奨エンジン２０８は、株式コードのフィールドが代わりに用いられるべきであることを推奨することができる。あるいは、推奨エンジン２０８は、会社テーブルのそれぞれの会社に対する株式コードを含む株式コードエンティティを推奨し、更に、株式コードエンティティに基づくエンリッチメントを推奨することができる。
【００４１】
[0045]２．静的解析。データベースに格納されているデータは、テーブル、カラム、プロシージャ、拡張マークアップ言語（ＸＭＬ）などを含む、データベースオブジェクトに関する構造的メタデータを有する。この構造的メタデータを調べることにより、データベースによって格納され処理されるデータの種類を決定することができる。構造的メタデータのいくつかの例には、テーブル名、カラム名、記憶されているプロシージャ名、カラムデータタイプ、それ以外のオブジェクト名などが含まれる。
【００４２】
[0046]例えば、会社と称されるテーブルは、このテーブルは会社情報を有するということを示しうる。会社と称されるテーブルでは、名称と称されるカラムが会社の名称を示しうる。このメタデータは、会社テーブルの中の名称カラムは会社の名称であることを判断するのに用いることができる。次に、これは、ＣＯＭＰＡＮＹＦＩＮＡＮＣＩＡＬエンリッチメント、ＣＯＭＰＡＮＹＮＥＷＳエンリッチメント、ＣＯＭＰＡＮＹＳＯＣＩＡＬＮＥＴＷＯＲＫＳエンリッチメント、およびそれ以外の会社エンリッチメントなど、会社に関するエンリッチメントの推奨を提供するのに用いられうる。
【００４３】
[0047]静的解析のためのデータエンリッチメントの決定を容易にするために、識別子（例えば、名称）をその名称と関連する１つまたは複数のエンリッチメントにマッピングするデータ構造が用いられることがある。例えば、推奨エンジン２０８は、それぞれのローがメタデータ属性（例えば、テーブル名、カラム、名称、データタイプ）の１つまたは複数のフィールドを含む複数のローを含むテーブルと、そのメタデータ属性に基づいて推奨されるデータエンリッチメントとを維持しているか、またはそれらを提供されていることがある。ゼロまたはそれよりも多くのローを用いることにより、このテーブルは、メタデータ属性を、そのメタデータ属性に基づいて推奨されうるゼロまたはそれよりも多くの他のエンリッチメントにマッピングするのに用いることができる。
【００４４】
[0048]カラムデータタイプに基づいて推奨されうるデータエンリッチメントの例として、メタデータは、カラムがＧＥＯＭＥＴＲＹデータタイプを用いることを示すことがある。それに応答して、推奨エンジン２０８は、ＬＯＣＡＴＩＯＮエンティティとそのＬＯＣＡＴＩＯＮエンティティに関連するエンリッチメント（例えば、天候、犯罪率、人口密度、人口統計情報（demographics）、住宅統計など）とを推奨することができる。
【００４５】
[0049]カラムデータタイプもまた、データベース自体におけるデータを調べることにより決定することができる。例えば、あるテーブルにおけるカラムを調べることにより、推奨エンジン２０８は、それらのカラムが住所を表していることを判断することができる。これは、例えば、カラムにおけるデータを用いて住所を参照しようとすることによって、実行することができる。推奨エンジン２０８は、カラムが住所を表しているといったん判断すると、本明細書において記載されているマッピング技術を用いて、住所に基づくデータエンリッチメントを推奨することができる。
【００４６】
[0050]同様に、データベースの中のデータの静的解析は、データベースに含まれているデータに関する追加の情報を生じさせることができる。この情報は、データエンリッチメントを推奨するのにも用いることができる。
【００４７】
[0051]３．ポリシー。推奨は、ポリシーに基づいてなされうる。これらのポリシーは、アプリケーション２０５によって、またはそれ以外の方法によって、定義されうる。ポリシーとは、条件の評価に基づいて推奨を制限する１つまたは複数の条件を有する規則であると考えることができる。例えば、ポリシーは、取引コスト、データソースの格付け、サービス契約約款（ＳＬＡ）、当該データがデータベースにおいて継続することが許容されているかどうか、またはその他の条件に基づくことがありうる。例えば、ポリシーは、データエンリッチメントのための価格がある特定の額よりも低い限り、そのデータエンリッチメントの推奨が許容されることを示すことがある。
【００４８】
[0052]４．ディレクトリ。利用可能なデータエンリッチメントは、サーチ可能でありうる。例えば、推奨エンジン２０８は、データエンリッチメントとそれに対応するデータソースとのリストを、ソフトウェア開発者などが問い合わせできるテーブルにおいて提供することができる。このテーブルは、入力として受け入れられ出力として生成されるデータのタイプを示すことができる。このテーブルは、また、ライセンス上の制約、（もし存在するならば）コスト、データエンリッチメントに関するその他のデータなどを含むことがある。
【００４９】
[0053]データストア２１１は、推奨のために用いられるデータを格納するストアである。このデータは、例えば、マッピングデータ、利用可能なデータエンリッチメントのディレクトリ、価格設定、パフォーマンスおよび信頼性データ、データソースに関するライセンス契約などを含みうる。
【００５０】
[0054]データストア２１０−２１１は、データを格納することができる任意の記憶媒体を用いて実装することが可能である。ストアには、揮発性メモリ（例えば、キャッシュ）と不揮発性メモリ（例えば、永続性記憶装置）とを含みうる。ストアは、ファイルシステム、データベース、ＲＡＭなどの揮発性メモリ、その他の記憶装置、以上の何らかの組み合わせなどを用いて実装することが可能であり、複数のデバイスに分散させることができる。
【００５１】
[0055]データという用語は、１つまたは複数のコンピュータの記憶要素によって表される任意のものを含むように、広義に解釈されるべきである。論理的には、データは、揮発性または不揮発性のメモリにおける１と０の列として表すことができる。バイナリではない記憶媒体を有するコンピュータの場合には、データは、そのような記憶媒体の性能に従って表されうる。データは、異なるタイプのデータ構造として編成することが可能であり、そのようなデータ構造には、数字や文字などの単純なデータタイプ、階層的、リンク付き、またはその他の関係を有するデータタイプ、複数の他のデータ構造または単純なデータタイプを含むデータ構造などを含みうる。
【００５２】
[0056]図３および４は、本明細書に記載されている主題の諸態様に従って生じうる例示的なアクションを一般的に表す流れ図である。説明を簡潔にするために、図３および４に関する説明の方法について示し、一連の動作として説明しておく。本明細書に記載されている主題の態様は説明されている動作に、および／または、動作の順序に限定されないことを理解すべきである。ある実施形態では、これらの動作は、以下で説明される順序で生じる。しかし、他の実施形態では、これらの動作は、平行して、別の順序で、および／または本明細書に提示も記載もない他の動作を伴って、生じることがありうる。更に、本明細書に記載されている主題の諸態様による方法を実装するのに、説明されているすべての動作が要求されるわけではない。更に、この方法は、状態図を介して一連の相互に関連する状態として、またはイベントとして、代替的に表されうることを、当業者であれば理解し諒解しうるであろう。
【００５３】
[0057]次に図３を参照すると、ブロック３０５において、アクションが開始する。ブロック３１０では、データベースのためのデータエンリッチメントの推奨を提供する要求が受け取られる。例えば、図２を参照すると、アプリケーション２０５、ＤＢＭＳ２０６、または何らかのそれ以外のコンポーネントが、ＤＢＭＳによって管理されるデータベースのためのデータエンリッチメントの推奨が推奨エンジン２０８によって提供されるべきだということを要求しうる。
【００５４】
[0058]ブロック３１５では、メタデータの解析が実行されうる。例えば、図２を参照すると、推奨エンジン２０８は、ＤＢＭＳ２０６によって供給されるデータベースに関するメタデータをデータストア２１１に関するマッピング情報と共に用いて、提供すべき１つまたは複数の推奨を決定することができる。更に、推奨エンジン２０８は、ポリシーの条件を評価することで、推奨をポリシーに違反しないものに限定することができる。
【００５５】
[0059]ある実施形態においては、推奨提供への要求を受け取った後でメタデータの解析が実行されうるが、別の実施形態では、そのような要求を受け取る前に解析が実行されることもある。ある実施形態では、この解析は、データベースに関するメタデータが変化するのにつれて推奨の更新を続ける継続的なプロセスである。
【００５６】
[0060]ある実装形態では、メタデータの解析は、以下の例示的なアクションを含みうる。
[0061]１．データベースと関連するメタデータの取得。これは、ＤＢＭＳからデータを要求すること、（要求することなく）データをＤＢＭＳから受け取ること、またはその他のなんらかの機構を含みうる。
【００５７】
[0062]２．メタデータの中に識別子を見いだすこと。これは、１つまたは複数のテーブル、カラム、格納されているプロシージャ、またはそれ以外のデータベースオブジェクトの名称を見つけることを含みうる。
【００５８】
[0063]３．識別子をデータエンリッチメントと関連付けるデータ構造を用いて、識別子をデータエンリッチメントにマッピングすること。これは、１つまたは複数の識別子を含むテーブルまたはそれ以外のデータ構造を、１つまたは複数の他の識別子を識別するキーとして用いることを含みうる。例えば、テーブルまたはカラムの「会社」という名称は、データ構造における関連のエンリッチメントを見つけるのに用いることができる。他の例として、そのテーブルのカラムの「株式コード」という名称を、関連する株式ティッカーのエンリッチメントを見つけるために、共に用いることができる。
【００５９】
[0064]ブロック３２０では、動的解析が実行されうる。例えば、図２を参照すると、推奨エンジン２０８は、データベースに対して発行された１つまたは複数のクエリを解析して、データエンリッチメントのための推奨を決定することができる。例えば、あるクエリがあるデータエンリッチメントを示している場合には、このデータエンリッチメントを用いて、同様のデータ構造のマッピングを用いた他のデータエンリッチメントを識別することができる。更に、推奨エンジン２０８は、ポリシーの条件を評価することにより、推奨をポリシーに違反しないものに制限することができる。
【００６０】
[0065]ある実装形態では、動的解析は、データベースに対して発行されたクエリの解析を含みうる。この実装形態では、推奨の決定は、以下の例示的なアクションによって実行されうる。
【００６１】
[0066]１．少なくとも１つのクエリによって基準とされた第１のデータエンリッチメントの第１の識別子を取得すること。例えば、そのクエリがデータエンリッチメント（「ＣＯＭＰＡＮＹＦＩＮＡＮＣＩＡＬ」）の識別子（例えば、名称）を含む場合には、その識別子を取得することができる。
【００６２】
[0067]２．データエンリッチメントの識別子を関連付けるデータ構造を用いて、第１の識別子を第２のデータエンリッチメントの第２の識別子にマッピングすること。
[0068]他の例示的な動的解析は、以下の例示的なアクションを含みうる。
【００６３】
[0069]１．第１のクエリと、２つの異なるデータソースから同一の形式（株価）のエンリッチメントデータを取得する第２のクエリとを比較すること。
[0070]２．第１のクエリと第２のクエリのどちらが出力データを取得する際に最小の遅延を有するかに基づき、第１のクエリと第２のクエリから最速のクエリを選択すること。
【００６４】
[0071]３．最速のクエリと関連するデータエンリッチメントの識別子を決定すること。
[0072]例えば、このようにして、パフォーマンスを向上させるデータエンリッチメントを推奨することができる。
【００６５】
[0073]ある実施形態においては、推奨提供への要求を受け取った後でクエリの解析が実行されうるが、別の実施形態では、そのような要求を受け取る前に解析が実行されることもある。ある実施形態では、この解析は、データベースに対するクエリが受け取られるときに推奨の更新を続ける継続的なプロセスである。
【００６６】
[0074]ブロック３２５では、メタデータの解析に基づく推奨が提供される。例えば、図２を参照すると、推奨エンジン２０８は、データエンリッチメントの推奨を、ＤＢＭＳ２０６、アプリケーション２０５、または何らかのその他のコンポーネントに提供しうる。
【００６７】
[0075]ブロック３３０では、動的解析に基づく推奨が提供される。例えば、図２を参照すると、推奨エンジン２０８は、データエンリッチメントの推奨を、ＤＢＭＳ２０６、アプリケーション２０５、または何らかのその他のコンポーネントに提供しうる。
【００６８】
[0076]メタデータに基づく推奨と動的解析に基づく推奨とは、本明細書に記載されている主題の諸態様の精神または範囲から逸脱することなく、共にまたは別個に提供されうる。いくつかの場合には、動的解析に基づく推奨だけが存在しうる。別の場合には、静的解析に基づく推奨だけが存在しうる。
【００６９】
[0077]ブロック３３５では、もし何かがあるとするならば、他のアクションが実行されうる。他のアクションには、例えば、データエンリッチメントを識別するサーチ可能なディレクトリとデータソースに対応するデータエンリッチメントとを提供することを含みうる。
【００７０】
[0078]次に図４を参照すると、ブロック４０５において、アクションが開始する。ブロック４１０では、データエンリッチメントの推奨が受け取られる。この推奨は、データベースのメタデータの解析とデータベースへのアクセスを提供するＤＢＭＳに対して発行されたクエリの解析との１つまたは複数に基づく。例えば、図２を参照すると、ＤＢＭＳ２０６は、推奨エンジン２０８から、ＣＯＭＰＡＮＹＮＥＷＳのエンリッチメントの推奨を受け取ることがある。その後で、ＤＢＭＳ２０６は、この推奨をアプリケーション２０５に提供することができる。別の実施形態では、アプリケーション２０５が、推奨エンジン２０８から直接に、この推奨を受け取ることもありうる。
【００７１】
[0079]ブロック４１５では、推奨の指示が、グラフィカルインターフェース経由で提供されうる。例えば、図２を参照すると、アプリケーション２０５は、ソフトウェア開発者やユーザなどに、推奨の指示を提供することができるが、これは、その推奨を、ソフトウェア開発者がデータエンリッチメントを用いることを望むかどうかをソフトウェア開発者が示すことを可能にするユーザインターフェース要素と共にコンピュータディスプレイに表示することによって提供される。
【００７２】
[0080]ブロック４２０において、ソフトウェア開発者は、自らがデータエンリッチメントを用いることを望むかどうかを示すことが許可される。例えば、図２を参照すると、ソフトウェア開発者は、表示されているインターフェース要素を介して、推奨されたデータエンリッチメントが用いられるべきかどうかを、アプリケーション２０５に示すことができる。それに応答して、アプリケーション２０５は、ＤＢＭＳ２０６に、推奨されたデータエンリッチメントが用いられるべきかどうかを伝える。
【００７３】
[0081]ブロック４２５では、もし何かある場合には、他のアクションが実行されうる。例えば、推奨の組を受け取る代わりに、データエンリッチメントのディレクトリ、それに関連するデータソース、およびその他の情報（例えば、コスト、速度、信頼性など）を受け取ることがある。このディレクトリまたは少なくともその一部が、グラフィカルインターフェースを介して表示されることもある。また、ソフトウェア開発者は、このディレクトリに対してクエリを発行して、開発者自身が用いるのに興味を有しているエンリッチメントを見つけることができる。
【００７４】
[0082]別の例として、ソフトウェア開発者は、推奨の提供との関係で充足されるべき１つまたは複数のポリシーを（例えばグラフィカルインターフェースを介して）定義することができる。これらのポリシーは、次に、ポリシーに違反しないデータエンリッチメントを推奨するのに用いるために、推奨エンジンに提供されうる。
【００７５】
[0083]以上の詳細な説明から分かるように、データエンリッチメントを推奨することに関する諸形態について説明してきた。本明細書において記載されている主題の形態は、様々な修正および代替的な構造の余地があるが、そのうちのある種の例示的な実施形態が図面に示され、以上で詳細に説明されている。しかし、特許請求されている主題の態様を、開示された特定の形態に限定するという意図はなく、逆に、すべての修正、代替的な構造、および本明細書に記載されている主題の様々な態様の精神および範囲に含まれる均等物をすべて包含することを意図していることは理解すべきである。
【図１】
0005986195.tif 000002
【図２】
0005986195.tif 000003
【図３】
0005986195.tif 000004
【図４】
0005986195.tif 000005