(57)【特許請求の範囲】
【請求項１】
データベース・トランザクションを最適化するための、コンピュータで実装される方法であって、
クエリを受け取るステップであって、前記クエリは、（ｉ）クエリに提供された述語のセットと、（ｉｉ）前記クエリが真となるために前記セットの中で満たされなければならない述語の最低数とを指定する、前記受け取るステップと、
前記クエリに提供された述語の前記セット中の述語それぞれについてビット単位述語パターンを生成し、前記ビット単位述語パターンのセットを形成するステップであって、前記ビット単位述語パターンは、前記述語の対応するもの１つを一意的に表現し、各ビット単位述語単位パターンのＯＮである1つのビットによって、特定のビット単位述語パターンが前記述語のうちのどれを表現するかが示される、前記形成するステップと、
前記ビット単位述語パターンの前記セットを使用して論理式を生成することによって前記クエリを最適化するステップと、
前記最適化されたクエリを、コンピュータ可読記憶媒体に記憶されたリポジトリに対して実行するステップと、
前記最低数の述語を満たす結果のセットをレンダリングするステップと
を含む、前記方法。
【請求項２】
データベース・トランザクションを高速化するための、コンピュータで実装される方法であって、
前記コンピュータはコンピュータ可読記憶媒体とプロセッサとを備え、
前記コンピュータが、通信インターフェイス又は入力インターフェイスを介して、前記コンピュータの外部又は内部からクエリを受け取るステップであって、前記クエリは、（ｉ）クエリに提供された述語のセットと、（ｉｉ）前記クエリが真となるために前記セットの中で満たされなければならない述語の最低数とを指定する、前記受け取るステップと、
前記プロセッサが、
前記クエリに提供された述語の前記セット中の述語それぞれについてビット単位述語パターンを生成し、前記ビット単位述語パターンのセットを形成するステップであって、前記ビット単位述語パターンは、前記述語の対応するもの１つを一意的に表現し、各ビット単位述語単位パターンのＯＮである1つのビットによって、特定のビット単位述語パターンが前記述語のうちのどれを表現するかが示される、前記形成するステップと、
前記ビット単位述語パターンの前記セットを使用して論理式を生成することによって前記クエリを最適化するステップと、
前記最適化されたクエリを、前記コンピュータ可読記憶媒体に記憶されたリポジトリに対して実行するステップと、
前記最低数の述語を満たす結果のセットをレンダリングするステップと
を含む、前記方法。
【請求項３】
前記クエリは、ＡＴＬＥＡＳＴ（Ｎ，ｐ１，ｐ２，ｐ３，．．．．．ｐＫ）という構造であり、ｐ１〜ｐＫは、前記クエリに提供された述語の前記セットであり、Ｎは、前記クエリが真となるために満たされなければならない述語の前記最低数である、請求項１又は２に記載の方法。
【請求項４】
述語の前記最低数は、前記クエリが動作するための所定の閾値である、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記リポジトリは、構造化データを含む、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記クエリは、構造化クエリ言語（ＳＱＬ）の形式である、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
コンピュータに実行されることにより、請求項１〜６のいずれか一項に記載の方法を前記コンピュータに実行させるコンピュータ・プログラム。
【請求項８】
データベース・トランザクションを最適化するためのコンピュータ使用可能コードを含んだコンピュータ可読記憶媒体を含むコンピュータ・プログラムであって、前記コンピュータ使用可能コードは、
クエリを受け取るためのコンピュータ使用可能コードであって、前記クエリは、（ｉ）クエリに提供された述語のセットと、（ｉｉ）前記クエリが真となるために前記セットの中で満たされなければならない述語の最低数とを指定する、前記受け取るためのコンピュータ使用可能コードと、
前記クエリに提供された述語の前記セット中の述語それぞれについてビット単位述語パターンを生成し、前記ビット単位述語パターンのセットを形成するためのコンピュータ使用可能コードであって、前記ビット単位述語パターンは、前記述語の対応するもの１つを一意的に表現し、各ビット単位述語単位パターンのＯＮである1つのビットによって、特定のビット単位述語パターンが前記述語のうちのどれを表現するかが示される、前記形成するためのコンピュータ使用可能コードと、
前記ビット単位述語パターンの前記セットを使用して論理式を生成することによって前記クエリを最適化するためのコンピュータ使用可能コードと、
前記最適化されたクエリを、コンピュータ可読記憶媒体に記憶されたリポジトリに対して実行するためのコンピュータ使用可能コードと、
前記最低数の述語を満たす結果のセットをレンダリングするためのコンピュータ使用可能コードと
を含む、コンピュータ・プログラム。
【請求項９】
データベース・トランザクションを最適化するデータ処理システムであって、
記憶媒体を含み、コンピュータ使用可能プログラム・コードを記憶する記憶デバイスと、
前記コンピュータ使用可能プログラム・コードを実行するプロセッサと
を備えており、
前記コンピュータ使用可能プログラム・コードは、
クエリを受け取るためのコンピュータ使用可能コードであって、前記クエリは、（ｉ）クエリに提供された述語のセットと、（ｉｉ）前記クエリが真となるために前記セットの中で満たされなければならない述語の最低数とを指定する、前記受け取るためのコンピュータ使用可能コードと、
前記クエリに提供された述語の前記セット中の述語それぞれについてビット単位述語パターンを生成し、前記ビット単位述語パターンのセットを形成するためのコンピュータ使用可能コードであって、前記ビット単位述語パターンは、前記述語の対応するもの１つを一意的に表現し、各ビット単位述語単位パターンのＯＮである1つのビットによって、特定のビット単位述語パターンが前記述語のうちのどれを表現するかが示される、前記形成するためのコンピュータ使用可能コードと、
前記ビット単位述語パターンの前記セットを使用して論理式を生成することによって前記クエリを最適化するためのコンピュータ使用可能コードと、
前記最適化されたクエリを、コンピュータ可読記憶媒体に記憶されたリポジトリに対して実行するためのコンピュータ使用可能コードと、
前記最低数の述語を満たす結果のセットをレンダリングするためのコンピュータ使用可能コードと
を含む、前記データ処理システム。
【請求項１０】
前記クエリは、ＡＴＬＥＡＳＴ（Ｎ，ｐ１，ｐ２，ｐ３，．．．．．ｐＫ）という構造であり、ｐ１〜ｐＫは、前記クエリに提供された述語の前記セットであり、Ｎは、前記クエリが真となるために満たされなければならない述語の前記最低数である、請求項９に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本発明は、２０１０年１０月２１日に出願された、「ＱＵＥＲＹ  ＯＰＴＩＭＩＺＡＴＩＯＮ」という題の、本発明の譲受人に譲渡された同時係属の米国特許出願第１２／９０９０２９号（代理人整理番号ＩＮ９２０１００１６３ＵＳ１）と類似した主題に関し、その内容を参照によって本願明細書に引用したものとする。
【０００２】
本発明は、クエリ最適化に関し、特に、クエリ最適化を使用してデータ・リポジトリからデータのサブセットを検索することに関する。
【背景技術】
【０００３】
データ・リポジトリ、特にデータベースは、コンピュータ化された情報記憶・検索システムである。データベース・クエリは、データベースに記憶されたデータを検索するための一連のコマンド又は節を指す。クエリは、ユーザ、アプリケーション・プログラム、又は遠隔システムから生じ得る。クエリは、データが検索されるデータベース内のテーブル又は列などの特定の位置、複数のテーブルの複数の列の結合方法、および特定のデータ・レコードがクエリ結果セットに含められるために満たされなければならない条件を指定することもある。現在の構造化データは、典型的にはリレーショナル・データベースであり、クエリ言語によって指定される厳格なフォーマットで書かれたクエリを処理する。例えば、広く使用されている構造化クエリ言語（ＳＱＬ：Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）は、多くのリレーショナル・データベースでサポートされている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ライフサイエンスなど、データベースに依存する分野は多数あり、ますます複雑なデータベースおよびデータベース・クエリが必要とされている。大きなクエリ又は複雑なクエリの実行は、通常、複数のリソースを使用し、研究および関心の対象となってきた。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、データベース・トランザクションを最適化する方法、システム、およびコンピュータ・プログラムを対象にする。したがって、本発明の実施形態は、クエリを受け取る。クエリは、述語のセットを指定し、そのうち最低限数（ｍｉｎｉｍｕｍ  ｎｕｍｂｅｒ）の述語が、クエリが真となるためには満たされる必要がある。このクエリを使用して、コンピュータ可読記憶媒体に記憶されているリポジトリに対する動作が実行される。最低数（ｍｉｎｉｍａｌ  ｎｕｍｂｅｒ）の述語を満たす結果のセットがレンダリングされる。
【０００６】
コンピュータ・プログラムを対象にする実施形態は、データベース・トランザクションを最適化するためのコンピュータ使用可能コードを含む。この実施形態は、クエリを受け取るためのコンピュータ使用可能コードを含む。クエリは、クエリに提供された述語のセットと、このセットの中で、クエリが真となるために満たされなければならない述語の最低数とを指定する。この実施形態はさらに、クエリを使用する動作を、コンピュータ可読記憶媒体内に記憶されたリポジトリに対して実行するための、コンピュータ使用可能コードを含む。この実施形態は、最低数の述語を満たす結果のセットをレンダリングするためのコンピュータ使用可能コードをさらに含む。
【０００７】
データベース・トランザクションを最適化するデータ処理システムを対象にする実施形態は、コンピュータ使用可能プログラム・コードを記憶する記憶デバイスと、コンピュータ使用可能プログラム・コードを実行するプロセッサとを含む。この実施形態のコンピュータ使用可能プログラム・コードは、クエリに提供された述語のセットと、このセットの中で、クエリが真となるために満たされなければならない述語の最低数とを指定するクエリを受け取るためのコンピュータ使用可能コードと、クエリを使用する動作を、コンピュータ可読記憶媒体に記憶されたリポジトリに対して実行するためのコンピュータ使用可能コードと、最低数の述語を満たす結果のセットをレンダリングするためのコンピュータ使用可能コードとを含む。
【図面の簡単な説明】
【０００８】
【図１】データ・リポジトリからデータのサブセットを検索する方法のフローチャートの例示としての実施形態を示す。
【図２】リレーショナル・データベースからデータのサブセットを検索するフローチャートの例示としての実施形態を示す。
【図３】データ・リポジトリからデータのサブセットを検索するために使用されるコンピュータ・システムの概要の例示としての実施形態を示す。
【発明を実施するための形態】
【０００９】
添付の概略図を参照しながら、単なる例として本発明の実施形態について以下に記載する。
【００１０】
本発明の側面について、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラムのフローチャート図もしくはブロック図又はその両方を参照して以下に記載する。当然のことながら、フローチャート図もしくはブロック図又はその両方の各ブロック、およびフローチャート図もしくはブロック図又はその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。当該コンピュータ・プログラム命令が、マシンを生じるよう、汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを用いて実行されて、フローチャートもしくはブロック図又はその両方のブロックもしくは複数ブロックにおいて指定された機能／動作を実装する手段を作り出すようにすることもできる。
【００１１】
本発明の実施形態は、データ・リポジトリからデータのサブセットを検索するためのデータベース・クエリを最適化する方法、システム、およびコンピュータ・プログラムを対象とする。図１は、データ・リポジトリからデータのサブセットを検索するフローチャート１００の例示としての実施形態を示す。ステップ１１０は、クエリの受け取りを示す。クエリが受け取られると、次に、ステップ１２０において、クエリが解析され、クエリから、クエリ内の述語の総数、およびその動作を実行するのに必要な述語の最低数が判断される。これが判断されると、ステップ１３０において、このクエリの動作対象のデータ・ソースが特定される。ステップ１４０において、クエリがそのデータ・ソースに対し実行される。ステップ１５０において、データ・ソースに対し動作したクエリに基づき、クエリを満たすデータ・サブセットが検索され、ユーザに対してレンダリングされる。
【００１２】
クエリの受け取りは、述語のセットと、所定の閾値とを受け取ることを含み、所定の閾値は、述語のセットから、真である必要のある述語の最低限数を示す。一実施形態において、述語のセットの各述語は、好適には、ビット単位述語パターン（ｂｉｔｗｉｓｅ  ｐｒｅｄｉｃａｔｅ  ｐａｔｔｅｒｎ）として表現され、ビット単位述語パターンのセットが生成されると有利である。必要に応じて、そのビット単位述語パターンおよび複数の論理演算子のセットを使用して、第２のクエリが、本願明細書に引用したものとする関連出願に記載の実施形態の方法で生成される。この複数の論理演算子は、ブール演算子を含む。
【００１３】
実施形態による、第２のクエリを生成するステップは、述語の所定の閾値を使用する。データのサブセットが、クエリを使用してデータ・リポジトリから検索される。第２のクエリの生成はさらに、第１のクエリを使用して、ビット単位述語パターンのセットから妥当なビット単位パターン（ｂｉｔｗｉｓｅ  ｐａｔｔｅｒｎ）のセットを特定すること、および複数の論理演算子を使用して妥当なビット単位パターンのセットを構文解析して、論理ビット単位式（ｌｏｇｉｃａｌ  ｂｉｔｗｉｓｅ  ｅｘｐｒｅｓｓｉｏｎ）を生成すること、および続いてその論理ビット単位式を因数分解することを含む。構文解析および因数分解には、ブール性が使用されることが好ましい。続いて、述語のセットの対応する述語に対する、因数分解された論理ビット単位式のマッピングが作成され、論理述語式（ｌｏｇｉｃａｌ  ｐｒｅｄｉｃａｔｅ  ｅｘｐｒｅｓｓｉｏｎ）が生成される。第２のクエリは、第１のクエリを、論理述語式を使用して変更することによって生成される。一実施形態では、データ・リポジトリは、リレーショナル又はオブジェクト指向データベース内などの構造化データであり、第１のクエリおよび第２のクエリは、どちらも構造化クエリ言語（ＳＱＬ）クエリである。
【００１４】
実施形態によるクエリは、「ＡＴＬＥＡＳＴ」節と、述語のセットから、真である必要がある述語の最低限数を示す、述語の所定の閾値とを含むことが好ましい。例示としての形態において、データのサブセットをデータ・リポジトリから検索する例を、以下に挙げる。データベース・クエリ・オプティマイザは、述語の数を減らしてクエリ・パフォーマンスを最適化することを試みる。なお、ＳＱＬクエリは、ＯＲ条件で結合された多数の述語を有することがあり、これは、述語の数を減らすことを困難にする。
【００１５】
ビジネス上の決定が前提条件の最低セットを満たすことに基づく、例示としての実施形態が、下記に記載される。
【００１６】
毎年の賞与の配分に関して、５つの条件、すなわち述語のうち、少なくとも３つを満たす従業員が賞与を得られるように基準が設定されている。例示としての述語は、以下の通りである。
【００１７】
１．１又は２＋の業績評価（Ｒａｔｉｎｇ）
２．上司による推薦（Ｍａｎａｇｅｒ＿Ｒｅｃｏｍ）
３．事業単位利益＞３％（ＢＵ＿ｐｒｏｆｉｔ）
４．その従業員の階級の平均給与よりも給与が低いこと
５．組織に２年超にわたり雇用されている（Ｃｕｒｒｅｎｔ＿ｄｔ−Ｊｏｉｎ＿ｄｔ）
【００１８】
従業員データがデータベースに記憶されていると仮定すると、クエリを記述して、前提条件を満たす従業員レコードを得る必要がある。これが、データベース内に記憶されているデータのサブセットである。典型的には、５つの条件のうち少なくとも３つに一致する行をテーブルから選択するクエリが、ＳＱＬの「ＡＮＤ」および「ＯＲ」節の典型的な組み合わせを使用して記述される。すべてのデータがこの従業員テーブル内で得られると仮定すると、典型的なクエリは以下の通りと考えられる。
【００１９】
【数１】
0005791149.tif 000002
【００２０】
上記のクエリから分かるように、このクエリは、いくつかのＯＲ節および多数の述語から成り、従来のＳＱＬでは、こうしたクエリを記述して、当該クエリの述語数を減らす容易な方法はない。こうしたクエリは、記述および処理に時間がかかり、実行にはかなりの量のコンピューティング・リソースを使用する。
【００２１】
本発明の実施形態は、オプティマイザの内部で述語のビット表現を使用し、ＳＱＬにおいて述語の数を減らすことを助ける。述語を凝縮させることで、クエリ実行のための処理サイクルを減らす助けとなり、したがってクエリ・パフォーマンスが改善する。例示としての実施形態は、よく研究されているブール性を使用する。
【００２２】
【数２】
0005791149.tif 000003
【００２３】
なお、論理「ＡＮＤ」は、「＆」又は「＊」として表されており、論理「ＯＲ」は、「｜」又は「＋」として表されている。２つの式間に演算子がなければ、「ＡＮＤ」であると想定され、例えば、０１（０＋１）は、０＆１＆（０｜１）、すなわち０＊１＊（０＋１）と等しい。
【００２４】
下記の事項は、上記の例に関して、および実施形態においてビット単位述語パターンがどのように形成されるかに関して理解されるべきである。各論理述語は、ビットのセットによって表現される。そのようなビットのセットは、本願明細書において、「ビット単位述語パターン」と呼ばれる。各セットが同じ数のビットを有するとよい。各ビット単位述語パターンは、１つのみのビットＯＮを有する。各ビット単位述語パターンは、論理述語の対応するもの１つを一意的に表現する。各ビット単位述語パターンのＯＮである１つのビットによって、その特定のビット単位述語パターンが論理述語のうちのどれを表現するかが示される。
【００２５】
よく研究されたブール代数を使用する例として、Ａ、Ｂ、Ｃ、Ｄ、およびＥが、５つの論理式／述語を表現するとする。一度に３つをとる順列は、５Ｐ３＝１０の可能な順列という結果になる。
【００２６】
【数３】
0005791149.tif 000004
【００２７】
論理「ＡＮＤ」および論理「ＯＲ」演算子を使用して、式においてすべての順列を表現する。
【００２８】
【数４】
0005791149.tif 000005
【００２９】
「＆」は、論理「ＡＮＤ」を表現し、「｜」は、論理「ＯＲ」演算子を表現する。ブール代数の分配法則を使用すると、この式を以下のように表現することができる。
【００３０】
【数５】
0005791149.tif 000006
【００３１】
この式はさらに、分配法則を適用して次のように表現することができる。
【００３２】
【数６】
0005791149.tif 000007
【００３３】
この式は、ビット表現を使用して得ることができる望ましい結果であり、これは、参照によって本願明細書に引用したものとする関連の開示の中に記載されている。
【００３４】
本発明の例示としての実施形態は、このようなクエリに関して新たな節「ＡＴＬＥＡＳＴ」をサポートするよう、現在のＳＱＬを拡張する。ＡＴＬＥＡＳＴ節の構文は、次の通りとするとよい。
【００３５】
【数７】
0005791149.tif 000008
【００３６】
Ｋは述語の総数であり、Ｎは満たされなければならない述語の最低限数である。上記に表現されたようなクエリは、いくつかのＯＲ節を備えるクエリと比べて、クエリの記述を簡素化し、より読みやすくもする。例示としての形態において、データベース・オプティマイザは、ＳＱＬ構文で「ＡＴＬＥＡＳＴ」節をサポートするよう変更されるとよい。述語の上記セットに関する第１のクエリは、以下のように記述され得る。
【００３７】
【数８】
0005791149.tif 000009
【００３８】
ここで重要なのは、複数の「ＯＲ」節を有するクエリが、「ＡＴＬＥＡＳＴ」節を有する当該の第１のクエリと実質的に同じであるこということである。ただし、「ＯＲ」節はデータベース技術で既にサポートされている一方、「ＡＴＬＥＡＳＴ」節は本発明の実施形態である。
【００３９】
本発明の一実施形態によれば、データベース・オプティマイザは、第１のクエリを記述し直し、クエリを最適化して以下のように第２のクエリを生成する。
【００４０】
【数９】
0005791149.tif 000010
【００４１】
以下の例は、ビット・フォーマットで複数の述語を表現する実施形態のさらに詳しい説明である。クエリが受け取られる。例示としての第１のクエリは次の通りである。
【００４２】
【数１０】
0005791149.tif 000011
【００４３】
別の例示としての実施形態では、２つのみの述語ＡおよびＢがＳＱＬクエリにあり、そのうち１つが、ＳＱＬが妥当なサブセットを検索するためには真である必要がある場合、従来のＳＱＬクエリは次のようになる。
【００４４】
【数１１】
0005791149.tif 000012
【００４５】
この従来のＳＱＬクエリは、例示としての「ＡＴＬＥＡＳＴ」表現により、次のように記述し直すことができる。
【００４６】
【数１２】
0005791149.tif 000013
【００４７】
本発明の実施形態は、述語の数が多い場合により優れたパフォーマンスをもたらす。
【００４８】
図２は、リレーショナル・データベースからデータのサブセットを検索する全般的な方法のフローチャート２００の例示としての実施形態を示す。なお、フローチャート２００は、図２がリレーショナル・データベースであるデータ・リポジトリに関連することを除いては、図１のフローチャート１００に似ている。ステップ２１０では、クエリが、ＡＴＬＥＡＳＴ（Ｎ，Ｐ１，Ｐ２．．．．ＰＫ）として明確に示されている。Ｋは述語の総数であり、Ｎは満たされなければならない述語の最低限数である。ステップ２２０において、クエリが、設計済みの新しいフォーマットであるかどうかチェックし、フォーマットがＯＫであれば、そのクエリは、関連のあるリポジトリ２３０に対して動作し、ステップ２４０で結果が出力される。
【００４９】
図３は、本発明の様々な実施形態を実装するために使用することができる例示としてのコンピュータ・システム３００のブロック図である。一部の実施形態では、コンピュータ・システム３００は、図１もしくは図２のいずれか又は両方において記載されたステップを実行するために使用可能である。コンピュータ・システム３００は、プロセッサ３０４を含む。当然のことながら、図３は単一のプロセッサを示すが、当業者には当然のことながら２つ以上のプロセッサが必要に応じて含まれ得る。プロセッサ３０４は、通信インフラストラクチャ３０２（例えば、通信バス、クロスオーバ・バー（ｃｒｏｓｓ−ｏｖｅｒ  ｂａｒ）、又はネットワーク）に接続され、通信インフラストラクチャ３０２は、例示としてのコンピュータ・システム３００の様々な構成要素間の通信を促進するよう構成されている。様々なソフトウェア実施形態が、この例示としてのコンピュータ・システムに関して記載されている。本明細書を読むと、当該技術分野（単数又は複数）の当業者には、他のコンピュータ・システムもしくはコンピュータ・アーキテクチャ又はその両方を使用して本発明を実装する方法が分かる。
【００５０】
例示としてのコンピュータ・システム３００は、ディスプレイ・ユニット３１０上で表示するために画像、テキスト、およびその他のデータを通信インフラストラクチャ３０２から（又は図示されていないフレーム・バッファから）転送するよう構成されたディスプレイ・インターフェイス３０８を含むことができる。コンピュータ・システム３００はさらに、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）とすることができるメイン・メモリ３０６を含み、二次メモリ３１２も含むこともできる。二次メモリ３１２は、例えば、フレキシブル・ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブなどを表現する、ハード・ディスク・ドライブ３１４もしくはリムーバブル記憶ドライブ３１６又はその両方を含むこともできる。リムーバブル記憶ドライブ３１６は、当業者には周知の方法で、リムーバブル記憶ユニット３１８に対する読み取りもしくは書き込み又はその両方を行う。リムーバブル記憶ユニット３１８は、例えば、フレキシブル・ディスク、磁気テープ、光ディスクなどを表現し、これは、リムーバブル記憶ドライブ３１６によって読み取りおよび書き込みされる。当然のことながら、リムーバブル記憶ユニット３１８は、コンピュータ・ソフトウェアもしくはデータ又はその両方が記憶されているコンピュータ使用可能記憶媒体を含む。
【００５１】
例示としての実施形態では、二次メモリ３１２は、コンピュータ・プログラム又はその他の命令がコンピュータ・システムにロードされることを可能にする、他の同様の手段を含むこともできる。そのような手段は、例えば、リムーバブル記憶ユニット３２２およびインターフェイス３２０を含むこともできる。そうしたものの例は、プログラム・カートリッジおよびカートリッジ・インターフェイス（ビデオ・ゲーム・デバイスにあるものなど）、リムーバブル・メモリ・チップ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ：消去可能プログラム可能読み取り専用メモリ）又はＰＲＯＭなど）、ならびに関連するソケット、ならびにソフトウェアおよびデータがリムーバブル記憶ユニット３２２からコンピュータ・システム３００へ転送されることを可能にするその他のリムーバブル記憶ユニット３２２およびインターフェイス３２０を含むこともできる。
【００５２】
コンピュータ・システム３００はさらに、通信インターフェイス３２４を含むこともできる。通信インターフェイス３２４は、コンピュータ・システムと、外部デバイスとの間でのソフトウェアおよびデータの転送を可能にする。通信インターフェイス３２４の例は、モデム、ネットワーク・インターフェイス（イーサネット（Ｒ）カードなど）、通信ポート、ＰＣＭＣＩＡスロットおよびカードなどを含むこともできる。さらに、本発明の側面は、コンピュータ可読プログラム・コードが具現化されたコンピュータ・プログラム、当該コンピュータ・プログラムが記憶されたコンピュータ可読媒体の形式をとることもできる。なお、図示しないが、コンピュータ・システム３００はさらに、入出力インターフェイスを含むこともできる。入出力インターフェイスは、コンピュータ・システムのユーザからのデータ入力や操作を受け付けるキーボードやマウス、前記ユーザへのデータ出力を行うプリンタ装置などとのデータや命令の通信を可能にする。
【００５３】
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラムの考えられる実装のアーキテクチャ、機能性および動作を示す。この関連で、フローチャート又はブロック図内の各ブロックは、指定の論理機能（単数又は複数）を実装する１つ以上の実行可能命令を含むモジュール、セグメント、又はコードの一部を表現することもできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている２つのブロックが実際には事実上同時に実行されてもよく、又は、各ブロックが逆順で実行されることがあってもよい。なお、さらに、ブロック図もしくはフローチャート図又はその両方の各ブロック、およびブロック図もしくはフローチャート図又はその両方の複数ブロックの組み合わせは、指定の機能もしくは動作を実行する専用ハードウェア・ベース・システム、又は専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができる。
【００５４】
当業者であれば当然のことであるが、本発明の側面は、システム、方法又はコンピュータ・プログラムとして具現化され得る。したがって、本発明の側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又は本願明細書においてすべて概して「回路」、「モジュール」もしくは「システム」と呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形式をとってもよい。さらに、本発明の側面は、コンピュータ可読プログラム・コードが具現化されたコンピュータ・プログラム、当該コンピュータ・プログラムが記憶されたコンピュータ可読媒体の形式をとることもできる。
【００５５】
さらに、特定の形で機能するようコンピュータ、その他のプログラム可能データ処理装置、又はその他のデバイスに指示することができる当該コンピュータ・プログラム命令は、コンピュータ可読媒体に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャートもしくはブロック図又はその両方のブロックもしくは複数ブロックにおいて指定された機能／動作を実装する命令を含む製品を生じるようにすることもできる。
【００５６】
さらに、コンピュータ・プログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、又はその他のデバイスにロードされて、コンピュータ、その他のプログラム可能装置、又はその他のデバイス上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスを生じさせ、コンピュータ又はその他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又はその両方のブロックもしくは複数ブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００５７】
１つ以上のコンピュータ可読媒体（単数又は複数）の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体とされ得る。コンピュータ可読記憶媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、もしくは半導体システム、装置、もしくはデバイス、又は前述のものの任意の適切な組み合わせとすることもできる。コンピュータ可読記憶媒体のより具体的な例（包括的でないリスト）には、１つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光学式記憶デバイス、磁気記憶デバイス又は前述のものの任意の適切な組み合わせが含まれるであろう。この文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置もしくはデバイスによって、又はそれに関連して使用されるプログラムを含むこと、又は記憶することができる任意の有形の媒体であればよい。
【００５８】
コンピュータ可読信号媒体は、例えば、ベースバンドに、又は搬送波の一部として、コンピュータ可読プログラム・コードが具現化された伝播データ信号を含み得る。そのような伝播信号は、限定はされないが、電磁気、光学、又はその任意の適切な組み合わせを含む様々な形式のいずれかをとってよい。こうした伝播信号は、通信インターフェイス３２４に、通信路（すなわちチャネル）３２６を介して提供される。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でなく、命令実行システム、装置もしくはデバイスによって、又はそれに関連して使用されるプログラムを伝達すること、伝播させること、又は搬送することができる、任意のコンピュータ可読媒体としてよい。
【００５９】
コンピュータ可読媒体上に具現化されたプログラム・コードは、限定はされないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、又は前述のものの任意の適切な組み合わせを含む任意の適切な媒体を使用して送られてもよい。
【００６０】
本発明の側面の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋又は同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで記述されていてよい。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、又は部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行されること、又は完全に遠隔コンピュータもしくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、もしくは広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意のタイプのネットワークを介して遠隔コンピュータがユーザのコンピュータに接続されてもよく、又は、外部コンピュータに接続されてもよい（例えば、インターネット・サービス・プロバイダを使用しインターネットを介して）。
【００６１】
本発明の様々な実施形態の利点には、データ・リポジトリを検索するためのクエリの作成の単純化が含まれる。その他の実施形態の一部の他の利点には、エラーがより起こりにくいクエリ作成が含まれる。本発明の一部の実施形態のその他のいくつかの利点には、限定はされないが中央処理ユニット（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのコンピューティング・リソースの最適利用が含まれる。本発明は、本発明の一部の特定の実施形態の様々な利点を説明するが、実施形態の教示から当業者には、本発明の利点が上述のものに限られないことが分かる。
【００６２】
本願明細書で使用される専門用語は、特定の実施形態を説明するためのものでしかなく、本発明の限定となることは目的としていない。本願明細書で使用される、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈によりそうでないことが明確に示されていない限り、複数形も含むものとする。さらに、当然のことながら、「含む」もしくは「含んでいる」又はその両方の用語は、本明細書で使用されるとき、記載された機能、整数、ステップ、動作、構成要素、もしくはコンポーネント、又はそのいずれかの組み合わせの存在を指定するが、１つ以上の他の機能、整数、ステップ、動作、構成要素、コンポーネント、もしくはそのグループ、又はそのいずれかの組み合わせの存在又は追加を除外するものではない。
【００６３】
本発明の例示としての実施形態について詳しく記載したが、当然のことながら、それに対する様々な変更、置換、交代が、添付の特許請求の範囲によって定義される本発明の意図および範囲から逸脱することなくなされることが可能であろう。本発明の例示としての実施形態に関して記載された変形は、特定の用途それぞれに望ましい任意の組み合わせで実現されることが可能である。したがって、本願明細書に記載された特定の制限もしくは実施形態の拡張又はその両方は、特定の用途に特定の利点があり得、すべての用途に使用される必要はない。さらに、本発明の例示としての実施形態に関して記載された１つ以上の概念を含む制限すべてが、方法、システム、もしくは装置、又はそのいずれかの組み合わせに実装される必要はない。
【００６４】
本願明細書で使用される専門用語は、特定の実施形態を説明するためのものでしかなく、本発明の限定となることは目的としていない。本願明細書で使用される、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈によりそうでないことが明確に示されていない限り、複数形も含むものとする。さらに、当然のことながら、「含む」もしくは「含んでいる」又はその両方の用語は、本明細書で使用されるとき、記載された機能、整数、ステップ、動作、構成要素、もしくはコンポーネント、又はそのいずれかの組み合わせの存在を指定するが、１つ以上の他の機能、整数、ステップ、動作、構成要素、コンポーネント、もしくはそのグループ、又はそのいずれかの組み合わせの存在又は追加を除外するものではない。
【図１】
0005791149.tif 000014
【図２】
0005791149.tif 000015
【図３】
0005791149.tif 000016