JP2006244478A - 構成可能なクエリを形成するapiおよびクエリ言語 - Google Patents

構成可能なクエリを形成するapiおよびクエリ言語 Download PDF

Info

Publication number
JP2006244478A
JP2006244478A JP2006031112A JP2006031112A JP2006244478A JP 2006244478 A JP2006244478 A JP 2006244478A JP 2006031112 A JP2006031112 A JP 2006031112A JP 2006031112 A JP2006031112 A JP 2006031112A JP 2006244478 A JP2006244478 A JP 2006244478A
Authority
JP
Japan
Prior art keywords
query
search
tree structure
searcher
search object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006031112A
Other languages
English (en)
Inventor
Benjamin Albahari
アルバーリ ベンジャミン
Edward G Sheppard
ジー.シェパード エドワード
Michael E Deem
イー.ディーム マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006244478A publication Critical patent/JP2006244478A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63KRACING; RIDING SPORTS; EQUIPMENT OR ACCESSORIES THEREFOR
    • A63K3/00Equipment or accessories for racing or riding sports
    • A63K3/02Starting-appliances
    • A63K3/023Starting-blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】クエリを構成または構築するためのモジュラー形式または再利用可能なシステムを提供する。
【解決手段】システムは、クエリオブジェクトについて、コンストラクタおよびアクセッサにアクセスするアプリケーションプログラミングインターフェースを含む。アプリケーションプログラミングインターフェースは、クエリオブジェクトを構築する助けとなる。
【選択図】図1

Description

