(57)【要約】【課題】エレメント毎の表形式に格納したＸＭＬデータを効率的に検索するＸＭＬデータの検索方法を提供する。【解決手段】検索条件に対応するエレメントテーブルを検索し、検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、現在のエレメントテーブルの選択レコードと上位のエレメントテーブルをジョインし、ジョイン対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントに対応するエレメントテーブルまで繰り返し、検索指定の先頭のエレメントテーブルから検索指定の最後のエレメントまで、現在のエレメントテーブルの選択レコードと下位のエレメントテーブルをジョインし、ジョイン対象となったレコードを選択する手順を繰り返すことにより、最後のエレメントテーブルについて検索条件を反映したレコードを選択する。【選択図】  図４
2004310249.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置のデータベース領域に、格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、
各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、
前記ＸＭＬデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したＸＭＬデータの検索方法であって、
検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択することを特徴とすることを特徴とするＸＭＬデータの検索方法。
【請求項２】
検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてＸＭＬデータを復元する請求項１に記載のＸＭＬデータの検索方法。
【請求項３】
エレメント間の親子関係情報がエレメントテーブルとは別に記憶装置に保存され、この親子関係情報に基づいてエレメントテーブルをたどることを特徴とする請求項１または２記載のＸＭＬデータの検索方法。
【請求項４】
記憶装置のデータベース領域に、格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、
各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、
前記ＸＭＬデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したＸＭＬデータの検索装置であって、
検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を実行する処理手段を備えたことを特徴とするＸＭＬデータの検索装置。
【請求項５】
処理手段は、検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてＸＭＬデータを復元する請求項４に記載のＸＭＬデータの検索装置。
【請求項６】
検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を備えていることを特徴とするＸＭＬデータの検索プログラム。
【請求項７】
請求項６に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＸＭＬ（拡張可能なマーク付け言語；Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された階層構造を有するＸＭＬデータのデータベースに関するもので、特に、表形式のテーブルに格納したＸＭＬデータの検索技術に関する。
【０００２】
【従来の技術】
ＸＭＬデータをデータベース管理システムに格納し、また格納したデータを高速に検索する仕組みは、従来から様々な手法がとられてきた。
ＸＭＬデータをリレーショナルモデルに基づき格納する場合は、基本的に３つの方法が考えられる。
【０００３】
第１は、一つのＸＭＬデータを一つの文字列データとして格納する方法である。
この場合、基本的にはＸＭＬデータを格納するために設けたテーブルの特定のカラムに、ＸＭＬデータ全体が一つの文字列データとして格納される。
また、主に検索性能を向上させる目的で、ＸＭＬデータを文字列として格納するカラムとは別に同じテーブルに検索用のカラムを用意し、検索に使用するＸＭＬデータ中のエレメントまたは属性の値をあらかじめ抽出して当該カラムに格納しておく手法なども、同時に用いられることがある。
【０００４】
第２は、ＸＭＬデータの各エレメントと属性を分解し、あらかじめターゲットとなるＸＭＬ専用に設計し作成してある複数のテーブルの各カラムに、それぞれ対応させて格納する方法である。
この場合、全てのエレメント・属性の値を分解して格納する方法のほか、必要なエレメント・属性の値のみを抽出して格納する方法がある。後者の場合は、第１の方法と組み合わせて使用する場合もある。
【０００５】
第３は、ＸＭＬデータのエレメントまたは属性の情報を格納するテーブルと、エレメント間の親子関係を表わすリンク情報を格納するテーブルに分ける方法である。
リレーショナルデータベースにおいては、検索を高速化するために、検索対象となるエレメントまたは属性の値のインデックス情報を別途作成しておき、検索の際には最初にインデックス情報を参照して目的のデータを探す手法が一般的に用いられる。
【０００６】
【発明が解決しようとする課題】
第１の方法の問題点は、データベースにおいてはＸＭＬデータ全体を一つの文字列情報として扱うため、検索を高速化するためには特殊なインデックスなどをあらかじめ作成しておく必要があり、一つでも情報が変化した場合はインデックスを作成しなおす必要がある。
また、特定の位置にあるエレメントまたは属性の値についての範囲検索や集計などを高速に処理することが困難であるほか、エレメントや属性の値のデータ型が文字型に限定されてしまうなどの問題がある。
【０００７】
第２の方法の問題点は、格納対象となるＸＭＬデータの構造にしたがってあらかじめデータベースを設計しておく必要があるため、ＸＭＬデータの構造が変化すると設計からやり直す必要があり、ＸＭＬデータの持つ自由度や柔軟性を大きく阻害してしまうことである。
また、一般的に木構造を持つＸＭＬデータをリレーショナルモデルに対応付けることは技術的にも難しく、その結果として検索性能を向上させることも難しいものになる。
【０００８】
第３の方法の問題点は、特定の位置にあるエレメントまたは属性の情報を探すために毎回リンク情報を辿って行く必要があることで、ＸＭＬデータ構造や検索内容によってはリンクを何度も辿る必要があり、一般的に高速な検索処理を行うことが難しい。また第１の方法と同様に比較的多くのＸＭＬデータ構造に柔軟に対応できる半面、数値型や文字型などデータ型のバリエーションを持たせることは困難である。
その他の関連する技術としては、たとえば、特開２００２−７３５８９号、特開２００１−３４６１８号、特開２００１−３１８９３５号、特開２００１−２８２８５６号、特開２００１−１９５４０６号公報等がある。
【０００９】
本発明は、上記した従来技術の課題を解決するためになされたもので、その目的とするところは、表形式に格納したＸＭＬデータを効率的に検索するＸＭＬデータの検索方法および検索装置、並びにプログラムおよびプログラムを記録した記録媒体を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明のＸＭＬデータの検索方法は、  記憶装置のデータベース領域に、格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、
各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、
前記ＸＭＬデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したＸＭＬデータの検索方法である。
【００１１】
ＸＭＬデータとは、周知のＸＭＬで記述された階層構造を有するデータであり、エレメント（要素）を単位とし、エレメントはデータにその内容を示すタグを付けて記述される。エレメントをグループ化することによってエレメントの階層構造が表現され、全体として木構造（ツリー構造）のモデルで表現できる。
【００１２】
使用するエレメントやデータ内容、エレメントの属性、エレメント間の親子兄弟関係等の規則はスキーマとして設計される。スキーマの記述方法としては、たとえばＤＴＤ等が定められているが、ＤＴＤに即した記述に限定されるものではなく、ＸＭＬ  Ｓｃｈｅｍａ等、種々の言語を用いることができる。
【００１３】
本発明は、検索条件を含む一連のエレメントの検索指定を読み込み、
前記検索条件に対応するエレメントテーブルを検索し、
検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、
現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択することを特徴とすることを特徴とする。
【００１４】
また、検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてＸＭＬデータを復元することを特徴とする。
エレメント間の親子関係情報がエレメントテーブルとは別に記憶装置に保存され、この親子関係情報に基づいてエレメントテーブルをたどることを特徴とする。
【００１５】
本発明のＸＭＬデータの検索装置は、記憶装置のデータベース領域に、格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎にエレメントテーブルを作成し、各エレメントテーブルには、エレメントの個別データを入れるカラムと、ダウングリップカラムと、アップグリップカラムを作成し、前記ＸＭＬデータの個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に、個別データの出現順序情報を前記ダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて個別データ間にリンク関係を付けた状態で一行のレコードとして格納したＸＭＬデータの検索装置である。
【００１６】
すなわち、検索条件を含む一連のエレメントの検索指定を読み込み、前記検索条件に対応するエレメントテーブルを検索し、検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、
前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、
検索指定の先頭のエレメントに進み、現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を実行する処理手段を備えたことを特徴とする。
処理手段は、検索指定の最後のエレメントテーブルについて選択されたレコードに基づいてＸＭＬデータを復元する。
【００１７】
本発明は、上記ＸＭＬデータの検索方法をコンピュータに実行させるためのプログラムおよびこのプログラムを記録したコンピュータ読取可能な記録媒体も提供する。
すなわち、このプログラムは、検索条件を含む一連のエレメントの検索指定を読み込み、前記検索条件に対応するエレメントテーブルを検索し、検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択し、前記レコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択し、検索指定の先頭のエレメントに進み、現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する手順を備えていることを特徴とする。
【００１８】
【発明の実施の形態】
以下に本発明を図示の実施の形態に基づいて説明する。
図１（Ａ）は、本発明のＸＭＬデータ検索装置を含むデータベースの装置構成を概念的に示している。
データベースは、データを記憶するデータベース領域４０１を備えた記憶装置４００と、ＸＭＬデータ１００のスキーマ情報が記述されたＤＴＤ１０１（文書型定義；Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）で定義されているエレメント毎に記憶装置４００のデータベース領域４０１にテーブル２００，…を作成し、実際のタグ付きデータが記述されたデータ本体部１０２のデータを対応する各テーブル２００，２０１，２０２に振り分けて格納するようにプログラムされた格納処理部３００と、各テーブル２００、…に格納されたデータを検索する検索処理部５００とを備えている。また、検索処理部５００に対して検索条件を入力する入力操作部５０１と、検索処理部５００による検索結果を出力する表示部５０２を備えている。
テータベース領域４０１にはフォルダ４０２が作成され、このフォルダ４０２内にＤＴＤ１０１と共に各テーブル２００，…が作成される。
【００１９】
まず、前提となるデータ格納について説明し、その後にデータ検索について説明する。
格納処理部３００および検索処理部５００は、特に図示しないが、通常のコンピュータのマイクロプロセッサ（ＣＰＵ）とＲＡＭ等の主記憶装置を含む構成で、主記憶装置に読み込まれたプログラムに従ってデータが処理される。
テーブル２００，・・・が作成される記憶装置４００についてもＲＡＭ等の主記憶装置が用いられる。
プログラムは一般的にはハードディスク等の補助記憶装置に記憶され、処理実行時に主記憶装置に読み出されて実行される。  プログラムは、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ等種々の記録媒体に格納することができるし、ネットワークを介して配信することもできる。
【００２０】
ＸＭＬはスキーマ情報としてＤＴＤ等の記載を不要とすることができる構造化データ記述言語であるが、本発明で扱うＸＭＬデータ１００は、スキーマ情報を必要とする。スキーマ情報としては、ＤＴＤ１０１に限定されるものではなく、ＸＭＬ  ＳｃｈｅｍａやＲＥＬＡＸ  ＮＧなどの他のスキーマ言語を用いた情報でもよい。図１（Ａ）において、ＤＴＤ１０１が必要となるのは、最初にフォルダ４０２を作成する際のみで、ＸＭＬデータを格納する際には不要である。
【００２１】
図１（Ｂ）には、テーブルに作成されるカラムが例示されている。
属性（ａｔｔｒ−）カラムＣ１は個別データの内容に関するカラムの一つで、属性値が格納される。属性省略時にはＮＵＬＬ値を格納する。
テキスト（ｔｅｘｔ）カラムＣ２も個別データの内容に関するカラムの一つで、エレメントの個別データの内容のテキスト値が格納される。このテキストカラムは、テキスト値を持つ場合のみ記入される。
ダウングリップ（ｄｏｗｎ−ｇｒｉｐ）カラムＣ３には、データ本体部１０２のデータ出現順に出現順序情報として順番号が割り当てられる。
【００２２】
アップグリップ（ｕｐ−ｇｒｉｐ）カラムＣ４には、対応する親エレメントのダウングリップの値が格納される。ダウングリップに対応する、アップグリップを持つ子エレメントが存在しない場合には、子となるデータが無いことを表示する。
【００２３】
ＸＭＬデータの格納は、まず、ＤＴＤを指定してフォルダ４０２内にテーブルを作成し、当該ＤＴＤに従うＸＭＬデータについて、ルートエレメントから順に、個別データをそれぞれ対応するエレメントテーブルのカラムに格納すると共に格納していく。格納は、個別データの出現順序情報をダウングリップカラムに、個別データの親に当たる個別データのダウングリップカラムの出現順序情報をアップグリップカラムに割り当てて、個別データ間にリンク関係を付けた状態で１行のレコードとして格納する。
すなわち、登録開始を指示すると、主制御部３００のプログラムが実行され、格納すべきＸＭＬデータ１００を解析し、エレメントを取得してエレメントと属性のデータを対応するテーブルに格納する。
エレメントの取得とテーブルへの格納は、ＸＭＬデータのデータ本体部１０２のデータをルートからたどり、タグ名を参照して対応するテーブルを選択し、属性値があれば属性値を属性カラムに格納し、テキストデータがあればテキストカラムＣ２に格納する
【００２４】
ダウングリップカラムＣ３に、エレメント出現順に若い値から割り当てる。すべてのエレメントに対して一意の値となる。アップグリップカラムＣ４には、当該エレメントの親エレメントに割り当てられたダウングリップの値となる。同じ値のアップグリップを持つエレメントが複数存在する場合、それらの出現順はダウングリップの若い順となっている。
ダウングリップに対応するアップグリップを持つ子エレメントが存在しない場合には、子が無いことを表す。
次に全エレメントが終了したかどうかを判断し、全エレメントの格納が終了していなければ次のエレメントを取得し、データ格納手順を繰り返す。
全エレメントのデータの格納が終了した場合には、登録すべき全ＸＭＬデータの格納が終了したがどうかが判断され、全ＸＭＬデータの格納が終了していなければ次のＸＭＬデータを解析して、データの格納手順を繰り返す。全ＸＭＬデータの格納が終了した場合には、登録処理を終了する。
【００２５】
図２（Ａ），（Ｃ）に、ＸＭＬデータとこのＸＭＬデータを格納したエレメントテーブルの格納例を示している。分かりやすくするために、ＸＭＬデータのツリー構造を示し（図２（Ｂ）参照）、ＸＭＬデータの個別データおよびツリー表示の各個別データ（ノード）にダウングリップの値を付した。
ＸＭＬデータのエレメントテーブルへの格納は次のようになされる。
１行目のルートタグからルートテーブル２００を選択し、ルートテーブル２００のダウングリップカラムに”０”、アップグリップカラムＣ４に対応する親エレメントが無いことを示す”−１”を格納する。
【００２６】
２行目のメンバータグからメンバーテーブル２０１を選択し、このチャイルドテーブル２０１のダウングリップカラムＣ３に”１”、アップグリップカラムＣ４に”０”を記入する。
３行目のネームタグからネームテーブル２０２を選択し、このネームテーブル２０２のダウングリップカラムＣ３に”２”、アップグリップカラムＣ４に”１”を記入し、属性カラムＣ１に”０９９００”、テキストカラムＣ２に”Ｎａｎｃｙ”を記入する。
４行目のカンパニータグからカンパニーテーブル２０３を選択し、このカンパニーテーブル２０３のダウングリップカラムＣ３に”３”、アップグリップカラムＣ４に”１”を記入し、テキストカラムＣ２に”ＳＥＣ”を記入する。
【００２７】
６行目のメンバータグからメンバーテーブル２０１を選択し、このチャイルドテーブル２０１の２行目にダウングリップカラムＣ３に”４”、アップグリップカラムＣ４に”０”を記入する。
７行目のネームタグからネームテーブル２０２を選択し、このネームテーブル２０２のダウングリップカラムＣ３に”５”、アップグリップカラムＣ４に”４”を記入し、属性カラムＣ１に”１００２７”、テキストカラムＣ２に”Ｊｏｈｎ”を記入する。
８行目のカンパニータグからカンパニーテーブル２０３を選択し、このカンパニーテーブル２０３のダウングリップカラムＣ３に”６”、アップグリップカラムＣ４に”４”を記入し、テキストカラムＣ２に”ＳＥＣ”を記入する。
【００２８】
１０行目のメンバータグからメンバーテーブル２０１を選択し、このチャイルドテーブル２０１の３行目にダウングリップカラムＣ３に”７”、アップグリップカラムＣ４に”０”を記入する。
１１行目のネームタグからネームテーブル２０２を選択し、このネームテーブル２０２のダウングリップカラムＣ３に”８”、アップグリップカラムＣ４に”７”を記入し、属性カラムＣ１に”１２４６９”、テキストカラムＣ２に”Ｔｏｍ”を記入する。
１２行目のカンパニータグからカンパニーテーブル２０３を選択し、このカンパニーテーブル２０３のダウングリップカラムＣ３に”９”、アップグリップカラムＣ４に”７”を記入し、テキストカラムＣ２に”ＨＡＬ”を記入する。
データ本体部１０２のデータを全てたどり終えると、登録処理を終了する。
【００２９】
このように、フォルダに格納したＸＭＬデータは、エレメントの内容、属性、階層構造、エレメントの出現順序等の情報がすべて登録されることになり、フォルダに保存された表形式のデータを、ＸＭＬデータに再現することが可能である。
【００３０】
エレメント間の親子関係については、テーブルとは別にメモリ上に格納する。
図３にはエレメントの親子関係を付ける一例を示している。
図示例は、リンク関係を表形式で記憶した例で、テーブル６００には、エレメント名カラム６０１と、テーブル名に一連の番号を順番に付けるテーブル番号カラム６０２と、各テーブルに対して親となるテーブルの番号を格納する親カラム６０３と、各テーブルの子となるテーブルの番号を格納する複数の子カラム６０４とが設けられている。この親子関係のデータは、各フォルダ４０２に対応付けられて管理されている。
【００３１】
図示例では、エレメント名カラム６０１に”ルート（ｒｏｏｔ）”、”メンバー（ｍｅｍｂｅｒ）”、”ネーム（ｎａｍｅ）”  、”カンパニー（ｃｏｍｐａｎｙ）”を格納し、その横の番号カラムに、０、１、２、３と固有の番号を付ける。
そして、テーブルの１行目のルートエレメントについては、親カラムに”−１”（親エレメント無し）、子カラムに”１”を格納する。
テーブル６００の２行目のメンバーエレメントについては、親カラムに”０”、子カラムに”２”，  ”３”を格納する。
テーブルの３行目のネームエレメントについては、親カラムに”１”、子カラムに”−１”（子エレメント無し）を格納する。
テーブルの４行目のカンパニーエレメントについても、親カラムに”１”、子カラムに”−１”（子エレメント無し）を格納する。
【００３２】
次に、本発明のＸＭＬデータの検索装置について説明する。
図４には、検索処理手順のフローチャートを示している。
まず、検索条件を含む一連のエレメントの検索指定を読み込み、検索指定を解析する（Ｓ１）。
検索指定は、たとえばＸＰａｔｈ等によって指定するもので、たとえばルートエレメントから結果として取得するエレメントまで指定され、各エレメントについて必要に応じて適宜検索条件が指定される。
次に、検索条件に対応するエレメントテーブルを検索し（Ｓ２）、  検索されたエレメントテーブルに格納された個別データのうち検索条件に合致する個別データのレコードを選択する（Ｓ３）。
【００３３】
この選択されたレコードの選択情報を出発点とし、現在のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合し（Ｓ５）、前記上位のエレメントテーブルで結合対象となったレコードを選択する手順を（Ｓ６）、検索条件が付随する検索起点エレメントのエレメントテーブルまで繰り返すことにより検索起点エレメントのエレメントテーブルについて検索条件を反映したレコードを選択する（Ｓ４〜Ｓ６）。  次に、検索指定の先頭のエレメントに進み（Ｓ７）、現在のエレメントテーブルのレコードまたは選択レコードのダウングリップグリップカラムと下位のエレメントテーブルのレコードまたは選択レコードのアップグリップカラムが一致するレコードを結合し（Ｓ９）、下位のエレメントテーブルで結合対象となったレコードを選択する手順を（Ｓ１０）、検索指定の最後のエレメントのエレメントテーブルまで繰り返すことにより最後のエレメントテーブルについて検索条件を反映したレコードを選択する（Ｓ８〜Ｓ１０）。
この最後のエレメントテーブルについて選択されたレコードに基づいてＸＭＬデータを復元して表示する（Ｓ１１）。
【００３４】
次に、図５乃至図７を参照して、ＸＭＬデータの具体的な検索例１乃至３について説明する。ＸＭＬデータは図２に示す表形式で格納されたデータであり、図５乃至図７中、各エレメントテーブルでは、各行のレコード番号（Ｎｏ），カラムアップグリップカラムおよびダウングリップカラムのみを表示している。
検索の指定はＸＰａｔｈに準拠した形で指定する。
ＸＰａｔｈの指定は、次の２つの部分に分かれる。
指定１．ドキュメントのルートから、結果として取得するエレメントまでの一連のエレメントのパスを指定する。
指定２．検索条件を表す述語を記載する。
【００３５】
この指定に対して、次のように処理する。
処理１．
ＸＰａｔｈの各ステップについて、述語（検索条件）が指定されていたら、対応するエレメントテーブルの検索を実行し、条件に合致するレコードを選択する。
１ａ．述語内で最も下のパスにあるエレメントテーブルで絞り込みを行い、レコードの選択情報を作成する。
１ｂ．直上のパスのエレメントテーブルとジョインを行い、その結果を直上のエレメントテーブルで、ジョイン対象となったレコードを選択する。
この処理を検索条件が付随する検索起点エレメントに対応するエレメントテーブルまで繰り返し、検索起点エレメントのエレメントテーブルについて検索条件を反映させたレコードを選択する。
検索起点エレメントとは、たとえば、ＸＰａｔｈの表現においては、検索条件を表す述語の直前（直上）に記述されたエレメントのことであり、検索条件（述語）が付随している。
ジョインとは、下位のエレメントテーブルの選択レコードのアップグリップカラムと上位のエレメントテーブルのダウングリップカラムが一致するレコードを結合する処理である。
処理２．
検索起点エレメントのエレメントテーブルについて検索条件が反映されたレコードが選択されたら、ドキュメントのルートから順に、直下のステップのエレメントテーブルのレコードまたは選択レコードとのジョインをし、下位のエレメントテーブルで結合対象となったレコードを選択する手順を、最後のエレメントテーブルまで繰り返し、最後のエレメントテーブルに検索条件を反映させたレコードを選択する。
【００３６】
検索例１
図５は、検索例１を示している。
検索指定は次の通りである。
／ｒｏｏｔ／ｍｅｍｂｅｒ［ｎａｍｅ／＠ｉｄ＝‘１００２７’］
すなわち、一連のエレメントの指定はｒｏｏｔ，ｍｅｍｂｅｒであり、検索条件は括弧内の述語である。先頭のエレメントはルートエレメント（ｒｏｏｔ）、最後のエレメントはメンバーエレメント（ｍｅｍｂｅｒ）であり、検索起点エレメントのエレメントテーブルは検索条件の直上に位置するメンバーエレメント（ｍｅｍｂｅｒ）である。検索条件はネームエレメント（ｎａｍｅ）の属性が１００２７のレコードである。
【００３７】
処理１ａ
この例では、２番目のステップの述語中で最も下のパスにあるエレメントのネームテーブル２０２を検索し、ネームテーブル２０３の属性カラム、ａｔｔｒ−ｉｄ＝‘１００２７’に合致するレコードを選択し、選択情報としてたとえば選択レコード番号（２）を記憶する。
選択情報としては、その他、テーブルの該当する個別データが格納されたレコードに、他のレコードと区別する情報を付けるようにしてもよい。
処理１ｂ
次に、現在のネームテーブル２０２の選択レコード（２）のアップグリップカラム（４）と直上のメンバーテーブル２０１のダウングリップカラムが一致するレコードをジョインし、メンバーテーブル２０１でジョイン対象となったレコード（２）を選択する。
このメンバーテーブル２０１は検索起点エレメントに対応するエレメントテーブルであり、処理１ｂはこれで終了する。
【００３８】
処理２
ルートエレメントのルートテーブル２００のレコードのダウングリップカラム（０）と、メンバーテーブル２０１の処理１―ｂで選択された選択レコード２のアップグリップカラムが一致するレコードを結合し、下位のメンバーテーブルでジョイン対象となったレコードを選択する（選択レコード（２））。
メンバーテーブル２０１は最後のエレメントに対応しており、処理２は終了する。
。
処理２で選択された選択レコード（２）より、子エレメントを再帰的に復元し、元のＸＭＬデータの断片である次のデータが検索結果となる。
2004310249.tif 000003
【００３９】
検索例２について
図６は、検索例２を示している。
この検索例２の指定は次の通りである。
例２
／ｒｏｏｔ／ｍｅｍｂｅｒ［ｃｏｍｐａｎｙ＝‘ＳＥＣ’］／  ｎａｍｅ
この指定は、一連のエレメントの指定はルートエレメント（ｒｏｏｔ），メンバーエレメント（ｍｅｍｂｅｒ），ネームエレメント（ｎａｍｅ）であり、検索条件は括弧内の述語である。先頭のエレメントはルートエレメント（ｒｏｏｔ）、最後のエレメントはネームエレメント（ｎａｍｅ）であり、検索起点エレメントは検索条件の直上に位置するメンバーエレメント（ｍｅｍｂｅｒ）である。検索条件はカンパニーエレメント（ｃｏｍｐａｎｙ）がＳＥＣであることが条件となっている。
【００４０】
処理１ａ
この例では、２番目のステップの述語中で最も下のパスにあるエレメントのカンパニーテーブル２０３を検索し、カンパニーテーブル２０３のテキストカラムが‘ＳＥＣ’に合致するレコードを選択し、選択情報として選択レコード番号（１，２）を記憶する。
処理１ｂ
次に、現在のカンパニーテーブル２０３の選択レコード（１，２）のアップグリップカラム（１，４）と直上のメンバーテーブル２０１のダウングリップカラム（１，４）が一致するレコードをジョインし、メンバーテーブル２０１でジョイン対象となったレコード（１，２）を選択する。
このメンバーテーブル２０１は検索起点エレメントに対応するエレメントテーブルであり、処理１ｂはこれで終了する。
【００４１】
処理２
ルートエレメントのルートテーブル２００のレコードのダウングリップカラム（０）と、メンバーテーブル２０１の処理１―ｂで選択された選択レコード（１，２）のアップグリップカラム（０，０）が一致するレコードを結合し、下位のメンバーテーブル２０１でジョイン対象となったレコードを選択する（選択レコード（１，２））。
メンバーテーブル２０１は検索指定の最後のエレメントテーブルではないので、さらに処理を続行する。
すなわち、現在のメンバーテーブル２０１の選択レコード（１，２）のダウングリップカラム（１，４）と、ネームテーブル２０２のレコードのアップグリップカラム（１，４）が一致するレコードを結合し、下位のネームテーブル２０２でジョイン対象となったレコードを選択する（選択レコード（１，２））。
ネームテーブル２０２は最後のエレメントに対応しており、処理２は終了する。
処理２で選択されたネームテーブル２０２の選択レコード（１，２）より、子エレメントを再帰的に復元し、元のＸＭＬデータの断片である次のデータが検索結果となる。
＜ｎａｍｅ  ｉｄ＝“０９９００”＞Ｎａｎｃｙ＜／ｎａｍｅ＞
＜ｎａｍｅ  ｉｄ＝“１００２７”＞Ｊｏｈｎ＜／ｎａｍｅ＞
【００４２】
検索例３について
図７は、検索例３を示している。
この検索例３の指定は次の通りである。
／ｒｏｏｔ／ｍｅｍｂｅｒ
この指定は、一連のエレメントの指定はルートエレメント（ｒｏｏｔ），メンバーエレメント（ｍｅｍｂｅｒ）の２エレメントであり、検索条件は無い。先頭のエレメントはルートエレメント（ｒｏｏｔ）、最後のエレメントはメンバーエレメント（ｍｅｍｂｅｒ）である。
処理１ａ、１ｂ
この例では、検索条件に対応するエレメントテーブルは無いので、処理１ａ，１ｂに相当する処理はない。
【００４３】
処理２
ルートエレメントのルートテーブル２００のレコードのダウングリップカラム（０）と、メンバーテーブル２０１のレコードのアップグリップカラムが一致するレコードを結合し、下位のメンバーテーブル２０１でジョイン対象となったレコードを選択する（選択レコード（１，２，３））。
メンバーテーブル２０１は検索指定の最後のエレメントテーブルなので処理２は終了する。
処理２で選択されたメンバーテーブル２０１の選択レコード（１，２，３）より、子エレメントを再帰的に復元し、元のＸＭＬデータの断片である次のデータが検索結果となる。
2004310249.tif 000004
【００４４】
この検索例３では、メンバーエレメントの個別要素はすべて選択されることになるが、次の検索例４に示すように、ＸＭＬデータの構造によっては一部が除外される。
【００４５】
図８は、検索例４を示している。
この検索例４のＸＭＬデータは、メンバーエレメント（ｍｅｍｂｅｒ）と並列にエー・エレメント（ａ）があり、このエー・エレメントの子要素としてメンバーエレメント（ｍｅｍｂｅｒ）がつながっている構造である（図８（Ａ），（Ｂ）参照）。
この場合のエレメントテーブルは、図８（Ｃ）に示す通り、エー・エレメントの子要素であるメンバーエレメントの個別データのアップグリップカラムは、エー・テーブルのダウングリップの値４が入れられる。
このようなＸＭＬデータについて、次の検索指定をする。
／ｒｏｏｔ／ｍｅｍｂｅｒ
一連のエレメントの指定はルートエレメント（ｒｏｏｔ），メンバーエレメント（ｍｅｍｂｅｒ）の２エレメントであり、検索条件は無い。先頭のエレメントはルートエレメント（ｒｏｏｔ）、最後のエレメントはメンバーエレメント（ｍｅｍｂｅｒ）である。
【００４６】
処理１ａ、１ｂ
この例では、検索条件に対応するエレメントテーブルは無いので、処理１ａ，１ｂに相当する処理はない。
処理２
ルートエレメントのルートテーブル２００のレコードのダウングリップカラム（０）と、メンバーテーブル２０１のレコードのアップグリップカラムが一致するレコードを結合し、下位のメンバーテーブル２０１でジョイン対象となったレコードを選択する（選択レコード（１，２，３））。
メンバーテーブル２０１は検索指定の最後のエレメントテーブルなので処理２は終了する。
処理２で選択されたメンバーテーブル２０１の選択レコード（１，２，３）より、子エレメントを再帰的に復元し、元のＸＭＬデータの断片である次のデータが検索結果となり、ａの子要素のメンバーエレメントの個別要素はジョイン処理によって除外される。
＜ｍｅｍｂｅｒ＞  …  ＜／ｍｅｍｂｅｒ＞
＜ｍｅｍｂｅｒ＞  …  ＜／ｍｅｍｂｅｒ＞
＜ｍｅｍｂｅｒ＞  …  ＜／ｍｅｍｂｅｒ＞
【００４７】
上記各検索例では、検索指定（ＸＰａｔｈ）の検索条件（述語）内にエレメントが一つしか無いが、ＸＭＬ文書の内容や検索指定によって、検索条件として述語内にエレメントが複数記載される場合がある。
たとえば、
／ｒｏｏｔ［ｍｅｍｂｅｒ／ｃｏｍｐａｎｙ  ＝  “ＳＥＣ”］という指定の場合には、検索条件に対応するエレメントはカンパニー（ｃｏｍｐａｎｙ）であり、検索起点エレメントはルート（ｒｏｏｔ）である。
【００４８】
他の実施の形態
上記実施の形態では、検索の指定をＸＰａｔｈに準拠した形で指定するようにしたが、ＸＰａｔｈに準拠する必要はなく、検索条件を含む一連のエレメントを指定できればよい。
【００４９】
【発明の効果】
以上説明したように、本発明によれば、検索条件がある場合には検索条件に合致する個別データのレコードを選択し、この選択した情報を検索条件が付随する検索起点エレメントに対応するエレメントテーブルまで反映させておき、次いで指定した先頭のエレメントから最後のエレメントまで結合処理とと結合結果のレコードの選択を繰り返すことにより、最後のエレメントテーブルについて、検索条件を反映したレコードを選択するようにしたので、ダウングリップとアップグリップの値を利用して機械的に結合、レコードの選択を繰り返すだけで、取得すべきエレメントの個別データを検索することができる。
【００５０】
取得すべきエレメントの個別データおよびその子孫に当たるエレメントの個別データをＸＭＬデータとして復元することにより、ＸＭＬデータとして利用できる。
【図面の簡単な説明】
【図１】図１（Ａ）は本発明の実施の形態に係るＸＭＬデータの検索装置を含むデータベースの概略構成を示す図、図１（Ｂ）は同図（Ａ）の記憶装置のテーブルに形成されるカラムの種類を示す図である。
【図２】図２（Ａ）はＸＭＬデータの一例を示す図、同図（Ｂ）は同図（Ａ）のデータのリンク関係をツリー構造にして示した図、同図（Ｃ）は同図（Ａ）のデータを格納したテーブルのデータ格納状態を示す図である。
【図３】図３はテーブル間の親子関係情報を記憶するテーブル構成を示す図である。
【図４】図４は検索手順のフローチャートの一例である。
【図５】図２のＸＭＬデータの検索例１の検索手順を模式的に示す説明図である。
、
【図６】図２のＸＭＬデータの検索例２の検索手順を模式的に示す説明図である。
、
【図７】図２のＸＭＬデータの検索例３の検索手順を模式的に示す説明図である。
【図８】図２と異なる構造のＸＭＬデータの検索例４の説明図である。
【符号の説明】
１００  ＸＭＬデータ
１０１  ＤＴＤ
１０２  データ本体部
２００，２０１，２０２  テーブル
３００  格納処理部
４００  記憶装置
５００  検索処理部
Ｃ１  属性カラム
Ｃ２  テキストカラム
Ｃ３  ダウングリップカラム
Ｃ４  アップグリップカラム
【図１】
2004310249.tif 000005
【図２】
2004310249.tif 000006
【図３】
2004310249.tif 000007
【図４】
2004310249.tif 000008
【図５】
2004310249.tif 000009
【図６】
2004310249.tif 000010
【図７】
2004310249.tif 000011
【図８】
2004310249.tif 000012
【手続補正書】
【提出日】平成15年5月14日(2003.5.14)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】変更
【補正の内容】
【図面の簡単な説明】
【図１】図１（Ａ）は本発明の実施の形態に係るＸＭＬデータの検索装置を含むデータベースの概略構成を示す図、図１（Ｂ）は同図（Ａ）の記憶装置のテーブルに形成されるカラムの種類を示す図である。
【図２】図２（Ａ）はＸＭＬデータの一例を示す図、同図（Ｂ）は同図（Ａ）のデータのリンク関係をツリー構造にして示した図、同図（Ｃ）は同図（Ａ）のデータを格納したテーブルのデータ格納状態を示す図である。
【図３】図３はテーブル間の親子関係情報を記憶するテーブル構成を示す図である。
【図４】図４は検索手順のフローチャートの一例である。
【図５】図２のＸＭＬデータの検索例１の検索手順を模式的に示す説明図である。
【図６】図２のＸＭＬデータの検索例２の検索手順を模式的に示す説明図である。
【図７】図２のＸＭＬデータの検索例３の検索手順を模式的に示す説明図である。
【図８】図２と異なる構造のＸＭＬデータの検索例４の説明図である。
【符号の説明】
１００  ＸＭＬデータ
１０１  ＤＴＤ
１０２  データ本体部
２００，２０１，２０２  テーブル
３００  格納処理部
４００  記憶装置
５００  検索処理部
Ｃ１  属性カラム
Ｃ２  テキストカラム
Ｃ３  ダウングリップカラム
Ｃ４  アップグリップカラム