(57)【特許請求の範囲】
【請求項１】
ＸＰａｔｈ式で記述された問合せの入力を受け付けて、その問合せに適合するＸＭＬデータにアクセスするＸＰａｔｈ処理装置であって、
前記ＸＰａｔｈ処理装置は、記憶手段と、要約情報作成手段と、問合せ解析手段と、アクセス選択手段とを有しており、
前記記憶手段には、前記問合せの検索対象であるＸＭＬデータがＸＭＬデータベースとして格納されており、
前記要約情報作成手段は、前記ＸＭＬデータベースを構成する複数のＸＭＬノードをもとに、そのＸＭＬノードへアクセスするためのＸＭＬアクセス用データを２つ以上作成して記憶手段に格納し、
前記作成されるＸＭＬアクセス用データは、要約情報と統計情報と索引情報とから構成されるデータ構造であり、
前記作成されるＸＭＬアクセス用データのうちの第１ＸＭＬアクセス用データとして、
前記ＸＭＬノードに対応するデータガイドノードをツリー状に構成するストロングデータガイドを、前記第１ＸＭＬアクセス用データの要約情報とし、
前記データガイドノードごとに対応するＸＭＬノードの個数を示すカウンタ値を、前記第１ＸＭＬアクセス用データの統計情報とし、
前記データガイドノードごとに対応するＸＭＬノードの位置特定用データであるデータガイド索引を、前記第１ＸＭＬアクセス用データの索引情報とし、
前記作成されるＸＭＬアクセス用データのうちの第２ＸＭＬアクセス用データとして、
前記ＸＭＬノードのタグ名ごとにタグ要素とするタグ情報を、前記第２ＸＭＬアクセス用データの要約情報とし、
前記タグ要素ごとに対応するＸＭＬノードの個数を示すカウンタ値を、前記第２ＸＭＬアクセス用データの統計情報とし、
前記タグ要素ごとに対応するＸＭＬノードをＸＭＬデータ中におけるＸＭＬノードの出現順に取得させるタグ索引を、前記第２ＸＭＬアクセス用データの索引情報とし、
前記問合せ解析手段は、前記複数のＸＭＬアクセス用データそれぞれについて、その要約情報ごとに、その要約情報に対応するＸＭＬノードが前記問合せで入力されたＸＰａｔｈ式に適合するか否かを照合することにより、前記ＸＭＬデータの前記要約情報に対して問合せの検索処理を行い、その検索処理にマッチする前記要約情報に対応する前記統計情報のカウンタ値を抽出し、
前記アクセス選択手段は、抽出した前記カウンタ値が小さくなるほど高評価とする評価関数により評価し、高評価となる前記カウンタ値となるＸＭＬアクセス用データの索引情報を、前記ＸＭＬデータへのアクセスのために選択すること、
を特徴とするＸＰａｔｈ処理装置。
【請求項２】
前記要約情報作成手段は、前記データガイド索引を作成するときに、前記ＸＭＬノードの位置特定用データとして、前記ＸＭＬのノードに前置順と後置順との順序関係を保存したラベルである範囲ラベルを作成することを特徴とする
請求項１に記載のＸＰａｔｈ処理装置。
【請求項３】
前記要約情報作成手段は、
前記ＸＭＬデータのＳＡＸイベントシーケンスを用いてＳＡＸイベントごとにイベントに対応する情報が前記要約情報中に存在するか判定し、
存在しない場合は、前記要約情報を追加し、さらに前記統計情報を計算し、前記要約情報の対応する部分に追加しながら、ＳＡＸイベントシーケンスを最後まで処理することにより、
前記ＸＭＬデータに対する一回の走査で前記要約情報およびその統計情報を生成すること
を特徴とする請求項１または請求項２に記載のＸＰａｔｈ処理装置。
【請求項４】
ＸＰａｔｈ式で記述された問合せの入力を受け付けて、その問合せに適合するＸＭＬデータにアクセスするＸＰａｔｈ処理装置によるＸＰａｔｈ処理方法であって、
前記ＸＰａｔｈ処理装置は、記憶手段と、要約情報作成手段と、問合せ解析手段と、アクセス選択手段とを有しており、
前記記憶手段には、前記問合せの検索対象であるＸＭＬデータがＸＭＬデータベースとして格納されており、
前記要約情報作成手段は、前記ＸＭＬデータベースを構成する複数のＸＭＬノードをもとに、そのＸＭＬノードへアクセスするためのＸＭＬアクセス用データを２つ以上作成して記憶手段に格納し、
前記作成されるＸＭＬアクセス用データは、要約情報と統計情報と索引情報とから構成されるデータ構造であり、
前記作成されるＸＭＬアクセス用データのうちの第１ＸＭＬアクセス用データとして、
前記ＸＭＬノードに対応するデータガイドノードをツリー状に構成するストロングデータガイドを、前記第１ＸＭＬアクセス用データの要約情報とし、
前記データガイドノードごとに対応するＸＭＬノードの個数を示すカウンタ値を、前記第１ＸＭＬアクセス用データの統計情報とし、
前記データガイドノードごとに対応するＸＭＬノードの位置特定用データであるデータガイド索引を、前記第１ＸＭＬアクセス用データの索引情報とし、
前記作成されるＸＭＬアクセス用データのうちの第２ＸＭＬアクセス用データとして、
前記ＸＭＬノードのタグ名ごとにタグ要素とするタグ情報を、前記第２ＸＭＬアクセス用データの要約情報とし、
前記タグ要素ごとに対応するＸＭＬノードの個数を示すカウンタ値を、前記第２ＸＭＬアクセス用データの統計情報とし、
前記タグ要素ごとに対応するＸＭＬノードをＸＭＬデータ中におけるＸＭＬノードの出現順に取得させるタグ索引を、前記第２ＸＭＬアクセス用データの索引情報とし、
前記問合せ解析手段は、前記複数のＸＭＬアクセス用データそれぞれについて、その要約情報ごとに、その要約情報に対応するＸＭＬノードが前記問合せで入力されたＸＰａｔｈ式に適合するか否かを照合することにより、前記ＸＭＬデータの前記要約情報に対して問合せの検索処理を行い、その検索処理にマッチする前記要約情報に対応する前記統計情報のカウンタ値を抽出し、
前記アクセス選択手段は、抽出した前記カウンタ値が小さくなるほど高評価とする評価関数により評価し、高評価となる前記カウンタ値となるＸＭＬアクセス用データの索引情報を、前記ＸＭＬデータへのアクセスのために選択すること、
を特徴とするＸＰａｔｈ処理方法。
【請求項５】
請求項４に記載のＸＰａｔｈ処理方法をコンピュータである前記ＸＰａｔｈ処理装置に実行させるためのＸＰａｔｈ処理プログラム。
【請求項６】
請求項５に記載のＸＰａｔｈ処理プログラムを記録した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＰａｔｈ処理装置、ＸＰａｔｈ処理方法、ＸＰａｔｈ処理プログラム、および、記憶媒体に関する。
【背景技術】
【０００２】
ＸＭＬ（eXtensible Markup Language）データベースとは、ＸＭＬデータを格納し、効率よく検索、更新もできるソフトウェアプログラムである。その際、ＸＭＬデータベース内のＸＭＬデータにアクセスするために、ＸＰａｔｈ（XML Path Language）やＸＱｕｅｒｙ（XML Query）による検索機能を持つことが望まれる。
【０００３】
図２０は、ＸＭＬデータの一例を示す。ＸＭＬとは、「＜」と「＞」とに挟まれた開始タグと、「＜／」と「＞」とにはさまれた終了タグの入れ子構造からなるマークアップ言語であり、Ｗ３Ｃによって標準化されている。このタグの入れ子構造は、重なりをゆるさない。
【０００４】
図２１のＸＭＬ木とは、図２０のＸＭＬデータからモデル化された木（ツリー構造）である。具体的には、ＸＭＬ木は、ＸＭＬタグの入れ子構造を親子関係とし、タグの名前をノードの名前とし、タグの登場順を子ノードの順序とする。これにより、ＸＭＬデータベースはラベル付き順序木でモデル化される（図２１参照）。ＸＭＬ木中のノードをＸＭＬノードと呼ぶことにする。ＸＭＬノード集合は、ＸＭＬデータに登場した順序によって全順序集合となる。つまり、ＸＭＬ木は順序木である。このＸＭＬノードの順序を、文書順と呼ぶ。
【０００５】
ＤＯＭ（Document Object Model）木、および、ＳＡＸ（Simple ＡＰＩ for ＸＭＬ）イベントは、共にＸＭＬデータをプログラミング言語で扱うためのＡＰＩ（Application Program Interface）であり、標準化されている。まず、ＤＯＭ木は、ＸＭＬ木をモデルとした、ＸＭＬデータを木ナビゲーション関数群によって扱うためのプログラミングＡＰＩである。ＤＯＭ木はモデルではなく、実際のメモリ内に展開した木構造を指すため、ＸＭＬ木という言葉とは区別して利用する。
【０００６】
一方、図２２に示すＳＡＸは、ＸＭＬデータをイベントの列として処理するためのＡＰＩである。ＳＡＸも事実上ＸＭＬを処理するための標準となっている。ＳＡＸではＸＭＬデータ中の各情報はＳＡＸイベントと呼ばれる。なお、図２２は、図２０のＸＭＬデータをＳＡＸイベントシーケンスとして示した例を示す。xml宣言は省略してある。ＸＭＬの属性は、開始イベントに付与されている。ＳＡＸイベントは、例えば、開始イベント、終了イベント、および、テキストノードイベントが挙げられる。開始イベント（属性がある場合は属性を持つ）は、start（Book）のように記述される。終了イベントは、end（Book）のように記述される。テキストノードは、text（“This is a text node.”）のように記述される。
【０００７】
ＸＭＬ問合せ言語は、大量のＸＭＬデータを効率よく検索するために、ＤＯＭ木に対してではなく、モデル化されたＸＭＬ木に対する、柔軟な検索を可能とする。標準の問合せ言語であるＸＰａｔｈおよびＸＱｕｅｒｙがＷ３Ｃから提案されている。なお、ＸＭＬ木の保持方法あるいは、格納構造には特に指定がなく、実装依存である。
【０００８】
ＸＰａｔｈとは、ＸＭＬ木の位置特定言語とみなすことができ、ＸＱｕｅｒｙの基本となるサブセットになっている。その他の様々なＸＭＬの仕様でもＸＰａｔｈは利用されている（ＸＬｉｎｋ（XML Linking Language）、ＸＳＬＴ（XML Stylesheet Language Transformations）等）。つまり、ＸＰａｔｈはＸＭＬ仕様において非常に重要なＸＭＬ木の位置指定言語である。
【０００９】
図２３は、ＸＰａｔｈによる検索式の例を示す。ＸＰａｔｈ問合せでは、オペレーティングシステム等で利用されるファイルシステムのパス表現と同じような簡易表現が可能である。ＸＰａｔｈ問合せの簡易表現では、「Ａ／Ｂ」をＡがＢの親とするノードの親子関係とし、「Ｃ／／Ｄ」をＣがＤの先祖とするノードの先祖子孫関係とするように表現する。ＸＰａｔｈは、分岐を含む場合（図２３参照）、または、分岐を含まないシングルパスの場合（図２４参照）に分類される。図２４（１）は、多段に渡るＸＰａｔｈ式を示している。
【００１０】
図２５は、ＸＰａｔｈ式の問合せを問合せ木として示す。図２５において、丸で囲まれたノードは、丸の中に書かれた名前でマッチする要素の名前を指定する。ノード間の一重線は親子関係を表し（図示省略）、二重線は先祖子孫関係を表す。ノードのうち二重丸で囲まれたノードはアウトプットノードであり、問合せを処理した後に返す部分木の根ノードを表す。ダブルクオートで囲まれたテキスト値は、テキストノードに対する条件である。問合せ木によって指定される条件を満たすアウトプットノードを返すことがＸＰａｔｈ式を評価することにあたる。
【００１１】
なお、ＸＭＬデータをラベル付き順序木であるＸＭＬ木と捉え、ＸＰａｔｈによる検索をラベル付き順序木中の探索によって実現しようとすると、木構造の全てを探索する必要がある。ＸＭＬデータが大きなときには、木構造の全探索は非常に処理量が多く、処理が低速になってしまう。
【００１２】
そこで、ＸＭＬデータに直接アクセスする代わりに、ＸＭＬデータのストロングデータガイドを活用する方式が提案されている（非特許文献１、および、非特許文献２参照）。まず、ストロングデータガイド、および、ストロングデータガイドからＸＭＬノードを参照するためのデータガイド索引を、ＸＭＬデータからあらかじめ作成しておく。データガイドノードは、ストロングデータガイド中のノードである。データガイド索引は、各データガイドノードに対応するＸＭＬノードが、文書順に取得できるような索引である。そして、検索するＸＰａｔｈ式が入力されたときに、そのＸＰａｔｈ式とストロングデータガイドとを照合することにより、高速なＸＰａｔｈの検索処理を実現する。
【非特許文献１】江田毅晴、鬼塚真、山室雅司、“ＸＭＬデータの要約情報を用いた高速なＸＰａｔｈ処理方法。In Proc. DEWS2005,2005.”、[online]、［平成１８年１月４日検索］、インターネット＜ＵＲＬ：http://www.digitalcity.gr.jp/satoh/DEWS2005/procs/papers/6B-o4.pdf＞
【非特許文献２】Takeharu Eda,Makoto Onizuka、and Masashi Yamamuro著、“Processing XPath Queries with XML Summaries”、In Proc.CIKM,2005.
【発明の開示】
【発明が解決しようとする課題】
【００１３】
なお、ＸＭＬデータのストロングデータガイドは、ＸＭＬデータを示す要約情報の一例であり、データガイド索引は、索引情報の一例である。ＸＭＬデータなどの木構造を対象として効率的にアクセスするための要約情報は、様々なものが利用可能である。例えば、図２６に示すタグ情報は、同じ名称となるＸＭＬノードが複数存在するときに、それらのＸＭＬノードを１つの集合にまとめるような要約情報であり、タグ索引は、タグ情報からＸＭＬノードにアクセスするための索引である。
【００１４】
なお、要約情報は、それぞれ利点欠点があり、ＸＭＬデータに高速にアクセスできる最適な要約情報を選択することで、アクセス量を大きく低減できる。しかし、従来は、ＸＭＬデータの要約情報そのものは、様々なものが提案されているが、それらのうち、最適なものを選択する手法は、提案されていなかった。そのため、最適でない要約情報が使用されることもあり、充分な高速化がなされていなかった。
【００１５】
そこで、本発明は、前記した問題を解決し、ＸＭＬデータにアクセスするための最適な要約情報を選択することを主な目的とする。
【課題を解決するための手段】
【００１６】
本発明は、ＸＰａｔｈ式で記述された問合せの入力を受け付けて、その問合せに適合するＸＭＬデータにアクセスするＸＰａｔｈ処理装置であって、前記ＸＰａｔｈ処理装置は、記憶手段と、要約情報作成手段と、問合せ解析手段と、アクセス選択手段とを有しており、前記記憶手段には、前記問合せの検索対象であるＸＭＬデータがＸＭＬデータベースとして格納されており、前記要約情報作成手段は、前記ＸＭＬデータベースを構成する複数のＸＭＬノードをもとに、そのＸＭＬノードへアクセスするためのＸＭＬアクセス用データを２つ以上作成して記憶手段に格納し、前記作成されるＸＭＬアクセス用データは、要約情報と統計情報と索引情報とから構成されるデータ構造であり、前記作成されるＸＭＬアクセス用データのうちの第１ＸＭＬアクセス用データとして、前記ＸＭＬノードに対応するデータガイドノードをツリー状に構成するストロングデータガイドを、前記第１ＸＭＬアクセス用データの要約情報とし、前記データガイドノードごとに対応するＸＭＬノードの個数を示すカウンタ値を、前記第１ＸＭＬアクセス用データの統計情報とし、前記データガイドノードごとに対応するＸＭＬノードの位置特定用データであるデータガイド索引を、前記第１ＸＭＬアクセス用データの索引情報とし、前記作成されるＸＭＬアクセス用データのうちの第２ＸＭＬアクセス用データとして、前記ＸＭＬノードのタグ名ごとにタグ要素とするタグ情報を、前記第２ＸＭＬアクセス用データの要約情報とし、前記タグ要素ごとに対応するＸＭＬノードの個数を示すカウンタ値を、前記第２ＸＭＬアクセス用データの統計情報とし、前記タグ要素ごとに対応するＸＭＬノードをＸＭＬデータ中におけるＸＭＬノードの出現順に取得させるタグ索引を、前記第２ＸＭＬアクセス用データの索引情報とし、前記問合せ解析手段は、前記複数のＸＭＬアクセス用データそれぞれについて、その要約情報ごとに、その要約情報に対応するＸＭＬノードが前記問合せで入力されたＸＰａｔｈ式に適合するか否かを照合することにより、前記ＸＭＬデータの前記要約情報に対して問合せの検索処理を行い、その検索処理にマッチする前記要約情報に対応する前記統計情報のカウンタ値を抽出し、前記アクセス選択手段は、抽出した前記カウンタ値が小さくなるほど高評価とする評価関数により評価し、高評価となる前記カウンタ値となるＸＭＬアクセス用データの索引情報を、前記ＸＭＬデータへのアクセスのために選択すること、を特徴とする。
さらに、本発明は、前記ＸＰａｔｈ処理装置が実行するＸＰａｔｈ処理方法であり、前記ＸＰａｔｈ処理方法をコンピュータに実行させるためのＸＰａｔｈ処理プログラムであり、前記ＸＰａｔｈ処理プログラムを格納した記憶媒体である。
【００１７】
これにより、ＸＰａｔｈ等の木構造指定言語を用いてＸＭＬデータを検索するＸＭＬデータベースシステムにおいて、ＸＭＬデータにアクセスするための最適な要約情報を選択することで、ＸＭＬデータのアクセス処理を低減することができる。
【００１８】
本発明は、前記要約情報作成手段が、前記データガイド索引を作成するときに、前記ＸＭＬノードの位置特定用データとして、前記ＸＭＬのノードに前置順と後置順との順序関係を保存したラベルである範囲ラベルを作成することを特徴とする。
【００１９】
これにより、高速なＸＭＬデータのアクセス処理によって、短期間に問合せの結果を取得することができる。さらに、範囲ラベルを用いた高速なＸＭＬノードの親子及び先祖子孫判定により、短期間に問合せの結果を取得することができる。
【００２２】
本発明は、前記要約情報作成手段が、前記ＸＭＬデータのＳＡＸイベントシーケンスを用いてＳＡＸイベントごとにイベントに対応する情報が前記要約情報中に存在するか判定し、存在しない場合が、前記要約情報を追加し、さらに前記統計情報を計算し、前記要約情報の対応する部分に追加しながら、ＳＡＸイベントシーケンスを最後まで処理することにより、前記ＸＭＬデータに対する一回の走査で前記要約情報およびその統計情報を生成することを特徴とする。
【００２３】
これにより、要約情報を高速に作成することができる。
【発明の効果】
【００４０】
本発明では、ＸＭＬデータにアクセスするための最適な要約情報を選択することで、ＸＭＬデータのアクセス処理を低減することができる。
【発明を実施するための最良の形態】
【００４１】
まず、本発明と既存技術とを比較することにより、本発明の顕著な効果を主張する。図１に既存技術と本発明の提案技術の比較図を示す。既存手法では、要約情報を処理した後、固定したアクセス方法（要約情報）で、ＸＭＬデータを読み込んでいた（図１（ａ）参照）。提案技術では、統計情報付き要約情報を処理した後に、計算した統計情報をもとに、複数あるアクセス方法の中から最適なアクセス方法を選択する（図１（ｂ）参照）。これにより、従来発生していた、ディスクの複数箇所にまたがるアクセスや、マージのコストを下げることが出来、高速なＸＰａｔｈ処理を実現可能にする。
【００４２】
以下、第１実施形態を説明する。図２のＸＰａｔｈ処理装置は、演算処理を行う際に用いられる記憶手段としてのメモリと、前記演算処理を行う演算処理装置と、データを入出力するためのインタフェースとを少なくとも備えるコンピュータとして構成される。なお、メモリは、ＲＡＭ（Random Access Memory）などにより構成される。演算処理は、ＣＰＵ（Central Processing Unit）によって構成される演算処理装置が、メモリ上のプログラムを実行することで、実現される。
【００４３】
利用者は、ＸＰａｔｈ検索式を用いて、プログラミングＡＰＩあるいは対話型インタフェースプログラム等からデータベースに検索を行う。ＸＰａｔｈ式は、問合せ解析手段１４にてパーズされ、「ＸＰａｔｈ式→問合せ木→（構造部、値部）→中間問合せ木」の順に変換される。
【００４４】
ディスク管理手段２２は、二次記憶装置２８に格納されたＸＭＬデータヘのアクセス手段を提供する。なお、ＸＭＬデータヘのアクセス手段とは、ＸＭＬノードの位置特定処理である。さらに、ＸＭＬノードへのアクセスは、位置特定されたＸＭＬノードに関するデータ（属性情報などのテキスト）の読み取り（リード）処理や書き込み（ライト）処理を含めてもよい。イベントシーケンス手段２４は、データガイドのアクセスを仲介する。結果生成手段２６は、ＸＰａｔｈの問合せの結果（結果ノードの指定する部分木）を生成する。
【００４５】
ＸＭＬデータ入力手段１０は、ＸＭＬデータを二次記憶装置２８に入力する。なお、ＸＭＬデータ入力手段１０は、要約情報作成手段１２と並行して動くことができる。
【００４６】
要約情報作成手段１２は、ＸＭＬデータ入力手段１０に入力されたＸＭＬデータから要約情報を作成する。具体的には、要約情報作成手段１２は、ＸＭＬデータのＳＡＸイベントから、ＸＭＬデータの木構造部の要約情報を作成し、その要約情報の索引情報および統計情報を計算する。要約情報は、索引情報および統計情報と関連づけられる。なお、ＳＡＸイベントの詳細は、文献「David Megginson、“Simple API for XML（SAX）”、[online]、［平成１８年１月４日検索］、インターネット＜ＵＲＬ：http://sax.sourceforge.net/＞」に記載されている。
【００４７】
ＸＭＬデータの要約情報は、ＸＭＬデータのテキスト値および属性値を除いた部分からなるＸＭＬ木の木構造部を用いて構築される。ＸＭＬ木そのままの木構造ではデータサイズと同等の大きさになってしまうので、共通のパスを共有化して構築する。これにより、コンパクトかつ正確にＸＭＬデータの構造の情報を保持できる。
【００４８】
ＸＭＬデータの要約情報は、例えば、ストロングデータガイド、および、タグ情報が挙げられる。ストロングデータガイドの作成方法は、例えば、文献「Roy Goldman and Jennifer Widom著、DataGuides：Enabling Query Formulation and Optimization in Semistructured Databases、In Proc. VLDB,1997.」に記述されている。図３は、図２１に示すＸＭＬ木のストロングデータガイドを示す。図１０（詳細は後記）は、木構造データのイベントシーケンス全般に対して、要約情報の一例であるストロングデータガイドを効率よく作成する一例を示す。ストロングデータガイドの活用により、ＸＰａｔｈを処理する際のアクセス量（後記する構造ジョイン回数およびディスクＩ／Ｏ）を削減することができる。
【００４９】
要約情報の索引情報は、ＸＭＬデータの木構造から作成され、例えば、ストロングデータガイドにおけるデータガイド索引、および、タグ情報におけるタグ索引が挙げられる。
【００５０】
要約情報の統計情報は、ストロングデータガイドにおけるデータガイド統計情報、および、タグ情報におけるタグ統計情報が挙げられる。図４のデータガイド統計情報は、データガイドノードに、ＸＭＬデータ中の対応するＸＭＬノードの個数を保持する。図５のタグ統計情報は、各タグに示すＸＭＬノードについてＸＭＬデータ中での登場回数を保持する。
【００５１】
図２の問合せ解析手段１４は、利用者のＸＰａｔｈによる検索問合せ（図２４参照）を解析し、要約情報に対してＸＰａｔｈ処理をする（図１７参照、詳細は後記）。具体的には、問合せ解析手段１４は、検索問合せを字句解析および構文解析し、問合せの内部表現である問合せ木（図２５）を生成する。続いて、問合せ解析手段１４は、問合せ木を構造部と値部に分離し、中間問合せ木を生成する。
【００５２】
問合せ処理手段１６は、中間要約木列作成手段１８、および、アクセス選択手段２０を含む。そして、問合せ処理手段１６は、中間要約木列作成手段１８による中間木実体化処理、および、値部のフィルタリング処理の実行順序を、二次記憶装置２８に格納されたＸＭＬデータの統計情報等を用いて決定する。さらに、問合せ処理手段１６は、実行プランを、二次記憶装置２８に格納されたＸＭＬデータおよびその要約情報を用いて実行する。
【００５３】
中間要約木列作成手段１８は、ＸＭＬデータの統計情報付き要約情報から、ＸＰａｔｈの問合せ処理においてマッチするＸＭＬデータの要約情報中の中間要約木列（アウトプットノード列とも呼ばれる）、および、その中間要約木列の統計情報を計算する。なお、ＸＰａｔｈの問合せ処理は、既存手法をそのまま活用することにより、実現される。
【００５４】
ＸＰａｔｈの問合せ処理は、例えば、文献「Yanlei Diao,Mehmet Altinel,Michael J.Franklin,Hao Zhang, and Peter Fischer著、Path Sharing and Predicate Evaluation for High-Performance XML Filtering、Technical report, EECS,University of California,Berkeley and IBM Almaden Research Center,San Jose,2002.」に記載されている。ＸＰａｔｈの問合せ処理は、例えば、文献「Todd J.Green,Ashish Gupta,Gerome Miklau,Makoto Onizuka, and Dan Suciu著、Processing XML Streams with Deteministic Automata and Stream Indexes、In Proc. ICDT,2003.」に記載されている。ＸＰａｔｈの問合せ処理は、例えば、文献「Feng Peng and Sudarshan S.Chawathe著、XPath Queries on Streaming Data、In Proc. SIGMOD,2003.」に記載されている。
【００５５】
また、中間要約木列の統計情報は、ＸＭＬデータの統計情報を利用して、計算される。さらに、同時にアウトプットノードが保持しているカウントを合計して、アウトプットノードの統計情報とする。統計情報の作成例を図６（ａ）に、作成方法を図１８（詳細は後記）にそれぞれ示す。
【００５６】
アクセス選択手段２０は、中間要約木の統計情報を用いて、二次記憶装置２８に格納されたＸＭＬデータヘの最適な要約情報を選択する。なお、統計情報は、最適なディスクアクセス方法の選択、つまり、ＸＭＬデータの検索処理という全体の処理時間の総和が高速になるような選択に使用される。つまり、統計情報を作成する処理の増加よりも、最適な索引を選択することによりアクセス処理の減少に関する効果が大きい。
【００５７】
アクセス選択手段２０は、様々な評価関数を用いて、アクセス量が少なくなる要約情報を選択できる。例えば、アクセス選択手段２０は、ＸＰａｔｈ式に適合する要約情報のノード数が少なくなるほど高評価とする評価関数を用いてもよい。また、アクセス選択手段２０は、ＸＰａｔｈ式に適合する要約情報のノードについて、そのノードに対応するＸＭＬノードの中で、ＸＰａｔｈ式に適合するＸＭＬノードの割合が高くなるほど高評価とする評価関数を用いてもよい。さらに、アクセス選択手段２０は、例えば評価関数の評価値の重み付け平均などを行うことで、複数の評価関数を併せて用いてもよい。
【００５８】
図１９（詳細は後記）は、２つの索引情報（データガイド索引、タグ索引）のいずれかを選択する方法を示す。図１９において、中間要約木列の統計情報は、取り出すＸＭＬノードの個数を示している。アクセス選択手段２０は、タグ統計情報によって得られるアウトプットノードタグのＸＭＬノードの個数から、中間要約木列の統計情報を引いたものが、ｋより小さい場合は、要約情報としてタグ情報を選択する。そうでない場合は、データガイド索引を選択する。この定数ｋは、システム依存でありかつ事前学習によって求めることも可能である。
【００５９】
以下、第２実施形態を説明する。第２実施形態は、索引情報に範囲ラベルを活用することを特徴とする。
【００６０】
図９は、範囲ラベルを用い、関係データベースを用いてデータ格納を行った場合において、本発明の利用される形態を示したものである。基本的には、第１実施形態と同じであるが、データベースのアクセスがＲＤＢＭＳ（Relational DataBase Management System）が提供するプログラミングＡＰＩになっている点が違う。
【００６１】
要約情報作成手段１２は、要約情報および統計情報を作成すると同時に、要約情報に範囲ラベルを付与する手段である。範囲ラベル付け手法および構造ジョインアルゴリズムは、併せて使用される（文献「Shurug Al-Khalifa,H.V.Jagadish,Nick Koudas,Jignesh M.Patel,Divesh Srivastava, and Yuqing Wu著、Structual Joins:A Primitive for Efficient XML Query Pattern Matching、In Proc. ICDE,2002.」）。これにより、木構造の全探索を回避することができ、検索処理が高速化される。
【００６２】
図７に示す範囲ラベル付け手法とは、ＸＭＬ木中のノードに前置順と後置順の順序関係を保存したラベルを付与することにより、ＸＭＬ木内のノード間の先祖子孫関係および親子関係をラベルの比較のみで判定可能にする処理である。なお、図７では、前置順、後置順に加えてルートノードからの深さも付与してある。更新操作に備え、ノード間に間隔を空けて数えている。これにより、データベースヘの先祖子孫および親子関係を指定した問合せを処理する際に、コストのかかる親子関係のリンクナヴィゲーションを回避することが可能となる。
【００６３】
図７は、図２１のＸＭＬ木に範囲ラベルを付与する一例である。図７では、任意の節点v=(ai,bj),w=(ak,bl)の間に、ai<akかつbj>blの関係が成り立つときのみuは２wの先祖となっている。この性質を利用すると、ＸＰａｔｈによる、//Book//personのような問合せを評価する際に、大量のＸＭＬデータの節点の親子関係リンクを辿らなくても節点間の先祖子孫関係が分かるので、Bookという名前を持つ節点集合とpersonという名前を持つ節点集合をB＋tree等の高速な索引を用いて集め、判定条件を用いて先祖子孫関係を持つもののみをとりだすことによって問合せの結果を得ることができる。
【００６４】
この際の、Bookノードリストとpersonノードリストとのジョインオペレーションは構造ジョインと呼ばれ、既存のＲＤＢＭＳで実装されているアルゴリズムは最適でないことが分かっており、高速な構造ジョインアルゴリズムが提案されている（文献「Shurug Al-Khalifa,H.V.Jagadish,Nick Koudas,Jignesh M.Patel,Divesh Srivastava, and Yuqing Wu著、Structual Joins:A Primitive for Efficient XML Query Pattern Matching、In Proc. ICDE,2002.」）。ノードのラベルに深さも付与することによって、親子関係も判定可能になるため、親子関係を指定する問合せも処理可能である。
【００６５】
なお、構造ジョインアルゴリズムは、ＸＰａｔｈのパスの長さが長くなる場合には効率的ではない。例えば、図２５において、線の箇所では、前記構造ジョインを行い、問合せを処理する。図２４（１）に対応する図２５の問合せ木の場合は、３回の構造ジョインを実行する必要がある。この３回に及ぶ構造ジョインはデータが大規模な場合非常にコストが高い。
【００６６】
図１４（詳細は後記）は、範囲ラベルを付与した統計情報付きストロングデータガイドをＳＡＸイベントからワンパスで構築する手順を示す。全体の流れは第１実施形態と同様であるが、範囲ラベルを同時に付与している点および、キューをストロングデータガイド中の各ノードに保持しキュー操作を伴う点が違う。以下、図１４の処理の概要を示す。
【００６７】
ストロングデータガイドをＸＭＬデータのワンパスで構築し統計情報を計算するのと同時に、範囲ラベルを各ノードに付与する。今、ストロングデータガイド中のノードをcで表し、cが持つキューを、Ｑｃで表す。Ｑｃには次の操作が実行できる。
１．enq（left,right）：Ｑｃの最後に（left,right）の範囲ラベルを追加する。
２．enqL（left）：Ｑｃの最後に（left,NULL）の範囲ラベルを追加する。
３．enqR（right）：Ｑｃ中の範囲ラベルの中で、最後にrightがNULLである範囲ラベルのNULLをrightと入れ替える。
【００６８】
範囲ラベルをＸＭＬデータの各ノードに付与するには、ＳＡＸイベントに対し、範囲ラベルの前置順、後置順用の内部カウンタを用意し、開始終了イベント、属性、およびテキストノードが現れるたびに、それぞれ内部カウンタの値をプラスしながら、イベントの時点でのカウンタの値をそのイベントに対応するＸＭＬ木中のノードの範囲ラベルとして付与すればよい。ストロングデータガイドを構築すると同時に範囲ラベルを付与するには、各ノードに対して、範囲ラベルが確定した時点で、ストロングデータガイド中でパスが一致するノードのキューに範囲ラベルを付与する。
【００６９】
以下、本発明の方式が、従来の方式に比べ、アクセス量を削減できることを具体的に示す。
【００７０】
以下、２種類の索引情報（データガイド索引およびタグ索引）のいずれかを選択して、ＸＭＬデータにアクセスするケースを説明する。例えば、図２０のＸＭＬデータに対して、//authors//personという問合せを処理することを考える。図２０のＸＭＬデータは、図２１のように木構造表現できる。
【００７１】
まず、データガイド索引を活用する場合を説明する。ストロングデータガイドは図３のようになる。このストロングデータガイドを利用して今、図８のような、データガイド索引を構築したとする。データガイド索引は、データガイドの各データガイドノードに対応するＸＭＬノードが、文書順に取得できるような索引である。
【００７２】
まずストロングデータガイドに対してＸＰａｔｈ処理を行うことにより、図６（ｂ）の二つの実体中間木のアウトプットノードを返す。これらを文書順で返すために、マージ処理を行って、図６（ｃ）が結果として返される。ここで行った処理は、以下のようになる。
１．１回のデータガイド処理
２．２回のＤＧ索引からの、ＸＭＬノードヘのアクセス
３．ＸＭＬノード列のマージ処理
【００７３】
以上説明したデータガイド索引では、ストロングデータガイドを処理した後、ディスクから実際のノードを読み取る際に、複数箇所にマッチしたノードの識別子を頼りに読み込んだ場合に、複数のディスク位置からノードを読む必要があり、さらにそれらのノードを結果出力のためにマージする必要があるため、効率が悪い場合があった。
【００７４】
次に、タグ索引を活用する場合を説明する。図２６は、図２０のＸＭＬデータに対して、構築したタグ索引である。タグ索引とは、タグ名に対応するＸＭＬノードが文書順に取得できるような索引である。その場合には、ＸＰａｔｈのアウトプットノードであるpersonタグで、タグ索引を検索することによって、図６（ｃ）のノードを得ることができる。
【００７５】
この後、データガイド処理を行い、タグ索引検索の結果が、データガイド処理の結果にマッチするかフィルタ処理を行うことによって、図６（ｃ）の正しい結果を得ることができる（今回は、タグ索引検索の結果すべてが、データガイド処理の結果にマッチする）。この方法では、以下の処理によって、データガイド索引と同等の結果を得ることができる。
１．１回のタグ索引からの、ＸＭＬノードヘのアクセス
２．１回のデータガイド処理
３．１回のＸＭＬノード列へのフィルタ処理
【００７６】
処理コストに着目して、データガイド索引とタグ索引とを比較する。マージ処理のほうがフィルタ処理よりもコストが高く、また、索引アクセスもデータガイド索引が２回なのに対して、タグ索引は１回であるため、フィルタ処理のほうがマージ処理よりも高速になる。本実施形態の提案方式では、アクセス量に着目して要約情報の索引情報を選択することにより、最適な索引情報であるタグ索引を選択する。しかし、既存技術（非特許文献２）では、最適ではないデータガイド索引をそのまま選択してしまうことにより、処理が遅くなってしまう。
【００７７】
以上説明した各実施形態は、ＸＭＬデータに対して、統計情報を付与したＸＭＬデータの要約情報を生成する手段および統計情報付与装置と、その統計情報の付与された要約情報を用いて、最適なＸＭＬデータに対する索引を選択し高速なＸＰａｔｈ処理を可能とする手段および処理装置である。
【００７８】
各実施形態は、ＸＭＬデータベースにおいて、ＸＰａｔｈによる問合せ処理を高速化する要約情報技術に関する。特に、ＸＰａｔｈ式が要約情報中で複数箇所にマッチした場合に、あらかじめ要約情報に統計情報を付与しておくことにより、最適なデータアクセス方法を選択する技術に関する。
【００７９】
ＸＰａｔｈの探索において、探索木（図２１のＸＭＬ木）の共通部分をまとめたストロングデータガイド（図３）を利用するときに、アクセス方法を複数用意し最適と思われるアクセス方法を利用するのが主旨である。最適判断のために、データガイド統計情報やタグ統計情報を用いる。
【００８０】
以上説明した本発明は、以下のようにその趣旨を逸脱しない範囲で広く変形実施することができる。
【００８１】
各実施形態の構成は、コンピュータで使用可能なソフトウェアとして実施できる。プログラムは、ハードディスク、ＣＤ−ＲＯＭ、光記憶装置または磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。
【００８２】
以下、各フローチャートを説明する。なお、フローチャートおよびその説明において、以下の記号を用いる。「:」は、初期化処理を示し、「A:B」は、変数Aの値をBとして初期化することを意味する。「｜」または「;」は、命令文と命令文との区切りを示し、「A:3｜B:2」は、変数Aの値を3として初期化した後に、変数Bの値を2として初期化することを意味する。
【００８３】
図１０は、ストロングデータガイドとＸＭＬデータの統計情報をＳＡＸイベントからワンパスで構築する方法を示すフローチャートである。
【００８４】
要約情報作成手段１２は、初期化処理として、「XMLデータパース開始｜{s_i},(1≦i≦n):SAXイベント｜n:SAXイベントの個数｜SD:ストロングデータガイドを初期化｜TagStat:統計情報を初期化｜c:現在DGノード｜c:SDのルートノード」を実行する（Ｓ１０１）。要約情報作成手段１２は、ループ変数iを1からnまで変化させつつ、ループ処理を行う（Ｓ１０２、Ｓ１０３、Ｓ１０５）。要約情報作成手段１２は、s_iの型に応じた処理(処理A)を呼び出す（Ｓ１０４）。要約情報作成手段１２は、SDを出力する（Ｓ１０６）。
【００８５】
図１１は、図１０における処理Ａを示すフローチャートである。
【００８６】
要約情報作成手段１２は、分岐条件「s_iが開始イベント」を満たすか否か判定し（Ｓ２０１）、満たす場合（Ｓ２０１，Yes）はＳ２１０を実行し、満たさない場合（Ｓ２０１，No）はＳ２０２を実行する。要約情報作成手段１２は、分岐条件「s_iが終了イベント」を満たすか否か判定し（Ｓ２０２）、満たす場合（Ｓ２０２，Yes）はＳ２０３を実行し、満たさない場合（Ｓ２０２，No）は、呼び出し元に戻る。要約情報作成手段１２は、cをcの親DGノードに移動する（Ｓ２０３）。
【００８７】
要約情報作成手段１２は、初期化処理として、「TAG:開始タグ名」を実行する（Ｓ２１０）。要約情報作成手段１２は、DGノード処理｜(処理DG)を呼び出す（Ｓ２１１）。要約情報作成手段１２は、タグ統計惰報のTAGの値に1追加する（Ｓ２１２）。要約情報作成手段１２は、分岐条件「s_iが属性を持つ」を満たすか否か判定し（Ｓ２１３）、満たす場合（Ｓ２１３，Yes）はＳ２１４を実行し、満たさない場合（Ｓ２１３，No）は呼び出し元に戻る。要約情報作成手段１２は、属性DG子ノード追加処理(処理A')を呼び出す（Ｓ２１４）。
【００８８】
図１２は、図１１における処理ＤＧを示すフローチャートである。
【００８９】
要約情報作成手段１２は、分岐条件「cにTAGを前とする子DGノードが存在」を満たすか否か判定し（Ｓ３０１）、満たす場合（Ｓ３０１，Yes）はＳ３０３を実行し、満たさない場合（Ｓ３０１，No）はＳ３０２を実行する。要約情報作成手段１２は、cにTAGを名前とする子DGノードを追加する（Ｓ３０２）。要約情報作成手段１２は、cをTAG名の子DGノードに移動する（Ｓ３０３）。要約情報作成手段１２は、cのカウンタを1追加する（Ｓ３０４）。
【００９０】
図１３は、図１１における処理Ａ’を示すフローチャートである。
【００９１】
要約情報作成手段１２は、初期化処理として、「{a_i},(1≦i≦m):属性名｜m:属性の個数」を実行する（Ｓ４０１）。要約情報作成手段１２は、ループ変数iを1からmまで変化させつつ、ループ処理を行う（Ｓ４０２、Ｓ４０３、Ｓ４０７）。要約情報作成手段１２は、分岐条件「Cに@a_iを名前とする子DGノードが存在」を満たすか否か判定し（Ｓ４０４）、満たす場合（Ｓ４０４，Yes）はＳ４０６を実行し、満たさない場合（Ｓ４０４，No）はＳ４０５を実行する。要約情報作成手段１２は、@a_iを名前とする子DGノードをcに追加する（Ｓ４０５）。要約情報作成手段１２は、@a_i子ノードのカウンタを１追加する（Ｓ４０６）。
【００９２】
図１４は、範囲ラベルを付与した統計情報付きストロングデータガイドをＳＡＸイベントからワンパスで構築する方法を示すフローチャートである。
【００９３】
要約情報作成手段１２は、初期化処理として、「XMLデータパース開始｜{s_i},(1≦i≦n):SAXイベント｜n:SAXイベントの個数｜left=1;right=1｜l,r:ローカル変数,範囲ラベルのためのカウンタ｜ISD:各ノードに範囲ラベルを格納可能なデータ構造としてストロングデータガイドを初期化｜c:ISD中の現在DGノードcを、SDのルートノードに設定｜Q_c:cノードが持つ範囲ラベルを格納するキュー」を実行する（Ｓ５０１）。要約情報作成手段１２は、ループ変数iを1からnまで変化させつつ、ループ処理を行う（Ｓ５０２、Ｓ５０３、Ｓ５０５）。要約情報作成手段１２は、s_iの型に応じてストロングデータガイドを構築し、範囲ラベルを付与する(処理B)を呼び出す（Ｓ５０４）。要約情報作成手段１２は、ISDを出力する（Ｓ５０６）。
【００９４】
図１５は、図１４における処理Ｂを示すフローチャートである。
【００９５】
要約情報作成手段１２は、分岐条件「s_iが開始イベント」を満たすか否か判定し（Ｓ６０１）、満たす場合（Ｓ６０１，Yes）はＳ６０２を実行し、満たさない場合（Ｓ６０１，No）はＳ６０３を実行する。要約情報作成手段１２は、初期化処理として、「l=left++」を実行する（Ｓ６０２）。要約情報作成手段１２は、分岐条件「s_iが終了イベント」を満たすか否か判定し（Ｓ６０３）、満たす場合（Ｓ６０３，Yes）はＳ６０４を実行し、満たさない場合（Ｓ６０３，No）はＳ６０６を実行する。要約情報作成手段１２は、enqR(right++)を呼び出す（Ｓ６０４）。要約情報作成手段１２は、cをcの親DGノードに移動する（Ｓ６０５）。
【００９６】
要約情報作成手段１２は、分岐条件「s_iがテキストノードイベント」を満たすか否か判定し（Ｓ６０６）、満たす場合（Ｓ６０６，Yes）はＳ６０７を実行し、満たさない場合（Ｓ６０６，No）は呼び出し元に戻る。要約情報作成手段１２は、初期化処理として、「l=left++｜r=right++」を実行する（Ｓ６０７）。要約情報作成手段１２は、テキストノードの範囲ラベルを(l,r)で設定し、二次記憶装置２８に格納する（Ｓ６０８）。
【００９７】
要約情報作成手段１２は、初期化処理として、「TAG:開始タグ名」を実行する（Ｓ６１０）。要約情報作成手段１２は、DGノード処理(処理DG)を呼び出す（Ｓ６１１）。要約情報作成手段１２は、タグ統計情報のTAGの値に1追加する（Ｓ６１２）。要約情報作成手段１２は、分岐条件「s_iが属性を持つ」を満たすか否か判定し（Ｓ６１３）、満たす場合（Ｓ６１３，Yes）はＳ６１４を実行し、満たさない場合（Ｓ６１３，No）はＳ６１５を実行する。要約情報作成手段１２は、属性子ノード追加処理(処理B')を呼び出す（Ｓ６１４）。要約情報作成手段１２は、enqL(l)を呼び出す（Ｓ６１５）。
【００９８】
図１６は、図１５における処理Ｂ’を示すフローチャートである。
【００９９】
要約情報作成手段１２は、初期化処理として、「{a_i},(1≦i≦m):属性名｜m:属性の個数」を実行する（Ｓ７０１）。要約情報作成手段１２は、ループ変数iを1からmまで変化させつつ、ループ処理を行う（Ｓ７０２、Ｓ７０３、Ｓ７０９）。要約情報作成手段１２は、初期化処理として、「l',r':ローカル変数」を実行する（Ｓ７０４）。
【０１００】
要約情報作成手段１２は、分岐条件「l'=left++｜r'=right++｜cに@a_iを名前とする子DGノードが存在」を満たすか否か判定し（Ｓ７０５）、満たす場合（Ｓ７０５，Yes）はＳ７０７を実行し、満たさない場合（Ｓ７０５，No）はＳ７０６を実行する。要約情報作成手段１２は、@a_iを名前とする子DGノードをcに追加する（Ｓ７０６）。要約情報作成手段１２は、@a_i子DGノードに対してenq(l',r')を行う（Ｓ７０７）。要約情報作成手段１２は、@a_i子DGノードのカウンタを１追加する（Ｓ７０８）。
【０１０１】
図１７は、ＸＰａｔｈ最適化処理を示すフローチャートである。
【０１０２】
アクセス選択手段２０は、構造部のそれぞれのシングルパスに対して、データガイド処理を行い、アウトプットノード列を取得し、アウトプットノード列の統計情報を取得する(処理C)を呼び出す（Ｓ８０１）。アクセス選択手段２０は、アウトプットノード列の統計情報を利用して最適なアクセス手段を選択する(処理D)を呼び出す（Ｓ８０２）。アクセス選択手段２０は、最適なアクセス手段を用いて結果ノードを取得する（Ｓ８０３）。
【０１０３】
図１８は、図１７における処理Ｃ（生成したＸＭＬデータの要約情報に対してＸＰａｔｈ処理を行い、アウトプットノード列を得、アウトプットノード列の統計情報の計算）を示すフローチャートである。
【０１０４】
アクセス選択手段２０は、初期化処理として、「ISD:XMLデータの要約情報｜Q:XPathによる問合せ」を実行する（Ｓ９０１）。アクセス選択手段２０は、ISDをXMLデータとみなし,既存手法によりQによるXPath処理を実行し、その結果として、アウトプットノード列と,それぞれのノードの統計情報を返す（Ｓ９０２）。アクセス選択手段２０は、アウトプットノード列のカウンタを加えてアウトプットノード列の統計情報とする（Ｓ９０３）。
【０１０５】
図１９は、図１７における処理Ｄ（アウトプットノード列の統計情報を利用して、最適なアクセス手段を選択する方法）を示すフローチャートである。
【０１０６】
アクセス選択手段２０は、初期化処理として、「C_o:アウトプットノード列のカウンタ｜TAG:問い合わせのアウトプットノードタグ｜k:事前学習あるいは、ユーザの指定により得られる環境依存の判定計数」を実行する（Ｓ１００１）。アクセス選択手段２０は、初期化処理として、「C_tag:タグ統計情報から得たTAGのカウンタ」を実行する（Ｓ１００２）。
【０１０７】
アクセス選択手段２０は、分岐条件「C_tag - C_oがkより小さい」を満たすか否か判定し（Ｓ１００３）、満たす場合（Ｓ１００３，Yes）はＳ１０１０を実行し、満たさない場合（Ｓ１００３，No）はＳ１００４を実行する。アクセス選択手段２０は、アクセスメソッドとして、ＤＧ（データガイド）索引を選択する（Ｓ１００４）。アクセス選択手段２０は、アクセスメソッドとして、タグ索引を選択する（Ｓ１０１０）。アクセス選択手段２０は、選択したアクセスメソッドを返す（Ｓ１００５）。
【図面の簡単な説明】
【０１０８】
【図１】本発明の一実施形態に関する既存技術と提案技術の比較を示す説明図である。
【図２】本発明の第１実施形態に関するＸＰａｔｈ式処理装置を示す構成図である。
【図３】本発明の一実施形態に関する図２１のＸＭＬ木から構築したストロングデータガイドの例を示すグラフである。
【図４】本発明の一実施形態に関する図２１のＸＭＬ木から構築した統計情報付きストロングデータガイド（ＤＧ統計情報）の例を示すグラフである。
【図５】本発明の一実施形態に関する図２１のタグ統計情報の例を示す説明図である。
【図６】本発明の一実施形態に関する統計情報の作成例を示す説明図である。
【図７】本発明の一実施形態に関する図２１の木構造の各ノードに、範囲ラベルおよび根からの深さを付与した例を示すグラフである。
【図８】本発明の一実施形態に関する図２１のＸＭＬ木に、ＤＧ索引を構築した例を示す説明図である。
【図９】本発明の第２実施形態に関するＸＰａｔｈ式処理装置を示す構成図である。
【図１０】本発明の第１実施形態に関するストロングデータガイドとＸＭＬデータの統計情報をＳＡＸイベントからワンパスで構築する方法を示すフローチャートである。
【図１１】本発明の第１実施形態に関する図１０における処理Ａを示すフローチャートである。
【図１２】本発明の第１実施形態に関する図１１における処理ＤＧを示すフローチャートである。
【図１３】本発明の第１実施形態に関する図１１における処理Ａ’を示すフローチャートである。
【図１４】本発明の第２実施形態に関する範囲ラベルを付与した統計情報付きストロングデータガイドをＳＡＸイベントからワンパスで構築する方法を示すフローチャートである。
【図１５】本発明の第２実施形態に関する図１４における処理Ｂを示すフローチャートである。
【図１６】本発明の第２実施形態に関する図１５における処理Ｂ’を示すフローチャートである。
【図１７】本発明の一実施形態に関するＸＰａｔｈ最適化処理を示すフローチャートである。
【図１８】本発明の一実施形態に関する図１７における処理Ｃ（生成したＸＭＬデータの要約情報に対してＸＰａｔｈ処理を行い、アウトプットノード列を得、アウトプットノード列の統計情報の計算）を示すフローチャートである。
【図１９】本発明の一実施形態に関する図１７における処理Ｄ（アウトプットノード列の統計情報を利用して、最適なアクセス手段を選択する方法）を示すフローチャートである。
【図２０】本発明の一実施形態に関するＸＭＬデータの具体例を示す説明図である。
【図２１】本発明の一実施形態に関する図２０のＸＭＬデータの木構造（ＸＭＬ木）を示すグラフである。
【図２２】本発明の一実施形態に関する図２０のＸＭＬデータから生成したＳＡＸイベントシーケンスを示す説明図である。
【図２３】本発明の一実施形態に関する図２０に対するＸＰａｔｈによる問合せの具体例（分岐を含む場合）を示す説明図である。
【図２４】本発明の一実施形態に関する図２０に対するＸＰａｔｈによる問合せの具体例（シングルパスのみの場合）を示す説明図である。
【図２５】本発明の一実施形態に関する図２４のＸＰａｔｈによる問合せの問合せ木を示すグラフである。
【図２６】本発明の一実施形態に関する図２１のＸＭＬ木に、タグ索引を構築した例を示す説明図である。
【符号の説明】
【０１０９】
１０    ＸＭＬデータ入力手段
１２    要約情報作成手段
１４    問合せ解析手段
１６    問合せ処理手段
１８    中間要約木列作成手段
２０    アクセス選択手段
２２    ディスク管理手段
２４    イベントシーケンス手段
２６    結果生成手段
２８    二次記憶装置
【図１】
0004649339.tif 000002
【図２】
0004649339.tif 000003
【図３】
0004649339.tif 000004
【図４】
0004649339.tif 000005
【図５】
0004649339.tif 000006
【図６】
0004649339.tif 000007
【図７】
0004649339.tif 000008
【図８】
0004649339.tif 000009
【図９】
0004649339.tif 000010
【図１０】
0004649339.tif 000011
【図１１】
0004649339.tif 000012
【図１２】
0004649339.tif 000013
【図１３】
0004649339.tif 000014
【図１４】
0004649339.tif 000015
【図１５】
0004649339.tif 000016
【図１６】
0004649339.tif 000017
【図１７】
0004649339.tif 000018
【図１８】
0004649339.tif 000019
【図１９】
0004649339.tif 000020
【図２０】
0004649339.tif 000021
【図２１】
0004649339.tif 000022
【図２２】
0004649339.tif 000023
【図２３】
0004649339.tif 000024
【図２４】
0004649339.tif 000025
【図２５】
0004649339.tif 000026
【図２６】
0004649339.tif 000027