本発明は、クエリを構成または構築するためのモジュラー形式または再利用可能なシステムおよび方法に関する。
今やコンピュータは、その主要タスクの一部として、データを記憶し、検索し、取り出すために普通に使用される。処理ユニットの計算スピードおよび記憶装置のデータ密度の劇的な向上など、様々なコンピューティング関連分野での進歩は、コンピューティングシステムによって、かつてないほど多くのデータを記憶し、検索し、取り出すことができることを意味する。現在、記憶、検索、取出しが可能なデータの量が膨大であることから、これら記憶されたデータを検索し整理するシステムに関する挑戦課題が生じる。
データの検索は、設計が複雑であり、実行速度も遅くなることがある。複雑さは通常、少なくとも部分的には、検索するデータの量およびこれらのデータを整理して記憶する方法に起因する。複雑さは、利用可能な大量のデータ内で所望の情報の検索を実施するのに用いる特定の手段に大きく依存することもある。クエリ言語の選択または検索クエリの生成など、この特定の手段は、検索を実行するスピードに大きな影響を及ぼす。
クエリを実施するには一般に、開発者が、所定のクエリ言語で構成されたクエリ全体を含む単一の大きな文字列その他のデータ構造を構築することを必要とする。次いで、開発者は通常、クエリ全体を、このクエリを実行する機能を提供するアプリケーションプログラミングインターフェース(「API」)に渡さなければならない。構成されたクエリの個々の部分は通常、異なるクエリを生成するために容易に再利用することも、組み合わせることもできない。さらに、開発者は通常、クエリを構築する際にAPIの支援が得られず、クエリ言語のすべての能力を全体的に知った上でクエリを生成しなければならない。
一般に、様々な情報を位置決定するために個々のクエリの構築および再構築を行うのに多大な労力が費やされる。この手法は、コンピュータコードをモジュール化し、再利用可能にすべきであると教えるオブジェクト指向ソフトウエア工学の一般原理に相反するものである。オブジェクト指向の設計およびプログラミングの一般的なの利益が、情報検索システムでは概ね利用可能となっていない。現在のシステムは、クエリを構成または構築するためのモジュラー形式または再利用可能なソフトウエア設計の利益を提供することができない。
以下、ここで開示し説明するコンポーネントおよびこれらのコンポーネントに関連する方法のいくつかの態様を基本的に理解するための簡単な概要を提示する。この概要は、広範囲に及ぶ概説ではない。この概要は、主要な、または不可欠な要素を特定することも、範囲を画定することも意図していない。この概要の唯一の目的は、後で提示するより詳細な説明の前置きとして、簡略化した形でいくつかの概念を提示することである。さらに、本明細書で用いる項目の見出しは、単に便宜上設けられるものであり、いかなる形でも限定的にみなすべきではない。
データを照会するモジュール形式クエリを生成するシステムが提供される。このシステムは、開発者が、クエリオブジェクトについて、コンストラクタおよびアクセッサ(accessor)にアクセスするアプリケーションプログラミングインターフェースを含む。このアプリケーションプログラミングインターフェースは、これらのクエリオブジェクトを構築する助けにもなる。クエリオブジェクトは、クエリの少なくとも一部をカプセル化することができ、それら自体が他のクエリオブジェクト内にカプセル化されて、先にカプセル化したクエリ部分から形成されるより複雑なクエリが生成される。これらのクエリオブジェクトを直接使用するか、またはアプリケーションが使用して、記憶された情報を検索することができる。
検索クエリを表現するシステムが提供される。所定のクエリ言語で構成されたクエリの別々の部分は、ツリー構造で表現される。このツリー構造は、別のツリー構造を参照することによって、またはそれ自体を参照することによって、より複雑なクエリ構造の一部として使用する。ツリー構造は、クエリオブジェクト内にカプセル化されて、クエリを実施するときに使用される。
クエリオブジェクトは、クエリオブジェクトを合わせてリンクすることによって、または、クエリオブジェクトを互いにカプセル化することによって、より複雑なクエリの構成可能な構成単位として使用する。クエリオブジェクトは、記憶空間クエリ言語にマッピングするアプリケーション空間クエリ言語を使用して構築することができる。このようなマッピングは、スキーマ空間を使用して実行する。アプリケーション空間クエリ言語を使用して構築されたクエリオブジェクトは、アプリケーション空間クエリ言語と記憶空間クエリ言語の間にスキーマ空間を定義することによって、様々な記憶空間クエリ言語を使用してクエリする記憶された情報を位置決定することができる。
クエリビルダは、記憶された情報の検索中に使用するクエリオブジェクトを構築する助けとなる。このクエリビルダは、ユーザインターフェースを介してアクセスすることができる。このユーザインターフェースにより、ユーザは、クエリの一部を複数選択して完全なクエリに統合することができる。この完全なクエリを使用して、記憶された情報を検索することができる。このクエリビルダは、完全なクエリ自体を構築することもできるし、クエリ記述子を使用して、先立って構築され使用可能な一致するクエリオブジェクトを見つけることもできる。
ここで開示し説明するコンポーネントおよび方法は、以下で詳細に説明し、特許請求の範囲で具体的に指摘する特徴を含む。以下の説明および添付の図面では、特徴のある種の例を詳細に述べる。これらの特徴は、ここで開示し説明するコンポーネントおよび方法を利用可能な様々なやり方の一部を示す。ここで開示し説明するコンポーネントおよび方法の特定の実施形態は、このような特徴およびそれらの均等物の一部、またはこれらの多くの部分、あるいはこれら全部を含むことができる。本明細書で提示する特定の実施形態および実施例の変形形態は、以下の詳細な説明を図面と併せ読めば、当業者には明らかであろう。
本明細書では、「コンポーネント」、「システム」、「モジュール」などの用語は、ハードウエア、(例えば、実行中の)ソフトウエア、および/またはファームウエアなど、コンピュータ関連の実体を指すことを意図している。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、プログラム、および/またはコンピュータとすることができる。また、サーバ上で実行中のアプリケーションおよびこのサーバはともにコンポーネントとすることができる。1つまたは複数のコンポーネントは、プロセス内に常駐することができ、コンポーネントは、1つのコンピュータ上にローカルに配置するか、または、2つ以上のコンピュータに分散させるか、あるいはその両方とすることができる。
図面を参照して、ここで開示するコンポーネントおよび方法を説明する。これらの図面を通じて、同様の参照数字を用いて同様の要素を指す。以下の説明では、説明の便宜上、ここで開示する主題が完全に理解されるように、数多くの特定の細部を述べる。ただし、これら特定の細部のある部分は、特定の実施形態では、割愛するか、あるいは、他の部分と組み合わせることができることが明らかなことがある。他の例では、説明を実施するために、ある種の構造および装置をブロック図の形態で示す。さらに、ここで述べる特定の実施例では、クライアント/サーバアーキテキチャに適合する用語を使用し、また、これら特定の実施例は、クライアント/サーバの実施形態の例でさえあることがあるが、クライアントおよびサーバの役割を逆にすることが可能であることと、ここで開示し説明するコンポーネントおよび方法は、クライアント/サーバアーキテキチャに限定されず、ここで開示し説明するコンポーネントおよび方法の趣旨または範囲から逸脱することなく、他のアーキテキチャで、具体的には例えばピアツーピア(P2P)アーキテキチャで使用するのに容易に適合することが可能ことが当業者には理解されよう。さらに、本明細書で提示する特定の実施例では、特定のコンポーネントを含み、また参照することがあるが、本明細書で開示し説明するコンポーネントおよび方法の実施形態は、必ずしもこれら特定のコンポーネントに限定されず、他の状況でも使用可能であることに留意されたい。
人工知能に基づくシステム(例えば、明示的および/または暗示的に訓練される分類子)は、以下で説明するように、推論および/または確率による決定、または統計に基づく決定、あるいはその両方を実施することと関連して使用することができる。本明細書では、「推論」という用語は概ね、システム、環境、および/またはユーザの状態について、イベントによって取得された1組の観察結果および/またはデータから、論理的に考え、また推論するプロセスを指す。推論を利用して、例えば、特定のコンテキストまたはアクションを識別することもできるし、状態についての確率分布を生成することもできる。この推論は確率的である。例えば、推論は、データおよびイベントの考察に基づいて、対象とする状態について確率分布を計算することを含む。推論は、1組のイベントおよび/またはデータから、より高いレベルのイベントを構成するのに利用する技法を指すこともある。このような推論により、1組の観察されたイベントおよび/または記憶されたイベントデータから、これらのイベントが時間的に密接に相関するか否かにかかわらず、また、これらのイベントおよびデータが、1つのイベント/データ供給源または複数のイベント/データ供給源のいずれから得られるかにかかわらず、新しいイベントまたはアクションが構築される。様々な分類スキームおよび/または分類システム(例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンネットワーク(Bayesian belief network)、ファジィ論理、データ融合エンジン(data fusion engine)その他の類似のシステム)を、自動的なアクションおよび/または推論されるアクションを実施することに関連して利用可能である。
さらに、ここで開示し説明するコンポーネントは、標準のプログラミング技法および/または工学技法を利用して、ソフトウエア、ファームウエア、ハードウエア、またはこれらの任意の組合せを生成し、それによってコンピュータを制御する方法、機器、または製品として実施可能である。本願明細書では、「製品」という用語は、任意のコンピュータ可読の装置、キャリア、または媒体からアクセス可能なコンピュータプログラムを含むことを意図している。例えば、コンピュータ可読媒体は、磁気記憶装置(ハードディスク、フロッピー(登録商標)ディス、磁気ストリップその他のタイプの媒体など)、光ディスク(コンパクトディスク(CD)、デジタル多用途ディスク(DVD)その他の類似の媒体のタイプなど)、スマートカード、およびフラッシュメモリ装置(例えば、カード、スティック、キードライブなど)を含むが、これらに限定されるものではない。さらに、キャリアを利用して、電子メールを送受信する際に用いるデータや、インターネットまたはローカルエリアネットワーク(LAN)などのネットワークにアクセスする際に用いるデータなど、コンピュータ可読電子データを搬送可能であることを理解されたい。当然のことながら、ここで開示し説明するコンポーネントおよび方法の範囲または趣旨から逸脱することなく、この構成に多くの改変を加えることができることが当業者には理解されよう。
アプリケーションの開発者は、様々なやり方でクエリを構成する一連の簡単な個々のAPIコールを使用して、様々なデータの組の間でいくつかの異なるタイプの結合を行うことをしばしば必要とする複雑なクエリを構築することができる。このAPI(本件特許出願人のOSのウィンドウズ(登録商標)内に内蔵され、種々の機能を提供するプログラムのこと)は、プログラマにクエリの能力を、見つけ出し、使用するのが簡単なやり方で公開することによって、クエリを構築する際の助けとなる。さらに、本明細書で開示し説明するAPIなどのAPIが提供する仕組みによって、プログラマは、他のクエリで、または異なるコンテキストで使用する類似のクエリで適用可能なモジュール形式の、または再利用可能な部分またはクエリを生成または形成することができる。
クエリを段階的に構築し構成することができるように、クエリを表現するのに用いる特定のクエリ言語を具体的に構築する。このような言語を用いると、開発者は、クエリを構築する場合に検索機能をよりよく利用することができる。このようなクエリ言語により、全部を、または部分的に再利用するモジュール形式のクエリの生成を実施することもできる。クエリの再利用、およびモジュールの置換による簡単な修正により、新しいクエリを生成するのに必要とされる時間を短縮することもできる。
図1は、クエリ構築システム100のシステムブロック図である。クエリ構築システム100を使用して、クエリをカプセルかするオブジェクトを生成することができる。構築されたオブジェクトを用いて、コンピュータシステム上に記憶された情報を検索することもできる。本明細書では、オブジェクトという用語は、オブジェクト指向コンピューティング環境におけるコンピューティングオブジェクトを指すだけでなく、CまたはC++のプログラミング言語で見られるデータ構造体など、他のコンピューティングパラダイムからの他の適切なデータの構造体または構成体、あるいは実行可能コードとともにこのような構造体を組み合わせた物を指すこともある。
クエリ構築システム100は、ストレージサーチャ(storage searcher)オブジェクト120を生成するのに使用するアプリケーションプログラミングインターフェース(「API」)110を含む。このAPIにより、とりわけ、コンストラクタおよびアクセッサなどのストレージサーチャオブジェクトのメソッドにアクセスすることができる。API 110などのAPIを使用することの利益の1つは、オブジェクトによって提供される共通に使用する機能または必要な機能を、明確に定められたシステムを介してプログラマにアクセス可能にすることである。別の利益は、API 110を介して提供される機能のより低レベルの特定の実施形態の細部を、その機能に依存するコンポーネントをばらばらにせずに変更して、例えば、欠陥を補正することである。さらに、API 110は、API 110がアクセスを提供する機能およびコンポーネントが、使用されるプログラミング言語の一部ではないクエリ言語で構成され、検索を実施するために他のコンポーネントに渡されるクエリ文字列用のキャリアと異なり、クエリ言語の自然な感覚の部分になるように実装することができる。
ストレージサーチャオブジェクト120は、クエリ130をカプセル化する。クエリ130へのアクセスは、API 110を使用して生成されたストレージサーチャオブジェクト120によって行う。このようなアクセスは、特定の実施形態で示すように、メソッドコールまたは他の何らかの適切なアクセスメソッドを利用して実現することができる。このような構成により、任意のまたは悪意のユーザまたはプロセスがクエリを、偶然であろうとなかろうと容易には変更し得ないという意味で、クエリの完全性を高めることができる。クエリ130は、固有の構文を有する所定のクエリ言語で構成する。この所定のクエリ言語の構文は、クエリ部分がモジュール形式または再利用可能になるように構築する。さらに、この構文は、ツリー構造内で、クエリまたはクエリの一部の表現を実施する。このようなツリー構造は、クエリの他の部分を蓄積し、より複雑なクエリを形成するために、他のツリー構造と結合することもできるし、他のツリー構造を参照することもできる。
図2は、クエリまたはクエリの一部を表すツリー構造200のシステムブロック図である。ツリー構造200は、複数のノード210を含む。各ノード210は、クエリ語句を含む。語句は、検索語句および演算子、特定の実施形態によっては、とりわけ、select、project、またはjoinなどを含む。ノードは、例えばノード210の1つは、クエリ語句間の論理的なつながりを表現するために合わせてリンクする。ツリー構造200は、クエリ全体を表現することもできるし、クエリの一部だけを表現することもできる。いずれの場合も、ツリー構造200は、それを別のツリー構造と結合することによって、より複雑なクエリの一部として使用する。ツリー構造200は、検索機能中に利用するために、検索オブジェクト内にカプセル化することができる。
ツリー構造200は、(図示しない)式オブジェクトなどのオブジェクト内にカプセル化することもできる。この式オブジェクトは、図1に関連して開示し説明したストレージサーチャオブジェクト120などのサーチャオブジェクトによってカプセル化する。式オブジェクトは、クエリが構築される場合に形成することができる。同様に、式オブジェクトは、クエリが実行される場合に処理する。クエリ文字列に加えて、またはその代わりに、クエリを表す式オブジェクトを、サーチャコンストラクタに渡して、この式オブジェクトによって表されるクエリをカプセル化する新しいサーチャオブジェクトを生成することができる。
図3は、結合検索オブジェクトのシステムブロック図である。結合検索オブジェクトを用いて、それが結合するコンテキスト内で検索を実施することができる。この実施例では、また、必要に応じて、または適宜、他のところで、コンテキストは、検索ドメイン、または物理的な記憶区域、あるいはその両方を含む。この特定の実施例で示すように、サーチャオブジェクト310は、図1のAPI 110などのAPIを用いて生成されたオブジェクトである。サーチャオブジェクト310は、クエリ320を含む。クエリ320は、単一の一体構造クエリとして、または部分クエリのモジュール断片から組み立てられた部分クエリの集合体として生成された完全なクエリとする。
サーチャオブジェクト310は、コンテキスト330に結合する。コンテキスト330は、所定のやり方で表現する1組の情報とすることができ、それによって、図に示すサーチャオブジェクト310などのサーチャオブジェクトによってこの組全体を通して検索を実施する。図示および説明の便宜上、1つのサーチャオブジェクト310および1つのコンテキスト330しか示さないが、2つ以上のサーチャオブジェクトを1つのコンテキストに結合可能であることに留意されたい。同様に、1つのサーチャオブジェクトを、2つ以上のコンテキストとともに使用可能である。このような使用法は、複数の結合によって、またはあるコンテキストとの既存の結合を除去し、新しいコンテキストとの新しい結合を追加することによって行うことができる。
サーチャ310などのサーチャオブジェクトは、オブジェクト指向プログラミング言語におけるクラスとして実装する。利用可能な適切なオブジェクト指向プログラミング言語の例は、Java(登録商標)およびSmallTalkである。このクラスは、エニュメレーションメソッドを、クラスとして、あるいは1つまたは複数のクラスのインスタンスとして他のサーチャオブジェクトを構築するのに使用する他の様々なメソッドとともに実施する集合体として見えることがある。コンストラクタメソッドは、1つまたは複数の入力パラメータとして1つまたは複数のサーチャオブジェクトを受け取り、入力パラメータとして渡されるサーチャオブジェクトをカプセル化する新しいサーチャオブジェクトを出力することができる。このようにして、より複雑なクエリを構築することができる。構築されたサーチャオブジェクトは、他のタイプの中でも、フィルタリング、ソート、またはグループ化された集合体を表現することができる。サーチャオブジェクトによって表現されるクエリは、アプリケーションがサーチャオブジェクトのコンテキストに対してエニュメレーションを開始する場合に実行する。
代わりに、サーチャ310は、とりわけCまたはC++のような高級プログラミング言語で生成するデータ構造などのデータ構造として実装可能である。このタイプの実装形態では、そうでない場合にはオブジェクト指向フィーチャ、例えば他のカプセル化されたオブジェクトによって表されるサーチャオブジェクトの属性は、このようなデータ構造のフィールドとして実装することもできるし、そうでない場合には特定のオブジェクト指向フィーチャを表すのに適切な物として実装することもできる。このデータ構造のメンバフィールドにアクセスするか、またはメンバフィールドを使用するか、あるいはその他の方法で操作するように、適切な関数を定義する。他のコンピューティングパラダイム、とりわけ、関数プログラミングからの実施例が列挙されていないが、これらのパラダイムにおいて対応する実施形態が可能でないことを示唆するものではない。
コンテキスト330は、オブジェクト指向プログラミング言語におけるクラスとして実装することもできる。コンテキストクラスは、アイテムなど、開始点サーチャとして使用するいくつかの様々なプロパティを提供する。開始点サーチャ用のパターンは、1つまたは複数のプロパティ、または新しいサーチャを生成するための1つまたは複数のメソッド、あるいはその両方を含むデータクラスコード生成パターンとすることもできる。例えば、コンテキストクラスは、そのコンテキスト内のすべてのアイテムを表すアイテムプロパティを含む。エニュメレーションメソッドを利用して、サーチャオブジェクト内の各アイテムについての情報を表示することができる。ソートメソッドおよびグループメソッドなど、様々な操作メソッドを利用して、含まれているアイテムを所望のとおりに構成する。他の多くのプロパティまたはメソッドを実装可能である。例えば、コンテキスト330は、他のコンポーネントに関連して上述した別の適切なデータ構造として実装することができる。エニュメレーション機能または反復機能などの様々な機能は、このようなデータ構造とともに使用する。
先に述べたように、サーチャオブジェクト310などのサーチャオブジェクトは、クエリ320などのクエリをカプセル化することができる。クエリ320を構築するために、サーチャクラスは、クエリを構築するいくつかのメソッドを提供する。これらのメソッドは一般に、入力としてサーチャオブジェクトを受け取り、ある種のデータ操作関数を実施し、サブクエリとして、この入力サーチャオブジェクトをカプセル化する新しいサーチャオブジェクトを出力することができる。このようにして、ますます複雑なクエリを構成することができる。
クエリ言語における様々なコマンドによって実施される機能と類似の、または同様の機能を実施するために、多くの可能なメソッドを生成することができる。オブジェクトのプロパティ値に基づいて、これらのオブジェクトをフィルタリングするフィルタメソッドが提供される。タイプフィルタは、オブジェクトのタイプに基づいて、このオブジェクトをフィルタリングすることができる。タイプメソッドとしての処理は、サーチャオブジェクトとして、サブタイプに対して検索するサーチャオブジェクトから、スーパータイプに対して検索するサーチャに変換する。ソートメソッドは、1つまたは複数のプロパティ値に基づいてオブジェクトをソートする。プロジェクトメソッドは、1つまたは複数のオブジェクトの1つまたは複数の個々のプロパティを出力する。グループメソッドは、1つまたは複数の値に従ってオブジェクトをグループ化することができる。ユニオンメソッドは、2組のオブジェクトの和を生成する。さらに、クエリメソッドは、複雑なクエリを単一ステップ内で適用することができる。クエリメソッドを呼び出すショートカットとしてメソッドの起動を利用可能なように、メソッドが実装される。
カプセル化されたクエリおよびサブクエリを一続きのクエリとして使用して、クエリの各実行段階を他の各段階から分離することができる。その際、クエリの連続した実行段階はそれぞれ、先立つ段階によって生成されたデータにしか影響を及ぼし得ない。ただし、このスキームでは、潜在的に、後続の段階で実行されるコマンドにより、順序付けまたはグループ化の動作など、先立つ段階からの計算値または結果の少なくとも一部が元に戻されるか、破壊されることがある。この問題を軽減するために、あるメソッドによって実施される動作によって順序付けが保たれることが保証されるようにそのメソッドを実装することができる。それに加えて、またはその代わりに、順序付けまたはグループ化を保存することになる順序で起動されるようにメソッドが規定される。さらに、順序付けまたはグループ化のメソッドなど、ある種のタイプのメソッドが、ある種の段階で実行されないようにするか、これらのメソッドによって実施された作業が、後続のメソッドの起動によって元に戻されるか、または破壊される可能性が少ない段階でしか実行されないように制限することができる。
クエリを実行し、検索結果を得るために、検索オブジェクトまたは検索クラスは、いくつかのメソッドをサポートすることができる。例えば、get enumeratorメソッドは、すべてのクエリ結果を通じてエニュメレーションを行うことができる。1組のクエリ結果における第1の結果は、get firstメソッドを用いることによって取得することができる。get listメソッドは、クエリ結果をコピーして、クエリ結果の並びにすることができる。get countメソッドは、クエリ結果に含まれるオブジェクトの数を数えることができる。check for results メソッドを用いて、クエリの実行により何らかの結果が生成されたかどうかを示すことができる。
サーチャオブジェクトが構築されると、構築されたサーチャオブジェクトが実行する、または実行することになるデータのタイプで、このサーチャオブジェクトをパラメータ化することができる。このタイプのインスタンスは、サーチャオブジェクトが実行される場合、このサーチャオブジェクトによって返すことができる。それに加えて、またはその代わりに、レコードタイプを返すことができる。レコードクラスは、構造タイプを表現することができ、この構造タイプについては、対応するタイプが存在しない。このようなタイプに関するクエリは、プロジェクトメソッドまたはグループメソッドによって生成することができる。レコードタイプを返す2つのサーチャオブジェクトは、各サーチャオブジェクトによって返されるレコードオブジェクトが、厳密に同じ数の、同じ名前およびタイプの列を有する場合、およびその場合に限り、同じタイプとすることができる。
本明細書で提示する実施例では、サーチャオブジェクトに渡すクエリ式文字列は、2種類の形態のパラメータを許容する。第1の形態は、位置パラメータである。位置パラメータを用いる場合、クエリ文字列は、クエリ文字列とともにメソッドに渡す値のアレイ内での位置によって、パラメータ値を参照する。位置パラメータは、クエリが1回しか実行されない状況で、あるいは、このパラメータに結びつけられる値が1つの実行と別の実行で変化しない場合に、有用になる。
第2の形態は、名前付きパラメータである。名前付きパラメータを用いる場合、クエリ文字列は、このパラメータの名前を使用することによって、パラメータ値を参照する。名前と値をマッピングする辞書をサーチャオブジェクトに結びつけることができ、それによって、クエリが実行される前に新しいサーチャオブジェクトが生成される。名前付きパラメータは、同じクエリが異なるパラメータ値で複数回実行される状況で有用になる。名前付きパラメータの使用は、追加の結合動作のために、位置パラメータの使用よりもわずかに複雑である。
位置パラメータおよび名前付きパラメータはともに、同じクエリ文字列ないで使用することができ、リテラル値またはサブクエリを提供するためにのみ使用する。パラメータを使用することによってプロパティまたはメソッドの名前を提供するために、これらのパラメータを使用することはできない。サブクエリは、式オブジェクトまたはサーチャオブジェクトを使用することによって、パラメータとして渡すことができる。他の実施形態では、異なる手法または追加の形態のパラメータを用いることができる。
サーチャオブジェクト310などのサーチャオブジェクトは、汎用クラスとして実装する。この特定の実装形態では、ユーザ入力に基づいて動的にクエリを形成するアプリケーションによるサーチャクラスの使用が難しくなることがある。この難点を軽減するために、ファクトリクラスおよびサーチャインターフェースを実装することができる。このようなファクトリクラスおよびサーチャインターフェースにより、汎用のタイプまたはメソッドを使用せずに、サーチャオブジェクトを構築し、操作することができる。
ユーザ入力に基づいてクエリを形成し、実行時に結合されるアプリケーションでは、汎用型を用いずにこれらのタイプを使用することが有用になる。ファクトリタイプのコンストラクタメソッドを利用して、サーチャオブジェクトを構築することができる。パラメータ内で規定可能なタイプは、クラス定義における汎用タイプに対応する。このクラス定義は、生成されたタイプの汎用バージョンに対応するいくつかのメソッドを記述する。これらのメソッドの実装は、汎用タイプのメソッドと同じ意味および制約を有することがある。
先立って開示し説明したように、クラスとして、またはクラスのインスタンスとして、様々なコンポーネントを実装することができる。1つの可能な実装形態では、クラスのインスタンスは不変とすることができる。サーチャオブジェクトを操作するメソッドは、少なくとも部分的に元のクエリに基づく新しいクエリをカプセル化する新しいサーチャオブジェクトを返すことができる。このように実装することにより、開始点クエリを改変し得ないという意味で、開始点クエリを保護することができる。さらに、このような設計上の選択は、先立って処理されたクエリ式のハッシュを維持し、これらのクエリを再利用することによってクエリを最適化するのに役立つ。
図4は、アプリケーション空間410と記憶空間420の間のマッピングのブロック図である。アプリケーション空間410は、ファイルシステムAPIのコンシューマが使用する1組のタイプとする。コンシューマは、スキーマ内で符号化される記述から自動的に生成されるクラスとする。他のタイプのオブジェクトをサポートすることもできる。さらに、オブジェクトまたはクラスの代わりに、またはそれに加えて他のデータ構造を使用することができる。
記憶空間420は、記憶サービスのバックエンドプロバイダが使用する1組のタイプを含む。これらのバックエンドサービスは、とりわけ、記憶装置が使用するために生成される構造化クエリ言語(SQL)タイプまたはユーザ定義タイプ(UDT)とする。(図示しない)スキーマ空間を使用することもできる。このようなスキーマ空間は、タイプデザイナによって定義される抽象タイプの使用をサポートする。さらに、スキーマ空間を用いて、アプリケーション空間410と記憶空間420のマッピングの助けとすることもできるし、それを定義することもできる。
マッピングを利用して、オブジェクト指向の概念および構成体をSQLの概念に関係づけることができる。例えば、エニュメレーションする集合体をマッピングして、タイプ付きの表または関係にすることができる。オブジェクトは、マッピングしてタイプ付きの行またはタプルにすることができる。プロパティまたはメソッドは、マッピングして、簡単な、またはユーザが定義したタイプの列または属性に、あるいは集合体については、ネストしたタイプ付き表にする。他のマッピングも可能である。マッピングの特定の細部は概ね、特定のクエリおよび実装形態によって決まることを理解されたい。
アプリケーション空間410は、アプリケーション空間クエリ言語430を含む。アプリケーションは、アプリケーション空間クエリ言語430を使用して、記憶された情報の検索を構築し、また実施する。アプリケーション空間クエリ言語430は、基本的なフィルタリングコマンドをサポートする単純な言語とすることもできるし、ネスト化その他の複雑な概念をサポートするすべての機能を備えたクエリ言語とすることもできる。記憶される情報は、ファイルシステム内に記憶されるオブジェクト440の形態とすることができ、このファイルシステムは、ファイルシステムAPI 450を介してアクセスする。最終的に、アプリケーション空間クエリ言語430がこのファイルシステムの検索を実施する。
アプリケーション空間クエリ言語430、具体的にはサーチャオブジェクトによるその相互作用および使用法を設計することにより、複数のクエリ文字列構文の同時使用を実施する。サーチャオブジェクトを使用するアプリケーションは、クエリ文字列自体を調べることによって、どの構文が用いられているかを識別することができる。それに加えて、またはその代わりに、アプリケーションは、アセンブリレベルの属性にアクセスして、どの構文が用いられているかを判定する。他の構文一致手法も利用可能である。
本明細書で提示する実施例では、サーチャオブジェクトを使用するアプリケーションによって表現されるクエリは常に、このアプリケーションのスキーマ空間について記述される。サーチャオブジェクトのクエリ文字列内で挙げられるタイプ、プロパティ、およびメソッドは、このアプリケーションによって用いられるタイプ、プロパティ、およびメソッドである。この規約は、本明細書で開示し、また説明するコンポーネントおよびメソッドの改変に伴い変更されることがある。ただし、この規約を用いることにより、アプリケーション空間410で作業するアプリケーションプログラマの見通しが保たれる。このように見通しを保つことにより、このようなアプリケーションプログラマに、このアプリケーションプログラマがすでに精通している環境を提示することによって、アプリケーションプログラマによるクエリの構築または使用がより簡単になる。
サーチャオブジェクトを、オブジェクト指向その他のプログラミング言語と統合して、言語統合クエリをサポートする。言語統合クエリをサポートするために、サーチャオブジェクトは、単一のクエリメソッドを有するクエリ可能なインターフェースを実装する。このクエリメソッドは、構文解析されたクエリ式を取得し、適切なインターフェースオブジェクトを返すことができる。このクエリ式は、コンパイル時にコンパイラによって構文解析し、有効にすることができる。
言語統合クエリをサポートしない、またはサポートすることができないプログラミング言語では、あるいは、言語統合クエリをサポートするプログラミング言語でさえ、文字列内クエリを使用する。文字列内クエリ手法は、アプリケーションの実行中にクエリを動的に生成する場合に良好に機能する。言語統合クエリは、コンパイル時のフィーチャとして一般に使用されるので、実行中にクエリを動的に形成するのは難しいことがある。実行中に、文字列をつなぎ合わせて動的なクエリを形成することができる。
記憶空間420は、構造化クエリ言語460を含む。この構造化クエリ言語は、データベースまたはデータサーバに対してクエリを実施するのに使用するSQLのようなクエリ言語とする。データサーバ470は、結果セット480を生成するための情報について照会するデータを含む。結果セット480は、データサーバ470に対した発行されたSQLクエリ内の1組の操作コマンドから得られるデータを含む。
図5は、記憶媒体検索システム500のシステムブロック図である。記憶媒体検索システム500を使用して、ファイルシステム内の情報を検索することができる。このファイルシステムは、ローカルコンピュータのディスクドライブ上に配置することもできるし、フラッシュメモリなどの何らかの他の媒体その他の適切な記憶媒体上に配置することもできる。それに加えて、またはその代わりに、このファイルシステムは、ネットワークサーバなどのリモートコンピュータ上に配置する。RAIDアレイまたはSANなどの他の記憶構成を、このファイルシステムとともに使用することもできる。
記憶媒体検索システム500は、サーチャオブジェクト510を含む。サーチャオブジェクト510は、他の図に関連して上述したサーチャオブジェクトのいずれかとして実装する。サーチャオブジェクト510は、コンテキスト520に結びつけることができる。コンテキスト520は、サーチャオブジェクト510によって検索される1組の情報を表すことができ、他の図に関連して先立って開示し、また説明したコンテキストの1つとして実装する。
サーチャオブジェクト510は、ファイルシステム530に対して動作する。ファイルシステム530は、オブジェクトと、オブジェクトによる、またはオブジェクトに関する操作とをサポートする電子ファイルの任意の論理構成とする。ファイルシステム530は、ディスク記憶システム540上に常駐する。ディスク記憶システム540は、単一のディスクとすることもできるし、独立ディスク冗長アレイ(RAID)、ストレージエリアネットワーク(SAN)、または光媒体を含めて別の適切な記憶媒体などのディスクアレイとすることもできる。
動作時に、この記憶媒体検索システムは、以下のように動作する。サーチャオブジェクト510は、検索に関するコンテキスト上の制限を決定するために、コンテキスト520にもアクセスする。サーチャオブジェクト510は、ファイルシステム530にアクセスして、コンテキスト520によって規定されたコンテキスト内でファイルまたはオブジェクトの位置を見つける。サーチャオブジェクト510によって一連のメソッドを起動して、サーチャオブジェクト510内にカプセル化されたクエリを実施する。これらのメソッドを実行するために、サーチャ510は、ディスク記憶システム540から情報を読み取る。サーチャオブジェクト510は、ファイルシステム530からのどの情報が実行されたクエリに応答するかを決定し、その検索結果を出力する。
図6は、クエリ構築システム600のシステムブロック図である。クエリ構築システム600は、アプリケーションプログラマその他のユーザに、コンピューティングシステム上の他のコンポーネントと統合するクエリを構成する能力を提供する。具体的には、クエリ構築システム600により、検索用の語句または演算子を定義することによって、既存の断片またはユーザが生成した断片からクエリを構成することが可能になる。
クエリ構築システム600は、クエリビルダ610を含む。クエリビルダ610は、ユーザにクエリビルダ610へのアクセスを提供する(図示しない)ユーザインターフェースを含む。このユーザインターフェースは、グラフィカルユーザインターフェース、テキストベースのインターフェース、ウェブベースのインターフェースその他の適切なユーザインターフェースとすることができる。具体的には、クエリビルダ610のユーザインターフェースにより、ユーザは、とりわけ、一連のメニュー、ナビゲーション支援、テキスト入力ボックスを介して構成されるクエリに含めるためのアイテムを選択することができる。クエリビルダ610のユーザインターフェースを介してクエリを構築するのに利用可能なツールのタイプの細部は概ね、用いられるユーザインターフェースのタイプによって決まることを理解されたい。
クエリビルダ610は、クエリが最終的に、論理的に理解するように構築されることを保証する論理コンポーネントも含むことがある。この論理の一部としてメソッドを使用して、意味上の、または構文上の要件に適合するクエリに書き直すことができる。それに加えて、またはその代わりに、これらの論理コンポーネントは、ユーザが入力した最初のクエリよりも、実行するのに効率のよいクエリに書き直すことができる。いずれの場合も、この論理により、書き直されたクエリが正しいことを保証することもできる。
クエリビルダ610は、クエリ断片データ記憶装置620に記憶されたクエリ断片にアクセスすることができる。クエリ断片データ記憶装置620は、特定の実施形態の細部によっては、データベース、オブジェクトの集合体その他の適切なタイプのデータ記憶装置として実施することができる。クエリ断片データ記憶装置620に含まれる各断片は、より複雑なクエリの一部として使用することができる。さらに、これらのクエリ断片の少なくとも一部は、それら自体で完全に構築され、さらなる改変なしで使用可能なクエリとする。クエリを構築する場合、ユーザは、クエリビルダ610のユーザインターフェースを介してこれらのクエリ断片にアクセスすることができる。
クエリビルダ610は、API 630にアクセスすることもできる。API 630は、アプリケーション空間クエリ言語640のコンポーネントまたは関数へのアクセスを提供する。API 630を介して関数を呼び出すか、あるいは、メンバにアクセスすることによって、プログラマは、形成されるクエリが、アプリケーション空間クエリ言語640など、基礎となるクエリ言語の構文上の、または意味上の要件に適合することを保証することができる。クエリビルダ610を使用することによって、プログラマは、API 630の細部に関わる必要がなくなる。その代わりに、クエリビルダ610は、すべてのクエリがAPIのフィーチャに従って形成されることを保証する。
クエリオブジェクト650は、クエリビルダ610によって生成することができる。このクエリオブジェクト650は、他の図に関連して上述したようにクエリをカプセル化する。それに加えて、またはその代わりに、クエリを構築する際にクエリビルダ610が後で使用するのに利用可能なクエリ断片として、クエリオブジェクト650をクエリ断片データ記憶装置620に追加する。独立型クエリとして、クエリオブジェクト650は、アプリケーションに統合することもできるし、単に、クエリを実施して記憶空間660内に記憶された情報の位置を見つけるために使用することもできる。特定の実施形態によっては、クエリオブジェクト650は、(図示しない)スキーマまたはファイルシステムAPIを使用して、記憶空間660内に記憶された情報にアクセスする。
動作時に、クエリ構築システム600は、以下のように機能する。ユーザは、クエリビルダ610のユーザインターフェースにアクセスして、クエリを構築することができる。適切なインターフェースツールを選択した後で、このクエリビルダは、構築中のクエリ内に含めるために、クエリ断片データ記憶装置620からクエリ断片を取得することになる。クエリビルダ610は、クエリ断片データ記憶装置620から選択されたクエリ断片とともに、ユーザが入力したすべてのクエリ断片を集め、API 630を使用して、アプリケーション空間クエリ言語640に従ってクエリオブジェクト650を組み立てる。次いで、クエリオブジェクト650を使用して、記憶空間660内に記憶された情報に対してクエリを実施する。
図7は、クエリ構成システム700のシステムブロック図である。クエリ構築システム700により、アプリケーションプログラマその他のユーザは、コンピューティングシステム上の他のコンポーネントと統合する、あるいは、独立したクエリコンポーネントとして使用するクエリを構成することができる。具体的には、クエリ構築システム700により、ユーザ定義クエリに一致し、リモートコンピュータから取得する既存のコンポーネントからクエリを構成することができる。
クエリ構成システム700は、クエリビルダ710を含む。クエリビルダ710は、図6のクエリビルダ610に関連して説明したように実装する。代わりに、クエリビルダ710として異なるクエリ形成システムを使用する。具体的には、クエリビルダ710に含めるフィーチャは、図6のクエリビルダ610に関連して説明したすべてのフィーチャよりも少なくすることもできるし、クエリビルダ710に、さらなるフィーチャを追加することもできる。
クエリビルダ710は、クエリを構築する場合に、アプリケーション空間クエリ言語720にアクセスする。アプリケーション空間クエリ言語720は、他の図に関連して上述したように実施することもできるし、別の適切なクエリ言語とすることもできる。クエリビルダ710は、他の手法の中でも、アプリケーション空間クエリ言語720にアクセスする場合に(図示しない)スキーマを使用することもできるし、動作時にこのような言語のルールを組み込むこともできる。
クエリビルダ710は、構築されるクエリの記述子を生成して、このクエリを精確に定義する適切な検索オブジェクト、または、構築されるクエリが定義されるように改変する近似物である適切な検索オブジェクトを取得するのに使用することができる。この記述子は、オブジェクト記述子、ハッシュ、または他の何らかの適切な記述子など、任意の適切な記述子とすることができる。適切な記述子のタイプは概ね、特定の実施形態によって決まる。
クエリビルダ710は、(図示しない)記述子を、ネットワーク730を介してオブジェクトサーバ740に送信する。オブジェクトサーバ740は、この記述子をオブジェクトマッチャ(matcher)750に送信する。オブジェクトマッチャ750は、検索オブジェクトのデータ記憶装置760にアクセスして、この記述子によって表現されるクエリに厳密に、またはほぼ一致する検索オブジェクトを取得することができる。
オブジェクトマッチャ750は、記述子と、検索オブジェクトデータ記憶装置760の検索オブジェクトとを照合するのに様々な方法を使用することができる。いくつかの従来方式の照合手順に加えて、このオブジェクトマッチャは、一致する検索オブジェクトの位置を見つける人工知能を含むコンポーネントを使用する。例えば、記述子と適切な検索オブジェクトの照合は、ニューラルネットワーク、エキスパートシステム、ルールベースの処理コンポーネント、またはサポートベクトルマシン(SVM)によって実施する。
分類子は、入力属性ベクトルX=(x1,x2,x3,x4,...xn)を、この入力がクラスに属するコンフィデンス(confidence)にマッピングする関数である。すなわち、f(X)=confidence(class)である。このような分類では、(例えば、解析的なユーティリティおよびコストを計算に入れる)確率および/または統計に基づく解析を利用して、自動的に実施されることをユーザが望む動作を予測または推論する。オブジェクトマッチャ750の場合、パターンとして記述子を処理する。これらのパターンを分類して、このようなパターンが、検索オブジェクトの対応するパターンと一致するかどうかを判定することができる。この開示を読んだ後なら、他のパターンマッチングタスクも利用することができる当業者には明らかであろう。
SVMは、利用する分類子の例である。SVMは、可能な入力空間内で超曲面を見つけることによって動作する。この超曲面は、トリガ基準を、非トリガイベントから分けようと試みる。直感的にわかるように、こうすると、訓練データと同じではないがそれに近い検査データについて、分類が正しく行われる。他の有向または非有向のモデル分類手法には、異なる独立パターンを使用すると仮定すると、例えば、ナイーブベイズ(naive Bayes)、ベイジアンネットワーク、デシジョンツリー、および確率分類のモデルが含まれる。本明細書で用いる分類には、優先順位モデルを作り上げるのに利用する統計回帰も含まれる。
本明細書から容易に理解されるように、本明細書で開示し、また説明するコンポーネントは、明示的に(例えば、汎用訓練データによって)訓練されるだけでなく、暗示的にも(例えば、ユーザの振舞いを観察し、外部の情報を受け取ることによって)訓練される分類子を使用することができる。例えば、SVMは、分類子コンストラクタおよびフィーチャ選択モジュール内での学習または訓練の段階によって構成する。そのため、1つ(または複数)の分類子を用いて、いくつかの関数を自動的に実施することができる。この関数の例には、記述子が検索オブジェクトと一致するかどうかを判定することが含まれるが、これに限定されるものではない。
動作時に、このクエリ構成システムは、以下のように機能する。クエリビルダ710は、アプリケーション空間クエリ言語に従ってクエリを生成する。このようなクエリが構築された後で、クエリビルダ710は、このクエリの記述子を生成し、この記述子を、ネットワーク730を介してオブジェクトサーバ740に送信することができる。
この記述子を受信した後で、オブジェクトサーバ740は、オブジェクトマッチャ750にこの記述子を渡す。オブジェクトマッチャ750は、この記述子を用いて、検索オブジェクトデータ記憶装置760から、構築されたクエリを実施するのに直接使用することができるか、あるいは改変可能な検索オブジェクトを識別する。オブジェクトサーバ740は、この一致したオブジェクトを、ネットワーク730を介してクエリビルダ710に送信する。次いで、クエリビルダ710は、このオブジェクトに、正しいクエリを実施するのに必要な任意の改変を加え、このオブジェクトを使用可能にする。
図8は、本明細書で開示し、また説明したコンポーネントとともに使用するプロセス800の流れ図である。プロセス800を用いて、他のプロセスまたはクエリで再利用するモジュール形式クエリを形成することができる。その代わりに、この形成されるクエリを用いてファイルシステムにアクセスし、それによって、このクエリに応答する情報の位置を見つけることができる。
プロセス800の実行は、開始ブロック810で開始され、処理ブロック820に続く。処理ブロック820で、クエリ(またはその一部)が定義される。処理ブロック830で、他の図に関連して説明したアプリケーション空間クエリ言語など、所定のクエリ言語で正式なクエリ(またはその一部)が構築される。処理が継続され、処理ブロック840で、この構築されたクエリは、記憶サーチャオブジェクトに渡される。処理ブロック850で、この構築されたクエリからクエリツリーが形成される。処理ブロック860で、クエリが実行される。処理ブロック870で、実行されたクエリの結果が得られる。終了ブロック880で、処理が完結する。
図9は、本明細書で開示し、また説明したコンポーネントとともに使用する方法900を示す流れ図である。方法900を用いて、オブジェクト指向設計パラダイムで構築されたクエリを実行することができる。このようなクエリは、他のコンポーネントによって再利用する。
方法900の処理は、開始ブロック910で開始される。処理は、検索オブジェクトが検索で使用するアイテムをエニュメレーションする処理ブロック920に続く。処理ブロック930で、検索中のアイテムを制限するフィルタを適用し、それによって、これらのアイテムは、このフィルタの1つまたは複数の基準を満足するように設定される。処理ブロック940で、残りのデータを操作するプロジェクションが実施される。処理は、データを所望のとおりにグループ化するソートまたはグループ化の操作が実施される処理ブロック950に続く。処理ブロック960で、クエリの結果セットが生成される。終了ブロック970で、処理が完結する。
図10は、本明細書で開示し、また説明したコンポーネントとともに使用する全体的な処理方法1000の流れ図である。方法1000の実行は、開始ブロック1010で開始され、処理ブロック1020に続く。処理ブロック1020で、ユーザは、クエリビルダインターフェースにアクセスしてクエリを構築する。処理ブロック1030で、構築中のクエリ用に検索する記憶区域が選択される。処理は、検索を行うコンテキストが選択される処理ブロック1040に続く。
処理ブロック1050で、所定のクエリ言語、とりわけ、アプリケーション空間クエリ言語などに従って、構築中のクエリのコンポーネントが組み立てられる。処理は、この組み立てられたクエリコンポーネントから、検索オブジェクトが構築される処理ブロック1060に続く。終了ブロック1070で、処理が完結する。
図11は、本明細書で開示し、また説明したコンポーネントとともに使用する全体的な処理方法1100の流れ図である。方法1100の実行は、開始ブロック1110で開始され、ユーザがクエリビルダインターフェースにアクセスする処理ブロック1120に続く。処理ブロック1130で、ユーザまたはクエリビルダあるいはその両方によって検索パラメータが選択される。
処理は、これらの検索パラメータの適切な記述子が生成される処理ブロック1140に続く。処理ブロック1150で、この記述子は、検索オブジェクトサーバに送信される。処理ブロック1160で、この記述子は、1つまたは複数の利用可能な検索オブジェクトに照合される。処理ブロック1170で、1つまたは複数の一致した検索オブジェクトが、クエリビルダに送信される。終了ブロック1180で、処理が完結する。
本発明の様々な態様を実施する追加の状況を提供するために、図12〜図13および以下の説明は、本発明の様々な態様を実施する適切なコンピューティング環境の簡単で全体的な説明を提供することを意図している。以上、ローカルコンピュータおよび/またはリモートコンピュータ上で実行されるコンピュータプログラムのコンピュータ実行可能命令という一般の状況において本発明を説明してきたが、他のプログラムモジュールと組み合わせて本発明を実施することもできることが当業者には理解されよう。一般に、プログラムモジュールは、特定のタスクの実施および/また特定の抽象データ型の実装を行うルーチン、プログラム、コンポーネント、データ構造などを含む。
さらに、シングルプロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、大型コンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサベースおよび/またはプログラム可能な民生用電子機器などを含めて、他のコンピュータシステム構成で本発明の方法を実施することが可能なことが当業者には理解されよう。これらはそれぞれ、1つまたは複数の関連する装置と動作可能に通信する。例示した本発明の態様は、通信ネットワークを介して接続された遠隔処理装置によってある種のタスクが実施される分散コンピューティング環境で実施することもできる。ただし、全部でないにしても、本発明の態様の一部は、独立型コンピュータ上で実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよび/またはリモートのメモリ記憶装置に配置することができる。
図12は、本発明とやり取りするコンピューティング環境の例1200の概略ブロック図である。システム1200は、1つまたは複数のクライアント1210を含む。1つ(または複数)のクライアント1210は、ハードウエアおよび/またはソフトウエア(例えば、スレッド、プロセス、コンピューティング装置)とすることができる。システム1200は、1つまたは複数のサーバ1220も含む。1つ(または複数)のサーバ1220は、ハードウエアおよび/またはソフトウエア(例えば、スレッド、プロセス、コンピューティング装置)とすることができる。サーバ1220は、例えば、本発明を利用することによって変換を実施するスレッドまたはプロセスを含むことができる。
クライアント1210とサーバ1220の間の1つの可能な通信手段は、2つ以上のコンピュータプロセス間で送信されるように適合されたデータパケットの形態とする。システム1200は、1つ(または複数)のクライアント1210と1つ(または複数)のサーバ1220の間で通信を実施するように使用する通信フレームワーク1240を含む。1つ(または複数)のクライアント1210は、1つ(または複数)のクライアント1210に情報をローカルに記憶するのに使用する1つまたは複数のクライアントデータ記憶装置1250に動作可能に接続される。同様に、1つ(または複数)のサーバ1220は、サーバ1220に情報をローカルに記憶するのに使用する1つまたは複数のサーバデータ記憶装置1230に動作可能に接続される。
図13を参照すると、本発明の様々な態様を実施する環境の例1300は、コンピュータ1312を含む。コンピュータ1312は、処理ユニット1314、システムメモリ1316、およびシステムバス1318を含む。システムバス1318は、システムコンポーネントを処理ユニット1314に接続する。システムコンポーネントにはシステムメモリ1316が含まれるが、これに限定されるものではない。処理ユニット1314は、利用可能な様々なプロセッサのいずれかとすることができる。処理ユニット1314として、デュアルマイクロプロセッサその他のマルチプロセッサアーキテキチャを使用することもできる。
システムバス1318は、メモリバスもしくはメモリコントローラ、ペリフェラルバスもしくは外部バス、および/またはローカルバスを含めて、様々な利用可能なバスアーキテクチャを利用するいくつかのタイプの1つ(または複数)のバス構造のいずれかとする。これらのアーキテクチャには、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MCA)、拡張ISA(EISA)、インテリジェントドライブエレクトロニクス(IDE)、VESAローカルバス(VLB)、ペリフェラルコンポーネントインターコネクト(PCI)、カードバス、ユニバーサルシリアルバス(USB)、アドバンストグラフィックポート(AGP)、パーソナルコンピュータメモリカード国際協会バス(PCMCIA)、ファイアワイヤ(IEEE 1394)、および小型コンピュータシステムインターフェース(SCSI)が含まれるが、これらに限定されるものではない。
システムメモリ1316は、揮発性メモリ1320および不揮発性メモリ1322を含む。例えば起動時に、コンピュータ1312内の要素間で情報を転送する基本ルーチンを含む基本入出力システム(BIOS)は、不揮発性メモリ1322内に格納される。例として、不揮発性メモリ1322は、読出し専用メモリ(ROM)、プログラム可能なROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なROM(EEPROM)、またはフラッシュメモリを含むが、これらに限定されるものではない。揮発性メモリ1320は、外部キャッシュメモリとして働くランダムアクセスメモリ(RAM)を含む。例として、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンク(Synclink)DRAM(SLDRAM)、およびダイレクトランバス(direct Rambus)RAM(DRRAM)など、多くの形態で利用可能であるが、これらに限定されるものではない。
コンピュータ1312は、リムーバブル/非リムーバブルな、揮発性/不揮発性のコンピュータ記憶媒体も含む。例えば、図13に、ディスク記憶装置1324を示す。ディスク記憶装置1324には、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、またはメモリスティックが含まれるが、これらに限定されるものではない。さらに、ディスク記憶装置1324は、別に、または他の記憶媒体と組み合わせて記憶媒体を含む。これらの記憶媒体の例には、コンパクトディスクROM装置(CD−ROM)、追記型CDドライブ(CD−R Drive)、書換え型CDドライブ(CD−RW Drive)、またはデジタル多用途ディスクROMドライブ(DVD−ROM)などの光ディスクドライブが含まれるが、これらに限定されるものではない。典型的には、ディスク記憶装置1324のシステムバス1318への接続を実施するのに、インターフェース1326などのリムーバブルまたは非リムーバブルなインターフェースを使用する。
図13は、ユーザと、適切な動作環境1300内で説明される基本コンピュータリソースとの間で仲介者として働くソフトウエアを説明する図であることを理解されたい。このようなソフトウエアには、オペレーティングシステム1328が含まれる。ディスク記憶装置1324上に格納するオペレーティングシステム1328は、コンピュータシステム1312のリソースを制御し、割り当てる働きをする。システムアプリケーション1330は、システムメモリ1316またはディスク記憶装置1324上に記憶されたプログラムモジュール1332およびプログラムデータ1334を介して、オペレーティングシステム1328によるリソースの管理を利用する。様々なオペレーティングシステムまたはオペレーティングシステムの組合せによって本発明を実施可能であることを理解されたい。
ユーザは、1つ(または複数)の入力装置1336を介してコンピュータ1312にコマンドまたは情報を入力する。入力装置1336の例には、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどのポインティングデバイスが含まれるが、これらに限定されるものではない。上記その他の入力装置は、1つ(または複数)のインターフェースポート1338を介してシステムバス1318によって処理ユニット1314に接続される。1つ(または複数)のインターフェースポート1338の例には、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス(USB)が含まれる。1つ(または複数)の出力装置1340は、1つ(または複数)の入力装置1336と同じタイプのポートの一部を使用する。そのため、例えば、USBポートを使用して、コンピュータ1312に入力を提供し、コンピュータ1312から出力装置1340に情報を出力することができる。他の出力装置1340の中でも、特別なアダプタを必要とするモニタ、スピーカ、およびプリンタなど、いくつかの出力装置1340があることを示すために、出力アダプタ1342が設けられている。出力アダプタ1342の例には、出力装置1340とシステムバス1318の接続手段を提供するビデオおよびサウンド用のカードが含まれるが、これらに限定されるものではない。1つ(または複数)のリモートコンピュータ1344など、他の装置および/または装置のシステムにより、入力および出力の両方の機能が提供されることに留意されたい。
コンピュータ1312は、1つ(または複数)のリモートコンピュータ1344など、1つまたは複数のリモートコンピュータへの論理接続部を使用するネットワーク環境で動作する。1つ(または複数)のリモートコンピュータ1344は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの家電機器、ピアデバイス(peer device)その他一般のネットワークノードなどとすることができ、一般に、コンピュータ1312に関連して説明した要素の多くまたはすべてを含む。簡単にするために、1つ(または複数)のリモートコンピュータ1344とともに、メモリ記憶装置1346のみを示す。1つ(または複数)のリモートコンピュータ1344は、ネットワークインターフェース1348を介してコンピュータ1312に論理的に接続され、次いで、通信接続部1350を介して物理的に接続される。ネットワークインターフェース1348は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)などの有線および/または無線式の通信ネットワークを含む。LAN技術には、ファイバ分散データインターフェース(FDDI)、より対線FDDI(CDDI)、イーサネット(登録商標)、トークンリングなどが含まれる。WAN技術には、ポイントツーポイントリンク、総合デジタル通信網(ISDN)のような回路交換網およびこれらの変形、パケット交換網、およびデジタル加入者線(DSL)が含まれるが、これらに限定されるものではない。
1つ(または複数)の通信接続部1350は、ネットワークインターフェース1348をバス1318に接続するのに使用するハードウエア/ソフトウエアを指す。見やすいように、通信接続部1350は、コンピュータ1312の内部に示すが、コンピュータ1312の外部とすることもできる。ネットワークインターフェース1348への接続に必要なハードウエア/ソフトウエアには、単なる例として、例えば、標準電話等級のモデム、ケーブルモデムおよびDSLモデムなどのモデム、ISDNアダプタ、およびイーサネット(登録商標)カードなど、内部用および外部用の技術が含まれる。
以上説明してきたことには、ある種のコンポーネントおよび方法の例が含まれる。当然のことながら、コンポーネントまたは方法の考え得るあらゆる組合せを説明することは不可能であり、多くの別の組合せおよび並替えが可能であることが当業者には理解されよう。したがって、すべてのこのような改変形態、修正形態、および変形形態が、添付の特許請求の範囲の趣旨および範囲に含まれることを意図している。
具体的には、上述のコンポーネント、装置、回路、システムなどによって実施される様々な機能に関して、(「手段」と言うことを含めて)このようなコンポーネントを説明するのに用いる用語は、指示がない限り、たとえ、本明細書で例示した実施例において上述のコンポーネント(例えば、機能的な均等物)の規定した機能を実施する開示した構造と構造的に等価でなくても、その機能を実施する任意のコンポーネントに対応することを意図している。この点で、ここで開示し説明したコンポーネントおよび方法は、システムならびにコンピュータ可読媒体を含むことがあり、このコンピュータ可読媒体は、開示し説明した様々な方法の動作および/またはイベントを実施するためのコンピュータ実行可能命令を有することも理解されたい。
さらに、いくつかの実施形態の1つのみに関して、特定の特徴を開示したが、このような特徴は、所与のまたは特定の応用例について、他の実施形態の1つまたは複数の他の特徴と、所望のとおりに有利に組み合わせることができる。さらに、「含む」および「含んでいる」という用語ならびにこれらの変形を詳細な説明または特許請求の範囲において使用する限りにおいては、このような用語は、「備える」という用語と同様に包括的であることを意図している。
開示した発明の一態様によるクエリ構築システムのシステムブロック図である。 クエリを表現するツリー構造のシステムブロック図である。 結合検索オブジェクトのシステムブロック図である。 アプリケーション空間と記憶空間の間のマッピングのブロック図である。 記憶媒体検索システムのシステムブロック図である。 クエリ構築システムのシステムブロック図である。 あらかじめ構築されたクエリオブジェクトに遠隔的にアクセスすることを含むクエリ構築システムのシステムブロック図である。 本明細書で開示し、また説明するコンポーネントとともに使用する全体的な処理の流れの流れ図である。 本明細書で開示し、また説明するコンポーネントとともに使用する全体的な処理の流れの流れ図である。 本明細書で開示し、また説明するコンポーネントとともに使用する全体的な処理の流れの流れ図である。 本明細書で開示し、また説明するコンポーネントとともに使用する全体的な処理の流れの流れ図である。 ネットワーク環境の例を示す図である。 動作環境の例を示す図である。
符号の説明
1314 処理ユニット
1316 システムメモリ
1318 バス
1320 揮発性
1322 不揮発性
1324 ディスク記憶装置
1326 インターフェース
1328 オペレーティングシステム
1330 アプリケーション
1332 モジュール
1334 データ
1336 1つ(または複数)の入力装置
1338 1つ(または複数)のインターフェースポート
1340 1つ(または複数)の出力装置
1342 1つ(または複数)の出力アダプタ
1344 1つ(または複数)のリモートコンピュータ
1346 メモリ記憶装置
1348 ネットワークインターフェース
1350 1つ(または複数)の通信接続部

