(57)【要約】１つもしくはそれより多いデータバンクから生成される仮想データバンクオブジェクトは、仮想データバンク自体を他のデータバンクのように検索することができ、この方法は、仮想データバンクの構成要素を形成する１つもしくはそれより多いメンバーデータバンクの組合せとして仮想データバンクオブジェクトを定義するメンバー定義モジュールであって、仮想データバンクオブジェクトはメンバーデータバンクと動作の点で似ており、ユーザクエリーによってこの構成要素を形成するメンバーデータバンクの１つのように検索でき、仮想データバンクオブジェクトがユーザクエリーによって検索されているとき、そのメンバーデータバンクは前記ユーザクエリーを受信して第１の結果セットをリターンするようなメンバー定義モジュール、を備え、仮想データバンクオブジェクトは、仮想データバンクの構成要素を形成する１つもしくはそれより多いメンバーデータバンクに適用されるクエリーを定義する定義モジュールであって、このクエリーは、実行されたとき、１つもしくはそれより多いメンバーデータバンクのエントリのサブセットによって形成される第２の結果セットをリターンするような定義モジュール、をさらに備え、この定義モジュールは、ブール演算子を定義するクエリーリンク演算子であって、仮想データバンクオブジェクトに対するユーザクエリーから生じる第１の結果セットと定義モジュールにおいて定義されたクエリーから生じる第２の結果セットとがクエリーリンク演算子によって接続されてそれによって最終の結果セットが形成されるようなクエリーリンク演算子、をさらに備え、最終の結果セットは、それ自体がメンバーデータバンクの１つのようなデータバンクであったかのように、仮想データバンクオブジェクトを検索するよう仮想データバンクオブジェクトに向けられるユーザクエリーから生じる有効な結果である。
2004527830.tif 000002
【特許請求の範囲】
【請求項１】
１つもしくはそれより多いデータバンクから生成される仮想データバンクオブジェクトであって、それ自体が他のデータバンクのように検索できる仮想データバンクオブジェクトにおいて、前記方法は、
仮想データバンクの構成要素を形成する１つもしくはそれより多いメンバーデータバンクの組合せとして仮想データバンクオブジェクトを定義するメンバー定義モジュールであって、前記仮想データバンクオブジェクトはメンバーデータバンクと動作の点で似ており、ユーザクエリーによってこの構成要素を形成するメンバーデータバンクの１つのように検索でき、前記仮想データバンクオブジェクトがユーザクエリーによって検索されているとき、そのメンバーデータバンクは前記ユーザクエリーを受信して第１の結果セットをリターンするようなメンバー定義モジュール、を備え、前記仮想データバンクオブジェクトは、
前記仮想データバンクの構成要素を形成する前記１つもしくはそれより多いメンバーデータバンクに適用されるクエリーを定義する定義モジュールであって、前記クエリーは、実行されたとき、前記１つもしくはそれより多いメンバーデータバンクのエントリのサブセットによって形成される第２の結果セットをリターンするような定義モジュール、をさらに備え、
前記定義モジュールは、ブール演算子を定義するクエリーリンク演算子であって、前記仮想データバンクオブジェクトに対する前記ユーザクエリーから生じる前記第１の結果セットと前記定義モジュールにおいて定義されたクエリーから生じる前記第２の結果セットとが前記クエリーリンク演算子によって接続されてそれによって最終の結果セットが形成されるようなクエリーリンク演算子、をさらに備え、前記最終の結果セットは、それ自体がメンバーデータバンクの１つのようなデータバンクであったかのように、前記仮想データバンクオブジェクトを検索するよう前記仮想データバンクオブジェクトに向けられるユーザクエリーから生じる有効な結果である、仮想データバンクオブジェクト。
【請求項２】
前記仮想データバンクオブジェクトの前記構成要素は、複数のメンバーデータバンクであり、前記定義モジュールで定義された前記クエリーが、前記メンバーデータバンクの１つにおけるエントリをリターンし、該前記メンバーデータバンクの１つは、前記メンバーデータバンクの１つ以外のエントリに対するリファレンスを備える請求項１に記載の仮想データバンクオブジェクト。
【請求項３】
前記定義モジュールにおいて定義される前記クエリーは、前記定義モジュールにおいてクエリーを定義する１つもしくはそれより多い検索基準に適合した前記メンバーデータバンクにおけるエントリをリターンする請求項１または２に記載の仮想データバンクオブジェクト。
【請求項４】
前記定義モジュールにおいて定義される前記クエリーは、前記１つもしくはそれより多いメンバーデータバンクのエントリのセットをそれらの更新時間に従って選択する請求項１〜３のいずれか一項に記載の仮想データバンクオブジェクト。
【請求項５】
前記定義モジュールにおいて定義される前記クエリーは、前記１つもしくはそれより多いメンバーデータバンクのエントリのセットを選択するが、あるデータフィールドが該メンバーデータのためのあるコンテンツを有する請求項１〜４のいずれか一項に記載の仮想データバンクオブジェクト。
【請求項６】
前記メンバーデータバンクは生物学もしくは生化学のデータバンクであり、前記定義モジュールで定義された前記クエリーは、１つもしくはそれより多い生物学の検索基準に適合した前記１つもしくはそれより多いメンバーデータバンクのエントリのセットを選択する請求項１〜５のいずれか一項に記載の仮想データバンクオブジェクト。
【請求項７】
前記定義モジュールにおいて定義される前記クエリーは、プログラミング言語もしくはスクリプト言語での指示のセットを備える請求項１〜６のいずれか一項に記載の仮想データバンクオブジェクト。
【請求項８】
複数のクエリーが前記定義モジュールで定義され、該複数のクエリーのそれぞれが、前記仮想データバンクオブジェクト上に種々のビューを定義する請求項１〜７のいずれか一項に記載の仮想データバンクオブジェクト。
【請求項９】
前記種々のクエリーは、種々の権限もしくは優先レベルの種々のユーザに割り当てられる請求項８に記載の仮想データバンクオブジェクト。
【請求項１０】
種々のユーザもしくは種々の権限レベルは、前記メンバーデータバンクのエントリの種々のサブセットへのアクセスを与え、それによって、仮想データバンクオブジェクトを検索するユーザもしくは権限に依存する仮想データバンクオブジェクトに対する差別化されたアクセスが可能となる請求項９に記載の仮想データバンクオブジェクト。
【請求項１１】
前記メンバーデータバンクは、互いに独立にインデックスが付けられた独立データバンクであり、仮想データバンクオブジェクトについてはインデックスが構築されない請求項１〜１０のいずれか一項に記載の仮想データバンクオブジェクト。
【請求項１２】
請求項１〜１１のいずれか一項に記載の仮想データバンクオブジェクトを問い合わせる方法であって、該方法は、
ユーザクエリーを前記仮想データバンクオブジェクトに発送することと、
前記仮想データバンクオブジェクトのメンバーデータバンクに前記クエリーを配送して前記メンバーバンク上で前記クエリーを実行して、それによって第１の結果セットを得ることと、
前記第１の結果セットを、定義モジュールで定義されたクエリーの結果生じる第２の結果セットと結合することと、を備え、前記の結合は、前記定義モジュールで定義されたクエリーリンク演算子に基づいて実行され、前記クエリーリンク演算子はブール関係を定義し、このクエリーリンク演算子によって前記第１の結果セットと前記第２の結果セットは結合されることになり、それによって最終の結果が得られ、該最終の結果は、前記仮想データバンクオブジェクトに前記ユーザクエリーを発送することによって生じる有効な結果となる方法。
【請求項１３】
請求項２〜１１のいずれか一項もしくは組合せによって規定される特徴をさらに備える請求項１２に記載の方法。
【請求項１４】
前記定義モジュールにおいて定義される前記クエリーは予め実行され、そして前記第１の結果セットは、記憶され、前記第２の結果セットと結合されるべきときに取り出される請求項１２または１３に記載の方法。
【請求項１５】
コンピュータが、請求項１〜１１のいずれか一項に記載の仮想データバンクオブジェクトを実現できるようにするか、もしくは請求項１２〜１４のいずれか一項に記載の方法を実行できるようにするコンピュータが実行可能な指示を備えるコンピュータプログラムプロダクト。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、データバンクに関し、特に、現存のデータバンクに基づいて生成される仮想データバンクオブジェクトに関する。
（発明の背景）
データバンクは現在のコンピュータ技術においては一般的なツールであり、これらは、注文どおりの形で大量のデータを管理し、格納し、検索するために、ほとんどあらゆる分野で使われている。例えば科学におけるデータバンク、金融データバンク、経済におけるデータバンクなど、膨大な種類のデータバンクが存在する。
【０００２】
ユーザは、データベース管理システムと呼ばれる特定のソフトウェアを使ってデータバンクを検索するが、このデータベース管理システムは、データバンクのコンテンツおよび新しいデータセットの記憶を管理するタスクを実行し、これによりユーザが一定の検索基準にしたがって特定の情報を選択することができるようになる。しばしばユーザは、所望の情報を全て得るために、いくつかのデータバンクを検索する必要がある。
【０００３】
これは、特に、生物学および生化学の分野の場合があてはまり、ここでは、膨大な種類のデータバンクが存在しており、これら全ては異なるコンテンツを有するが、しかし、互いにいくらか関係がある。例えば、酵素のデータを含むデータバンク、たんぱく質のデータを含むデータバンク、遺伝子に関するデータを含むデータバンクなどがある。これらのデータバンクにアクセスするための１つのツールとして、ドイツのＬｉｏｎ  ｂｉｏｓｃｉｅｎｃｅ  ＡＧによって開発され製造されるソフトウェアシーケンス検索システムＳＲＳがある。
【０００４】
ＳＲＳとは、高度な自由度があり、上述のあらゆるデータバンクの検索に対して使うことができる、いわゆる検索ソフトウェアのことである。これはＩＣＡＲＵＳと呼ばれるスクリプト言語に基づいている。ＩＣＡＲＵＳは、強力な解析能力とメタ定義能力（ｍｅｔａ−ｄｅｆｉｎｉｔｉｏｎ ｃａｐａｂｉｌｉｔｉｅｓ）とを有している。これらにより、一定の情報を、典型的な単層ファイルデータバンク（ｆｌａｔ−ｆｉｌｅ ｄａｔａｂａｎｋ）である上述のデータバンクから抽出することができる。
【０００５】
しかし、データベース管理システムもしくは検索システムは、今のところ、（ＳＲＳのような）１つより多くのデータバンクを検索できるものでさえ、既存のままのデータバンクの検索にたよっている。これは、クエリーを発送したときに抽出することができる情報コンテンツ（ｉｎｆｏｒｍａｔｉｏｎａｌ ｃｏｎｔｅｎｔ）が、それ自体が変形しにくい既存のデータバンクによって制限されるということを意味する。
【０００６】
本発明は、この制限を取り除き、既存のデータバンクにクエリーを発送することによってどの情報コンテンツを得ることができるかについてより大きな自由度を提供することを目指す。
（発明の概要）
本発明によれば、１つもしくはそれより多いデータバンクから生成される仮想データバンクオブジェクトが提供され、ここでは、この仮想データバンクオブジェクト自体をその他のデータバンクのように検索できるが、この方法は、
仮想データバンクの構成要素を形成する１つもしくはそれより多いメンバーデータバンクの組合せとして仮想データバンクオブジェクトを定義するメンバー定義モジュールであって、仮想データバンクオブジェクト自体は、動作の点でメンバーデータバンクと似ており、ユーザクエリーによってこの構成要素を形成するメンバーデータバンクの１つのように検索でき、仮想データバンクオブジェクトがユーザクエリーによって検索されているとき、そのメンバーデータバンクはユーザクエリーを受信して第１の結果セットをリターンするようなメンバー定義モジュールを備え、この仮想データバンクオブジェクトは、
仮想データバンクの構成要素を形成する１つもしくはそれより多いメンバーデータバンクに適用されるクエリーを定義する定義モジュールであって、このクエリーは、実行されたとき、１つもしくはそれより多いメンバーデータバンクのエントリのサブセットによって形成される第２の結果セットをリターンするような定義モジュール、をさらに備え、
この定義モジュールは、ブール演算子を定義するクエリーリンク演算子であって、仮想データバンクオブジェクトに対するユーザクエリーから生じる第１の結果セットと定義モジュールにおいて定義されたクエリーから生じる第２の結果セットとがクエリーリンク演算子によって接続されてそれによって最終の結果セットが形成されるようなクエリーリンク演算子をさらに備え、この最終の結果セットは、それ自体がメンバーデータバンクの１つのようなデータバンクであったかのように、仮想データバンクオブジェクトを検索するよう仮想データバンクオブジェクトに向けられるユーザクエリーから生じる有効な結果である。
【０００７】
１つもしくはそれより多いデータバンクに対して生成される仮想データバンクオブジェクトが提供される。仮想データバンクオブジェクトは、１つもしくはそれより多いメンバーデータバンクの組合せとして仮想データオブジェクトを定義するメンバー定義モジュールを備える。それによって形成された仮想データオブジェクトは、動作の点でメンバーデータバンクと似ており、あたかもそのメンバーデータバンクの１つであるかのように検索することができる。さらに、１つもしくはそれより多いメンバーデータバンクに適用されるクエリーを定義するための定義モジュールが提供される。このクエリーは、１つもしくはそれより多いメンバーデータバンクのエントリのサブセットを備える結果セット（ｒｅｓｕｌｔ ｓｅｔ）をリターンする。さらに、定義モジュールは、ブール関係を定義するクエリーリンク演算子を定義するが、このクエリーリンク演算子によって、定義モジュールのクエリーの結果生じる結果セットが、仮想データバンクオブジェクトに適用されるユーザクエリーの結果生じる別の結果セットに接続もしくはリンクされることになる。このユーザクエリーが仮想データバンクオブジェクトへ発送されるとき、このクエリーはメンバーデータバンクに効果的に発送され、それによってメンバーデータバンクからの（第１の）結果セットをリターンし、そしてこの結果セットは、ブールリンク演算子によって定義モジュールのクエリーからの（第２の）結果セットに結合され、最終の結果セットが得られる。それによって、仮想データバンクオブジェクトは、メンバーデータバンクのエントリのサブセットを効果的に構成し、にもかかわらず外部からあたかもメンバーデータバンク自体の１つのように検索することができる。
【０００８】
このことは、上述の構成により、ユーザはより高度に自由度のある手法で既存のデータバンクに基づいて仮想データバンクオブジェクトを定義することができるということを意味している。このように生成された仮想データバンクオブジェクトは、外部からはそれら自体が（単一の）データバンクのように見える。定義モジュールにおいて定義されたクエリーと定義モジュールにおいて定義されたクエリーリンク演算子によって定義されるある一定の制限を適用する間は、仮想データバンクオブジェクトは、そのメンバーデータバンクの組合せによって形成される。
【０００９】
特定の実施例によれば、定義モジュールのクエリーは、メンバーデータバンクのうちの１つのエントリをリターンするが、このメンバーデータバンクのうちの１つのエントリは、メンバーモジュールのうちの１つ以外におけるエントリのリファレンスを含む。これは、例えばメンバーデータバンクのうちの１つのエントリであって、メンバーデータバンクのうちの別のものにおいて更新されたエントリ、を取り除くために使うことができる。
【００１０】
特定の実施例によれば、定義モジュールのクエリーは、更新時間に従ってエントリのセットを選択する。これにより、データバンクの更新時間に従ってアクセス制限を適用することが容易となる。例えば、制限が適用されれば、ユーザは、少なくとも１年経ったエントリのみにアクセスすることができ、より最近に更新されたエントリにアクセスすることはない。
【００１１】
特定の実施例によれば、定義モジュールのクエリーによって適用された制限により、メンバーデータバンクのエントリを選択するが、あるデータフィールドが、このメンバーデータバンクのためのあるコンテンツを有する。これは例えば、生物学に適用する場合、例えば人間のようなある生命体に関係するエントリだけを選択するのに使ってもよい。
【００１２】
特定の実施例によれば、クエリーモジュールのクエリーが、プログラミング言語で書かれた指示のセットを備える。これにより、クエリー定義モジュールにおいて非常に複雑なクエリーを作成するのが容易となる。
【００１３】
さらに特定の実施例によれば、複数のクエリーは、クエリー定義モジュールにおいて定義される。この複数のクエリーにより、仮想データバンクオブジェクト上に種々のビュー（ｖｉｅｗ）を定義することができるようになる。
【００１４】
特定の実施例によれば、種々のビューは、種々のユーザ、種々の権限レベルに割り当てることができ、あるいは、他のいくつかの分類スキームに従って分類することができる。
【００１５】
さらに特定の実施例によれば、仮想データバンクオブジェクトのメンバーデータバンクは互いに完全に独立しており、これらは互いに独立に別々のインデックスがつけられていて、かつ、仮想データバンクオブジェクトのために共通のインデックスが構築されることはない。これにより、２つの既存のデータバンクを仮想データバンクオブジェクトに結合して仮想データバンクオブジェクトに対して共通のインデックスをさらに構築するときに生じ得るインデックスをつけるというオーバーヘッドを回避することが容易となる。
【００１６】
さらに特定の実施例によれば、仮想データバンクオブジェクトのメンバーデータバンクは、それ自体が仮想データバンクオブジェクトとなり得る。これにより、仮想データバンクオブジェクト構造の入れ子（ｎｅｓｔｉｎｇ）が可能であり、さらには、この入れ子構造において継承（ｉｎｈｅｒｉｔａｎｃｅ）の概念を使うことも可能である。
【００１７】
仮想データバンクオブジェクトを、ユーザクエリーをメンバーデータバンクのいずれかにも似た仮想データバンクオブジェクトに発送することによって検索することができる。クエリーは、その後仮想データバンクオブジェクトの個々のメンバーデータバンクに配送され、メンバーデータバンクオブジェクト上で実行される。これは、第１の結果セットをリターンする。さらなる（すなわち第２の）結果セットは、クエリー定義モジュールにおいて定義されたクエリーによってリターンされる。このクエリーはまた、メンバーデータバンクに適用され、仮想データバンクオブジェクトに発送されたユーザクエリーとは典型的に異なる結果セットをリターンする。そして、２つの結果セットを結合するためのクエリーリンク演算子のようなクエリーを適用することによって、２つの結果セットは結合される。そしてこれにより、仮想データバンクオブジェクトに発送されたクエリーに応答してリターンされた最終の結果セットが生じる。
【００１８】
本発明は、添付の図面を参照して詳細に説明される。
（詳細な説明）
図１は、別々に検索することができる２つのデータバンク１００、１１０を概略的に例示する。ここで、データバンクＡはあるコンテンツを有し、そしてデータバンクＢは、データバンクＡにも存在するがそのコンテンツがいくつかのさらなる情報、もしくは、データバンクＡにおいて対応するエントリのコンテンツと比較されたときいくらか修正されたものである更新されたエントリを含むものと仮定する。このデータバンク構造の１つの例は、データバンクＥＭＢＬおよびＥＭＢＬＮＥＷであり、後者は、ＥＭＢＬにも存在するエントリの更新されたエントリを含む。これらデータバンクは、生物学のデータバンクであり、生物学および生物情報学の分野でよく知られているものである。
【００１９】
ユーザが２つのデータバンクからある情報を得ることを望む場合、両方のデータバンクは、図１に例示されたように、同じクエリーを使って別々に検索されなければならない。データバンクＡに適用されたクエリーは結果セットＡ’をもたらし、データバンクＢに適用された同じクエリーは結果セットＡ’とはコンテンツが異なる結果セットＢ’をもたらす。これは、データバンクＢへのクエリーに応答してリターンされたデータバンクエントリが、更新された情報、補足された情報などのようなさらなる情報を含むことができるからである。
【００２０】
したがって、ユーザには２つの異なる結果セットが提供され、完全な結果情報を得るために、ユーザは、両方のデータをマニュアルで分析しなければならない。このマニュアルでの結果分析は、結果セットＡ’にも存在する結果セットＢ’のメンバーの識別を含んでいるが、その後、識別された結果セットＡ’のメンバーを削除し、更新された結果が結果セットＢ’に存在することになる。
【００２１】
図１に示された時間のかかるマニュアルでの分析を回避するために考えられるのは、２つのデータバンク１００および１１０を結合して新しいデータバンクを作るということである。しかしこれは、結合されたデータバンクに対して新しいインデックスを構築することを含んでいる。しかし、このインデックスの構築はだいぶ時間がかかり、特に両方のデータバンクが非常に大きい場合はそうである。
【００２２】
結合されたデータバンクの構築では、別のデータバンクに存在する対応の識別子かどうかについて、個々のデータセットの識別子全てをチェックする必要があり、もしそうであるならば、両方のデータバンクに存在するということがわかったデータセットに対して、データバンクＡの未更新のフィールド情報を、データバンクＢの更新されたフィールド情報によって置き換えなければならない。
【００２３】
本発明の第１の実施例による異なるアプローチを、図２を参照して説明する。図２には、いわゆる仮想オブジェクト２００が概略的に例示される。ここで「仮想」という用語は、このオブジェクトが、仮想データバンクオブジェクト２００のメンバーである既存のデータバンク２１０および２２０に基づいて形成されるということを意味している。仮想データバンクオブジェクト２００は、それ自体が仮想データバンクオブジェクトのメンバー（もしくはライブラリ）であるデータバンク２１０および２２０のようなデータバンクであるかのように外部に対して現れる。
【００２４】
外部に現れることを容易にするために、仮想データバンクオブジェクト２００は、クエリー２４０およびクエリーリンク演算子２５０を定義する定義モジュール２３０をさらに備える。仮想データバンクオブジェクト２００を形成するためのメンバーデータバンク２１０および２２０に接続される定義モジュール２３０の動作について次に説明する。
【００２５】
定義モジュール２３０は、両方のデータバンク２１０および２２０に適用されるクエリー２４０を定義するが、後者は更新された情報を含む。クエリーをデータバンクに適用することで、データバンク２１０および２２０からそれぞれリターンされる結果Ａ’および結果Ｂ’を含む結果セットがもたらされる。
【００２６】
図２の情報には、（ユーザ）クエリー２６５が例示されている。クエリー２６５は、図１の例に示したようなデータバンク２１０および２２０へユーザが発送することを望むクエリーである。しかし、本実施例では、クエリー２６５は、個々のデータバンクへ発送される代わりに、仮想データバンクオブジェクト２００に発送される。なぜなら、外部に対しては（ユーザに対しては）データバンクそのものとして現れるからである。
【００２７】
その後、クエリーは、図２に示されるような結合された結果セット２７０をともに形成する結果セットＢ”およびＡ”をそれぞれリターンする個々のデータバンク２１０および２２０へリダイレクトされる。
【００２８】
結合された結果セット２７０は、クエリーリンク演算子２５０を適用することによって結果セット２６０と結合される。そして、これにより最終の結果セット２９０がリターンされる。ここで、クエリーリンク演算子は、ブール演算子であってよく、このブール演算子によって２つの結果セット２６０および２７０が接続（リンク）され最終の結果セットが形成される。それは例えばブール演算子ＯＲであり、そのとき最終の結果セットは、２つの結果セット２６０および２７０を結合することにより生じるセットである。また、それはブール演算子ＡＮＤでもよく、両方のセットに存在するセット２６０および２７０のエントリのみが最終の結果としてもたらされる。別の可能性としてはＢＵＴ  ＮＯＴ接続があり、これは、例えば、第２の結果セットではなく第１の結果セットに存在するエントリだけが最終の結果として選択される。
【００２９】
データバンクＢはデータバンクＡに存在する更新されたエントリを含むという上記の特定の例に話を戻す。新しいインデックスを構築する間にデータバンクＡおよびＢを結合して新しいデータバンクを生成する場合に、リターンされたものと同じ結果セット２９０をリターンするという目標を達成するためには、仮想データバンクオブジェクト２００は、クエリー２６５によって検索されるとき、次の特定のセッティングをクエリー２４０およびクエリーリンク演算子２５０で実行すべきである。
【００３０】
この場合、クエリー２４０は、データバンクＢにも対応のエントリを有するデータバンクＡからのエントリをリターンするクエリーである。これらのエントリだけがクエリー２４０の結果としてリターンされる。このクエリーは、Ｌｉｏｎ  ｂｉｏｓｃｉｅｎｃｅ  ＡＧのソフトウェアシーケンス検索システムＳＲＳに存在しており、演算子「＞」を利用することで実行される。ＳＲＳでは、この演算は「リンク」と呼ばれる。この例では、クエリー文字列は「ｄａｔａｂａｎｋ  Ｂ＞ｄａｔａｂａｎｋ  Ａ」である。このクエリー文字列２４０は、データバンク２１０および２２０に適用されたとき、データバンクＢにも存在するデータバンクＡのエントリだけを含む結果セット２６０をリターンする。したがって、この特定の例では、結果セットＢ’は空であろう。
【００３１】
このようにして、データバンクＢに対応のエントリを有するデータバンクＡのエントリを含む結果セット２６０が得られた。さらに、結果セット２７０では、両方のデータバンク２１０および２２０へのクエリー２６５の発送に応答してリターンされた検索結果の完全なセットが得られた。そのようにして得られた結果セット２７０は、クエリーリンク演算子２５０を適用することによって結果セット２６０に結合される。この特定のケースでは、クエリーリンク演算子２５０は、「ｂｕｔｎｏｔ」タイプであり、これは、最終結果セット２９０は、結果セット２７０のエントリ全てを含むが、既に結果セット２６０に存在しているものは含まないということを意味する。それによって、結果セット２７０からのデータバンクＡのエントリを取り除くことができるようになり、それに対し更新されたエントリが結果セット２７０に存在する。したがって、最終の結果セット２９０は、結合されたデータバンクに対して新しいインデックスを構築することによって両方のデータバンクＡおよびＢが結合されて新しいデータバンクとなる場合にもたらされる結果セットと同じである。
【００３２】
このことは、仮想データバンクオブジェクト２００は、図１を参照して説明したように結果セットをマニュアルで分析する必要なしに両方のデータバンクＡおよびＢから矛盾のない結果セットを単一のクエリーで得る可能性をユーザに提供する。
【００３３】
上述の仮想データバンクオブジェクトは、オブジェクト指向プログラミング技術を使うことによって簡単に実現できる。生物学におけるより詳細な例について次に説明する。
【００３４】
生物学のデータベースの分野では、数ヶ月ごとに定期的に、しばしば毎日、一般リリースが更新されるので、多くのデータベースがリリースされる。更新は、新しいエントリだけではなく、メインリリースに既に存在するエントリに対する更新も含む。このように維持されるデータベースの例としては、ＳＷＩＳＳＰＲＯＴ、ＧＥＮＢＡＮＫおよびＥＭＢＬがある。毎日全ライブラリにインデックスをつけることに加え、毎日のリリース内の更新エントリはメインのリリースから削除する必要があるので、更新がリリースされるごとにこれらを結合して１つのライブラリとすることは、非実用的である。それゆえ、例えばＬｉｏｎ  ｂｉｏｓｃｉｅｎｃｅのＳＲＳ検索ソフトウェアを使う多くのデータバンクサーバ上では、これらのデータバンクは、２つのデータベースとして、すなわち、メインリリース（ＳＷＩＳＳＰＲＯＴ、ＧＥＮＢＡＮＫ）について１つおよび更新分（ＳＷＩＳＳＮＥＷ、ＧＥＮＢＡＮＫＮＥＷ）について１つとして、取り扱われる。仮想データバンクオブジェクトは、こうすることの必要性を除去する。
【００３５】
メンバーとしてメインリリースおよび更新データバンク（ライブラリ）を有する仮想データバンクオブジェクトでは、メインリリースに一度だけインデックスをつける必要があるが、更新ライブラリについては、更新されるときはいつでもインデックスが付けられる。リリースと更新されるエントリを定義する更新ライブラリとの間でリンクを定義できる。このリンクは、既に説明したＳＲＳクエリー言語のリンク演算子を使って定義することができる。このリンクは、もう使われてなくて、仮想ライブラリから取り除くべきエントリを定義するクエリーとして使うことができる。リンクという用語は、ブール演算子によって２つの結果セットをリンクする「クエリーリンク演算子」ではなく、上述のＳＲＳクエリー言語におけるリンク演算子を指しているということに注目すべきである。
【００３６】
上述の例では、一般的なＳＷＩＳＳＰＲＯＴデータバンクリリースとＳＷＩＳＳＮＥＷインターナショナルデータバンクリリースとが結合されて単一の仮想データバンクオブジェクトになる。個々のデータバンクはまだ存在しているが、しかし、ＳＷＩＳＳＰＲＯＴＡＬＬ仮想データバンクオブジェクトのサーチでは、ＳＷＩＳＳＰＲＯＴリリースデータバンク（ライブラリ）およびＳＷＩＳＳＮＥＷ更新データバンク（ライブラリ）の両方をサーチする。リンク演算子であるクエリーは、両方のデータバンクにおけるエントリの結合セットをリターンするが、エントリのセットから、更新ライブラリにおいて既に更新されているリリースライブラリにおけるエントリを取り除く。
【００３７】
このようにして形成されたＳＷＩＳＳＰＲＯＴＡＬＬ仮想データバンクオブジェクトは、メンバー（もしくはメンバーデータバンク）として、ＳＷＩＳＳＰＲＯＴおよびＳＷＩＳＳＮＥＷの２つのライブラリを有する。これは、仮想ライブラリをさらに定義するクエリー定義モジュールにおけるクエリー２４０を導くが、これは「（ｓｗｉｓｓｎｅｗ＞ｓｗｉｓｓｐｒｏｔ）」という形を取る。このクエリーは、クエリーリンク演算子「ＢＵＴ  ＮＯＴ」によってユーザクエリーから生じる結果セット２７０に接続される結果セット２６０をもたらす。ＳＲＳシステムにけるこの演算子のシンボルは、「！」である。したがって、実質的に、ＳＷＩＳＳＰＲＯＴＡＬＬライブラリに対する各ユーザクエリーは、「！」が添付されたクエリー「！（ｓｗｉｓｓｎｅｗ＞ｓｗｉｓｓｐｒｏｔ）」を有する。
【００３８】
ＳＷＩＳＳＰＲＯＴＡＬＬデータバンクは、ＳＷＩＳＳＰＲＯＴライブラリと同じフォーマットの定義＄ＳＷＩＳＳＰＲＯＴ＿ＦＯＲＭＡＴを使う。ライブラリオブジェクトのｖｉｒｔｕａｌＩｎｆｏアトリビュートはライブラリの仮想情報を定義し、それゆえ、仮想ライブラリとして（換言すれば、仮想データバンクオブジェクトとして）ライブラリを定義する。これは、ＳＲＳデータバンクサーバの場合、次のとおりである。
【００３９】
【数１】
2004527830.tif 000003
【００４０】
Ｉｃａｒｕｓオブジェクト「ＬｉｂＶｉｒｔｕａｌ」は、ライブラリと、クエリー２４０（ここでは、「ｓｗｉｓｓｎｅｗ＞ｓｗｉｓｓｐｒｏｔ」）と、仮想ライブラリを定義するのに使われるクエリーリンク演算子（ここでは、ｂｕｔｎｏｔ）とを指定する。この場合、メンバーライブラリもしくはメンバーデータバンクは、＄ＳＷＩＳＳＰＲＯＴ＿ＤＢおよび＄ＳＷＩＳＳＮＥＷ＿ＤＢである。Ｉｃａｒｕｃオブジェクト「ＬｉｂＶｉｒｔｕａｌＱｕｅｒｙ」は、クエリー２４０と、さらなるライブラリの定義に使われるクエリーリンク演算子定義２５０とを含む。この場合、ＳＷＩＳＳＮＥＷからＳＷＩＳＳＰＲＯＴへのリンクは、メインリリースに既に存在していた新しい更新リリースにおけるエントリを定義する。このクエリーのタイプは、ｂｕｔｎｏｔであり、したがって仮想クエリーはｂｕｔｎｏｔ（！）演算子を使ってユーザクエリーと結合される。
【００４１】
ユーザがＳＷＩＳＳＰＲＯＴＡＬＬライブラリをサーチするときはいつも、ＳＷＩＳＳＰＲＯＴおよびＳＷＩＳＳＮＥＷの両ライブラリがサーチされ、一致したエントリのセットが、仮想クエリータイプ演算子と呼ばれるクエリーリンク演算子２５０（この場合は（！））を使って、クエリー２４０（「仮想クエリー」と称する）からの結果に結合される。
【００４２】
本発明のさらなる実施例について図２を参照して説明する。
【００４３】
データバンク２１０および２２０の両方とも種々の生命体に関するエントリを含み、各データバンクにおけるデータフィールドの１つが対応のエントリが属する生命体を指定するものと仮定する。そして、一緒に結合された２つのデータバンク２１０および２２０の生命体特有のバージョンを提供するように、仮想データバンクオブジェクト２００を定義することができる。例えば、人間に関するエントリだけを含むよう仮想データバンクオブジェクト２００を定義したいと仮定しよう。すると、クエリー２４０は、データフィールド「生命体」はこのエントリが人間に関するということを指定するこれらのエントリのみをデータバンク２１０および２２０がクエリー２４０に応答してリターンするよう、構築されるであろう。
【００４４】
そして、結合された結果セット２６０は、各結果セットＡ’およびＢ’において人間に関するデータバンク２１０および２２０のエントリのみを含むであろう。このような場合、クエリーリンク演算子２５０は、論理ＡＮＤ演算子となり、このクエリーリンク演算子２５０によって結果セット２７０および２６０をリンクすることにより、結果セット２７０から人間に関係のないエントリを取り除くことができる。その結果、最終の結果セット２９０は、仮想データバンクオブジェクト２００に向けて発送されていたクエリー２６５に応答して人間に関するエントリのみを含むことになる。
【００４５】
当然、この例は、仮想データバンクオブジェクト２００は単一のメンバーバンクとしてデータバンクＡのみを含むといったより単純なやり方でも使うことができる。この場合、結合された結果セット２６０は、結果セットＡ’のみを含み、結果セット２７０は同様に結果セットＡ”のみを含む。
【００４６】
この場合の定義モジュール２３０の例は次のとおりである。
【００４７】
上記例において、仮想データバンクオブジェクト２００は、単一のメンバーバンクとして、良く知られたデータバンクＥＭＢＬを含み、クエリー２４０は人間に関するエントリに対してクエリーを指定する（ＳＲＳ言語で）ＥＭＢＬ−ＯＲＧ：ＨＵＭＡＮ＊という形式をとり、クエリーリンク演算子は論理ＡＮＤ演算子である。このとき定義は次式のようになる。
【００４８】
【数２】
2004527830.tif 000004
【００４９】
データ管理システムあるいは、クエリー２４０を定義するデータバンクを処理する検索システムによって提供されたクエリー言語を使うという可能性を有するだけでなく、クエリーの定義に関してより自由度があるという利点を有する。このことは、あらゆる他のプログラミング言語もしくはスクリプト言語においてクエリー定義２４０を実行することができることによって可能となる。この場合、このコマンドに従うものはあるプログラミング言語におけるもしくはあるスクリプト言語におけるクエリー定義であるということをコンパイラもしくはインタープリタに認識させるコマンドをクエリー定義は含み、これにより、コンパイラもしくはインタープリタが、プログラミング言語もしくはスクリプト言語でクエリー定義を処理するジョブをすることができる別のコンパイラもしくはインタープリタをコールすることができる。
【００５０】
この例では、下記のように、クエリー２４０を定義するのにＩＣＡＲＵＳスクリプトが使われる。ここで、「ＱｅｒｙＳｒｔ」は、ＩＣＡＲＵＳ言語においてどのようなクエリーコマンドであってもよい。
【００５１】
以下の例では、単純なクエリーが使われる。ＩＣＡＲＵＳの「＠」演算子がＩＣＡＲＵＳスクリプトを定義するのにどのように使われるか注目すべきである。この演算子に従う全てのものは、クエリー２４０を定義するためのスクリプトとして解釈される。
【００５２】
【数３】
2004527830.tif 000005
【００５３】
この例では、クエリーを行うために新しいセッションを作る代わりに、ＩＣＡＲＵＳコマンド＄ＣｕｒｒＳｅｓｓｉｏｎ：［］が使われる。これは、現在のセッションをリターンする。現在のセッションが存在しない場合、そのときは新しいセッションが作られる。クエリーは、結果セット２６０を作るセットである＄ｓｅｔをリターンする。
【００５４】
次の例では、ＩＣＡＲＵＳファイルが含まれる。これは、とても複雑なＩＣＡＲＵＳスクリプトとなり得る。上述と同じ＄ＣｕｒｒＳｅｓｓｉｏｎ：［］を再び使うべきである。
【００５５】
【数４】
2004527830.tif 000006
【００５６】
仮想データバンクオブジェクトは、クエリーのユーザ依存の定義に基づいてデータベース上のあるエントリにアクセスすることを制限するのにも使うことができる。これは、種々のユーザについて種々のクエリー２４０が定義され、それによって、種々のユーザに対して種々の結合された結果セット２６０をリターンすることを意味している。結合された結果セット２６０を結果セット２７０にリンクするとき、ユーザ依存の最終の結果セットが得られる。
【００５７】
これについて、ＳＷＩＳＳＰＲＯＴデータバンクを例にとり、より詳細に説明する。
【００５８】
ＳＷＩＳＳＰＲＯＴライブラリはフィールド＄ＤＦ＿ＬＵＰＤａｔｅを有しており、これは、各エントリの最後の更新日にインデックスをつける。このフィールドは仮想ライブラリを定義するのに使うことができ、これによりユーザは、エントリの最後の更新日に依存して、様々なエントリにアクセスすることができる。
【００５９】
次の例の仮想データバンクオブジェクトであるＳＷＩＳＳＰＲＯＴＡＧＥ仮想ライブラリは、ちょうど１つのデータバンクであるＳＷＩＳＳＰＲＯＴＡＬＬ＿ＤＢ（よってＳＷＩＳＳＰＲＯＴおよびＳＷＩＳＳＮＥＷが上述のようにサーチされる）を含む。ライブラリ定義は次を含む。
【００６０】
【数５】
2004527830.tif 000007
【００６１】
これは、ライブラリが一定のユーザに限定されることを示している。＄ＬｉｂＶｉｒｔｕａｌ定義は、ユーザに依存する２つの異なる仮想クエリーを含む。ユーザ１については、アクセスが全てのエントリに対して許される（なぜならクエリーが与えられないからである）。ユーザ２については、１９９９年１月１日移行の更新のみが含まれる。
【００６２】
【数６】
2004527830.tif 000008
【００６３】
この場合、ｖｉｒｔｕａｌＱｕｅｒｙＴｙｐｅ（クエリーリンク演算子２５０）は、「ｂｕｔｎｏｔ」ではなく「ａｎｄ」（＆）であることに注目されたい。
【００６４】
上述したように仮想データバンクオブジェクトの生成および使用は、これらが、データバンクの組合せを定義すること、および単一のデータバンクおよびデータバンクの組合せでの制限された使用をさらに定義すること、に使用することについて自由度をもたらす一方で、インデックスを付けるというオーバーヘッドを著しく低減させるということは、上述の例から当業者には明白であろう。仮想データバンクオブジェクトにより、ユーザは、既存のデータバンクのあらゆる組合せもしくはサブセットを定義することができ、そのようにして生成された仮想データバンクオブジェクトを、既存のデータバンクのように検索することができる。
【００６５】
仮想データバンクオブジェクトは、それ自体がまたデータバンクオブジェクトであるメンバーデータバンクを含んでもよい。このことは、仮想データバンクオブジェクトが入れ子にされ、オブジェクト指向プログラミング技術で知られた継承の概念を使用することもできるということを意味する。
【００６６】
一度この仮想データバンクオブジェクトが作られると、この仮想データバンクオブジェクトを、データバンク管理システムによってもしくは、仮想データバンクオブジェクト上でクエリーを実行する検索システムによって使うことができる。データベース管理システムもしくは検索システムに関連して前述の仮想データバンクオブジェクトを使う方法を、図３を参照して説明する。
【００６７】
図３は、仮想データバンクオブジェクトがデータベース管理システムもしくは検索システムによって使われるときに実行されるステップを概略的に例示する。図３の右上部分のステップ３００および３１０は、図２のクエリー定義モジュール２３０の動作に関する。図３の左上部分のステップ３２０、３３０および３４０は、図２に例示したようにメンバーバンク２１０および２２０にユーザクエリー２６５を発送することに関する。そして最後に、図３の動作３５０は、図２に例示したようにクエリーリンク演算子２５０に関する。
【００６８】
ステップ３００は、図２のクエリー定義モジュール２３０で定義したクエリーが実行されるが、このことは、仮想データバンクオブジェクトのメンバーデータバンクに発送され、ステップ３１０において、結合された結果セットがメンバーデータバンクから得られるということを意味する。ステップ３００および３１０は、通常は予め定義されクエリー定義モジュールにセットされる定義に関するので、これらのステップは一度実行され、ステップ３１０においてリターンされる結合された結果セットがディスクにセーブされる。これは、後述するリンク演算３５０を実行するために後でディスクから検索されることもできる。
【００６９】
これに対し、ステップ３２０は、図２に例示されたユーザクエリー２６５の入力に関する。ステップ３２０においてユーザによって入力されたクエリーは、ステップ３３０において仮想データバンクオブジェクトのメンバーオブジェクトに分配される。図２においてメンバーデータバンク２１０および２２０が例示される。これらデータバンク上にクエリーを実行することで、ステップ３４０においてメンバーデータバンクから結合された結果セットがリターンされる。これは、図２においては結合された結果セット２７０として例示される。
【００７０】
ステップ３００〜３４０が実行された後は、２つの結合された結果セットが存在するが、１つはユーザクエリーからメンバーバンクへ、もう１つはステップ３００にいてクエリー定義モジュールで定義され発送されたクエリーからメンバーバンクへ、である。これら２つの結合された結果セットはステップ３５０においてブール演算によってリンクされる。ブール演算は、図２のクエリーリンク演算子２５０に対応する。
【００７１】
結果として、ステップ３６０では、ステップ３５０でクエリーリンク演算子を使ってリンク演算を実行することによって得られる最終の結果セットがリターンされる。この最終の結果セットは、図２に例示される結果セット２９０に対応する。
【００７２】
上述のように、ステップ３００および３１０を予め実行してもよく、ステップ３１０で得られる結果をディスクにセーブしてもよい。ステップ３５０でクエリーリンク演算を実行したとき、２つの結合された結果セットは、例えば、２つの結合された結果セット２６０および２７０において結果の個々のデータセット識別子を検索することによってブールリンク演算子を使って簡単に実行できる。これら２つの結合された結果セットはそれぞれ、データバンク２１０および２２０からのデータバンクエントリのセットを含み、一般的には、データバンクエントリのそれぞれはユニークな識別子を有する。このユニークな識別子を使って、ブールリンク演算を、２つの結合された結果セットで実行することができ、これによって最終の結果セットが得られる。
【００７３】
上述の本発明の実施例は、コンピュータ上で動作するコンピュータプログラムによって実現可能であることは当業者にとって容易に明らかであろう。特に、仮想データバンクオブジェクトは、コンピュータプログラム（もしくはその一部）によって実現でき、また、データベース管理システムあるいは、仮想データバンクオブジェクトを処理する検索システムは、同様にコンピュータプログラムを使って実現することができる。さらに、本発明の実施例は、記録メディア、あるいは、送信リンク、インターネット接続、もしくはローカルエリアネットワーク接続などのような搬送メディアにおいて実施されるコンピュータプログラムの形式をとることができる。このコンピュータプログラムが動作できるコンピュータは、商業的に入手できるパーソナルコンピュータ、ワークステーション、スーパーコンピュータもしくは特殊用途のコンピュータなど、汎用のコンピュータの形式をとることができる。
【００７４】
本発明は、図４Ａに概略的に例示されるパーソナルコンピュータもしくはワークステーションのようなハードウェア構成に適用可能である。このコンピュータは、中央処理ユニットＣＰＵ２６、入出力Ｉ／Ｏユニット２１、内部メモリ２２および外部メモリ２４を備えてもよい。このコンピュータは、キーボード２３、マウス２８もしくは音声処理手段（図示せず）のような標準的な入力デバイスをさらに備えてもよい。
【００７５】
しかし、本発明は、図４Ｂに例示するようなクライアント−サーバ構成に適用してもよい。ユーザクエリーの最終結果を、クライアント装置６０のディスプレイスクリーンに表示することができ、図４を参照して説明した方法のいつくかもしくは全ての方法が、ブラウザアプリケーションなどを使ってインターネットのようなデータネットワークを介してクライアント装置によってアクセス可能な１つもしくはそれより多いサーバコンピュータ上で実行される。
【図面の簡単な説明】
【図１】
従来技術による複数のデータバンクの検索を示す図である。
【図２】
本発明の実施例による仮想データバンクオブジェクトの動作を概略的に例示する図である。
【図３】
本発明の実施例による方法を概略的に例示する図である。
【図４Ａ】
本発明の実施例に関連して使うことができるコンピュータシステムを概略的に例示する図である。
【図４Ｂ】
本発明の実施例に関連して使うことができるコンピュータシステムを例示する図である。
【図１】
2004527830.tif 000009
【図２】
2004527830.tif 000010
【図３】
2004527830.tif 000011
【図４Ａ】
2004527830.tif 000012
【図４Ｂ】
2004527830.tif 000013
【国際公開パンフレット】
2004527830.tif 000014
2004527830.tif 000015
2004527830.tif 000016
2004527830.tif 000017
2004527830.tif 000018
2004527830.tif 000019
2004527830.tif 000020
2004527830.tif 000021
2004527830.tif 000022
2004527830.tif 000023
2004527830.tif 000024
2004527830.tif 000025
2004527830.tif 000026
2004527830.tif 000027
2004527830.tif 000028
2004527830.tif 000029
2004527830.tif 000030
2004527830.tif 000031
2004527830.tif 000032
2004527830.tif 000033
2004527830.tif 000034
2004527830.tif 000035
2004527830.tif 000036
2004527830.tif 000037
2004527830.tif 000038
2004527830.tif 000039
2004527830.tif 000040
2004527830.tif 000041
【国際公開パンフレット（コレクトバージョン）】
2004527830.tif 000042
2004527830.tif 000043
【国際調査報告】
2004527830.tif 000044
2004527830.tif 000045
2004527830.tif 000046