(57)【特許請求の範囲】
【請求項１】
階層化された論理構造を有する構造化文書データの入力を受け付ける構造化文書データ受付手段と、
入力された前記構造化文書データに出現する要素に該構造化文書データ内での出現順序が要素間で比較可能な識別子を付与する識別子付与手段と、
前記要素に前記識別子が付与された前記構造化文書データを記憶する構造化文書データ記憶手段と、
クエリデータの入力を受け付けるクエリデータ受付手段と、
入力されたクエリデータが、前記構造化文書データの論理構造における階層の上下関係を指定する第１条件と、前記識別子で特定される前記要素の順序関係を指定する第２条件とを含む場合に、該クエリデータを、前記第１条件のみを含む第１の部分クエリデータと、前記第１の部分クエリデータによる照合結果を前記第２条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解するクエリデータ分解手段と、
前記構造化文書データ記憶手段が記憶する前記構造化文書データのデータ集合に対して、前記第１の部分クエリデータによる照合を行い、照合結果を出力する構造照合処理手段と、
前記照合結果を、前記第２の部分クエリデータに含まれる結合演算の手順に従って結合演算処理する結合演算処理手段と、
を備えることを特徴とする構造化文書管理装置。
【請求項２】
前記構造化文書データ記憶手段が記憶する前記構造化文書データそれぞれの階層化された論理構造を集約した情報である構造ガイドデータを記憶する構造ガイドデータ記憶手段と、
入力された前記構造化文書データの階層化された論理構造が前記構造ガイドデータに反映されるように、該構造ガイドデータを更新する構造ガイドデータ更新手段と、
前記第１の部分クエリデータが前記階層を下位から上位へと辿る条件を含む場合に、該条件を、前記構造ガイドデータに基づいて、前記階層を上位から下位に辿る条件に書き換える条件書き換え手段と、をさらに備えることを特徴とする請求項１に記載の構造化文書管理装置。
【請求項３】
階層化された論理構造を有する構造化文書データの入力を受け付ける構造化文書データ受付手段と、
入力された前記構造化文書データに出現する要素に該構造化文書データ内での出現順序が要素間で比較可能な識別子を付与する識別子付与手段と、
前記要素に前記識別子が付与された前記構造化文書データを記憶する構造化文書データ記憶手段と、
前記構造化文書データ記憶手段が記憶する前記構造化文書データそれぞれの階層化された論理構造を集約した情報である構造ガイドデータを記憶する構造ガイドデータ記憶手段と、
入力された前記構造化文書データの階層化された論理構造が前記構造ガイドデータに反映されるように、該構造ガイドデータを更新する構造ガイドデータ更新手段と、
クエリデータの入力を受け付けるクエリデータ受付手段と、
入力されたクエリデータが、前記構造化文書データの論理構造における階層を下位から上位へと辿る条件を含む場合に、該条件を、前記構造ガイドデータに基づいて、前記階層を上位から下位に辿る条件に書き換える条件書き換え手段と、
前記構造化文書データ記憶手段が記憶する前記構造化文書データのデータ集合に対して、前記条件書き換え手段が書き換えた条件による照合を行い、照合結果を出力する構造照合処理手段と、を備えることを特徴とする構造化文書管理装置。
【請求項４】
構造化文書管理装置において実行される構造化文書管理方法であって、
前記構造化文書管理装置が、階層化された論理構造を有する構造化文書データの入力を受け付けるステップと、
前記構造化文書管理装置が、入力された前記構造化文書データに出現する要素に該構造化文書データ内での出現順序が要素間で比較可能な識別子を付与して記憶装置に格納するステップと、
前記構造化文書管理装置が、クエリデータの入力を受け付けるステップと、
入力されたクエリデータが、前記構造化文書データの論理構造における階層の上下関係を指定する第１条件と、前記識別子で特定される前記要素の順序関係を指定する第２条件とを含む場合に、前記構造化文書管理装置が、該クエリデータを、前記第１条件のみを含む第１の部分クエリデータと、前記第１の部分クエリデータによる照合結果を前記第２条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解するステップと、
前記構造化文書管理装置が、前記記憶装置に格納された前記構造化文書データのデータ集合に対して、前記第１の部分クエリデータによる照合を行い、照合結果を出力するステップと、
前記構造化文書管理装置が、前記照合結果を、前記第２の部分クエリデータに含まれる結合演算の手順に従って結合演算処理するステップと、を含むことを特徴とする構造化文書管理方法。
【請求項５】
コンピュータに、
階層化された論理構造を有する構造化文書データの入力を受け付ける機能と、
入力された前記構造化文書データに出現する要素に該構造化文書データ内での出現順序が要素間で比較可能な識別子を付与して記憶装置に格納する機能と、
クエリデータの入力を受け付ける機能と、
入力されたクエリデータが、前記構造化文書データの論理構造における階層の上下関係を指定する第１条件と、前記識別子で特定される前記要素の順序関係を指定する第２条件とを含む場合に、該クエリデータを、前記第１条件のみを含む第１の部分クエリデータと、前記第１の部分クエリデータによる照合結果を前記第２条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解する機能と、
前記記憶装置に格納された前記構造化文書データのデータ集合に対して、前記第１の部分クエリデータによる照合を行い、照合結果を出力する機能と、
前記照合結果を、前記第２の部分クエリデータに含まれる結合演算の手順に従って結合演算処理する機能と、を実現させることを特徴とする構造化文書管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、構造化文書管理装置、方法およびプログラムに関する。
【背景技術】
【０００２】
従来、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などで記述された構造化文書データを記憶・検索するための構造化文書管理装置が知られている。構造化文書管理装置における構造化文書データの検索のために、ＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍａｎｔ  Ｓｙｓｔｅｍ）における問い合わせ言語ＳＱＬのように、ＸＭＬデータに対する問い合わせ言語ＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が策定されており、多くの構造化文書管理装置でサポートされている。
【０００３】
ＸＱｕｅｒｙは、ＸＭＬデータ集合をデータベースのように扱うための言語であり、条件に合致するデータ集合の取り出しや集計・分析を行うための手段が提供されている。ＸＭＬデータは親子や兄弟などの要素が組み合わさった階層化された論理構造（階層構造）を持つため、条件にはこの階層構造に関する条件（構造条件）を指定することができる。
【０００４】
構造条件の処理には、構造化文書管理装置が記憶している構造化文書データが条件に合致する構造を持つかを照合する構造照合処理を行う必要がある。この構造照合処理は、構造条件が階層の上下関係を指定する条件のみであれば比較的高速に処理することが可能であるが、構造条件の中にＸＭＬデータに含まれる要素の順序関係を指定する条件が含まれる場合は、高速に処理することが難しい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２２６４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、構造照合処理を高速に行うことができる構造化文書管理装置、方法およびプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態の構造化文書管理装置は、構造化文書データ受付手段と、識別子付与手段と、構造化文書データ記憶手段と、クエリデータ受付手段と、クエリデータ分解手段と、構造照合処理手段と、結合演算処理手段と、を備える。構造化文書データ受付手段は、階層化された論理構造を有する構造化文書データの入力を受け付ける。識別子付与手段は、入力された前記構造化文書データに出現する要素に該構造化文書データ内での出現順序が要素間で比較可能な識別子を付与する。構造化文書データ記憶手段は、前記要素に前記識別子が付与された前記構造化文書データを記憶する。クエリデータ受付手段は、クエリデータの入力を受け付ける。クエリデータ分解手段は、入力されたクエリデータが、前記構造化文書データの論理構造における階層の上下関係を指定する第１条件と、前記識別子で特定される前記要素の順序関係を指定する第２条件とを含む場合に、該クエリデータを、前記第１条件のみを含む第１の部分クエリデータと、前記第１の部分クエリデータによる照合結果を前記第２条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解する。構造照合処理手段は、前記構造化文書データ記憶手段が記憶する前記構造化文書データのデータ集合に対して、前記第１の部分クエリデータによる照合を行い、照合結果を出力する。結合演算処理手段は、前記照合結果を、前記第２の部分クエリデータに含まれる結合演算の手順に従って結合演算処理する。
【図面の簡単な説明】
【０００８】
【図１】構造化文書管理システムのシステム構築例を示す模式図。
【図２】サーバおよびクライアント端末のモジュール構成図。
【図３】第１の実施形態におけるサーバおよびクライアント端末の概略構成を示すブロック図。
【図４】構造化文書データの一例を示す説明図。
【図５】図４に例示した構造化文書データに対して要素ＩＤを付与した要素ＩＤ付与済み構造化文書データの一例を示す説明図。
【図６】クエリデータの一例を示す説明図。
【図７】検索処理部による検索処理の流れを示すフローチャート。
【図８】クエリデータ解析処理の流れを示すフローチャート。
【図９】図６に例示したクエリデータについてクエリデータ解析処理を行った結果である第１の部分クエリデータと第２の部分クエリデータの一例を示す説明図。
【図１０】構造照合処理の概略を示す説明図。
【図１１】図９に例示した第１の部分クエリデータを用いて図５に例示した要素ＩＤ付与済み構造化文書データについて構造照合処理を行った結果である構造照合処理結果データの一例を示す説明図。
【図１２】図９に例示した第２の部分クエリデータを用いて図１１に例示した構造照合処理結果データについて結合演算処理を行う場合の説明図。
【図１３】図９に例示したクエリデータの結果データを示す説明図。
【図１４】第２の実施形態におけるサーバおよびクライアント端末の概略構成を示すブロック図。
【図１５】構造ガイドデータの一例を示す説明図。
【図１６】クエリデータの一例を示す説明図。
【図１７】第２の実施形態におけるクエリデータ解析処理の流れを示すフローチャート。
【図１８】図１６に例示したクエリデータについて図１７のステップＳ２１５までの処理を行った結果である第１の部分クエリデータと第２の部分クエリデータの一例を示す説明図。
【図１９】構造条件書き換え処理の流れを示すフローチャート。
【図２０】図１８に例示した第１の部分クエリデータについて構造条件書き換え処理を行った結果を示す説明図。
【図２１】図２０に例示した構造条件書き換え処理後の第１の部分クエリデータを用いて図５に例示した要素ＩＤ付与済み構造化文書データについて構造照合処理を行った結果である構造照合処理結果データの一例を示す説明図。
【図２２】図２０に例示した第２の部分クエリデータを用いて図２１に例示した構造照合処理結果データについて結合演算処理を行う場合の説明図。
【図２３】図１６に例示したクエリデータの結果データを示す説明図。
【図２４】クエリデータの一例を示す説明図。
【図２５】第３の実施形態におけるクエリデータ解析処理の流れを示すフローチャート。
【図２６】図２４に例示したｐｏｓｉｔｉｏｎ関数を含むクエリデータについてクエリデータ解析処理を行った結果である第１の部分クエリデータと第２の部分クエリデータの一例を示す説明図。
【図２７】図２４に例示したｌａｓｔ関数を含むクエリデータについてクエリデータ解析処理を行った結果である第１の部分クエリデータと第２の部分クエリデータの一例を示す説明図。
【図２８】図２６に例示した第１のクエリデータを用いて図５に例示した要素ＩＤ付与済み構造化文書データについて構造照合処理を行った結果である構造照合処理結果データの一例を示す説明図。
【図２９】図２６に例示した第２の部分クエリデータを用いて図２８に例示した構造照合処理結果データについて結合演算処理を行う場合の説明図。
【図３０】図２７に例示した第１のクエリデータを用いて図５に例示した要素ＩＤ付与済み構造化文書データについて構造照合処理を行った結果である構造照合処理結果データの一例を示す説明図。
【図３１】図２７に例示した第２の部分クエリデータを用いて図３０に例示した構造照合処理結果データについて結合演算処理を行う場合の説明図。
【図３２】図２４に例示したｐｏｓｉｔｉｏｎ関数を含むクエリデータの結果データを示す説明図。
【図３３】図２４に例示したｌａｓｔ関数を含むクエリデータの結果データを示す説明図。
【図３４】第４の実施形態におけるサーバおよびクライアント端末の概略構成を示すブロック図。
【図３５】クエリデータの一例を示す説明図。
【図３６】第４の実施形態における検索処理の流れを示すフローチャート。
【図３７】第４の実施形態におけるクエリデータ解析処理の流れを示すフローチャート。
【図３８】図３５に例示したクエリデータについてクエリデータ解析処理を行った結果である第１の部分クエリデータの一例を示す説明図。
【図３９】図３８に例示した第１の部分クエリデータを用いて図５に例示した要素ＩＤ付与済み構造化文書データについて構造照合処理を行った結果である構造照合処理結果データの一例を示す説明図。
【図４０】図３５に例示したクエリデータの結果データを示す説明図。
【発明を実施するための形態】
【０００９】
以下、実施形態の構造化文書管理装置、方法およびプログラムを、図面を参照して説明する。
【００１０】
［第１の実施形態］
まず、第１の実施形態について、図１乃至図１３を参照して説明する。図１は、第１の実施形態にかかる構造化文書管理システムのシステム構築例を示す模式図である。ここでは、実施形態の構造化文書管理システムとして、図１に示すように、構造化文書管理装置であるサーバコンピュータ（以下、サーバという。）１に、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク２を介して、クライアントコンピュータ（以下、クライアント端末という。）３が複数台接続されたサーバクライアントシステムを想定する。
【００１１】
図２は、サーバ１およびクライアント端末３のモジュール構成図である。サーバ１およびクライアント端末３は、例えば、通常のコンピュータを利用したハードウェア構成を有している。すなわち、サーバ１およびクライアント端末３は、情報処理を行うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＢＩＯＳなどを記憶した読出し専用メモリであるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２、各種データを書き換え可能に記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３、各種データベースとして機能するとともに各種のプログラムを格納するＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）１０４、記憶媒体１１０を用いて情報を保管したり外部に情報を配布したり外部から情報を入手するためのＣＤ−ＲＯＭドライブ等の媒体駆動装置１０５、ネットワーク２を介して外部の他のコンピュータと通信により情報を伝達するための通信制御装置１０６、処理経過や結果等を操作者に表示するＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等の表示部１０７、並びに操作者がＣＰＵ１０１に命令や情報等を入力するためのキーボードやマウス等の入力部１０８等を備えた構成であり、これらの各部間で送受信されるデータをバスコントローラ１０９が調停して動作する。
【００１２】
このようなサーバ１およびクライアント端末３では、ユーザが電源を投入するとＣＰＵ１０１がＲＯＭ１０２内のローダーというプログラムを起動させ、ＨＤＤ１０４よりＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）というコンピュータのハードウェアとソフトウェアとを管理するプログラムをＲＡＭ１０３に読み込み、このＯＳを起動させる。このようなＯＳは、ユーザの操作に応じてプログラムを起動したり、情報を読み込んだり、保存を行ったりする。ＯＳのうち代表的なものとしては、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）等が知られている。これらのＯＳ上で動作するプログラムをアプリケーションプログラムと呼んでいる。なお、アプリケーションプログラムは、所定のＯＳ上で動作するものに限らず、後述の各種処理の一部の実行をＯＳに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやＯＳなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
【００１３】
ここで、サーバ１は、アプリケーションプログラムとして、構造化文書管理プログラムをＨＤＤ１０４に記憶している。この意味で、ＨＤＤ１０４は、構造化文書管理プログラムを記憶する記憶媒体として機能する。また、一般的には、サーバ１のＨＤＤ１０４にインストールされるアプリケーションプログラムは、ＣＤ−ＲＯＭやＤＶＤなどの各種の光ディスク、各種光磁気ディスク、フレキシブルディスクなどの各種磁気ディスク、半導体メモリ等の各種方式のメディア等の記憶媒体１１０に記録されて提供される。このため、ＣＤ−ＲＯＭ等の光情報記録メディアやＦＤ等の磁気メディア等の可搬性を有する記憶媒体１１０も、構造化文書管理プログラムを記憶する記憶媒体となり得る。さらには、構造化文書管理プログラムは、例えば通信制御装置１０６を介して外部から取り込まれ、ＨＤＤ１０４にインストールされてもよい。
【００１４】
サーバ１は、ＯＳ上で動作する構造化文書管理プログラムが起動すると、この構造化文書管理プログラムに従い、ＣＰＵ１０１が各種の演算処理を実行して各部を集中的に制御する。一方、クライアント端末３は、ＯＳ上で動作するアプリケーションプログラムが起動すると、このアプリケーションプログラムに従い、ＣＰＵ１０１が各種の演算処理を実行して各部を集中的に制御する。サーバ１およびクライアント端末３のＣＰＵ１０１が実行する各種の演算処理のうち、実施形態の構造化文書管理システムにおいて特徴的な処理について、以下に説明する。
【００１５】
図３は、第１の実施形態におけるサーバ１およびクライアント端末３の概略構成を示すブロック図である。図３に示すように、クライアント端末３は、アプリケーションプログラムにより実現される機能構成として、構造化文書登録部１１と、検索部１２とを備える。
【００１６】
構造化文書登録部１１は、入力部１０８から入力された構造化文書データやクライアント端末３のＨＤＤ１０４に予め記憶された構造化文書データを、後述するサーバ１の構造化文書データベース（構造化文書ＤＢ）２１に登録するためのものである。この構造化文書登録部１１は、登録すべき構造化文書データとともに格納要求をサーバ１に送信する。
【００１７】
図４は、構造化文書データの一例を示したものである。構造化文書データを記述するための代表的な言語としてＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）が挙げられる。図４に示す構造化文書データは、ＸＭＬで記述されたものである。ＸＭＬでは、文書構造を構成する個々のパーツを「要素」（エレメント：Ｅｌｅｍｅｎｔ）と呼び、要素はタグ（ｔａｇ）を使って記述する。具体的には、要素の始まりを示すタグ（開始タグ）と、終わりを示すタグ（終了タグ）の２つのタグでデータを挟み込んで、１つの要素を表現している。なお、開始タグと終了タグで挟み込まれたテキストデータは、当該開始タグと終了タグで表された１つの要素に含まれるテキスト要素である。
【００１８】
図４に示す例では、＜ｂｏｏｋｓ＞というタグで囲まれたルート要素が存在する。この＜ｂｏｏｋｓ＞要素は、＜ｂｏｏｋ＞のタグで囲まれた３つの子要素を包含する。＜ｂｏｏｋ＞要素は、＜ｔｉｔｌｅ＞、＜ａｕｔｈｏｒ＞の各タグで囲まれた複数の子要素を包含する。＜ｔｉｔｌｅ＞要素は、「ＸＭＬデータベース」などのテキスト要素をもつ。
【００１９】
１番目の＜ｂｏｏｋ＞要素は、２つの＜ａｕｔｈｏｒ＞要素を持ち、これら２つの＜ａｕｔｈｏｒ＞要素が＜ｔｉｔｌｅ＞要素の後に出現する順序であるが、２，３番目の＜ｂｏｏｋ＞要素は、１つの＜ａｕｔｈｏｒ＞要素のみを持ち、＜ａｕｔｈｏｒ＞要素の後に＜ｔｉｔｌｅ＞要素が出現している。
【００２０】
検索部１２は、ユーザにより入力部１０８から入力された指示に従って、構造化文書ＤＢ２１から所望のデータを検索するための検索条件などが記述されたクエリデータを作成し、当該クエリデータを含む検索要求をサーバ１へ送信する。また、検索部１２は、サーバ１から送信された当該検索要求に対応する結果データを受け取り、これを表示部１０７に表示する。
【００２１】
一方、サーバ１は、構造化文書管理プログラムにより実現される機能構成として、格納処理部２２と、検索処理部２３とを備える。また、サーバ１は、ＨＤＤ１０４などの記憶装置を利用した構造化文書ＤＢ２１を備える。
【００２２】
格納処理部２２は、クライアント端末３からの格納要求を受けて、クライアント端末３から送信された構造化文書データを構造化文書ＤＢ２１に格納する処理を行う。この格納処理部２２は、格納インタフェース部２４と、要素ＩＤ付与部２５とを備えている。
【００２３】
格納インタフェース部２４は、構造化文書データの入力を受け付けて（構造化文書データ受付手段）、構造化文書データを構造化文書ＤＢ２１に格納するために要素ＩＤ付与部２５を呼び出す。
【００２４】
要素ＩＤ付与部２５は、識別子付与手段として機能するものであって、クライアント端末３から送信された構造化文書データを構文解析し、そこに出現する要素に要素間で出現順序が比較可能な識別子（以下、要素ＩＤという。）を付与した上で、要素ＩＤが付与された構造化文書データ（以下、要素ＩＤ付与済み構造化文書データという。）を構造化文書ＤＢ２１（構造化文書データ記憶手段）に格納する。
【００２５】
ここで、要素ＩＤは、その大小で構造化文書データ中での要素の出現順序が判定できるように付与される。図４に例示した構造化文書データに対して要素ＩＤを付与した要素ＩＤ付与済み構造化文書データの例を図５に示す。図５では、要素ＩＤを付与する方法の一例として、ルート要素より要素の出現順に従ってＥ１、Ｅ２、Ｅ３、・・・と付与している。このように付与すれば、要素間の出現順序を要素ＩＤの比較で判定することができる。
【００２６】
例えば、図４に例示した構造化文書データにおける＜ｂｏｏｋｓ＞の１番目の＜ｂｏｏｋ＞要素は、その中に２つの＜ａｕｔｈｏｒ＞要素を持ち、これら２つの＜ａｕｔｈｏｒ＞要素の出現順序は、子に＜ｆｉｒｓｔ＞要素を持つ＜ａｕｔｈｏｒ＞要素が先に出現し、子に＜ｌａｓｔ＞要素を持つ＜ａｕｔｈｏｒ＞要素が後に出現する順となっている。ここで、図５でそれぞれに付与された要素ＩＤを比較すると、Ｅ５＜Ｅ８であり、要素ＩＤとしてＥ８を付与された要素である、子に＜ｌａｓｔ＞要素を持つ＜ａｕｔｈｏｒ＞要素が、要素ＩＤとしてＥ８を付与された要素である、子に＜ｆｉｒｓｔ＞要素を持つ＜ａｕｔｈｏｒ＞要素よりも後に出現することが判定できる。また、図５では、要素ＩＤ付与済み構造化文書データの形式が図４の構造化文書データとほぼ同一であるが、先に述べたように、その大小で要素の出現順序が判定できるように要素ＩＤが付与されていれば、要素ＩＤ付与済み構造化文書データの形式は特に限定されるものではない。
【００２７】
検索処理部２３は、クライアント端末３からの検索要求を受けて、クエリデータにより指定された条件に合致するデータを構造化文書ＤＢ２１から探し出し、この探し出したデータを結果データとして返す処理を行う。この検索処理部２３は、検索インタフェース部２６と、クエリデータ分解部２７と、構造照合処理部２８と、結合演算処理部２９とを備えている。
【００２８】
検索インタフェース部２６は、クエリデータの入力を受け付けて（クエリデータ受付手段）、受け付けたクエリデータにより指定された条件を満足する結果データを得るためにクエリデータ分解部２７を呼び出す。
【００２９】
クエリデータ分解部２７は、クエリデータ分解手段として機能するものであって、クライアント端末３から送信され、検索インタフェース部２６を介して入力されたクエリデータ（以下、入力クエリデータという。）を構文解析し、この入力クエリデータが、構造化文書データの論理構造における階層の上下関係を指定する条件（第１条件）と、要素ＩＤで特定される要素の順序関係を指定する条件（第２条件）とを含む場合に、入力クエリデータを、第１条件のみを含む第１の部分クエリデータと、第１の部分クエリデータによる照合結果を第２条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解する。
【００３０】
構造照合処理部２８は、構造照合処理手段として機能するものであって、構造化文書ＤＢ２１に格納されている要素ＩＤ付与済み構造化文書データのデータ集合に対して、第１の部分クエリデータによる構造条件の照合処理を行い、その照合結果を構造照合処理結果データとして出力する。
【００３１】
結合演算処理部２９は、結合演算処理手段として機能するものであって、構造照合処理部２８から出力された第１の部分クエリデータによる照合結果である構造照合処理結果データに対して、第２のクエリデータに含まれる結合演算の手順に従って結合演算を行い、結合演算結果データを出力する。なお、結合演算処理部２９は、第２の部分クエリデータが空ならば、構造照合処理部２８から出力された構造照合処理結果データをそのまま出力するか、または自身の処理を省略する。
【００３２】
検索インタフェース部２６は、結合演算処理部２９から出力された結合演算処理結果データを、検索の結果データとしてクライアント端末３へ返却する。
【００３３】
図６は、クエリデータの一例を示す説明図である。ＸＭＬでは、Ｗ３Ｃで提案されているＸＱｕｅｒｙという問合せ言語があり、図６に示すクエリデータは、このＸＱｕｅｒｙに基づいた問合せ記述方法に則っている。図６には、下記のような意味の複雑な階層構造に関する条件（構造条件）を含むクエリデータＱ１が示されている。
Ｑ１：構造化文書ＤＢ２１の各構造化文書データについて、階層のどこかに「ｂｏｏｋ」という要素があり、その「ｂｏｏｋ」という要素は、その中に「ａｕｔｈｏｒ」という要素を持ち、さらにこの「ａｕｔｈｏｒ」という要素の中に、「ｆｉｒｓｔ」と「ｌａｓｔ」という２つの要素を持つような「ｂｏｏｋ」要素であり、さらにその「ｂｏｏｋ」要素よりも後に出現する「ｂｏｏｋ」要素について、その中にある「ｔｉｔｌｅ」の一覧を返す。
【００３４】
図７は、サーバ１の検索処理部２３による検索処理の流れを示すフローチャートである。まず、検索インタフェース部２６により、クライアント端末３からネットワーク２経由で送信されたクエリデータの入力が受け付けられる（ステップＳ１）。
【００３５】
次に、クエリデータ分解部２７により、入力クエリデータについてのクエリデータ解析処理が行われる（ステップＳ２）。クエリデータ分解部２７によるクエリデータ解析処理の一例を、図８を参照して説明する。
【００３６】
図８は、クエリデータ解析処理の流れを示すフローチャートである。クエリデータ分解部２７は、はじめに、入力クエリデータのすべてを便宜的に第１の部分クエリデータとする（ステップＳ２０１）。このとき、第２の部分クエリデータは空としておく。
【００３７】
次に、クエリデータ分解部２７は、第１の部分クエリデータをチェックして、第１の部分クエリデータ（ここでは入力クエリデータと同じ）に、ある構造を持つ要素間の順序関係に関する構造条件、つまり、要素ＩＤで特定される要素の順序関係を指定するような条件が含まれるかどうかを判定する（ステップＳ２０２）。そして、クエリデータ分解部２７は、そのような構造条件が含まれていれば（ステップＳ２０２：Ｙｅｓ）、第１の部分クエリデータを、階層の上下関係を指定する条件のみを含む構造条件、つまり、順序関係に関する構造条件での照合の対象となる構造それぞれを指定するような構造条件に分解し（ステップＳ２０３）、分解された構造条件すべてを第１の部分クエリデータとする（ステップＳ２０４）。そして、クエリデータ分解部２７は、分解された各構造条件の構造照合処理結果間で、そこに含まれる要素ＩＤの結合演算を指示する内容を、第２の部分クエリデータとし（ステップＳ２０５）、クエリデータ解析処理を終了する。
【００３８】
一方、ステップＳ２０２の判定で、第１の部分クエリデータ（ここでは入力クエリデータと同じ）に上述した順序関係に関する構造条件が含まれなければ（ステップＳ２０２：Ｎｏ）、クエリデータ分解部２７は、ステップＳ２０３からステップＳ２０５の処理を行うことなく、クエリデータ解析処理を終了する。
【００３９】
図９は、図６に例示したクエリデータＱ１についてのクエリデータ解析処理の結果である第１の部分クエリデータＱ１＿Ａと第２の部分クエリデータＱ１＿Ｂの一例を示す図である。図９において、第１の部分クエリデータＱ１＿Ａは、構造条件ＰＰ１とＰＰ２を含んでいる。また、第２の部分クエリデータＱ１＿Ｂは、Ｑ１＿Ａによる構造照合処理の照合結果を、上述した順序関係に関する構造条件に応じて結合演算する手順を含んでいる。図６に例示したクエリデータＱ１は、順序関係に関する構造条件「ｆｏｌｌｏｗｉｎｇ−ｓｉｂｌｉｎｇ」が含まれているため、クエリデータＱ１は、この構造条件での照合の対象となる構造を指定する構造条件ＰＰ１，ＰＰ２に分解され、これらＰＰ１，ＰＰ２による構造照合処理の照合結果を「ｆｏｌｌｏｗｉｎｇ−ｓｉｂｌｉｎｇ」に応じて結合演算する手順が、第２の部分クエリデータＱ１＿Ｂとされる。なお、図中のＱ１＿ＢにあるＴ１，Ｔ２は、それぞれＰＰ１，ＰＰ２を構造照合処理した結果を識別する記号である。また、図中のＱ１＿Ａ，Ｑ１＿Ｂにある［１］，［２］，［３］は、Ｔ１，Ｔ２に含まれる要素ＩＤ群を識別する記号である。
【００４０】
クエリデータ分解部２７によるクエリデータ解析処理が終了すると、次に、構造照合処理部２８により、第１の部分クエリデータに含まれる構造条件の構造照合処理が行われる（ステップＳ３）。ここで、構造照合処理とは、構造化文書データについて、指定された構造条件をＸＱｕｅｒｙで定められた仕様で解釈して照合し、結果として構造条件に合致する構造化文書データまたは構造化文書データ中の要素を得る処理をいう。
【００４１】
ここで、図５に例示した要素ＩＤ付与済み構造化文書データと、図９に例示した第１の部分クエリデータＱ１＿Ａに含まれる構造条件ＰＰ１，ＰＰ２とを用いて、一般的な構造照合処理を行った場合の処理の概要を、図１０を参照して説明する。以下では、構造条件中の／で区切られた部分を単にパスと呼称する。
【００４２】
第１の部分クエリデータＱ１＿Ａに含まれる構造条件ＰＰ１の照合について、構造条件ＰＰ１を左から見て、まず先頭のパス／／ｂｏｏｋ（／ｄｅｓｃｅｎｄａｎｔ−ｏｒ−ｓｅｌｆ：：ｂｏｏｋ）の照合を行う。これは、ＸＱｕｅｒｙ仕様で、「ルート要素以下のどこかの階層構造にある要素で、名前がｂｏｏｋである要素を選択する」ことを意味する。これに従い、図５に例示した要素ＩＤ付与済み構造化文書データ中の要素の構造を照合すると、ルート要素＜ｂｏｏｋｓ＞以下の３つの＜ｂｏｏｋ＞要素、Ｅ２，Ｅ１３，Ｅ２１が選択される（１．１）。
【００４３】
次の［ａｕｔｈｏｒ［ｆｉｒｓｔ  ａｎｄ  ｌａｓｔ］］とは、「前の構造照合で得られた要素について、その子にａｕｔｈｏｒという要素があり、さらにそのａｕｔｈｏｒ要素は、その子としてｆｉｒｓｔとｌａｓｔという要素を両方含んでいるような要素のみをさらに選択する」ことを意味する。これに従い各＜ｂｏｏｋ＞要素より下位の要素の構造を照合して＜ｂｏｏｋ＞要素を選択すると、結果として、要素ＩＤがＥ１３，Ｅ２１であるｂｏｏｋ要素が得られる（１．２）。
【００４４】
同様に、第１の部分クエリデータＱ１＿Ａに含まれる構造条件ＰＰ２の照合について、先頭のパス／／ｂｏｏｋについては先のＰＰ１の例と同じ意味であり、３つの＜ｂｏｏｋ＞要素、Ｅ２，Ｅ１３，Ｅ２１が選択される（２．１）。次に続くパス／ｔｉｔｌｅ（／ｃｈｉｌｄ：：ｔｉｔｌｅ）とは、「前のパス照合で得られた要素に対して子供の階層構造の位置にある要素で、名前がｔｉｔｌｅである要素を選択する」ことを意味する。これに従い、前の構造照合で得られた各＜ｂｏｏｋ＞要素に対して子供の構造位置にある要素を照合すると、要素ＩＤがＥ２の＜ｂｏｏｋ＞要素からは要素ＩＤがＥ３の＜ｔｉｔｌｅ＞要素が得られ、要素ＩＤがＥ１３の＜ｂｏｏｋ＞要素からは要素ＩＤがＥ１９の＜ｔｉｔｌｅ＞要素が得られ、要素ＩＤがＥ２１の＜ｂｏｏｋ＞要素からは要素ＩＤがＥ２７の＜ｔｉｔｌｅ＞要素が得られる（２．２）。
【００４５】
なお、ここで概説した構造条件およびパスの構造照合処理の方法は一例であり、構造条件およびパスの構造照合処理の方法には、特許文献１に記載されているようなものをはじめ、様々なものがある。本実施形態における構造照合処理部２８は、入力された構造条件に合致する構造を持つ構造化文書データ中の要素を取得するものであれば、内部の具体的な処理方法については特に限定されるものではない。
【００４６】
図５に例示した要素ＩＤ付与済み構造化文書データについて、図９に例示した第１の部分クエリデータＱ１＿Ａに含まれる構造条件ＰＰ１，ＰＰ２の構造照合処理を行った結果である構造照合処理結果データＲ１＿Ａを図１１に示す。図中のＴ１，Ｔ２は、それぞれ構造条件ＰＰ１，ＰＰ２の構造照合処理の結果であり、Ｔ１としては構造条件ＰＰ１に合致する構造を持つ要素の要素ＩＤ群［１］が得られ、Ｔ２としては構造条件ＰＰ２に合致する構造を持つ要素の要素ＩＤ群［２］，［３］が得られる。なお、図１１ではＴ１，Ｔ２を表で示しているが、構造照合処理結果データの具体的なデータ構造は特に限定されるものではない。
【００４７】
構造照合処理部２８による構造照合処理が終了すると、次に、結合演算処理部２９により、構造照合処理部２８の処理結果である構造照合処理結果データについて、第２の部分クエリデータに含まれる手順に従って結合演算処理が行われる（ステップＳ４）。
【００４８】
図１２は、図９に例示した第２の部分クエリデータＱ１＿Ｂを用いて図１１に例示した構造照合処理結果データＲ１＿Ａについて結合演算処理を行う場合の処理の概要を説明する図である。結合演算処理は、従来のＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）で行われている結合演算（ＪＯＩＮ）などと同じである。
【００４９】
図１２の例では、Ｔ１［１］＜Ｔ２［２］という順序関係に関する条件に従ってＴ１とＴ２との結合演算が行われ、Ｔ３が得られる。そして、Ｔ３について［３］のみを取り出すことにより、結合演算処理の結果として、図１２に示すような中間結果Ｒ１＿Ｂが得られる。この中間結果Ｒ１＿Ｂは、図６に例示したクエリデータＱ１を、上述したようなクエリデータ解析処理を行わずにそのまま処理した場合の結果と一致する。
【００５０】
結合演算処理部２９による結合演算処理が終了すると、最後に、検索インタフェース部２６により、結合演算処理部２９による結合演算処理の結果（中間結果）として得られる要素ＩＤが、それに対応する構造化文書データとして文字列化され、結果データとしてクライアント端末３に返却される（ステップＳ５）。図１２に示した中間結果Ｒ１＿Ｂが得られた場合には、この中間結果Ｒ１＿Ｂに含まれる要素ＩＤであるＥ２７に対応する構造化文書データが文字列化され、クエリデータＱ１の結果データＲ１として、図１３に示すデータがクライアント端末３に返却される。
【００５１】
以上、具体的な例を挙げながら説明したように、本実施形態によれば、サーバ１が、構造化文書データの登録時に、その構造化文書データに出現する各要素に要素間で出現順序が比較可能な要素ＩＤを付与して、要素ＩＤ付与済み構造化文書データを構造化文書ＤＢ２１に格納する。また、サーバ１は、構造化文書データの検索時には、クライアント端末３からの入力クエリデータを構文解析して、入力クエリデータが、構造化文書データの論理構造における階層の上下関係を指定する第１条件と、要素ＩＤで特定される要素の順序関係を指定する第２条件とを含む場合に、その入力クエリデータを、第１条件のみを含む第１の部分クエリデータと、第１の部分クエリデータによる照合結果を、第２条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解して処理するようにしている。したがって、入力クエリデータが複雑な構造条件を含む場合でも、この入力クエリデータを単純な構造条件の構造照合処理と結合演算処理とで処理することで、構造照合処理の高速化を実現し、複雑な構造条件を含むクエリデータによる検索を高速に実行することができる。
【００５２】
なお、上記の具体例では、入力クエリデータに、要素ＩＤで特定される要素の順序関係を指定する条件（順序関係に関する構造条件）として「ｆｏｌｌｏｗｉｎｇ−ｓｉｂｌｉｎｇ」が含まれる場合を例示して説明したが、要素の順序関係を指定する他の条件、例えば「ｆｏｌｌｏｗｉｎｇ」や「ｐｒｅｃｅｅｄｉｎｇ」、「ｐｒｅｃｅｅｄｉｎｇ−ｓｉｂｌｉｎｇ」などが含まれる場合であっても、上記の具体例と同様に処理することができる。
【００５３】
［第２の実施形態］
次に、第２の実施形態について、図５、図７、図１４乃至図２３を参照して説明する。本実施形態は、第１の部分クエリデータが、構造化文書データの論理構造における階層を下位から上位へと辿る条件を含む場合に、その条件を、構造化文書データの論理構造における階層を下位から上位へと辿る条件に書き換えるようにした例である。なお、以下の説明において、上述した第１の実施形態と共通の構成については同一の符号を付し、重複した説明を省略する。
【００５４】
図１４は、本実施形態におけるサーバ１’およびクライアント端末３の概略構成を示すブロック図である。本実施形態では、サーバ１’の格納処理部２２’に構造解析部３０が設けられている。また、サーバ１’の構造化文書ＤＢ２１’には、要素ＩＤ付与済み構造化文書データとともに、構造化文書ＤＢ２１’に格納された要素ＩＤ付与済み構造化文書データそれぞれの階層化された論理構造を集約した情報である構造ガイドデータが格納されている（構造ガイドデータ記憶手段）。また、サーバ１’の検索処理部２３’には、構造条件書き換え部３１が設けられている。なお、クライアント端末３の構成は第１の実施形態と同じである。
【００５５】
構造解析部３０は、構造ガイドデータ更新手段として機能するものであり、クライアント端末３から送信された構造化文書データの階層化された論理構造を解析し、その論理構造が構造ガイドデータに反映されるように、構造化文書ＤＢ２１’に格納されている構造ガイドデータを更新する。
【００５６】
構造ガイドデータは、構造化文書ＤＢ２１’に格納された要素ＩＤ付与済み構造化文書データそれぞれの階層化された論理構造を集約した情報であり、要素ＩＤ付与済み構造化文書データ中に出現する一意な階層構造に関する情報を保持するものである。図４に例示した構造化文書データに対応する構造ガイドデータは、例えば図１５に示すようなものとなる。構造解析部３０は、まず、クライアント端末３から送信された構造化文書データの階層化された論理構造を解析して図１５に示すような構造ガイドデータを新規に生成する。そして、構造解析部３０は、新規に生成した構造ガイドデータを構造化文書ＤＢ２１’に格納されている構造ガイドデータ（つまり、構造化文書ＤＢ２１’に格納された要素ＩＤ付与済み構造化文書データの論理構造を集約した構造ガイドデータ）と比較し、新規に生成した構造ガイドデータが、構造化文書ＤＢ２１’に格納されている構造ガイドデータにはない新たな階層構造に関する情報を含む場合に、その新たな階層構造に関する情報を、構造化文書ＤＢ２１’に格納されている構造ガイドデータに追加するかたちで、構造化文書ＤＢ２１’に格納されている構造ガイドデータを更新する。
【００５７】
構造条件書き換え部３１は、条件書き換え手段として機能するものであって、クエリデータ分解部２７によって入力クエリデータを分解して得られた第１の部分クエリデータが、構造化文書データの論理構造における階層を下位から上位へと辿る条件、つまり構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件を含む場合に、該条件を、構造化文書ＤＢ２１’に格納されている構造ガイドデータに基づいて、構造化文書データの論理構造における階層を上位から下位へと辿る条件、つまり構造化文書データのルート要素（根）からリーフ要素（葉）方向に構造を照合するような条件に書き換える。
【００５８】
図１６は、本実施形態で想定するクエリデータの一例を示す説明図である。この図１６に示すクエリデータＱ２は、第１の実施形態で説明したクエリデータＱ１と同じくＸＱｕｅｒｙで記述されており、下記のような意味の複雑な階層構造に関する条件（構造条件）を含んでいる。
Ｑ２：構造化文書ＤＢ２１’の各構造化文書データについて、階層のどこかに「ｂｏｏｋ」という要素があり、その「ｂｏｏｋ」という要素はその中に「ａｕｔｈｏｒ」という要素を持ち、さらにこの「ａｕｔｈｏｒ」という要素の中に、「ｆｉｒｓｔ」と「ｌａｓｔ」という２つの要素を持つような「ｂｏｏｋ」要素であり、さらにその「ｂｏｏｋ」要素よりも後に出現する「ｂｏｏｋ」要素の子である「ｔｉｔｌｅ」要素の、親要素の子であるような「ａｕｔｈｏｒ」要素の一覧を返す。
【００５９】
クエリデータＱ２では、クエリデータＱ１に加えて「／ｐａｒｅｎｔ」というパスが出現している。ＸＱｕｅｒｙでの／ｄｅｓｃｅｎｄａｎｔ、／ｄｅｓｃｅｎｄａｎｔ−ｏｒ−ｓｅｌｆや／（ｃｈｉｌｄ）が、構造化文書のルート要素（根）からリーフ要素（葉）方向に構造を照合するパスであるのに対して、／ｐａｒｅｎｔや／ａｎｃｅｓｔｏｒは構造化文書データのリーフ要素（葉）からルート要素（根）方向に、階層構造内での親や先祖要素を照合するパスである。
【００６０】
本実施形態おける検索処理部２３’による検索処理の流れは、図７に示した第１の実施形態のものと同様である。ただし、本実施形態では、ステップＳ２のクエリデータ解析処理の中で、構造条件書き換え部３１による構造条件書き換え処理が実施される。
【００６１】
図１７は、本実施形態におけるクエリデータ解析処理の流れを示すフローチャートである。この図１７のフローチャートにおいて、ステップＳ２１１〜ステップＳ２１５までの処理は、第１の実施形態で説明した図８のステップＳ２０１〜ステップＳ２０５と同様であるため、説明を省略する。
【００６２】
本実施形態におけるクエリデータ解析処理では、ステップＳ２１５の処理の次に、構造条件書き換え部３１が、これまでの処理で作成された第１の部分クエリデータに、構造化文書データの階層構造を葉から根方向へ照合するような構造条件が含まれるかどうかを判定する（ステップＳ２１６）。そして、構造条件書き換え部３１は、第１の部分クエリデータに、構造化文書データの階層構造を葉から根方向へ照合するような構造条件が含まれていれば（ステップＳ２１６：Ｙｅｓ）、構造条件書き換え処理を行って、構造化文書データの階層構造を葉から根方向へ照合する構造条件を、根から葉方向へ照合する構造条件に書き換える（ステップＳ２１７）。
【００６３】
一方、ステップＳ２１６の判定で、第１の部分クエリデータに、構造化文書データの階層構造を葉から根方向へ照合するような構造条件が含まれなければ（ステップＳ２１６：Ｎｏ）、ステップＳ２１７の構造条件書き換え処理を行うことなく、クエリデータ解析処理を終了する。
【００６４】
図１８は、図１６に例示したクエリデータＱ２について、図１７のステップＳ２１５までの処理を行った結果である第１の部分クエリデータＱ２＿Ａと第２の部分クエリデータＱ２＿Ｂの例を示す図である。図１８において、第１の部分クエリデータＱ２＿Ａは、構造条件ＰＰ１とＰＰ２を含んでいる。また、第２の部分クエリデータＱ２＿Ｂは、Ｑ２＿Ａによる構造照合処理の照合結果を、上述した順序関係に関する構造条件に応じて結合演算する手順を含んでいる。この図１８の例では、第１の部分クエリデータＱ２＿Ａの構造条件ＰＰ２が、／ｐａｒｅｎｔのパスを含んでいる。このため、構造条件書き換え部３１による構造条件書き換え処理が行われることになる。
【００６５】
図１９は、図１７のステップＳ２１７で行われる構造条件書き換え処理を示すフローチャートである。構造条件書き換え部３１は、まず、第１の部分クエリデータのうち、構造化文書データの階層構造を葉から根方向へ照合するパスが含まれる構造条件（以下、入力構造条件という。）の中で、葉から根方向へ照合するパス部分を特定する（ステップＳ２１７１）。次に、構造条件書き換え部３１は、入力構造条件を、特定したパス部分より前のパスと、特定したパス部分より後のパスと、構造ガイドデータとを参照して、葉から根方向へ照合するパス部分を含まない同じ意味のパスに書き換える（ステップＳ２１７２）。
【００６６】
ここで、図１８に例示した第１の部分クエリデータＱ２＿Ａにある構造条件ＰＰ２を、図１５に例示した構造ガイドデータを参照して書き換える場合を例に挙げて、ステップＳ２１７２での処理の概要を説明する。なお、ここでは説明を簡単にするために、図１５に例示した構造ガイドデータを参照しているが、実際には構造化文書ＤＢ２１’に格納された構造ガイドデータが参照される。
【００６７】
第１の部分クエリデータＱ２＿Ａにある構造条件ＰＰ２の／ｐａｒｅｎｔ：：ｎｏｄｅ（）部分について、その直前のパスは／ｔｉｔｌｅである。図１５に例示した構造ガイドデータを参照すると、ｔｉｔｌｅを末尾に持つ構造は／ｂｏｏｋｓ／ｂｏｏｋ／ｔｉｔｌｅである。／ｐａｒｅｎｔ：：ｎｏｄｅ（）は親要素を指定するため、／ｐａｒｅｎｔ：：ｎｏｄｅ（）の指定する構造は／ｂｏｏｋｓ／ｂｏｏｋとわかる。さらに、／ｐａｒｅｎｔ：：ｎｏｄｅ（）の次のパスである／ａｕｔｈｏｒについても、ここまでで特定された構造は／ｂｏｏｋｓ／ｂｏｏｋであるから、／ｂｏｏｋｓ／ｂｏｏｋの後に／ａｕｔｈｏｒが続く構造があるかを構造ガイドデータで確認すると、存在するので、構造条件ＰＰ２の書き換え結果として／ｂｏｏｋｓ／ｂｏｏｋ／ａｕｔｈｏｒが得られる。
【００６８】
図２０は、図１８に例示した第１の部分クエリデータＱ２＿Ａについて、構造条件書き換え処理を行った結果を示す図である。なお、図中の第２の部分クエリデータＱ２＿Ｂは、図１８に例示したものと同じである。
【００６９】
本実施形態では、構造条件書き換え部３１による構造条件書き換え処理を経て、構造照合処理部２８による構造照合処理が行われる（ステップＳ３）。このとき、第１の部分クエリデータに含まれる構造条件は、葉から根方向へ照合するパス部分を含まないものに書き換えられているため、構造照合処理部２８による構造照合処理は、すべて根から葉方向への照合のみで実現することができ、極めて高速な処理が可能である。
【００７０】
図５に例示した要素ＩＤ付与済み構造化文書データについて、図２０に例示した構造条件書き換え処理後の第１の部分クエリデータＱ２＿Ａに含まれる構造条件ＰＰ１，ＰＰ２による構造照合処理を行った結果である構造照合処理結果データＲ２＿Ａを図２１に示す。図中のＴ１，Ｔ２は、それぞれ構造条件ＰＰ１，ＰＰ２の構造照合処理の結果であり、Ｔ１としては構造条件ＰＰ１に合致する構造を持つ要素の要素ＩＤ群［１］が得られ、Ｔ２としては構造条件ＰＰ２に合致する構造を持つ要素の要素ＩＤ群［２］，［３］が得られる。
【００７１】
本実施形態においても、構造照合処理部２８による構造照合処理が終了すると、結合演算処理部２９により、構造照合処理部２８の処理結果である構造照合処理結果データについて、第２の部分クエリデータに含まれる手順に従って結合演算処理が行われる（ステップＳ４）。
【００７２】
図２２は、図２０に例示した第２の部分クエリデータＱ２＿Ｂを用いて図２１に例示した構造照合処理結果データＲ２＿Ａについて結合演算処理を行う場合の処理の概要を説明する図である。図２２の例では、Ｔ１［１］＜Ｔ２［２］という順序関係に関する条件に従ってＴ１とＴ２との結合演算が行われ、Ｔ３が得られる。そして、Ｔ３について［３］のみを取り出すことにより、結合演算処理の結果として、図２２に示すような中間結果Ｒ２＿Ｂが得られる。この中間結果Ｒ２＿Ｂは、図１６に例示したクエリデータＱ２を、上述したようなクエリデータ解析処理を行わずにそのまま処理した場合の結果と一致する。
【００７３】
最後に、検索インタフェース部２６により、結合演算処理部２９による結合演算処理の結果（中間結果）として得られる要素ＩＤが、それに対応する構造化文書データとして文字列化され、結果データとしてクライアント端末３に返却される（ステップＳ５）。図２２に示した中間結果Ｒ２＿Ｂが得られた場合には、この中間結果Ｒ２＿Ｂに含まれる要素ＩＤであるＥ２２に対応する構造化文書データが文字列化され、クエリデータＱ２の結果データＲ２として、図２３に示すデータがクライアント端末３に返却される。
【００７４】
以上、具体的な例を挙げながら説明したように、本実施形態によれば、第１の部分クエリデータが構造化文書データの論理構造における階層を下位から上位へと辿る条件、つまり構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件を含む場合に、該条件を、構造化文書ＤＢ２１’に格納されている構造ガイドデータに基づいて、構造化文書データのルート要素（根）からリーフ要素（葉）方向に構造を照合するような条件に書き換える。そして、入力クエリデータを単純な構造条件の構造照合処理と結合演算処理とで処理するようにしている。したがって、入力クエリデータが構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件を含む複雑なものであっても、構造照合処理の高速化を実現し、複雑な構造条件を含むクエリデータによる検索を高速に実行することができる。
【００７５】
なお、上記の具体例では、第１の部分クエリデータに、構造化文書データの論理構造における階層を下位から上位へと辿る条件（構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件）として「ｐａｒｅｎｔ」が含まれる場合を例示して説明したが、構造化文書データの論理構造における階層を下位から上位へと辿る他の条件、例えば「ａｎｃｅｓｔｏｒ」や「ａｎｃｅｓｔｏｒ−ｏｒ−ｓｅｌｆ」などが含まれる場合であっても、上記の具体例と同様に処理することができる。
【００７６】
［第３の実施形態］
次に、第３の実施形態について、図３、図５、図７、図２４乃至図３３を参照して説明する。本実施形態は、入力クエリデータに含まれる要素の順序関係を指定する条件が、ｐｏｓｉｔｉｏｎ関数やｌａｓｔ関数の場合の例である。本実施形態におけるサーバ１およびクライアント端末３の構成は、図３に示した第１の実施形態のものと同様である。なお、以下の説明において、上述した第１の実施形態と共通の構成については同一の符号を付し、重複した説明を省略する。
【００７７】
図２４は、本実施形態で想定するクエリデータの一例を示す説明図である。この図２４に示すクエリデータＱ３＿１，Ｑ３＿２は、第１の実施形態で説明したクエリデータＱ１や第２の実施形態で説明したクエリデータＱ２と同じくＸＱｕｅｒｙで記述されており、下記のような意味の複雑な階層構造に関する条件（構造条件）を含んでいる。
Ｑ３＿１：構造化文書ＤＢ２１の各構造化文書データについて、階層のどこかに「ｂｏｏｋ」という要素があり、その「ｂｏｏｋ」という要素の中にある「ａｕｔｈｏｒ」要素のうち、１番目に出現するものの一覧を返す。
Ｑ３＿２：構造化文書ＤＢ２１の各構造化文書データについて、階層のどこかに「ｂｏｏｋ」という要素があり、その「ｂｏｏｋ」という要素の中にある「ａｕｔｈｏｒ」要素のうち、最後に出現するものの一覧を返す。
【００７８】
クエリデータＱ３＿１には、［ｐｏｓｉｔｉｏｎ（）＝１］という表現がある。これは、ＸＱｕｅｒｙで、［ｐｏｓｉｔｉｏｎ（）＝１］が付与されているパスに該当するノードのうち、１番目にあるもののみを選択する指定である。一方、クエリデータＱ３＿２には、［ｌａｓｔ（）］という表現がある。これは、［ｌａｓｔ（）］が付与されているパスに該当するノードのうち、最後のものを選択する指定となる。
【００７９】
本実施形態おける検索処理部２３による検索処理の流れは、図７に示した第１の実施形態のものと同様である。ただし、本実施形態では、ステップＳ２のクエリデータ解析処理の内容が第１の実施形態と相違している。
【００８０】
図２５は、本実施形態におけるクエリデータ解析処理の流れを示すフローチャートである。クエリデータ分解部２７は、第１の実施形態と同様に、はじめに、入力クエリデータのすべてを便宜的に第１の部分クエリデータとする（ステップＳ２２１）。このとき、第２の部分クエリデータは空としておく。
【００８１】
次に、クエリデータ分解部２７は、第１の部分クエリデータをチェックして、第１の部分クエリデータ（ここでは入力クエリデータと同じ）に、［ｐｏｓｉｔｉｏｎ（）＝ｎ］や［ｌａｓｔ（）］といった条件が含まれるかどうかを判定する（ステップＳ２２２）。そして、クエリデータ分解部２７は、そのような構造条件が含まれていれば（ステップＳ２２２：Ｙｅｓ）、第１の部分クエリデータ（ここでは入力クエリデータと同じ）から［ｐｏｓｉｔｉｏｎ（）＝ｎ］や［ｌａｓｔ（）］といった条件を取り除いたものを、第１の部分クエリデータとする（ステップＳ２２３）。そして、クエリデータ分解部２７は、ステップＳ２２３で取り除いた条件が［ｐｏｓｉｔｉｏｎ（）＝ｎ］であれば、第１の部分クエリデータによる構造照合処理結果からｎ番目に出現する要素を選択する演算指示を第２の部分クエリデータとし、ステップＳ２２３で取り除いた条件が［ｌａｓｔ（）］であれば、第１の部分クエリデータによる構造照合処理結果から最後に出現する要素を選択する演算指示を第２の部分クエリデータとして（ステップＳ２２４）、クエリデータ解析処理を終了する。
【００８２】
一方、ステップＳ２２２の判定で、第１の部分クエリデータ（ここでは入力クエリデータと同じ）に［ｐｏｓｉｔｉｏｎ（）＝ｎ］や［ｌａｓｔ（）］といった条件が含まれなければ（ステップＳ２２２：Ｎｏ）、クエリデータ分解部２７は、ステップＳ２２３およびステップＳ２２４の処理を行うことなく、クエリデータ解析処理を終了する。
【００８３】
図２６は、図２４に例示したクエリデータＱ３＿１についてのクエリデータ解析処理の結果である第１の部分クエリデータＱ３＿１＿Ａと第２の部分クエリデータＱ３＿１＿Ｂの一例を示す図である。また、図２７は、図２４に例示したクエリデータＱ３＿２についてのクエリデータ解析処理の結果である第１の部分クエリデータＱ３＿２＿Ａと第２の部分クエリデータＱ３＿２＿Ｂの一例を示す図である。ここで、“ＧＲＯＵＰ  ＢＹ  （Ｘ）”という演算指示は、（Ｘ）で指定した部分の要素ＩＤが同一のものをグループ化する演算指示である。また、“ＦＩＬＴＥＲ  （Ｘ）  （Ｙ）  （Ｚ）”という演算指示は、（Ｘ）で指定するグループについて、（Ｙ）で指定する部分の要素ＩＤが、（Ｚ）の順番にあるもののみを残す、という演算指示である。図２６に例示した第２の部分クエリデータＱ３＿１＿Ｂにあるように（Ｚ）が１のときは、（Ｙ）で指定する部分の要素ＩＤが最も小さなものを残すという演算指示となり、図２７に例示した第２の部分クエリデータＱ３＿２＿Ｂにあるように（Ｚ）がＬＡＳＴのときは、（Ｙ）で指定する部分の要素ＩＤが最も大きなものを残すという演算指示となる。
【００８４】
クエリデータ分解部２７によるクエリデータ解析処理が終了すると、第１の実施形態と同様に、構造照合処理部２８により、第１の部分クエリデータに含まれる構造条件の構造照合処理が行われる（ステップＳ３）。
【００８５】
図５に例示した要素ＩＤ付与済み構造化文書データについて、図２６に例示した第１の部分クエリデータＱ３＿１＿Ａに含まれる構造条件ＰＰ１による構造照合処理を行った結果である構造照合処理結果データＲ３＿１＿Ａを図２８に示す。また、図５に例示した要素ＩＤ付与済み構造化文書データについて、図２７に例示した第１の部分クエリデータＱ３＿２＿Ａに含まれる構造条件ＰＰ１による構造照合処理を行った結果である構造照合処理結果データＲ３＿２＿Ａを図３０に示す。図中のＴ１は構造条件ＰＰ１の構造照合処理の結果であり、図２８の構造照合処理結果データＲ３＿１＿Ａと、図３０の構造照合処理結果データＲ３＿２＿Ａのいずれにおいても、構造条件ＰＰ１に合致する構造を持つ要素の要素ＩＤ群［１］，［２］が得られる。
【００８６】
構造照合処理部２８による構造照合処理が終了すると、第１の実施形態と同様に、結合演算処理部２９により、構造照合処理部２８の処理結果である構造照合処理結果データについて、第２の部分クエリデータに含まれる手順に従って結合演算処理が行われる（ステップＳ４）。
【００８７】
図２９は、図２６に例示した第２の部分クエリデータＱ３＿１＿Ｂを用いて図２８に例示した構造照合処理結果データＲ３＿１＿Ａについて結合演算処理を行う場合の処理の概要を説明する図である。また、図３１は、図２７に例示した第２の部分クエリデータＱ３＿２＿Ｂを用いて図３０に例示した構造照合処理結果データＲ３＿２＿Ａについて結合演算処理を行う場合の処理の概要を説明する図である。
【００８８】
図２９の例および図３１の例では、“ＧＲＯＵＰ  ＢＹ  Ｔ１［１］”という演算指示に従って、Ｔ１の要素ＩＤ群の中で同一の要素ＩＤがグループ化され、Ｔ２が得られる。そして、図２９の例では、“ＦＩＬＴＥＲ  Ｔ２［１］  Ｔ２［２］  １”という演算指示に従って、Ｔ２［１］について、Ｔ２［２］の要素ＩＤが最も小さいものを残す演算処理によりＴ３が得られ、Ｔ３について［２］のみを取り出すことにより、結合演算処理の結果として、図２９に示すような中間結果Ｒ３＿１＿Ｂが得られる。また、図３１の例では、“ＦＩＬＴＥＲ  Ｔ２［１］  Ｔ２［２］  ＬＡＳＴ”という演算指示に従って、Ｔ２［１］について、Ｔ２［２］の要素ＩＤが最も大きいものを残す演算処理によりＴ３が得られ、Ｔ３について［２］のみを取り出すことにより、結合演算処理の結果として、図３１に示すような中間結果Ｒ３＿２＿Ｂが得られる。これらの中間結果Ｒ３＿１＿Ｂ，Ｒ３＿２＿Ｂは、図２４に例示したクエリデータＱ３＿１，Ｑ３＿２を、上述したようなクエリデータ解析処理を行わずにそのまま処理した場合の結果と一致する。
【００８９】
最後に、検索インタフェース部２６により、結合演算処理部２９による結合演算処理の結果（中間結果）として得られる要素ＩＤが、それに対応する構造化文書データとして文字列化され、結果データとしてクライアント端末３に返却される（ステップＳ５）。図２９に示した中間結果Ｒ３＿１＿Ｂが得られた場合には、この中間結果Ｒ３＿１＿Ｂに含まれる要素ＩＤであるＥ５，Ｅ１４，Ｅ２２に対応する構造化文書データが文字列化され、クエリデータＱ３＿１の結果データＲ３＿１として、図３２に示すデータがクライアント端末３に返却される。また、図３１に示した中間結果Ｒ３＿２＿Ｂが得られた場合には、この中間結果Ｒ３＿２＿Ｂに含まれる要素ＩＤであるＥ８，Ｅ１４，Ｅ２２に対応する構造化文書データが文字列化され、クエリデータＱ３＿２の結果データＲ３＿２として、図３３に示すデータがクライアント端末３に返却される。
【００９０】
以上、具体的な例を挙げながら説明したように、本実施形態によれば、入力クエリデータが要素の順序関係を指定する条件としてｐｏｓｉｔｉｏｎ関数やｌａｓｔ関数を含む場合に、その入力クエリデータを、階層の上下関係を指定する条件のみを含む第１の部分クエリデータと、第１の部分クエリデータによる照合結果を、ｐｏｓｉｔｉｏｎ関数やｌａｓｔ関数で示される条件に応じて結合演算する手順を含む第２の部分クエリデータとに分解して処理するようにしている。したがって、入力クエリデータがｐｏｓｉｔｉｏｎ関数やｌａｓｔ関数を含む複雑なものであっても、この入力クエリデータを単純な構造条件の構造照合処理と結合演算処理とで処理することで、構造照合処理の高速化を実現し、複雑な構造条件を含むクエリデータによる検索を高速に実行することができる。
【００９１】
［第４の実施形態］
次に、第４の実施形態について、図５、図１９、図３４乃至図４０を参照して説明する。本実施形態は、第２の実施形態と同様の構造条件の書き換えを行うが、入力クエリデータに要素の順序関係を指定する条件（第２条件）が含まれておらず、第２のクエリデータに基づく結合演算処理を行わない例である。なお、以下の説明において、上述した第２の実施形態と共通の構成については同一の符号を付し、重複した説明を省略する。
【００９２】
図３４は、本実施形態におけるサーバ１’’およびクライアント端末３の概略構成を示すブロック図である。本実施形態では、サーバ１’’の検索処理部２３’’にクエリデータ分解部２７が設けられておらず、クライアント端末３から送信された入力クエリデータは、構造条件書き換え部３１’に入力される。また、サーバ１’’の検索処理部２３’’に結合演算処理部２９が設けられておらず、構造照合処理部２８による構造照合処理の結果である構造照合処理結果データが、そのまま検索インタフェース部２６に渡される。なお、クライアント端末３の構成は第２の実施形態と同じである。
【００９３】
図３５は、本実施形態で想定するクエリデータの一例を示す説明図である。この図３５に示すクエリデータＱ４は、第１乃至第３の実施形態で説明したクエリデータと同じくＸＱｕｅｒｙで記述されており、下記のような意味の複雑な階層構造に関する条件（構造条件）を含んでいる。
Ｑ４：構造化文書ＤＢ２１’の各構造化文書データについて、階層のどこかに「ｔｉｔｌｅ」という要素があり、その先祖の「ｂｏｏｋ」という要素の子要素である「ｐｕｂｌｉｓｈｅｒ」という要素の一覧を返す。
【００９４】
クエリデータＱ４では、第２の実施形態で説明した／ａｎｃｅｓｔｏｒという構造化文書データのリーフ要素（葉）からルート要素（根）方向に、階層構造内での先祖要素を照合するパスが含まれているが、第１の実施形態で説明したクエリデータＱ１に含まれる／ｆｏｌｌｏｗｉｎｇ−ｓｉｂｌｉｎｇのような、ある構造を持つ要素間の順序関係に関する構造を照合するパスは含まれていない。
【００９５】
図３６は、本実施形態におけるサーバ１’’の検索処理部２３’’による検索処理の流れを示すフローチャートである。まず、検索インタフェース部２６により、クライアント端末３からネットワーク２経由で送信されたクエリデータの入力が受け付けられる（ステップＳ１）。このクエリデータは、構造条件書き換え部３１’に入力される。
【００９６】
次に、構造条件書き換え部３１’により、入力クエリデータについてのクエリデータ解析処理が行われる（ステップＳ２）。構造条件書き換え部３１’によるクエリデータ解析処理の一例を、図３７を参照して説明する。
【００９７】
図３７は、構造条件書き換え部３１’によるクエリデータ解析処理の流れを示すフローチャートである。構造条件書き換え部３１’は、はじめに、入力クエリデータを第１の部分クエリデータとする（ステップＳ２３１）。次に、構造条件書き換え部３１’は、第１の部分クエリデータをチェックして、第１の部分クエリデータに、構造化文書データの階層構造を葉から根方向へ照合するような構造条件が含まれるかどうかを判定する（ステップＳ２３２）。そして、構造条件書き換え部３１’は、第１の部分クエリデータに、構造化文書データの階層構造を葉から根方向へ照合するような構造条件が含まれていれば（ステップＳ２３２：Ｙｅｓ）、構造条件書き換え処理を行って、構造化文書データの階層構造を葉から根方向へ照合する構造条件を、根から葉方向へ照合する構造条件に書き換える（ステップＳ２３３）。
【００９８】
一方、ステップＳ２３２の判定で、第１の部分クエリデータに、構造化文書データの階層構造を葉から根方向へ照合するような構造条件が含まれなければ（ステップＳ２３２：Ｎｏ）、ステップＳ２３３の構造条件書き換え処理を行うことなく、クエリデータ解析処理を終了する。
【００９９】
ステップＳ２３３で行われる構造条件書き換え処理は第２の実施形態と同様であり、処理内容は図１９に示したフローチャートの通りである。ここでは、図３５に例示したクエリデータＱ４を、図１５に例示した構造ガイドデータを参照して書き換える処理の概要を説明する。なお、ここでは説明を簡単にするために、図１５に例示した構造ガイドデータを参照しているが、実際には構造化文書ＤＢ２１’に格納された構造ガイドデータが参照される。
【０１００】
クエリデータＱ４の／ａｎｃｅｓｔｏｒ：：ｂｏｏｋ部分について、その直前のパスは／ｔｉｔｌｅである。ここで、図１５に例示した構造ガイドデータを参照すると、ｔｉｔｌｅを末尾に持つ構造は／ｂｏｏｋｓ／ｂｏｏｋ／ｔｉｔｌｅである。／ａｎｃｅｓｔｏｒは先祖要素を指定するため、／ａｎｃｅｓｔｏｒの指定する構造は／ｂｏｏｋｓ／ｂｏｏｋ、／ｂｏｏｋｓであるが、：：ｂｏｏｋとｂｏｏｋ要素を指定しているので、／ａｎｃｅｓｔｏｒ：：ｂｏｏｋの指定する構造は／ｂｏｏｋｓ／ｂｏｏｋとなる。さらに、／ａｎｃｅｓｔｏｒ：：ｂｏｏｋの次のパスである／ｐｕｂｌｉｓｈｅｒについても、ここまでで特定された構造は／ｂｏｏｋｓ／ｂｏｏｋであるから、／ｂｏｏｋｓ／ｂｏｏｋの後に／ｐｕｂｌｉｓｈｅｒが続く構造があるかを構造ガイドデータで確認すると、存在するので、クエリデータＱ４に対する構造条件書き換え処理の結果として、／ｂｏｏｋｓ／ｂｏｏｋ／ｐｕｂｌｉｓｈｅｒが得られる。
【０１０１】
図３８は、図３５に例示したクエリデータＱ４について、構造条件書き換え処理を行った結果の第１の部分クエリデータＱ４＿Ａを示す図である。図３５に例示したクエリデータＱ４は、構造条件書き換え処理により、／ｂｏｏｋｓ／ｂｏｏｋ／ｐｕｂｌｉｓｈｅｒといった、構造化文書データの階層構造を根から葉方向へ照合する構造条件に書き換えられる。
【０１０２】
構造条件書き換え部３１’によるクエリデータ解析処理が終了すると、第１乃至第３の実施形態と同様に、構造照合処理部２８により、第１の部分クエリデータに含まれる構造条件の構造照合処理が行われる（ステップＳ３）。
【０１０３】
図５に例示した要素ＩＤ付与済み構造化文書データについて、図３８に例示した第１の部分クエリデータＱ４＿Ａによる構造照合処理を行った結果である構造照合処理結果データＲ４＿Ａを図３９に示す。図中のＴ１は／ｂｏｏｋｓ／ｂｏｏｋ／ｐｕｂｌｉｓｈｅｒという構造条件の構造照合処理の結果であり、このような構造を持つ要素の要素ＩＤ群［１］が得られる。
【０１０４】
本実施形態では、この構造照合処理部２８による構造照合処理の結果がそのまま中間結果として検索インタフェース部２６に渡される。そして、最後に、検索インタフェース部２６により、構造照合処理部２８による構造照合処理の結果（中間結果）として得られる要素ＩＤが、それに対応する構造化文書データとして文字列化され、結果データとしてクライアント端末３に返却される（ステップＳ５）。図３９に示した中間結果Ｒ４＿Ａが得られた場合には、この中間結果Ｒ４＿Ａに含まれる要素ＩＤであるＥ１１，Ｅ２９に対応する構造化文書データが文字列化され、クエリデータＱ４の結果データＲ４として、図４０に示すデータがクライアント端末３に返却される。
【０１０５】
以上、具体的な例を挙げながら説明したように、本実施形態によれば、入力クエリデータが、要素ＩＤで特定される要素の順序関係を指定する条件（第２条件）を含まず、構造化文書データの論理構造における階層を下位から上位へと辿る条件、つまり構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件を含む場合に、該条件を、構造化文書ＤＢ２１’に格納されている構造ガイドデータに基づいて、構造化文書データのルート要素（根）からリーフ要素（葉）方向に構造を照合するような条件に書き換える。そして、入力クエリデータを単純な構造条件の構造照合処理のみで処理するようにしている。したがって、入力クエリデータが構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件を含む複雑なものであっても、構造照合処理の高速化を実現し、複雑な構造条件を含むクエリデータによる検索を高速に実行することができる。
【０１０６】
なお、上記の具体例では、入力クエリデータに含まれる、構造化文書データの論理構造における階層を下位から上位へと辿る条件（構造化文書データのリーフ要素（葉）からルート要素（根）方向に構造を照合するような条件）として「ａｎｃｅｓｔｏｒ」を例示したが、構造化文書データの論理構造における階層を下位から上位へと辿る他の条件、例えば「ｐａｒｅｎｔ」や「ａｎｃｅｓｔｏｒ−ｏｒ−ｓｅｌｆ」などが入力クエリデータに含まれる場合であっても、上記の具体例と同様に処理することができる。
【０１０７】
以上説明した第１乃至第４の実施形態におけるサーバ１、サーバ１’、サーバ１’’の機能は、例えば、コンピュータの演算装置であるＣＰＵ１０１が、アプリケーションプログラムとして実装された構造化文書管理プログラムを実行することにより実現される。
【０１０８】
第１乃至第４の実施形態におけるサーバ１、サーバ１’、サーバ１’’で実行される構造化文書管理プログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などのコンピュータで読み取り可能な記憶媒体１１０に記録されて提供される。
【０１０９】
また、第１乃至第４の実施形態におけるサーバ１、サーバ１’、サーバ１’’で実行される構造化文書管理プログラムを、インターネットなどのネットワーク２に接続されたコンピュータ上に格納し、ネットワーク２経由でダウンロードさせることにより提供するように構成してもよい。また、第１乃至第４の実施形態におけるサーバ１、サーバ１’、サーバ１’’で実行される構造化文書管理プログラムを、インターネットなどのネットワーク２経由で提供または配布するように構成してもよい。さらに、第１乃至第４の実施形態におけるサーバ１、サーバ１’、サーバ１’’で実行される構造化文書管理プログラムを、ＲＯＭ１０２などに予め組み込んで提供するように構成してもよい。
【０１１０】
第１乃至第４の実施形態におけるサーバ１、サーバ１’、サーバ１’’で実行される構造化文書管理プログラムは、格納インタフェース部２４、要素ＩＤ付与部２５、検索インタフェース部２６、クエリデータ分解部２７、構造照合処理部２８、結合演算処理部２９、構造解析部３０、構造条件書き換え部３１，３１’などを含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）１０１がＨＤＤ１０４などから構造化文書管理プログラムを読み出して実行することにより上記各部が主記憶装置（例えばＲＡＭ１０３）上にロードされ、格納インタフェース部２４、要素ＩＤ付与部２５、検索インタフェース部２６、クエリデータ分解部２７、構造照合処理部２８、結合演算処理部２９、構造解析部３０、構造条件書き換え部３１，３１’などが主記憶装置上に生成されるようになっている。
【０１１１】
以上述べた少なくとも一つの実施形態にかかる構造化文書管理システムによれば、入力クエリデータを単純な構造条件に変えて構造照合処理を実行するようにしているので、入力クエリデータが複雑な構造条件を含む場合でも、構造照合処理の高速化を実現し、複雑な構造条件を含むクエリデータによる検索を高速に実行することができる。
【０１１２】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１３】
１，１’，１’’サーバ
２４  格納インタフェース部
２５  要素ＩＤ付与部
２６  検索インタフェース部
２７  クエリデータ分解部
２８  構造照合処理部
２９  結合演算処理部
３０  構造解析部
３１，３１’構造条件書き換え部
【図１】
0005296128.tif 000002
【図２】
0005296128.tif 000003
【図３】
0005296128.tif 000004
【図４】
0005296128.tif 000005
【図５】
0005296128.tif 000006
【図６】
0005296128.tif 000007
【図７】
0005296128.tif 000008
【図８】
0005296128.tif 000009
【図９】
0005296128.tif 000010
【図１０】
0005296128.tif 000011
【図１１】
0005296128.tif 000012
【図１２】
0005296128.tif 000013
【図１３】
0005296128.tif 000014
【図１４】
0005296128.tif 000015
【図１５】
0005296128.tif 000016
【図１６】
0005296128.tif 000017
【図１７】
0005296128.tif 000018
【図１８】
0005296128.tif 000019
【図１９】
0005296128.tif 000020
【図２０】
0005296128.tif 000021
【図２１】
0005296128.tif 000022
【図２２】
0005296128.tif 000023
【図２３】
0005296128.tif 000024
【図２４】
0005296128.tif 000025
【図２５】
0005296128.tif 000026
【図２６】
0005296128.tif 000027
【図２７】
0005296128.tif 000028
【図２８】
0005296128.tif 000029
【図２９】
0005296128.tif 000030
【図３０】
0005296128.tif 000031
【図３１】
0005296128.tif 000032
【図３２】
0005296128.tif 000033
【図３３】
0005296128.tif 000034
【図３４】
0005296128.tif 000035
【図３５】
0005296128.tif 000036
【図３６】
0005296128.tif 000037
【図３７】
0005296128.tif 000038
【図３８】
0005296128.tif 000039
【図３９】
0005296128.tif 000040
【図４０】
0005296128.tif 000041