図面 (/)

技術 構造化文書格納装置、構造化文書格納方法及び構造化文書格納プログラム

出願人 株式会社JVCケンウッド
発明者 浅見知弘
出願日 2010年9月28日 (8年9ヶ月経過) 出願番号 2010-216420
公開日 2012年4月12日 (7年3ヶ月経過) 公開番号 2012-073706
状態 未査定
技術分野 検索装置 計算機におけるファイル管理 文書処理装置 機械翻訳
主要キーワード 山括弧 ノード型 子孫関係 一つ下位 先祖ノード 処理対象ノード ノード値 親エレメント
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2012年4月12日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (19)

課題

構造化文書を構成するノード間の先祖子孫関係高速判別することを可能とする。

解決手段

XML解析部101は、XML文書を解析して、そのXML文書のノードに関する情報を出力する。格納部102は、XML文書のノードに関する情報中の処理対象ノード出現順を表す順番号と、処理対象ノードより後に出現する情報中のノードのうち処理対象ノードの子孫ノードを除いて最も先に出現するノードの順番号である次番号とを少なくとも決定し、処理対象ノードのノード型等と共にノードテーブル2に格納する。検索部105には格納情報中の比較元ノードの順番号が比較先ノードの順番号より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断する子孫ノード検索手段105gを有する。

概要

背景

XMLに代表される構造化文書を格納し、格納した構造化文書を構成する要素を高速検索する方法として、構造化文書を表形式のテーブルから成るリレーショナルデータベースに格納する方法がある。

例えば、特許文献1には、XMLデータの各エレメントの内容及び属性値項目と、データ間のリンク関係をテーブルに格納するとともに、データの出現順に順番号割り当て、データの順番号と親エレメントの順番号をテーブルに格納するXMLデータの格納方法が開示されている。この特許文献1記載のXMLデータ、すなわち構造化文書の格納方法では、テーブルに格納されているエレメントの順番号及びそのエレメントの親エレメントの順番号により、エレメント間親子関係を高速に判別できるとともに、データ間の階層関係についても判別可能である。

概要

構造化文書を構成するノード間の先祖子孫関係を高速に判別することを可能とする。XML解析部101は、XML文書を解析して、そのXML文書のノードに関する情報を出力する。格納部102は、XML文書のノードに関する情報中の処理対象ノードの出現順を表す順番号と、処理対象ノードより後に出現する情報中のノードのうち処理対象ノードの子孫ノードを除いて最も先に出現するノードの順番号である次番号とを少なくとも決定し、処理対象ノードのノード型等と共にノードテーブル2に格納する。検索部105には格納情報中の比較元ノードの順番号が比較先ノードの順番号より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断する子孫ノード検索手段105gを有する。

目的

あるいは、エレメント間の親子関係を順次判別しながらエレメントを辿ることにより先祖・子孫関係を判別する方法も考えられるが、その方法では高速に判別することはできないことが課題である

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

構造化文書解析して、その構造化文書に含まれるノードに関する情報を出力する構造化文書解析手段と、前記構造化文書のノードに関する情報が格納されるノードテーブルを有する記憶手段と、前記構造化文書解析手段から出力された前記構造化文書のノードに関する情報中の対象ノード出現順を表す順番号を決定すると共に、前記対象ノードより後に前記情報中に出現するノードのうち前記対象ノードの子孫ノードを除いて最も先に出現するノードの前記順番号を前記対象ノードに付す次番号として決定し、前記対象ノードに関する情報と共に前記順番号と前記次番号とを前記ノードテーブルに格納する格納手段と、供給される検索手順リストに従い、前記ノードテーブルの格納情報を参照して検索結果を出力する検索手段とを備え、前記検索手段は、前記格納情報中の比較元ノードの前記順番号が比較先ノードの前記順番号より大きく、かつ、前記比較元ノードの前記順番号が前記比較先ノードの前記次番号より小さいときに、前記比較元ノードが前記比較先ノードの子孫ノードであると判断する子孫ノード検索手段を有することを特徴とする構造化文書格納装置

請求項2

前記構造化文書は、出現順が定義される第1のノードと、出現順が定義されない第2のノードとを含み、前記格納手段は、前記第1のノードの前記順番号に、その第1のノードの出現順に2ずつ増加する0以上の整数割り当て、前記第2のノードの前記順番号に、その第2のノードの一つ上位のノードである親ノードの前記順番号に1を加算した値を割り当て、前記子孫ノード検索手段は、前記比較元ノードの前記順番号が前記比較先ノードの前記順番号に1を加算した値より大きく、かつ、前記比較元ノードの前記順番号が前記比較先ノードの前記次番号より小さいときに、前記比較元ノードが前記比較先ノードの子孫ノードであると判断することを特徴とする請求項1記載の構造化文書格納装置。

請求項3

構造化文書を解析して、その構造化文書に含まれるノードに関する情報を出力する構造化文書解析ステップと、前記構造化文書解析ステップにより解析して得られた前記構造化文書のノードに関する情報中の対象ノードの出現順を表す順番号を決定すると共に、前記対象ノードより後に前記情報中に出現するノードのうち前記対象ノードの子孫ノードを除いて最も先に出現するノードの前記順番号を前記対象ノードに付す次番号として決定し、前記対象ノードに関する情報と共に前記順番号と前記次番号とを、前記構造化文書のノードに関する情報が格納されるノードテーブルに格納する格納ステップと、供給される検索手順リストに従い、前記ノードテーブルの格納情報を参照して検索結果を出力する検索ステップとを備え、前記検索ステップは、前記格納情報中の比較元ノードの前記順番号が比較先ノードの前記順番号より大きく、かつ、前記比較元ノードの前記順番号が前記比較先ノードの前記次番号より小さいときに、前記比較元ノードが前記比較先ノードの子孫ノードであると判断する子孫ノード検索ステップを含むことを特徴とする構造化文書格納方法

請求項4

前記構造化文書は、出現順が定義される第1のノードと、出現順が定義されない第2のノードとを含み、前記格納ステップは、前記第1のノードの前記順番号に、その第1のノードの出現順に2ずつ増加する0以上の整数を割り当て、前記第2のノードの前記順番号に、その第2のノードの一つ上位のノードである親ノードの前記順番号に1を加算した値を割り当て、前記子孫ノード検索ステップは、前記比較元ノードの前記順番号が前記比較先ノードの前記順番号に1を加算した値より大きく、かつ、前記比較元ノードの前記順番号が前記比較先ノードの前記次番号より小さいときに、前記比較元ノードが前記比較先ノードの子孫ノードであると判断することを特徴とする請求項3記載の構造化文書格納方法。

請求項5

