(57)【要約】【課題】構造化データの検索が高速に行える検索方法及び装置を提供する。【解決手段】複数の要素からなる階層構造と、複数の要素のうちのいずれか１つにそれぞれ対応する複数の要素データからなる複数の構造化データを記憶し、当該複数の要素データのそれぞれは当該要素データに対応する階層構造内の要素のテンプレートＩＤをもち、文字列と、複数の要素のうちの１つであって当該文字列を含む第１の要素と、複数の要素のうちの他の１つであって第１の要素を含む第２の要素とを指定した検索条件が入力されると、複数の構造化データのなかから、当該文字列を含むとともに第１の要素に対応するテンプレートＩＤをもつ第１の要素データと、第１の要素データを含むとともに第２の要素に対応するテンプレートＩＤをもつ第２の要素データとを含む構造化データを検索し、出力する。【選択図】      図２
2005190163.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶する第１のステップと、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶する第２のステップと、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素を指定した検索条件を入力する第３のステップと、
前記複数の構造化データのなかから、前記文字列を含むとともに、前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データを含む構造化データを検索する第４のステップと、
前記第４のステップで検索された構造化データを出力する第５のステップと、
を有することを特徴とする構造化データ検索方法。
【請求項２】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶する第１のステップと、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶する第２のステップと、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つであって前記第１の要素を含む第２の要素とを指定した検索条件を入力する第３のステップと、
前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第１の要素データを含むとともに前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データとを含む構造化データを検索する第４のステップと、
前記第４のステップで検索された構造化データを出力する第５のステップと、
を有することを特徴とする構造化データ検索方法。
【請求項３】
前記複数の要素データのそれぞれは、当該要素データを含む構造化データを識別するためのドキュメントＩＤと、当該要素データを当該要素データを含む構造化データ内で識別するためのエレメントＩＤと、前記テンプレートＩＤとからなるオブジェクトＩＤをもち、
前記第４のステップは、前記第１の要素データの前記オブジェクトＩＤである第１のオブジェクトＩＤに含まれるドキュメントＩＤである第１のドキュメントＩＤと、当該第１のオブジェクトＩＤに対応する構造化データ内で前記第１の要素データより上流の前記エレメントＩＤと、前記第２のテンプレートＩＤとから前記第２の要素データの前記オブジェクトＩＤである第２のオブジェクトＩＤを求めることを特徴とする請求項２記載の構造化データ検索方法。
【請求項４】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶する第１のステップと、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶する第２のステップと、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つである第２の要素と、前記複数の要素のうちのさらに他の１つであって前記第１の要素と前記第２の要素とを含む第３の要素とを指定した検索条件を入力する第３のステップと、
前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データと、前記第１の要素データと前記第２の要素データとを含むとともに前記第３の要素に対応する前記テンプレートＩＤである第３のテンプレートＩＤをもつ第３の要素データとを含む構造化データを検索する第４のステップと、
前記第４のステップで検索された構造化データを出力する第５のステップと、
を有することを特徴とする構造化データ検索方法。
【請求項５】
前記階層構造を構成する各要素のもつ前記テンプレートＩＤには、要素の種別を表す情報が含まれていることを特徴とする請求項１、２、４のうちのいずれか１つに記載の構造化データ検索方法。
【請求項６】
複数の文字列のそれぞれに、前記複数の要素データのうち当該文字列を含む要素データの前記オブジェクトＩＤを対応付けた索引データを第３の記憶手段に記憶する第６のステップをさらに有し、
前記第４のステップは、前記第３の記憶手段に記憶された索引データを基に、前記文字列を含む要素データの前記オブジェクトＩＤの集合を求め、当該集合のなかから前記第１のテンプレートＩＤを含む前記第１のオブジェクトＩＤを求めることを特徴とする請求項１、２、４のうちのいずれか１つに記載の構造化データ検索方法。
【請求項７】
前記複数の要素データのそれぞれは、当該要素データを含む構造化データを識別するためのドキュメントＩＤと、当該要素データを当該要素データを含む構造化データ内で識別するためのエレメントＩＤと、前記テンプレートＩＤとからなるオブジェクトＩＤをもち、
前記第４のステップは、前記文字列を含む要素データであって前記第１のテンプレートＩＤをもつ要素データのオブジェクトＩＤの第１の集合と、前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤを含むオブジェクトＩＤの第２の集合とから、同じドキュメントＩＤを含むオブジェクトＩＤをそれぞれ抽出し、前記第１の集合から抽出されたオブジェクトＩＤのうちの１つに対応する前記第１の要素データと前記第２の集合から抽出されたオブジェクトＩＤのうちの１つに対応する前記第２の要素データと前記第３の要素データとを含む構造化データを検索することを特徴とする請求項４記載の構造化データ検索方法。
【請求項８】
前記第４のステップは、前記第１の要素データの前記オブジェクトＩＤである第１のオブジェクトＩＤと前記第２の要素データの前記オブジェクトＩＤである第２のオブジェクトＩＤとに共通に含まれる前記ドキュメントＩＤと、前記第１の要素データと前記第２の要素データよりも上流のエレメントＩＤと、前記第３のテンプレートＩＤとから前記第３の要素データのオブジェクトＩＤを求めることを特徴とする請求項７記載のデータ検索方法。
【請求項９】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を記憶する第１の記憶手段と、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを記憶する第２の記憶手段と、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素を指定した検索条件を入力する入力手段と、
前記複数の構造化データのなかから、前記文字列を含むとともに、前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データを含む構造化データを検索する検索手段と、
前記検索手段で検索された構造化データを出力する出力手段と、
を具備したことを特徴とする構造化データ検索装置。
【請求項１０】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を記憶する第１の記憶手段と、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを記憶する第２の記憶手段と、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つであって前記第１の要素を含む第２の要素とを指定した検索条件を入力する入力手段と、
前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第１の要素データを含むとともに前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データとを含む構造化データを検索する検索手段と、
前記検索手段で検索された構造化データを出力する出力手段と、
を具備したことを特徴とする構造化データ検索装置。
【請求項１１】
前記複数の要素データのそれぞれは、当該要素データを含む構造化データを識別するためのドキュメントＩＤと、当該要素データを当該要素データを含む構造化データ内で識別するためのエレメントＩＤと、前記テンプレートＩＤとからなるオブジェクトＩＤをもち、
前記検索手段は、前記第１の要素データの前記オブジェクトＩＤである第１のオブジェクトＩＤに含まれるドキュメントＩＤである第１のドキュメントＩＤと、当該第１のオブジェクトＩＤに対応する構造化データ内で前記第１の要素データより上流の前記エレメントＩＤと、前記第２のテンプレートＩＤとから前記第２の要素データの前記オブジェクトＩＤである第２のオブジェクトＩＤを求めることを特徴とする請求項１０記載の構造化データ検索装置。
【請求項１２】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を記憶する第１の記憶手段と、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを記憶する第２の記憶手段と、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つである第２の要素と、前記複数の要素のうちのさらに他の１つであって前記第１の要素と前記第２の要素とを含む第３の要素とを指定した検索条件を入力する入力手段と、
前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データと、前記第１の要素データと前記第２の要素データとを含むとともに前記第３の要素に対応する前記テンプレートＩＤである第３のテンプレートＩＤをもつ第３の要素データとを含む構造化データを検索する検索手段と、
前記検索手段で検索された構造化データを出力する出力手段と、
を具備したことを特徴とする構造化データ検索装置。
【請求項１３】
前記階層構造を構成する各要素のもつ前記テンプレートＩＤには、要素の種別を表す情報が含まれていることを特徴とする請求項９、１０、１２のうちのいずれか１つに記載の構造化データ検索装置。
【請求項１４】
複数の文字列のそれぞれに、当該文字列を含む要素データの前記オブジェクトＩＤを対応付けた索引データを記憶する第３の記憶手段をさらに有し、
前記検索手段は、前記第３の記憶手段に記憶された索引データを基に、前記文字列を含む要素データの前記オブジェクトＩＤの集合を求め、当該集合のなかから前記第１のテンプレートＩＤを含む前記第１のオブジェクトＩＤを求めることを特徴とする請求項９、１０、１２のうちのいずれか１つに記載の構造化データ検索装置。
【請求項１５】
前記複数の要素データのそれぞれは、当該要素データを含む構造化データを識別するためのドキュメントＩＤと、当該要素データを当該要素データを含む構造化データ内で識別するためのエレメントＩＤと、前記テンプレートＩＤとからなるオブジェクトＩＤをもち、
前記検索手段は、前記文字列を含む要素データであって前記第１のテンプレートＩＤをもつ要素データのオブジェクトＩＤの第１の集合と、前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤを含むオブジェクトＩＤの第２の集合とから、同じドキュメントＩＤを含むオブジェクトＩＤをそれぞれ抽出し、前記第１の集合から抽出されたオブジェクトＩＤのうちの１つに対応する前記第１の要素データと前記第２の集合から抽出されたオブジェクトＩＤのうちの１つに対応する前記第２の要素データと前記第３の要素データとを含む構造化データを検索することを特徴とする請求項１２記載の構造化データ検索装置。
【請求項１６】
前記検索手段は、前記第１の要素データの前記オブジェクトＩＤである第１のオブジェクトＩＤと前記第２の要素データの前記オブジェクトＩＤである第２のオブジェクトＩＤとに共通に含まれる前記ドキュメントＩＤと、前記第１の要素データと前記第２の要素データよりも上流のエレメントＩＤと、前記第３のテンプレートＩＤとから前記第３の要素データのオブジェクトＩＤを求めることを特徴とする請求項１５記載のデータ検索装置。
【請求項１７】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶する第１のステップと、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶する第２のステップと、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素を指定した検索条件を入力する第３のステップと、
前記複数の構造化データのなかから、前記文字列を含むとともに、前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データを含む構造化データを検索する第４のステップと、
前記第４のステップで検索された構造化データを出力する第５のステップと、
をコンピュータに実行させるプログラム。
【請求項１８】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶する第１のステップと、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶する第２のステップと、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つであって前記第１の要素を含む第２の要素とを指定した検索条件を入力する第３のステップと、
前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第１の要素データを含むとともに前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データとを含む構造化データを検索する第４のステップと、
前記第４のステップで検索された構造化データを出力する第５のステップと、
をコンピュータに実行させるプログラム。
【請求項１９】
複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶する第１のステップと、
前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶する第２のステップと、
文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つである第２の要素と、前記複数の要素のうちのさらに他の１つであって前記第１の要素と前記第２の要素とを含む第３の要素とを指定した検索条件を入力する第３のステップと、
前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データと、前記第１の要素データと前記第２の要素データとを含むとともに前記第３の要素に対応する前記テンプレートＩＤである第３のテンプレートＩＤをもつ第３の要素データとを含む構造化データを検索する第４のステップと、
前記第４のステップで検索された構造化データを出力する第５のステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層化された論理構造をもつ構造化文書データベースに関する。
【背景技術】
【０００２】
Extensible markup language（ＸＭＬ）などで記述された構造化文書データを記憶・検索するための構造化文書管理システムには、いくつかの方式が考えられている。
【０００３】
（１）単純な方式として、構造化文書データをそのままテキストファイルとして管理する方式。この方式では、データ数やサイズが大きくなると格納効率が悪くなったり、構造化文書の特性を生かした検索が困難になる。
【０００４】
（２）ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）に構造化文書データを管理する方式。
【０００５】
（３）構造化文書データを管理するために開発されたＯＯＤＢ（Ｏｂｊｅｃｔ  Ｏｒｉｅｎｔｅｄ  Ｄａｔａｂａｓｅ）で管理する方式。基幹系などで広くＲＤＢが使われているが、これを拡張した例えばＸＭＬ対応ＲＤＢが製品として出ている。ＲＤＢは、データをフラットなテーブル形式に格納するため、ＸＭＬデータのような階層構造をテーブルに対応づける複雑なマッピングが必要となる。このマッピングのため、テーブルに関する事前の構造（スキーマ）設計を十分に行わないと、パフォーマンスが低下してしまう問題が発生する。
【０００６】
近年、上記（１）〜（３）以外に新たな方式が提案されている。
【０００７】
（４）ネイティブに構造化文書データを管理する方式。この方式は、多種多様な階層構造を持つＸＭＬデータを特別なマッピング処理すること無しに格納する。このため、格納や取得時に特別なオーバヘッドが存在しない。また、コストのかかる事前のスキーマ設計が不要になり、ビジネス環境の変化により必要に応じてＸＭＬデータの構造を自由に変更することが可能である。
【０００８】
いくら構造化文書データが効率良く格納されたからといって、格納されたデータを取り出す手段が無ければ意味が無い。この格納されたデータを取り出す手段として、問合せ言語がある。ＲＤＢの世界ではＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）があるように、ＸＭＬではＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が策定されている。ＸＱｕｅｒｙは、ＸＭＬデータをデータベースのように扱うための言語である。このため条件に合致するデータ集合の取り出しや集計・分析を行うための手段が提供されている。また、ＸＭＬデータは親子や兄弟などの要素が組み合わさった階層構造を持つため、この階層構造を辿る手段が提供されている。
【０００９】
格納された構造化文書データの階層構造を辿りながら、検索条件で指定された特定の要素と特定の構造が含まれている構造化文書データを検索するための技術は既に開示されている（例えば、特許文献１、２参照）。
【００１０】
構造化文書データの構造が大規模になるほど、データベースに格納されている構造化文書データの数が多いほど、検索条件が複雑なほど、各構造化文書データの階層構造を構成する要素間をたどるという処理には時間がかかる。また、構造化文書データの数、サイズが大きくなれば、格納された構造化文書データをメモリ上に展開することは不可能であり、多くはハードディスクなど二次記憶に格納されることになる。
【００１１】
ネイティブに構造化文書データを管理する方式では、構造化文書データは要素間の階層構造をそのまま記憶する。検索条件として指定された要素や構造があるか否かを調べるためには、二次記憶上に格納された構造化文書データの要素間を頻繁にアクセスしなければならない。複雑な検索条件の場合はなおさらである。
【特許文献１】特開２００２−３４６１８公報
【特許文献２】特開２０００−５７１６３公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従来は、階層構造を有する構造化文書データを記憶するデータベースから所望の要素や構造を有する構造化文書データを検索する際には、データベース内の各構造化文書データの階層構造を構成する要素データ間を辿りながら、検索条件にて指定された要素や構造を持つ構造化文書データを検索するため、高速に検索できないという問題点があった。特に、構造化文書データのサイズが大きくなるほど、検索対象の構造化文書データの数が多いほど、検索条件が複雑であるほど検索処理の高速化が困難であった。
【００１３】
そこで、本発明は上記問題点に鑑み、構造化文書データの検索が高速に行える構造化データ検索方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
（１）本発明は、（ａ）複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶し、（ｂ）前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶し、（ｃ）文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素を指定した検索条件が入力されると、（ｄ）前記複数の構造化データのなかから、前記文字列を含むとともに、前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データを含む構造化データを検索して出力する。
【００１５】
（２）本発明は、（ａ）複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶し、（ｂ）前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶し、（ｃ）文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つであって前記第１の要素を含む第２の要素とを指定した検索条件が入力されると、（ｄ）前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第１の要素データを含むとともに前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データとを含む構造化データを検索し、出力する。
【００１６】
（３）本発明は、（ａ）複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する当該階層構造を第１の記憶手段に記憶し、（ｂ）前記複数の要素のうちのいずれか１つの前記テンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを第２の記憶手段に記憶し、（ｃ）文字列と、前記複数の要素のうちの１つであって前記文字列を含む第１の要素と、前記複数の要素のうちの他の１つである第２の要素と、前記複数の要素のうちのさらに他の１つであって前記第１の要素と前記第２の要素とを含む第３の要素とを指定した検索条件が入力されたら、（ｄ）前記複数の構造化データのなかから、前記文字列を含むとともに前記第１の要素に対応する前記テンプレートＩＤである第１のテンプレートＩＤをもつ第１の要素データと、前記第２の要素に対応する前記テンプレートＩＤである第２のテンプレートＩＤをもつ第２の要素データと、前記第１の要素データと前記第２の要素データとを含むとともに前記第３の要素に対応する前記テンプレートＩＤである第３のテンプレートＩＤをもつ第３の要素データとを含む構造化データを検索し、出力する。
【発明の効果】
【００１７】
本発明によれば、構造化データの検索が高速に行える。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態について、図面を参照して説明する。
【００１９】
図１は、構造化文書データ（構造化データ）の一例である。構造化文書を記述するための代表的な言語としてＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）が挙げられる。図１に示す構造化文書はＸＭＬで記述されたものである。ＸＭＬでは、文書構造を構成する個々のパーツを「要素」（エレメント：Ｅｌｅｍｅｎｔ）と呼び、要素はタグ（ｔａｇ）を使って記述する。具体的には、要素の始まりを示すタグ（開始タグ）と、終わりを示すタグ「終了タグ」）の２つのタグでテキストデータを挟み込んで、１つの要素を表現している。なお、開始タグと終了タグで挟み込まれたテキストデータは、当該開始タグと終了タグで表された１つの要素に含まれるテキスト要素である。
【００２０】
この例では、＜ｂｏｏｋ＞というタグで囲まれた要素のルート要素が存在する。この「ｂｏｏｋ」要素は、＜ｔｉｔｌｅ＞、＜ａｕｔｈｏｒｓ＞、＜ａｂｓｔｒａｃｔ＞の各タグで囲まれた３つの子要素を包含する。「ａｕｔｈｏｒｓ」要素は、＜ａｕｔｈｏｒ＞というタグをもつ２つの子要素を包含する。各「ａｕｔｈｏｒ」要素は、＜ｆｉｒｓｔ＞、＜ｌａｓｔ＞という各タグで囲まれた子要素が存在する。「ｆｉｒｓｔ」要素と「ｌａｓｔ」要素は、それぞれ「太郎」や「田中」といったテキスト要素を持っている。
【００２１】
図２は、本実施形態に関る構造化文書管理システムの機能的な構成例を示したものである。構造化文書管理システムは、大きく分けてクライアント２０１とサーバ１０１とから構成されている。クライアント２０１からの格納要求や検索要求を受けて、サーバ１０１が各要求に対応する処理を行う。
【００２２】
クライアント２０１は、主に、構造化文書登録部２０２と検索部２０３と入力部２０４と表示部２０５を有する。キーボードやマウス等の入力装置からなる入力部２０４は、構造化文書を入力したり、各種指示入力を行うためのものである。構造化文書登録部２０２は、入力部２０４から入力された構造化文書や、クライアント２０１のもつ記憶装置などに予め記憶された構造化文書を構造化文書データベース（構造化文書ＤＢ）１１１に登録するためのものである。構造化文書登録部２０２は、登録すべき構造化文書をとともに格納要求をサーバ１０１へ送信する。
【００２３】
検索部２０３は、入力部２０４からユーザにより入力された指示に従って、構造化文書データベース１１１から所望のデータを検索するための検索条件などが記述された問合せデータを作成し、当該問合せデータを含む検索要求をサーバ１０１へ送信する。また、サーバ１０１から送信された当該検索要求に対応する結果データを受け取り、これを表示部２０５に表示する。
【００２４】
サーバ１０１は、要求処理部１０２、格納処理部１０３、検索処理部１０４から構成されている。また、サーバ１０１には構造化文書データベース１１１が接続されている。構造化文書データベース１１１は、構造化文書データ記憶部１１２と構造テンプレート記憶部１１３と索引データ記憶部１１４とから構成されている。
【００２５】
要求処理部１０２は、クライアント２０１から送信される格納要求や検索要求を判別し、格納処理部１０３や検索処理部１０４などへ処理の振り分けを行い、格納処理部１０３や検索処理部１０４での処理結果をクライアント２０１に返す。
【００２６】
格納処理部１０３は、クライアント２０１からの格納要求を受けて、クライアント２０１から送信された構造化文書を構造化文書データベース１１１に格納する処理を行う。格納処理部１０３は、構造化文書構文解析部３１と構造化文書構造抽出部３２と構造化文書構造照合部３３と構造化文書格納部３４から構成される。
【００２７】
構造化文書構文解析部３１は、要求処理部１０２から渡された構造化文書を構文解析し、この解析結果を基に構造化文書構造抽出部３２では当該構造化文書の（文書）構造を抽出する。構造化文書構造照合部３３は、抽出された構造と構造化文書データベース１１１に記憶された構造テンプレートとを照合する。構造化文書格納部３４は、構造化文書構造照合部３３での照合結果を基に、当該構造化文書のデータを構造化文書データベース１１１の構造化文書データ記憶部１１２に格納するとともに、索引データを索引データ記憶部１１４に格納する。
【００２８】
検索処理部１０４は、クライアント２０１からの検索要求を受けて、指定された条件（問合せデータ）に合致するデータを構造化文書データベース１１１から探し出し、得られたデータを結果データとして返す処理を行う。検索処理部１０４は、問合せ構文解析部４１と問合せ構造抽出部４２と問合せ構造照合部４３と問合せ実行部４４から構成される。
【００２９】
問合せ構文解析部４１は、要求処理部１０２から渡された問合せデータを構文解析し、この解析結果を基に問合せ構造抽出部４２では、当該問合せデータの構造を抽出する。問合せ構造照合部４３は、抽出された構造と構造化文書データベース１１１に記憶されている構造テンプレートとを照合する。問合せ実行部４４は、問合せ構造照合部４３での照合結果を基に、構造化文書データベース１１１に記憶されている構造化文書データや構造テンプレートや語彙索引データにアクセスして、問合せデータに記述された条件に合致する結果データを生成する。
【００３０】
図３は、サーバ１０１のハードウエア的な構成例を示したもので、バス１に通信Ｉ／Ｆ装置２、可搬記録媒体ドライブ装置３、表示装置４、入力装置５、出力装置６、演算装置（ＣＰＵ）７および外部記憶装置８並びにメモリ９が接続されて構成されている。さらに、図３に示す構成では、バス１に、図２の構造化文書データベース１１１が接続されている。
【００３１】
図２の要求処理部１０２と格納処理部１０３と検索処理部１０４のそれぞれの機能を実現するためのプログラムは、図３の外部記憶装置８に予め記憶され、必要に応じて、各プログラムがメモリ９に読み込まれて実行される。
【００３２】
以下、図２を参照して説明する。
【００３３】
まず、構造化文文書ＤＢ１１１での構造化文書の格納方法について説明する。
【００３４】
図４は、構造化文書データ記憶部１１２のデータ構造を模式的に表したものである。構造化文書データ記憶部１１２には、論理的には、大量の構造化文書が「ｒｏｏｔ」ノード３０１をルートする１つの構造化文書の部分文書として記憶されている。図４では、この「ｒｏｏｔ」ノード３０１をルートする１つの構造化文書の構造をノードとアークから構成される階層木で表している。各ノードは構造化文書の要素（テキスト要素を含む）を示し、要素間の親子関係をアークで示している。実装上は、ノードはオブジェクトデータのファイルとして構造化文書データ記憶部１１２に格納される。各ノードには、オブジェクトＩＤ（ＯＩＤ）と呼ばれる識別子が割当てられている。なお、図４では、説明の簡単のため、ＯＩＤを「０」〜「４７」の数字で表している。ＯＩＤを指定することで所望のオブジェクトデータを取り出すことができる。
【００３５】
ノード間の親子関係を表わすアークは、オブジェクトデータ間のリンクであり、このリンクはオブジェクトデータ内に子要素のオブジェクト集合を指すＯＩＤ配列として、構造化文書データ記憶部１１２に記憶される。
【００３６】
「ｒｏｏｔ」ノード３０１の下には「ｂｏｏｋＦｏｌｄｅｒ」、「ｐａｐｅｒＦｏｌｄｅｒ」の２つのノード３０２、３０３が存在する。「ｂｏｏｋＦｏｌｄｅｒ」ノードの下には、２つの「ｂｏｏｋ」ノード３０４、３０５が存在する。ＯＩＤが「２」の「ｂｏｏｋ」ノードには、図１で示した構造化文書データが格納されている。
【００３７】
このように「ｒｏｏｔ」ノード以下のデータは、複数の構造化文書のそれぞれの各要素からなる１つの大きな構造化文書データであり、図１で示した構造化文書データは、当該大きな構造化文書データの一部分として格納されている。例えば、図１の構造化文書＜ｂｏｏｋ＞…＜／ｂｏｏｋ＞は、図４の構造化文書では、＜ｒｏｏｔ＞＜ｂｏｏｋＦｏｌｄｅｒ＞＜ｂｏｏｋ＞…＜／ｂｏｏｋ＞＜ｂｏｏｋＦｏｌｄｅｒ＞＜ｒｏｏｔ＞と表すことができる。
【００３８】
なお、このような複数のノードからなる階層構造は、汎用のＯＳで広く採用されているディレクトリ構造に当てはめると、これら各ノードは、ディレクトリ構造のフォルダとファイルに対応する。すなわち、図４に示す階層構造は、「ｒｏｏｔ」フォルダの下に、「ｂｏｏｋＦｏｌｄｅｒ」、「ｐａｐｅｒＦｏｌｄｅｒ」という２つの子フォルダがあり、「ｂｏｏｋＦｏｌｄｅｒ」フォルダの下に、「ｂｏｏｋ」という要素をルートに持つ２つのドキュメントファイル３１１、３１２が存在し、「ｐａｐｅｒＦｏｌｄｅｒ」フォルダの下に、「ｐａｐｅｒ」という要素をルートに持つ１つのドキュメントファイル３１３が存在するディレクトリ構造で構造化文書データ記憶部１１２に記憶される。
【００３９】
以下、「ｒｏｏｔ」ノード、「ｂｏｏｋＦｏｌｄｅｒ」ノード、「ｐａｐｅｒＦｏｌｄｅｒ」ノードをフォルダと解釈し、フォルダ以下のデータをまとめてドキュメントファイルと解釈する。例えば、図４の場合、「ｂｏｏｋＦｏｌｄｅｒ」フォルダに２つの「ｂｏｏｋ」ドキュメント（ファイル３１１、３１２）が格納され、「ｐａｐｅｒＦｏｌｄｅｒ」フォルダに１つの「ｐａｐｅｒ」ドキュメント（ファイル３１３）が格納されていると解釈することができる。
【００４０】
図５は、従来の構造化文書ＤＢの構成例である。構造化文書ＤＢに対する検索を行うには、問合せデータを与える必要がある。問合せデータには、テキスト（単語などの文字列）を検索条件として指定したもの、構造化文書の構造を検索条件として指定したもの、あるいは両者を組み合わせて検索条件として指定したものがある。問合せデータに単語などの文字列が検索条件として含まれる場合、構造化文書管理システムでは高速に検索を行うため、語彙索引を付けることが多い。語彙索引データとは、格納された構造化文書データに含まれるテキスト要素のテキストデータ（文字列）を抽出し、テキストデータと当該テキストデータを含む構造化文書データ中の要素のオブジェクトＩＤ（ＯＩＤ）との対応関係を表す情報である。
【００４１】
図５に示す構造化文書ＤＢには、構造化文書データを格納する構造化文書データ記憶部と、索引データを格納する索引データ記憶部から構成されている。
【００４２】
図１で示した構造化文書データには、「ＸＭＬデータベース」、「ＸＭＬデータの検索技術」、「田中」、などのテキストデータが含まれている。これらのテキストデータを字句解析することで「ＸＭＬ」、「データ」、「データベース」などの語彙（文字列）に分解している。
【００４３】
索引データ記憶部には、語彙テーブルと当該語彙テーブル中の各語彙にリンクされた当該語彙を含むテキスト要素のＯＩＤを記録する複数のテーブルが記憶されている。語彙テーブル中の語彙からリンクをたどることで、その語彙を含むテキスト要素の出現位置、つまりＯＩＤが得られる。
【００４４】
図６は、本実施形態に関る構造化文書ＤＢ１１１の構成例である。構造化文書データ記憶部１１２、索引データ記憶部１１４は図５と同じであるが、新たに構造テンプレート記憶部１１３が追加されている。
【００４５】
構造テンプレート記憶部１１３には、構造テンプレートデータが格納されている。構造テンプレートデータには、構造化文書データ記憶部１１２に格納されている構造化文書データから抽出された構造データが格納されている。
【００４６】
図４に示したように、構造化文書ＤＢ１１１に、２つの「ｂｏｏｋ」ドキュメントファイル３１１、３１２と、１つの「ｐａｐｅｒ」ドキュメントファイル３１３が記憶されている場合に、構造テンプレート記憶部１１３に記憶されている構造テンプレートデータを図７に示す。図４では、フォルダやドキュメントファイルが階層的に配置されていた。図７の構造テンプレートデータは、「ｒｏｏｔ」、「ｂｏｏｋＦｏｌｄｅｒ」、「ｐａｐｅｒＦｏｌｄｅｒ」という３つのフォルダ３５１〜３５３からなる階層構造と、「ｂｏｏｋＦｏｌｄｅｒ」というフォルダに格納されている２つのドキュメントの文書構造のベース（基準）となる文書構造（要素（テキスト要素を含む）３６１〜３６９で構成される階層構造）と、「ｂｏｏｋＦｏｌｄｅｒ」というフォルダに格納されている１つのドキュメントの文書構造のベース（基準）となる文書構造（要素（テキスト要素を含む）３８１〜３８９で構成される階層構造）を表したものである。
【００４７】
図４では、「ｂｏｏｋ」ドキュメントファイル３１１は、その先頭のノードである「ｂｏｏｋ」ノード３０４直下に「ａｕｔｈｏｒｓ」ノードがあり、その下には２つの「ａｕｔｈｏｒ」ノードがあったが、図７に示し構造テンプレートでは、「ａｕｔｈｏｒ」ノードは１つにまとめられて、テキストノード（テキスト要素）は「＃ｔｅｘｔ」ノードとして表されている。
【００４８】
図７の構造テンプレートデータの六角形で表された各ノード（各ノードは、フォルダ、ファイル、要素、テキスト要素に対応する）には、「Ｆ０」、「Ｄ２」、「Ｅ３」、「Ｔ４」などのユニークなＩＤが割り振られている。構造テンプレートデータの各ノードの種別や構造上の位置を識別するために、各ノードに割り振られたＩＤをテンプレートＩＤ（ＴＩＤ）と呼ぶ。
【００４９】
テンプレートＩＤについて説明する。テンプレートＩＤは、構造テンプレート上の当該ノードの種類を表す情報と、同じ種類のノードのなかで各ノードを識別するための番号とから構成されている。ノードの種類は、「Ｆ」「Ｄ」「Ｅ」「Ｔ」という４種の文字により表されている。「Ｆ」はフォルダ、「Ｄ」はドキュメントファイル、「Ｅ」は要素（テキスト要素ではない要素）、「Ｔ」はテキスト要素を表す。ノードの種類を表す文字とそれに続く番号「ｘ」とからなるテンプレートＩＤにより、当該ノードの種類と、当該テンプレートＩＤを持つノードが構造テンプレート上のどのノードであるかを識別することができる。
【００５０】
テンプレートＩＤが「Ｆｘ」であるノードはフォルダを表し、これをフォルダ型構造テンプレートノードと呼ぶ。テンプレートＩＤが「Ｄｘ」であるノードはドキュメントを表し、ドキュメント型構造テンプレートノードと呼ぶ。テンプレートＩＤが「Ｅｘ」であるノードはドキュメント内の要素（テキスト要素でない要素）を表し、エレメント型構造テンプレートノードと呼ぶ。テンプレートＩＤが「Ｔｘ」であるノードはドキュメント内のテキスト要素を表し、テキスト型構造テンプレートノードと呼ぶ。なお、ここでは、「ｘ」は、構造テンプレートデータの各ノードにユニークなシリアルな整数とする。
【００５１】
本実施形態に関る構造化文書データ記憶部１１２には、図４の「ｒｏｏｔ」ノード３０１や「ｂｏｏｋｆｏｌｄｅｒ」ノード３０２、「ｐａｐｅｒｆｏｌｄｅｒ」ノード３０３、「ｂｏｏｋ」ドキュメントや「ｐａｐｅｒ」ドキュメントの各要素（テキスト要素を含む）に対応する各ノードを識別するためのＯＩＤには、図７に示すように、上記構造テンプレートが含まれている。
【００５２】
図８は、図４と同様、構造化文書データ記憶部１１２に格納されている構造化文書データの記憶例を模式的に示したものである。図８では、各ノードのＯＩＤを図４よりも詳細に示している。すなわち、本実施形態では、データファイルに格納されている構造化文書データの各ノードのＯＩＤは、ドキュメントＩＤ（ＤｏｃＩＤ）、要素ＩＤ（ＥｌｅｍＩＤ）、上記テンプレートＩＤ（ＴＩＤ）から構成されている。ここでは、ＯＩＤを＜ＤｏｃＩＤ，ＥｌｅｍＩＤ，ＴＩＤ＞と表すことにする。
【００５３】
ＤｏｃＩＤとは、ドキュメント、フォルダに割当てられるデータファイル内でユニークなＩＤであり、ドキュメントファイルの識別子、フォルダの識別子である。ＥｌｅｍＩＤは、各ドキュメント内の各要素に割当てられる各ドキュメント内でユニークなＩＤである。ＴＩＤとは、前述したように構造テンプレートデータ内のノードが持つＩＤ、すなわち、テンプレートＩＤである。
【００５４】
例えば、「ｒｏｏｔ」ノードのＤｏｃＩＤを「０」とし、「ｂｏｏｋＦｏｌｄｅｒ」ノードのＤｏｃＩＤを「１」とし、２つの「ｂｏｏｋ」ノードのそれぞれのＤｏｃＩＤを「２」、「３」とする。さらに、図８には示していないが、「ｐａｐｅｒＦｏｌｄｅｒ」ノードや、「ｐａｐｅｒ」ノードのＤｏｃＩＤを上記「０」〜「３」以外の未使用の値とする。このように、ＤｏｃＩＤにより、データファイル中のフォルダやドキュメントファイルをそれぞれ識別することができる。
【００５５】
また、ＤｏｃＩＤが「２」の「ｂｏｏｋ」ノード以下の「ｂｏｏｋ」ドキュメント中の各要素（テキスト要素を含む）には、それぞれ、「０」〜「１４」というＥｌｅｍＩＤが与えられている。このＥｌｅｍＩＤにより、当該ドキュメント内での各要素を識別することができる。
【００５６】
さらに、ＤｏｃＩＤが「２」の「ｂｏｏｋ」ノード以下の「ｂｏｏｋ」ドキュメント中の各要素（テキスト要素を含む）には、図７に示す構造テンプレート中の当該要素に対応するノードのＴＩＤが与えられている。
【００５７】
このように、ドキュメントファイル内のある要素のＯＩＤを見れば、当該ＯＩＤに含まれるＤｏｃＩＤからは当該ＯＩＤをもつノードを含むドキュメントファイルを識別することができ、当該ＯＩＤに含まれるＴＩＤからは当該ノードの構造テンプレート中の存在位置とノードの種別を識別することができ、ＥｌｅｍＩＤからは当該ノードの当該ドキュメント中の存在位置を識別することができるのである。
【００５８】
例えば、図８の「ｂｏｏｋ」ドキュメント３１１に含まれるテキストノード（テキスト要素）「ＸＭＬデータベース」は、＜２、２、Ｔ４＞というＯＩＤを持っている。このＯＩＤからは、当該テキストノードが属するドキュメント３１１のＤｏｃＩＤは「２」であることがわかる。また、当該テキストノードは、当該ドキュメント３１１内では「２」というＥｌｅｍＩＤを持っている。さらにこのテキストノードは、構造テンプレートデータ内では、図７の「Ｔ４」というＴＩＤを持つノードに対応している。
【００５９】
このように、本実施形態では、構造化文書ＤＢ１１１に格納される構造化文書の各要素は、当該要素が属するフォルダ、ファイルの識別子であるＤｏｃＩＤと、当該要素が属するファイル内で当該要素を識別するためのＥｌｅｍＩＤと、当該要素に対応する構造上の識別子であるＴＩＤとを含むＯＩＤにより識別される。
【００６０】
図９は、本実施形態に関る索引データ記憶部１１４に記憶される索引データのデータ構造を模式的に示したものである。索引データ記憶部１１４は、図５と同様、語彙テーブルと当該語彙テーブル中の各語彙にリンクされた当該語彙を含むテキスト要素のＯＩＤを記録する複数のテーブルが記憶されている。語彙テーブル中の語彙からリンクをたどることで、その語彙を含むテキスト要素の出現位置、つまりＯＩＤが得られる。
【００６１】
図９に示した索引データと図５に示した索引データとの異なる点は、図９に示した索引データでは、ＯＩＤが＜ＤｏｃＩＤ、ＥｌｅｍＩＤ、ＴＩＤ＞と、３つのＩＤで表されている点である。
【００６２】
図１０〜図１１に示すフローチャートを参照して、図２の格納処理部１０３の処理動作について説明する。
【００６３】
クライアント２０１の構造化文書登録部２０２からは、新たに格納すべき構造化文書データと、この構造化文書データの格納先のフォルダのＯＩＤを含む格納要求メッセージが送信される。ここで、格納先のフォルダのＯＩＤをＯＩＤｐと表す。
【００６４】
なお、クライアント２０１では、格納先のフォルダのＯＩＤは、次のようにして得ることができる。クライアント２０１の検索部２０３には、例えば、図８に示すような構造化文書ＤＢ１１１の概略構造を表示するためのＧＵＩを有している。このＧＵＩにより表示された構造からユーザが格納先のフォルダとして所望のノード（フォルダ）を指示すると、当該ノードに対応するＯＩＤを得るための問合せデータが作成され、サーバ１０１へ送信される。サーバ１０１では、当該問合せデータから、当該指示されたノードのＯＩＤを獲得して、クライアント２０１の検索部２０３へ返す。検索部２０３は、この得られたＯＩＤ（すなわち、ＯＩＤｐ）を構造化文書登録部２０２へ渡す。
【００６５】
さて、サーバ１０１の要求処理部１０２では、新たなに格納すべき構造化文書データと格納先のフォルダのＯＩＤｐを含む格納要求メッセージを受け取る（ステップＳ１）。ここでは、例えば、「ｂｏｏｋＦｏｌｄｅｒ」３０２に対応するＯＩＤｐ（＜１，０，Ｆ１＞）が格納先のフォルダとして指定され、このフォルダ下に新たなドキュメントを格納するケースを考える。
【００６６】
格納要求メッセージに含まれる、格納すべき構造化文書データは、格納処理部１０３の構造化文書構文解析部３１へ渡されて、当該構造化文書データの構文解析が行われる。この結果得られるものは、構造化文書データの複数のオブジェクトデータからなる階層構造であり、メモリ上に展開される（ステップＳ２）。すなわち、構造化文書構文解析部３１は、ＸＭＬデータである構造化文書データに対し、構文解析処理を行うことによりＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）形式のオブジェクトデータに展開するＸＭＬパーサに相当する機能を有するものである。
【００６７】
さらに、当該構造化文書データに対し、新たなドキュメントＩＤ（ＤｏｃＩＤ）を付与する（ステップＳ３）。
【００６８】
次に、構造化文書構造抽出部３２は、構造化文書構文解析部３１での解析結果をそのルートから辿ることによって、当該構造化文書データの構造、すなわち、当該構造化文書データ中の各要素に対応する複数のノードと、当該複数のノードからなる構造を抽出する。当該構造化文書データの構造をＳｃとする（ステップＳ４）。
【００６９】
構造化文書構造照合部３３は、格納先フォルダのＯＩＤｐをキーに構造テンプレート記憶部１１３から構造を取得する。例えば、ＯＩＤｐが＜１，０，Ｆ１＞である場合には、まず、ＴＩＤ「Ｆ１」を取得する。このＯＩＤｐから取得したＴＩＤをＴＩＤｐと表す。構造化文書構造照合部３３は、ＴＩＤｐをキーにして構造テンプレート記憶部１１３をスキャンすることで、対応する構造を取得する（ステップＳ５）。取得した構造をＳｐとする（ステップＳ６）。
【００７０】
構造化文書構造照合部３３は、ＳｃとＳｐの照合を行う（ステップＳ７）。これはツリーの単純なマッチングである。すなわち、Ｓｃの構造要素に対応するＳｐの構造要素があれば、当該Ｓｃの構造要素に当該Ｓｐの構成要素のＴＩＤを付与する。Ｓｃの構造要素に対応するＳｐの構造要素がなければ、Ｓｐに存在せずに、Ｓｃに存在する新たな要素に新たなＴＩＤを付与し、Ｓｐに当該新たな要素を追加する。また、Ｓｃの当該新たな要素に当該新たなＴＩＤを付与する。この操作をＳｃの全ての構造要素に対し行う。
【００７１】
次に、構造化文書構造照合部３３は、Ｓｃの各要素に要素ＩＤ（ＥｌｅｍＩＤ）を付与する（ステップＳ８）。例えば、Ｓｃの構造をルートノードから下流方向へ辿りながら、各要素に対しＥｌｅｍＩＤを付与する。
【００７２】
以上の処理により、当該Ｓｃ内の各要素に対し、＜ＤｏｃＩＤ，ＥｌｅｍＩＤ，ＴＩＤ＞という構成のＯＩＤが与えられたことになる。例えば、当該格納すべき構造化文書データのルートオブジェクトのＯＩＤは、＜ＤｏｃＩＤ，０，ＴＩＤ＞となっている。
【００７３】
最後に、構造化文書格納部３４は、更新されたＳｐを構造テンプレート記憶部１１３に格納する。これにより、構造テンプレート記憶部１１３に格納される構造テンプレートの更新がなされる。
【００７４】
また、構造化文書格納部３４は、Ｓｃを構成する複数の要素のうち、テキスト要素を元に、索引データ記憶部１１４を更新する（図１１のステップＳ９）。ここで、テキスト要素のテキストデータから語彙（文字列）を抽出し、この抽出した語彙が図９に示すような語彙テーブル中に無ければ、当該語彙を語彙テーブルに追加する。そして、各テキスト要素のＯＩＤを、当該テキスト要素のテキストデータに含まれる語彙テーブル中の語彙にリンクして記憶する。
【００７５】
さらに、構造化文書格納部３４は、構造化文書データ記憶部１１２内をスキャンすることで、格納先として与えられたＯＩＤｐに対応するオブジェクトを取得し、当該オブジェクトデータの子要素のオブジェクトの集合を示すＯＩＤ配列に、当該格納すべき構造化文書データの各要素のＯＩＤを追加する。すなわち、構造化文書データ記憶部１１２に、各要素に上記のようなＯＩＤの付された当該格納すべき構造化文書データが、ＯＩＤｐが＜１，０，Ｆ１＞の「ｂｏｏｋＦｏｌｄｅｒ」３０２の直下に追加される形で格納される（ステップＳ１０）。
【００７６】
次に、図２の検索処理部１０４の処理動作について説明する。
【００７７】
図１２は、検索処理部１０４に入力する問合せデータの一例を示したものである。ＸＭＬでは、ＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）という問合せ言語があり、これに基づいた問合せ記述方法に則っている。
【００７８】
図１２に示す問合せデータには、「構造化文書ＤＢ「ＤＢ」の階層木の中に「ｂｏｏｋ」という要素がある。この「ｂｏｏｋ」という要素の中に「田中」という文字列を含むテキスト要素をもつ「ｌａｓｔ」という要素と、さらに「中村」という文字列を含むテキスト要素もつ「ｌａｓｔ」という要素がある」という条件が記述されている。この条件では、「ｂｏｏｋ」という要素には、「田中」という文字列を含むテキスト要素をもつ「ｌａｓｔ」という要素と、「中村」という文字列を含むテキスト要素もつ「ｌａｓｔ」という要素という２つの要素を含むという、いわゆるＡＮＤ条件が含まれている。一方、ＯＲ条件とは、例えば、「ｂｏｏｋ」という要素には、「田中」という文字列を含むテキスト要素をもつ「ｌａｓｔ」という要素と、「中村」という文字列を含むテキスト要素もつ「ｌａｓｔ」という要素のうちの少なくとも１つを含むというものである。
【００７９】
図１２に示すような問合せデータは、クライアント２０１の検索部２０３からサーバ１０１へ送信され、サーバ１０１の要求処理部１０２で受信される。
【００８０】
以下、図１３〜図１４に示すフローチャートを参照して、例えば、図１２に示したような問合せデータを受信した検索処理部１０４の処理動作の概略を説明する。
【００８１】
要求処理部１０２で受信された問合せデータは、検索処理部１０４の問合せ構文解析部４１に渡される。問合せ構文解析部４１では、受け取った問合せデータの構文解析を行い（ステップＳ１０１）、この結果を基に、問合せ構造抽出部４２では、当該問合せデータから、問合せグラフと呼ばれるグラフ構造を抽出する（ステップＳ１０２）。例えば、図１２に示した問合せデータの場合、図１５に示すような問合せグラフが得られる。ここでは、問合せグラフで表されるような問合せデータ中の構造をＳｃと表す。
【００８２】
問合せグラフは、図１５に示すように、問合せデータ中に含まれる要素名（例えば、「ｄｂ“ＤＢ”」、「ｂｏｏｋ」、「ｌａｓｔ」）、や文字列（例えば「田中」、「中村」）にそれぞれ対応する変数と、各変数を、問合せデータ中に含まれる要素と文字列の包含関係に従って接続して構成されている。
【００８３】
次に、問合せ構造照合部４３は、構造化文書ＤＢ１１１の構造テンプレート記憶部１１３から構造を取り出す。取り出した構造をＳｐと表す。ここでは、例えば、問合せデータ中で指定された、構造化文書データベースの階層木の最も上流にある要素、すなわち、「ｂｏｏｋ」という要素以下の構造を抽出する。そして、この取り出した構造Ｓｐと先ほどのＳｃとの照合を行う。この結果、Ｓｃの各要素に対して、取り得るＴＩＤを割当てる（ステップＳ１０３）。
【００８４】
問合せ実行部４４は、問合せグラフで表されている条件にＡＮＤ条件、ＯＲ条件を含むか判定する。なお、ここでは、ＡＮＤ条件に対する処理が基本でありＯＲ条件に対する処理はその変形なので、ＯＲ条件に対する処理の詳細は割愛する。
【００８５】
ＡＮＤ条件に対する処理は、問合せグラフに含まれる全ての変数の具体化を目標として、テーブルと呼ばれる変数集合の取り得る値の組み合わせを表すデータを次々と生成する。ここでは、１つのテーブルを生成する単位処理をオペレータと呼ぶ。
【００８６】
まず、問合せグラフに含まれる全ての変数が１テーブルで具体化されているか判定する（ステップＳ１０４）。Ｙｅｓであれば、全ての変数の取り得る値の組合せが具体化されたので、それが結果となる。なお、変数が取り得る値とは、ＯＩＤのことである。
【００８７】
以下、問合せグラフに含まれる全ての変数が１テーブルで具体化されていないならば、具体化されるまで、ステップＳ１０５〜ステップＳ１１０を繰り返す。
【００８８】
ステップＳ１０５では、索引データ記憶部１１４に記憶されている索引データを用いた検索が可能か判定する。「ｃｏｎｔａｉｎｓ」など語彙索引系の関数があれば、構造化文書ＤＢ１１中の索引データを用いて検索を高速化できる。この場合ＬｅｘｉｃａｌＳｃａｎＷｉｔｈＴｉｄオペレータを実行する。
【００８９】
図１４のステップＳ１０６では、親ドキュメント取得操作が可能か判定する。子要素ＯＩＤから親ドキュメントルートＯＩＤをダイレクトに取り出すことができれば、ＧｅｔＤｏｃｕｍｅｎｔオペレータを実行する。
【００９０】
ステップＳ１０７では、複数テーブルに同一変数が発生しているか判定する。その場合は２つのテーブル毎にＪｏｉｎオペレータを実行する。
【００９１】
ステップＳ１０８では、値を取得すべき変数がすべて具体化されており、問合せの先頭にあるデータベースのルートを指定する「ｄｂ（）」しか残っていなければ、Ｎｏｐオペレータ（無操作）を実行する。
【００９２】
ステップＳ１０９では、任意の２変数の上位階層にある変数に対してドキュメント型ＴＩＤが割当てられており、その２変数の値が具体化されていれば、ＦｉｌｔｅｒＤｏｃｕｍｅｎｔオペレータを実行する。
【００９３】
ステップＳ１１０では、変数の上位階層に変数があり、下位階層にある変数が具体化されていて上位階層にある変数が具体化されていなければ、ＳｃａｎＡｎｃｅｓｔｏｒＷｉｔｈＴＩｄオペレータを実行する。
【００９４】
ステップＳ１１１では、結果出力処理を行う。ここで各変数の取り得る値（ＯＩＤ）の組合せ（ＯＩＤの組合せ）がテーブルとして得られている。各組合せは、同じドキュメントＩＤをもつ複数のＯＩＤからなり、よって、テーブル上の各組合せは、１つの構造化データに対応する。テーブル上の組合せから得られる各ドキュメントＩＤに対応する構造化データを構造化文書データ記憶部１１２から取り出すことにより、問合せデータに合致する構造化文書データの集合を得ることができる。
【００９５】
図１５に示した問合せグラフでは、変数は、丸で囲まれたノードで表されており、丸のなかに変数名が記述されている。これを変数ノードと呼ぶ。また、問合せデータ中に指定されていた要素は、六角形のなかに「ＴＡＧ」と書かれたノードで表されている。これをタグノードと呼ぶ。さらに、問合せデータ中に指定されていた文字列は、六角形のなかに「ＶＡＬＣＭＰ」と書かれたノードで表されている。これを値比較タグノードと呼ぶ。
【００９６】
図１６は、図１５の問合せグラフに基づく検索処理を説明するための図である。
【００９７】
図１６（ａ）に示した問合せグラフの各変数には、ステップＳ１０３において、ＳｃとＳｐの照合を行った結果得られるＴＩＤが付与されている（図１６（ｂ）参照）。変数Ｖ２にはＴＩＤ集合｛Ｄ２｝、変数Ｖ１、Ｖ３にはＴＩＤ集合｛Ｔ１０｝が割当てられている。この問合せグラフに基づき、ステップＳ１０４〜ステップＳ１１０のＡＮＤ条件に対する処理を以下のように実行する。
【００９８】
（１）問合せグラフには値比較タグノードがありｃｏｎｔａｉｎｓ語彙索引系の関数なので、文字列「田中」に関して、ＬｅｘｉｃａｌＳｃａｎＷｉｔｈＴｉｄオペレータを実行する。この結果、変数ノードＶ１が具体化する（図１８（ａ）に示すＴａｂｌｅ１）。すなわち、変数ノードＶ１に対応するＯＩＤが得られる。
【００９９】
（２）同様に、文字列「中村」に関して、ＬｅｘｉｃａｌＳｃａｎＷｉｔｈＴｉｄオペレータを実行する。この結果、変数ノードＶ３が具体化する（図１８（ｂ）に示すＴａｂｌｅ１２）。すなわち、変数ノードＶ３に対応するＯＩＤが得られる。
【０１００】
（３）変数Ｖ１とＶ３が具体化し、上位変数Ｖ２がドキュメント型（構造テンプレート）ノードなので、ＦｉｌｔｅｒＤｏｃｕｍｅｎｔオペレータを実行する。ＦｉｔｅｒＤｏｃｕｍｅｎｔオペレータは２つのテーブル（図１８（ａ）（ｂ）に示すＴａｂｌｅ１、Ｔａｂｌｅ２）内にある変数値の組合せをチェックし、２テーブル内の片方にしか存在しないドキュメントＩＤ（ＤｏｃＩＤ）があれば、当該テーブルからそのレコードを取り除いてしまう操作を行う。この結果、図１８（ｃ）（ｄ）に示すようなＴａｂｌｅ１、２が得られる。
【０１０１】
（４）変数Ｖ１が具体化し、変数Ｖ２のＴＩＤがドキュメント｛Ｄ２｝なので、変数Ｖ１に関し、親ドキュメント取得操作が可能である。ＧｅｔＤｏｃｕｍｅｎｔオペレータを実行する。ここで変数Ｖ２が具体化する（図１８（ｅ）に示すＴａｂｌｅ３）。すなわち、変数ノードＶ２に対応するＯＩＤが得られる。
【０１０２】
（５）同様に、変数Ｖ３に関し、ＧｅｔＤｏｃｕｍｅｎｔオペレータを実行する。ここで変数Ｖ２が具体化する（図１８（ｆ）に示すＴａｂｌｅ４）。すなわち、変数ノードＶ２に対応するＯＩＤが得られる。
【０１０３】
（６）上記（３）（４）に示したように、別系統で変数Ｖ２がそれぞれ具体化されたので、Ｊｏｉｎオペレータを実行する（図１８（ｇ））。
【０１０４】
（７）変数Ｖ０は出力オペレータではないので、Ｎｏｐオペレータを実行する。
【０１０５】
図１７は、上記（１）〜（６）で説明したオペレータ系列を示したものである。
【０１０６】
図１８は図１７のオペレータ系列をオペレータ入出力という観点で視覚化した図である。
【０１０７】
図１８（ａ）のＴａｂｌｅ１では、図１７（ａ）のＬｅｘｉｃａｌＳｃａｎＷｉｔｈＴｉｄオペレータにより変数Ｖ１に対応するＯＩＤ＜２，８，Ｔ１０＞が得られている。
【０１０８】
図１８（ｂ）のＴａｂｌｅ２では、図１７（ｂ）ＬｅｘｉｃａｌＳｃａｎＷｉｔｈＴｉｄオペレータにより変数Ｖ３に対応するＯＩＤ＜２，１３，Ｔ１０＞，＜３，１３，Ｔ１０＞が得られている。
【０１０９】
図１７（ｃ）のＦｉｌｔｅｒＤｏｃｕｍｅｎｔオペレータにより、図１８（ｄ）に示すように、Ｔａｂｌｅ２の＜３，１３，Ｔ１０＞が取り除かれている。
【０１１０】
図１７（ｄ）のＴａｂｌｅ１に対するＧｅｔＤｏｃｕｍｅｎｔオペレータにより、図１８（ｅ）に示すように、変数Ｖ１から変数Ｖ２に対応するＯＩＤ＜２，０，Ｄ２＞が得られる。なお、ここでは、変数Ｖ２に対応するＯＩＤを求めるために、変数Ｖ１に対応するＯＩＤ＜２，８，Ｔ１０＞のＤｏｃＩＤはそのままにして、ＥｌｅｍＩＤ＝０、ＴＩＤ＝Ｄｘという変換を行っているだけである。
【０１１１】
図１７（ｅ）のＴａｂｌｅ２に対するＧｅｔＤｏｃｕｍｅｎｔオペレータにより、図１８（ｆ）に示すように、変数Ｖ３から変数Ｖ２に対応するＯＩＤ＜２，０，Ｄ２＞が得られる。
【０１１２】
図１７（ｆ）の変数Ｖ２に関し、Ｔａｂｌｅ３，Ｔａｂｌｅ４を結合するＪｏｉｎオペレータにより、図１８（ｇ）のＴａｂｌｅ５に示すように、変数Ｖ１、Ｖ２、Ｖ３の取り得る値の組合せ（オブジェクトＩＤの組合せ）が得られる。１つの組合せに含まれる各ＯＩＤの持つドキュメントＩＤは同じものである。すなわち、この組合せに含まれる各オブジェクトＩＤに対応する要素データを含む構造化データ（すなわち、図１８（ｇ）の場合、ドキュメントＩＤが「２」の構造化データ）が検索結果として問合せ実行部４４から出力される。検索結果は、要求処理部１０２から検索要求元のクライアント２０１へ渡される。クライアント２０１では、サーバ１０１から受け取った構造化データを表示部２０５へ表示する。
【０１１３】
次に、上記検索処理の効果を説明するために、従来技術の検索処理について、図１９、図２０を参照して説明する。
【０１１４】
図１９は、図１５の問合せグラフに対して従来技術に基づくオペレータ系列を示したものであり、図２０は図１９のオペレータ系列をオペレータ入出力という観点で視覚化した図である。図１９に示すように、「田中」、「中村」をキーにして語彙索引を使い、２つのＬｅｘｉｃａｌＳｃａｎオペレータを実行する。２つのＳｃａｎＡｎｃｅｓｔｏｒオペレータを実行した結果得られるテーブルを、Ｊｏｉｎオペレータにより結合している。最後にＳｃａｎＡｎｃｅｓｔｏｒオペレータにより「ｄｂ（“ＤＢ”）」というパス条件を確認している。
【０１１５】
図１９と図１７とで大きく異なる点は、図１９に示したオペレータ系列では、構造テンプレートやＴＩＤという概念が無い。また、図１９と図１７でそれぞれ用いられている各オペレータの違いについて以下に述べる。
【０１１６】
図１９のＬｅｘｉｃａｌＳｃａｎオペレータは、図２０（ａ）（ｂ）に示すように、当該オペレータに、入力パラメータとして指定された語彙を含むＯＩＤ集合を返す。図１７のＬｅｘｉｃａｌＳｃａｎＷｉｔｈオペレータは、入力パラメータとして語彙の他にＴＩＤを含むオペレータであり、語彙を含むＯＩＤ集合を返すが、この際、入力パラメータであるＴＩＤ（図１３のステップＳ１０３で付与されたＴＩＤ）でフィルタリングを行う（当該ＴＩＤをもつＯＩＤの集合を返している）。つまり、図１７のＬｅｘｉｃａｌＳｃａｎＷｉｔｈオペレータは、問合せデータに発生する構造を考慮したため、無駄なＯＩＤ集合を最初から取り除いている。このため、その後の処理コストが小さくて済む。
【０１１７】
図１９のＳｃａｎＡｎｃｅｓｔｏｒオペレータは、ＯＩＤ集合に対してパス条件にマッチする上流のＯＩＤ集合を返す。これを行うためには、構造化文書ＤＢ中のデータファイルをスキャンする必要がある。図２０（ｄ）に示すように、ＬｅｘｉｃａｌＳｃａｎオペレータで得られ、Ｔａｂｌｅ２に記録されている（無用なＯＩＤを含む）多くのＯＩＤのそれぞれに対して、構造化文書ＤＢ中の多くの構造化文書データに対するスキャンが発生している。例えば、図２０（ｄ）から、ＯＩＤが「１５」のノードからＯＩＤが「２」のノードを得るための構造化文書データのスキャンと、ＯＩＤが「３０」のノードからＯＩＤが「１６」のノードを得るための構造化文書データのスキャンとが発生している。
【０１１８】
これに対し、図１７のＧｅｔＤｏｃｕｍｅｎｔオペレータは、入力パラメータとして与えられたＯＩＤ集合に対して、当該ＯＩＤ集合の各ＯＩＤと同じ文書中の上流のノードのＯＩＤ集合を返す。ここで、構造化文書データの文書構造を辿るのではなく、当該与えられたＯＩＤから、その上流ノードのＯＩＤへと変換を行っている。つまり、ＧｅｔＤｏｃｕｍｅｎｔオペレータは、問合せデータに発生する構造を考慮したため、構造化文書ＤＢ中のデータファイルをスキャンする必要が無い。このため、ディスクＩ／Ｏなど処理コストが小さくて済む。
【０１１９】
図２１は、図１２の問合せデータを基に問合せ実行部４４で検索された構造化文書データ集合の例である。図２１に示すように、検索結果として得られるものは、いずれも、「田中」という文字列を含むテキスト要素をもつ「ｌａｓｔ」要素と、「中村」という文字列を含むテキスト要素もつ「ｌａｓｔ」要素とを含む、「ｂｏｏｋ」という要素名をもつ構造化文書データである。
【０１２０】
図２２は、問合せデータの他の例である。ＸＭＬでは、ＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）という問合せ言語があり、これに基づいた問合せ記述方法に則っている。
【０１２１】
図２２に示す問合せデータには、「構造化文書ＤＢ「ＤＢ」の階層木の中に「ａｕｔｈｏｒｓ」という要素がある。その中に「田中」という文字列を含むテキスト要素をもつ「ｌａｓｔ」という要素がある」という条件が記述されている。
【０１２２】
図２３は、図２２の問合せデータから得られる問合せグラフを示したもので、図２４は、図１３のステップＳ１０３で付与された、図２３の問合せグラフ中の各変数に対応するＴＩＤを示したものである。
【０１２３】
図２５は、図２３の問合せグラフに基づき検索を行う際に用いられるオペレータ系列を示したものである。図２６は図１５のオペレータ系列をオペレータ入出力という観点で視覚化した図である。
【０１２４】
図２３に示すように、構造化文書ＤＢ「ＤＢ」の階層木の中の「ａｕｔｈｏｒｓ」要素のなかの「ｌａｓｔ」要素に含まれるテキスト要素のＴＩＤは、図７に示す構造テンプレートからも明らかなように、「Ｔ１０」であり、構造化文書ＤＢ「ＤＢ」の階層木の中の「ａｕｔｈｏｒｓ」要素のＴＩＤは、図７に示す構造テンプレートからも明らかなように、「Ｅ５」であり、構造化文書ＤＢ「ＤＢ」の階層木のルートノードは、図７に示す構造テンプレートからも明らかなように、「Ｆ０」である。
【０１２５】
図２５（ａ）に示すように、ＬｅｘｉｃａｌＳｃａｎＷｉｔｈＴｉｄオペレータにより、「田中」という文字列を含むテキスト要素であって、ＴＩＤが「Ｔ１０」であるＯＩＤ集合を得る（図２６（ａ）参照）。次に、図２５（ｂ）に示すように、ＳｃａｎＡｎｃｅｓｔｏｒＷｉｔｈＴｉｄオペレータにより、ＯＩＤ＜２，８，Ｔ１０＞を、当該ＯＩＤの要素の上流のノードであって、ＴＩＤが「Ｅ５」であるノードのＯＩＤを取得する。すなわち、ＯＩＤ＜２，３，Ｅ５＞を得る（図２６（ｂ）参照）。
【０１２６】
この場合、サーバ１０１からは、ドキュメントＩＤ「２」の構造化データが検索結果としてクライアント２０１へ渡される。あるいは、ＯＩＤ＜２，３，Ｅ５＞の要素データ以下の部分データを検索結果としてクライアント２０１へ渡される。
【０１２７】
以上説明したように、上記実施形態によれば、複数の要素からなる階層構造であって、当該複数の要素のそれぞれは当該要素を識別するためのテンプレートＩＤを有する構造テンプレートを構造テンプレート記憶部１１３に記憶するとともに、前記複数の要素のうちのいずれか１つのテンプレートＩＤがそれぞれ割り振られた複数の要素データからそれぞれ構成される複数の構造化データを構造化文書データ記憶部１１２に記憶しておく。
【０１２８】
（１）文字列と、階層構造の複数の要素のうちの１つであって当該文字列を含む第１の要素を指定した検索条件が入力されると、複数の構造化データのなかから、当該文字列を含むとともに、第１の要素に対応するテンプレートＩＤをもつ第１の要素データを含む構造化データを検索して出力する。
【０１２９】
（２）文字列と、階層構造の複数の要素のうちの１つであって当該文字列を含む第１の要素と、当該階層構造の複数の要素のうちの他の１つであって当該第１の要素を含む第２の要素とを指定した検索条件が入力されると、複数の構造化データのなかから、当該文字列を含むとともに第１の要素に対応するテンプレートＩＤをもつ第１の要素データと、当該第１の要素データを含むとともに当該第２の要素に対応するテンプレートＩＤをもつ第２の要素データとを含む構造化データを検索して出力する。
【０１３０】
（３）文字列と、階層構造の複数の要素のうちの１つであって当該文字列を含む第１の要素と、当該階層構造の複数の要素のうちの他の１つである第２の要素と、当該階層構造の複数の要素のうちのさらに他の１つであって当該第１の要素と当該第２の要素とを含む第３の要素とを指定した検索条件が入力されると、複数の構造化データのなかから、当該文字列を含むとともに当該第１の要素に対応するテンプレートＩＤをもつ第１の要素データと、当該第２の要素に対応するテンプレートＩＤをもつ第２の要素データと、当該第１の要素データと当該第２の要素データとを含むとともに当該第３の要素に対応するテンプレートＩＤをもつ第３の要素データとを含む構造化データを検索して出力する。
【０１３１】
このように、上記実施形態によれば、検索条件として指定された構造を構成する各要素のテンプレートＩＤを用いて、当該検索条件として指定された各要素に対し、オブジェクトＩＤの集合を求める際に、当該要素のテンプレートＩＤをもつオブジェクトＩＤのみに絞り込むことができるため、検索が高速に行える。
【０１３２】
また、構造化文書データ記憶部１１２に記憶される各構造化文書データを構成する各要素データには、当該要素データを含む構造化文書データを識別するためのドキュメントＩＤと、当該要素データを当該要素データを含む構造化文書データ内で識別するためのエレメントＩＤと、当該要素データに対応する構造テンプレートの要素のテンプレートＩＤとからなるオブジェクトＩＤが付与されている。このため、検索条件を満たす要素データのオブジェクトＩＤが得られれば、当該オブジェクトＩＤのエレメントＩＤやテンプレートＩＤを書き換えるだけで、その上流にある要素データのオブジェクトＩＤが得られる。すなわち、構造化データの構造を辿ることなく同じ構造化データ内の上流の要素データを得ることができる。また、オブジェクトＩＤに含まれるテンプレートＩＤやドキュメントＩＤから、構造化文書ＤＢ内での検索範囲を予め絞り込むことができる。この結果、検索が高速に行える。
【０１３３】
本発明の実施の形態に記載した本発明の手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、半導体メモリなどの記録媒体に格納して頒布することもできる。
【０１３４】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１３５】
【図１】構造化文書データの一具体例を示した図。
【図２】本発明の実施形態に係る構造化文書管理システムの機能的な構成例を示した図。
【図３】サーバのハードウエア的な構成例を示した図。
【図４】構造化文書データ記憶部のデータ構造を模式的に表した図。
【図５】従来の構造化文書ＤＢの構成例を示した図。
【図６】本発明の実施形態に関る構造化文書ＤＢの構成例を示した図。
【図７】構造テンプレート記憶部に記憶されている構造テンプレートデータの一例を示した図。
【図８】構造化文書データ記憶部に格納されている構造化文書データの記憶例を模式的に示した図。
【図９】索引データ記憶部に記憶される索引データのデータ構造を模式的に示した図。
【図１０】格納処理部の処理動作を説明するためのフローチャート。
【図１１】格納処理部の処理動作を説明するためのフローチャート。
【図１２】問合せデータの一例を示した図。
【図１３】図１２に示したような問合せデータを受信した検索処理部の処理動作の概略を説明するためのフローチャート。
【図１４】図１２に示したような問合せデータを受信した検索処理部の処理動作の概略を説明するためのフローチャート。
【図１５】図１２の問合せデータから得られる問合せグラフを示した図。
【図１６】図１５の問合せグラフに基づく検索処理を説明するための図。
【図１７】図１５の問合せグラフに基づく検索処理に用いられるオペレータ系列を示した図。
【図１８】図１７のオペレータ系列による処理動作を説明するための図。
【図１９】図１５の問合せグラフに対して従来技術に基づくオペレータ系列を示した図。
【図２０】図１９のオペレータ系列による処理動作を説明するための図。
【図２１】検索結果として得られた構造化文書データの一例を示した図。
【図２２】問合せデータの他の例を示した図。
【図２３】図２２の問合せデータから得られる問合せグラフを示した図。
【図２４】図２３の問合せグラフ中の各変数に対応するＴＩＤを示した図。
【図２５】図２３の問合せグラフに基づく検索処理に用いられるオペレータ系列を示した図。
【図２６】図２５のオペレータ系列による処理動作を説明するための図。
【符号の説明】
【０１３６】
３１…構造化文書構文解析部、３２…構造化文書構造抽出部、３３…構造化文書構造照合部、３４…構造化文書格納部、４１…問合せ構文解析部、４２…問合せ構造抽出部、４３…問合せ構造照合部、４４…問合せ実行部、１０１…サーバ装置、１０２…要求処理部、１０３…格納処理部、１０４…検索処理部、１１１…構造化文書データベース、１１２…構造化文書データ記憶部、１１３…構造テンプレート記憶部、１１４…索引データ記憶部、２０１…クライアント装置、２０２…構造化文書登録部、２０３…検索部、２０４…入力部、２０５…表示部。
【図１】
2005190163.tif 000003
【図２】
2005190163.tif 000004
【図３】
2005190163.tif 000005
【図４】
2005190163.tif 000006
【図５】
2005190163.tif 000007
【図６】
2005190163.tif 000008
【図７】
2005190163.tif 000009
【図８】
2005190163.tif 000010
【図９】
2005190163.tif 000011
【図１０】
2005190163.tif 000012
【図１１】
2005190163.tif 000013
【図１２】
2005190163.tif 000014
【図１３】
2005190163.tif 000015
【図１４】
2005190163.tif 000016
【図１５】
2005190163.tif 000017
【図１６】
2005190163.tif 000018
【図１７】
2005190163.tif 000019
【図１８】
2005190163.tif 000020
【図１９】
2005190163.tif 000021
【図２０】
2005190163.tif 000022
【図２１】
2005190163.tif 000023
【図２２】
2005190163.tif 000024
【図２３】
2005190163.tif 000025
【図２４】
2005190163.tif 000026
【図２５】
2005190163.tif 000027
【図２６】
2005190163.tif 000028