(57)【特許請求の範囲】
【請求項１】
構造化文書を複数の構造化文書サブ管理装置に分散させて管理する構造化文書管理装置において、
入力された前記構造化文書を構文解析する構造化文書構文解析手段と、
前記構造化文書構文解析手段の構文解析結果から構造情報を抽出する構造化文書構造抽出手段と、
前記構造化文書管理装置で管理している全登録文書に対する構造情報を保持する構造情報格納部と、
前記構造情報は構造パスと該構造パスの出現数の組、または構造パスと該構造パスの０または１回、０回以上、Ｍ回以上Ｎ回以下といった出現パターンの組、または構造パスと該構造パスに格納された文字数の組、のいずれかかまたは複数の情報から構成されたものであり、前記構造情報格納部内の全登録文書に対する構造情報と前記構造化文書構造抽出手段で抽出された構造化文書の構造情報とを比較して共通する構造パスを特定し、前記構造化文書における該構造パスの構造情報と前記構造化文書サブ管理装置における該構造パスの構造情報の比較に基づいて構造類似度を計算する構造情報照合手段と、
前記構造情報照合手段における計算結果である構造類似度に基づいて、前記入力された構造化文書を格納する前記構造化文書サブ管理装置を決定する構造化文書配置先選択手段と、
を備えることを特徴とする構造化文書管理装置。
【請求項２】
前記構造化文書構造抽出手段により抽出される構造情報は、前記構造化文書に現れる構造パスに対するその出現数の情報である、
ことを特徴とする請求項１記載の構造化文書管理装置。
【請求項３】
前記構造化文書サブ管理装置が有している前記装置固有の構造情報の更新情報に基づき、前記構造情報格納部内の全登録文書に対する構造情報を更新する構造情報更新手段を更に備える、
ことを特徴とする請求項１または２記載の構造化文書管理装置。
【請求項４】
全ての前記構造化文書サブ管理装置が有している前記装置固有の構造情報を取得して前記構造情報格納部に格納する固有構造情報取得手段を更に備える、
ことを特徴とする請求項１ないし３のいずれか一記載の構造化文書管理装置。
【請求項５】
構造化文書を複数の構造化文書サブ管理装置に分散させて管理する構造化文書管理装置であって、
入力された前記構造化文書を構文解析する構造化文書構文解析手段と、
前記構造化文書構文解析手段の構文解析結果から構造情報を抽出する構造化文書構造抽出手段と、
前記構造化文書管理装置で管理している全登録文書に対する構造情報を保持する構造情報格納部と、
前記構造情報は構造パスと該構造パスの出現数の組、または構造パスと該構造パスの０または１回、０回以上、Ｍ回以上Ｎ回以下といった出現パターンの組、または構造パスと該構造パスに格納された文字数の組、のいずれかかまたは複数の情報から構成されたものであり、前記構造情報格納部内の全登録文書に対する構造情報と前記構造化文書構造抽出手段で抽出された構造化文書の構造情報とを比較して共通する構造パスを特定し、前記構造化文書における該構造パスの構造情報と前記構造化文書サブ管理装置における該構造パスの構造情報の比較に基づいて構造類似度を計算する構造情報照合手段と、
前記構造情報照合手段における計算結果である構造類似度に基づいて、前記入力された構造化文書を格納する前記構造化文書サブ管理装置を決定する構造化文書配置先選択手段と、
を有する構造化文書管理装置と、
前記構造化文書管理装置からの指示に従って構造化文書を分散格納する構造化文書サブ管理装置であって、
装置固有の構造情報を保持する固有構造情報格納部と、
前記固有構造情報格納部内の装置固有の構造情報と前記構造化文書管理装置から送られた前記構造化文書の構造情報とを比較する固有構造情報照合手段と、
前記固有構造情報照合手段における照合結果に基づき、前記固有構造情報格納部内の装置固有の構造情報を更新する固有構造情報更新手段と、
を有する構造化文書サブ管理装置と、
を備えることを特徴とする構造化文書管理システム。
【請求項６】
構造化文書を複数の構造化文書サブ管理装置に分散させて管理する構造化文書管理装置を制御するコンピュータを動作させるプログラムであって、
入力された前記構造化文書を構文解析する構造化文書構文解析機能と、
前記構造化文書構文解析機能の構文解析結果から構造情報を抽出する構造化文書構造抽出機能と、
前記構造情報は構造パスと該構造パスの出現数の組、または構造パスと該構造パスの０または１回、０回以上、Ｍ回以上Ｎ回以下といった出現パターンの組、または構造パスと該構造パスに格納された文字数の組、のいずれかかまたは複数の情報から構成されたものであり、前記構造情報格納部内の全登録文書に対する構造情報と前記構造化文書構造抽出機能で抽出された構造化文書の構造情報とを比較して共通する構造パスを特定し、前記構造化文書における該構造パスの構造情報と前記構造化文書サブ管理装置における該構造パスの構造情報の比較に基づいて構造類似度を計算する構造情報照合機能と、
前記構造情報照合機能における計算結果である構造類似度に基づいて、前記入力された構造化文書を格納する前記構造化文書サブ管理装置を決定する構造化文書配置先選択機能と、
を前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書を複数の構造化文書サブ管理装置に分散して管理する構造化文書管理装置、構造化文書管理システムおよびプログラムに関する。
【背景技術】
【０００２】
複数の計算機（コンピュータ）にデータを管理するデータベースにおいては、どのように各計算機に登録するデータを配置していくかにより、問合せ処理時の性能に大きく影響を与える。そのため、表形式のデータやオブジェクトデータを扱うデータベースであるリレーショナルデータベース及びオブジェクト指向データベースでは、従来から様々な配置手法について研究されている。例えば、表形式のデータを扱うリレーショナルデータベースにおける代表的な配置方法として以下のようなものが存在する。
（１）水平分割：ある基準に従って表形式のデータを行単位に分割して配置する。基準によって以下のような種類が存在する。
（ア）レンジ分割：ある連続値を持つ列について、値の範囲に基づいて行単位に分割する手法
（イ）ハッシュ分割：あるハッシュ関数に基づいて行単位に分割する手法
（ウ）リスト分割：離散値を持つ列について、列挙された値に基づいて行単位に分割する手法
（２）垂直分割：表形式のデータを列単位に幾つかのグループに分割して配置する手法。
【０００３】
ここで、リレーショナルデータベースにおけるレンジ分割の例を図１７に示す。図１７中の右側では、５つの列を持つ表データについて、列Ａの値に範囲に従ってデータの配置先を決定している（水平分割）。このデータに対して「Ａの値が2000以上でありＢが1000以下のデータ一覧を取得する」といった問合せが来た場合、「Ａの値が2000以上」の配置先は一意に判別できるため、参照するデータを絞り込むことが可能となり効率の良い問合せ処理が可能となる。
【０００４】
また、垂直分割の例を図１７中の左側に挙げている。図１７中の左側では、５つの列値を持つ表データについて列単位で複数のグループに分けて格納している。このデータに対して「Ｃの値が100以上のＩＤ一覧を取得する」といった問合せが来た場合、参照先をＣのデータを持つ配置先のみに絞り込むことが可能となる。
【０００５】
一方、従来から扱われてきたリレーショナルデータ等に対してＸＭＬ（Extensible Markup Language）形式の代表される構造化文書が近年急速に普及しつつある。ＸＭＬデータはデータの制約となるスキーマを持たなくてもよいため、ＸＭＬデータを管理するＸＭＬデータベースでは様々な構造情報を持つＸＭＬデータを管理することが可能である（特許文献１参照）。
【０００６】
ＸＭＬを扱うデータベースにおける分散構成時の分類方法については、いくつか提案されており、リレーショナルデータベースにおける垂直分割、水平分割を以下のような問合せ言語ＸＰａｔｈを利用して実現しているものがある。
（１）水平分割：ある基準に従ってＸＭＬ文書単位に分割して配置する。基準は、条件式を持つＸＰａｔｈによって表現される。
（２）垂直分割：ＸＭＬ文書を構成するノードを幾つかのグループに分割して配置する。グループは、ＸＰａｔｈを利用した式により表現される。
【０００７】
図１８は、ＸＰａｔｈを利用することでＸＭＬ文書における水平分割と垂直分割を実現している例を示したものである。
【０００８】
【特許文献１】特開２０００−３４８０３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、図１８に示した例は、従来から提案されていた分割方法をＸＭＬ文書にそのまま適用したものであり、様々な構造情報を持つＸＭＬデータ（構造化文書データ）を管理することに着目したものではない。
【００１０】
また、複数の計算機に大規模な構造化文書データを分散して格納した場合、計算結果のデータの転送コストや各計算機における部分構造への照合処理コストの増大が深刻なものとなる。つまり、ある問合せ処理を実施する場合、各計算機の計算結果を他の計算機に転送し、さらにその計算結果を利用して問合せ処理を継続する必要があるため、各計算機の結果待ちによる遅延やデータ転送による遅延が発生するという問題がある。
【００１１】
本発明は、上記に鑑みてなされたものであって、データ転送や他の構造化文書サブ管理装置の結果待ちを極力少なくし、効率的な探索処理を行うことができる構造化文書管理装置、構造化文書管理システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一側面は、構造化文書を複数の構造化文書サブ管理装置に分散させて管理する構造化文書管理装置に係り、入力された前記構造化文書を構文解析する構造化文書構文解析手段と、前記構造化文書構文解析手段の構文解析結果から構造情報を抽出する構造化文書構造抽出手段と、前記構造化文書管理装置で管理している全登録文書に対する構造情報を保持する構造情報格納部と、前記構造情報は構造パスと該構造パスの出現数の組、または構造パスと該構造パスの０または１回、０回以上、Ｍ回以上Ｎ回以下といった出現パターンの組、または構造パスと該構造パスに格納された文字数の組、のいずれかかまたは複数の情報から構成されたものであり、前記構造情報格納部内の全登録文書に対する構造情報と前記構造化文書構造抽出手段で抽出された構造化文書の構造情報とを比較して共通する構造パスを特定し、前記構造化文書における該構造パスの構造情報と前記構造化文書サブ管理装置における該構造パスの構造情報の比較に基づいて構造類似度を計算する構造情報照合手段と、前記構造情報照合手段における計算結果である構造類似度に基づいて、前記入力された構造化文書を格納する前記構造化文書サブ管理装置を決定する構造化文書配置先選択手段と、を備える。
【００１３】
また、本発明の他の側面は、構造化文書管理システムに係り、構造化文書を複数の構造化文書サブ管理装置に分散させて管理する構造化文書管理装置であって、入力された前記構造化文書を構文解析する構造化文書構文解析手段と、前記構造化文書構文解析手段の構文解析結果から構造情報を抽出する構造化文書構造抽出手段と、前記構造化文書管理装置で管理している全登録文書に対する構造情報を保持する構造情報格納部と、前記構造情報は構造パスと該構造パスの出現数の組、または構造パスと該構造パスの０または１回、０回以上、Ｍ回以上Ｎ回以下といった出現パターンの組、または構造パスと該構造パスに格納された文字数の組、のいずれかかまたは複数の情報から構成されたものであり、前記構造情報格納部内の全登録文書に対する構造情報と前記構造化文書構造抽出手段で抽出された構造化文書の構造情報とを比較して共通する構造パスを特定し、前記構造化文書における該構造パスの構造情報と前記構造化文書サブ管理装置における該構造パスの構造情報の比較に基づいて構造類似度を計算する構造情報照合手段と、前記構造情報照合手段における計算結果である構造類似度に基づいて、前記入力された構造化文書を格納する前記構造化文書サブ管理装置を決定する構造化文書配置先選択手段と、を有する構造化文書管理装置と、前記構造化文書管理装置からの指示に従って構造化文書を分散格納する構造化文書サブ管理装置であって、装置固有の構造情報を保持する固有構造情報格納部と、前記固有構造情報格納部内の装置固有の構造情報と前記構造化文書管理装置から送られた前記構造化文書の構造情報とを比較する固有構造情報照合手段と、前記固有構造情報照合手段における照合結果に基づき、前記固有構造情報格納部内の装置固有の構造情報を更新する固有構造情報更新手段と、を有する構造化文書サブ管理装置と、を備える。
【００１４】
また、本発明の更に他の側面は、構造化文書を複数の構造化文書サブ管理装置に分散させて管理する構造化文書管理装置を制御するコンピュータを動作させるためのプログラムに係り、入力された前記構造化文書を構文解析する構造化文書構文解析機能と、前記構造化文書構文解析機能の構文解析結果から構造情報を抽出する構造化文書構造抽出機能と、前記構造情報は構造パスと該構造パスの出現数の組、または構造パスと該構造パスの０または１回、０回以上、Ｍ回以上Ｎ回以下といった出現パターンの組、または構造パスと該構造パスに格納された文字数の組、のいずれかかまたは複数の情報から構成されたものであり、前記構造情報格納部内の全登録文書に対する構造情報と前記構造化文書構造抽出機能で抽出された構造化文書の構造情報とを比較して共通する構造パスを特定し、前記構造化文書における該構造パスの構造情報と前記構造化文書サブ管理装置における該構造パスの構造情報の比較に基づいて構造類似度を計算する構造情報照合機能と、前記構造情報照合機能における計算結果である構造類似度に基づいて、前記入力された構造化文書を格納する前記構造化文書サブ管理装置を決定する構造化文書配置先選択機能と、を前記コンピュータに実行させる。
【発明の効果】
【００１７】
本発明によれば、構造化文書の特徴となる構造情報に着目して構造化文書を格納する構造化文書サブ管理装置を選択し、選択した構造化文書サブ管理装置に構造化文書を格納することにより、構造情報の制約条件が厳密になる程、探索時に無駄な処理を省くことが可能となるので、データ転送や他の構造化文書サブ管理装置の結果待ちを極力少なくすることで効率的な探索処理を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に添付図面を参照して、この発明にかかる構造化文書管理装置、構造化文書管理システムおよびプログラムの最良な実施の形態を詳細に説明する。
【００１９】
本発明の実施の一形態を図１ないし図１６に基づいて説明する。
【００２０】
［１．システムの構成］
図１は、本発明の実施の一形態にかかる分散構成の構造化文書管理システムのシステム構築例を示す模式図である。分散構成の構造化文書管理システムは、図１に示すように、構造化文書管理装置として機能するメインのサーバコンピュータ（以下、メインサーバという）１にＬＡＮ（Local Area Network）等のネットワーク２を介して構造化文書サブ管理装置として機能するサブのサーバコンピュータ（以下、サブサーバという）３が複数台接続されたシステムを想定する。メインサーバ１およびサブサーバ３は、一般的なパーソナルコンピュータ等である。
【００２１】
図２は、メインサーバ１およびサブサーバ３のモジュール構成図である。メインサーバ１およびサブサーバ３は、情報処理を行うＣＰＵ（Central Processing Unit）１０１、ＢＩＯＳなどを記憶した読出し専用メモリであるＲＯＭ（Read Only Memory）１０２、各種データを書換え可能に記憶するＲＡＭ（Random Access Memory）１０３、各種データベースとして機能するとともに各種のプログラムを格納するＨＤＤ（Hard Disk Drive）１０４、記憶媒体１１０を用いて情報を保管したり外部に情報を配布したり外部から情報を入手するためのＣＤ−ＲＯＭドライブ等の媒体駆動装置１０５、ネットワーク２を介して外部の他のコンピュータと通信により情報を伝達するための通信制御装置１０６、処理経過や結果等を操作者に表示するＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）等の表示部１０７、並びに操作者がＣＰＵ１０１に命令や情報等を入力するためのキーボードやマウス等のポインティングデバイスである入力部１０８等から構成されており、これらの各部間で送受信されるデータをバスコントローラ１０９が調停して動作する。
【００２２】
このようなメインサーバ１およびサブサーバ３では、オペレータが電源を投入するとＣＰＵ１０１がＲＯＭ１０２内のローダーというプログラムを起動させ、ＨＤＤ１０４よりＯＳ（Operating System）というコンピュータのハードウェアとソフトウェアとを管理するプログラムをＲＡＭ１０３に読み込み、このＯＳを起動させる。このようなＯＳは、オペレータの操作に応じてプログラムを起動したり、情報を読み込んだり、保存を行ったりする。ＯＳのうち代表的なものとしては、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）等が知られている。これらのＯＳ上で走る動作プログラムをアプリケーションプログラムと呼んでいる。なお、アプリケーションプログラムは、所定のＯＳ上で動作するものに限らず、後述の各種処理の一部の実行をＯＳに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやＯＳなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
【００２３】
ここで、メインサーバ１は、アプリケーションプログラムとして、構造化文書メイン管理プログラムをＨＤＤ１０４に記憶している。この意味で、ＨＤＤ１０４は、構造化文書メイン管理プログラムを記憶する記憶媒体として機能する。
【００２４】
一方、サブサーバ３は、アプリケーションプログラムとして、構造化文書サブ管理プログラムをＨＤＤ１０４に記憶している。この意味で、ＨＤＤ１０４は、構造化文書サブ管理プログラムを記憶する記憶媒体として機能する。
【００２５】
また、一般的には、メインサーバ１およびサブサーバ３のＨＤＤ１０４にインストールされるアプリケーションプログラムは、ＣＤ−ＲＯＭやＤＶＤなどの各種の光ディスク、各種光磁気ディスク、フレキシブルディスクなどの各種磁気ディスク、半導体メモリ等の各種方式のメディア等の記憶媒体１１０に記録され、この記憶媒体１１０に記録された動作プログラムがＨＤＤ１０４にインストールされる。このため、ＣＤ−ＲＯＭ等の光情報記録メディアやＦＤ等の磁気メディア等の可搬性を有する記憶媒体１１０も、アプリケーションプログラムを記憶する記憶媒体となり得る。さらには、アプリケーションプログラムは、例えば通信制御装置１０６を介して外部から取り込まれ、ＨＤＤ１０４にインストールされても良い。
【００２６】
メインサーバ１は、ＯＳ上で動作する構造化文書メイン管理プログラムが起動すると、この構造化文書メイン管理プログラムに従い、ＣＰＵ１０１が各種の演算処理を実行して各部を集中的に制御する。一方、サブサーバ３は、ＯＳ上で動作する構造化文書サブ管理プログラムが起動すると、この構造化文書サブ管理プログラムに従い、ＣＰＵ１０１が各種の演算処理を実行して各部を集中的に制御する。メインサーバ１およびサブサーバ３のＣＰＵ１０１が実行する各種の演算処理のうち、本実施の形態の特長的な処理について以下に説明する。
【００２７】
［２．構造化文書格納処理］
まず、構造化文書格納処理にかかる機能について、分散構成の構造化文書管理システムの機能構成を示すブロック図である図３を参照して説明する
【００２８】
メインサーバ１は、図３に示すように、構造化文書メイン管理プログラムに従うことにより、構造化文書構文解析部１１と、構造化文書構造抽出部１２と、グローバル構造化テンプレート照合部１３と、各サブサーバ３の構造化文書データＤＢ３５に格納されている全ての構造化文書、すなわちメインサーバ１で管理している全ての構造化文書である全登録文書に対する構造情報であるグローバル構造化テンプレートを保持する構造情報格納部であるグローバル構造化テンプレートデータベース（グローバル構造化テンプレートＤＢ）１４と、構造化文書配置先選択部１５と、グローバル構造化テンプレート更新部１６と、ローカル構造化テンプレート取得部１７とを備える。
【００２９】
一方、サブサーバ３は、図３に示すように、構造化文書サブ管理プログラムに従うことにより、ローカル構造化テンプレート照合部３１と、ローカル構造化テンプレート更新部３２と、装置固有の構造情報であるローカル構造化テンプレートを保持する固有構造情報格納部であるローカル構造化テンプレートデータベース（ローカル構造化テンプレートＤＢ）３３と、構造化文書格納部３４と、構造化文書データデータベース（構造化文書データＤＢ）３５と、を備える。以下、各機能について説明する。
【００３０】
構造化文書構文解析部１１は、構造化文書構文解析手段として機能するものであり、入力された構造化文書（ＸＭＬ文書）を構文解析する。構造化文書構造抽出部１２は、構造化文書構造抽出手段として機能するものであり、構造化文書構文解析部１１の構文解析結果から構造情報を抽出する。ここで、図４は構造化文書の１つであるＸＭＬ文書のデータ例、図５は図４のＸＭＬ文書を構文解析した結果である構造情報の一例である。図５に示す構造情報では、ＸＭＬ文書に現れる構造パスに対するその出現数の情報を構造情報として挙げている。
【００３１】
グローバル構造化テンプレート照合部１３は、構造情報照合手段として機能するものであり、グローバル構造化テンプレートＤＢ１４内のグローバル構造化テンプレートと構造化文書構造抽出部１２で抽出された構造化文書の構造情報とを比較し、各サブサーバ３のローカル構造化テンプレートＤＢ３３内のローカル構造化テンプレートに対する構造類似度を計算する。ここで、構造類似度とは、構造化テンプレート情報とＸＭＬ文書（構造化文書）間の構造上の類似性を計算した尺度である。図６は、グローバル構造化テンプレートの構成例である。グローバル構造化テンプレートは、サブサーバＡ〜Ｂに登録されたＸＭＬ文書の構造情報を解析し、ＸＭＬ文書に出現した構造パスに一意に割り当てられるＩＤとしてテンプレートＩＤ、実際の構造パス、出現パターン及び各テンプレートＩＤに対する各サブサーバ３の出現パターンを保持している。図７は、構造化テンプレートを木構造で表現したものである。
【００３２】
ここで、図８はグローバル構造化テンプレート照合部１３における処理の流れを示すフローチャートである。図８に示すように、まず、グローバル構造化テンプレートが空か否かをチェックする（ステップＳ１）。
【００３３】
グローバル構造化テンプレートが空の場合には（ステップＳ１のＹｅｓ）、各サブサーバ３のローカル構造化テンプレートに対する構造類似度Ｌｉｓｓに０を代入して（ステップＳ２）、処理を終了する。一方、グローバル構造化テンプレートが空ではない場合には（ステップＳ１のＮｏ）、構造化文書の構造情報とグローバル構造化テンプレートに共通して出現する構造タグの集合を取得する（ステップＳ３）。ここでは、構造タグをＣｎ、Ｃｎの集合をＣｎｓとする。
【００３４】
続くステップＳ４では、Ｃｎｓの中から１つ構造タグＣｎを取り出す。そして、グローバル構造化テンプレートが保持している各サブサーバ３におけるＣｎに対する出現パターンを取り出す（ステップＳ５）。より詳細には、各サブサーバ３の出現パターンをＬｐ、全てのサブサーバ３の出現パターン集合をＬｐｓとする。さらに、構造化文書に関してもＣｎに対する出現パターンを取り出す。これをＴｐとする。
【００３５】
次いで、Ｌｐｓ内の各ＬｐとＴｐからＣｎに対する各サブサーバ３のローカル構造化テンプレートに対する構造類似度を計算する（ステップＳ６）。この構造類似度をＬｉとし、全てのサブサーバ３の構造類似度の集合をＬｉｓとする。
【００３６】
構造類似度の計算はgetＬｉ関数によって取得される。getＬｉ関数では、ローカル構造化テンプレートのＣｎに対する出現パターンをチェックし、構造化文書を登録することにより出現パターンが変化するようであれば、その変化の度合いによって重みをつけて構造類似度を返却する。出現パターンは、一例として、“？”表現（０または１個文書内に出現）、“＊”表現（０個以上文書内に出現）、ｎ（ｎ個文書内に出現）、ｐ−ｑ（ｐ個以上ｑ個以下の個数が文書内に出現）といったものが挙げられる。構造類似度は、例えばｎ個の出現パターンに対して、構造化文書の出現パターンがｍ（ｍ！＝ｎ）であれば、構造化文書を登録した場合のローカル構造化テンプレートの出現パターンがｍ−ｎに変更されることに着目して計算される。ｍ＝ｎであれば構造類似度は０と計算される。
【００３７】
その後、Ｃｎｓをチェックして（ステップＳ７）、全てのＣｎが取り出されＣｎｓが空の場合には（ステップＳ７のＹｅｓ）、全てのＣｎに対するＬｉｓを加算し、各サブサーバ３のローカル構造化テンプレートに対するトータルの構造類似度Ｌｉｓｓを取得する（ステップＳ８）。一方、Ｃｎｓが空でない場合には（ステップＳ７のＮｏ）、ステップＳ４に戻り、Ｃｎｓから次のＣｎを取り出して、そのＣｎに対するＬｉｓの取得処理を繰り返す。
【００３８】
構造化文書配置先選択部１５は、構造化文書配置先選択手段として機能するものであり、グローバル構造化テンプレート照合部１３における照合結果及びその他の制約条件から、構造化文書を格納するサブサーバ３を決定する。
【００３９】
構造化文書を格納するサブサーバ３が決定すると、配置先として決定したサブサーバ３の固有構造情報照合手段として機能するローカル構造化テンプレート照合部３１は、ローカル構造化テンプレートＤＢ３３内の構造化テンプレート情報とメインサーバ１から送られた構造化文書の構造情報とを比較する。
【００４０】
ローカル構造化テンプレート更新部３２は、固有構造情報更新手段として機能するものであり、ローカル構造化テンプレート照合部３１における照合結果に基づき、ローカル構造化テンプレートＤＢ３３内の構造化テンプレート情報を更新する。また、構造化文書格納部３４は、構造化文書データＤＢ３５に構造化文書を格納する。図９は、ローカル構造化テンプレートの構成例である。ローカル構造化テンプレートは、サブサーバ３に登録されたＸＭＬ文書の構造情報を解析してＸＭＬ文書に出現した構造パスに一意に割り当てられるＩＤとしてテンプレートＩＤ、実際の構造パス、出現パターン、登録された全文書に対する出現数、ノードに格納された文字列の平均長を保持している。
【００４１】
ここで、図１０はローカル構造化テンプレート更新部３２における処理の流れを示すフローチャートである。まず、構造化文書の構造情報とローカル構造化テンプレートに出現する構造タグの和集合を取得する（ステップＳ１１）。構造タグをＵｎ、Ｕｎの集合をＵｎｓとする。
【００４２】
次いで、Ｕｎｓの中から１つ構造タグＵｎを取得し（ステップＳ１２）、サブサーバ３のローカル構造化テンプレートからＵｎに対する出現パターンを取得する。さらに、構造化文書に関してもＵｎに対する出現パターンを取得する（ステップＳ１３）。ここで、サブサーバ３の出現パターンをＬｐ、構造化文書における出現パターンをＴｐとする。
【００４３】
続くステップＳ１４では、Ｌｐが空か否かをチェックする。Ｌｐが空の場合には（ステップＳ１４のＹｅｓ）、AppendＬｐ関数によってＬｐを作成して（ステップＳ１５）、ステップＳ１７に進む。AppendＬｐ関数では、サブサーバ３への登録が１件目の場合は、Ｔｐを出現パターンとし、それ以外は今まで０件パターンと考えて＊の出現パターンとして作成する。
【００４４】
一方、Ｌｐが空でない場合には（ステップＳ１４のＮｏ）、ＬｐとＴｐからUpdateＬｐ関数によってＬｐを更新する（ステップＳ１６）。UpdateＬｐ関数では、Ｔｐが加わることによりＬｐの出現パターンが変化する場合は、Ｔｐの出現パターンも満たす出現パターンに更新する。例えば、ｎ個の出現パターンに対して、構造化文書の出現パターンがｍ（ｍ！＝ｎ）であれば、出現パターンがｍ−ｎに変更される。
【００４５】
そして、ステップＳ１７では、Ｕｎｓをチェックする。全てのＵｎが取り出されＵｎｓが空の場合には（ステップＳ１７のＹｅｓ）、全ての構造に対して更新が終了したとして処理を終了する。一方、Ｕｎｓが空でない場合には（ステップＳ１７のＮｏ）、ステップＳ１２に戻り、Ｕｎｓから次のＵｎを取り出して、そのＵｎに対するＬｐの更新処理を繰り返す。
【００４６】
グローバル構造化テンプレート更新部１６は、構造情報更新手段として機能するものであり、ローカル構造化テンプレートＤＢ３３の更新情報に基づき、グローバル構造化テンプレートＤＢ１４の構造情報を更新する。
【００４７】
また、ローカル構造化テンプレート取得部１７は、固有構造情報取得手段として機能するものであり、全てのサブサーバ３のローカル構造化テンプレートＤＢ３３を取得し、グローバル構造化テンプレートＤＢ１４に格納する。
【００４８】
このような構成により、分散構成の構造化文書管理システムは、構造化文書（ＸＭＬ文書）の構造情報に着目して構造化文書データを格納するサブサーバ３を選択し、選択したサブサーバ３が有している構造化文書データＤＢ３５に構造化文書データを格納する処理を行う。これにより、各サブサーバ３内の構造条件を、単純に文書データを配置した場合と比較してより厳密な制約条件にすることを可能とする。
【００４９】
［３．構造化文書検索処理］
次に、構造化文書検索処理にかかる機能について、分散構成の構造化文書管理システムの機能構成を示すブロック図である図１１を参照して説明する
【００５０】
メインサーバ１は、図１１に示すように、構造化文書メイン管理プログラムに従うことにより、図３に示した機能に加えて、問合せ構文解析部４１と、問合せ構造抽出部４２と、問合せ構造照合部４３と、問合せプラン生成部４４と、問合せプラン最適化部４５と、問合せ処理実行部４６とを備える。
【００５１】
問合せ構文解析部４１は、問合せ構文解析手段として機能するものであり、与えられた問合せクエリを構文解析する。問合せ構造抽出部４２は、問合せ構造抽出手段として機能するものであり、問合せ構文解析部４１の構文解析結果から問合せクエリ内の構造指定部分を抽出する。図１２は、ＸＭＬの問合せ言語ＸＱｕｅｒｙによる問合せクエリの一例である。
【００５２】
問合せ構造照合部４３は、問合せ構造照合手段として機能するものであり、問合せ構造抽出部４２で抽出した構造指定部分とグローバル構造化テンプレートＤＢ１４内のグローバル構造化テンプレートとを照合し、構造化テンプレートにおける構造指定部分のＩＤを獲得する。
【００５３】
問合せプラン生成部４４は、問合せプラン生成手段として機能するものであり、構造情報の照合結果に基づいて問合せプランを生成する。図１３は、問合せプラン生成部４４における処理の流れを示すフローチャートである。図１３に示すように、まず、問合せ構文解析部４１における問合せ構文解析結果と問い合わせ構造照合部４３における照合結果に基づいて順に解析を実施する（ステップＳ２１）。
【００５４】
そして、今までの処理で出力変数を獲得したかをチェックし、出力変数を獲得した場合は（ステップＳ２２のＹｅｓ）、問合せプラン生成処理を終了する。
【００５５】
一方、出力変数を獲得していない場合は（ステップＳ２２のＮｏ）、未獲得の変数に対して関数オペレータによって取得可能か否かをチェックする（ステップＳ２３）。
【００５６】
関数オペレータによって取得不可能な場合は（ステップＳ２３のＮｏ）、パス処理であるTraverseオペレータによって取得可能かをチェックする（ステップＳ２４）。
【００５７】
Traverseオペレータによって取得不可能な場合は（ステップＳ２４のＮｏ）、比較処理であるJoinオペレータによって取得可能かをチェックする（ステップＳ２５）。
【００５８】
Joinオペレータによって取得不可能な場合は（ステップＳ２５のＮｏ）、その他の処理を問合せプランに追加する（ステップＳ２９）。
【００５９】
一方、いずれかのオペレータにより取得可能な場合（ステップＳ２３のＹｅｓ，ステップＳ２４のＹｅｓ，ステップＳ２５のＹｅｓ）、そのオペレータを問合せプランに追加する（ステップＳ２６，ステップＳ２７，ステップＳ２８）。
【００６０】
続いて、追加したオペレータの結果を各サブサーバ３毎に変数を用意して格納した後（ステップＳ３０）、各サブサーバ３毎の計算結果のマージが必要かをチェックする（ステップＳ３１）。例えば、他の変数とJoinする場合や最終出力になる場合、マージする必要がある。
【００６１】
各サブサーバ３毎の計算結果のマージが必要ない場合には（ステップＳ３１のＮｏ）、ステップＳ２１に戻り、構文解析結果、構造照合結果から次の解析処理に移る。
【００６２】
一方、各サブサーバ３毎の計算結果のマージが必要ない場合には（ステップＳ３１のＹｅｓ）、１つのサブサーバ３に他のサブサーバ３の計算結果を移動するShipオペレータを生成プランに追加した後（ステップＳ３２）、各サブサーバ３毎の計算結果をマージするMergeオペレータを生成プランに追加する（ステップＳ３３）。
【００６３】
次いで、ステップＳ３３でマージした結果が次の処理に必要かをチェックする。例えば、他の変数とJoinする場合は、再度各サブサーバ３にマージした結果が必要となる。マージした結果が次の処理に必要ない場合には（ステップＳ３４のＮｏ）、ステップＳ２１に戻り、構文解析結果、構造照合結果から次の解析処理に移る。一方、マージした結果が次の処理に必要な場合には（ステップＳ３４のＹｅｓ）、マージした結果の変数を再び各計算機に移動するためのShipオペレータを生成プランに追加して（ステップＳ３５）、ステップＳ２１に戻る。
【００６４】
図１４は、図６に示したグローバル構造化テンプレートを持つデータベースに対して図１２のクエリを問合せとして入力した場合における問合せプラン生成部４４で生成される問合せプランである。図１４では、サブサーバ３を計算機１，２，３としている。図１４では、最初のオペレータとして、ｄｂ（"book"）の処理、即ち各計算機に格納されているＸＭＬ文書のルートを取得するRootFunctionオペレータを各計算機で格納し、その結果を各計算機毎の変数＄ｒ１、＄ｒ２、＄ｒ３に格納する［０］。
次に、/book/authors/author［１］を取得するために、Traverseオペレータを各計算機で実施する［１，２，３］。
次に、ｌｅｔ ＄ｘ ：＝ …を取得するため、［１，２，３］で取得した結果を計算機１に移動し、結果をマージして変数＄ｘに格納する［４，５，６］。
次に、＄ｘは全ての計算機で必要となるためShipオペレータにより各計算機に転送する［７，８］。
次に、/book/authors/author［２］を取得するため［０］の変数を利用してTraverseオペレータを各計算機で実施する［９，１０，１１］。
次に、［６］と［９，１０，１１］の結果を各計算機でJoinする［１２，１３，１４］。
次に、author［２］から/book/subtitleに取得するためにTraverseオペレータで各計算機で実行する［１５，１６，１７］。
次に、ｆｏｒ ＄ｙ ｉｎ …を取得するために、［１５，１６，１７］で取得した結果を計算機１に移動し、結果をマージして変数＄ｙに格納する［１８，１９，２０］。
最後に、出力として＄ｙの値を<サブタイトル一覧>のタグ内に追加して返却する［２１］。
【００６５】
問合せプラン最適化部４５は、問合せプラン最適化手段として機能するものであり、作成した問合せプランに対して各サブサーバ３（計算機）のローカル構造テンプレート情報を利用して不要な処理を削除し最適化を実施する。図１５は、問合せプラン最適化部４５における処理の流れを示すフローチャートである。図１５に示すように、まず、問合せプラン生成部４４で生成された問合せプランのオペレータを逆順に解析し（ステップＳ４１）、全てのオペレータの解析が終了した場合は（ステップＳ４２のＹｅｓ）、問合せプラン最適化部４５における処理を終了する。
【００６６】
全てのオペレータの解析が終了していない場合は（ステップＳ４２のＮｏ）、オペレータがテンプレートＩＤを利用しているか否かをチェックする（ステップＳ４３）。オペレータがテンプレートＩＤを利用していない場合は（ステップＳ４３のＮｏ）、ステップＳ４１に戻り、次のオペレータを解析する。
【００６７】
オペレータがテンプレートＩＤを利用する場合は（ステップＳ４３のＹｅｓ）、グローバル構造化テンプレートから、オペレータを実行するサブサーバ３におけるテンプレートＩＤの出現パターンを取得し（ステップＳ４４）、出現パターンから変数に格納するノードがサブサーバ３内に存在するか否かを解析し、オペレータの必要性を判定する（ステップＳ４５）。例えば、author［２］といったauthorの番目を取得すると指定された場合、出現パターンが１以下である場合は指定されたノードが存在しないと判断する。指定されたノードが存在する場合は、オペレータが必要であると判断し（ステップＳ４６のＮｏ）、ステップＳ４１に戻り、次のオペレータを解析する。
【００６８】
一方、指定されたノードが存在しない場合は、オペレータが不要であると判断し（ステップＳ４６のＹｅｓ）、変数を取得するオペレータを削除し（ステップＳ４７）、削除した変数を使用しているオペレータを解析する（ステップＳ４８）。
【００６９】
次いで、変数を削除したことによりオペレータが不要かをチェックし（ステップＳ４９）、オペレータが不要な場合は（ステップＳ４９のＹｅｓ）、オペレータを削除した後（ステップＳ５０）、ステップＳ４８に戻り、次のオペレータを解析する。
【００７０】
オペレータが必要な場合は（ステップＳ４９のＮｏ）、オペレータの情報を変更する必要があるか否かをチェックする（ステップＳ５１）。変更する必要がある場合には（ステップＳ５１のＹｅｓ）、オペレータの情報を変更した後（ステップＳ５２）、最初のステップＳ４１に戻り、次のオペレータを解析する。一方、変更する必要がない場合には（ステップＳ５１のＮｏ）、ステップＳ４１に戻り、次のオペレータを解析する。
【００７１】
図１６は、図１４に示した生成プランを入力とした場合における問合せプラン最適化部４５で生成される最適化生成プランである。図１６では、サブサーバ３を計算機１，２，３としている。図１６では、図１４の生成プランを逆順に解析していく。最初に＄ｙをチェックする。＄ｙは出力として必要なため、そのまま残す。
【００７２】
次に、＄ｙ１、＄ｙ２、＄ｙ３をチェックする。ここで、＄ｙ２に関しては、図６のグローバル構造化テンプレートをチェックすると、計算機２では/book/subtitleが存在しないことが判明する。そのため、＄ｙ２は不要であるとして、［１６］のオペレータを削除する。さらに、＄ｙ２を利用するオペレータとして［１８，２０］が存在するが、［１８］は＄ｙ２が不要であるため削除する。［２０］に関してはMergeの対象から＄ｙ２を削除する。
【００７３】
次に、＄ｊ１、＄ｊ２、＄ｊ３をチェックする。ここで、＄ｊ２に関しては［１６］で利用される変数であるが、［１６］が削除されているため不要と判断して［１３］のオペレータを削除する。
【００７４】
次に、＄ｔ１、＄ｔ２、＄ｔ３をチェックする。ここで、＄ｔ２に関しては［１３］で利用される変数であるが、［１３］が削除されているため不要と判断して［１０］のオペレータを削除する。また、＄ｔ３に関しては、図６のグローバル構造化テンプレートをチェックすると計算機３では/book/authorの出現パターンが１であり、/book/author［２］が存在しないことが判明する。そのため、＄ｔ３は不要であるとして［１１］のオペレータを削除する。さらに、＄ｔ３を利用するオペレータとして［１４］が存在するが、［１４］は＄ｔ３が不要であるため削除する。これを繰り返して＄ｊ３を利用するオペレータとして［１７］を削除、及び＄ｙ３を利用する［１９］を削除する。［２０］に関してはMergeの対象から＄ｙ３を削除した結果Merge対象が存在しなくなるため［２０］も削除する。
【００７５】
次に、＄ｘをチェックすると＄ｘは［１２］で必要なため残す。但し、［７，８］は計算機２,３に＄ｘを移動しても何も処理されないため削除する。次に、＄ｘ１、＄ｘ２、＄ｘ３をチェックすると、これらは＄ｘのために必要なので削除しない。最後に、＄ｒ１、＄ｒ２、＄ｒ３をチェックすると、これらは＄ｘ１、＄ｘ２、＄ｘ３のために必要なので削除しない。
【００７６】
以上で全ての変数をチェックした結果として、図１６に示す最適化生成プランが生成される。
【００７７】
問合せ処理実行部４６は、問合せ処理実行手段として機能するものであり、生成プランに従って各サブサーバ３の構造化文書データにアクセス、あるいはサブサーバ３間で計算データの交換を繰り返して処理を実施し、問合せクエリの出力に合致するデータを取得して出力する。
【００７８】
これにより、各サブサーバ３内の構造条件を、単純に文書データを配置した場合と比較してより厳密な制約条件にすることを可能とし、各サブサーバ３はその構造条件に基づいた最適化を行うことにより、データ転送や他のサブサーバ３の結果待ちを極力少なくすることで効率的な問合せ処理を実現することができる。
【００７９】
このように本実施の形態によれば、格納される構造化文書（ＸＭＬ文書）の構造情報に着目し、構造化文書（ＸＭＬ文書）の分散配置を実施することで効率的に探索することが可能となる。ここでは、あるサブサーバ３（計算機１）には<subtitle>の出現パターンが０の文書を配置し、別のサブサーバ３（計算機２）に<subtitle>の出現パターンが１の文書を配置することでＤＢ全体では<subtitle>の出現パターンは０または１だとしても、各サブサーバ３内ではより制約条件が強化される。そのため、この場合ではサブサーバ３（計算機2）に格納されているＸＭＬ文書のみ<subtitle>を探索すれば良い。
【００８０】
一般に、構造情報等を考慮に入れずに単純に各サブサーバ３に構造化文書を格納していくと、様々な構造を持つ文書を格納するため、格納された構造化文書全てに対して満たされる構造の制約（ＸＭＬ Schema、ＤＴＤ、DataGuide等の形で表現可能な制約）は緩やかなものとなる。例えば、構造化文書の一例として図４に示したようなＸＭＬ文書を格納していく場合、格納するＸＭＬ文書の中にはタグ<subtitle>が存在しないＸＭＬ文書等も含まれる場合が存在する。その場合、ＤＢ全体における構造情報として<subtitle>の出現パターンは０または１回出現するといった形で記憶される。このため、ある文書の<subtitle>の値を取得するといった問合せの場合、各ＸＭＬ文書に<subtitle>が存在するかしないかが不明であるため、全ＸＭＬ文書を探索する必要が存在する。
【００８１】
これに対し、本実施の形態によれば、もし<subtitle>の出現パターンが０に固定されていれば<subtitle>が存在しないことが構造情報から判別できるため全ＸＭＬ文書を探索する必要がない。このように、構造情報の制約条件が厳密になる程、探索時に無駄な処理を省くことが可能となる。
【００８２】
このように構造化文書の特徴となる構造情報を考慮した分散配置を行うことで、サブサーバ３（計算機）間のデータ転送や不要なデータに対する探索を削除し、問合せ処理の最適化を実現することが可能となる。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施の一形態にかかる分散構成の構造化文書管理システムのシステム構築例を示す模式図である。
【図２】メインサーバおよびサブサーバのモジュール構成図である。
【図３】構造化文書格納処理にかかる分散構成の構造化文書管理システムの機能構成を示すブロック図である。
【図４】構造化文書の１つであるＸＭＬ文書のデータ例を示す模式図である。
【図５】図４のＸＭＬ文書を構文解析した結果である構造情報の一例を示す模式図である。
【図６】グローバル構造化テンプレートの構成例を示す模式図である。
【図７】構造化テンプレートを木構造で表現した模式図である。
【図８】グローバル構造化テンプレート照合部における処理の流れを示すフローチャートである。
【図９】ローカル構造化テンプレートの構成例を示す模式図である。
【図１０】ローカル構造化テンプレート更新部における処理の流れを示すフローチャートである。
【図１１】構造化文書検索処理にかかる分散構成の構造化文書管理システムの機能構成を示すブロック図である。
【図１２】ＸＭＬの問合せ言語ＸＱｕｅｒｙによる問合せクエリの一例を示す模式図である。
【図１３】問合せプラン生成部における処理の流れを示すフローチャートである。
【図１４】問合せプラン生成部で生成される問合せプランの一例を示す模式図である。
【図１５】問合せプラン最適化部における処理の流れを示すフローチャートである。
【図１６】問合せプラン最適化部で生成される最適化生成プランの一例を示す模式図である。
【図１７】リレーショナルデータベースにおけるレンジ分割の例を示す模式図である。
【図１８】ＸＰａｔｈを利用することでＸＭＬ文書における水平分割と垂直分割を実現している例を示す模式図である。
【符号の説明】
【００８４】
１      構造化文書管理装置
３      構造化文書サブ管理装置
１１    構造化文書構文解析手段
１２    構造化文書構造抽出手段
１３    構造情報照合手段
１４    構造情報格納部
１５    構造化文書配置先選択手段
１６    構造情報更新手段
１７    固有構造情報取得手段
３１    固有構造情報照合手段
３２    固有構造情報更新手段
３３    固有構造情報格納部
４１    問合せ構文解析手段
４２    問合せ構造抽出手段
４３    問合せ構造照合手段
４４    問合せプラン生成手段
４５    問合せプラン最適化手段
４６    問合せ処理実行手段
【図１】
0004489047.tif 000002
【図２】
0004489047.tif 000003
【図３】
0004489047.tif 000004
【図４】
0004489047.tif 000005
【図５】
0004489047.tif 000006
【図６】
0004489047.tif 000007
【図７】
0004489047.tif 000008
【図８】
0004489047.tif 000009
【図９】
0004489047.tif 000010
【図１０】
0004489047.tif 000011
【図１１】
0004489047.tif 000012
【図１２】
0004489047.tif 000013
【図１３】
0004489047.tif 000014
【図１４】
0004489047.tif 000015
【図１５】
0004489047.tif 000016
【図１６】
0004489047.tif 000017
【図１７】
0004489047.tif 000018
【図１８】
0004489047.tif 000019