コンピュータに、構造化文書を解析して、その構造化文書に含まれるノードに関する情報を出力する構造化文書解析ステップと、前記構造化文書解析ステップにより解析して得られた前記構造化文書のノードに関する情報中の対象ノードの出現順を表す順番号を決定すると共に、前記対象ノードより後に前記情報中に出現するノードのうち前記対象ノードの子孫ノードを除いて最も先に出現するノードの前記順番号を前記対象ノードに付す次番号として決定し、前記対象ノードに関する情報と共に前記順番号と前記次番号とを、前記構造化文書のノードに関する情報が格納されるノードテーブルに格納させる格納ステップと、供給される検索手順リストに従い、前記ノードテーブルの格納情報を参照して検索結果を出力する検索ステップとを実行させ、前記検索ステップは、前記格納情報中の比較元ノードの前記順番号が比較先ノードの前記順番号より大きく、かつ、前記比較元ノードの前記順番号が前記比較先ノードの前記次番号より小さいときに、前記比較元ノードが前記比較先ノードの子孫ノードであると判断する子孫ノード検索ステップを含むことを特徴とする構造化文書格納プログラム

請求項6

前記構造化文書は、出現順が定義される第1のノードと、出現順が定義されない第2のノードとを含み、前記格納ステップは、前記第1のノードの前記順番号に、その第1のノードの出現順に2ずつ増加する0以上の整数を割り当て、前記第2のノードの前記順番号に、その第2のノードの一つ上位のノードである親ノードの前記順番号に1を加算した値を割り当て、前記子孫ノード検索ステップは、前記比較元ノードの前記順番号が前記比較先ノードの前記順番号に1を加算した値より大きく、かつ、前記比較元ノードの前記順番号が前記比較先ノードの前記次番号より小さいときに、前記比較元ノードが前記比較先ノードの子孫ノードであると判断することを特徴とする請求項5記載の構造化文書格納プログラム。

技術分野

0001

本発明は構造化文書格納装置構造化文書格納方法及び構造化文書格納プログラム係り、特にXML(拡張可能マーク付け言語;Extensible Markup Language)に代表される構造化文書を格納する構造化文書格納装置、構造化文書格納方法及び構造化文書格納プログラムに関する。

背景技術

0002

XMLに代表される構造化文書を格納し、格納した構造化文書を構成する要素を高速検索する方法として、構造化文書を表形式のテーブルから成るリレーショナルデータベースに格納する方法がある。

0003

例えば、特許文献1には、XMLデータの各エレメントの内容及び属性値項目と、データ間のリンク関係をテーブルに格納するとともに、データの出現順に順番号割り当て、データの順番号と親エレメントの順番号をテーブルに格納するXMLデータの格納方法が開示されている。この特許文献1記載のXMLデータ、すなわち構造化文書の格納方法では、テーブルに格納されているエレメントの順番号及びそのエレメントの親エレメントの順番号により、エレメント間親子関係を高速に判別できるとともに、データ間の階層関係についても判別可能である。

先行技術

0004

特許第3560043号公報

発明が解決しようとする課題

0005

しかしながら、特許文献1に記載の構造化文書の格納方法では、エレメント間の先祖子孫関係を即座に判別することができない。あるいは、エレメント間の親子関係を順次判別しながらエレメントを辿ることにより先祖・子孫関係を判別する方法も考えられるが、その方法では高速に判別することはできないことが課題である。

0006

本発明は上記の点に鑑みなされたもので、構造化文書を構成するノード間の先祖・子孫関係を高速に判別することを可能とする構造化文書格納装置、構造化文書格納方法及び構造化文書格納プログラムを提供することを目的とする。

課題を解決するための手段

0007

上記目的を達成するため、第1の発明の構造化文書格納装置は、構造化文書を解析して、その構造化文書に含まれるノードに関する情報を出力する構造化文書解析手段と、構造化文書のノードに関する情報が格納されるノードテーブルを有する記憶手段と、構造化文書解析手段から出力された構造化文書のノードに関する情報中の対象ノードの出現順を表す順番号を決定すると共に、対象ノードより後に情報中に出現するノードのうち対象ノードの子孫ノードを除いて最も先に出現するノードの順番号を対象ノードに付す次番号として決定し、対象ノードに関する情報と共に順番号と次番号とをノードテーブルに格納する格納手段と、供給される検索手順リストに従い、ノードテーブルの格納情報を参照して検索結果を出力する検索手段とを備え、検索手段は、格納情報中の比較元ノードの順番号が比較先ノードの順番号より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断する子孫ノード検索手段を有することを特徴とする。

0008

また、上記の目的を達成するため、第2の発明の構造化文書格納装置は、第1の発明における上記構造化文書が、出現順が定義される第1のノードと、出現順が定義されない第2のノードとを含み、格納手段が、第1のノードの順番号に、その第1のノードの出現順に2ずつ増加する0以上の整数を割り当て、第2のノードの順番号に、その第2のノードの一つ上位のノードである親ノードの順番号に1を加算した値を割り当て、子孫ノード検索手段が、比較元ノードの順番号が比較先ノードの順番号に1を加算した値より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断することを特徴とする。

0009

また、上記の目的を達成するため、第3の発明の構造化文書格納方法は、構造化文書を解析して、その構造化文書に含まれるノードに関する情報を出力する構造化文書解析ステップと、構造化文書解析ステップにより解析して得られた構造化文書のノードに関する情報中の対象ノードの出現順を表す順番号を決定すると共に、対象ノードより後に情報中に出現するノードのうち対象ノードの子孫ノードを除いて最も先に出現するノードの順番号を対象ノードに付す次番号として決定し、対象ノードに関する情報と共に順番号と次番号とを、構造化文書のノードに関する情報が格納されるノードテーブルに格納する格納ステップと、供給される検索手順リストに従い、ノードテーブルの格納情報を参照して検索結果を出力する検索ステップとを備え、検索ステップは、格納情報中の比較元ノードの順番号が比較先ノードの順番号より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断する子孫ノード検索ステップを含むことを特徴とする。

0010

また、上記の目的を達成するため、第4の発明の構造化文書格納方法は、第3の発明における構造化文書が、出現順が定義される第1のノードと、出現順が定義されない第2のノードとを含み、格納ステップが、第1のノードの順番号に、その第1のノードの出現順に2ずつ増加する0以上の整数を割り当て、第2のノードの順番号に、その第2のノードの一つ上位のノードである親ノードの順番号に1を加算した値を割り当て、子孫ノード検索ステップが、比較元ノードの順番号が比較先ノードの順番号に1を加算した値より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断することを特徴とする。

0011

また、上記の目的を達成するため、第5の発明の構造化文書格納プログラムは、コンピュータに、第3の発明の構造化文書格納方法における構造化文書解析ステップ、格納ステップ、及び子孫ノード検索ステップを含む検索ステップを実行させることを特徴とする。

0012

更に、上記の目的を達成するため、第6の発明の構造化文書格納プログラムは、第5の発明における構造化文書が、出現順が定義される第1のノードと、出現順が定義されない第2のノードとを含み、格納ステップが、第1のノードの順番号に、その第1のノードの出現順に2ずつ増加する0以上の整数を割り当て、第2のノードの順番号に、その第2のノードの一つ上位のノードである親ノードの順番号に1を加算した値を割り当て、上記子孫ノード検索手段が、比較元ノードの順番号が比較先ノードの順番号に1を加算した値より大きく、かつ、比較元ノードの順番号が比較先ノードの次番号より小さいときに、比較元ノードが比較先ノードの子孫ノードであると判断する構成である。

発明の効果

0013

本発明によれば、格納された構造化文書のノード間の先祖・子孫関係を検索する手順を従来に比べて短時間で行うことができ、その結果、従来に比べて構造化文書の検索を高速に行うことができる。

図面の簡単な説明

0014

本発明の構造化文書格納装置の一実施の形態のブロック図である。
図1中のリレーショナルデータベースにおけるノードテーブルの構成の一例を示す図である。
図2のノードテーブル中のノード型の一覧の一例を示す図である。
図1の構造化文書格納装置の格納部における文書格納処理を説明するフローチャートである。
図4中のノード格納処理の詳細を説明するフローチャートである。
図5中の属性格納処理の詳細を説明するフローチャートである。
XML文書の一例を示す図である。
図7のXML文書を格納したノードテーブル例を示す図である。
図1中のXQuery解析部が生成する検索手順の種別の一覧を示す図である。
図1中の検索部における検索処理を説明するフローチャートである。
図10中の検索手順実行処理の詳細を説明するフローチャートである。
図11中の子孫ノード検索処理の詳細を説明するフローチャートである。
図11中の先祖ノード検索処理の詳細を説明するフローチャートである。
図10中のサブツリーデータ抽出処理の詳細を説明するフローチャートである。
図1中のXQuery解析部に入力される検索クエリの一例を示す図である。
図1中のXQuery解析部により生成される検索手順リストの一例を示す図である。
図1中の検索部が図16の検索手順リストを用いて行う検索処理によるコンテクストノードリスト遷移を示す図である。
図1中のXML成形部から出力される検索結果の一例を示す図である。

実施例

0015

以下、発明を実施するための形態について図面と共に詳細に説明する。

0016

図1は、本発明になる構造化文書格納装置の一実施の形態のブロック図を示す。

0017

図1に示すように、本実施の形態の構造化文書格納装置1は、XML解析部101と、格納部102と、リレーショナルデータベース103と、クエリ(XQuery)解析部104と、検索部105と、XML成形部106とから構成されている。この構造化文書格納装置1は、入力された構造化文書であるXML文書をリレーショナルデータベース103に格納するとともに、入力された検索クエリに従ってXML文書内を検索部105で検索し、検索クエリに合致するノードのリストを検索結果として出力する構造化文書格納装置である。

0018

XML解析部101は、テキストデータとして入力されたXML文書を解析し、XML文書を構成する各ノードに対応するオブジェクト木構造に配置したDOM(文書オブジェクトモデル;Document Object Model)データを生成して格納部102へ供給する。

0019

ここで、XML文書の概要について説明する。周知のように、XML文書では、「<要素名>」で表される開始タグと「</要素名>」で表される終了タグとの間にテキストや要素の集合記述する。また、1つのタグで完結する要素は、空要素と呼ばれる。また、開始タグ、または空要素タグの中に「<要素名属性名=“属性値”>」のように属性を記述することができる。また、構造化文書であるXML文書は、XMLの論理構造に基づいて木構造に変換できる。XML文書の各要素、属性やテキストは、木構造においてノードと呼ばれる。

0020

このノードにおいて、「親ノード」、「子ノード」、「子孫ノード」、「先祖ノード」という表現が用いられることがある。「親ノード」は、処理対象ノードの一つ上位のノードであり、「子ノード」は、処理対象ノードの一つ下位のノードであり、「子孫ノード」は、処理対象ノードの全下位ノードを示し、「先祖ノード」は、処理対象ノードの全上位ノードを示す。なお、要素はノードの一種であるので、開始タグは「<ノード名>」、終了タグは「</ノード名>」で表されると表現することもできる。

0021

格納部102は、XML解析部101からDOMデータが供給されると、供給されたDOMデータによって表わされるXML文書をリレーショナルデータベース103に格納するものであり、その機能上、ノードID決定手段102aと、順番号決定手段102bと、ノードデータ入手段102cと、属性データ挿入手段102dと、属性格納手段102eと、子ノード格納手段102fとを備える。

0022

ノードID決定手段102aは、処理対象ノードを一意識別するノードIDを決定する。具体的には、ノードID決定手段102aは、リレーショナルデータベース103内のノードテーブル2に格納されている、いずれのノードIDとも一致しない0以外の正の整数を選択し、それを処理対象ノードのノードIDとする。

0023

順番号決定手段102bは、処理対象ノードに対し、ノードの出現順を表す順番号を決定する。さらに、順番号決定手段102bは、処理対象ノードに対し、処理対象ノードより後に出現するノードのうち処理対象ノードの子孫ノードを除いて最も先に出現するノードの順番号である次番号を決定する。ただし、処理対象ノードより後に出現するノードが全て処理対象ノードの子孫ノードである場合、次番号は、処理対象ノードより後に処理対象ノードの子孫ノードではない仮想ノードが存在すると仮定した場合の仮想ノードの順番号となる。

0024

ノードデータ挿入手段102cは、処理対象ノードのノードデータをリレーショナルデータベース103内のノードテーブル2に挿入する。属性データ挿入手段102dは、処理対象ノードがノードの一種である属性である場合に、処理対象属性の属性データをリレーショナルデータベース103内のノードテーブル2に挿入する。

0025

属性データ挿入手段102eは、処理対象ノードが保持する属性、すなわち処理対象ノードの子ノードである属性を格納する処理を行う。子ノード格納手段102fは、処理対象ノードの属性以外の子ノードを格納する処理を行う。

0026

リレーショナルデータベース103は、例えばハードディスク等の記憶装置と、記憶装置を読み書きしてリレーショナルデータベースとしての機能を提供する処理部とにより構成され、表形式のノードテーブル2を有し、ノードテーブル2に格納されたデータを検索する機能を備える。

0027

XQuery解析部104は、XQuery(XMLクエリ言語;XML Query Language)の形式で記述された検索クエリが入力されると、入力された検索クエリを解析し、検索処理を実行するための検索手順リストを生成して検索部105へ供給する。XQueryは、XMLデータを検索する問い合わせ言語として策定されている。

0028

検索部105は、XQuery解析部104から検索手順リストが供給されると、供給された検索手順リストに従ってリレーショナルデータベース103に格納されているXML文書に対する検索を実行し、検索結果であるサブツリーデータのリストをXML成形部106へ供給するものであり、その機能上、検索制御手段105aと、ノード型検索手段105bと、ノード名検索手段105cと、ノード値検索手段105dと、子ノード検索手段105eと、親ノード検索手段105fと、子孫ノード検索手段105gと、先祖ノード検索手段105hと、サブツリーデータ抽出手段105iとを備える。

0029

検索制御手段105aは、検索部105における検索処理の全体を制御する。ノード型検索手段105bは、検索手順がノード型検索である場合に、ノード型による検索を実行する。ノード名検索手段105cは、検索手順がノード名検索である場合に、ノード名による検索を実行する。ノード値検索手段105dは、検索手順がノード値検索である場合に、ノード値による検索を実行する。

0030

子ノード検索手段105eは、検索手順が子ノード検索である場合に、子ノードの検索を実行する。親ノード検索手段105fは、検索手順が親ノード検索である場合に、親ノードの検索を実行する。子孫ノード検索手段105gは、検索手順が子孫ノード検索である場合に、子孫ノードの検索を実行する。先祖ノード検索手段105hは、検索手順が先祖ノード検索である場合に、先祖ノードの検索を実行する。

0031

サブツリーデータ抽出手段105iは、検索結果のノードリストの各ノードのサブツリーデータをリレーショナルデータベース103から読み出し、読み出したサブツリーデータをノードデータに含まれる順番号の順に並び替えてXML成形部106へ供給する。「ノードのサブツリーデータ」とは、XML文書の木構造において、対象ノードと、対象ノードの下位となる全てのノード(子孫ノード)を含むサブツリーの各ノードのノードデータである。

0032

なお、検索部105は、XQueryによって記述できる検索手順のうち、本発明に直接関係する検索手順、及び代表的な検索手順を実行するための各検索手段105b乃至105hを備える構成となっているが、XQueryによって記述できるその他の検索手順を実行するための検索手段をも備える構成とするのが望ましい。

0033

XML成形部106は、検索部105からサブツリーデータのリストが供給されると、供給されたサブツリーデータをテキストデータとして記述されたXML文書の形式に成形し、検索結果として出力する。

0034

次に、構造化文書格納装置1のリレーショナルデータベース103におけるノードデータを格納するための表形式のノードテーブルの構成について説明する。

0035

図2は、リレーショナルデータベース103におけるノードテーブルの構成を示す。図2において、ノードテーブル2の「列名」の欄はテーブルの各列の名前を示し、「内容」の欄は各列に格納するデータの内容を示す。

0036

ノードテーブル2は、id列201と、type列202と、parent列203と、order列204と、next列205と、name列206と、value列207とにより構成される。

0037

id列201は、対象ノードを一意に識別するノードIDである0以外の正の整数を格納する列である。type列202は、対象ノードのノード型(type)を表す数値を格納する列である。parent列203は、対象ノードの親ノードのノードIDである「0」以外の整数、または親ノードが存在しないことを示す数値「0」を格納する列である。

0038

order列204は、対象ノードの順番号を格納する列である。なお、XMLではノードの種別によって出現順が定義されるノードと定義されないノードがあるが、order列204に格納される順番号は、出現順が定義されるノードに対してはその出現順に「0」から始まる2つおきの整数を割り振った偶数の値となり、出現順が定義されないノードに対してはその親ノードの出現順に「1」を加えた奇数の値となる。

0039

next列205は、対象ノードの次番号を格納する列である。ただし、対象ノードが出現順が定義されないノードである場合は順番号と同じ値を格納する。name列206は、対象ノードのノード名(name)を格納する列である。ただし、対象ノードのノード種別がノード名を持たないものである場合、name列206は空(ヌル)となる。value列207は、対象ノードのノード値(value)を格納する列である。ただし、対象ノードのノード種別がノード値を持たないものである場合、value列207は空(ヌル)となる。

0040

次に、図2の本発明の一実施形態である構造化文書格納装置1のノードテーブル2におけるtype列202に格納されるノード型を表す数値について説明する。

0041

図3は、ノードテーブル2におけるtype列202に格納されるノード型の一覧を示す。図3の「type値」の欄はノードテーブル2におけるtype列202に格納されるノード型を表す数値を示し、「ノード型」の欄は「type値」に対応するノード型を示すものである。

0042

ノード型には、要素(Element)301と、属性(Attribute)302と、テキストノード(Text Node)303と、CDATセクション(CDATA Section)304と、エンティティ参照(Entity Reference)305と、エンティティ(Entity)306と、処理命令(Processing Instruction)307と、コメント(Comment)308と、文書(Document)309と、文書型(Document Type)310と、文書断片(Document Fragment)311と、表記法(Notation)312とがある。これらの各ノード型に対して、「type値」欄に示す数値が割り振られる。

0043

なお、XMLにおいて、属性302以外のノード型はノードの出現順が定義されるが、属性302は出現順が定義されないものである。すなわち、同一のノードで構成される2つのXML文書において、属性302以外のノードの出現順が異なる場合は異なるXML文書となるが、属性302の見かけ上の出現順が異なる場合は同一のXML文書となる。

0044

また、XMLにおいて、属性302を含む一部のノード型は子ノードを持たないものである。また、XMLにおいて、処理対象ノードの子孫ノードには、処理対象ノードの保持する属性、すなわち処理対象ノードの子ノードとなる属性は含まれない。

0045

次に、本発明の一実施形態である構造化文書格納装置1の格納部102における文書格納処理の詳細について説明する。

0046

図4は、本実施の形態の構造化文書格納装置1の格納部102における文書格納処理を説明するフローチャートを示す。

0047

格納部102のノードID決定手段102aは、XML解析部101からDOMデータが供給されると、文書格納処理を開始し、変数pに「0」を代入する(ステップS401)。なお、変数pは親ノードのノードIDを記憶しておくための変数である。次に、格納部102の順番号決定手段102bは、変数oに「0」を代入する(ステップS402)。なお、変数oは順番号を記憶しておくための変数である。

0048

次に、格納部102の子ノード格納手段102fは、ルートノードを処理対象ノードとする(ステップS403)。なお、ルートノードは親ノードを持たないノードであり、ノードテーブル2におけるparent列203の値が「0」となるものである。そして、格納部102は、後述するノード格納処理を実行する(ステップS404)。なお、ステップS401で値を代入した変数p、ステップS402で値を代入した変数o、及びステップS403で決定した処理対象ノードはノード格納処理に引き継ぐ

0049

次に、図4の構造化文書格納装置1の格納部102における文書格納処理のステップS404のノード格納処理の詳細について説明する。

0050

図5は、本実施の形態の構造化文書格納装置1の格納部102におけるノード格納処理を説明するフローチャートを示す。

0051

格納部102のノードID決定手段102aは、ノード格納処理を開始すると、ステップS403またはステップS515で決定した処理対象ノードのノードIDを決定し、決定したノードIDを変数iに代入する(ステップS501)。具体的には、ノードテーブル2のid列201に格納されているいずれのノードIDとも一致しない「0」以外の正の整数を選択し、ノードIDとする。

0052

次に、格納部102のノードID決定手段102aは、変数pの値を処理対象ノードの親ノードID、すなわちノードテーブル2のparent列203に挿入すべき値とする(ステップS502)。次に、格納部102の順番号決定手段102bは、変数oの値を処理対象ノードの順番号、すなわちノードテーブル2のorder列204に挿入すべき値とする(ステップS503)。

0053

次に、格納部102のノードデータ挿入手段102cは、処理対象ノードの次番号以外のノードデータをノードテーブル2に挿入する(ステップS504)。具体的には、ステップS501で変数iに代入したノードIDをid列201のノードIDの値とし、処理対象ノードのDOMオブジェクトからノード型を取得して、ノード型一覧3におけるそのノード型に対応するtype値をtype列202の値とする。また、ステップS502で決定した親ノードIDをparent列203の値とし、ステップS503で決定した順番号をorder列204の値とする。更に、処理対象ノードのDOMオブジェクトからノード名を取得して、そのノード名をname列206の値とし、処理対象ノードのDOMオブジェクトからノード値を取得して、その値をvalue列207の値として、ノードテーブル2に新たな行を追加する。なお、追加する行のnext列205は空(ヌル)にしておく。

0054

次に、格納部102のノードID決定手段102aは、変数iの値を変数pに代入する(ステップS505)。次に、格納部102の順番号決定手段102bは、変数oの値に「1」を加算して変数oに代入する(ステップS506)。次に、格納部102の属性格納手段102eは、処理対象ノードが持つ属性、すなわち処理対象ノードの子ノードである属性の数を変数Naに代入し、変数aに「0」を代入する(ステップS507)。続いて、格納部102の属性格納手段102eは、変数aの値が変数Naの値より小さいか否かを判定する(ステップS508)。変数aの値が変数Naの値より小さいと判定された場合、ステップS509へ処理を移行し、変数Naの値より小さくない、すなわち変数Naの値以上であると判定された場合、ステップS511へ処理を移行する。

0055

ステップS508において、変数aの値が変数Naの値より小さいと判定された場合、格納部102の属性格納手段102eは、変数aの値に「1」を加算して変数aに代入する(ステップS509)。続いて、格納部102の属性格納手段102eは、加算後の変数a番目の属性を処理対象とし、後述する属性格納処理を実行する(ステップS510)。なお、あるノードの持つ属性の間には順番が定義されていないので、例えば属性をノード名の辞書順に並べ、それを属性の順番とすればよい。また、変数pと変数o、及びこのステップで決定した処理対象属性は属性格納処理に引き継ぐ。

0056

一方、ステップS508において、変数aの値が変数Naの値より小さくない、すなわち変数Na以上であると判定された場合、格納部102の順番号決定手段102bは、変数oの値に「1」を加算して変数oに代入する(ステップS511)。

0057

次に、格納部102の子ノード格納手段102fは、処理対象ノードの属性以外の子ノードの数を変数Ncに代入して、変数cに「0」を代入する(ステップS512)。続いて、子ノード格納手段102fは、変数cの値が変数Naの値より小さいか否かを判定する(ステップS513)。変数cの値が変数Ncの値より小さいと判定された場合、ステップS514へ処理を移行し、変数Ncの値より小さくない、すなわち変数Ncの値以上であると判定された場合、ステップS516へ処理を移行する。

0058

ステップS513において、変数cの値が変数Ncの値より小さいと判定された場合、格納部102の子ノード格納手段102fは、変数cの値に「1」を加算して変数cに代入する(ステップS514)。続いて、子ノード格納手段102fは、加算後の変数c番目の子ノードを処理対象とし、ノード格納処理を再帰的に実行する(ステップS515)。このとき、処理対象ノードの子ノードを出現順に並べて子ノードの順番とする。また、変数pと変数o、及びこのステップS515で決定した処理対象ノードを再帰的に実行するノード格納処理に引き継ぐ。

0059

一方、ステップS513において、変数cの値が変数Ncの値より小さくない、すなわち変数Ncの値以上であると判定された場合、格納部102の順番号決定手段102bは、変数oの値を処理対象ノードの次番号とする(ステップS516)。なお、このステップS516における処理対象ノードはノード格納処理開始時の処理対象ノードであり、ステップS515で決定した処理対象ノードではない。

0060

次に、格納部102のノードデータ挿入手段102cは、ノードテーブル2における処理対象ノードの次番号を設定する(ステップS517)。具体的には、ノードテーブル2のid列201に対して変数iに格納されている処理対象ノードのノードIDを用いて検索を行い、id列201のノードIDの値が変数iの値に一致する行のnext列205の値をステップS516で決定した次番号の値に設定する。

0061

次に、図5の本実施の形態の構造化文書格納装置1の格納部102におけるノード格納処理のステップS510の属性格納処理の詳細について、図6のフローチャートを参照して説明する。

0062

格納部102のノードID決定手段102aは、ステップS510の属性格納処理を開始すると、処理対象属性のノードIDを決定する(ステップS601)。具体的な決定方法はステップS501と同様である。続いて、ノードID決定手段102aは、変数pの値を処理対象属性の親ノードID、すなわちノードテーブル2のparent列203に挿入すべき値とする(ステップS602)
次に、格納部102の順番号決定手段102bは、変数oの値を処理対象属性の順番号、すなわちノードテーブル2のorder列204に挿入すべき値とするとともに、同じ値を処理対象属性の次番号、すなわちノードテーブル2のnext列205に挿入すべき値とする(ステップS603)。

0063

次に、格納部102の属性データ挿入手段102dは、処理対象属性のノードデータをノードテーブル2に挿入する(ステップS604)。具体的には、ステップS601で決定したノードIDをid列201のノードIDの値とし、ノード型一覧3における属性302に対応するtype値をtype列202の値とし、ステップS602で決定した親ノードIDをparent列203の値とし、ステップS603で決定した順番号をorder列204の値とし、ステップS603で決定した次番号をnext列205の値とし、処理対象属性のDOMオブジェクトからノード名を取得して、そのノード名をname列206の値とし、処理対象属性のDOMオブジェクトからノード値を取得して、そのノード値をvalue列207の値として、ノードテーブル2に新たな行を追加する。

0064

次に、本発明の一実施形態である構造化文書格納装置1におけるノードテーブル2へ格納されるXML文書の具体例について説明する。

0065

図7は、構造化文書格納装置1におけるノードテーブル2へ格納されるXML文書の一具体例を示す。同図に示すXML文書7全体を示す文書がルートノードである。ルートノードの子ノードとして、要素名が「library」である要素が存在する。また、要素名が「book」や「title」等の山括弧で囲まれた部分も要素である。また、要素名が「book」である要素はノード名が「id」である属性を持っている。また、開始タグ「<title>」と終了タグ「</title>」で挟まれた「Title 1」や、開始タグ「<author>」と終了タグ「</author>」で挟まれた「Author 1」等の文字列の部分は、それらの文字列がノード値であるテキストノードである。

0066

図8は、本実施の形態の構造化文書格納装置1におけるノードテーブル2の一具体例を示す。この図8に示すノードテーブル例8は、図7に示したXML文書7を格納した状態を示す。すなわち、図8において、id列には「1」を初期値として「1」ずつ増加するノードID値が格納されている。また、図8において、図2に示したようにtype列にはノード型一覧3におけるtype値(すなわち、ノード型を識別する値)が格納されている。また、parent列には親ノードIDの値が、order列には順番号が、next列には次番号が、name列にはノード名(要素名)が、value列にはノード値がそれぞれ格納されている。

0067

例えば、XML文書7の1行目の開始タグ「<library>」については、id列のノードIDの値が「2」、type列のtype値がノード型が要素であることを示す「1」、parent列の親ノードIDの値が「1」が格納される。また、このノードID値「2」の「<library>」は出現順が定義されるノードであり、出現順に偶数の値「2」の順番号がparent列に格納され、次番号としてノードID値「1」と同じ「34」が格納され、ノード名「library」がname列に格納される。

0068

XML文書7の2行目の「<book id=“1”>」は、出現が定義されるノード「book」と出現が定義されないノード「id=“1”」からなるので、ノードIDの値が「3」の欄に、type値が「1」、親ノードIDの値が「2」、次の出現順の値「4」の順番号、値「14」の次番号、ノード名「book」が対応して格納される。続くノードIDの値が「4」の欄に、type値が属性を示す「2」、親ノードIDの値が「3」、ノード名「id」、value列のノード値として「1」が格納される。また、この「id=“1”」は出現が定義されていないので順番号はその親ノード「book」の順番号に「1」を加算した「5」となり、また、次番号は「5」となる。

0069

なお、図8のノードテーブル例8は、便宜上、各行を対応するノードの出現順に並べて示しているが、リレーショナルデータベース103においてノードテーブル2の行の並び順不定である。

0070

次に、本発明の一実施の形態である構造化文書格納装置1のXQuery解析部104が生成する検索手順の詳細について説明する。なお、クエリ(XQuery)を解析して検索手順を生成する処理の詳細については、本発明と直接関係がないため、説明を省略する。

0071

図9は、本実施の形態の構造化文書格納装置1のXQuery解析部104が生成する検索手順の種別の一覧を示す。図9において、「検索種別」の欄は検索手順の種別を示し、「引数」の欄は検索手順に付随する引数を示し、「処理内容」の欄は検索処理の内容を示す。

0072

検索手順の種別には、ノード型検索901と、ノード名検索902と、ノード値検索903と、子ノード検索904と、親ノード検索905と、子孫ノード検索906と、先祖ノード検索907とがある。

0073

ノード型検索901は、ノード型一覧3のtype値を引数にとり、ノード型を表す数値が引数のtype値に一致するノードを検索する手順である。ノード名検索902は、文字列を引数にとり、ノード名が引数の文字列に一致するノードを検索する手順である。ノード値検索903は、文字列を引数にとり、ノード値が引数の文字列に一致するノードを検索する手順である。

0074

子ノード検索904は、引数をとらず、コンテクストノードの子ノードを検索する手順である。なお、「コンテクストノード」とは、検索手順のリストを実行する過程において、これから実行する検索手順の直前の検索手順を実行することによって検索されたノードである。

0075

親ノード検索905は、引数をとらず、コンテクストノードの親ノードを検索する手順である。子孫ノード検索906は、引数をとらず、コンテクストノードの子孫ノードを検索する手順である。先祖ノード検索907は、引数をとらず、コンテクストノードの先祖ノードを検索する手順である。

0076

なお、検索手順一覧9には、クエリ(XQuery)によって記述できる検索手順のうち、本発明に直接関係する検索手順、及び代表的な検索手順を実行するための検索手順901乃至907が含まれているが、クエリ(XQuery)によって記述できるその他の検索手順を実行するための検索手段をも含めるのが望ましい。

0077

次に、本実施の形態の構造化文書格納装置1の検索部105における検索処理の詳細について説明する。

0078

図10は、検索部105における検索処理を説明するフローチャートである。図1に示した検索部105内の検索制御手段105aは、XQuery解析部104から検索手順リストが供給されると、検索処理を開始し、ルートノードのノードIDを取得し、コンテクストノードリストに追加する(ステップS1001)。具体的には、リレーショナルデータベース103内のノードテーブル2におけるparent列203の値が「0」である行を検索し、その行のid列201のノードIDの値をルートノードのノードIDとして取得し、取得したルートノードのノードIDのみからなるコンテクストノードリストを生成する。

0079

次に、検索部105内の検索制御手段105aは、XQuery解析部104から供給された検索手順リストに含まれる検索手順の数を変数Nに代入し、変数iに「0」を代入する(ステップS1002)。

0080

次に、検索部105内の検索制御手段105aは、変数iの値が変数Nの値(すなわち、検索手順リストに含まれる検索手順の数)より小さいか否かを判定する(ステップS1003)。検索制御手段105aは、変数iの値が変数Nの値より小さいと判定された場合、変数iの値に「1」を加算して変数iに代入する(ステップS1004)。続いて、検索制御手段105aは、XQuery解析部104から供給された検索手順リストに含まれる変数i番目の検索手順を実行する(ステップS1005)。ステップS1005の処理後はステップS1003に戻り、再び変数iの値が変数Nの値より小さいか否かを判定する。

0081

一方、検索制御手段105aは、ステップS1002において、変数iの値が変数Nの値より小さくない、すなわち変数Nの値以上であると判定された場合、検索手順リストに含まれるすべての検索手順について検索手順を実行したと判断し、続いて、コンテクストノードリストに含まれるノード数を変数Mに代入すると共に、変数jに「0」を代入する(ステップS1006)。

0082

次に、検索制御手段105aは、変数jの値が変数Mの値(すなわち、コンテクストノードリストに含まれるノード数)より小さいか否かを判定する(ステップS1007)。変数Mの値より小さいと判定された場合、検索制御手段105aは、変数jの値に「1」を加算して変数jに代入する(ステップS1008)。続いて、検索制御手段105aは、コンテクストノードリストに含まれる変数j番目のノードのサブツリーデータ抽出処理を後述するように実行する(ステップS1009)。ステップS1009の処理後は、ステップS1007に戻り、変数jの値が変数Mの値より小さいか否かを判定する。

0083

一方、検索制御手段105aは、ステップS1007において、変数jの値が変数Mの値より小さくない、すなわち変数Mの値以上であると判定された場合、コンテクストノードリストに含まれるノード数のすべてについてサブツリーデータ抽出処理を実行したと判断し、ステップS1009で抽出したサブツリーデータをノードの順番号で並び替える(ステップS1010)。具体的には、ステップS1009で抽出した各コンテクストノードに対応する各サブツリーデータに含まれる各コンテクストノードの順番号を用いて、順番号の昇順にサブツリーデータを並び替える。これにより、検索結果のサブツリーデータがXML文書における出現順に並ぶこととなる。

0084

次に、図10に示した検索部105によるステップS1005の検索手順実行処理の詳細について、図11のフローチャートを参照して説明する。

0085

検索部105の検索制御手段105aは、検索手順実行処理を開始すると、実行する検索手順がノード型検索901か否かを判定する(ステップS1101)。ノード型検索901であると判定された場合、図1に示した検索部105のノード型検索手段105bは、コンテクストノードリストからノード型が条件に合致するノードを選択する(ステップS1102)。具体的には、ノード型検索手段105bは、ノードテーブル2に対して、id列201のノードIDの値がコンテクストノードリストに含まれる各ノードIDに一致し、かつ、type列202のノード型を示す値が検索手順の引数であるtype値に一致する行を検索し、検索に合致した各行のid列201のノードIDの値をノードIDとして読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える。

0086

