JP4247135B2 - 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法 - Google Patents

構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法 Download PDF

Info

Publication number
JP4247135B2
JP4247135B2 JP2004033493A JP2004033493A JP4247135B2 JP 4247135 B2 JP4247135 B2 JP 4247135B2 JP 2004033493 A JP2004033493 A JP 2004033493A JP 2004033493 A JP2004033493 A JP 2004033493A JP 4247135 B2 JP4247135 B2 JP 4247135B2
Authority
JP
Japan
Prior art keywords
structured document
template
storage
data
document
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.)
Expired - Fee Related
Application number
JP2004033493A
Other languages
English (en)
Other versions
JP2005227851A (ja
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004033493A priority Critical patent/JP4247135B2/ja
Priority to US11/053,173 priority patent/US7664773B2/en
Publication of JP2005227851A publication Critical patent/JP2005227851A/ja
Application granted granted Critical
Publication of JP4247135B2 publication Critical patent/JP4247135B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Description

本発明は、階層化された論理構造をもつ構造化文書データベースに関する。
Extensible markup language(XML)などで記述された構造化文書データを記憶・検索するための構造化文書管理システムには、いくつかの方式が考えられている。
(1)単純な方式として、構造化文書データをそのままテキストファイルとして管理する方式。この方式では、データ数やサイズが大きくなると格納効率が悪くなったり、構造化文書の特性を生かした検索が困難になる。
(2)RDB(Relational Database)に構造化文書データを管理する方式。
(3)構造化文書データを管理するために開発されたOODB(Object Oriented Database)で管理する方式。基幹系などで広くRDBが使われているが、これを拡張した例えばXML対応RDBが製品として出ている。RDBは、データをフラットなテーブル形式に格納するため、XMLデータのような階層構造をテーブルに対応づける複雑なマッピングが必要となる。このマッピングのため、テーブルに関する事前の構造(スキーマ)設計を十分に行わないと、パフォーマンスが低下してしまう問題が発生する。
近年、上記(1)〜(3)以外に新たな方式が提案されている。
(4)ネイティブに構造化文書データを管理する方式。この方式は、多種多様な階層構造を持つXMLデータを特別なマッピング処理すること無しに格納する。このため、格納や取得時に特別なオーバヘッドが存在しない。また、コストのかかる事前のスキーマ設計が不要になり、ビジネス環境の変化により必要に応じてXMLデータの構造を自由に変更することが可能である。
いくら構造化文書データが効率良く格納されたからといって、格納されたデータを取り出す手段が無ければ意味が無い。この格納されたデータを取り出す手段として、問合せ言語がある。RDBの世界ではSQL(Structured Query Language)があるように、XMLではXQuery(XML Query Language)が策定されている。XQueryは、XMLデータをデータベースのように扱うための言語である。このため条件に合致するデータ集合の取り出しや集計・分析を行うための手段が提供されている。また、XMLデータは親子や兄弟などの要素が組み合わさった階層構造を持つため、この階層構造を辿る手段が提供されている。
格納された構造化文書データの階層構造を辿りながら、検索条件で指定された特定の要素と特定の構造が含まれている構造化文書データを検索するための技術は既に開示されている(例えば、特許文献1、2参照)。
構造化文書データの構造が大規模になるほど、データベースに格納されている構造化文書データの数が多いほど、検索条件が複雑なほど、各構造化文書データの階層構造を構成する要素間をたどるという処理には時間がかかる。また、構造化文書データの数、サイズが大きくなれば、格納された構造化文書データをメモリ上に展開することは不可能であり、多くはハードディスクなど二次記憶に格納されることになる。
ネイティブに構造化文書データを管理する方式では、構造化文書データは要素間の階層構造をそのまま記憶する。検索条件として指定された要素や構造があるか否かを調べるためには、二次記憶上に格納された構造化文書データの要素間を頻繁にアクセスしなければならない。複雑な検索条件の場合はなおさらである。
特開2002−34618公報 特開2000−57163公報
従来は、階層構造を有する構造化文書データを記憶するデータベースから所望の要素や構造を有する構造化文書データを検索する際には、データベース内の各構造化文書データの階層構造を構成する要素データ間を辿りながら、検索条件にて指定された要素や構造を持つ構造化文書データを検索するため、高速に検索できないという問題点があった。特に、構造化文書データのサイズが大きくなるほど、検索対象の構造化文書データの数が多いほど、検索条件が複雑であるほど検索処理の高速化が困難であった。
そこで、本発明は上記問題点に鑑み、構造化文書データの検索の高速化を図るための構造化文書データの記憶方法および装置を提供することを目的とする。
本発明は、複数の要素データをそれぞれ含む複数の構造化データを複数の記憶エリアのそれぞれに記憶するものであって、その際に、(1)前記複数の構造化データ中での出現頻度が第1の閾値以上の要素データに対し、前記複数の記憶エリアのそれぞれにおける記憶位置を定めるエレメントIDを決定し、(2)前記複数の構造化データのうちの1つである第1の構造化データに含まれる要素データ群のうち、前記エレメントIDの決定された各要素データを、前記複数の記憶エリアのうち前記第1の構造化データを記憶するための第1の記憶エリアの当該エレメントIDに対応する記憶位置に記憶する。
また、前記複数の構造化データは、前記複数の要素データを含む複数の階層構造のうちの1つをそれぞれ有し、前記エレメントIDを決定する際には、(3)前記複数の要素データのそれぞれの前記複数の構造化データ中での出現頻度を基に前記複数の階層構造を認識し、(4)前記複数の構造化データのそれぞれを、前記複数の階層構造のうちの1つに分類し、(5)前記複数の階層構造のそれぞれについて、当該階層構造に分類された構造化データ群中での出現頻度が前記第1の閾値以上の要素データに対し、前記複数の記憶エリアのそれぞれにおける記憶位置を定めるエレメントIDを決定する。
さらに、前記複数の階層構造で同じ位置に配置される要素データには、当該複数の階層構造で同じエレメントIDを与える。
記憶する複数の構造化データ中での出現頻度の高い要素データには、各構造化データを記憶する記憶エリア内での記憶位置を予め定めておき、当該記憶位置をエレメントIDで特定するため、検索時には、各構造化データのそれぞれの文書構造を辿る必要がないため、検索が高速に行える。
構造化文書データの検索の高速化が図れる。
以下、本発明の実施形態について、図面を参照して説明する。
図1は、構造化文書データ(構造化データ)の一例である。構造化文書を記述するための代表的な言語としてXML(eXtensible Markup Language)が挙げられる。図1に示す構造化文書はXMLで記述されたものである。XMLでは、文書構造を構成する個々のパーツを「要素」(エレメント:Element)と呼び、要素はタグ(tag)を使って記述する。具体的には、要素の始まりを示すタグ(開始タグ)と、終わりを示すタグ「終了タグ」)の2つのタグでテキストデータを挟み込んで、1つの要素を表現している。なお、開始タグと終了タグで挟み込まれたテキストデータは、当該開始タグと終了タグで表された1つの要素に含まれるテキスト要素である。
この例では、<book>というタグで囲まれた要素のルート要素が存在する。この「book」要素は、<title>、<authors>、<abstract>の各タグで囲まれた3つの子要素を包含する。「authors」要素は、<author>というタグをもつ2つの子要素を包含する。各「author」要素は、<first>、<last>という各タグで囲まれた子要素が存在する。「first」要素と「last」要素は、それぞれ「太郎」や「田中」といったテキスト要素を持っている。
図2は、本実施形態に関る構造化文書管理システムの機能的な構成例を示したものである。構造化文書管理システムは、大きく分けてクライアント201とサーバ101とから構成されている。クライアント201からの格納要求や検索要求を受けて、サーバ101が各要求に対応する処理を行う。
クライアント201は、主に、登録部202、検索部203、入力部204、表示部205を有する。キーボードやマウス等の入力装置からなる入力部204は、構造化文書を入力したり、各種指示入力を行うためのものである。登録部202は、入力部204から入力された構造化文書や、クライアント201のもつ記憶装置などに予め記憶された構造化文書を構造化文書データベース111に登録するためのものである。登録部202は、格納要求とともに登録すべき構造化文書をサーバ101へ送信する。
検索部203は、入力部204からユーザにより入力された指示に従って、構造化文書データベース111から所望のデータを検索するための検索条件などが記述された問合せデータを作成し、当該問合せデータを含む検索要求をサーバ101へ送信する。また、サーバ101から送信された当該検索要求に対応する検索結果データを受け取り、これを表示部205に表示する。
サーバ101は、要求処理部102、格納処理部103、検索処理部104から構成されている。また、サーバ101には構造化文書データベース(構造化文書DB)111が接続されている。構造化文書データベース111は、構造テンプレート記憶部112、構造化文書データ記憶部113、索引データ記憶部114から構成されている。
要求処理部102は、クライアント201から送信される格納要求や検索要求を判別し、格納処理部103や検索処理部104などへ処理の振り分けを行い、格納処理部103や検索処理部104での処理結果をクライアント201に返す。
格納処理部103は、クライアント201からの格納要求を受けて、クライアント201から送信された構造化文書を構造化文書データベース111に格納する処理を行う。格納処理部3は、図3に示すように、構造化文書構文解析部31、構造化文書構造抽出部32、構造化文書構造照合部33、構造化文書格納部34、構造配置イメージ決定部35、構造テンプレート更新部36から構成される。
構造化文書構文解析部31は、要求処理部102から渡された構造化文書を構文解析し、解析結果として、例えば、DOM(Document Object Model)のようなオブジェクトツリーを得る。この解析結果を基に構造化文書構造抽出部32では当該構造化文書の(文書)構造を抽出する。構造化文書構造照合部33は、構造化文書データベース111に記憶された構造テンプレートの中から、構造化文書構造抽出部32により抽出された構造に最も類似する(合致する)構造テンプレートを1つ選択する。
構造テンプレート更新部36は、構造化文書構造照合部33により選択された構造テンプレートに、構造化文書構造抽出部32により抽出された構造を反映させる。構造化テンプレート記憶部112には、構造を表すグラフデータだけでなく構造の発生頻度などの統計データを保持しており、構造テンプレート更新部36は、グラフデータと統計データの双方を更新する。また、統計データに、構造テンプレート上に典型的な構造パターンが現れた場合、この典型的な構造パターンを新たな構造テンプレートとして構造化テンプレート記憶部112に格納する。
構造配置イメージ決定部35は、構造パターンに合致する構造化文書データの配置上の位置決めが行われる。
構造化文書格納部34は、入力された構造化文書のデータを構造化文書データベース111の構造化文書データ記憶部113に格納するとともに、索引データを索引データ記憶部114に格納する。
一方、検索処理部104は、クライアント201からの検索要求を受けて、指定された条件(問合せデータ)に合致するデータを構造化文書データベース111から探し出し、得られたデータを結果データとしてクライアント201へ返す処理を行う。検索処理部104は、図4に示すように、問合せ構文解析部41、問合せ構造抽出部42、問合せ構造照合部43、問合せ実行部44から構成される。
問合せ構文解析部41は、要求処理部102から渡された問合せデータを構文解析し、解析結果として、後述する問合せグラフを得る。この解析結果を基に問合せ構造抽出部42では、当該問合せデータの構造(問合せ構造)を抽出する。
問合せ構造照合部43は、構造化文書データベース111の構造テンプレート記憶部112に記憶された構造テンプレートのなかから、当該問合せ構造に類似する(合致する)構造テンプレートの集合を取り出す。問合せ構造と構造テンプレートの集合との照合結果は、問い合わせグラフに発生する変数集合の取り得る構造パターンの組合せとして表現される。
問合せ実行部44は、問合せ構造照合部43での照合結果を基に、構造化文書データベース111の構造化文書データ記憶部113に記憶されている構造化文書データや、索引データ記憶部114に記憶されている語彙索引データにアクセスして、問合せデータに記述された条件に合致する結果データを生成する。
図5は、サーバ101のハードウエア的な構成例を示したもので、バス1に通信I/F装置2、可搬記憶媒体ドライブ装置3、表示装置4、入力装置5、出力装置6、演算装置(CPU)7および外部記憶装置8並びにメモリ9が接続されて構成されている。さらに、図5に示す構成では、バス1に、図2の構造化文書データベース111が接続されている。
図2の要求処理部102と格納処理部103と検索処理部104のそれぞれの機能を実現するためのプログラムは、図5の外部記憶装置8に予め記憶され、必要に応じて、各プログラムがメモリ9に読み込まれてCPU7により実行される。なお、以下、図2〜図4を参照して説明する。
次に、構造化文書データ記憶部113、索引データ記憶部114について説明する。
図6は、構造化文書データ記憶部113のデータ構造を模式的に表したものである。構造化文書データ記憶部113には、論理的には、大量の構造化文書が「root」ノード301をルートする1つの構造化文書の部分文書として記憶されている。図6では、この「root」ノード301をルートとする1つの構造化文書の構造を、ノードとアークから構成される階層木で表している。各ノードは構造化文書の要素(テキスト要素を含む)を示し、要素間の親子関係をアークで示している。実装上は、各ノードはオブジェクトデータのファイルとして構造化文書データ記憶部113に格納される。各ノードには、オブジェクトID(OID)と呼ばれる識別子が割当てられている。OIDは、後述するように、ドキュメントID(DocID)とエレメントID(ElemID)とテンプレートID(TID)とから構成され、本明細書の中では<DocID,ElemID,TID>という形式で表すものとする。OIDを指定することで所望のオブジェクトデータを取り出すことができる。
ノード間の親子関係を表わすアークは、オブジェクトデータ間のリンクであり、このリンクはオブジェクトデータ内に子要素のオブジェクト集合を指すOID配列として、構造化文書データ記憶部113に記憶される。
「root」ノード301の下には「bookFolder」ノード302が存在する。「bookFolder」ノードの下には、2つの「book」ノード304,305が存在する。OIDが<2、0、D2>の「book」ノード304には、図1で示した構造化文書データ311が格納されている。
このように「root」ノード301以下のデータは、複数の構造化文書のそれぞれの各要素からなる1つの大きな構造化文書データであり、図1で示した構造化文書データは、当該大きな構造化文書データの一部分として格納されている。例えば、図1の構造化文書<book>…</book>は、図6の構造化文書では、<root><bookFolder><book>…</book></bookFolder></root>と表すことができる。
なお、このような複数のノードからなる階層構造は、汎用のOSで広く採用されているディレクトリ構造に当てはめると、これら各ノードは、ディレクトリ構造のフォルダとファイルに対応する。すなわち、図6に示す階層構造は、「root」フォルダの下に、「bookFolder」という子フォルダがあり、「bookFolder」フォルダの下に、「book」という要素をルートに持つ2つのドキュメントファイル311,312が存在するディレクトリ構造で構造化文書データ記憶部113に記憶される。
以下、「root」ノード、「bookFolder」ノード、「paperFolder」ノードをフォルダと解釈し、フォルダ以下のデータをまとめてドキュメントファイルと解釈する。例えば、図6の場合、「bookFolder」フォルダに2つの「book」ドキュメント(ファイル311、312)が格納されていると解釈することができる。
構造化文書DB111に対する検索を行うには、問合せデータを与える必要がある。問合せデータには、テキスト(単語などの文字列)を検索条件として指定したもの、構造化文書の構造を検索条件として指定したもの、あるいは両者を組み合わせて検索条件として指定したものがある。問合せデータに単語などの文字列が検索条件として含まれる場合、構造化文書管理システムでは高速に検索を行うため、語彙索引を付けることが多い。語彙索引データとは、格納された構造化文書データに含まれるテキスト要素のテキストデータ(文字列)を抽出し、テキストデータと当該テキストデータを含む構造化文書データ中の要素のオブジェクトID(OID)との対応関係を表す情報である。
図1で示した構造化文書データには、「XMLデータベース」、「XMLデータの検索技術」、「田中」、などのテキストデータが含まれている。これらのテキストデータを字句解析することで「XML」、「データ」、「データベース」などの語彙(文字列)に分解している。
索引データ記憶部114には図7に示すように、語彙テーブルと当該語彙テーブル中の各語彙にリンクされた当該語彙を含むテキスト要素のOIDを記録する複数のテーブルが記憶されている。語彙テーブル中の語彙からリンクをたどることで、その語彙を含むテキスト要素の出現位置、つまりOIDが得られる。
なお、図7に示した索引データでは省略したが、語彙テーブル中の各語彙にリンクされたテーブルには、当該語彙を含むテキスト要素のOIDが、<DocID,ElemID,TID>という形式で、図8に示すように記録されている。
構造テンプレート記憶部112には、構造テンプレートデータが格納されている。構造テンプレートデータには、構造化文書データ記憶部113に格納されている構造化文書データから抽出された構造データが格納されている。構造テンプレート記憶部112に格納される初期の構造テンプレートデータは、構造化文書データ記憶部113に(例えば最初に)格納される構造化文書から抽出されたものである。
図9は、構造テンプレート記憶部112に記憶されている(構造化文書データ記憶部113に記憶される構造化文書データから構成される)階層構造を模式的に示したもので、図6の「root」、「bookFolder」という2つのノード301,302のそれぞれに対応する「root」、「bookFolder」という2つの要素と、「bookFolder」ノード302以下に格納される構造化文書のドキュメントファイルに対応する要素「book」からなる階層構造を表している。
「book」要素には、「bookFolder」ノード302以下に格納される構造化文書の文書構造のベース(基準)となる文書構造を表す少なくとも1つの構造テンプレートデータが対応付けられて格納されている。
図9には、「book」要素に、初期構造テンプレートST1が格納されている場合を示している。構造テンプレート(データ)は、グラフデータと統計データから構成されており、グラフデータを図10に、統計データを記録する統計データテーブルを図11に示す。なお、以下の説明において、統計データとグラフデータのうちグラフデータのみを構造テンプレート(データ)と呼ぶ。
図10に示す初期構造テンプレートST1は、図1に示した文書から抽出された構造を表したものである。図1の構造化文書には、「book」ノード直下に「authors」ノードがあり、その下には2つの「author」ノードがあったが、図10に示した構造テンプレートでは、「author」ノードは1つにまとめられて、テキストノード(テキスト要素)は「#text」ノードとして表されている。
図9、図10の構造テンプレートデータの六角形で表された各ノード(各ノードは、フォルダ、ファイル、要素、テキスト要素に対応する)には、「F0」、「D2」、「E3」、「T4」などのユニークなIDが割り振られている。構造テンプレートデータの各ノードの種別や構造上の位置を識別するために、各ノードに割り振られたIDをテンプレートID(TID)と呼ぶ。
テンプレートIDについて説明する。テンプレートIDは、構造テンプレート上の当該ノードの種類を表す情報と、同じ種類のノードのなかで各ノードを識別するための番号とから構成されている。ノードの種類は、「F」「D」「E」「T」という4種の文字により表されている。「F」はフォルダ、「D」はドキュメントファイル、「E」は要素(テキスト要素ではない要素)、「T」はテキスト要素を表す。ノードの種類を表す文字とそれに続く番号「x」とからなるテンプレートIDにより、当該ノードの種類と、当該テンプレートIDを持つノードが構造テンプレート上のどのノードであるかを識別することができる。
テンプレートIDが「Fx」であるノードはフォルダを表し、これをフォルダ型構造テンプレートノードと呼ぶ。テンプレートIDが「Dx」であるノードはドキュメントを表し、ドキュメント型構造テンプレートノードと呼ぶ。テンプレートIDが「Ex」であるノードはドキュメント内の要素(テキスト要素でない要素)を表し、エレメント型構造テンプレートノードと呼ぶ。テンプレートIDが「Tx」であるノードはドキュメント内のテキスト要素を表し、テキスト型構造テンプレートノードと呼ぶ。なお、ここでは、「x」は、構造テンプレートデータの各ノードにユニークなシリアルな整数とする。
構造化文書データ記憶部113に記憶される各構造化文書データの各要素(ノード)は、当該ノードを識別するためのオブジェクトID(OID)が与えられている。データファイルに格納されている構造化文書データの各ノードのOIDは、ドキュメントID(DocID)、エレメントID(ElemID)、上記テンプレートID(TID)から構成されている。ここでは、OIDを<DocID,ElemID,TID>と表すことにする。
DocIDとは、ドキュメント、フォルダに割当てられるデータファイル内でユニークなIDであり、ドキュメントファイルの識別子、フォルダの識別子である。ElemIDは、各ドキュメント内の各要素に割当てられる各ドキュメント内でユニークなIDであり、ElemIDにより、当該ドキュメント内での各要素を識別することができる。TIDとは、前述したように構造テンプレートデータ内のノードが持つID、すなわち、テンプレートIDである。
ドキュメントファイル内のある要素のOIDを見れば、当該OIDに含まれるDocIDからは当該OIDをもつノードを含むドキュメントファイルを識別することができ、当該OIDに含まれるTIDからは当該ノードの構造テンプレート中の存在位置とノードの種別を識別することができ、ElemIDからは当該ノードの当該ドキュメント中の存在位置を識別することができるのである。
さて、図11に示す統計データテーブルには、図10の構造テンプレートに表された各要素(のテンプレートID)について、図10の構造テンプレートに基づきテンプレートIDやエレメントIDが付与されて構造化文書データ記憶部113に格納された構造化文書データ群中での出現(発生)頻度などを表している。
例えば、図11に示す統計データテーブルには、図10の構造テンプレートに基づき構造化文書データ記憶部113に格納された構造化文書データの総数(NumRegist)と、図10の構造テンプレートに表された各要素について、当該構造化文書データ群の各構造化文書データ内での出現回数(発生回数)の総数(SumOcc)、当該構造化文書データ群の各構造化文書データ内での出現回数(発生回数)の二乗値の総数(SumOcc2)、1つの構造化文書データ内での当該要素の最小発生回数(MinOcc)、1つの構造化文書データ内での当該要素の最大発生回数(MaxOcc)などが表されている。
図11の統計データテーブルは、図10の構造テンプレートで表された構造をもつ新たな構造化文書データを構造化文書データ記憶部113に格納する度に更新される。
図10の構造テンプレートから新たな構造テンプレートを抽出する際に、各要素について得られた上記値の平均値、標準偏差が参照される。
構造テンプレートの要素のうちの固定配置要素(後述する)には予めエレメントIDが定められているため、統計データテーブル中の当該固定配置要素についてはそのエレメントIDも「OidOffset」欄に記録されている。また、当該固定配置要素が同じ親要素の子要素として繰返し出現する回数も予め定められているときには、その繰返し回数が「NumSib」欄に記録される。なお、図11の統計データテーブル中の要素には固定配置要素が存在しないため、「OidOffset」欄と「NumSib」欄には全て「UNDEFF」(未定義)が記録されている。
次に、図12〜図14に示すフローチャートを参照して、図2の格納処理部103の処理動作について説明する。
クライアント201の登録部202からは、新たに格納すべき構造化文書データと、この格納先のフォルダのOIDを含む格納要求メッセージが送信される。ここで、格納先のフォルダのOIDをOIDpと表す。
なお、クライアント201では、格納先のフォルダのOIDは、次のようにして得ることができる。クライアント201の検索部203には、例えば、図6に示すような構造化文書データ記憶部113の概略構造を表示するためのGUI機能を有している。このGUI機能により表示された構造からユーザが格納先のフォルダとして所望のノード(フォルダ)を指示すると、当該ノードに対応するOIDを得るための問合せデータが作成され、サーバ101へ送信される。サーバ101では、当該問合せデータから、当該指示されたノードのOIDを獲得して、クライアント201の検索部203へ返す。検索部203は、この得られたOID(すなわち、OIDp)を登録部202へ渡す。
さて、サーバ101の要求処理部102では、新たなに格納すべき構造化文書データと格納先のフォルダのOIDpを含む格納要求メッセージを受け取る(ステップS1)。ここでは、例えば、「bookFolder」フォルダ302に対応するOIDp(<1,0,F1>)が格納先のフォルダとして指定され、このフォルダ下に新たなドキュメントを格納するケースを考える。
格納要求メッセージに含まれる、格納すべき構造化文書データは、格納処理部103の構造化文書構文解析部31へ渡されて、当該構造化文書データの構文解析が行われる。この結果得られるものは、構造化文書データの複数のオブジェクトデータからなる階層構造であり、メモリ上に展開される(ステップS2)。すなわち、構造化文書構文解析部31は、XMLデータである構造化文書データに対し、構文解析処理を行うことによりDOM(Document Object Model)形式のオブジェクトデータに展開するXMLパーサに相当する機能を有するものである。
さらに、当該構造化文書データに対し、新たなドキュメントID(DocID)を付与する(ステップS3)。
次に、構造化文書構造抽出部32は、構造化文書構文解析部31での解析結果をそのルートから辿ることによって、当該構造化文書データの構造、すなわち、当該構造化文書データ中の各要素に対応する複数のノードと、当該複数のノードからなる構造を抽出する。当該構造化文書データの構造をScとする(ステップS4)。
構造化文書構造照合部33は、格納先フォルダのOIDpをキーに構造テンプレート記憶部112から構造テンプレートの集合を取得する。例えば、OIDpが<1,0,F1>である場合には、まず、TID「F1」を取得する。このOIDpから取得したTIDをTIDpと表す。構造化文書構造照合部33は、TIDpをキーにして構造テンプレート記憶部112をスキャンすることで、対応する構造テンプレートの集合を取得できる(ステップS5)。取得した構造テンプレートの集合をSpsとする(ステップS6)。
取得した構造テンプレートの集合Spsが空(null)であるとき(ステップS7)、格納先フォルダには、構造テンプレートが存在しないため、当該格納先フォルダにおける初期構造テンプレートを作成すべく、ステップS11へ進み、図14に示す構造テンプレート更新処理を行う。Spsが空でないときには(ステップS7)、ステップS8へ進み、Spsの各構造テンプレートと新たに格納すべき構造化文書データから抽出された構造Scとを照合し、Spsのなかから、Scに最も類似する構造テンプレートを選択する(ステップS8)。選択された構造テンプレートをSpとする(ステップS9)。そして、ScとSpを用いて、図14の構造テンプレート更新処理を行う(ステップS10)。
図14は、構造テンプレート更新部36における構造テンプレート更新処理動作を説明するためのフローチャートである。図12のステップS7でSpcが空である場合(ステップS11での構造テンプレート更新処理)には、まず、初期構造テンプレートを作成する。すなわち、図14のステップS31からステップS32へ進み、新たに格納すべき構造化文書データから抽出された構造Scを初期の構造テンプレートST1とする(ステップS32)。そして、この初期構造テンプレートST1の各要素に対し、新たなTIDを付与し、初期構造テンプレートST1の当該統計データテーブルを初期化する(ステップS33)。その後、初期構造テンプレートをSpとし(ステップS34)、ステップS35へ進む。
一方、構造テンプレートSpが既に得られている場合(図12のステップS10の構造テンプレート更新処理)には、図14のステップS31からステップS35へ進む。
ステップS35では、構造テンプレートSpと新たに格納すべき構造化文書データから抽出された構造Scとの構造の和を取る。これをSpcとする。構造の和であるから、Spcは、構造テンプレートSpに、ScにありSpにない要素が追加された構造を表す構造テンプレートとなっている。
次に、構造テンプレートSpcを基に、Spの統計データテーブルを更新する(ステップS36)。更新内容は以下の通りである。すなわち、(1)Spcにあり、Spの統計データテーブルには登録されていない要素があれば、当該要素に新たなTIDを付与し、当該統計データテーブルに当該新たなTIDを登録する。また、SpをSpcのグラフデータで書き換え、Sp自体を更新する。(2)Spの統計データテーブルに登録されている各要素(TID)の発生回数の総和(SumOcc)を、Spcに出現する当該TIDの要素の数だけインクリメントする。(3)Spの統計データテーブルに登録されている各要素(TID)に対するSumOcc2の値に、Spcに出現する当該TIDの要素の数の二乗値を加算する。(4)Spの統計データテーブルに登録されている各要素(TID)のMinOccの値が、Spc内の当該要素の出現回数より大きいとき、当該MinOccの値をSpc内の当該要素の出現回数に書き換える。(5)Spの統計データテーブルに登録されている各要素(TID)のMaxOccの値が、Spc内の当該要素の出現回数より小さいとき、当該MaxOccの値をSpc内の当該要素の出現回数に書き換える。(6)NumRegistの値を1つインクリメントする。
以上の統計データテーブルの更新が終了すると、ステップS37へ進み、新たなに格納すべき構造化文書データから抽出された構造Scの各要素に、当該要素に対応するSp内の要素のTIDを付与する。
以上の構造テンプレート更新処理が終了すると、図13のステップS21へ進む。図13では、構造化文書格納部34は、新たなに格納すべき構造化文書データから抽出された構造Scの階層構造の上流から下流へと順に要素を取出して、各要素に対してエレメントIDを付与した後(ステップS21〜ステップS26)、索引データを更新し(ステップS27)、当該構造化文書データを構造化文書データ記憶部113へ格納する(ステップS28)。なお、格納する各構造化文書データのルート要素のエレメントIDは「0」である。
ここで重要なのは、構造Sc中の要素がそのTIDから当該構造中で必須の要素(すなわち、固定配置できる要素)であるときには、当該固定配置要素に対し予め定められたElemIDを与え、そうでなければ固定配置要素の最大オフセットElemIDより順次割り付けているという戦略をとっていることである。
ステップS21では、Scのルート要素を取出し、これをEとする。Spの統計データテーブル中に、要素EのTIDに対し固定配置要素のエレメントID(OidOffset)が登録されている場合には、当該要素Eは固定配置要素である。この場合には(ステップS22)、ステップS23へ進み、要素Eに当該統計データテーブルに登録されている当該固定配置要素に対応するエレメントIDを付与する。要素Eが固定配置要素でないときには(ステップS22)、ステップS24へ進み、要素Eに固定配置要素に対し予め定められているエレメントID以外のエレメントIDであって、当該新たなに格納すべき構造化文書データ内で唯一のエレメントIDを付与する。
ステップS22〜ステップS24の処理がScの全ての要素に対し行い、Scの全ての要素にエレメントIDが付与されると(ステップS25、ステップS26)、Scの全ての要素に対し、<DocId,ElemID,TId>という構成のOIDが与えられたことになる。
次に、ステップS27へ進み、Scのテキスト要素を基に、索引データを更新する。すなわち、テキスト要素のテキストデータから語彙(単語、複数の単語からなる語などの文字列)を抽出し、抽出した語彙が図8に示すような語彙テーブル中に無ければ、それを追加する。そして、各テキスト要素のOIDを、当該テキスト要素のテキストデータに含まれる語彙テーブル中の語彙にリンクして記憶する。
ステップS28では、構造化文書格納部34は、構造化文書データ記憶部113内をスキャンすることで、格納先として与えられたOIDpに対応するオブジェクトを取得し、当該オブジェクトデータの子要素のオブジェクトの集合を示すOID配列に、当該格納すべき構造化文書データの各要素のOIDを追加する。すなわち、構造化文書データ記憶部113に、各要素に上記のようなOIDの付された当該格納すべき構造化文書データが、OIDpが<1,0,F1>の「bookFolder」フォルダ302の直下に追加される形で格納される。
次に、上記格納処理動作について具体的に説明する。
構造テンプレート記憶部112に、図17に示すように、「root」フォルダと、「bookFolder」フォルダという2つの要素からなる階層構造が格納されている状態において、「bookFolder」フォルダの下に、図1に示すような構造化文書データを挿入格納する場合を考える。なお、「root」フォルダにはTID「F0」が、「bookFolder」フォルダにはTID「F1」が割りふられている。
この場合、図12のステップS7からステップS11へ進み、ステップS11では、図14のステップS31〜ステップS34の処理を経て、図1の構造化文書データから抽出された構造Scが初期構造テンプレートST1と決定される。
すなわち、図9に示すように、「bookFolder」フォルダの下に「book」という要素に、図10に示すような初期構造テンプレートST1と、図11に示すような統計データのテーブルが格納される。
図10に示す構造テンプレートST1は、図1の構造化文書データの構造だけを抽出したツリー形状のグラフとなっている。「book」に対応した構造要素としてTID「D2」、「title」に対応した構造要素としてTID「E3」、「title/#text」に対応した構造要素としてTID「T4」とそれぞれTIDが割当てられている。なお、図1の構造化文書データには、2つの「author」要素が兄弟関係で存在していたが、それらは1つに縮約され、「author」要素には「E6」、「first」要素には「E7」、「last」要素には「E9」というTIDが割当てられている。
図14のステップS36では、まず、構造テンプレートST1の統計データテーブルのNumRegistの値に「1」加算して「1」に更新する。
図1の構造化文書データには、「book」は1回発生している。そこで、図14のステップS36では、統計データテーブルの当該構成要素に対応するTID「D2」ついて、SumOccの値に「1」加算して「1」、SumOcc2の値に「1*1=1」加算して「1」、MinOccの値は「1」、MaxOccの値は「1」と更新する。すなわち、SumOcc=1、SumOcc2=1*1=1、MinOcc=1、MaxOcc=1、NumRegist=1、となる。
また、図1の構造化文書データには「author」は2回発生している。そこで、図14のステップS36では、統計データテーブルの当該構成要素に対応するTID「E6」について、SumOccの値に「2」加算して「2」、SumOcc2の値に「2*2=4」加算して「4」、MinOccの値は「2」、MaxOccの値は「2」と更新される。すなわち、SumOcc=2、SumOcc2=2*2=4、MinOcc=2、MaxOcc=2、NumRegist=1、となる。
次に、「bookFolder」フォルダに、図18に示すような構造化文書データを格納するケースを考える。図18の構造化文書データを格納する際には、図12のステップS8で、図10の構造テンプレートがSpとして選択されるので、ステップS10では、図14のステップS31から直ちにステップS35、さらにステップS36へ進む。
図14のステップS36では、まず、図19に示すように、構造テンプレートST1の統計データテーブルのNumRegistの値に「1」加算して「2」に更新する。
図18の構造化文書データには、「book」は1回発生している。そこで、図14のステップS36では、統計データテーブルの当該構成要素に対応するTID「D2」について、図19に示すように、SumOccの値に「1」加算して「2」、SumOcc2の値に「1*1=1」加算して「2」と更新する。MinOcc、MaxOccの値は「1」のままとする。SumOcc=1+SumOcc=2、SumOcc2=1*1+SumOcc2=2、MinOcc=Min(1,MinOcc)=1、MaxOcc=Max(1,MaxOcc)=1、NumRegist=1+NumRegist=2、となる。
また、図18の構造化文書データには「author」は1回発生している。そこで、図14のステップS36では、統計データテーブルの当該構成要素に対応するTID「E6」について、図19に示すように、SumOccの値に「1」加算して「3」、SumOcc2の値に「1*1=1」加算して「5」、MinOccの値は「1」と更新される。MaxOccの値は「2」のままである。すなわち、SumOcc=1+SumOcc=3、SumOcc2=1*1+SumOcc2=5、MinOcc=Min(1,MinOcc)=1、MaxOcc=Max(1,MaxOcc)=2、NumRegist=1+NumRegist=2、となる。
次に、「bookFolder」フォルダに、図20に示すような構造化文書データを格納するケースを考える。図18の構造化文書データを格納する際には、図12のステップS8で、図10の構造テンプレートがSpとして選択されるので、ステップS10では、図14のステップS31から直ちにステップS35、さらにステップS36へ進む。なお、図20の構造化文書データには「author」は2回発生している。この場合、ステップS36での構造テンプレートST1の統計データテーブルの更新結果を図21に示す。
さらに、「bookFolder」フォルダに、図22(a)(b)(c)に示すような大量の構造化文書データを格納するケースを考える。これら大量の構造化文書データのそれぞれを格納する際には、図12のステップS8で、図10の構造テンプレートがSpとして選択されるので、ステップS10では、図14のステップS31から直ちにステップS35、さらにステップS36へ進む。これら大量(例えば、全部で100件)の構造化文書データを格納した後の構造テンプレートST1の統計データテーブルの更新結果を図23に示す。
図23の統計データテーブルからは次のことが読みとれる。(1)TID「D2」、「E3」、「T4」、「E5」など、ほとんどの構造要素は、必ず1回発生している。(2)TIDが「E6」の「author」は100件の構造化文書データにそれぞれ最低1回、最大3回出現(発生)している。その平均は「2.5」であり、標準偏差は「0.4」である。つまり、100件の構造化文書データのうちのほとんどに2回以上発生していることになる。(3)TIDが「E11」の「abstract」TIDが「T12」の「abstract/#text」は、100件の構造化文書データにそれぞれ0回もしくは1回発生する。
図24は、TIDが「E6」の「author」の発生ヒストグラムのイメージを説明する図である。平均発生回数「2.5」で標準偏差が「0.4」である。「2.5」を中心に「2.5−0.4」から「2.5+0.4」までの間に100件の構造化文書データのうちの68%が集中していると予想される。
このように、大量の構造化文書データを格納していくことにより、構造テンプレートST1の統計データテーブルには、当該大量の構造化文書データのうちの一部の構造化文書データ群に共通する構造が表れてくる。この共通の構造を抽出して新たな構造テンプレートを生成することができる。構造テンプレートST1から抽出される新たな構造テンプレートST2は、構造テンプレートST1と同様に、構造テンプレート記憶部112の「Bookfolder」の下に格納される。
次に、図15〜図16に示すフローチャートを参照して、構造テンプレート更新部36における構造テンプレート抽出処理動作について説明する。なお、この構造テンプレート抽出処理は、所定時間毎あるいは必要に応じて随時開始される。
構造テンプレート更新部36は、構造テンプレート記憶部112に記憶されている各構造テンプレートSqの統計データテーブル上のデータが新たな構造テンプレートの生成基準を満たしているか否かチェックする(ステップS51)。
新たな構造テンプレートの生成基準としては、例えば、以下のα、β、γは閾値とすると、「NumRegist>α かつ SumOcc>γを満足する要素の数>β」である。この生成基準を満たすような統計データテーブルをもつ構造テンプレートSq1が存在するときには(ステップS52)、ステップS53へ進み、存在しないときには処理を終了する。
ステップS53以下では、構造テンプレートSq1を基に、新たな構造テンプレートSq2を生成する。すなわち、統計データテーブルにて、構造テンプレートSq1上に典型的な構造パターンが現れた場合、その典型的な構造パターンを新たな構造テンプレートSq2として格納する。
まず、ステップS53では、構造テンプレートSq1の統計データテーブルを基に、Sq1の各要素について、1つの構造化文書データに発生する回数の平均値と標準偏差と、平均的な繰り返し数NumSibを決定する(ステップS53)。ここでは平均と標準偏差は以下のように求められる。
平均=SumOcc/NumRegist
標準偏差={SumOcc2/NumRegist−(SumOcc/NumRegist)1/2
NumSib=INT(平均−標準偏差)
標準偏差とは誤差である。分析対象となっているデータ全体のばらつきが左右対称なつりがね型の正規分布にしたがっていると仮定するならば、「平均−標準偏差」〜「平均+標準偏差」の範囲内にデータの約68%が存在することを意味する。構造の繰り返し回数がNumSib以上である確率は84%以上であることが期待される。
ステップS54へ進み、統計データテーブル上の要素のうち、NumSibが「0」でない要素があれば、当該要素については、NumSibの数だけSq1に追加した新たな構造テンプレートSq2を生成する。構造テンプレートSq2と、構造テンプレートSq2の統計データテーブルを1組にして、構造テンプレート記憶部112に既に記憶されている構造テンプレートSq1を格納するフォルダ内に格納する。
次に、図16のステップS55へ進み、構造テンプレートSq2のルートノードからスタートし、下位ノードへと深さ優先で構造要素をたどりながら(トラバースして)、構造テンプレートSq2の統計データテーブルに各要素のTIDを登録しながら以下の処理を行う。
Sq2の構造要素のうち、SumOcc>γなる要素は固定配置要素と決定する(ステップS55)。固定配置要素には固定配置要素のエレメントID(OIDoffset)を「0」から順に割当ていき、当該エレメントIDを統計データテーブルに登録する(ステップS56)。一方、Sq2の構造要素のうち、SumOccがγ以下なる要素は固定配置要素ではないので、OIDoffsetは割り当てない。統計データテーブル上の当該要素のTIDに対応する欄の「OIDoffset」には、未定義「UNDEF」を登録する。
Sq2の全ての要素について探索が終了したら、Sq1とSq2の統計データテーブル上のSumOcc、SumOcc2、MinOcc、MaxOcc、NumSib、平均、標準偏差の各値を初期化する(ステップS57)。
例えば、図23に示すような、構造テンプレートST1(図10参照)の統計データテーブルからは、図15〜図16の構造テンプレート抽出処理により、図26に示すような新たな構造テンプレートST2が生成される。ここでは、α=100、β=5、γ=100と設定されているとものとする。この新たなに生成された構造テンプレートST2と統計データテーブルは、図25に示すように、「bookfolder」フォルダに格納される。
図23の統計データテーブルでは、TID「E6」の平均値が「2.5」であり、「author」が1つの構造化文書データ中に2回以上発生することが多いため、図10の構造テンプレートST1では「author」1つで縮約されていた構造部分が、図26に示す構造テンプレートST2では、展開されて2個になっている。
構造テンプレートST2の各要素には、それぞれ構造テンプレートST1とは異なるTIDが新たに振り直されている。
構造テンプレートST2の初期化された統計データテーブルを図27に示し、構造テンプレートST1の初期化された統計データテーブルを図28に示す。図23の統計データテーブル上でSumOccがγ=100以上の構造テンプレートST1の各要素(TIDが)に対応する、構造テンプレートST2の各要素は固定配置要素と設定され、図27に示すように、上流の要素から順に「0」〜「13」とエレメントIDが割りふられている。なお、TIDが「E27」の「abstract」とTIDが「E27」の「abstract/#text」は、固定配置要素とは設定されていない。図27、図28に示す統計データテーブル上のSumOcc、SumOcc2、MinOcc、MaxOcc、NumSib、平均、標準偏差の各値は、図16のステップS57において「0」に初期化されている。
構造テンプレートST2が生成された後に、当該構造テンプレートST2に基づき、「bookFolder」フォルダに大量の<book><title>…</abstract></book>なる構造化文書データを格納されたときの構造テンプレートST2の統計データテーブルを図29に示し、構造テンプレートST2を図30に示す。
構造テンプレートST3の各要素には、それぞれ構造テンプレートST2とは異なるTIDが新たに振り直されている。
図30に示す構造テンプレートST3にはTID「E29」の「keyword」が追加されている。また、図29からも明らかなように、TID「E27」の「abstract」と、TID「T28」の「abstract/#text」の1つの構造化文書データ中に出現する平均回数は「1」である。
図29に示す統計データテーブル上のデータは、新たな構造テンプレートの生成基準を満たすので、ここから図32に示すようなような新たな構造テンプレートST3が生成される。構造テンプレートST3と、図33に示すような統計データテーブルは、図31に示すように、「bookfolder」フォルダに格納される。
図29からも明らかなように、TID「E27」の「abstract」と、TID「T28」の「abstract/#text」は1つの構造化文書データ中に必ず1回出現するので、構造テンプレートST3では、図33に示すように、新たに固定配置要素と設定され(新たなTIDは、「E44」「T45」)、OIDoffset「14」「15」が設定されている。
このように、1つの構造テンプレートST1から新たな構造が認識され、新たな構造テンプレートST2が生成(抽出)される。また、構造テンプレートST2からはさらに新たな構造が認識され、構造テンプレートST3が生成(抽出)される。1つの構造テンプレートが構造化文書データの種類を表すとすると、構造化文書データを格納する際に、図12のステップS8で構造テンプレートを選択することで、構造化文書データをその構造上の種類で分類しながら構造化文書データ記憶部113に格納することができるのである。
なお、格納される各構造化文書データの各要素のOIDは、ドキュメントID(DocID)とエレメントID(ElemnID)とテンプレートID(TID)とからなる。従って、格納時に図12のステップS8で選択される構造テンプレートのTIDが当該構造化文書データの各要素のOIDに含まれている。
図34は、図1の構造化文書データの各要素に、構造テンプレートST1のTIDを付与して格納したときの構造化文書データ記憶部113の記憶例を模式的に示したものである。ここで、図1の構造化文書データのドキュメントID(DocID)は「2」である。なお、DocIDが「2」の構造化文書データを格納する際には、固定配置要素がまだ設定されていないので、当該構造化文書データのルートノードのエレメントID「0」から開始して、上流から下流に向けて順番にエレメントIDが割りふられている。
図34に示すように、構造化文書データ記憶部113には、各構造化文書(のファイル)の格納する複数の記憶エリアからなり、そのうちの1つの格納エリア、例えば、DocIDが「2」の構造化文書データの格納エリアに着目すると、当該格納エリアは、当該構造化文書データ中の各要素を格納するための複数の記憶エリアからなる。各構造化文書データの記憶エリアはドキュメントIDにより一意に特定することができる。すなわち、ドキュメントIDは、構造化文書データ記憶部113内の構造化文書の記憶エリアを特定するアドレスに対応する情報であるといえる。また、各構造化文書データの格納エリア内の各要素の記憶エリアは、エレメントIDにより一意に特定することができる。すなわち、エレメントIDは、要素の格納エリアを特定するアドレスに対応する情報であるといえる。
従って、OIDが与えられれば、その中のドキュメントIDと、エレメントIDから、構造化文書データ記憶部113内の当該要素の記憶エリアの配置位置を特定することができるのである。
各要素の記憶エリアには、当該要素のTIDと、当該要素の親要素のOIDと、当該要素の子要素のOIDあるいはテキストデータと、当該要素の兄弟要素のOIDなどが格納されている。
固定配置要素とは、当該要素が出現する全ての構造化文書データの構造上で当該要素の発生位置が常に一定である要素であり、構造化文書データ記憶部113内に格納される多くの構造化文書データに共通する典型的な構造(構造テンプレート)を構成する要素である。各構造化文書の記憶エリア内で予め定められたエリアを当該固定配置要素の記憶エリアとする。これを固定配置要素のエレメントID(OIDoffset)で特定することにより、OIDoffsetをエレメントIDにもつ要素の当該典型的な構造中の配置位置が、当該エレメントIDから特定することができる。すなわち、従来のように、各構造化文書データの階層構造を辿ることなく、ある要素のOIDoffsetからその上流に配置されている要素のエレメントIDが容易に得られるのである。
多くの構造化文書データが格納されれば、それに合わせて多くの固定配置要素が設定され得る。また、多くの構造化文書データが格納されれば、その構造の違いから多くの構造テンプレートが生成され得る。なお、固定配置要素には、どの構造テンプレートにおいても当該固定配置要素が含まれていれば、全て同じOIDoffsetで区別される。
各構造化文書データの各要素は、当該構造化文書データの構造により分類されてTIDが与えられ、さらに、固定配置要素である場合は、OIDoffsetのエレメントIDが与えられる。よって、OIDが与えられれば、そのなかに含まれるドキュメントIDから当該要素をもつ構造化文書データを特定する事ができるのみならず、当該OIDに含まれるTIDから当該構造化文書データの構造上の配置位置が特定でき、さらに、当該OIDに含まれるElemnID(特にOIDoffset)から、当該構造化文書データ中の配置位置と、構造化文書データ記憶部113内の格納エリアまで特定することができるのである。
このように、構造化文書データの各要素のOIDがドキュメントID(DocID)とエレメントID(ElemnID)とテンプレートID(TID)とからなり、さらに、構造化文書データ記憶部113内の各構造化文書データを格納する記憶エリア内の全構造テンプレートで共通に設定される固定配置要素の記憶エリアの位置を固定とし、当該固定配置要素の記憶エリアをエレメントIDとして与えることにより、構造化文書データの検索時には、ある1つの検索条件を満たす要素OIDが得られたら、階層構造を辿ることなく、当該要素の上流の要素のOIDを当該OIDの値を変換することで得られるのである。
構造テンプレート記憶部112(の「bookfolder」フォルダ)に、図10の構造テンプレートST1と図26の構造テンプレートST2が存在するときに、図1に示すような「authers」要素に「auther」要素が2回繰返し出現する構造化文書データを新たに格納する場合には、図12のステップS8では、当該構造化文書データの構造Scに最も類似する構造テンプレートとして、「authers」要素に「auther」要素が2回繰返し出現する構造テンプレートST2が選択される。
図35は、図1の構造化文書データを格納する際に、構造テンプレートST2を選択して、構造テンプレートST2のTIDを付与して格納したときの構造化文書データ記憶部113の記憶例を模式的に示したものである。ここで、図1の構造化文書データのドキュメントID(DocID)は「3」である。なお、構造テンプレートST2では、エレメントID「1」〜「13」は固定配置要素のエレメントIDとして設定されている。
すなわち、構造化文書データのルートにある「book」要素、その下に発生する「title」要素と「authers」要素、「title」要素の下に発生する(「title」要素がもつ)テキスト要素(「title/#text」)、「authers」要素の下に発生する2つの「auther」要素、当該各「auther」要素の下に発生する「first」要素と「last」要素とこれらのテキスト要素は、それぞれその発生位置が確定されているとともに、構造化文書データ記憶部113内の各構造化文書データを記憶する記憶エリア内において、当該固定配置要素を記憶するための記憶エリアの位置が固定となっている。固定配置要素の記憶エリアは、当該記憶エリアに対応するエレメントIDで特定される。
図1の構造化文書データの各要素には、ドキュメントIDは「3」と、構造テンプレートST2の各構造要素のTIDをもつOIDが与えられ、固定配置要素には固定配置要素に固定のエレメントID(OIDoffset)が与えられ、固定配置要素でない要素には、OIDoffset以外のエレメントIDが与えられる。例えば、「book」要素のOIDは<DocId=3,ElemId=0,TID=D13>となり、1番目の「author[1]」要素のOIDは<DocId=3,ElemId=4,TID=E17>となり、2番目の「author[2]」要素のOIDは<DocId=3,ElemId=9,TID=E22>となる。なお、固定配置要素ではない、「abstract」要素や「abstract/#text」要素には、固定配置要素のエレメントID「1」〜「13」以外のエレメントIDである、「14」、「15」がそれぞれ与えられる。
(検索)
図36〜図37に示すフローチャートに従って、検索処理部104の処理動作について説明する。
図38は、検索処理部104に入力する問合せデータの一例を示したものである。XMLでは、XQuery(XML Query Language)という問合せ言語があり、これに基づいた問合せ記述方法に則っている。
図38に示す問合せデータには、「構造化文書DB「DB」の階層木の中に「authers」という要素がある。この「authers」という要素の中に「田中」という文字列を含むテキスト要素をもつ「last」という要素がある。そのような「authers」の一覧を求めよ」という条件が記述されている。
図38に示すような問合せデータは、クライアント201の検索部203からサーバ101へ送信され、サーバ101の要求処理部102で受信される。
以下、図36〜図37に示すフローチャートを参照して、例えば、図38に示したような問合せデータを受信した検索処理部104の処理動作の概略を説明する。また、構造テンプレート記憶部112には、図25に示したような状態であり、「bookfolder」フォルダに構造テンプレートST1と構造テンプレートST2が記憶されているものとする。
要求処理部102で受信された問合せデータは、検索処理部104の問合せ構文解析部41に渡される。問合せ構文解析部41では、受け取った問合せデータの構文解析を行い(ステップS101)、この結果を基に、問合せ構造抽出部42では、当該問合せデータから、問合せグラフと呼ばれるグラフ構造を抽出する(ステップS102)。例えば、図38に示した問合せデータの場合、図39に示すような問合せグラフが得られる。ここでは、問合せグラフで表されるような問合せデータ中の構造をScと表す。
問合せグラフは、図39に示すように、問合せデータ中に含まれる要素名(例えば、「db“DB”」、「authers」、「last」)や、「田中」のような語彙(文字列)にそれぞれ対応する変数と、各変数を、問合せデータ中に含まれる要素と文字列の包含関係に従って接続して構成されている。
次に、問合せ構造照合部43は、構造化文書データベース111の構造テンプレート記憶部112から構造を取り出す。この取り出した構造をSpと表す。ここでは、例えば、問合せデータ中で指定された、構造化文書データベースの階層木の最も上流にある要素、すなわち、「book」という要素以下の構造を抽出する。そして、この取り出した構造Spと先ほどのScとの照合を行う。この結果、Scの各要素に対して、取り得るTIDを割当てる(ステップS103)。
図40は、ScとSpの照合を行った結果、図39の各変数V0〜V2に対し求められたTIDの3つの組合せを表したものである。1つ目の組合せは、構造テンプレートST1から得られたもので、変数V0,V1、V2の順にTIDは、「F0」「T10」「E5」が得られている。2つ目の組合せは、構造テンプレートST2から得られたもので、変数V0,V1、V2の順にTIDは、「F0」「T21」「E16」が得られている。3つ目の組合せは、構造テンプレートST2から得られたもので、変数V0,V1、V2の順にTIDは、「F0」「T26」「E16」が得られている。
問合せ実行部44は、問合せグラフに含まれる全ての変数の具体化を目標として、テーブルと呼ばれる変数集合の取り得る値の組み合わせを表すデータを次々と生成する。ここでは、1つのテーブルを生成する単位処理をオペレータと呼ぶ。
まず、問合せグラフに含まれる全ての変数が1テーブルで具体化されているか判定する(ステップS104)。Yesであれば、全ての変数の取り得る値の組合せが具体化されたので、それが結果となる。なお、変数が取り得る値とは、OIDのことである。
以下、問合せグラフに含まれる全ての変数が1テーブルで具体化されていないならば、具体化されるまで、ステップS105〜ステップS110を繰り返す。
ステップS105では、索引データ記憶部114に記憶されている索引データを用いた検索が可能か判定する。「contains」など語彙索引系の関数があれば、構造化文書DB11中の図8に示すような索引データを用いて検索を高速化できる。この場合LexicalScanWithTidオペレータを実行する。
図37のステップS106では、親ドキュメント取得操作が可能か判定する。子要素OIDから親ドキュメントルートOIDをダイレクトに取り出すことができれば、GetDocumentオペレータを実行する。
ステップS107では、複数テーブルに同一変数が発生しているか判定する。発生している場合は2つのテーブル毎にJoinオペレータを実行する。
ステップS108では、値を取得すべき変数がすべて具体化されており、問合せの先頭にあるデータベースのルートを指定する「db()」しか残っていなければ、Nopオペレータ(無操作)を実行する。
ステップS109では、任意の2変数の上位階層にある変数に対してドキュメント型TIDが割当てられており、その2変数の値が具体化されていれば、FilterDocumentオペレータを実行する。
ステップS110では、変数の上位階層に変数があり、下位階層にある変数が具体化されていて上位階層にある変数が具体化されていなければ、ScanAncestorWithTIdオペレータを実行する。
ステップS111では、結果出力処理を行う。ここで各変数の取り得る値(OID)の組合せ(OIDの組合せ)がテーブルとして得られている。各組合せは、同じドキュメントIDをもつ複数のOIDからなり、よって、テーブル上の各組合せは、1つの構造化データに対応する。テーブル上の組合せから得られる各ドキュメントIDに対応する構造化データを構造化文書データ記憶部112から取り出すことにより、問合せデータに合致する構造化文書データの集合を得ることができる。
図39に示した問合せグラフでは、変数は、丸で囲まれたノードで表されており、丸のなかに変数名が記述されている。これを変数ノードと呼ぶ。また、問合せデータ中に指定されていた要素は、六角形のなかに「TAG」と書かれたノードで表されている。これをタグノードと呼ぶ。さらに、問合せデータ中に指定されていた文字列は、六角形のなかに「VALCMP」と書かれたノードで表されている。これを値比較タグノードと呼ぶ。
図39に示した問合せグラフの各変数に対し割当てられたTIDを基に、ステップS104〜ステップS110の処理を以下のように実行する。以下、図41、図42を参照して説明する。
(1)問合せグラフには値比較タグノードがありcontains語彙索引系の関数なので、文字列「田中」に関して、LexicalScanWithTidオペレータを実行する(図41(a))。すなわち、「田中」という文字列を含む要素のOIDを索引データ記憶部114に記憶されている索引データから求め、そのうちTIDが「T10」「T21」「T26」のうちのいずれかであるものを得る。この結果、変数ノードV1が具体化する(図42(a)に示すTable1)。
(2)変数V1が具体化され、変数V1の上位階層にある変数V2が具体化されていないので、図42(a)のTable1の各OIDについて、ScanAncestorWithTIdオペレータを実行する(図41(b))。
例えば、図42(a)のTable1の最初のOID<2,13,T10>に対しScanAncestorWithTidオペレータを実行し、当該OIDの上流にあり、変数V2に対応するTID「E5」をもつOIDを求める場合について説明する。すなわち、この場合、TID「E5」を含む構造テンプレートには、固定配置要素が存在しないため、構造化文書データ記憶部113にアクセスして、ドキュメントID「2」の構造化文書データの各要素をたどらなければならない。そのため、ディスクI/Oが発生する。ドキュメントID「2」の構造化文書データのOID<2,13,T10>の要素から、そのの上流のノードをたどることでTIDが「E5」である要素のエレメントID(例えば、ここでは「authers」に対応するエレメントID「2」)を取得する。すなわち、OID<2,13,T10>の要素からOID<2,2,E5>を得る(図42(b)参照)。
次に、図42(a)のTable1の2番目のOID<3,13,T26>に対しScanAncestorWithTidオペレータを実行し、当該OIDの上流にあり、変数V2に対応するTID「E16」をもつOIDを求める場合について説明する。この場合、TID「E16」を含む構造テンプレートでは、TID「E16」は固定配置要素であるから、構造化文書データ記憶部113にアクセスすることなく(ドキュメントID「3」の構造化文書データの各要素をたどる必要なく)、TID「E16」のエレメントID「3」が得られる。すなわち、TID「E16」に対応するOIDは固定化されているので、ディスクI/Oの発生なく、OID<2,13,T10>のドキュメントID「3」はそのままに、TID「T10」、エレメントID「13」を「E16」「3」にそれぞれ変換することで、OID<3,3,E16>を得る(図42(b)参照)。
Tabele1上の他のOIDについても上記同様にScanAncestorWithTidオペレータを実行する。その結果、変数V1について求めた各OIDに対応する変数V2が得られ、図42(b)に示すようなTable2が得られる。
(3)図42(b)のTable2に示すように、変数V1、V2の取り得る値の組合せ(オブジェクトIDの組合せ)が得られる。1つの組合せに含まれる各OIDの持つドキュメントIDは同じものである。
このようにして、「authers」要素に対する変数V2もTeble2で具体化されているので、「authers」要素以下のデータの一覧が検索結果として問合せ実行部44から出力される。検索結果は、要求処理部102から検索要求元のクライアント201へ渡される。クライアント201では、サーバ101から受け取った構造化データを表示部205へ表示する。
図39に示す問合せグラフに基づき、図41に示すように、LexicalScanWithTidオペレータを実行して、語彙「田中」を含むOIDのうち、TIDが「T10」「T21」「T26」のうちのいずれかであるものを得る。その結果、変数V1に対し、<2,13,T10>、<3,13,T26>、…というOIDが得られる。ここでテンプレートID「T10」は構造テンプレートST1にある構造要素、「T26」は構造テンプレートST2にある構造要素である。
ScanAncestorWithTidオペレータを実行することにより、変数V2に対するOIDが得られる。これは変数V1のOIDの値から得られるものである。
従来は、変数V1に対し得られたOID<3,13,T26>から、TIDが「E5」と「E16」のいずれかである上流要素を取得するためには、構造化文書DB中の構造化文書データファイルの各要素をたどらなければならない。そのためにはディスクI/Oが発生してしまう。
一方、本実施形態によれば、変数V1に対し得られたOID<3,13,T26>から{E5,E16}のいずれかのTIDを持つ上流要素を取得するためには、構造化文書DB中の構造化文書データファイルの各要素をたどる必要はない。なぜならば、「T26」をもつ要素は固定配置要素であるから、その上流要素には同じく固定配置要素の「E16」をもつ要素があることが明らかであるためである。「E16」に対応するエレメントIDは「3」である。結果として、変数V1に対応するOID<2,13,T10>の上流にある変数V2に対応するOID<2,2,E5>が求まり、変数V1に対応するOIDに対応する<3,13,T26>の上流にある変数V2に対応するOID<3,3,E16>が求まる。
以上説明したように、上記実施形態によれば、構造化データの格納時には、構造化データの各要素データに、テンプレートIDとエレメントIDが与えられ、特に、構造テンプレートを構成する複数の要素のうち、出現頻度の高い要素のテンプレートIDが与えられた要素データには構造化データ群で共通のエレメントIDが与えられる。
各要素データのもつテンプレートIDとエレメントIDには、当該要素データを含む構造化データの文書構造や当該要素データの記憶位置が表されているため、検索時には、各構造化データのそれぞれの文書構造を辿る必要がないため、検索が高速に行える。
本発明の実施の形態に記載した本発明の手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、半導体メモリなどの記録媒体に格納して頒布することもできる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
構造化文書データの一具体例を示した図。 本発明の実施形態に係る構造化文書管理システムの機能的な構成例を示した図。 格納処理部の機能的な構成例を示した図。 検索処理部の機能的な構成例を示した図。 サーバのハードウエア的な構成例を示した図。 構造化文書データ記憶部のデータ構造を模式的に示した図。 索引データについて説明するための図。 索引データ記憶部のデータ構造を模式的に示した図。 構造テンプレート記憶部に記憶されている階層構造を模式的に示した図。 構造テンプレート記憶部に記憶されている構造テンプレート(グラフデータ)ST1の位置具体例を示した図。 構造テンプレートST1の統計データテーブルを示した図。 格納処理動作を説明するためのフローチャート。 格納処理動作を説明するためのフローチャート。 構造テンプレート更新処理動作を説明するためのフローチャート。 構造テンプレート抽出処理動作を説明するためのフローチャート。 構造テンプレート抽出処理動作を説明するためのフローチャート。 構造テンプレート記憶部に記憶されている構造の初期状態の一例を示した図。 「bookFolder」フォルダに格納する構造化文書データの一例を示した図。 図18の構造化文書データを格納したときの構造テンプレートST1の統計データテーブルの状態を示した図。 「bookFolder」フォルダに格納する構造化文書データの一例を示した図。 図20の構造化文書データを格納したときの構造テンプレートST1の統計データテーブルの状態を示した図。 「bookFolder」フォルダに格納する構造化文書データを示した図。 大量の構造化文書データを格納したときの構造テンプレートST1の統計データテーブルの状態を示した図。 格納された複数の構造化文書データ中の「auther」要素の発生回数の平均値とその標準偏差について説明するための図 構造テンプレートST1から構造テンプレートST2が生成されたときの構造テンプレート記憶部に記憶されている構造を模式的に示した図。 構造テンプレートST1を示した図。 構造テンプレートST1の統計データテーブルの初期状態を示した図。 構造テンプレートST1の統計データテーブルの初期状態を示した図。 大量の構造化文書データが格納された後の構造テンプレートST2の統計データテーブルを示した図。 更新された構造テンプレートST2を示した図。 構造テンプレートST2から構造テンプレートST3が生成されたときの構造テンプレート記憶部に記憶されている構造を模式的に示した図。 構造テンプレートST3を示した図。 構造テンプレートST3の統計データテーブルの初期状態を示した図。 図1の構造化文書データの各要素に、構造テンプレートST1のTIDを付与して格納したときの構造化文書データ記憶部の記憶例を模式的に示した図。 図1の構造化文書データを格納する際に、構造テンプレートST2を選択して、構造テンプレートST2のTIDを付与して格納したときの構造化文書データ記憶部の記憶例を模式的に示した図。 検索処理動作を説明するためのフローチャート。 検索処理動作を説明するためのフローチャート。 問合せデータの一例を示した図。 図38の問合せデータから得られる問合せグラフを示した図。 図39の各変数V0〜V2に対し求められたTIDの3つの組合せを表した図。 図39の問合せグラフに基づく検索処理に用いられるオペレータ系列を示した図。 図39のオペレータ系列による処理動作を説明するための図。
符号の説明
31…構造化文書構文解析部、32…構造化文書構造抽出部、33…構造化文書構造照合部、34…構造化文書格納部、35…構造配置イメージ決定部、36…構造テンプレート更新部、41…問合せ構文解析部、42…問合せ構造抽出部、43…問合せ構造照合部、44…問合せ実行部、101…サーバ装置、102…要求処理部、103…格納処理部、104…検索処理部、111…構造化文書データベース、112…構造テンプレート記憶部、113…構造化文書データ記憶部、114…索引データ記憶部、201…クライアント装置、202…登録部、203…検索部、204…入力部、205…表示部。

Claims (10)

  1. 複数の要素を含む階層構造を有する複数の構造化文書を記憶するための複数の文書記憶エリアを含み、各文書記憶エリアは、前記複数の要素を記憶するための複数の要素記憶エリアを含み、各要素記憶エリアは、そのアドレスとしてエレメントIDが割り当てられている文書記憶手段と、
    予めエレメントIDが定められている複数の固定配置要素を含む階層構造のテンプレートである第1構造テンプレートと、該第1構造テンプレート中の各要素について、前記文書記憶手段に記憶されている複数の構造化文書中での該要素の出現回数とを記憶する構造テンプレート記憶手段と、
    前記階層構造を有する構造化文書を入力する入力手段と、
    前記入力手段で入力された構造化文書を前記文書記憶手段に格納するための処理を行う格納処理手段と、
    を含む構造化文書記憶装置における構造化文書格納方法であって、
    前記入力手段が、前記階層構造を有する構造化文書を入力する第1ステップと、
    前記格納処理手段が、入力された前記構造化文書から、その階層構造を抽出する第2ステップと、
    前記格納処理手段が、抽出された前記階層構造には存在するが、前記第1構造テンプレートには存在しない要素を、前記第1構造テンプレートに追加する第3ステップと、
    前記格納処理手段が、前記文書記憶手段の前記複数の記憶エリアのうちの1つに、前記構造化文書を記憶し、その際、該構造化文書中の各固定配置要素は、そのエレメントIDに対応する要素記憶エリアに記憶する第4ステップと、
    前記格納処理手段が、前記第1構造テンプレート中の要素のうち、前記構造化文書に出現している要素の前記出現回数を1つインクリメントする第5ステップと、
    前記格納処理手段が、前記文書記憶手段に予め定められた数の構造化文書が記憶されるまで、前記第1ステップから前記第5ステップを繰り返すステップと、
    前記格納処理手段が、前記出現回数が予め定められた閾値以上の新たな固定配置要素と前記複数の固定配置要素とを含む第2構造テンプレートを、前記第1構造テンプレートから抽出する抽出ステップと、
    を含む構造化文書記憶方法。
  2. 前記第1構造テンプレート中の固定配置要素は、前記記憶手段に記憶されている複数の構造化文書中で共通する要素である請求項1記載の構造化文書記憶方法。
  3. 前記第4のステップは、
    前記構造化文書中の各固定配置要素に、該構造化文書を識別するためのドキュメントIDと、該固定配置要素の前記第1構造テンプレート中での位置を識別するためのテンプレートIDと、該固定配置要素のエレメントIDとを含むオブジェクトIDを割り当てるステップを含む請求項1記載の構造化文書記憶方法。
  4. 前記第4ステップは、
    前記構造化文書中の前記固定配置要素以外の要素には、前記固定配置要素のエレメントID以外のエレメントIDを割り当てて、該要素をそのエレメントIDに対応する要素記憶エリアに記憶する請求項1記載の構造化文書記憶方法。
  5. 複数の要素を含む階層構造を有する複数の構造化文書を記憶するための複数の文書記憶エリアを含み、各文書記憶エリアは、前記複数の要素を記憶するための複数の要素記憶エリアを含み、各要素記憶エリアは、そのアドレスとしてエレメントIDが割り当てられている文書記憶手段と、
    予めエレメントIDが定められている複数の固定配置要素を含む階層構造のテンプレートである第1構造テンプレートと、該第1構造テンプレート中の各要素について、前記文書記憶手段に記憶されている複数の構造化文書中での該要素の出現回数とを記憶する構造テンプレート記憶手段と、
    前記階層構造を有する構造化文書を入力する入力手段と、
    入力された前記構造化文書から、その階層構造を抽出する抽出手段と、
    抽出された前記階層構造には存在するが、前記第1構造テンプレートには存在しない要素を、前記第1構造テンプレートに追加する更新手段と、
    前記文書記憶手段の前記複数の記憶エリアのうちの1つに、前記構造化文書を格納し、その際、該構造化文書中の各固定配置要素は、そのエレメントIDに対応する要素記憶エリアに格納する格納手段と、
    前記第1構造テンプレート中の要素のうち、前記構造化文書に出現している要素の前記出現回数を1つインクリメントする計算手段と、
    前記文書記憶手段に予め定められた数の構造化文書が記憶されたとき、前記出現回数が予め定められた閾値以上の新たな固定配置要素と前記複数の固定配置要素とを含む第2構造テンプレートを、前記第1構造テンプレートから抽出する構造テンプレート抽出手段と、
    を含む構造化文書記憶装置。
  6. 前記第1構造テンプレート中の固定配置要素は、前記記憶手段に記憶されている複数の構造化文書中で共通する要素である請求項記載の構造化文書記憶装置。
  7. 前記格納手段は、
    前記構造化文書中の各固定配置要素に、該構造化文書を識別するためのドキュメントIDと、該固定配置要素の前記第1構造テンプレート中での位置を識別するためのテンプレートIDと、該固定配置要素のエレメントIDとを含むオブジェクトIDを割り当てる手段を含む請求項記載の構造化文書記憶装置。
  8. 前記格納手段は、
    前記構造化文書中の前記固定配置要素以外の要素には、前記固定配置要素のエレメントID以外のエレメントIDを割り当てて、該要素をそのエレメントIDに対応する要素記憶エリアに記憶する請求項記載の構造化文書記憶装置。
  9. 複数の構成要素と、構成要素がもつテキスト要素とを含む複数の要素からなる階層構造を有する複数の構造化文書を記憶するための複数の文書記憶エリアを含み、各文書記憶エリアは、前記複数の要素を記憶するための複数の要素記憶エリアを含み、各要素記憶エリアは、そのアドレスとしてエレメントIDが割り当てられている文書記憶手段と、
    予めエレメントIDが定められている複数の固定配置要素を含む階層構造のテンプレートであって、各固定配置要素は、その要素名と、エレメントIDと、前記構成要素及び前記テキスト要素のうち当該固定配置要素に対応する種別及び該階層構造上での位置を示すテンプレートIDとを有する構造テンプレートを記憶する構造テンプレート記憶手段と、
    入力された前記構造化文書の各要素に、該構造化文書を識別するための文書IDと、前記構造テンプレート上で該要素と同じ位置にある固定配置要素のエレメントID及びテンプレートIDとを含むオブジェクトIDを割り当てた後、該構造化文書を前記文書記憶手段の前記複数の記憶エリアのうちの1つに記憶し、その際、該構造化文書中の各固定配置要素を、そのエレメントIDに対応する要素記憶エリアに記憶する格納処理手段と、
    文字列と、該文字列を含むテキスト要素の前記オブジェクトIDとがリンクされて記憶されている索引データ記憶手段と、
    前記構造テンプレート上の前記複数の固定配置要素のうちの少なくとも1つの要素名と、該要素に含まれる文字列とを含む問い合わせデータを入力する入力手段と、
    前記問い合わせデータを基に、前記文書記憶手段から構造化文書を検索する検索手段と、
    を含む構造化文書管理システムにおける構造化文書検索方法であって、
    前記入力手段が、前記複数の固定配置要素のうちの第1の固定配置要素の要素名と、該第1の固定配置要素に含まれる第2の固定配置要素と、該第2の固定配置要素に含まれる文字列とを含む問い合わせデータを入力する入力ステップと、
    前記検索手段が、前記構造テンプレートから、前記第2の固定配置要素の要素名と同じ要素名の固定配置要素に含まれるテキスト要素に対応する第1テンプレートIDと、前記第1固定配置要素の要素名と同じ要素名の固定配置要素に対応する第2テンプレートIDを得る照合ステップと、
    前記検索手段が、前記索引データ記憶手段から、前記問い合わせデータ中の前記文字列にリンクされ、かつ前記第1テンプレートIDを含むオブジェクトIDである第1オブジェクトIDを検索する第1検索ステップと、
    前記検索手段が、前記第1オブジェクトIDに含まれている前記第1テンプレートIDを前記第2テンプレートIDに変換し、前記第1オブジェクトIDに含まれるエレメントIDを、前記構造テンプレート記憶手段に記憶されている前記第2テンプレートIDをもつ固定配置要素のエレメントIDに変換することにより、前記第1オブジェクトIDに含まれる文書IDと、前記第2テンプレートIDと、前記第2テンプレートIDに対応するエレメントIDとを含む第2オブジェクトIDを求める第2検索ステップと、
    を含む構造化文書検索方法。
  10. 前記第2オブジェクトIDをもつ要素は、前記複数の記憶エリアのうち該第2オブジェクトID中の文書IDに対応する記憶エリア内の該第2オブジェクトID中の前記エレメントIDが割り当てられている要素記憶エリアに記憶されている請求項9記載の構造化文書検索方法。
JP2004033493A 2004-02-10 2004-02-10 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法 Expired - Fee Related JP4247135B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004033493A JP4247135B2 (ja) 2004-02-10 2004-02-10 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法
US11/053,173 US7664773B2 (en) 2004-02-10 2005-02-09 Structured data storage method, structured data storage apparatus, and retrieval method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004033493A JP4247135B2 (ja) 2004-02-10 2004-02-10 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法

Publications (2)

Publication Number Publication Date
JP2005227851A JP2005227851A (ja) 2005-08-25
JP4247135B2 true JP4247135B2 (ja) 2009-04-02

Family

ID=34879214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004033493A Expired - Fee Related JP4247135B2 (ja) 2004-02-10 2004-02-10 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法

Country Status (2)

Country Link
US (1) US7664773B2 (ja)
JP (1) JP4247135B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4314221B2 (ja) * 2005-07-28 2009-08-12 株式会社東芝 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム
GB0612433D0 (en) * 2006-06-23 2006-08-02 Ibm Method and system for defining a hierarchical structure
US20080005719A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, systems, and computer program products for providing a program execution environment
JP4212615B2 (ja) * 2006-09-28 2009-01-21 株式会社東芝 構造化文書検索システム、構造化文書検索方法、検索装置、および文書管理装置
US9697211B1 (en) * 2006-12-01 2017-07-04 Synopsys, Inc. Techniques for creating and using a hierarchical data structure
US20080235258A1 (en) 2007-03-23 2008-09-25 Hyen Vui Chung Method and Apparatus for Processing Extensible Markup Language Security Messages Using Delta Parsing Technology
US8051372B1 (en) 2007-04-12 2011-11-01 The New York Times Company System and method for automatically detecting and extracting semantically significant text from a HTML document associated with a plurality of HTML documents
JP5333230B2 (ja) * 2007-10-31 2013-11-06 日本電気株式会社 候補パステーブル構築装置、候補パステーブル構築方法、候補パステーブル構築プログラム
JP5134989B2 (ja) * 2008-01-31 2013-01-30 株式会社東芝 サーバ、データ転送方法及びプログラム
US8229971B2 (en) * 2008-09-29 2012-07-24 Efrem Meretab System and method for dynamically configuring content-driven relationships among data elements
US9626339B2 (en) 2009-07-20 2017-04-18 Mcap Research Llc User interface with navigation controls for the display or concealment of adjacent content
JP5090408B2 (ja) 2009-07-22 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク通信において送信データの宛先を動的に制御する方法及び機器
JP5496853B2 (ja) 2010-10-29 2014-05-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書を分類するためのルールを生成するための方法、並びにそのコンピュータ・プログラム及びコンピュータ
JP5100820B2 (ja) * 2010-11-25 2012-12-19 株式会社東芝 問合せ式変換装置、方法およびプログラム
US9020947B2 (en) * 2011-11-30 2015-04-28 Microsoft Technology Licensing, Llc Web knowledge extraction for search task simplification
CN103516579A (zh) 2012-06-27 2014-01-15 腾讯科技(深圳)有限公司 提供离线消息的服务系统及相应的服务方法
US9665633B2 (en) * 2014-02-19 2017-05-30 Snowflake Computing, Inc. Data management systems and methods
JP6244521B2 (ja) * 2015-10-29 2017-12-13 株式会社ディビイ データベース処理プログラム、データベース処理方法及びデータベース処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100318573B1 (ko) * 1996-10-16 2001-12-28 마찌다 가쯔히꼬 문자 입력 장치 및 문자 입력 프로그램을 기억한 기록 매체
JP3696731B2 (ja) * 1998-04-30 2005-09-21 株式会社日立製作所 構造化文書の検索方法および装置および構造化文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000057163A (ja) 1998-08-12 2000-02-25 Nec Corp 構造化文書データベースシステム
JP3492247B2 (ja) 1999-07-16 2004-02-03 富士通株式会社 Xmlデータ検索システム
JP3492246B2 (ja) 1999-07-16 2004-02-03 富士通株式会社 Xmlデータ検索処理方法および検索処理システム
US6754676B2 (en) * 2001-09-13 2004-06-22 International Business Machines Corporation Apparatus and method for providing selective views of on-line surveys

Also Published As

Publication number Publication date
US7664773B2 (en) 2010-02-16
US20050192983A1 (en) 2005-09-01
JP2005227851A (ja) 2005-08-25

Similar Documents

Publication Publication Date Title
US7664773B2 (en) Structured data storage method, structured data storage apparatus, and retrieval method
US6889223B2 (en) Apparatus, method, and program for retrieving structured documents
US6510425B1 (en) Document search method for registering documents, generating a structure index with elements having position of occurrence in documents represented by meta-nodes
JP5121146B2 (ja) 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
US7822788B2 (en) Method, apparatus, and computer program product for searching structured document
KR101083563B1 (ko) 데이터베이스 관리 방법 및 시스템
JP2008052662A (ja) 構造化文書管理システム及びプログラム
JP4247108B2 (ja) 構造化文書検索方法、構造化文書検索装置、及びプログラム
JP4207438B2 (ja) Xml文書格納/検索装置及びそれに用いるxml文書格納/検索方法並びにそのプログラム
JP4309818B2 (ja) 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
US8086561B2 (en) Document searching system and document searching method
JP4724177B2 (ja) Xmlデータにアクセスするためのインデックス
JP2006127235A (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
JP4439497B2 (ja) 検索処理装置及びプログラム
JP3632643B2 (ja) 構造化文書管理装置
JP2010267081A (ja) 情報検索方法及び装置及びプログラム
JP3709890B2 (ja) 文字列検索装置
JP4866844B2 (ja) Lobに格納されたxml内容の効率的な抽出
JP5439606B1 (ja) 構造化文書管理装置、方法およびプログラム
JP2004118543A (ja) 構造化文書検索方法、検索支援方法、検索支援装置および検索支援プログラム
JP4334450B2 (ja) 構造化文書検索装置及び構造化文書検索方法
JP3842574B2 (ja) 情報抽出方法および構造化文書管理装置およびプログラム
JP2006018584A (ja) 構造化文書管理システム、値索引生成方法及びプログラム
JPH06203078A (ja) 情報検索方法およびその装置
JP5225022B2 (ja) Xmlデータ検索方法及び装置及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090106

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090109

R151 Written notification of patent or utility model registration

Ref document number: 4247135

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120116

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130116

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140116

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees