JP2004310249A - Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 - Google Patents
Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP2004310249A JP2004310249A JP2003099941A JP2003099941A JP2004310249A JP 2004310249 A JP2004310249 A JP 2004310249A JP 2003099941 A JP2003099941 A JP 2003099941A JP 2003099941 A JP2003099941 A JP 2003099941A JP 2004310249 A JP2004310249 A JP 2004310249A
- Authority
- JP
- Japan
- Prior art keywords
- search
- record
- element table
- column
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
【解決手段】検索条件に対応するエレメントテーブルを検索し、検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、現在のエレメントテーブルの選択レコードと上位のエレメントテーブルをジョインし、ジョイン対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントに対応するエレメントテーブルまで繰り返し、検索指定の先頭のエレメントテーブルから検索指定の最後のエレメントまで、現在のエレメントテーブルの選択レコードと下位のエレメントテーブルをジョインし、ジョイン対象となったレコードを選択する手順を繰り返すことにより、最後のエレメントテーブルについて検索条件を反映したレコードを選択する。
【選択図】 図4
Description
【発明の属する技術分野】
本発明は、XML(拡張可能なマーク付け言語;Extensible Markup Language)で記述された階層構造を有するXMLデータのデータベースに関するもので、特に、表形式のテーブルに格納したXMLデータの検索技術に関する。
【0002】
【従来の技術】
XMLデータをデータベース管理システムに格納し、また格納したデータを高速に検索する仕組みは、従来から様々な手法がとられてきた。
XMLデータをリレーショナルモデルに基づき格納する場合は、基本的に3つの方法が考えられる。
【0003】
第1は、一つのXMLデータを一つの文字列データとして格納する方法である。
この場合、基本的にはXMLデータを格納するために設けたテーブルの特定のカラムに、XMLデータ全体が一つの文字列データとして格納される。
また、主に検索性能を向上させる目的で、XMLデータを文字列として格納するカラムとは別に同じテーブルに検索用のカラムを用意し、検索に使用するXMLデータ中のエレメントまたは属性の値をあらかじめ抽出して当該カラムに格納しておく手法なども、同時に用いられることがある。
【0004】
第2は、XMLデータの各エレメントと属性を分解し、あらかじめターゲットとなるXML専用に設計し作成してある複数のテーブルの各カラムに、それぞれ対応させて格納する方法である。
この場合、全てのエレメント・属性の値を分解して格納する方法のほか、必要なエレメント・属性の値のみを抽出して格納する方法がある。後者の場合は、第1の方法と組み合わせて使用する場合もある。
【0005】
第3は、XMLデータのエレメントまたは属性の情報を格納するテーブルと、エレメント間の親子関係を表わすリンク情報を格納するテーブルに分ける方法である。
リレーショナルデータベースにおいては、検索を高速化するために、検索対象となるエレメントまたは属性の値のインデックス情報を別途作成しておき、検索の際には最初にインデックス情報を参照して目的のデータを探す手法が一般的に用いられる。
【0006】
【発明が解決しようとする課題】
第1の方法の問題点は、データベースにおいてはXMLデータ全体を一つの文字列情報として扱うため、検索を高速化するためには特殊なインデックスなどをあらかじめ作成しておく必要があり、一つでも情報が変化した場合はインデックスを作成しなおす必要がある。
また、特定の位置にあるエレメントまたは属性の値についての範囲検索や集計などを高速に処理することが困難であるほか、エレメントや属性の値のデータ型が文字型に限定されてしまうなどの問題がある。
【0007】
第2の方法の問題点は、格納対象となるXMLデータの構造にしたがってあらかじめデータベースを設計しておく必要があるため、XMLデータの構造が変化すると設計からやり直す必要があり、XMLデータの持つ自由度や柔軟性を大きく阻害してしまうことである。
また、一般的に木構造を持つXMLデータをリレーショナルモデルに対応付けることは技術的にも難しく、その結果として検索性能を向上させることも難しいものになる。
【0008】
第3の方法の問題点は、特定の位置にあるエレメントまたは属性の情報を探すために毎回リンク情報を辿って行く必要があることで、XMLデータ構造や検索内容によってはリンクを何度も辿る必要があり、一般的に高速な検索処理を行うことが難しい。また第1の方法と同様に比較的多くのXMLデータ構造に柔軟に対応できる半面、数値型や文字型などデータ型のバリエーションを持たせることは困難である。
その他の関連する技術としては、たとえば、特開2002−73589号、特開2001−34618号、特開2001−318935号、特開2001−282856号、特開2001−195406号公報等がある。
【0009】
本発明は、上記した従来技術の課題を解決するためになされたもので、その目的とするところは、表形式に格納したXMLデータを効率的に検索するXMLデータの検索方法および検索装置、並びにプログラムおよびプログラムを記録した記録媒体を提供することにある。
【0010】
【課題を解決するための手段】
上記目的を達成するために、本発明のXMLデータの検索方法は、 記憶装置のデータベース領域に、格納すべきXMLデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、
各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、
前記XMLデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したXMLデータの検索方法である。
【0011】
XMLデータとは、周知のXMLで記述された階層構造を有するデータであり、エレメント(要素)を単位とし、エレメントはデータにその内容を示すタグを付けて記述される。エレメントをグループ化することによってエレメントの階層構造が表現され、全体として木構造(ツリー構造)のモデルで表現できる。
【0012】
使用するエレメントやデータ内容、エレメントの属性、エレメント間の親子兄弟関係等の規則はスキーマとして設計される。スキーマの記述方法としては、たとえばDTD等が定められているが、DTDに即した記述に限定されるものではなく、XML Schema等、種々の言語を用いることができる。
【0013】
本発明は、検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択することを特徴とすることを特徴とする。
【0014】
また、検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてXMLデータを復元することを特徴とする。
エレメント間の親子関係情報がエレメントテーブルとは別に記憶装置に保存され、この親子関係情報に基づいてエレメントテーブルをたどることを特徴とする。
【0015】
本発明のXMLデータの検索装置は、記憶装置のデータベース領域に、格納すべきXMLデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、前記XMLデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したXMLデータの検索装置である。
【0016】
すなわち、検索条件を含む一連のエレメントの検索指定を読み込み、前記検索条件に対応するエレメントテーブルを検索し、検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を実行する処理手段を備えたことを特徴とする。
処理手段は、検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてXMLデータを復元する。
【0017】
本発明は、上記XMLデータの検索方法をコンピュータに実行させるためのプログラムおよびこのプログラムを記録したコンピュータ読取可能な記録媒体も提供する。
すなわち、このプログラムは、検索条件を含む一連のエレメントの検索指定を読み込み、前記検索条件に対応するエレメントテーブルを検索し、検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、検索指定の先頭のエレメントに進み、現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を備えていることを特徴とする。
【0018】
【発明の実施の形態】
以下に本発明を図示の実施の形態に基づいて説明する。
図1(A)は、本発明のXMLデータ検索装置を含むデータベースの装置構成を概念的に示している。
データベースは、データを記憶するデータベース領域401を備えた記憶装置400と、XMLデータ100のスキーマ情報が記述されたDTD101(文書型定義;Document Type Definition)で定義されているエレメント毎に記憶装置400のデータベース領域401にテーブル200,…を作成し、実際のタグ付きデータが記述されたデータ本体部102のデータを対応する各テーブル200,201,202に振り分けて格納するようにプログラムされた格納処理部300と、各テーブル200、…に格納されたデータを検索する検索処理部500とを備えている。また、検索処理部500に対して検索条件を入力する入力操作部501と、検索処理部500による検索結果を出力する表示部502を備えている。
テータベース領域401にはフォルダ402が作成され、このフォルダ402内にDTD101と共に各テーブル200,…が作成される。
【0019】
まず、前提となるデータ格納について説明し、その後にデータ検索について説明する。
格納処理部300および検索処理部500は、特に図示しないが、通常のコンピュータのマイクロプロセッサ(CPU)とRAM等の主記憶装置を含む構成で、主記憶装置に読み込まれたプログラムに従ってデータが処理される。
テーブル200,・・・が作成される記憶装置400についてもRAM等の主記憶装置が用いられる。
プログラムは一般的にはハードディスク等の補助記憶装置に記憶され、処理実行時に主記憶装置に読み出されて実行される。 プログラムは、CD−ROM,CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW等種々の記録媒体に格納することができるし、ネットワークを介して配信することもできる。
【0020】
XMLはスキーマ情報としてDTD等の記載を不要とすることができる構造化データ記述言語であるが、本発明で扱うXMLデータ100は、スキーマ情報を必要とする。スキーマ情報としては、DTD101に限定されるものではなく、XML SchemaやRELAX NGなどの他のスキーマ言語を用いた情報でもよい。図1(A)において、DTD101が必要となるのは、最初にフォルダ402を作成する際のみで、XMLデータを格納する際には不要である。
【0021】
図1(B)には、テーブルに作成されるカラムが例示されている。
属性(attr−)カラムC1は個別データの内容に関するカラムの一つで、属性値が格納される。属性省略時にはNULL値を格納する。
テキスト(text)カラムC2も個別データの内容に関するカラムの一つで、エレメントの個別データの内容のテキスト値が格納される。このテキストカラムは、テキスト値を持つ場合のみ記入される。
ダウングリップ(down−grip)カラムC3には、データ本体部102のデータ出現順に出現順序情報として順番号が割り当てられる。
【0022】
アップグリップ(up−grip)カラムC4には、対応する親エレメントのダウングリップの値が格納される。ダウングリップに対応する、アップグリップを持つ子エレメントが存在しない場合には、子となるデータが無いことを表示する。
【0023】
XMLデータの格納は、まず、DTDを指定してフォルダ402内にテーブルを作成し、当該DTDに従うXMLデータについて、ルートエレメントから順に、個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に格納していく。格納は、個別データの出現順序情報をダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて、個別データ間にリンク関係を付けた状態で1行のレコードとして格納する。
すなわち、登録開始を指示すると、主制御部300のプログラムが実行され、格納すべきXMLデータ100を解析し、エレメントを取得してエレメントと属性のデータを対応するテーブルに格納する。
エレメントの取得とテーブルへの格納は、XMLデータのデータ本体部102のデータをルートからたどり、タグ名を参照して対応するテーブルを選択し、属性値があれば属性値を属性カラムに格納し、テキストデータがあればテキストカラムC2に格納する
【0024】
ダウングリップカラムC3に、エレメント出現順に若い値から割り当てる。すべてのエレメントに対して一意の値となる。アップグリップカラムC4には、当該エレメントの親エレメントに割り当てられたダウングリップの値となる。同じ値のアップグリップを持つエレメントが複数存在する場合、それらの出現順はダウングリップの若い順となっている。
ダウングリップに対応するアップグリップを持つ子エレメントが存在しない場合には、子が無いことを表す。
次に全エレメントが終了したかどうかを判断し、全エレメントの格納が終了していなければ次のエレメントを取得し、データ格納手順を繰り返す。
全エレメントのデータの格納が終了した場合には、登録すべき全XMLデータの格納が終了したがどうかが判断され、全XMLデータの格納が終了していなければ次のXMLデータを解析して、データの格納手順を繰り返す。全XMLデータの格納が終了した場合には、登録処理を終了する。
【0025】
図2(A),(C)に、XMLデータとこのXMLデータを格納したエレメントテーブルの格納例を示している。分かりやすくするために、XMLデータのツリー構造を示し(図2(B)参照)、XMLデータの個別データおよびツリー表示の各個別データ(ノード)にダウングリップの値を付した。
XMLデータのエレメントテーブルへの格納は次のようになされる。
1行目のルートタグからルートテーブル200を選択し、ルートテーブル200のダウングリップカラムに”0”、アップグリップカラムC4に対応する親エレメントが無いことを示す”−1”を格納する。
【0026】
2行目のメンバータグからメンバーテーブル201を選択し、このチャイルドテーブル201のダウングリップカラムC3に”1”、アップグリップカラムC4に”0”を記入する。
3行目のネームタグからネームテーブル202を選択し、このネームテーブル202のダウングリップカラムC3に”2”、アップグリップカラムC4に”1”を記入し、属性カラムC1に”09900”、テキストカラムC2に”Nancy”を記入する。
4行目のカンパニータグからカンパニーテーブル203を選択し、このカンパニーテーブル203のダウングリップカラムC3に”3”、アップグリップカラムC4に”1”を記入し、テキストカラムC2に”SEC”を記入する。
【0027】
6行目のメンバータグからメンバーテーブル201を選択し、このチャイルドテーブル201の2行目にダウングリップカラムC3に”4”、アップグリップカラムC4に”0”を記入する。
7行目のネームタグからネームテーブル202を選択し、このネームテーブル202のダウングリップカラムC3に”5”、アップグリップカラムC4に”4”を記入し、属性カラムC1に”10027”、テキストカラムC2に”John”を記入する。
8行目のカンパニータグからカンパニーテーブル203を選択し、このカンパニーテーブル203のダウングリップカラムC3に”6”、アップグリップカラムC4に”4”を記入し、テキストカラムC2に”SEC”を記入する。
【0028】
10行目のメンバータグからメンバーテーブル201を選択し、このチャイルドテーブル201の3行目にダウングリップカラムC3に”7”、アップグリップカラムC4に”0”を記入する。
11行目のネームタグからネームテーブル202を選択し、このネームテーブル202のダウングリップカラムC3に”8”、アップグリップカラムC4に”7”を記入し、属性カラムC1に”12469”、テキストカラムC2に”Tom”を記入する。
12行目のカンパニータグからカンパニーテーブル203を選択し、このカンパニーテーブル203のダウングリップカラムC3に”9”、アップグリップカラムC4に”7”を記入し、テキストカラムC2に”HAL”を記入する。
データ本体部102のデータを全てたどり終えると、登録処理を終了する。
【0029】
このように、フォルダに格納したXMLデータは、エレメントの内容、属性、階層構造、エレメントの出現順序等の情報がすべて登録されることになり、フォルダに保存された表形式のデータを、XMLデータに再現することが可能である。
【0030】
エレメント間の親子関係については、テーブルとは別にメモリ上に格納する。
図3にはエレメントの親子関係を付ける一例を示している。
図示例は、リンク関係を表形式で記憶した例で、テーブル600には、エレメント名カラム601と、テーブル名に一連の番号を順番に付けるテーブル番号カラム602と、各テーブルに対して親となるテーブルの番号を格納する親カラム603と、各テーブルの子となるテーブルの番号を格納する複数の子カラム604とが設けられている。この親子関係のデータは、各フォルダ402に対応付けられて管理されている。
【0031】
図示例では、エレメント名カラム601に”ルート(root)”、”メンバー(member)”、”ネーム(name)” 、”カンパニー(company)”を格納し、その横の番号カラムに、0、1、2、3と固有の番号を付ける。
そして、テーブルの1行目のルートエレメントについては、親カラムに”−1”(親エレメント無し)、子カラムに”1”を格納する。
テーブル600の2行目のメンバーエレメントについては、親カラムに”0”、子カラムに”2”, ”3”を格納する。
テーブルの3行目のネームエレメントについては、親カラムに”1”、子カラムに”−1”(子エレメント無し)を格納する。
テーブルの4行目のカンパニーエレメントについても、親カラムに”1”、子カラムに”−1”(子エレメント無し)を格納する。
【0032】
次に、本発明のXMLデータの検索装置について説明する。
図4には、検索処理手順のフローチャートを示している。
まず、検索条件を含む一連のエレメントの検索指定を読み込み、検索指定を解析する(S1)。
検索指定は、たとえばXPath等によって指定するもので、たとえばルートエレメントから結果として取得するエレメントまで指定され、各エレメントについて必要に応じて適宜検索条件が指定される。
次に、検索条件に対応するエレメントテーブルを検索し(S2)、 検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択する(S3)。
【0033】
この選択されたレコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し(S5)、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を(S6)、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択する(S4〜S6)。 次に、検索指定の先頭のエレメントに進み(S7)、現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し(S9)、下位のエレメントテーブルで結合対象となったレコードを選択する手順を(S10)、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する(S8〜S10)。
この最後のエレメントテーブルについて選択されたレコードに基づいてXMLデータを復元して表示する(S11)。
【0034】
次に、図5乃至図7を参照して、XMLデータの具体的な検索例1乃至3について説明する。XMLデータは図2に示す表形式で格納されたデータであり、図5乃至図7中、各エレメントテーブルでは、各行のレコード番号(No),カラムアップグリップカラムおよびダウングリップカラムのみを表示している。
検索の指定はXPathに準拠した形で指定する。
XPathの指定は、次の2つの部分に分かれる。
指定1.ドキュメントのルートから、結果として取得するエレメントまでの一連のエレメントのパスを指定する。
指定2.検索条件を表す述語を記載する。
【0035】
この指定に対して、次のように処理する。
処理1.
XPathの各ステップについて、述語(検索条件)が指定されていたら、対応するエレメントテーブルの検索を実行し、条件に合致するレコードを選択する。
1a.述語内で最も下のパスにあるエレメントテーブルで絞り込みを行い、レコードの選択情報を作成する。
1b.直上のパスのエレメントテーブルとジョインを行い、その結果を直上のエレメントテーブルで、ジョイン対象となったレコードを選択する。
この処理を検索条件が付随する検索起点エレメントに対応するエレメントテーブルまで繰り返し、検索起点エレメントのエレメントテーブルについて検索条件を反映させたレコードを選択する。
検索起点エレメントとは、たとえば、XPathの表現においては、検索条件を表す述語の直前(直上)に記述されたエレメントのことであり、検索条件(述語)が付随している。
ジョインとは、下位のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合する処理である。
処理2.
検索起点エレメントのエレメントテーブルについて検索条件が反映されたレコードが選択されたら、ドキュメントのルートから順に、直下のステップのエレメントテーブルのレコードまたは選択レコードとのジョインをし、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、最後のエレメントテーブルまで繰り返し、最後のエレメントテーブルに検索条件を反映させたレコードを選択する。
【0036】
検索例1
図5は、検索例1を示している。
検索指定は次の通りである。
/root/member[name/@id=‘10027’]
すなわち、一連のエレメントの指定はroot,memberであり、検索条件は括弧内の述語である。先頭のエレメントはルートエレメント(root)、最後のエレメントはメンバーエレメント(member)であり、検索起点エレメントのエレメントテーブルは検索条件の直上に位置するメンバーエレメント(member)である。検索条件はネームエレメント(name)の属性が10027のレコードである。
【0037】
処理1a
この例では、2番目のステップの述語中で最も下のパスにあるエレメントのネームテーブル202を検索し、ネームテーブル203の属性カラム、attr−id=‘10027’に合致するレコードを選択し、選択情報としてたとえば選択レコード番号(2)を記憶する。
選択情報としては、その他、テーブルの該当する個別データが格納されたレコードに、他のレコードと区別する情報を付けるようにしてもよい。
処理1b
次に、現在のネームテーブル202の選択レコード(2)のアップグリップカラム(4)と直上のメンバーテーブル201のダウングリップカラムが一致するレコードをジョインし、メンバーテーブル201でジョイン対象となったレコード(2)を選択する。
このメンバーテーブル201は検索起点エレメントに対応するエレメントテーブルであり、処理1bはこれで終了する。
【0038】
処理2
ルートエレメントのルートテーブル200のレコードのダウングリップカラム(0)と、メンバーテーブル201の処理1―bで選択された選択レコード2のアップグリップカラムが一致するレコードを結合し、下位のメンバーテーブルでジョイン対象となったレコードを選択する(選択レコード(2))。
メンバーテーブル201は最後のエレメントに対応しており、処理2は終了する。
。
処理2で選択された選択レコード(2)より、子エレメントを再帰的に復元し、元のXMLデータの断片である次のデータが検索結果となる。
【0039】
検索例2について
図6は、検索例2を示している。
この検索例2の指定は次の通りである。
例2
/root/member[company=‘SEC’]/ name
この指定は、一連のエレメントの指定はルートエレメント(root),メンバーエレメント(member),ネームエレメント(name)であり、検索条件は括弧内の述語である。先頭のエレメントはルートエレメント(root)、最後のエレメントはネームエレメント(name)であり、検索起点エレメントは検索条件の直上に位置するメンバーエレメント(member)である。検索条件はカンパニーエレメント(company)がSECであることが条件となっている。
【0040】
処理1a
この例では、2番目のステップの述語中で最も下のパスにあるエレメントのカンパニーテーブル203を検索し、カンパニーテーブル203のテキストカラムが‘SEC’に合致するレコードを選択し、選択情報として選択レコード番号(1,2)を記憶する。
処理1b
次に、現在のカンパニーテーブル203の選択レコード(1,2)のアップグリップカラム(1,4)と直上のメンバーテーブル201のダウングリップカラム(1,4)が一致するレコードをジョインし、メンバーテーブル201でジョイン対象となったレコード(1,2)を選択する。
このメンバーテーブル201は検索起点エレメントに対応するエレメントテーブルであり、処理1bはこれで終了する。
【0041】
処理2
ルートエレメントのルートテーブル200のレコードのダウングリップカラム(0)と、メンバーテーブル201の処理1―bで選択された選択レコード(1,2)のアップグリップカラム(0,0)が一致するレコードを結合し、下位のメンバーテーブル201でジョイン対象となったレコードを選択する(選択レコード(1,2))。
メンバーテーブル201は検索指定の最後のエレメントテーブルではないので、さらに処理を続行する。
すなわち、現在のメンバーテーブル201の選択レコード(1,2)のダウングリップカラム(1,4)と、ネームテーブル202のレコードのアップグリップカラム(1,4)が一致するレコードを結合し、下位のネームテーブル202でジョイン対象となったレコードを選択する(選択レコード(1,2))。
ネームテーブル202は最後のエレメントに対応しており、処理2は終了する。
処理2で選択されたネームテーブル202の選択レコード(1,2)より、子エレメントを再帰的に復元し、元のXMLデータの断片である次のデータが検索結果となる。
<name id=“09900”>Nancy</name>
<name id=“10027”>John</name>
【0042】
検索例3について
図7は、検索例3を示している。
この検索例3の指定は次の通りである。
/root/member
この指定は、一連のエレメントの指定はルートエレメント(root),メンバーエレメント(member)の2エレメントであり、検索条件は無い。先頭のエレメントはルートエレメント(root)、最後のエレメントはメンバーエレメント(member)である。
処理1a、1b
この例では、検索条件に対応するエレメントテーブルは無いので、処理1a,1bに相当する処理はない。
【0043】
処理2
ルートエレメントのルートテーブル200のレコードのダウングリップカラム(0)と、メンバーテーブル201のレコードのアップグリップカラムが一致するレコードを結合し、下位のメンバーテーブル201でジョイン対象となったレコードを選択する(選択レコード(1,2,3))。
メンバーテーブル201は検索指定の最後のエレメントテーブルなので処理2は終了する。
処理2で選択されたメンバーテーブル201の選択レコード(1,2,3)より、子エレメントを再帰的に復元し、元のXMLデータの断片である次のデータが検索結果となる。
【0044】
この検索例3では、メンバーエレメントの個別要素はすべて選択されることになるが、次の検索例4に示すように、XMLデータの構造によっては一部が除外される。
【0045】
図8は、検索例4を示している。
この検索例4のXMLデータは、メンバーエレメント(member)と並列にエー・エレメント(a)があり、このエー・エレメントの子要素としてメンバーエレメント(member)がつながっている構造である(図8(A),(B)参照)。
この場合のエレメントテーブルは、図8(C)に示す通り、エー・エレメントの子要素であるメンバーエレメントの個別データのアップグリップカラムは、エー・テーブルのダウングリップの値4が入れられる。
このようなXMLデータについて、次の検索指定をする。
/root/member
一連のエレメントの指定はルートエレメント(root),メンバーエレメント(member)の2エレメントであり、検索条件は無い。先頭のエレメントはルートエレメント(root)、最後のエレメントはメンバーエレメント(member)である。
【0046】
処理1a、1b
この例では、検索条件に対応するエレメントテーブルは無いので、処理1a,1bに相当する処理はない。
処理2
ルートエレメントのルートテーブル200のレコードのダウングリップカラム(0)と、メンバーテーブル201のレコードのアップグリップカラムが一致するレコードを結合し、下位のメンバーテーブル201でジョイン対象となったレコードを選択する(選択レコード(1,2,3))。
メンバーテーブル201は検索指定の最後のエレメントテーブルなので処理2は終了する。
処理2で選択されたメンバーテーブル201の選択レコード(1,2,3)より、子エレメントを再帰的に復元し、元のXMLデータの断片である次のデータが検索結果となり、aの子要素のメンバーエレメントの個別要素はジョイン処理によって除外される。
<member> … </member>
<member> … </member>
<member> … </member>
【0047】
上記各検索例では、検索指定(XPath)の検索条件(述語)内にエレメントが一つしか無いが、XML文書の内容や検索指定によって、検索条件として述語内にエレメントが複数記載される場合がある。
たとえば、
/root[member/company = “SEC”]という指定の場合には、検索条件に対応するエレメントはカンパニー(company)であり、検索起点エレメントはルート(root)である。
【0048】
他の実施の形態
上記実施の形態では、検索の指定をXPathに準拠した形で指定するようにしたが、XPathに準拠する必要はなく、検索条件を含む一連のエレメントを指定できればよい。
【0049】
【発明の効果】
以上説明したように、本発明によれば、検索条件がある場合には検索条件に合致する個別データのレコードを選択し、この選択した情報を検索条件が付随する検索起点エレメントに対応するエレメントテーブルまで反映させておき、次いで指定した先頭のエレメントから最後のエレメントまで結合処理とと結合結果のレコードの選択を繰り返すことにより、最後のエレメントテーブルについて、検索条件を反映したレコードを選択するようにしたので、ダウングリップとアップグリップの値を利用して機械的に結合、レコードの選択を繰り返すだけで、取得すべきエレメントの個別データを検索することができる。
【0050】
取得すべきエレメントの個別データおよびその子孫に当たるエレメントの個別データをXMLデータとして復元することにより、XMLデータとして利用できる。
【図面の簡単な説明】
【図1】図1(A)は本発明の実施の形態に係るXMLデータの検索装置を含むデータベースの概略構成を示す図、図1(B)は同図(A)の記憶装置のテーブルに形成されるカラムの種類を示す図である。
【図2】図2(A)はXMLデータの一例を示す図、同図(B)は同図(A)のデータのリンク関係をツリー構造にして示した図、同図(C)は同図(A)のデータを格納したテーブルのデータ格納状態を示す図である。
【図3】図3はテーブル間の親子関係情報を記憶するテーブル構成を示す図である。
【図4】図4は検索手順のフローチャートの一例である。
【図5】図2のXMLデータの検索例1の検索手順を模式的に示す説明図である。
、
【図6】図2のXMLデータの検索例2の検索手順を模式的に示す説明図である。
、
【図7】図2のXMLデータの検索例3の検索手順を模式的に示す説明図である。
【図8】図2と異なる構造のXMLデータの検索例4の説明図である。
【符号の説明】
100 XMLデータ
101 DTD
102 データ本体部
200,201,202 テーブル
300 格納処理部
400 記憶装置
500 検索処理部
C1 属性カラム
C2 テキストカラム
C3 ダウングリップカラム
C4 アップグリップカラム
Claims (7)
- 記憶装置のデータベース領域に、格納すべきXMLデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、
各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、
前記XMLデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したXMLデータの検索方法であって、
検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択することを特徴とすることを特徴とするXMLデータの検索方法。 - 検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてXMLデータを復元する請求項1に記載のXMLデータの検索方法。
- エレメント間の親子関係情報がエレメントテーブルとは別に記憶装置に保存され、この親子関係情報に基づいてエレメントテーブルをたどることを特徴とする請求項1または2記載のXMLデータの検索方法。
- 記憶装置のデータベース領域に、格納すべきXMLデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、
各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、
前記XMLデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したXMLデータの検索装置であって、
検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を実行する処理手段を備えたことを特徴とするXMLデータの検索装置。 - 処理手段は、検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてXMLデータを復元する請求項4に記載のXMLデータの検索装置。
- 検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を備えていることを特徴とするXMLデータの検索プログラム。 - 請求項6に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003099941A JP4398664B2 (ja) | 2003-04-03 | 2003-04-03 | Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003099941A JP4398664B2 (ja) | 2003-04-03 | 2003-04-03 | Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004310249A true JP2004310249A (ja) | 2004-11-04 |
JP4398664B2 JP4398664B2 (ja) | 2010-01-13 |
Family
ID=33464211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003099941A Expired - Fee Related JP4398664B2 (ja) | 2003-04-03 | 2003-04-03 | Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4398664B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100678123B1 (ko) | 2006-02-10 | 2007-02-02 | 삼성전자주식회사 | 관계형 데이터베이스에서의 xml 데이터 저장 방법 |
WO2009095981A1 (ja) * | 2008-01-28 | 2009-08-06 | Turbo Data Laboratories Inc. | 表からツリー構造データを構築する方法及び装置 |
US8086561B2 (en) | 2007-02-27 | 2011-12-27 | Kabushiki Kaisha Toshiba | Document searching system and document searching method |
JP2012032858A (ja) * | 2010-07-28 | 2012-02-16 | Nippon Telegr & Teleph Corp <Ntt> | 文書検索装置の動作方法およびこれをコンピュータに実行させるためのコンピュータプログラム |
-
2003
- 2003-04-03 JP JP2003099941A patent/JP4398664B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100678123B1 (ko) | 2006-02-10 | 2007-02-02 | 삼성전자주식회사 | 관계형 데이터베이스에서의 xml 데이터 저장 방법 |
US8086561B2 (en) | 2007-02-27 | 2011-12-27 | Kabushiki Kaisha Toshiba | Document searching system and document searching method |
WO2009095981A1 (ja) * | 2008-01-28 | 2009-08-06 | Turbo Data Laboratories Inc. | 表からツリー構造データを構築する方法及び装置 |
JP5241738B2 (ja) * | 2008-01-28 | 2013-07-17 | 株式会社ターボデータラボラトリー | 表からツリー構造データを構築する方法及び装置 |
JP2012032858A (ja) * | 2010-07-28 | 2012-02-16 | Nippon Telegr & Teleph Corp <Ntt> | 文書検索装置の動作方法およびこれをコンピュータに実行させるためのコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4398664B2 (ja) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3842577B2 (ja) | 構造化文書検索方法および構造化文書検索装置およびプログラム | |
JP3754253B2 (ja) | 構造化文書検索方法、構造化文書検索装置及び構造化文書検索システム | |
JP3842573B2 (ja) | 構造化文書検索方法、構造化文書管理装置及びプログラム | |
JP4045399B2 (ja) | 構造化文書管理装置及び構造化文書管理方法 | |
JP2004086782A (ja) | 異種データベース統合支援装置 | |
JP2008052662A (ja) | 構造化文書管理システム及びプログラム | |
JP2007156965A (ja) | 文書処理方法、プログラム及びシステム | |
JP3492246B2 (ja) | Xmlデータ検索処理方法および検索処理システム | |
US20060015809A1 (en) | Structured-document management apparatus, search apparatus, storage method, search method and program | |
JP4247108B2 (ja) | 構造化文書検索方法、構造化文書検索装置、及びプログラム | |
JP3560043B2 (ja) | Xmlデータの格納方法及び格納装置、並びにプログラムおよびプログラムを記録した記録媒体 | |
JP3914081B2 (ja) | アクセス権限設定方法および構造化文書管理システム | |
WO2006001241A1 (ja) | ノードを挿入する方法、装置及びプログラム | |
JP4398664B2 (ja) | Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 | |
US7895232B2 (en) | Object-oriented twig query evaluation | |
JP3842576B2 (ja) | 構造化文書編集方法及び構造化文書編集システム | |
JP3842572B2 (ja) | 構造化文書管理方法および構造化文書管理装置およびプログラム | |
US7487439B1 (en) | Method and apparatus for converting between data sets and XML documents | |
JPH09245052A (ja) | 構造化文書処理装置 | |
JP2010267081A (ja) | 情報検索方法及び装置及びプログラム | |
JP4983060B2 (ja) | 共通フォーマット作成プログラム | |
JP3842574B2 (ja) | 情報抽出方法および構造化文書管理装置およびプログラム | |
JP2004118543A (ja) | 構造化文書検索方法、検索支援方法、検索支援装置および検索支援プログラム | |
JP4242701B2 (ja) | 格納検索装置、格納検索プログラム、および格納検索プログラム記録媒体 | |
JP2004348479A (ja) | 検索装置、検索方法、検索プログラム、および検索プログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090317 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090518 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090721 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090909 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20091006 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091023 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121030 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121030 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151030 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |