JP2006521639A - インタロック状態のツリーデータストアにデータを記憶し、このデータにアクセスするためのシステムおよび方法 - Google Patents

インタロック状態のツリーデータストアにデータを記憶し、このデータにアクセスするためのシステムおよび方法 Download PDF

Info

Publication number
JP2006521639A
JP2006521639A JP2006508890A JP2006508890A JP2006521639A JP 2006521639 A JP2006521639 A JP 2006521639A JP 2006508890 A JP2006508890 A JP 2006508890A JP 2006508890 A JP2006508890 A JP 2006508890A JP 2006521639 A JP2006521639 A JP 2006521639A
Authority
JP
Japan
Prior art keywords
node
nodes
root node
root
context
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
JP2006508890A
Other languages
English (en)
Inventor
マザガッティ,ジェーン・キャンベル
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.)
Unisys Corp
Original Assignee
Unisys 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
Priority claimed from US10/385,421 external-priority patent/US6961733B2/en
Application filed by Unisys Corp filed Critical Unisys Corp
Publication of JP2006521639A publication Critical patent/JP2006521639A/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

相互接続されたツリーの森を含むツリーベースのデータストアが生成および/またはアクセスされる。ツリーベースのデータストアは第1のツリーを含み、第1のツリーは第1のルートノードに従属し、複数のブランチを含み得る。第1のツリーのブランチの各々は葉ノードで終端する(図3c 350)。各々の葉ノードはエンドプロダクトまたはサブコンポーネントノードを表わし得る。同じツリーベースのデータストアの第2のルートは、エンドプロダクトを表わす各々の葉ノードにリンクされる(図3c 356)。最後に、ツリーベースのデータストアは複数のツリーを含み、これらのツリーの各々のルートノードは基本ノードとして説明され得る。これらのツリーの各々のルートノードは、第1のツリーの1つ以上のブランチにおける1つ以上のノードにリンクされ得る(図9a)。ツリーベースのデータストアのノードは、ツリーベースのデータストアにおいて他のノードを指すポインタのみを含み、付加的なフィールドを含み得るが、このような1つのフィールドはカウントフィールドであり得る。加えて、1つ以上の規定された焦点内における所望の文脈によって識別される特定のノードに関連する変数の同時発生の確率を得る手段が説明される。さらに、このような変数に関するクエリへの論理演算子の適用が示される。

Description