Claims (20)

  1. 情報検索クエリを構築するシステムであって、
    所定の構文を有するクエリ言語と、
    前記クエリ言語で構築されたクエリをカプセル化する第1検索オブジェクトを生成するコンストラクタと
    を含むことを特徴とするシステム。
  2. 前記カプセル化されたクエリが、ツリー構造として表されることを特徴とする請求項1に記載のシステム。
  3. 前記カプセル化されたクエリの前記ツリー構造は、前記カプセル化されたクエリの前記ツリー構造と異なる第2ツリー構造を参照することを特徴とする請求項2に記載のシステム。
  4. 前記第1検索オブジェクトをカプセル化する第2検索オブジェクトをさらに含むことを特徴とする請求項3に記載のシステム。
  5. 前記第2検索オブジェクトによって検索可能なファイルシステムへのインターフェースをさらに含むことを特徴とする請求項4に記載のシステム。
  6. 前記ファイルシステムは、ディスクドライブ上に常駐することを特徴とする請求項5に記載のシステム。
  7. 前記ファイルシステムは、独立ディスク冗長アレイ上に常駐することを特徴とする請求項5に記載のシステム。
  8. 機械により解釈可能なデータ構造を含み、該データ構造は請求項4に記載のコンポーネントを含むことを特徴とするコンピュータ可読媒体。
  9. 検索クエリを生成する方法であって、
    所定の構文を有するクエリ言語を使用して、クエリの少なくとも一部を、最大でクエリ全体を含む部分を定義するステップと、
    前記クエリの前記定義した部分をカプセル化する第1検索オブジェクトを構築するステップと
    を含むことを特徴とする方法。
  10. 第1ツリー構造として前記定義したクエリを表現するステップをさらに含むことを特徴とする請求項9に記載の方法。
  11. 前記第1ツリー構造を使用して、前記第1ツリー構造と異なる第2ツリー構造を参照するステップをさらに含むことを特徴とする請求項10に記載の方法。
  12. 前記第1検索オブジェクトをカプセル化する第2検索オブジェクトを生成するステップをさらに含むことを特徴とする請求項11に記載の方法。
  13. 前記第2検索オブジェクトを使用して、ファイルシステム内の情報の位置を見つけるステップをさらに含むことを特徴とする請求項12に記載の方法。
  14. 前記第2検索オブジェクトを使用することは、ファイルシステムインターフェースにアクセスするステップを含むことを特徴とする請求項13に記載の方法。
  15. 検索クエリを生成するシステムであって、
    所定の構文を有するクエリ言語を使用して、クエリの少なくとも一部を、最大でクエリ全体を含む部分を定義する手段と、
    前記クエリの前記定義した部分をカプセル化する第1検索オブジェクトを構築する手段と
    を含むことを特徴とするシステム。
  16. 第1ツリー構造として前記定義したクエリを表現する手段をさらに備えることを特徴とする請求項15に記載のシステム。
  17. 前記第1ツリー構造を使用して、前記第1ツリー構造と異なる第2ツリー構造を参照する手段をさらに備えることを特徴とする請求項16に記載のシステム。
  18. 前記第1検索オブジェクトをカプセル化する第2検索オブジェクトを生成する手段をさらに備えることを特徴とする請求項17に記載のシステム。
  19. 前記第2検索オブジェクトを使用して、ファイルシステム内の情報の位置を見つける手段をさらに備えることを特徴とする請求項18に記載のシステム。
  20. 前記第2検索オブジェクトを使用する前記手段は、ファイルシステムインターフェースにアクセスする手段を備えることを特徴とする請求項19に記載のシステム。
JP2006031112A 2005-02-28 2006-02-08 構成可能なクエリを形成するapiおよびクエリ言語 Pending JP2006244478A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65734105P 2005-02-28 2005-02-28
US11/188,421 US20060195425A1 (en) 2005-02-28 2005-07-25 Composable query building API and query language

Publications (1)

Publication Number Publication Date
JP2006244478A true JP2006244478A (ja) 2006-09-14

Family

ID=36575960

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006031112A Pending JP2006244478A (ja) 2005-02-28 2006-02-08 構成可能なクエリを形成するapiおよびクエリ言語

Country Status (9)

Country Link
US (1) US20060195425A1 (ja)
EP (1) EP1696349A1 (ja)
JP (1) JP2006244478A (ja)
KR (1) KR20060095456A (ja)
AU (1) AU2006200206A1 (ja)
BR (1) BRPI0600183A (ja)
CA (1) CA2534334A1 (ja)
MX (1) MXPA06001210A (ja)
RU (1) RU2006102527A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171316A (ja) * 2007-01-15 2008-07-24 Nec Corp マッピングシステム、マッピング方法及びプログラム

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7668877B1 (en) * 2005-09-23 2010-02-23 Emc Corporation System and methods for defining a canonical query expression
US20070078840A1 (en) * 2005-10-05 2007-04-05 Microsoft Corporation Custom function library for inverse query evaluation of messages
US20080065590A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation Lightweight query processing over in-memory data structures
US9009133B2 (en) * 2006-10-02 2015-04-14 Leidos, Inc. Methods and systems for formulating and executing concept-structured queries of unorganized data
US7548912B2 (en) * 2006-11-13 2009-06-16 Microsoft Corporation Simplified search interface for querying a relational database
US7958104B2 (en) * 2007-03-08 2011-06-07 O'donnell Shawn C Context based data searching
US8255883B2 (en) * 2007-04-20 2012-08-28 Microsoft Corporation Translating late bound LINQ expressions into database queries
US8037039B2 (en) * 2007-04-20 2011-10-11 Microsoft Corporation Runtime class database operation
US7765204B2 (en) * 2007-09-27 2010-07-27 Microsoft Corporation Method of finding candidate sub-queries from longer queries
US8024320B1 (en) * 2007-10-02 2011-09-20 Emc Corporation Query language
US7885943B1 (en) 2007-10-02 2011-02-08 Emc Corporation IT compliance rules
US7984031B2 (en) * 2008-08-01 2011-07-19 Microsoft Corporation Query builder for testing query languages
US8285708B2 (en) * 2008-10-21 2012-10-09 Microsoft Corporation Query submission pipeline using LINQ
US8484233B2 (en) * 2008-10-21 2013-07-09 Microsoft Corporation Facet, logic and textual-based query composer
KR101621490B1 (ko) * 2014-08-07 2016-05-17 (주)그루터 쿼리 실행 장치 및 방법, 그리고 그를 이용한 데이터 처리 시스템
US10372760B2 (en) 2014-09-26 2019-08-06 Oracle International Corporation Building queries directed to objects hosted on clouds
KR102179273B1 (ko) * 2018-10-02 2020-11-18 주식회사 플랜잇파트너스 Gui를 이용한 의무기록 데이터의 쿼리 생성 시스템 및 방법
CN113111239B (zh) * 2021-04-08 2024-03-29 北京联创新天科技有限公司 一种通用数据库操作方法、装置及其存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353329A (ja) * 1998-04-10 1999-12-24 Hitachi Ltd 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体
US20030229627A1 (en) * 2002-06-07 2003-12-11 International Business Machines Corporation Object-oriented query execution data structure

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047284A (en) * 1997-05-14 2000-04-04 Portal Software, Inc. Method and apparatus for object oriented storage and retrieval of data from a relational database
US6341277B1 (en) * 1998-11-17 2002-01-22 International Business Machines Corporation System and method for performance complex heterogeneous database queries using a single SQL expression
US6263328B1 (en) * 1999-04-09 2001-07-17 International Business Machines Corporation Object oriented query model and process for complex heterogeneous database queries
US6847974B2 (en) * 2001-03-26 2005-01-25 Us Search.Com Inc Method and apparatus for intelligent data assimilation
US7082433B2 (en) * 2002-07-20 2006-07-25 Microsoft Corporation Translation of object queries involving inheritence
US7162469B2 (en) * 2002-07-20 2007-01-09 Microsoft Corporation Querying an object for properties
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US7409644B2 (en) * 2003-05-16 2008-08-05 Microsoft Corporation File system shell

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11353329A (ja) * 1998-04-10 1999-12-24 Hitachi Ltd 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体
US20030229627A1 (en) * 2002-06-07 2003-12-11 International Business Machines Corporation Object-oriented query execution data structure

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171316A (ja) * 2007-01-15 2008-07-24 Nec Corp マッピングシステム、マッピング方法及びプログラム
JP4632056B2 (ja) * 2007-01-15 2011-02-16 日本電気株式会社 マッピングシステム、マッピング方法及びプログラム