一方、ステップS1101において、実行する検索手順がノード型検索901ではないと判断された場合、検索制御手段105aは、実行する検索手順がノード名検索902か否かを判定する(ステップS1103)。

0087

ステップS1103において、実行する検索手順がノード名検索902であると判断された場合、図1に示した検索部105のノード名検索手段105cは、コンテクストノードリストからノード名が条件に合致するノードを選択する(ステップS1104)。具体的には、ノード名検索手段105cは、ノードテーブル2に対して、id列201のノードIDの値がコンテクストノードリストに含まれる各ノードIDに一致し、かつ、name列206のノード名が検索手順の引数である文字列に一致する行を検索し、検索に合致した各行のid列201のノードIDの値をノードIDとして読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える。

0088

一方、ステップS1103において、実行する検索手順がノード名検索902ではないと判断された場合、検索部105の検索制御手段105aは、実行する検索手順がノード値検索903か否かを判定する(ステップS1105)。

0089

ステップS1105において、実行する検索手順がノード値検索903であると判断された場合、図1に示した検索部105のノード値検索手段105dは、コンテクストノードリストからノード値が条件に合致するノードを選択する(ステップS1106)。具体的には、ノード値検索手段105dは、ノードテーブル2に対して、id列201のノードIDの値がコンテクストノードリストに含まれる各ノードIDに一致し、かつ、value列207のノード値が検索手順の引数である文字列に一致する行を検索し、検索に合致した各行のid列201のノードIDの値をノードIDとして読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える。

0090

一方、ステップS1105において、実行する検索手順がノード値検索903ではないと判断された場合、検索部105の検索制御手段105aは、実行する検索手順が子ノード検索904か否かを判定する(ステップS1107)。

0091

ステップS1107において、実行する検索手順が子ノード検索904であると判断された場合、図1に示した検索部105の子ノード検索手段105eは、コンテクストノードリストの各ノードの子ノードを検索する(ステップS1108)。具体的には、子ノード検索手段105eは、ノードテーブル2に対して、parent列203の親ノードIDの値がコンテクストノードリストに含まれる各ノードIDに一致する行を検索し、検索に合致した各行のid列201のノードIDの値をノードIDとして読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える。

0092

一方、ステップS1107において、実行する検索手順が子ノード検索904ではないと判断された場合、検索部105の検索制御手段105aは、実行する検索手順が親ノード検索905か否かを判定する(ステップS1109)。

0093

ステップS1109において、実行する検索手順が親ノード検索905であると判断された場合、図1に示した検索部105の親ノード検索手段105fは、コンテクストノードリストの各ノードの親ノードを検索する(ステップS1110)。具体的には、親ノード検索手段105fは、ノードテーブル2に対して、id列201のノードIDの値がコンテクストノードリストに含まれる各ノードIDに一致する行を検索し、検索に合致した各行のparent列203の親ノードIDの値をノードIDとして読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える。

0094

一方、ステップS1109において、実行する検索手順が親ノード検索905ではないと判断された場合、検索部105の検索制御手段105aは、実行する検索手段が子孫ノード検索906か否かを判定する(ステップS1111)。

0095

ステップS1111において、実行する検索手順が子孫ノード検索906であると判断された場合、図1に示した検索部105の子孫ノード検索手段105gは、後述する子孫ノード検索処理を実行する(ステップS1112)。一方、ステップS1111において、実行する検索手順が子孫ノード検索906ではないと判断された場合、検索部105の検索制御手段105aは、実行する検索手順が先祖ノード検索907か否かを判定する(ステップS1113)。

0096

ステップS1113において、実行する検索手順が先祖ノード検索907であると判断された場合、図1に示した検索部105の先祖ノード検索手段105hは、後述する先祖ノード検索処理を実行する(ステップS1114)。一方、ステップS1113において、実行する検索手順が先祖ノード検索907ではないと判断された場合、検索部105の検索制御手段105aは、検索手順一覧9に記載しないその他の検索手順を実行する(ステップS1115)。その他の検索手順実行処理の詳細については説明を省略する。

0097

次に、図11に示した検索部105によるステップS1112の子孫ノード検索処理の詳細について図12のフローチャートを参照して説明する。

0098

検索部105の子孫ノード検索手段105gは、子孫ノード検索処理を開始すると、ノードテーブル2に対して、id列201のノードIDの値がコンテクストノードリストに含まれるノードIDに一致する行を検索する(ステップS1201)。

0099

次に、検索部105の子孫ノード検索手段105gは、ノードテーブル2に対して、order列204の順番号の値がステップS1201で検索された各行のorder列204の順番号の値に「1」を加算した値より大きく、ステップS1201で検索された各行のnext列205の次番号の値より小さい行を子孫ノードとして検索する(ステップS1202)。

0100

次に、検索部105の子孫ノード検索手段105gは、ステップS1202で検索された子孫ノードと検索された各行のid列201のノードIDの値を読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える(ステップS1203)。

0101

なお、ステップS1202において、order列204の順番号の値に「1」を加算して検索を行うことにより、コンテクストノードの属性を子孫ノードの検索から除外できる効果がある。

0102

次に、図11に示した検索部105によるステップS1114の先祖ノード検索処理の詳細について、図13のフローチャートを参照して説明する。

0103

検索部105の先祖ノード検索手段105hは、先祖ノード検索処理を開始すると、ノードテーブル2に対して、id列201のノードIDの値がコンテクストノードリストに含まれるノードIDに一致する行を検索する(ステップS1301)。

0104

次に、検索部105の先祖ノード検索手段105hは、ノードテーブル2に対して、order列204の順番号の値がステップS1301で検索された各行のorder列204の順番号の値より小さく、next列205の次番号の値がステップS1301で検索された各行のorder列204の順番号の値より大きい行を検索する(ステップS1302)。

0105

次に、検索部105の先祖ノード検索手段105hは、ステップS1302で検索された各行のid列201のノードIDの値を読み出し、読み出したノードIDのリストでコンテクストノードリストを置き換える(S1303)。

0106

次に、図10に示した検索部105によるステップS1009のサブツリーデータ抽出処理の詳細について、図14のフローチャートを参照して説明する。

0107

図1に示した検索部105のサブツリーデータ抽出手段105iは、サブツリーデータ抽出処理を開始すると、ノードテーブル2に対して、id列201のノードIDの値が処理対象ノードのノードIDに一致する行を検索する(ステップS1401)。

0108

次に、検索部105のサブツリーデータ抽出手段105iは、ノードテーブル2に対して、order列204の順番号の値がステップS1401で検索された行のorder列204の順番号の値以上であり、ステップS1401で検索された行のnext列205の次番号の値より小さい行を検索する(ステップS1402)。そして、検索部105のサブツリーデータ抽出手段105iは、ステップS1402で検索された各行のid列の値を読み出す(ステップS1403)。

0109

次に、本発明の一実施の形態の構造化文書格納装置1における検索の具体例について説明する。

0110

図15は、本発明の一実施の形態の構造化文書格納装置1内のXQuery解析部104に入力される検索クエリの一例を示す。図15に示す検索クエリ15は、XML文書例7が格納されていることを前提としており、ノード値が「Author 1」に一致するテキストノードを子孫に含む「book」要素を検索するときのものである。