関連出願
この出願は、2003年3月10日に出願された米国特許出願第10/385,421号の優先権を主張しており、その一部継続出願である。
発明の分野
この発明はコンピューティングの分野に関し、特に、データストアへのデータの記憶および当該データへのアクセスの分野に関する。
発明の背景
ソフトウェアを開発する際に開発者が行なう1つの基本的な選択は、データの組織化および参照を容易にする適切なデータ構造の選択である。リンクされたリスト、スタック、ツリー、アレイなどを含むさまざまな種類のデータ構造が利用可能である。各データ構造は何らかの利点および制限を伴う。
しばしば用いられる1つのデータ構造にはツリーがある。ツリーの1つの一般的な形は、ノードと呼ばれる要素の有限集合で構成されており、これはルートから1つ以上の内部ノードまで一緒にリンクされており、その各々が1つ以上のノードにリンクされ、最終的にいくつかの葉ノードで終わる。典型的には、ルートにより近いノードは、ルートからさらに離れたノードの親ノードである。ルートからさらに離れたノードは親ノードの子ノードと呼ばれる。データは典型的にはノードに記憶され、ルートからノード、さらに葉へのリンク、親から子へのリンク等を用いて参照され得る。したがって、階層またはシーケンシャルな関係はツリー構造のノードに記憶されたデータに起因し得る。階層関係はまた、文脈関係としても理解され得るが、各ノードはその親ノードの文脈内でアクセス可能である。
ツリーデータ構造の1つの限界は、典型的には、ツリーが1つの階層しか表わせないことである。たとえば、販売活動についてのルートノードはルートノードに従属するいくつかのノードを有し得るが、各ノードは特定の販売員を表わす。各々の販売員ノードは子ノードを有し得るが、販売員の子ノードは各々、たとえば特定の州での販売を表わしている。したがって、このツリーは、販売員の文脈内における州の情報について容易にアクセスされ得る。すなわち、このツリーを用いることにより、「販売員ボブはどの州で販売するか?」といった質問に効率的に答え得る。販売員による州のデータへのアクセスではなく、州の文脈内における販売員データが必要とされる(すなわち、「どの販売員がテキサスで販売しているか?」という質問への回答が望まれる)場合、別のツリーが作成されなければならず、そのノードはルートの販売員の活動に従属する州を表わしているが、販売員を表わす子ノードがこれに従属し得る。別のツリーを作成する代替例では、所望の情報を抽出するためにツリー全体をトラバースすることとなるだろう。
1つの構造がデータ内における起り得るすべての文脈関係を記録し、これにより、標準的なツリーデータ構造では不可能な効率を達成し得るのであれば有用であるだろう。
発明の概要
相互接続されたツリーの森のうちの1つ以上のレベルを含むツリーベースのデータストアが生成および/またはアクセスされる。ツリーベースのデータストアの各レベルは第1のツリーを含み、当該第1のツリーは第1のルートノードに従属し、複数のブランチを含み得る。第1のルートは、レベル開始インジケータなどを含むがこれに限定されない概念を表わし得る。第1のツリーのブランチの各々は葉ノードで終わる。各々の葉ノードは、以下により十分に記載されるように、エンドプロダクトを表わし得る。ツリーベースのデータストアのうち同じレベルの第2のルートは、エンドプロダクトを表わす第1のツリーの各葉ノードにリンクされる。したがって、第2のルートは本質的に、順序が逆になった第1のツリーへのルートまたは第1のツリーのサブセットであるが、第1のツリーは複製されない。第2のルートは、レベル終了インジケータなどを含むがこれに限定されない概念を表わし得る。最後に、ツリーベースのデータストアは複数のツリーを含み、これらのツリーの各々のルートノードは、データセット要素またはデータセット要素の表現などのデータを含み得る。この種類のルートノードはこの明細書中においては基本ルートノードと称される。これらのツリーの各々の基本ルートノードは、複製されない第1のツリーのうちの1つ以上のブランチにおける1つ以上のノードにリンクされ得る。ツリーベースのデータストアの非ルートノードは、ツリーベースのデータストアにおける他のノードを指すポインタしか含まない。各レベルのツリーベースのデータストアを含むツリーの森におけるツリーのルートはまたポインタで構成されるが、ルートノードはさらに、情報を表わすデータを含み(すなわち、データセット要素などのデータまたはレベル開始もしくはレベル終了インジケータなどの概念であるかまたはこれを表わすデータを含み)得る。ツリーベースのデータストアの他のノードはすべて、他のノードを指すだけであり、データを含まない。この発明の一実施例においては、データは、文字、画素表現、開始インジケータ、終了インジケータ、フィールドの開始インジケータなどの状態に関連付けられる整数であるが、但し、この発明はそのようには限定されない。複数のレベルの上述のツリーベースのデータストアが生成およびアクセスされ得、より低いレベルのエンドプロダクトが次のレベルの基本ルートノードになる。
インタロック状態のツリーデータストアが生成およびアクセスされる。データストアは、この明細書中において主ルートと称される第1のルートに従属する1つのasCaseツリーを形成するasCaseブランチと、複数のルートに従属する複数のasResultツリーを形成するasResultブランチとの複数ルートのツリーを含む。asResultツリーの1つの特別な例は、上述のasCaseツリーのうちの1つ以上のエンドプロダクト葉ノードにリンクされたルートノードを含む。したがって、このasResultツリーは、エンドプロダクトで終端するasCaseツリーのブランチに逆の順序で容易にアクセスできる。このasResultツリーはまた、次のレベルのための基本ルートノードを規定するのに用いられてもよい。これらの基本ルートノードは、より低いレベルのエンドプロダクトの組で構成される、次のレベルのためのデータセット要素を表わし得る。
インタロック状態のツリーデータストアは、レベル開始インジケータを表わすノードとデータセット要素を表わすノードとを組合せてサブコンポーネントを表わすノードを形成することにより、入力ファイルにおいて生じるデータセット要素間の関係についての情報を取込み得る。サブコンポーネントノードは、データセット要素を表わすノードと組合されて、反復サブプロセスにおいて別のサブコンポーネントノードを生成し得る。サブコンポーネントノードを、レベル終了インジケータを表わすノードと組合せることにより、レベルエンドプロダクトノードが作成され得る。レベル開始ノードをデータセット要素ノードと組合せてサブコンポーネントを作成し、サブコンポーネントをデータセット要素ノードなどと組合せるプロセス自体が繰返されると、あるレベルにおいて複数のasCaseブランチが生成され得る。asResultツリーはまた、たとえばasCaseツリーにおける1つ以上のノードを指すasResultツリーのルートによって、asCaseツリーにおけるノードにリンクまた
は接続され得る。
1つのレベルのエンドプロダクトノードは、次のレベルのサブコンポーネントを生成するために組合されるデータセット要素を表わす基本ルートノードであり得る。このプロセスは何回でも繰返されて、asCaseツリーのレベルがいくつでも作成され得る。加えて、あるレベルの基本ルートノードが分解されて、より低いレベルのノードおよびルートが生成され得る。1つのレベルのエンドプロダクトノードが、特別な場合のより低いレベルのasResultツリーにより、次のレベルの基本ルートノードになる。すなわち、より低いレベルのasResultツリーはより低いレベルの終了インジケータを表わすルートノードを有する。したがって、より低いレベルの終了インジケータを表わすルートノードを有する、より低いレベルのasResultツリーは、反転したより低いレベルのasCaseツリーへの第2のルートである。
この発明の一実施例においては、ノードが作成されると、asCaseおよびasResultリンクは各レベルにおいて本質的に同時に生成される。asCaseブランチは、入力が処理されると、asCaseリンクを生成することによって作成される。各レベル上のasCaseツリーのasCaseブランチは、そのレベルの各々のサブコンポーネントおよびエンドプロダクトが、データセット要素を表わすノードをサブコンポーネントおよびエンドプロダクトなどにシーケンシャルに組合せることによって如何に作成されたかを直接記録する。asCaseツリーのブランチはまた、ツリーにおけるノードの1つの起こり得る階層関係を表わす。
asResultリンクを生成することにより、一連のインタロック状態のツリーが作成され、その各々は別個のルートに従属する。あるレベルには、この種類の複数のルートが存在し得る。これにより、結果として、入力時に生じるデータセット要素間の他のすべての関係が記録される。上述の情報は、ツリーのノードに明確に記憶されるのではなく構築されるインタロック状態のツリーの森の構造によって取込まれ、これにより、実際には、入力として受信されるデータが、構築されるインタロック状態のツリーの森の構造を決定する。asResultツリーの森の構造により、このように記憶された情報が、所要の他のいかなる文脈においても確実にアクセス可能となる。したがって、データストアは、以下の説明から明らかとなるように、自己組織化する。
加えて、演算は、ツリーベースのデータストアを生成するためのシステム上または当該システムでもって実行されるだろう。当該システムは、プロセッサと、プロセッサに連結されたメモリと、少なくとも1つのレベルのツリーベースのデータストアを作成するためのツリーベースのデータストアジェネレータとを有し得る。当該少なくとも1つのレベルのツリーベースのデータストアは、第1のルートおよび複数のノードのうち少なくとも1つのノードを含む第1のツリーと、第2のルートおよび第1のツリーの少なくとも1つのノードを含む第2のツリーと、第3のルートおよび第1のツリーの複数のノードのうちの少なくとも1つを含む少なくとも第3のルートとを含む。
好ましくは、カウントフィールドを含むノードと、上記ノード間のリンクとを含むインタロック状態のツリーデータストアからの、インタロック状態のツリーデータストアによって表わされるデータの集合を評価するために、上記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、他のルートノードを含んでいてもよく、上記ノードはさらに、少なくとも1つの思考の終わりノード、少なくとも1つのサブコンポーネントノード、および少なくとも1つのエンドプロダクトノードを含み、ここにはasResultおよびasCaseリンクが存在し、上記asResultリンクはルートノードと他のノードとの間を指し、上記asCaseリンクは、少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、当該方法は、
上記データストア内の文脈とその対応する値とを決定するステップと、
上記文脈内の焦点とその対応する値とを決定するステップと、
上記文脈および上記焦点の対応する値を用いて、上記文脈内における上記焦点の発生の確率を計算するステップとを実行し得る。
文脈およびその対応する値を決定するステップは、複数ステップのプロセス自体であってもよく、これは、
上記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、上記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、上記ステップはさらに、
少なくとも1つのルートノードのasResultリストから、少なくとも1つのルートノードの対応するサブコンポーネントノードへトラバースし、上記対応するサブコンポーネントノード間のasCaseリンクを、上記サブコンポーネントノードの対応する各エンドプロダクトノードへトラバースすることにより、上記少なくとも1つのルートノードから、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
基本ルートノードへのリンクを有するこれらの経路を無視するステップとを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
「論理式」は、AND、ORおよびNOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTOならびにこのような論理演算子の組合せなどであるがこれらには限定されない少なくとも1つの論理演算子を含む。
また、インタロック状態のツリーデータストアにおけるデータの集合が評価され得ることが示されるが、文脈およびその対応する値を決定するステップは、以下のプロセスに従って処理が進められ得る。以下のプロセスは、
上記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、上記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、当該プロセスはさらに、
上記経路に沿ったCaseリンクを用いてすべての起り得るエンドプロダクトノードから主ルートの方にトラバースして戻ることにより、ルートノードを配置し当該ルートノードを上記少なくとも1つのルートノードと比較するためにそのResultリンクを用いる各サブコンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、上記プロセスはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
インタロック状態のツリーデータによって表わされるデータの集合を評価する方法はまた、以下のとおり行なわれてもよい。すなわち、
上記データセット内の文脈とその対応する値とを決定し、
文脈の各経路に沿った位置を決定し、
上記文脈内の焦点とその対応する値とを決定し、
上記文脈内の経路に沿って、上記位置とエンドプロダクトとの間における上記焦点の発生の確率を計算する。
当該方法がこのように進められる場合、文脈の各経路に沿った位置を決定するステップは、
ルートノードまたは基本ルートノードから、上記インタロック状態のツリーデータストアのルートノードを選択し、文脈の各経路において、上記ルートノードまたは基本ルートノードのasResultリストからその対応するサブコンポーネントノードへトラバースするステップを含み得る。
さらに、文脈およびその対応する値を決定するステップは、
上記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、上記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、上記ステップはさらに、
少なくとも1つのルートノードのasResultリストから少なくとも1つのルートノードの対応するサブコンポーネントノードへトラバースし、次いで、上記対応するサブコンポーネントノード間のasCaseリンクを、上記サブコンポーネントノードの対応する各エンドプロダクトノードへトラバースすることにより、上記少なくとも1つのルートノードから、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
当該方法が最後の列挙されたステップの組に従う場合、文脈およびその対応する値を決定するステップは、
上記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、上記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、上記ステップはさらに、
上記経路に沿ったCaseリンクを用いてすべての起り得るエンドプロダクトノードから主ルートの方にトラバースして戻ることにより、ルートノードを配置し当該ルートノードを上記少なくとも1つのルートノードと比較するためにそのResultリンクを用いる各サブコンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
インタロック状態のツリーデータストアによって表わされるデータの集合を評価するさらに別の方法は、
上記データセット内の文脈とその対応する値とを決定するステップと、
文脈の各経路に沿った位置を決定するステップと、
上記文脈内の焦点とその対応する値とを決定するステップと、
上記文脈内の経路に沿って、上記位置と主ルートとの間における上記焦点の発生の確率を計算するステップとを含み得る。
このさらに別の方法においては、文脈の各経路に沿った位置を決定するステップは、
ルートノードまたは基本ルートノードから上記インタロック状態のツリーデータストアのルートノードを選択し、文脈の各経路において、上記ルートノードまたは基本ルートノードのasResultリストからその対応するサブコンポーネントノードへトラバースするステップを含み得る。
文脈およびその対応する値を決定するステップは、
上記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、上記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、上記ステップはさらに、
少なくとも1つのルートノードのasResultリストから、少なくとも1つのルートノードの対応するサブコンポーネントノードへトラバースし、上記対応するサブコンポーネントノード間のasCaseリンクを、上記サブコンポーネントノードの対応する各エンドプロダクトノードへトラバースすることにより、上記少なくとも1つのルートノードから、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
代替的には、文脈およびその対応する値を決定するステップは、
上記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、上記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、上記ステップはさらに、
上記経路に沿ったCaseリンクを用いてすべての起り得るエンドプロダクトノードから主ルートの方にトラバースして戻ることにより、ルートノードを配置し当該ルートノードを上記少なくとも1つのルートノードと比較するためにそのResultリンクを用いる各サブコンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
別の代替例として、文脈およびその対応する値を決定するステップは、
上記インタロック状態のツリーデータストアの、エンドプロダクトノードによるすべての起り得る経路を選択し、基本ルートノードへのリンクを有する経路を無視するステップを含み、その値フィールドは上記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードを含み、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
殆どのいずれの場合でも、焦点およびその対応する値を決定するステップは、
ルートノードまたは基本ルートノードから、上記インタロック状態のツリーデータスト
アの少なくとも1つのルートノードの焦点制約リストを選択するステップを含み、上記少なくとも1つのルートノードは論理式によって関連付けられ、上記ステップはさらに、
少なくとも1つのルートノードのasResultリストからいずれかの対応するサブコンポーネントノードへトラバースし、次いで、上記対応するサブコンポーネントノードのasCaseリンクを、その対応するエンドプロダクトノードへトラバースすることにより、上記少なくとも1つのルートノードから、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
確立された文脈内にない経路を無視するステップと、
さらに、上記論理式と一致しない値フィールドを有する基本ルートノードへのリンクを有する経路を無視するステップとを含み、結果として得られる1組のノードはこうして焦点を形成するが、無視されなかった経路のみに沿ったノードを含み、上記ステップはさらに、
焦点数を得るために、上記焦点を形成する1つ以上の経路のエンドプロダクトノードの数を追加するステップを含み得る。
また、殆どのいずれの場合でも、焦点およびその対応する値を決定するステップは、
ルートノードまたは基本ルートノードから、上記インタロック状態のツリーデータストアの少なくとも1つのルートノードの焦点制約リストを選択するステップを含み、上記少なくとも1つのルートノードは論理式によって関連付けられ、上記ステップはさらに、
確立された文脈内のすべてのエンドプロダクトノードから経路に沿ってトラバースしてそれらの主ルートノードに戻ることにより、エンドプロダクトノードによる1つ以上の経路を識別するステップを含み、上記経路は、確立された文脈内の上記エンドプロダクトノードのCaseリンクを用いて、トラバースしつつ、ルートノードを配置し当該ルートノードを上記少なくとも1つのルートノードと比較するためにResultリンクを用いる各サブコンポーネントノードにおいて、識別可能であり、上記ステップはさらに、
上記論理式と一致しない値フィールドを有する基本ルートノードへのリンクを有する経路を無視するステップを含み、結果として得られる1組のノードはこうして焦点を形成するが、無視されなかった経路のみに沿ったノードを含み、上記ステップはさらに、
文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含み得る。
さらに、論理式が用いられる場合、それは如何なる式であってもよい。これは、AND、ORおよびNOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTOならびにこのような論理演算子の組合せなどであるがこれらに限定されない少なくとも1つの論理演算子を含むべきである。
我々が好む構造は、該して、ノードと上記ノード間のリンクとを含み、上記ノードは複数のデータフィールドを有し、上記複数のデータフィールドのうち少なくとも2つはポインタを含み、上記少なくとも2つのポインタのうちの一方はCaseポインタであり、上記少なくとも2つのポインタのうちのもう一方はResultポインタであり、少なくとも1つのノードは、ポインタのリストを指す少なくとも1つの追加のポインタを有し、ポインタの上記リストを指す上記追加のポインタのうちの1つは、上記ノードが関連するasCaseリストを有する場合にはasCaseリストを指すものであり、上記追加のポインタのうちの別のポインタは、上記ノードが関連するasResultリストを有する場合にはasResultリストを指すものであり、上記ノードはカウントフィールドを含み、上記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードおよび少なくとも1つの基本ルートノードが存在し、上記ノードは他のルートノードを含んでいてもよく、上記ノードはさらに、少なくとも1つの思考の終わりノード、少なくとも1つのサブコンポーネントノード、および少なくとも1つのエンドプロダクトノードを含み、上記asResultリンクは、ルートノードと他のノードとの間を指し、上記asCaseリンクは、少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサ
ブコンポーネントノードを含み、上記asResultリンクは、ルートもしくはエンドプロダクトノードとその間の上記経路上におけるサブコンポーネントノードもしくはエンドプロダクトノードとの間を指し、上記基本ノードはまた、値を有するフィールドを有する。
好ましくは、当該構造は、コンピュータシステムを構成し、その内部で起動されると上記構造を作り出すプログラム命令の組から形成される。
当該構造は、プログラム命令の組を含むコンピュータ読取可能な媒体上または当該コンピュータ読取可能な媒体において利用可能な上記プログラム命令の組から作成され得る。
また、好ましくは、カウントフィールドは強度変数を含み、当該強度変数は、上記カウントフィールドを含むノードに関連するさまざまな所定のトラバースタイプの活動に対応するさまざまな強度で変更可能である。
好ましくは、asCaseおよびasResultリストは上記インタロック状態のツリー構造から別個のデータ構造に記憶され、上記別個のデータ構造は、ポインタにより、上記インタロック状態のツリー構造における関連するノードに関連付けられる。
当該構造の別の好ましい形は、ノードと上記ノード間におけるリンクとを含む構造として説明され、上記ノードは複数のデータフィールドを有し、上記複数のデータフィールドのうち少なくとも2つはポインタを含み、上記少なくとも2つのポインタのうちの1つはCaseポインタであり、上記少なくとも2つのポインタのうちのもう一方はResultポインタであり、少なくとも1つのノードはポインタのリストを指す少なくとも1つの追加のポインタを有し、ポインタの上記リストを指す上記追加のポインタのうちの1つは、上記ノードが関連するasCaseリストを有する場合にはasCaseリストを指すものであり、上記追加のポインタのうちの別のポインタは、上記ノードが関連するasResultリストを有する場合にはasResultリストを指すものであり、上記ノードは、各々の所定の態様のトラバースのために1つのサブノードを備え、上記サブノードは、所定の態様で上記ノードのトラバースを記録するためのカウントフィールドを含み、上記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、上記ノードは他のルートノードを含んでいてもよく、上記ノードは少なくとも1つの思考の終わりノード、少なくとも1つのサブコンポーネントノードおよび少なくとも1つのエンドプロダクトノードをさらに含み、上記asResultリンクはルートノードと他のいずれかのノードとの間を指し、上記asCaseリンクは、少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路において少なくとも1つのサブコンポーネントノードを含み、上記asResultリンクは、ルートもしくはエンドプロダクトノードとその間の上記経路上におけるサブコンポーネントノードもしくはエンドプロダクトノードとの間を指し、上記基本ノードはまた、値を有するフィールドを有する。
この発明の構造の別の好ましい形は、ノードと上記ノード間のリンクとを含み、上記ノードは複数のデータフィールドを有し、上記複数のデータフィールドのうち少なくとも2つはポインタを含み、上記少なくとも2つのポインタのうち一方はCaseポインタであり、上記少なくとも2つのポインタのうちもう一方はResultポインタであり、少なくとも1つのノードはポインタのリストを指す少なくとも1つの追加のポインタを有し、ポインタの上記リストを指す上記追加のポインタのうちの1つは、上記ノードが関連するasCaseリストを有する場合にはasCaseリストを指すものであり、上記追加のポインタのうちの別のポインタは、上記ノードが関連するasResultリストを有する場合にはasResultリストを指すものであり、上記ノードは追加のフィールドを含み、上記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、上記ノードは他のルートノードを含んでいてもよく、上記ノードはさらに、少なくと
も1つの思考の終わりノード、少なくとも1つのサブコンポーネントノードおよび少なくとも1つのエンドプロダクトノードを含み、上記asResultリンクはルートノードと他のいずれかのノードとの間を指し、上記asCaseリンクは、少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路において少なくとも1つのサブコンポーネントノードを含み、上記asResultリンクは、ルートもしくはエンドプロダクトノードとその間の上記経路上におけるサブコンポーネントノードもしくはエンドプロダクトノードとの間を指し、上記基本ノードはまた、値を有するフィールドを有する。
最後に記載されたこの形では、上記追加のフィールドは好ましくはカウントフィールドである。
上述の概要、ならびにこの発明の実施例についての以下の詳細な説明は、添付の図面と関連して読まれるとより良く理解される。この発明を例示する目的で、この発明の例示的な構造が図面に示される。しかしながら、この発明は開示される特定の方法および手段に限定されない。
具体的な実施例の詳細な説明
概観
以下に記載されるシステムおよび方法は、相互接続されたツリーの森の少なくとも1つのレベルを含むデータストアを作成する。データストアの各レベルの相互接続されたツリーの森は、レベル開始を表わすノードと(サブコンポーネントノードを作成する)データセット要素との組合せ、またはサブコンポーネントノードとデータセット要素ノードとの組合せ、またはサブコンポーネントノードとレベル終了インジケータを表わすノードとの組合せについての情報を、反復プロセスにおいて取込み、これにより、asCaseツリーブランチおよび複数のasResultツリーによってリンクされるノードで構成される単一のasCaseツリーが生成されることとなる。asCaseブランチのノードは第1のルートに従属する。たとえば、図3aを参照すると、ノード302、312、314および316は、第1の開始インジケータルート302に従属する例示的なasCaseツリーである。asResultツリーは以下のツリーを含む。すなわち、ノード306および312(1つのasResultツリー)、ノード304および314(第2のasResultツリー)、ノード308および316(第3のasResultツリー)、ならびにノード310および318(第4のasResultツリー)である。第4のasResultツリーは、asResultツリーの特別な例である。というのも、ルート(ノード310)が終了インジケータを表わすからである。
当該構造をその最も基本的な形で見るために図13を参照されたい。図13においては、リンク16〜19によって接続されるノード11〜15を備えたインタロック状態のツリーデータストア構造の最小単位が描かれている。ベース構造は、リンク16を介してサブコンポーネントノード14に接続される主ルート(第1のルート、ノード11)を有するだろう。第3のルート、すなわち(基本ルート)ノード12は、リンク17によってサブコンポーネントノード14にも接続されるだろう。(したがって、ノード14は、それがどんなものであれ、ノード12のためのデータに示されている例である、すなわち、ノード14のデータは基本ノード12のデータの例である。)ノード15はリンク19によってノード14に接続され、経路11−16−14−19−15は経路またはスレッドと称されてもよく、主ルートから始まり、エンドプロダクトノード15に向かう(経路はリンクおよびノードの接続された如何なるラインであってもよい)。エンドプロダクトノードはまた、第2のルートノード(思考の終わりノード)13の例であり、リンク18によってこれに接続される。
所与のレベルのasCaseツリーの各ブランチは、レベル開始インジケータを表わすノードと、サブコンポーネントノードへのデータセット要素を表わすノードとの組合せで始まる。サブコンポーネントノードは、別のサブコンポーネントノードへのデータセット要素ノードと繰返し組合されてもよい。サブコンポーネントはレベル終了インジケータを表わすノードと組合されて、エンドプロダクトノードを作成し得る。このプロセスは繰返すことができ、結果として、第1のルートに従属する複数のasCaseツリーブランチを形成することとなり得る。
たとえば、特定のインタロック状態のツリー構造のうち分割できない基本構成要素が英数字である場合、サブコンポーネントは、語ではない文字の組合せであってもよく、エンドプロダクトは語であってもよい。代替的には、サブコンポーネントは、一部の在庫数または注文数を含む英数字の組合せであってもよく、エンドプロダクトは、この発明に適用される入力の英数字の母集団のうち多数ある中から2つの可能な用途を挙げると、全ての在庫数または注文数であってもよい。
1つのレベルのエンドプロダクトは次のレベルのデータセット要素であってもよい。エンドプロダクトデータセット要素を用いることにより、より低いレベルのデータセット要素がより低いレベルのサブコンポーネントおよびエンドプロダクトを作成するのに用いられるのと同じ態様で、次のレベルのサブコンポーネントが生成され得る。たとえば、上述の特定のインタロック状態のツリー構造においては、1つのレベルのエンドプロダクト(語)はデータセット要素であってもよく、そこから、より高いレベルのエンドプロダクト(文)が作成され得る。このプロセスは何回繰返されてもよく、これにより、データストアにいくつものレベルのasCaseツリーが作成され得る。
上述の例を続けるために、レベルデータセット要素として語を用いるより高いレベルには文が含まれ得る。文を組合せることにより段落(さらにより高いレベル)などが作成され得る。加えて、より高いレベルのデータセット要素を分解することにより、より低いレベルのインタロック状態のツリーデータストアが生成され得る。この発明の一実施例においては、レベル終了インジケータから始まるasResultツリーを用いて、次のレベルのデータセット要素を規定する。終了インジケータは、この発明の一実施例においては、asCaseツリーによって規定されるように、反転したインタロック状態のツリーデータストアへの第2のルートである。
ノードが作成されると、asCaseおよびasResultリンクが各レベルで同時に生成され得る。asCaseリンクは、ノードがそこから作成される2つのノードのうち第1のノードへのリンクを表わす。入力が処理されると、asCaseツリーのasCaseブランチがasCaseリンクの生成によって作成され得ることが認識されるだろう。各レベルのasCaseブランチは、そのレベルの各サブコンポーネントおよびエンドプロダクトが如何に作成されたかを直接記録する。したがって、asCaseブランチはいかなる目的で用いられてもよく、これについては、サブコンポーネントおよびエンドプロダクトが如何に作成されるかを知ることが有用である。たとえば、インタロック状態のツリージェネレータへの入力が正確に綴られた語の母集団を含む場合、生成されたインタロック状態のツリーのうち結果として得られるasCaseリンクをスペルチェッカーとして用いて、データストアの有用性の可能な限り多くの例から例を1つだけ列挙し得る。
加えて、asCaseツリーのブランチはまた、asCaseツリーにおけるノードの1つの起り得る階層関係を表わす。たとえば、インタロック状態のツリージェネレータが受取ったデータが「トムがペンシルヴェニア州で100個を売った。(Tom sold 100 PA.)ビルがニュージャージー州で40個を売った。(Bill sold 40 NJ.)」である場合、生成されたasCaseツリーは、「販売員の文脈内の州情報」の文脈または階層にデータの視点を含む。
asResultリンクは、ノードがそこから作成される2つのノードのうち第2のノードへのリンクを表わす。asResultリンクの生成により一連のインタロック状態のツリーが作成され、この場合、asResultツリーの各々はデータセット要素を含むルートに従属する。これにより、結果として、データストアにおいて要素とasCaseツリーとの間に発生するすべての関係が記録されることとなる。すなわち、asResultツリーは、インタロック状態のツリーのノードの起り得るすべての文脈を取込む。asResultツリーはいかなる目的で用いられてもよく、これについては、文脈またはノード間の関係を知ることが有用である。たとえば、インタロック状態のツリーデータストアジェネレータへの入力が、販売員の名前、曜日、アイテムの数および州を含む販売データの母集団を含む場合、生成されたインタロック状態のツリーデータストアのうち結果として得られるasResultリンクを用いることにより、「特定の州においてどの販売員が販売するか?」、「月曜日にいくつのアイテムが売れたか?」、「販売員ボブは月曜日と火曜日にアイテムをいくつ売ったか?」などの情報がすべて、同じインタロック状態のツリーデータストアから、データストアの複数のコピーを作成せずに抽出され得る。
サブコンポーネントおよびエンドプロダクトは、asResultツリーに記憶される情報を用いて分類され得る。上述の情報が、ツリーのサブコンポーネントおよびエンドプロダクトノードに明示的に記憶されるのではなく、構築されたインタロック状態のツリーデータストアの構造によって実際に記録されることが認識されるだろう。インタロック状態のツリーデータストアのルートノードだけがデータを含み得るので、asResultリンクがルートノードまで辿られることにより、サブコンポーネントまたはエンドプロダクトがルートノードによって表わされるデータのクラスに属するかどうかが決定され得る。この特徴が以下に記載されるプロセスに従ってデータストアの自己組織化を引起すことがさらに理解されるだろう。たとえば、インタロック状態のツリーデータストアジェネレータへの入力が「CAT TAB」である場合、結果として得られるインタロック状態のツリーデータストアの構造に記憶される情報を用いることにより、エンドプロダクト「BOT-C-A-T-EOT」および「BOT-T-A-B-EOT」が共に要素「A」を含むこと、言い換えれば、「A」を含むサブコンポーネント/エンドプロダクトのクラスが「BOT-C-A-T-EOT」および「BOT-T-A-B-EOT」を含むと判断され得る。さらに、「A」を含むノードのasCaseリンクを辿ることにより、「A」を含む他のサブコンポーネントおよびエンドプロダクトがasCaseツリーのブランチに沿って見出され得る。
この発明の一実施例においては、ノード間のリンクは双方向である。たとえば、文字「A」を表わすルートノードはノードAのasResultListにおけるノードBOT-C-Aを指すポインタを含み得、ノードBOT-C-Aは、そのasResultポインタとしてノードAを指すポインタを含み得る、等々である。
この発明の別の実施例においては、ノード間のリンクは単方向である。たとえば、この実施例においては、ノードBOT-C-Aは、ノードBOT-Cを指すasCaseポインタと、Aを表わすルートノードを指すasResultポインタとを含むが、ルートノードAは、そのasResultListにおいてノードBOT-C-Aを指すポインタを含まない。どのノードがクラスAのものであるかについての情報を依然として決定することができるが、そうするには、すべてのノードの探索が必要となるかもしれないことを当業者は認識するだろう。
例示的なコンピューティング環境
図1は、この発明の局面が実現され得る例示的なコンピュータシステム100を示すブロック図である。コンピュータシステム100は、メインフレーム、ミニコンピュータ、IBMの互換性のあるパーソナルコンピュータ、Unix(登録商標)ワークステーションまたはネットワークコンピュータなどであるがこれらに限定されない如何なる好適なシステ
ムであってもよい。この発明の装置が、マルチユーザコンピュータシステムまたは単一のユーザコンピュータを含むがこれらに限定されない如何なるコンピュータシステムにも適用され得ることを当業者は理解するだろう。図1に図示のとおり、コンピュータシステム100は、メインメモリ104、補助ストレージインターフェイス106、端末インターフェイス108およびネットワークインターフェイス110に接続される中央処理装置(CPU)102を含む。これらのシステム構成要素はシステムバス160を介して接続される。補助ストレージインターフェイス106は、ディスク195などであるがこれに限定されないディスクにデータを記憶する、DASD装置190などであるがこれらに限定されない記憶装置をコンピュータシステム100に接続するのに用いられる。
コンピュータシステム100の仮想メモリ全体を含むメインメモリ104はオペレーティングシステム122およびアプリケーション124を含み、インタロック状態のツリーデータストア126をも含み得る。インタロック状態のツリーデータストア126を用いることにより、データを複製する必要なしに複数の文脈モードでデータを直ちに探索することができるデータストレージが提供され得る。コンピュータシステム100は周知の仮想アドレス指定機構を用い得るが、これにより、コンピュータシステム100のプログラムが、メインメモリ104およびDASD装置190などの複数のより小さなストレージエンティティにアクセスするのではなく大きな単一のストレージエンティティにアクセスするかのように挙動することが可能となる。したがって、オペレーティングシステム122、アプリケーション124およびインタロック状態のツリーデータストア126はメインメモリ104に存在するように示されているが、当業者は、これらの要素が必ずしもすべて完全にメインメモリ104に同時に配置されるわけではないことを認識するだろう。
コンピュータシステム100は単一のCPUおよびシステムバスのみを含むよう示されているが、当業者は、この発明が複数のCPUおよび/またはバスを含むシステムを用いて実現され得ることを理解するだろう。端末インターフェイス108は、1つ以上の端末をコンピュータシステム100に接続するのに用いられ得る。参照される端末は簡易端末装置または完全にプログラム可能なワークステーションであってもよく、システム管理者およびユーザがコンピュータシステム100と通信することを可能にするのに用いられてもよい。
ネットワークインターフェイス110は、他のコンピュータシステムおよび/またはワークステーションをコンピュータシステム100に接続するのに用いられてもよい。ネットワークインターフェイス110がインターフェイスをとるネットワークは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、エクストラネットもしくはインターネット(Internet)、または他の好適なネットワークであってもよい。オペレーティングシステム122は、OS/2、WINDOWS(登録商標)、AIX、UNIX(登録商標)、LINUXなどのオペレーティングシステム、または他の好適なオペレーティングシステムであってもよい。
アプリケーションプログラム124は、インタロック状態のツリーデータストア126に記憶されるデータにアクセスする如何なる種類のアプリケーションプログラムであってもよい。したがって、当該アプリケーションは、いくつかの例を挙げると、データ解析アプリケーション、データウェアハウジングアプリケーション、侵入検出システムを含み得るが、但し、この発明はこれらには限定されない。
インタロック状態のツリーデータストア126は、ユーザが同じデータストアにアクセスして如何なる文脈にも関連付けられる情報を得ることを可能にするデータストレージ構造を提供する。この明細書中に用いられるデータという語は、数字、テキスト、グラフィック、式、表、音声、映像、マルチメディアまたはその組合せなどであるがこれらに限定
されない、コンピュータによって記憶された如何なる種類の情報をも含み得る。インタロック状態のツリーデータストア126は、アプリケーション124の一部として、オペレーティングシステム122の一部として、または、多種多様なアプリケーションにデータストレージを提供するよう適合され得る別個のデータストアプロダクトとして、実現され得る。
この発明は、十分に機能的なコンピュータシステムの文脈において記載されるが、当業者は、この発明がさまざまな形のプログラムプロダクトとして分散可能であり、この発明が、この分散を実行する特定の種類の信号記録媒体から独立して等しく適用されることを認識するだろう。このような信号を搬送する媒体の例は、フロッピー(登録商標)ディスク、ハードドライブ、CD−ROM、電気媒体、光学媒体、無線媒体または他の好適な媒体に亘るデジタルおよびアナログ通信リンクを含むが、これらには限定されない。
インタロック状態のツリーデータストアを生成し、これにアクセスするためのシステムおよび方法
図2aは、この発明の一実施例に従ったデータストアを含むインタロック状態のツリーの森からデータを生成しこのデータにアクセスするための例示的なシステム200を示す。一実施例においてインタロック状態のツリーデータストアを生成するためのサブシステム250は、インタロック状態のツリージェネレータ202、データセット要素206の組および入力データ204を含み、そこから、例示的なインタロック状態のツリーデータストア208が生成される。代替的には、データセット要素206の組は入力データ204から得られてもよい。
インタロック状態のツリーデータストア208からの情報にアクセスするためのサブシステム251は、データ要求212を受取り、データ要求212を処理し、要求された情報を戻すための上述のインタロック状態のツリーデータストア208および/またはインタロック状態のツリーデータストアクセス機構210を含み得る。
図2bは、インタロック状態のツリーデータベースから情報を生成し、この情報にアクセスするための例示的な方法を示す。ステップ260において、インタロック状態のツリーデータストアが、以下により十分に記載されるように生成される。ステップ262において、インタロック状態のツリーデータストアからの情報に対する要求が受取られる。ステップ264において、インタロック状態のツリーデータストアから情報が検索される。
インタロック状態のツリーデータストアの生成
たとえば、入力データ204が語(たとえば「CAT」)を表わす英数字のストリームを含むと仮定する。この場合、データセット要素206はアルファベットの文字の組であってもよく、デリミタまたは語の始め/語の終わり概念を表わす1つ以上の文字を含んでいてもよい。デリミタは、空白(「 」)、コンマ(「,」)およびピリオド(「.」)などであるがこれらに限定されない英数字を含み得る。
インタロック状態のツリーデータストア208は、いくつかのルート、いくつかの非ルートノード、および、非ルートノード間またはルートと非ルートノードとの間にいくつかのリンクまたは接続部を含む。インタロック状態のツリーデータストア208の各々のルートおよび非ルートノードは、1対のポインタ(ケースポインタおよび結果ポインタ)ならびに1対のリストポインタ(asCaseListを指すポインタおよびasResultListを指すポインタ)を含む。加えて、ルートは、値を表わすデータまたは値への参照を含み得る。
図3aは例示的なインタロック状態のツリーデータストア208を示すより詳細な図である。いくつかのノード、特に、当該例におけるルートノード302(BOT)および31
0(EOT)は開始インジケータまたは終了インジケータなどの概念を表わし、ルートノード304(A)、306(C)、308(T)はデータセット要素を表わすが、他のノード、特にノード312(BOT-C)、314(BOT-C-A)、316(BOT-C-A-T)および318(BOT-C-A-T-EOT)は、開始インジケータを表わすノードとデータセット要素を表わすノードとの、サブコンポーネントを表わすノードへのシーケンシャルな合成を表わし、当該サブコンポーネントは、サブコンポーネントが終了インジケータを表わすノードと組合されてエンドプロダクトを表わすノードが作成されるまで、データセット要素と組合わされて別のサブコンポーネントなどにされる。この場合、デリミタが後に続く一連の文字からの語のシーケンシャルな合成(すなわち、一連の文字「CAT」の後にデリミタ「 」または空白文字が続く)が取り込まれる。入力におけるデリミタはエンドプロダクトを識別するよう作用し得る。たとえば、語を区切る文字が1つの語の終わりと別の語の始めとをともに示すよう作用し得ることに留意されたい。たとえば、ストリング「CATS ARE」においては、「CATS」と「ARE」との間の空白文字は共に、語「CATS」の終わりと語「ARE」の始めとを示す。したがって、入力における空白文字などのデリミタは、作成されたノードにおける「BOT」などの開始インジケータまたは「EOT」などの終了インジケータに置換えられてもよい。これは以下により十分に記載されるとおりである。
ルートノード304、306および308などのノードはこの明細書中において基本ノードと称される。というのも、これらのノードはデータセット要素を表わし、分割可能な単位(サブコンポーネントおよびエンドプロダクト)を構成する分割できない単位を含むからである。312、314および316などのノードは、この明細書中においてはサブコンポーネントまたはサブコンポーネントノードと称される。というのも、これらのノードは、開始インジケータなどの概念インジケータとデータセット要素を表わすノードとの組合せ、またはサブコンポーネントとエンドプロダクトを含まないデータセット要素を表わすノードとの組合せ、またはサブコンポーネントとエンドプロダクトを含まない終了インジケータを表わすノードとの組合せを表わすからである。ノード318などのノードはエンドプロダクトを表わす。列挙された例においては、データセット要素は文字であり、サブコンポーネントは語を含まない文字の組合せを表わし、エンドプロダクトは語である。なお、ルートノードの組は、当該例においては、語の始めを示す「BOT」と、語の終わりを示す「EOT」とを含む。「BOT」および「EOT」が開始インジケータおよび終了インジケータを表わすが、この発明がこれに限定されないことが理解されるだろう。このようなインジケータのうちの一方またはその両方が無い場合、他のこのようなインジケータの使用が企図される。この発明の一実施例においては、ノードからルートノードへのリンクがEOT概念を表わしているので、エンドプロダクトはサブコンポーネントから識別可能である。
所与の例においては、入力の母集団が英数字の組であり、そこから語を得ることができるが、企図されたこの発明がそのようには限定されないことが理解されるだろう。たとえば、入力の母集団は、文字などのテキスト(ここから語を得ることができる)または語(ここから句または文を得ることができる)であり得るか、または代替的には、そこからゲノムを得ることができるアミノ酸、プロセスにおいて用いられる制限されたリソース、概念、画素セット、画像、音声、数、アナログ測定もしくは値、または、エンドプロダクトを生成するためにデジタル化され連続して組合され得る基本単位からなる他の如何なる好適な母集団であってもよい。典型的には、この発明の一実施例に従うと、基本単位は最適化されたシーケンスにおいて組合される。
上述のノードに加えて、インタロック状態のツリーデータストア208はまた、ノード間においてリンク320、322、324および326や、リンク328、330、332および334などのいくつかの接続またはリンクを含み得る。この発明の一実施例におけるリンク320、322、324および326ならびにリンク328、330、332
および334は双方向であり、すなわち、ルートノード(BOT)とノード318(BOT-C-A-T-EOT)との間の経路はリンク320、322、324および326を介してトラバースされ得るか、または代替的には、リンク326、324、322および320を介してトラバースされ得る。リンク320、322、324および326(実線で図示)は、この明細書中においてはasCaseリンクと称される。リンク328、330、332および334(破線または点線で図示)は、この明細書中においてはasResultリンクと称される。同様に、この発明の一実施例においては、リンク328、330、332および324は、ノードC306におけるポインタがノードBOT-C312を指し、ノードBOT-C312におけるポインタがノードC306を指し、ノードA304におけるポインタがノードBOT-C-A-T314を指し、ノードBOT-C-A314におけるポインタがノードA304を指す、等々の点で、双方向である。
図3bは、インタロック状態のツリーデータストア208の例示的なノードに含まれる情報を示す。例示的なノード340はサブコンポーネントまたはエンドプロダクトを表わし得る。例示的なノード340は、サブコンポーネントまたはエンドプロダクト340の第1の部分を指すポインタ(この明細書中において「asCase」とも称されるケースを指すポインタ342)、サブコンポーネントまたはエンドプロダクト340の第2の部分を指すポインタ(この明細書中において「asResult」とも称される結果を指すポインタ344)、asResultList、すなわちノード340が第1の部分であるサブコンポーネントもしくはエンドプロダクトのリンクされたリスト、を指すポインタ346、および、asResultList、すなわちノード340が第2の部分である構成要素またはエンドプロダクトのリンクされたリスト、を指すポインタ348を含み得る。
例示的なノード341は基本ノードを表わす。図12Aおよび図12Bは、後にも記載されるように、ある機能に必要な付加的なフィールドを有するノードを説明するために次の段落で参照される筈である。例示的なノード341は、ヌルポインタ(この明細書中において「asCase」とも称されるケースを指すポインタ342)、第2のヌルポインタ(この明細書中において「asResult」とも称される結果を指すポインタ344)、asCaseList、すなわちルートノード341が第1の部分であるサブコンポーネントまたはエンドプロダクトのリンクされたリスト、を指すポインタ346、asResultList、すなわち、ルートノード341が第2の部分である構成要素またはエンドプロダクトのリンクされたリスト、を指すポインタ348、および、値349を含む。値349は実効値を含み得、状態または条件を表わし、値などを指すポインタまたは基準を含み得る。したがって、この発明の一実施例においては、開始インジケータが決してサブコンポーネントの第2の部分とはならないので開始インジケータ概念または条件を表わすルートノードはヌルasResultListを有することとなり、データセット要素が決してサブコンポーネントの第1の部分とはならないのでデータセット要素を表わすルートノードはヌルasCaseListを有することとなり、終了インジケータが決してサブコンポーネントの第1の部分とはならないので終了インジケータ概念または条件を表わすルートノードはヌルasCaseListを有することとなる。最後に、エンドプロダクトが次のレベルのためのデータセット要素として作用するので、より低いレベルのエンドプロダクトからなるルートノードはヌルasCaseListを有することとなる。
インタロック状態のツリーデータストアの全ノードはまた、上記ノードに関連付けられるデータを表わす付加的なフィールドを含み得る。これは、図3bの図に類似の図、ここでは図12Aおよび図12Bを用いて説明され得る。ここで再び、これらの新しい図12Aおよび図12Bにおいて、サブコンポーネントおよび基本ノードフィールドが、教示の目的のためにフィールドのブロックにおいてフィールドとして示される。
例示的なノード20が図12Aに示される。このノード20は付加的なフィールドとし
て文字列欄を含み得るが、これは、このノードによって表わされる要素のすべてを示すシーケンスを含む。この要素のシーケンスを含む文字列欄の追加はデバッグの際に有用である。このような付加的なフィールドについて多くの用途があり得、ノード20などのノードは1つの付加的なフィールドに限定される必要はない。
図12Bに示される例示的なノード30はまた、カウントフィールド31を含む。カウントフィールドは初期化され、強度変数でインクリメントされるが、その値は、カウントフィールドが参照されている時の条件によって異なる。(強度変数は少なくとも1つの不変の値を保持する数学的エンティティとして規定される。この用語を広範なものにすることにより、カウントフィールドに存在する強度変数は、誤って記録されたデータを忘れたり、どのエンティティが問合せを行なっているかを記録したり、用いられている問合せの種類を記録したりすることに対処するプロセスと、データを使用する際に得られる当該他のプロセスとに対してこの発明のインタロック状態のツリー構造を適用するのに用いることができる。強度変数の単純な一例の形は、「1」などの単一の順序フィールド値であり得るが、これを用いてカウントフィールドのインクリメントまたはデクリメントを行なって、ノードがアクセスまたはトラバースされた回数を記録するだろう。
さらに、強度変数は、これらのさまざまな機能のために異なるレートで異なる方向に変化し得る。異なる強度を持つ単純な例には、クエリがノードをトラバースする度に値+1を追加することと、その特定のノード(その特定のシーケンスのノード)を含む経路が誤りである(何らかの最重要の理由でこの例には重要ではない)と考えられる場合、たとえばスペルミスのあるシーケンスが使用後に発見された場合、または、センサが危険な化学物質を含む区域を見出した場合、または、人間の子供のシミュレータがシミュレーションの際に熱いストーブに「触れる」および当該熱いストーブ上に「それ自体が焼き付く」場合、100までの値を追加することとが挙げられるだろう。強度変数の代替例では、別個のノードを用いて各種類のノードトラバースに対する新しい値を保持し、こうして、タイプ1、タイプ2、経験1、経験2など無限の照会中にノードがアクセスされる状況においてクラスタを作成する。この構造の現実の世界の応用例に関するこの考えでは、カウントフィールドにおける強度変数は、この問題に対する最も単純でこのため現在で最良の方策を提供するが、この、または他の代替例は、成熟した情報処理システムと考えられ再考されるべきである。この代替例が考慮される場合、別個のノード、場合によっては基本またはルートノードを用いてノードに関する各種類のトラバース回数のために数を記録する方策は、この方策を実現する一方法であるだろう。)
したがって、1つの用途においては、カウントフィールドは新しいデータがインタロック状態のツリーデータストアに組込まれている場合にはインクリメントされ得るが、カウントフィールドのインクリメントは、インタロック状態のツリーデータストアが問合せされている場合には省かれてもよく、これにより、新しいデータのためのより大きな値がもたらされるが、問合せに対する変更はない。したがって、この強度変数は、この発明によって対処されている問題に適するよう選択されなければならない。
カウントフィールドは、インタロック状態のツリー構造によって表わされる知識ストアの使用を容易にするよう追加され、頻度および確率などの統計が求められる場合には特に有用である。
図12Aを参照すると、代替例のノード20が図示される。なお、このノード20は、値フィールド22を有する基本ノード20A、または(値フィールド22のない)サブコンポーネントノードもしくはエンドプロダクトノード20Bであり得るが、いずれの場合でも付加的なフィールド21を有するだろう。
図12Bに、付加的なフィールドの特定の例が示される。この場合、ノード形状30(
(値フィールド32を備えた)基本ノード30Aまたはサブコンポーネントもしくはエンドプロダクトノード30B)は共に付加的なフィールド31、この明細書中においてはカウントフィールド、を有する。
図3cは、インタロック状態のツリーデータストア208のasResultにリンクされたリストを示す。リンク350は、ノードC306のasResultList内のポインタをノードBOT-C302に設定することにより確立され、リンク352は、ノードA304のasResultList内のポインタをノードBOT-C-A314に設定することにより確立され、リンク354は、ノードT308のasResultList内のポインタをノードBOT-C-A-T318に設定することにより確立され、リンク356は、ノードEOT310のasResultList内のポインタをノードBOT-C-A-T-EOT318に設定することにより確立される。
図4は、メモリ104内の例示的なデータセット要素206のBOT、A〜Z、およびEOTの例示的なストレージを示す。認識できるように、この例では、BOTが位置0に記憶され、Aが位置5に記憶され、以下同様にしてEOTが位置135に記憶される。データセット要素の配置が単に例示的なものであり、データセット要素の任意の適切な配置が企図されることを理解されるであろう。図5a〜図5eは、インタロック状態のツリーデータストア208がこの発明の例示的な実施例で生成される際のインタロック状態のツリーデータストア208と、このインタロック状態のツリーデータストア208におけるノードの対応する内容とを示す。図6は、この発明の一実施例に従ってインタロック状態のツリーデータストア208を生成するための例示的なプロセス600のフロー図である。
ここでステップ602において、同時に図4、図5および図6を参照すると、インタロック状態のツリーデータストアが初期化される。この発明の一実施例において、初期化は、作成されるべきインタロック状態のツリーデータストアのルートノードに「最新のポインタ」を設定するステップを含む。この発明の別の実施例において、初期化は、既存のインタロック状態のツリーデータストアのルートに「最新のポインタ」を設定するステップを含む。
加えて、データセット要素をメモリにロードして初期化することができる。この発明の一実施例において、ルートノード(図5aのルートノードBOT302、A535a…EOT559a等)は、以下の値、すなわち、ケースポインタ=ヌル、結果ポインタ=ヌル、asCaseListを指すポインタ=ヌル、asCaseList=ヌル、asResultListを指すポインタ=ヌル、asResultList=ヌル、および、データセット要素か、概念/条件インジケータか、または、それに対する表現を指す値で初期化される。
この時点で、インタロック状態のツリーデータストア、たとえば、この発明の一実施例に従ったインタロック状態のツリーデータストア500aは、この場合、語の始まりを示す単一のノード302(BOT)を含み得る。ブロック図502aのノード302は、1対のポインタ(ヌルに初期化されたケースポインタ504aおよび結果ポインタ506a)と、1対のリストポインタ(ヌルに初期化されたasCaseListを指すポインタおよびasResultListを指すポインタ)と、値(ここではBOTと記述される、何らかの値に初期化された値511a)とを含む。図5およびブロック図502aにおいて理解し易くするために、図502b〜図502e内および図面全体におけるセル508aおよび類似のセルは、インタロック状態のツリーデータストアにおいて、関連付けられたasCaseListを指すポインタを実際には示すものの、その代わりに、関連付けられたasCaseListの最新の内容を示す。同様に、図502b〜図502e内のセル510aおよび類似のセルは、インタロック状態のツリーデータストアにおいて、関連付けられたasResultListを指すポインタを実際には示すものの、その代わりに、関連付けられたasResultListの最新の内容を示す。
asCaseLists(asCaseList508a等)およびasResultLists(asResultList510a等)は、リンクされたリストして実現され得る。別の実施例において、asCaseLists(asCaseList508a等)およびasResultLists(asResultList510a等)は、以下のものに限定されないがアレイ等に対し、設定可能なサイズの連続する記憶場所のブロックとして割当てられ、asCaseListを指すポインタが、asCaseListメモリブロックの開始位置に設定され、asResultListを指すポインタが、asResultListメモリブロックの開始位置に設定される。
ステップ604において、入力が受信される。この発明の一実施例において、「最新のポインタ」の値は「以前のポインタ」に設定され、「最新のポインタ」は、この入力に設定される。所定の例において、受信した入力は「C」である。ステップ604において、この入力の妥当性が検査される。所定の例において、このことは、「C」が有効なデータセット要素であるかどうか確認するステップを含む。「C」は実際に有効な要素であり、メモリ104内の位置15に位置付けられる。
ステップ606において、ノードがそれまでに存在していない場合、インタロック状態のツリーデータストア内にノードが作成されて初期化され、メモリ内の或る位置に記憶される。この例では、インタロック状態のツリーデータストア208内にノード312が作成されてBOT-Cを表わし、ノードBOT-C312のケースポインタ、結果ポインタ、asCaseListを指すポインタ、asCaseList、asResultListを指すポインタ、およびasResultListがヌルに初期化され、BOT-Cはメモリ104の位置140に記憶される。
ステップ608において、この発明の一実施例に従い、ステップ606で作成されたノードに対するリンクが形成される。新規のノードは、新規のノードのケースポインタを以前のポインタの値に設定し、かつ、新規のノードの結果ポインタを最新のポインタの値に設定することによって規定される。図5bのインタロック状態のツリーデータストア500bは、リンクの作成後のインタロック状態のツリーデータストア208を示す。リンクが作成された後のノードBOT302、C306、およびBOT-C312の内容をブロック図502bに示す。サブコンポーネントBOT-C312は、ノードBOT302とノードC306とのシーケンシャルな組合せにより作成される。したがって、ケースポインタおよび結果ポインタに対して以下の値が設定される。すなわち、ノードBOT-C312のケースポインタ520bは0に、すなわちメモリ104内のノードBOT302の位置に設定され、ノードBOT-C312の結果ポインタ522bは15に、すなわちメモリ104内の基本ノードC306の位置に設定される。
この発明の一実施例では、新規のノードから、この新規のノードが導出されたノードにリンクを作成することに加え、asCaseListおよびasResultListのリンクが作成される。asCaseListおよびasResultListのリンクの作成は、新規のノードが導出されたノードのリンクされたリスト、すなわちasCaseListおよびasResultListに対し、新規のノードの位置を指すポインタを追加することによって行なわれる。これらのポインタは、リストの終わりもしくはリストの始めに追加されてよく、または、リスト内のどこかに挿入されてよい。加えて、リストの数を維持することができる。たとえば、ノードのasCaseListは、最も頻繁にアクセスされる順序にポインタが維持されている、順序付けされたリストに加え、リンクされたリストの終わりにポインタが追加されるシーケンシャルなリストを含み得る。この所定の例は、1つの順序付けされたリストおよび1つのシーケンシャルなリストを例として挙げているが、この発明はそれに限定されず、リストの任意の組合せおよび数が、この発明の範囲内で企図されることが理解されるであろう。順序付けされたリストは、最後の更新、最後のアクセス、更新もしくはアクセスの頻度、または、他の任意の適切な順序付けの規則により、順序付けることができる。
新規のノードへのリンクが作成される。すなわち、新規のノードを指すポインタが、以前のポインタのasCaseListおよび最新のポインタのasResultListに追加される。この例では、ノードBOT-C312のCaseポインタ520bをノードBOT302の位置、すなわち位置0(ブロック図503bのリンク320a)に設定することと、ノードBOT-C312の位置、すなわち位置140を指すポインタをasCaseList508bに追加することによってノードBOT302のasCaseList508b(リンク320b)を更新することとにより、双方向リンク320が生成される。Caseポインタ520aが設定される。なぜなら、ノードBOT302がノードBOT-C312の定義ノードの1つであるためである。asCaseList508bが更新される。なぜなら、ノードBOT302が、ノードBOT-C312がそこから作成された2つのノードのうちの第1のものである、ノードBOT-C312の合成で用いられるためである。asCaseList508bは現時点でヌル集合を含む(すなわち、asCaseList508bは空である)。ノードBOT-C312がメモリ104内の位置140に位置付けられているため、asCaseList508bはヌルから140に更新される。asCaseList508bが非ヌル集合を含んでいたならば、ノードBOT-C312の位置140は、上で論じた方法の1つにより、asCaseList508bに追加されていたであろう。
同様に、ノードBOT-C312のResultポインタ522bをノードCの位置、すなわち位置15に設定すること(ブロック図503bのリンク328a)と、ノードBOT-C312の位置を指すポインタをasResultList518bに追加することによって基本ノードC306のasResultList518b(リンク328b)を更新することとにより、双方向リンク328が生成される。Resultポインタ522bが設定される。なぜなら、ノードC306がノードBOT-C312の定義ノードの1つであるためである。asResultList518bが更新される。なぜなら、ノードC306が、ノードBOT-C312がそこから形成された2つのノードのうちの第2のものを構成するためである(したがって、リンク328bはasResultリンクと呼ばれる)。asResultList518bは現時点でヌル集合を含む(すなわち、asResultList518bは空である)。ノードBOT-C312がメモリ104内の位置140に位置付けられているため、asResultList518bはヌルから140に更新される。asResultList518bが非ヌル集合を含んでいたならば、ノードBOT-C312の位置140は、上で論じた方法の1つにより、asResultList518bに追加されていたであろう。
この時点で、図5bに示すデータストア、すなわち、インタロック状態のツリーデータストア500bが作成される。同じ構造が、図5bのブロック図503bにおいてより詳細に示される。リンク320bが、ノードBOT-C312の位置を指すポインタを表わし、asCaseList508bにおいてノードBOT302に対する第1の要素であることと、リンク328bがノードBOT-C312の位置を指すポインタを表わし、ノードC306のasResultList518bにおける第1の要素であることとに注目されたい。リンク320aは、ノードBOT-C312からその第1の部分、すなわちノードBOT302を指すポインタを表わし、リンク328aは、ノードBOT-C312からその第2の部分、すなわちノードC306を指すポインタを表わす。
ステップ610において、さらなる入力が存在するか否かが判断される。この場合、さらなる入力が存在するため、処理はステップ604に戻る。ステップ604において入力が受信される。所定の例において、受信した入力は「A」である。ステップ604において、入力の妥当性が検査される。所定の例において、このことは、「A」が有効かつ基本のデータセットであるかどうかを確認するステップを含む。「A」は実際に有効な要素であり、メモリ104内の位置5に位置付けられる。
ステップ606において、ノードがそれまでに存在していない場合、インタロック状態のツリーデータストア内にノードが作成されて初期化され、メモリ内の或る位置に記憶される。この例では、インタロック状態のツリーデータストア208内のノード314が作
成されてBOT-C−Aを表わし、ノードBOT-C-A314のケースポインタ、結果ポインタ、asCaseListを指すポインタ、asCaseList、asResultListを指すポインタ、およびasResultListがヌルに初期化され、ノードBOT-C-A314がメモリ104内の位置145に記憶される。
ステップ608において、この発明の一実施例に従い、ステップ606で作成されたノードに対するリンクが作成される。図5cは、リンクが作成された後のインタロック状態のツリーデータストア500cを示す。ノードBOT302、C306、A304、BOT-C312およびBOT-C-A314の内容をブロック図502cに示す。サブコンポーネントBOT-C-A314は、ノードBOT-C312とノードA304とのシーケンシャルな組合せにより作成される。したがって、ケースポインタおよび結果ポインタに対して以下の値が設定される。すなわち、ノードBOT-C-A314のケースポインタ528cは140に、すなわちメモリ104内の基本ノードBOT-C312の位置に設定され(リンク322a)、ノードBOT-C-A314の結果ポインタ530cは5に、すなわちメモリ104内の基本ノードA304の位置に設定される(リンク330a)。
双方向リンク322は、Caseポインタ528cを140に設定し(リンク322a)、かつ、メモリ104内のノードBOT-C-A314の位置を指すポインタをノードBOT-C312のasCaseList524cに追加する(リンク322b)ことにより生成される。asCaseList524cが更新される。なぜなら、ノードBOT-C312が、ノードBOT-C-A314がそこから作成された2つのノードのうちの第1のものを構成するためである。ノードBOT-C312のasCaseList524cは、リンク322bが作成される前にヌル集合を含んでいた(すなわち、asCaseList524cは空であった)。ノードBOT-C-A314がメモリ104内の位置145に見出されるため、asCaseList524cはヌルから145に更新される。asCaseList524cが非ヌル集合を含んでいたならば、ノードBOT-C-A314の位置145は、上で論じた方法の1つにより、asCaseList524cに追加されていたであろう。
同様に、ノードBOT-C-A314のResultポインタ530cを5に設定することと、ノードBOT-C-A314の位置を指すポインタをノードA304のasResultList542cに追加することによって基本ノードA304のasResultList542cを更新することとにより、双方向リンク330が生成される。asResultList542cが更新される。なぜなら、ノードA304が、ノードBOT-C-A314がそこから作成された2つのノードのうちの第2のものを構成するためである。asResultList542cは、リンク330bが作成される前にヌル集合を含んでいた(すなわち、asResultList542cは空であった)。ノードBOT-C-A314がメモリ104内の位置145に位置付けられているため、asResultList542cはヌルから145に更新される。asResultList542cが非ヌル集合を含んでいたならば、ノードBOT-C-A314の位置145は、上で論じた方法の1つにより、asResultList542cに追加されていたであろう。
この時点で、図5cに示すデータストア、すなわち、インタロック状態のツリーデータストア500cが形成される。同じ構造が、図5cのブロック図503cに、より詳細に示される。リンク322bがノードBOT-C-A314の位置を指すポインタを表わし、位置145がasCaseList524cにおいてノードBOT-C312に対する第1の要素であることと、リンク330bがノードBOT-C-A314の位置を指すポインタを表わし、145がasResultList542cにおいてノードA304に対する第1の要素であることとに注目されたい。リンク322aは、ノードBOT-C-A314からその第1の部分、すなわちノードBOT-C312を指すポインタを表わし、リンク330aは、ノードBOT-C-A314からその第2の部分、すなわちノードA304を指すポインタを表わす。
ステップ610において、さらなる入力が存在するか否かが判定される。この場合、さ
らなる入力が存在するため、処理はステップ604に戻る。ステップ604において、入力が受信される。所定の例において、受信された入力は「T」である。ステップ604において入力の妥当性が検査される。所定の例において、このことは、「T」が有効なデータセット要素であるかどうかを確認するステップを含む。「T」は実際に有効なデータセット要素であり、メモリ104内の位置100に位置付けられる。
ステップ606において、ノードがこれまでに存在していない場合、インタロック状態のツリーデータストア内にノードが作成されてメモリ内の或る位置に初期化され、記憶される。この例では、インタロック状態のツリーデータストア208内にノード316が作成されてノードBOT-C-A-T316を表わし、ケースポインタ、結果ポインタ、asCaseListを指すポインタ、asCaseList、asResultListを指すポインタ、およびasResultListがヌルに初期化され、ノードBOT-C-A-T316がメモリ104内の位置150に記憶される。
ステップ608において、ステップ606で作成されたノードに対するリンクが作成される。図5dは、リンクが作成された後のインタロック状態のツリーデータストア500dを示す。ノードBOT302、C306、A304、T308、BOT-C312、BOT-C-A314、およびBOT-C-A-T316の内容をブロック図502dに示す。サブコンポーネントBOT-C-A-T316は、ノードBOT-C-A314とノードT308とのシーケンシャルな組合せにより作成される。したがって、ケースポインタおよび結果ポインタに対する以下の値が、ノードBOT-C-A-T316に対して設定される。すなわち、ケースポインタ544dは145に、すなわちメモリ104内のノードBOT-C-A314の位置に設定され、結果ポインタ546dは100に、すなわちメモリ104内の基本ノードT308の位置に設定される。
ケースポインタ544dを145に設定し、かつ、メモリ104内のノードBOT-C-A314(位置150)の位置を指すポインタをノードBOT-C-A314のasCaseList532dに追加することにより、双方向リンク324が生成される。asCaseList532dが更新される。なぜなら、ノードBOT-C-A314が、ノードBOT-C-A-T316がそこから作成された2つのノードのうちの第1のものを構成するためである。ノードBOT-C-A314のasCaseList532dは、リンク324が作成される前にヌル集合を含んでいた。BOT-C-A-Tがメモリ104内の位置150に見出されるため、asCaseList532dは、ヌルから150に更新される。ノードBOT-C-A314のasCaseList532dがデータを含んでいたならば、150は、上で概略的に説明した方法の1つにより、リストに追加されていたであろう。
同様に、結果ポインタ546dを100に設定することと、ノードBOT-C-A-T316の位置を指すポインタをasResultList558dに追加することによって基本ノードT308のasResultList558dを更新することとにより、双方向リンク332が生成される。asResult List558dが更新される。なぜなら、ノードT308が、ノードBOT-C-A-T316がそこから作成された2つのノードのうちの第2のものを構成するためである。基本ノードT308のasResultList558は、リンク332が作成される前にヌル集合を含んでいたため、このヌル集合は150に、すなわちメモリ104内のノードBOT-C-A-T316の位置に置き換えられる。asResultList558dがデータを含んでいたならば、150は、上で概略的に説明した方法の1つにより、リストに追加されていたであろう。
この時点で、図5dに示すデータストア、すなわち、インタロック状態のツリーデータストア500dが作成される。インタロック状態のツリーデータストア500dのより詳細な表示、図5cに示されるその類似物、インタロック状態のツリーデータストア500cに対するブロック図503cが示され得ることを、当業者は認識するであろう。
ステップ610において、さらなる入力が存在するか否かが判定される。この場合、さらなる入力が存在するため、プロセスはステップ604に戻る。ステップ604において
入力が受信される。所定の例において、受信された入力は「 」または空白文字である。ステップ604において、入力の妥当性が検査される。所定の例において、このことは、空白文字が有効かつ基本のデータセットであるかどうかを確認するステップを含む。空白文字は実際に有効な要素であり、この場合、語「CAT」の終わりを示すデリミタである。したがって、この発明の一実施例において、位置135に位置付けられたノードEOT310はサブコンポーネントBOT-C-A-T316に追加され、この場合は語であるエンドプロダクトまたはモナドを作成する。
ステップ606において、ノードがこれまでに存在していない場合、インタロック状態のツリーデータストア内にノードが作成されて初期化され、メモリ内の或る位置に記憶される。この例において、インタロック状態のツリーデータストア208内のノード318が作成されてノードBOT-C-A-T-EOT318を表わし、ノードBOT-C-A-T-EOT318のケースポインタ、結果ポインタ、asCaseListを指すポインタ、asCaseList、asResultListを指すポインタ、およびasResultListがヌルに初期化され、ノードBOT-C-A-T-EOT318は、たとえばメモリ104内の位置155に記憶される。
ステップ608では、ステップ606において作成されたノードに対するリンクが作成される。図5eは、リンクが作成された後のインタロック状態のツリーデータストア500eを示す。リンクが作成された後のノードBOT302、C306、A304、T308、EOT310、BOT-C312、BOT-C-A314、BOT-C-A-T316、およびBOT-C-A-T-EOT318の内容を、ブロック図502eに示す。エンドプロダクト318(BOT-C-A-T-EOT)は、ノードBOT-C-A-T316とノードEOT310とのシーケンシャルな組合せにより作成される。したがって、ノードBOT-C-A-T-EOT318に対するケースポインタおよび結果ポインタに対する以下の値が設定される。すなわち、エンドプロダクトBOT-C-A-T-EOT318のケースポインタ568eは150に、すなわち、メモリ104内のノードBOT-C-A-T316の位置に設定され、エンドプロダクトBOT-C-A-T-EOT318の結果ポインタ570eは135に、すなわちメモリ104内の基本ノードEOT135の位置に設定される。
エンドプロダクトBOT-C-A-T-EOT318のCaseポインタ568eを150に設定することと、メモリ104内のノードBOT-C-A-T316の位置を指すポインタを、ノードBOT-C-A-T316のasCaseList548eに追加することとにより、双方向リンク326が生成される。asCaseList548eが更新される。なぜなら、ノードBOT-C-A314が、ノードBOT-C-A-T316がそこから形成された2つのノードのうちの第1のものを構成するためである。ノードBOT-C-A-T316のasCaseList548eは、リンク334が作成される前にヌル集合を含んでいた(すなわち、asCaseList548eは空であった)。ノードBOT-C-A-T316がメモリ104内の位置155に見出されるため、ノードBOT-C-A-T316のasCaseList548eは、ヌルから155に更新される。asCaseList548eが非ヌル集合を含んでいたならば、ノードBOT-C-A-Tの位置155は、上で論じた方法の1つにより、asCasseList548eに追加されていたであろう。
同様に、エンドプロダクトBOT-C-A-T-EOT318のResultポインタ570eを135に設定することと、ノードBOT-C-A-T-EOT318の位置を指すポインタをノードEOT310のasResult List566eに追加することによってノードEOT310のasResultList566eを更新することとにより、双方向リンク334が生成される。asResultList566eが更新される。なぜなら、ノードEOT310が、ノードBOT-C-A-T-EOT318がそこから作成された2つのノードのうちの第2のノードを構成するためである(したがって、リンク334はasResultリンクと呼ばれる)。asResultList566eは、リンク334が作成される前にヌル集合を含んでいた(すなわち、asResultList566eは空であった)。ノードBOT-C-A-T-EOT318がメモリ104内の位置155に位置付けられているため、asResultList566eはヌルから155に更新される。asResultList566eが非ヌル集合を含ん
でいたならば、ノードBOT-C-A-T-EOT318の位置155は、上で論じた方法の1つにより、asResultList566eに追加されていたであろう。
この時点で、図5eに示すデータストア、すなわちインタロック状態のツリーデータストア500eが作成される。インタロック状態のツリーデータストア500eのより詳細な表示、図5cに示されるその類似物、およびインタロック状態のツリーデータストア500cに対するブロック図503cが示され得ることを、当業者は認識するであろう。
ステップ610において、さらなる入力が存在するか否かが判定される。この場合、さらなる入力が存在しないため、プロセスはステップ612で終了する。
次に、入力204が「CAT」ではなく「CAT TAB」を含むものと考えられたい。上述のプロセスが辿られる。「CAT」までの入力が処理されると、図5eのインタロック状態のツリーデータストア500eが作成される。しかしながら、ステップ610においてさらなる入力が存在するためにプロセスは続行し、結果的に図7aのインタロック状態のツリーデータストア700aを生じる。対応するノードBOT302、C306、A304、T308、B718、EOT310、BOT-C312、BOT-C-A314、BOT-C-A-T316、BOT-C-A-T-EOT318、BOT-T703、BOT-T-A705、BOT-T-A-B707、およびBOT-T-A-B-EOT709の内容を、ブロック図702aに示す。ノードBOT-T703、BOT-T-A705、BOT-T-A-B707、およびBOT-T-A-B-EOT709がインタロック状態のツリーデータストア500eに追加され、インタロック状態のツリーデータストア700aを作成することに注目されたい。
このプロセスにおいて、asCaseリンク701、704、706、および708が作成され、asResultリンク710、712、714、および716が作成された。ノードBOT-T703のasCaseポインタ720fは0に、すなわちノードBOT302の位置に設定される。ノードBOT-T703のasResultポインタ722fは100に、すなわちノードT308の位置に設定される。ノードBOT-T-A705のasCaseポインタ728fは170に、すなわちノードBOT-T703の位置に設定される。ノードBOT-T-A705のasResultポインタ730fは5に、すなわちノードA304の位置に設定され、以下同様である。
asCaseリンク701は、ノードBOT302のasCaseList508fに170を、すなわちBOT-T703の位置を追加することによって作成され、それによってasCaseList508fは、140、すなわちBOT-C312の位置と、170、すなわちBOT-T703の位置との両方を含む。asCaseリンク704は、ノードBOT-T703のasCaseList724fに175を、すなわちBOT-T-Aの位置を追加することによって作成される。asCaseリンク706は、ノードBOT-T-A705のasCaseList732fに180を、すなわちBOT-T-A-Bの位置を追加することによって作成され、以下同様である。
asResultリンク710は、ノードT308のasResultList558fに170を、すなわちBOT-T703の位置を追加することによって作成され、それによってasResultList558fは、150、すなわちノードBOT-C-A-Tの位置と、170、すなわちBOT-T703の位置との両方を含む。asResultリンク712は、ノードA304のasResultList542fに175を、すなわちBOT-T-Aの位置を追加することによって作成され、それによってasResultList542fは、145、すなわちノードBOT-C-A314の位置と、175、すなわちBOT-T-Aの位置との両方を含む。asResultリンク714は、ノードB718のasResultList742fに180を、すなわちノードBOT-T-A-B707の位置を追加することによって作成される。ノードB718のasResultList742fが以前にヌルであったため、ノードB718のasResultList742fは、180、すなわちノードBOT-T-A-B707の位置のみを含む。asResultリンク716は、ノードEOT310のasResultList566fに185を、
すなわちBOT-T-A-B−EOT709の位置を追加することによって作成され、それによってasResultList566fは、155、すなわちノードBOT-C-A-T-EOT318の位置と、185、すなわちBOT-T-A-B-EOT185の位置との両方を含む。
次に、入力204が「CAT」ではなく「CATS CATHODE」を含むものと考えられたい。上述のプロセスが辿られる。入力「CAT」が処理されると、図5dのインタロック状態のツリーデータストアが作成される。ステップ610において、さらなる入力が見出されるため、プロセスは続行する。入力「CATS」を処理した後に、図8のインタロック状態のツリーデータストア800aが生成される。さらなる入力が見出される。「CATHODE」が処理されるのに伴い、BOT-C、BOT-C-A、およびBOT-C-Aに対する新規のノードは作成されない。なぜなら、それらが既に存在しているためである。さらなる入力「SCATHODE」が処理され、図8のインタロック状態のツリーデータストア800bを生じる。結果的に得られたツリーが自己組織化しているため、生じるインタロック状態のツリーデータストアの構造が、受信した入力によって規定され、受信した入力に従属することを、当業者は認識するであろう。
次に、入力204が、「CAT」ではなく「CATS ARE FURRY.」を含むものと考えられたい。図9aは、この発明の一実施例において生成されたインタロック状態のツリーデータストア900を示す。入力内にインジケータ、たとえばこの例では、句の終わりまたは文の終わりのインジケータ(「FURRY」の後のピリオド等)が存在することにより、1つのレベルのエンドプロダクト(BOT-C-A-T-EOT908、BOT-A-R-E-EOT906、BOT-F-U-R-R-Y-EOT904)が組合さって次のレベルのサブコンポーネントになり得る。すなわち、1つのレベル(レベル1 910等)のエンドプロダクトノード(「CATS」、「ARE」、および「FURRY」等の語)が、次のレベル(レベル2 912等)のデータセット要素を表わすルートノードとなり得る。したがって、ノード「BOT-CATS-ARE-FURRY-EOT」902は、文「CATS ARE FURRY.」を表わす単一のノードである。
この発明の一実施例において、より高いレベルのデータセット要素を表わすノードは、データか、またはデータもしくは概念の表現を含まない。すなわち、より高いレベルのデータセット要素を表わす基本ルートノードは、より低いレベルのノードを指すポインタのみを含む。たとえば図9bは、図9aにおけるいくつかのノードの内容を示す。レベル1
910のノードBOT-C-A-T-S-EOTが、レベル2 912の基本ルートノードとして使用されていること(ノード908のasResultList914が300を、すなわちノードBOT-CATS916の位置を含み、ノードBOS-CATS916のasResultポインタ918が200を、すなわちノードBOT-C-A-T-S-EOT908の位置を含む)、そして以下同様であることに注目されたい。
任意の適切な数のレベルが生成され得る。たとえば、テキストの場合、レベルは、文字、語、文、段落、章、本、ライブラリ等を表わし得る。例示的な図面では2つのレベルのインタロック状態のツリーデータストア(レベル1 910およびレベル2 912)が示されているが、この発明がそれに限定されないことが理解されるであろう。任意の数のレベルのインタロック状態のツリーデータストアを構築することができる。この例の母集団がテキストであり、すなわち、文字の組合せが語(1つのレベルのエンドプロダクト)を形成するため、この発明のこの実施例における語の組合せの結果は、句または文(別のレベルのエンドプロダクト)である。文を組合せて段落を形成することができ、段落を組合せて章または節等を形成することができる。
入力の母集団に依存して、エンドプロダクトが、語、句、文等以外のエンティティを表わし得ることが、さらに認識されるであろう。多くの例の中から1つを提示すると、入力が、染色体を構成するアミノ酸の配列である場合、1つのエンドプロダクトは、遺伝子ま
たは対立遺伝子を表わし得る。
次に、入力204が以下のもの、すなわち、
ビル 火曜日 40 販売 PA(Bill Tuesday 40 sold PA)
ビル 月曜日 103 販売 NJ(Bill Monday 103 sold NJ)
ビル 月曜日 100 試用 PA(Bill Monday 100 trial PA)
トム 月曜日 80 販売 PA(Tom Monday 80 sold PA)
トム 月曜日 13 試用 NJ(Tom Monday 13 trial NJ)
等のデータ記録を含むものと考えられたい。
この発明の一実施例において、データセット要素は、以下のものに限定されないが空白文字等のデリミタにより分離された情報のフィールドで構成される。一実施例において、データセット要素は入力から導出されるが、上述のとおり、この発明がそれに限定されないことを理解されるであろう。これまでに入力データ内に生じたデータセット要素は、販売員の名前(ビルおよびトム)、曜日(月曜日、火曜日)、品目数(40、103、100、80、13)、状況(販売、試用)、および州(PA、NJ)である。この発明の一実施例において、図10のインタロック状態のツリーデータストア1000は、この入力から生じる。図10では、空間上の理由から、ノードの第1の部分を示していない。たとえば、ノード1002は「ビル」と表記されているが、ノード1002は実際に「BOT-Bill」を表わす。ノード1002は「火曜日」と表記されているが、ノード1004は実際に「BOT−ビル−火曜日」を表わし、以下同様である。
インタロック状態のツリーデータストアからの情報へのアクセス
インタロック状態のツリーデータストア内に記憶された情報にアクセスするための方法を図11に示す。ステップ1102において、インタロック状態のツリーデータストアから検索されるべき情報の要求が受信される。検索されるべき情報の要求は、インタロック状態のツリーアクセス機構により処理され得る形に変換され得る。ステップ1104では、示されたノードにアクセスする。ステップ1106では、適切なasCaseListおよび/またはasResultListを検索する。ステップ1108では、適切なasCaseListまたはasResultList内のポインタを辿り、所望の情報を検索する。ステップ1110では、要求された情報が収集されて返却される。
たとえば、図7aを再び参照すると、asResultリンク328、330、332、334、710、712、714、および716を含むデータストア700aを用いて、たとえば「どのノードが文字「A」を含むか?」、「どの文字が「A」に先行する/後行するか?」、「どの(またはいくつの)語が文字「A」を含むか?」、「どの語が文字「A」および「T」の両方を含むか?」、「どの語が、「T」が先行する「A」を含むか?」、および他の無数の質問等の、内容の質問に対する答えを求めることができる(理解し易くするために、この例示的な質問では特定の文字が指定されているが、その代わりに任意のデータセット要素または単位群を用いてよいことが理解されるであろう)。
たとえば、この発明の一実施例において、所望のデータセット要素を含むノードおよびエンドプロダクトは、そのデータセット要素を表わす特定のノードのasResultListに含まれるポインタを辿ることによって求めることができる。asResultListにアクセスし、リスト内の各ポインタを辿り、そのノードに関連付けられたasCaseブランチに至る。エンドプロダクトが所望される場合、asCaseブランチツリーを辿ってブランチの葉ノードに至る。
この発明の一実施例において、情報の要求は、(視点に応じて「文脈」または「焦点」のいずれとしても見ることができる)制約を指定する形をとる。たとえば、情報の要求は、制約のリストの形をとり得る。制約のリストは、入れ子状にされるか、または別個にさ
れ得る。この発明の一実施例では、列挙された各制約のasResultListが見出され、各制約についての各asResultList内の各ノードに対するブランチが見出され、これらのブランチを辿ってそれらのエンドプロダクトに至り、各制約についての各asResultList内の各ブランチに対するエンドプロダクトの共通部分が選択される。入れ子状の制約はまず、データストアを制約して1組のデータを検索することによって見出される。この1組のデータは、さらに制約されるべきデータの組として次に用いられ、以下同様である。
論理演算子は制約を規定するのに用いられてもよい。人、場所、および(AND)物を識別するノードを探している場合、ANDは、すべての人、場所および物の組の結合、すなわち、「人」、「場所」および「物」と呼ばれる要素またはルートノードによって識別可能なすべてのノード、を示す論理演算子であるだろう。インタロック状態のツリー構造がクエリを受けるとすると、「物」である(ARE)(別の論理演算子)すべての「人」および(AND)「場所」であるものは、アイテム「物」がいかに識別される場合でもそれによって応答するよう制約されるだろう。構造を構成する際に、物が決して場所を指さない場合、他のすべての「物」はクエリにおいて見出されないが、インタロック状態のツリー構造において既知であるすべての場所は見出されることとなる。人は、構造に組込まれる際に物と考えられる場合、クエリにおいても見出されることとなる。
論理演算子は、AND、OR、NOT、GreaterThan、XNOR、EqualToなどの多くの形をとることができ、また組合されてもよい。このようなすべての論理演算子およびその組合せはこの発明の範囲内で使用可能であるだろう。比較的な数式も、当然、文脈に応じて使用可能であるだろう。100台を超える車を販売したすべての販売員の検索は、たとえば、比較的な数式に応じたクエリであり得るが、この場合、その式は、100台を超える車を販売した販売員を示すものとなるだろう。
この発明の一実施例において、焦点は、返却される情報を決定する。データセット要素が文字であり、レベル1のエンドプロダクトが語を含み、レベル2のエンドプロダクトが文を含み、指定された制約が特定の文字である2レベルのデータストアの場合、焦点を「語」に指定することによって語のみが返却されることになり、焦点を「文」に指定することによって文のみが返却されることになる。第1のレベルからエンドプロダクトを検索することにより、語が返却される。こうして、「焦点」が文脈内で所望される情報の種類を識別する。第2のレベルからエンドプロダクトを検索することにより、文が返却される。一実施例では、文を検索するために、各語のasResultListを次のレベルまで辿り、指定されたブランチを辿ってそのエンドプロダクトに至り、指定された文字を含む文を検索する。
一実施例では、レベル開始インジケータをそのルートとして有するツリーを辿ることにより、制約で始まるすべてのエンドプロダクトを見出すことができる(たとえば、指定された文字で始まるすべての語を見出すことができる)。同様に、指定された制約か、または指定された位置内の指定された制約を有するすべてのエンドプロダクト(たとえば、それらの中に特定の文字を有するすべての語、または指定された列内に指定された文字を有するすべての語)を見出すことができる。同様に、レベル終了インジケータをルートとして有するツリーを辿ることにより、指定された制約で終了するすべてのエンドプロダクト(たとえば、指定された文字で終了するすべての語)を見出すことができる。複数の制約および/または焦点を指定することができる。
たとえば、文字(文字「B」等)のデータセット要素を含むツリーのasCaseブランチの第1のノードが所望されているものと仮定されたい。一実施例では、このデータ要素を表わす基本ルートノード(ノードB718等)をメモリから検索し、そのasResultList(asResultList742f等)にアクセスし、いくつかのサブコンポーネントと基本ルートノー
ド(ノードB718等)との組合せにより作成されたノードの位置が返却される。asResultList内のノードがアクセスされる。この例では、位置180がアクセスされる。この位置180は、ノードBOT-T-A-B707を保持する。したがって、ノードBOT-T-A-B707は、文字「B」の表示を含むインタロック状態のツリーデータストア700a内のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-T703、ノードBOT-T-A705、ノードBOT-T-A-B707、およびノードBOT-T-A-B−EOT709を含むブランチ)は、検索されたasCaseListがヌルになるまで、アクセスしたノードのasCaseListを繰り返し検索することにより辿られる。たとえば、データセット要素B718を含む語が「TAB」であることを判定するために、ノードBOT-T-A-B707のasCaseList740fにアクセスして位置185を検索する。位置185の内容にアクセスし、asCaseList748fを検索する。asCaseList748fがヌルポインタであるため、エンドプロダクトに到達した。
やはり図7aを参照して、文字「A」を含むすべてのasCaseブランチの第1のノードが所望されているものと仮定されたい。基本ルートノードA304をメモリから検索し、そのasResultList542fにアクセスして、位置145および175を返却する。第1の位置145にアクセスする。この第1の位置145は、ノードBOT-C-A314を含む。ノードBOT-C-A314は、文字「A」を含むデータ構造700aの第1のブランチ内の第1のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-C312、ノードBOT-C-A314、ノードBOT-C-A-T316、およびノードBOT-C-A-T-EOT318を含むブランチ)と、このブランチのasCaseリンクとが、検索されたasCaseListがヌルになるまでノードのasCaseListを繰り返し検索することによって辿られる。たとえば、データセット要素A304を含む第1の語が「CAT」であることを判定するために、ノードBOT-C-A314のasCaseList740fにアクセスし、位置145を検索する。位置145(ノードBOT-C-A314)の内容にアクセスし、asCaseList532f、すなわち150を検索する。位置150(ノードBOT-C-A-T316)の内容にアクセスし、asCaseList548f、すなわち155を検索する。位置155(ノードBOT-C-A-T-EOT318)の内容にアクセスし、asCaseList572fを検索する。asCaseList572fがヌルポインタであるため、エンドプロダクトに到達した。
次の位置175にアクセスする。この位置175は、ノードBOT-T-A705を含む。ノードBOT-T-A705は、文字「A」を含むインタロック状態のツリーデータストア700aの第2のブランチ内の第1のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-T703、ノードBOT-T-A705、ノードBOT-T-A-B707、およびノードBOT-T-A-B-EOT709を含むブランチ)と、このブランチのasCaseリンクとが、検索されたasCaseListがヌルになるまでノードのasCaseListを繰り返し検索することによって辿られる。たとえば、データセット要素A304を含む第2の語が「TAB」であると判定するために、ノードBOT-T-A-B707のasCaseList740fにアクセスして、位置185を検索する。位置185の内容にアクセスして、asCaseList748fを検索する。asCaseList748fがヌルポインタであるため、エンドプロダクトに到達した。
再び図7aを参照し、文字「A」および「T」を含むすべてのasCaseブランチの第1のノードが所望されているものと仮定されたい。上述のように、基本ルートノードA304をメモリから検索し、そのasResultList542fにアクセスして、位置145および175を返却する。第1の位置145にアクセスする。この位置145は、ノードBOT-C-A314を含む。ノードBOT-C-A314は、文字「A」を含むインタロック状態のツリーデータストア700aの第1のブランチ内の第1のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-C312、ノードBOT-C-A314、ノードBOT-C-A-T316、およびノードBOT-C-A-T-EOT318を含むブラン
チ)と、このブランチのasCaseリンクとが、検索されたasCaseListがヌルになるまでノードのasCaseListを繰り返し検索することによって辿られる。たとえば、データセット要素A304を含む第1の語が「CAT」であると判定するために、ノードBOT-C-A314のasCaseList740fにアクセスして位置145を検索する。位置145(ノードBOT-C-A314)の内容にアクセスして、asCaseList532f、すなわち150を検索する。位置150(ノードBOT-C-A-T316)の内容にアクセスして、asCaseList548f、すなわち155を検索する。位置155(ノードBOT-C-A-T-EOT318)の内容にアクセスして、asCaseList572fを検索する。asCaseList572fがヌルポインタであるため、エンドプロダクトに到達した。エンドプロダクトノードBOT-C-A-T-EOT318は、データセット要素Aを含む。
次の位置175にアクセスする。この位置175は、ノードBOT-T-A705を含む。ノードBOT-T-A705は、文字「A」を含むインタロック状態のツリーデータストア700aの第2のブランチ内の第1のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-T703、ノードBOT-T-A705、ノードBOT-T-A-B707、およびノードBOT-T-A-B−EOT709を含むブランチ)と、このブランチのasCaseリンクとが、検索されたasCaseListがヌルになるまでノードのasCaseListを繰り返し検索することによって辿られる。たとえば、データセット要素A304を含む第2の語が「TAB」であると判定するために、ノードBOT-T-A-B707のasCaseList740fにアクセスして、位置185を検索する。位置185の内容にアクセスして、asCaseList748fを検索する。asCaseList748fがヌルポインタであるため、エンドプロダクトに到達した。エンドプロダクトノードBOT-T-A-B−EOT709は、データセット要素Aを含む。
次に、基本ルートノードT308をメモリから検索し、そのasResultList558fにアクセスして、値150および170を返却する。第1の位置150にアクセスする。この位置150は、ノードBOT-C-A-T316を含む。ノードBOT-C-A-T316は、文字「T」を含むインタロック状態のツリーデータストア700aの第1のブランチ内の第1のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-C312、ノードBOT-C-A314、ノードBOT-C-A-T316、およびノードBOT-C-A-T-EOT318を含むブランチ)と、このブランチのasCaseリンクとが、検索されたasCaseListがヌルになるまでノードのasCaseListを繰り返し検索することによって辿られる。たとえば、分割できない基本単位T308を含む第1の語が「CAT」であると判定するために、ノードBOT-C-A314のasCaseList532fにアクセスして、位置145を検索する。位置145の内容(ノードBOT-C-A314)にアクセスして、asCaseList532f、すなわち150を検索する。位置150(ノードBOT-C-A-T316)の内容にアクセスしてasCaseList548f、すなわち155を検索する。位置155(ノードBOT-C-A-T-EOT318)の内容にアクセスして、asCaseList572fを検索する。asCaseList572fがヌルポインタであるため、エンドプロダクトに到達した。エンドプロダクトノードBOT-C-A-T-EOT318は、データセット要素Tを含む。
次の位置170にアクセスする。この位置170は、ノードBOT-T703を含む。ノードBOT-T703は、文字「T」を含むインタロック状態のツリーデータストア700aの第2のブランチ内の第1のノードである。形成されたエンドプロダクトを見出すために、asCaseブランチ(たとえばこの例において、ノードBOT-T703、ノードBOT-T-A705、ノードBOT-T-A-B707、およびノードBOT-T-A-B-EOT709を含むブランチ)と、このブランチのasCaseリンクとが、検索されたasCaseListがヌルになるまでノードのasCaseListを繰り返し検索することによって辿られる。たとえば、データセット要素T308を含む第2の語が「TAB」であると判定するために、ノードBOT-T-A-B707のasCaseList740fにアクセスして、位置185を検索する。位置185の内容にアクセスして、asCaseList
748fを検索する。asCaseList748fがヌルポインタであるため、エンドプロダクトに到達した。エンドプロダクトノードBOT-T-A-B-EOT709は、データセット要素Tを含む。したがって、AおよびTの両方を含むエンドプロダクトは、Aを含むエンドプロダクトの組とTを含むエンドプロダクトの組との共通部分、すなわちこの場合、BOT-C-A-T-EOT318およびBOT-T-A-B-EOT709を含む。
この発明の一実施例において、検索された情報は、表示または印刷される。検索された情報を表示または印刷するために、asCaseツリーがエンドプロダクトから開始部分(BOT)まで逆方向に辿られる。asCaseツリーに沿った各ノードにおいてResultポインタ(ノードが導出された第2の部分を指す)を用いて、基本ルートノードが何を表すかを判断する。インタロック状態のツリーデータストアが2つ以上のレベルを含む場合、Resultポインタは、より低いレベルのエンドプロダクトを指し、最下位のレベルの基本ルートノードが検索されるまで同じプロセスが辿られなければならない。
次に、図10を参照して、火曜日に販売されたユニットの総数が所望されるものと仮定されたい。全データストア内の全ノードをトラバースする代わりに、この発明の一実施例において、この情報を検索することにより、基本ルートノード1006および1008のasResultListの検索のみが必要になることが、当業者には明らかであろう。ブランチ5 1010がトラバースされる。なぜなら、ノード1004が、火曜日1006を表わす基本ノードにより指されており、かつ、ノード1026が、販売1008を表わす基本ノードにより指されているためである。そして、ブランチ4 1012がトラバースされる。なぜなら、ノード1028が、販売1008を表わす基本ノードにより指されているためである。ブランチ1 1015、ブランチ2 1014、およびブランチ3 1013は、トラバースされなくてよい。基本ノード1006および1008により指された以下のブランチから返却されたエンドプロダクトの組の共通部分は、ビルが火曜日にPAで40個販売したことを表わすノード1030を含む。
販売されたユニット数は、ノード1024から、数40(図示せず)を表わすルートノードまでポインタを辿ることによって求めることができる。このステップが、エンドプロダクトの共通部分が見出された後に実行され得ること、または、ブランチがトラバースされるのに伴ってこの情報が検索および記憶され得ることが理解されるであろう。
ここで、図14A〜図14Eを参照すると、図12Bのカウントフィールドなどのカウントフィールドを有するインタロック状態のツリーデータストアによって表わされるデータの集合を評価するための方法が示される。
図14Aにおいては、タスク40aは、我々が述べてきたインタロック状態のツリー構造のデータストアからの何らかの所望のデータを評価することである。これを行なうために、我々はまず、関連する文脈を決定する(40b)必要がある。これは図14Bで説明される。関連する文脈41aは所望の値を選択する41bことによって始まるが、ここで、このような値を有するルートノードが識別される。選択された値しか持たない次のすべての経路が発見される。好ましい実施例においては、当業者が認識するように、ステップ41d、すなわち、一致しない値を有する経路を備えたすべての経路を無視するステップはさまざまな方法でステップ41cと組合されて、プロセスをより効率的にするが、このような組合せは、必然的にデータストア内のデータおよび値の種類に依存することとなるので、これらはここでは別個のステップとして例示される。
文脈の決定40bの後、次のステップは、クエリの性質に応じて、焦点もしくは位置またはこれらの両方を決定する40c。
図14Dにおいては、位置が、現在の位置のノードの値に関連するルートノードを発見する42bことによって決定される42aことが分かる。
図14Cにおいては、焦点の決定40cは、値についての焦点制約リストを選択し、これにより、関連するルートノードを識別する43bことによってなされる。
図14Eにおける文脈に戻る(かまたは当該文脈と境を接する区域内に留まる)と、我々は、数を合計する44c前に、クエリによって決定された焦点および/または位置には存在しない、文脈におけるすべての数を無視すること44bを確実にする44a。
上述の方法およびシステムは、コンピュータ読取可能な媒体、たとえばフロッピー(登録商標)ディスケット、CD-ROM、DVD-ROM、DVD-RAM、ハードディスクドライブ、または他の任意の機械読取可能な記憶媒体に記憶されたプログラムコード(すなわち命令)の形で実現され得る。ここでは、プログラムコードがコンピュータ等の機械にロードされて、この機械により実行されると、この機械が、この発明を実施するための装置となる。この発明は、何らかの伝送媒体を介して、たとえば電気配線もしくは布線を介して、光ファイバ経由で、インターネット(Internet)もしくはイントラネットを含むネットワークを介して、または、他の任意の形の伝送を介して伝送されるプログラムコードの形で実施することもでき、この場合、プログラムコードがコンピュータ等の機械により受信され、この機械にロードされてこの機械により実行されると、この機械が、この発明を実施するための装置となる。プログラムコードが汎用プロセッサで実行されると、プロセッサと組合さって、特定の論理回路と同様に作動する一意の装置を提供する。プログラムコードは、高水準のプログラミング言語、たとえばC、C++、またはJAVA(登録商標)で実行され得る。代替的に、プログラムコードは、アセンブリ言語またはマシン言語で実行され得る。いずれの場合も、この言語はコンパイル型言語か、またはインタプリタ型言語であり得る。
上述の例が単に説明のために提示されており、この発明の限定として考えられるべきではないことに注意されたい。たとえば、インタロック状態のツリーデータストアは、オブジェクト指向の技術、手続き技術、それらの混成技術、または他の任意の適切な手法を用いて実施され得る。さらに、示した実施例は、メモリ内に記憶されたデータセット要素を示しているが、この機能が多くの異なる方法で実施され得ることを、当業者は理解するであろう。たとえばこの発明は、遠隔に配置された複数の機械に記憶された多くの異なる母集団のデータセット要素の、多くの異なる組を用いることを企図する。
この発明の局面が実現され得る例示的なコンピューティング環境を示す図である。 この発明の一実施例に従ったインタロック状態のツリーデータストアからデータを生成し、かつこれにアクセスするための例示的なシステムを示す図である。 インタロック状態のツリーデータベースから情報を生成しかつこれにアクセスするための例示的な方法を示す図である。 この発明の一実施例に従った、図3aの例示的なインタロック状態のツリーデータストアを示すより詳細な図である。 この発明の一実施例に従った、図3aのインタロック状態のツリーデータストアの例示的なノードを示すより詳細な図である。 この発明の一局面に従った、図3aのインタロック状態のツリーデータストアのリンクされたリストを示す図である。 この発明の一実施例に従ったメモリに記憶される図2の例示的なデータセット要素の組を示す図である。 図2のインタロック状態のツリーと、インタロック状態のツリーがこの発明の一実施例に従って生成される場合のインタロック状態のツリーのノードの対応する内容とを示す図である。 図2のインタロック状態のツリーと、インタロック状態のツリーがこの発明の一実施例に従って生成される場合のインタロック状態のツリーのノードの対応する内容とを示す図である。 図2のインタロック状態のツリーと、インタロック状態のツリーがこの発明の一実施例に従って生成される場合のインタロック状態のツリーのノードの対応する内容とを示す図である。 図2のインタロック状態のツリーと、インタロック状態のツリーがこの発明の一実施例に従って生成される場合のインタロック状態のツリーのノードの対応する内容とを示す図である。 図2のインタロック状態のツリーと、インタロック状態のツリーがこの発明の一実施例に従って生成される場合のインタロック状態のツリーのノードの対応する内容とを示す図である。 この発明の一局面に従ったインタロック状態のツリーを生成する例示的なプロセスを示すフロー図である。 この発明の一実施例に従った別のインタロック状態のツリーデータストアおよび対応するノードを示す図である。 この発明の一局面に従った図7aのインタロック状態のツリーデータストアのリンクされたリストを示す図である。 この発明の実施例に従った他のインタロック状態のツリーデータストアを示す図である。 この発明の一実施例に従った別のインタロック状態のツリーデータストアを示す図である。 この発明の一実施例に従った図9aのインタロック状態のツリーデータストアのノードの例示的な内容を示す図である。 この発明の一実施例に従った別のインタロック状態のツリーデータストアを示す図である。 この発明の一実施例に従ったインタロック状態のツリーデータストアからのデータにアクセスする例示的なプロセスを示すフロー図である。 少なくとも1つの付加的なフィールドを有する例示的なインタロック状態のツリーデータストアを示す詳細図である。 少なくとも1つの付加的なフィールドを有する例示的なインタロック状態のツリーデータストアを示す詳細図である。 この発明の好ましい実施例に従った最も複雑さの少ないインタロック状態のツリーデータストアを示す図である。 フローチャートを示す図である。 フローチャートを示す図である。 フローチャートを示す図である。 フローチャートを示す図である。 フローチャートを示す図である。

Claims (24)

  1. ツリーベースのデータストアを生成するためのシステムであって、
    プロセッサと、
    プロセッサに結合されたメモリと、
    少なくとも1つのレベルのツリーベースのデータストアを作成するためのツリーベースのデータストアジェネレータとを含み、少なくとも1つのレベルのツリーベースのデータストアは、第1のルートおよび複数のノードのうち少なくとも1つのノードを含む第1のツリーと、第2のルートおよび第1のツリーの少なくとも1つのノードを含む第2のツリーと、第3のルートおよび第1のツリーの複数のノードのうちの少なくとも1つを含む少なくとも第3のルートとを含む、システム。
  2. ノードを含み、前記ノード間にカウントフィールドとリンクとを含むインタロック状態のツリーデータストアによって表わされるデータの集合を評価する方法であって、前記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、他のルートノードを含み得、前記ノードはさらに、少なくとも1つの思考の終わりノードと、少なくとも1つのサブコンポーネントノードと、少なくとも1つのエンドプロダクトノードとを含み、asResultおよびasCaseリンクが存在し、前記asResultリンクはルートノードと他のノードとの間を指し、前記asCaseリンクは少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、前記方法は、
    前記データストア内の文脈とその対応する値とを決定するステップと、
    前記文脈内の焦点とその対応する値とを決定するステップと、
    前記文脈および前記焦点の対応する値を用いて、前記文脈内における前記焦点の発生の確率を計算するステップとを含む、方法。
  3. 文脈およびその対応する値を決定する前記ステップは、
    前記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、前記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、前記ステップはさらに、
    少なくとも1つのルートノードのasResultリストから少なくとも1つのルートノードの対応するサブコンポーネントノードにトラバースし、次いで、前記対応するサブコンポーネントノード間のasCaseリンクを前記サブコンポーネントノードの対応する各エンドプロダクトノードへトラバースすることにより、前記少なくとも1つのルートノードからエンドプロダクトノードによる1つ以上の経路を識別するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、方法。
  4. 文脈およびその対応する値を決定する前記ステップは、
    前記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、前記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、前記ステップはさらに
    前記経路に沿ったCaseリンクを用いてすべての起り得るエンドプロダクトノードから主ルートの方にトラバースして戻ることにより、ルートノードを配置し前記ルートノードを前記少なくとも1つのルートノードと比較するためにそのResultリンクを用いる各サブコ
    ンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、請求項2に記載の、データの集合を評価する方法。
  5. ノードを含み、前記ノード間にカウントフィールドとリンクとを含むインタロック状態のツリーデータストアによって表わされるデータの集合を評価する方法であって、前記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、他のルートノードを含み得、前記ノードはさらに、少なくとも1つの思考の終わりノードと、少なくとも1つのサブコンポーネントノードと、少なくとも1つのエンドプロダクトノードとを含み、asResultおよびasCaseリンクが存在し、前記asResultリンクはルートノードと他のノードとの間を指し、前記asCaseリンクは少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、前記方法はさらに、
    前記データセット内の文脈とその対応する値とを決定するステップと、
    文脈の各経路に沿って位置を決定するステップと、
    前記文脈内の焦点とその対応する値とを決定するステップと、
    前記文脈内における経路に沿って、前記位置とエンドプロダクトとの間の前記焦点の発生の確率を計算するステップとを含む、方法。
  6. 文脈の各経路に沿って位置を決定するステップは、
    ルートノードまたは基本ルートノードから前記インタロック状態のツリーデータストアのルートノードを選択し、文脈の各経路において、前記ルートノードまたは基本ルートノードのasResultリストからその対応するサブコンポーネントノードへトラバースするステップを含む、請求項5に記載の、データの集合を評価する方法。
  7. 文脈およびその対応する値を決定する前記ステップは、
    前記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、前記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、前記ステップはさらに、
    少なくとも1つのルートノードのasResultリストから少なくとも1つのルートノードの対応するサブコンポーネントノードにトラバースし、次いで、前記対応するサブコンポーネントノード間のasCaseリンクを前記サブコンポーネントノードの対応する各エンドプロダクトノードへトラバースすることにより、前記少なくとも1つのルートノードからエンドプロダクトノードによる1つ以上の経路を識別するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、請求項5に記載の、データの集合を評価する方法。
  8. 文脈およびその対応する値を決定する前記ステップは、
    前記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、前記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、前記ステ
    ップはさらに、
    前記経路に沿ったCaseリンクを用いてすべての起り得るエンドプロダクトノードから主ルートの方にトラバースして戻ることにより、ルートノードを配置し前記ルートノードを前記少なくとも1つのルートノードと比較するためにそのResultリンクを用いる各サブコンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、請求項7に記載の、データの集合を評価する方法。
  9. ノードを含み、前記ノード間にカウントフィールドとリンクとを含むインタロック状態のツリーデータストアによって表わされるデータの集合を評価する方法であって、前記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、他のルートノードを含み得、前記ノードはさらに、少なくとも1つの思考の終わりノードと、少なくとも1つのサブコンポーネントノードと、少なくとも1つのエンドプロダクトノードとを含み、asResultおよびasCaseリンクが存在し、前記asResultリンクはルートノードと他のノードとの間を指し、前記asCaseリンクは少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、前記方法はさらに、
    前記データセット内の文脈とその対応する値とを決定するステップと、
    文脈の各経路に沿って位置を決定するステップと、
    前記文脈内の焦点とその対応する値とを決定するステップと、
    前記文脈内における経路に沿って、前記位置と主ルートとの間の前記焦点の発生の確率を計算するステップとを含む、方法。
  10. 文脈の各経路に沿って位置を決定するステップは、
    ルートノードまたは基本ルートノードから前記インタロック状態のツリーデータストアのルートノードを選択し、文脈の各経路において、前記ルートノードまたは基本ルートノードのasResultリストからその対応するサブコンポーネントノードへトラバースするステップを含む、請求項9に記載の、データの集合を評価する方法。
  11. 文脈およびその対応する値を決定する前記ステップは、
    前記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、前記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、前記ステップはさらに、
    少なくとも1つのルートノードのasResultリストから少なくとも1つのルートノードの対応するサブコンポーネントノードにトラバースし、次いで、前記対応するサブコンポーネントノード間のasCaseリンクを前記サブコンポーネントノードの対応する各エンドプロダクトノードへトラバースすることにより、前記少なくとも1つのルートノードからエンドプロダクトノードによる1つ以上の経路を識別するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、請求項9に記載の、データの集合を評価する方法。
  12. 文脈およびその対応する値を決定する前記ステップは、
    前記インタロック状態のツリーデータストアの少なくとも1つのルートノードによって表わされる値を含む文脈制約リストを選択するステップを含み、前記文脈制約リスト上の少なくとも1つのルートノードのすべてが論理式によって互いに関連付けられ、前記ステップはさらに、
    前記経路に沿ったCaseリンクを用いてすべての起り得るエンドプロダクトノードから主ルートの方にトラバースして戻ることにより、ルートノードを配置し前記ルートノードを前記少なくとも1つのルートノードと比較するためにそのResultリンクを用いる各サブコンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードであり、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップとを含む、請求項9に記載の、データの集合を評価する方法。
  13. 文脈およびその対応する値を決定する前記ステップは、
    エンドプロダクトノードにより、前記インタロック状態のツリーデータストアのすべての起こり得る経路を選択するステップと、
    基本ルートノードへのリンクを有する経路を無視するステップとを含み、その値フィールドは前記論理式と一致せず、結果として得られる1組のノードはこうして文脈を形成するが、無視されなかった経路のみに沿ったノードを含み、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、請求項9に記載の、データの集合を評価する方法。
  14. 焦点およびその対応する値を決定する前記ステップは、
    ルートノードまたは基本ルートノードから、前記インタロック状態のツリーデータストアの少なくとも1つのルートノードの焦点制約リストを選択するステップを含み、前記少なくとも1つのルートノードは前記論理式によって関連付けられ、前記ステップはさらに、
    少なくとも1つのルートノードのasResultリストからいずれかの対応するサブコンポーネントノードにトラバースし、次いで、前記対応するサブコンポーネントノードのasCaseリンクをその対応するエンドプロダクトノードへトラバースすることにより、前記少なくとも1つのルートノードからエンドプロダクトノードによる1つ以上の経路を識別するステップと、
    確立された文脈内にない経路を無視するステップと、
    前記論理式に一致しない値フィールドを有する基本ルートノードへのリンクを有する経路をも無視するステップとを含み、結果として得られる1組のノードはこうして焦点を形成するが、無視されなかった経路のみに沿ったノードを含み、前記ステップはさらに、
    焦点数を得るために、前記焦点を形成する1つ以上の経路のエンドプロダクトノードの数を追加するステップを含む、請求項2、5、9または12のいずれかに記載の、データの集合を評価する方法。
  15. 焦点およびその対応する値を決定する前記ステップは、
    ルートノードまたは基本ルートノードから、前記インタロック状態のツリーデータストアの少なくとも1つのルートノードの焦点制約リストを選択するステップを含み、前記少なくとも1つのルートノードは論理式によって関連付けられ、前記ステップはさらに、
    確立された文脈内のすべてのエンドプロダクトノードから、確立された文脈内における前記エンドプロダクトノードのCaseリンクを用いて識別可能な経路に沿って、それらの主ルートノードの方にトラバースして戻り、トラバースしつつ、ルートノードを配置し前記
    ルートノードを前記少なくとも1つのルートノードと比較するためにResultリンクを用いる各サブコンポーネントノードにおいて、エンドプロダクトノードによる1つ以上の経路を識別するステップと、
    前記論理式に一致しない値フィールドを有する基本ルートノードへのリンクを有する経路を無視するステップとを含み、結果として得られる1組のノードはこうして焦点を形成するが、無視されなかった経路のみに沿ったノードを含み、前記ステップはさらに、
    文脈数を得るために、無視されなかった1つ以上の経路のエンドプロダクトノードの数を加えるステップを含む、請求項2、5、9または12のいずれかに記載の、データの集合を評価する方法。
  16. 前記論理式は、AND、ORおよびNOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO、ならびにこのような論理演算子の組合せなどであるがこれらに限定されない少なくとも1つの論理演算子を含む、請求項4、6、7、8、9、11、12または14のいずれかに記載の、データの集合を評価する方法。
  17. ノードと、前記ノード間のリンクとを含む構造であって、前記ノードは複数のデータフィールドを有し、前記複数のデータフィールドのうちの少なくとも2つはポインタを含み、前記少なくとも2つのポインタのうちの一方はCaseポインタであり、前記少なくとも2つのポインタのうちのもう一方はResultポインタであり、少なくとも1つのノードは、ポインタのリストを指す少なくとも1つの追加のポインタを有し、ポインタの前記リストを指す前記追加のポインタのうちの1つは、前記ノードが関連するasCaseリストを有する場合にはasCaseリストを指すものであり、前記追加のポインタのうちの別のポインタは、前記ノードが関連するasResultリストを有する場合にはasResultリストを指すものであり、前記ノードはカウントフィールドを含み、前記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ノードとが存在し、前記ノードは他のルートノードを含み得、前記ノードはさらに、少なくとも1つの思考の終わりノードと、少なくとも1つのサブコンポーネントノードと、少なくとも1つのエンドプロダクトノードとを含み、前記asResultリンクはルートノードと他のノードとの間を指し、前記asCaseリンクは少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、前記asResultリンクは、ルートまたはエンドプロダクトノードとその間の前記経路上におけるサブコンポーネントノードまたはエンドプロダクトノードとの間を指し、前記基本ノードがまた、値を有するフィールドを有する、構造。
  18. 前記構造は、コンピュータシステムを構成して、その内部で起動されると前記構造を作り出すプログラム命令の組から形成される、請求項17に記載の構造。
  19. 請求項18に記載されるプログラム命令の組を含む、コンピュータ読取可能な媒体。
  20. 前記カウントフィールドが強度変数を含み、前記強度変数は、前記カウントフィールドを含むノードに関連するさまざまな種類の所定のトラバースの活動に対応するさまざまな強度で変更可能である、請求項17に記載の構造。
  21. 前記asCaseおよび前記asResultリストは前記インタロック状態のツリー構造から別個のデータ構造に記憶され、前記別個のデータ構造は、ポインタにより前記インタロック状態のツリー構造における関連するノードに関連付けられる、請求項17に記載の構造。
  22. ノードと、前記ノード間のリンクとを含む構造であって、前記ノードは複数のデータフィールドを有し、前記複数のデータフィールドのうちの少なくとも2つはポインタを含み、前記少なくとも2つのポインタのうちの一方はCaseポインタであり、前記少なくとも2
    つのポインタのうちのもう一方はResultポインタであり、少なくとも1つのノードは、ポインタのリストを指す少なくとも1つの追加のポインタを有し、ポインタの前記リストを指す前記追加のポインタのうちの1つは、前記ノードが関連するasCaseリストを有する場合にはasCaseリストを指すものであり、前記追加のポインタのうちの別のポインタは、前記ノードが関連するasResultリストを有する場合にはasResultリストを指すものであり、前記ノードは所定の各態様のトラバースのための1つのサブノードを備え、前記サブノードは、所定の態様で前記ノードのトラバースを記録するためのカウントフィールドを含み、前記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、前記ノードは他のルートノードを含み得、前記ノードはさらに、少なくとも1つの思考の終わりノードと、少なくとも1つのサブコンポーネントノードと、少なくとも1つのエンドプロダクトノードとを含み、前記asResultリンクはルートノードと他のノードとの間を指し、前記asCaseリンクは少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、前記asResultリンクは、ルートまたはエンドプロダクトノードとその間の前記経路上におけるサブコンポーネントノードまたはエンドプロダクトノードとの間を指し、前記基本ノードはまた、値を有するフィールドを有する、構造。
  23. ノードと、前記ノード間のリンクとを含む構造であって、前記ノードは複数のデータフィールドを有し、前記複数のデータフィールドのうちの少なくとも2つはポインタを含み、前記少なくとも2つのポインタのうちの一方はCaseポインタであり、前記少なくとも2つのポインタのうちのもう一方はResultポインタであり、少なくとも1つのノードは、ポインタのリストを指す少なくとも1つの追加のポインタを有し、ポインタの前記リストを指す前記追加のポインタのうちの1つは、前記ノードが関連するasCaseリストを有する場合にはasCaseリストを指すものであり、前記追加のポインタのうちの別のポインタは、前記ノードが関連するasResultリストを有する場合にはasResultリストを指すものであり、前記ノードは付加的なフィールドを含み、前記ノードはルートノードを含み、そこに、少なくとも1つの主ルートノードと少なくとも1つの基本ルートノードとが存在し、前記ノードは他のルートノードを含み得、前記ノードはさらに、少なくとも1つの思考の終わりノードと、少なくとも1つのサブコンポーネントノードと、少なくとも1つのエンドプロダクトノードとを含み、前記asResultリンクはルートノードと他のノードとの間を指し、前記asCaseリンクは少なくとも1つの主ルートノードと少なくとも1つのエンドプロダクトノードとの間を指し、その間の経路に少なくとも1つのサブコンポーネントノードを含み、前記asResultリンクはルートまたはエンドプロダクトノードと、その間の前記経路上におけるサブコンポーネントノードまたはエンドプロダクトノードとの間を指し、前記基本ノードはまた、値を有するフィールドを有する、構造。
  24. 前記付加的なフィールドはカウントフィールドである、請求項23に記載の構造。
JP2006508890A 2003-03-10 2004-02-27 インタロック状態のツリーデータストアにデータを記憶し、このデータにアクセスするためのシステムおよび方法 Pending JP2006521639A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/385,421 US6961733B2 (en) 2003-03-10 2003-03-10 System and method for storing and accessing data in an interlocking trees datastore
US10/666,382 US7158975B2 (en) 2003-03-10 2003-09-19 System and method for storing and accessing data in an interlocking trees datastore
PCT/US2004/005954 WO2004081710A2 (en) 2003-03-10 2004-02-27 System and method for storing and accessing data in an interlocking trees datastore

Publications (1)

Publication Number Publication Date
JP2006521639A true JP2006521639A (ja) 2006-09-21

Family

ID=32993817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006508890A Pending JP2006521639A (ja) 2003-03-10 2004-02-27 インタロック状態のツリーデータストアにデータを記憶し、このデータにアクセスするためのシステムおよび方法

Country Status (7)

Country Link
EP (1) EP1606723A4 (ja)
JP (1) JP2006521639A (ja)
KR (1) KR20060016744A (ja)
AU (1) AU2004219257A1 (ja)
BR (1) BRPI0408282A (ja)
CA (1) CA2518797A1 (ja)
WO (1) WO2004081710A2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7348980B2 (en) * 2004-11-08 2008-03-25 Unisys Corporation Method and apparatus for interface for graphic display of data from a Kstore
US20070162508A1 (en) * 2004-11-08 2007-07-12 Mazzagatti Jane C Updating information in an interlocking trees datastore
US20070214153A1 (en) * 2006-03-10 2007-09-13 Mazzagatti Jane C Method for processing an input particle stream for creating upper levels of KStore
US7734571B2 (en) * 2006-03-20 2010-06-08 Unisys Corporation Method for processing sensor data within a particle stream by a KStore
US8238351B2 (en) * 2006-04-04 2012-08-07 Unisys Corporation Method for determining a most probable K location

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067086A (ja) * 1998-07-29 2000-03-03 Xerox Corp ノ―ド―リンクデ―タ取得方法
JP2000076119A (ja) * 1998-07-29 2000-03-14 Xerox Corp メモリ内に配置されるノ―ド―リンクデ―タ部分の制御方法
JP2001357070A (ja) * 2000-06-13 2001-12-26 Nec Corp 情報検索方法及び装置
JP2002229825A (ja) * 2000-11-29 2002-08-16 Hewlett Packard Co <Hp> コンピュータメモリ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1948299A (en) * 1997-12-29 1999-07-19 Infodream Corporation Extraction server for unstructured documents
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6721723B1 (en) * 1999-12-23 2004-04-13 1St Desk Systems, Inc. Streaming metatree data structure for indexing information in a data base
GB0100331D0 (en) * 2001-01-06 2001-02-14 Secr Defence Method of querying a structure of compressed data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067086A (ja) * 1998-07-29 2000-03-03 Xerox Corp ノ―ド―リンクデ―タ取得方法
JP2000076119A (ja) * 1998-07-29 2000-03-14 Xerox Corp メモリ内に配置されるノ―ド―リンクデ―タ部分の制御方法
JP2001357070A (ja) * 2000-06-13 2001-12-26 Nec Corp 情報検索方法及び装置
JP2002229825A (ja) * 2000-11-29 2002-08-16 Hewlett Packard Co <Hp> コンピュータメモリ

Also Published As

Publication number Publication date
EP1606723A2 (en) 2005-12-21
CA2518797A1 (en) 2004-09-23
WO2004081710A2 (en) 2004-09-23
WO2004081710A3 (en) 2004-12-23
BRPI0408282A (pt) 2006-03-07
AU2004219257A1 (en) 2004-09-23
KR20060016744A (ko) 2006-02-22
EP1606723A4 (en) 2006-12-20

Similar Documents

Publication Publication Date Title
US7158975B2 (en) System and method for storing and accessing data in an interlocking trees datastore
US7523095B2 (en) System and method for generating refinement categories for a set of search results
US6944619B2 (en) System and method for organizing data
US7213041B2 (en) Saving and restoring an interlocking trees datastore
US20040088307A1 (en) Data structure for information systems
US20080065661A1 (en) Saving and restoring an interlocking trees datastore
JPH06103497B2 (ja) レコード検索方法及びデータベース・システム
US20060015538A1 (en) File location naming hierarchy
US20030220928A1 (en) Method for organizing and querying a genomic and proteomic databases
JP2006521639A (ja) インタロック状態のツリーデータストアにデータを記憶し、このデータにアクセスするためのシステムおよび方法
Lane et al. Eyeing the patterns: Data visualization using doubly-seriated color heatmaps
Pai A Textbook of Data Structures and Algorithms, Volume 3: Mastering Advanced Data Structures and Algorithm Design Strategies
Choong et al. Context-based exploitation of data warehouses.
LAURA COMPUTING zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONML
Leyton The design and implementation of a relational database management system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100406