Also Published As

Publication number Publication date
BRPI0600183A (pt) 2006-10-24
US20060195425A1 (en) 2006-08-31
CA2534334A1 (en) 2006-08-28
KR20060095456A (ko) 2006-08-31
AU2006200206A1 (en) 2006-09-14
RU2006102527A (ru) 2007-08-10
EP1696349A1 (en) 2006-08-30
MXPA06001210A (es) 2006-09-19

Similar Documents

Publication Publication Date Title
JP2006244478A (ja) 構成可能なクエリを形成するapiおよびクエリ言語
CA2628338C (en) Application search tool for rapid prototyping and development of new applications
AU2006200383B2 (en) Mapping of a file system model to a database object
US6370681B1 (en) Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
JP5710851B2 (ja) 影響分析のためのシステムおよび方法
JP5123291B2 (ja) プログラミング言語における式ツリーの深い埋め込みのためのジェネリックインターフェイス
US20070027905A1 (en) Intelligent SQL generation for persistent object retrieval
US7912844B2 (en) System for navigating beans using filters and container managed relationships
WO1997035254A9 (en) Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
CA2515007A1 (en) System and method for semantic software analysis
Euzenat et al. Ontology alignments: an ontology management perspective
Ackermann et al. Jet: An embedded DSL for high performance big data processing
Alonso et al. Towards a polyglot data access layer for a low-code application development platform
Tilley The canonical activities of reverse engineering
Vysniauskas et al. Mapping of OWL ontology concepts to RDB schemas
US6772140B1 (en) Hierarchical syntax for satellite command and control directives
Rich et al. A logic-based approach to system modelling
Alia et al. A middleware framework for the persistence and querying of java objects
Nikitchyn A framework for domain-specific modeling on graph databases
Cleve et al. D6. 1 Cross-Database Data Migration Techniques Analysis
CN117785943A (zh) 一种基于Spring Boot和ElasticSearch的数据查询方法及系统
Schumacher A dependency-aware, context-independent code search infrastructure
Sagar Feature-Oriented Decomposition of SQL: 2003
Kopecky et al. Relaxed objects-Object model for context-aware applications
Hamon et al. Object models and methodology for object-oriented database design

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111118