0111

図16は、XQuery解析部104により生成される検索手順リストの一例を示す。この検索手順リスト16は、検索クエリ15を解析して生成されたものであり、子孫ノード検索、ノード型検索、ノード値検索、先祖ノード検索、ノード型検索、ノード名検索の順からなる6つの検索手順を示す。

0112

図17は、本発明の一実施の形態の構造化文書格納装置1の検索部105の検索処理におけるコンテクストノードリストの遷移の例を示す。この例は、図16に示した検索手順リスト16を用いてテキストノードの検索処理を行ったときのコンテクストノードリストの遷移を示したものである。

0113

すなわち、図17に170で示すように、コンテクストノードリストは、最初は図8に示したノードテーブル例8のid列の欄の一行目に示されるルートノードのノードID=1のみを含む。

0114

次に、検索部105は図16に示した検索手順1の子孫ノード検索を実行する。これにより、図17に170で示すように、コンテクストノードリストには、図8に示したノードテーブル例8における子孫ノードのノードIDである「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」、「10」、「11」、「12」、「13」、「14」、「15」、「16」、「17」、「18」、「19」、「20」が記述される。

0115

続いて、検索部105は図16に示した検索手順2の引数3のノード型検索を実行する。これにより、図17に171で示すように、コンテクストノードリストには、図8に示したノードテーブル例8において、引数3からtype値が「3」のテキストノードのノード型を示すノードIDである「6」、「8」、「12」、「14」、「18」、「20」が記述される。

0116

続いて、検索部105は図16に示した検索手順3の引数「Author1」のノード値検索を実行する。これにより、図17に173で示すように、コンテクストノードリストには、図8に示したノードテーブル例8において、引数「Author1」からノード値を示す「value」が「Author1」である「8」、「20」が記述される。

0117

続いて、検索部105は図16に示した検索手順4の先祖ノード検索を実行する。これにより、図17に174で示すように、コンテクストノードリストには、検索手順3の検索結果であるノードID「8」、「20」のうちノードID「8」の先祖ノードである「1」、「2」、「3」、「7」と、ノードD「20」の先祖ノードである「15」、「19」とが記述される。

0118

続いて、検索部105は図16に示した検索手順5の引数1のノード型検索を実行する。これにより、図17に175で示すように、コンテクストノードリストには、検索手順4の検索結果のうち、図8に示す引数1(type値が「1」)のテキストノードのノード型を示すノードIDである「2」、「3」、「7」、「15」、「19」が記述される。

0119

そして、検索部105は図16に示した最後の検索手順6の引数「book」のノード名検索を実行する。これにより、図17に176で示すように、コンテクストノードリストには、検索手順5の検索結果のうち、図8のname列の欄に示されるノード名が「book」である検索結果のノードID「3」、「15」が記述される。このように、検索部105が検索手順を1つずつ実行する毎に、コンテクストノードリストに含まれるノードIDが変化していき、最終的に検索クエリによる所望の検索結果が得られる。

0120

図18は、本発明の一実施の形態の構造化文書格納装置1のXML成形部106から出力される検索結果の一例を示す。この検索結果は、図15に示した検索クエリ15に基づいて得られる図17に示す検索結果を示したものである。

0121

すなわち、図18の1行目から4行目は、図7に示したXML文書例7において図17の検索結果のノードID「3」が示すノード名「book」を開始タグとし、その後の最初の「/book」を終了タグとするノード値が「Author 1」に一致するテキストノードを示す。また、図18の5行目から8行目は、図7に示したXML文書例7において図17の検索結果のノードID「15」が示すノード名「book」を開始タグとし、その後の最初の「/book」を終了タグとするノード値が「Author 1」に一致するテキストノードを示す。

0122

このように、本実施の形態の構造化文書格納装置1によれば、構造化文書の対象ノードの出現順を示す順番号と、対象ノードより後に出現するノードのうち、対象ノードの子孫ノードを除くノードのうちで最も先に出現するノードの順番号を示す次番号とをノードテーブル2に格納し、検索部105において、ノードテーブル2を参照して構造化文書の比較元ノードの順番号を比較先ノードの順番号及び次番号と比較して比較元ノードが比較先ノードの子孫ノードであるか否かを判定するようにしたため、検索手順の数は従来と同じであるが、従来に比べて構造化文書のノード間の先祖・子孫関係を検索する手順を短時間で行うことができ、その結果、従来に比べて構造化文書の検索を高速に行うことができる。

0123

なお、本発明は以上の実施の形態に限定されるものではなく、例えば本実施の形態の構造化文書格納装置1において、XML文書をテキストデータとして入力し格納しているが、XML文書の入力方法はテキストデータによるものに限定されない。XML文書の入力方法を、DOMデータによるものや、その他の方法によるものとしてもよい。また、本実施の形態の構造化文書格納装置1において、検索結果をテキストデータとして出力しているが、検索結果の出力方法はテキストデータによるものに限定されない。検索結果の出力方法を、DOMデータによるものや、その他の方法によるものとしてもよい。

0124

また、本実施の形態の構造化文書格納装置1は、出現順が定義されない属性を含むXML文書を格納するものであるが、全てのノードの出現順が定義される構造化文書を格納するものとしてもよい。この場合、格納部102には、属性データ挿入手段102dと属性格納手段102eとが不要となる。

0125

また、ノードテーブル2におけるorder列204に格納される順番号は、ノードの出現順に「0」から始まり「1」ずつ増加する整数を割り振った値としてもよい。また、ノードに属性がない場合は図5のノード格納処理におけるステップS506乃至ステップS510が不要となる。また、図12の子孫ノード検索処理のステップS1202において、order列204の値に「1」を加算する処理が不要となる。

0126

更に、本発明は上述した構造化文書格納装置1の動作を実現する構造化文書格納方法、及びコンピュータにより構造化文書格納装置1の動作を実行させるための構造化文書格納プログラムも包含する。この構造化文書格納プログラムは、例えば、構造化文書格納プログラムが記憶された記録媒体から読み出され、コンピュータに取り込まれて実行されることにより構造化文書格納装置を構成するようにしてもよいし、通信ネットワークを介して配信されてコンピュータにインストールされて実行されることにより構造化文書格納装置を構成するようにしてもよい。

0127

1構造化文書格納装置
2ノードテーブル
3ノード型一覧
7XML文書例
8 ノードテーブル例
9検索手順一覧
101 XML解析部
102 格納部
102aノードID決定手段
102b順番号決定手段
102cノードデータ挿入手段
102d属性データ挿入手段
102e 属性格納手段
102f子ノード格納手段
103リレーショナルデータベース
104 XQuery解析部
105検索部
105a 検索制御手段
105b ノード型検索手段
105c ノード名検索手段
105dノード値検索手段
105e 子ノード検索手段
105f親ノード検索手段
105g子孫ノード検索手段
105h先祖ノード検索手段
105iサブツリーデータ抽出手段
106 XML成形部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