JP3492246B2 - Xmlデータ検索処理方法および検索処理システム - Google Patents

Xmlデータ検索処理方法および検索処理システム

Info

Publication number
JP3492246B2
JP3492246B2 JP20390799A JP20390799A JP3492246B2 JP 3492246 B2 JP3492246 B2 JP 3492246B2 JP 20390799 A JP20390799 A JP 20390799A JP 20390799 A JP20390799 A JP 20390799A JP 3492246 B2 JP3492246 B2 JP 3492246B2
Authority
JP
Japan
Prior art keywords
search
xml data
xml
specify
identifier
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.)
Expired - Fee Related
Application number
JP20390799A
Other languages
English (en)
Other versions
JP2001034618A (ja
Inventor
和己 久保田
泰彦 金政
博 石川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP20390799A priority Critical patent/JP3492246B2/ja
Publication of JP2001034618A publication Critical patent/JP2001034618A/ja
Application granted granted Critical
Publication of JP3492246B2 publication Critical patent/JP3492246B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】XMLデータは WEB情報
システムやEC/EDI応用で広く使われることが期待
されている。そのような応用は通常大量のXML デー
タを利用する。このため、第1にユーザがそのような応
用の柔軟な記述のために検索条件を指定してXMLデー
タの必要な部分だけを検索できるようにする必要があ
る。また、第2に異なるデータソースのXMLデータを
組み合わせて、新たなXMLデータを生成できるように
する必要がある。本発明は、XMLデータのデータベー
スへの格納、検索のための格納構造、検索インデックス
の利用、検索言語の設計、実行最適化を含めた検索処理
を実現するXMLデータ検索処理方法および検索処理シ
ステムに関する。
【0002】
【従来の技術】従来のデータベースシステムではすべて
のデータを明示的で厳密なスキーマに当てはめることを
強制している。このことは多くの新しいDBアプリケー
ションに大きな負担となっている。たとえば、データは
不規則かもしれないので厳密なスキーマを受け入れない
かもしれない。たとえばリレーショナルシステムではnu
ll値は不正なデータを表現するのに用いる。ODBのコ
ンプレツクスデータ型や継承はその表現をより柔軟には
するが、不規則なデータを入れる適当なOOスキーマを
設計するのは依然として困難である。単一の正しいスキ
ーマを決めるのは難しい。データの構造はすぐに変わ
る。データは型を変えたり、あるいは以前の構造にあわ
ないようなデータが追加されるかもしれない。XMLで
記述されるデータは後で述べるように、あらかじめ回数
が厳密にさまつていないような繰り返し項目や欠損のあ
るデータを含んでいる。したがってXMLデータの検索
に用いるシステムはここで述べたような不規則なデータ
を扱えるようなシステムである必要がある。
【0003】図10にXMLデータの例を示す。これは
ある文献に関するデータをXMLで表現したものであ
る。説明のために構造が比較的単純なものであるが、伝
票などのデータや技術文書などのデータも似たようなも
のになる。ここで説明に用いるXMLデータのDTD
(Data type difinition: 文書型宣言)は図11に示す
ようなものである。book等の後ろに付した+は複数であ
ることを示し、このXMLデータは、同図の〈!ELEMNT
〜〉で示すように、bib の中に複数のbookがあり、book
の中にtitle,複数のauthor,publisherがあり、title の
中に文字列からなる要素CMTAがある、…、というような
構造を持つ。
【0004】図10に示すようにXMLデータは、タグ
で前後をはさまれた階層構造によって構成されている。
「<>」で囲まれた文字列がタグの名前である。タグには
タグ名を「< > 」で囲った開始タグとタグ名の前に「/
」がついている終了タグがある。開始タグと終了タグ
にはさまれたものをエレメント(要素)という。エレメ
ントは文字列であってもよいし、ほかのエレメントを入
れ子にしたものでもかまわない。エレメントのなかの文
字列をそのエレメントの値という。この例のXMLで書
かれた文献情報には3つの本に関するデータが含まれて
いる。それぞれには1つのタイトル、1人以上の複数の
著者、1つの出版社に関する情報が記述されている。本
によって、著者の数は異なっており、その最大数はあら
かじめ規定されていない。このようなデータをたとえば
関係データベース(RDB)に格納しようと考える場
合、例えば著者の最大数を決めて、著者1、著者2…と
いったようなフィールドをもつスキーマを定義すること
になる。しかしながら、その最大数を超える著者がいる
場合はそのデータを格納することができない。また、最
大数を多めに設定しておくと格納効率がわるくなってし
まうかもしれない。
【0005】図12はXMLデータのインスタンスの全
体の構造を示している。なお、この図はDTDの構造
(クラス階層)を示している図ではないことに注意され
たい。このモデルでは、ノードはエレメントの値を保持
するために用いられ、ノード間のリンクはエレメントを
囲っているタグの名前に相当する。いちばん下のリーフ
ノードにはエレメントの値が書かれている。この図は図
10に示したXMLデータを表現を変えて書いたもので
ある。たとえば、木の一番上にはノード番号0番のノー
ドがあるが、そこから、木を左下にたどっていくと、bi
b とラベルされたリンクを通って一番下のノードに至。
さらにたどるとbookとラベルされたリンクを経て2番の
ノードに、さらにはtitle とラベルされたリンクを経て
6番のノードに至る。6番のノードには" A"という値
が記されている。これは、以下のXMLの構造に対応し
ている。
【0006】 もちろん、これ以外の表現方法をとることも可能であ
り、たとえばこれとは双対になるが、ノードにタグ名を
保持するようなモデルも考えることができる。ここで示
したようなデータ構造を我々は半構造データと呼んでい
る。それに対して、あらかじめ厳密なスキーマを決定で
きるようなデータを構造データと考える。
【0007】
【発明が解決しようとする課題】ところでXMLで記述
された、ここで取り扱うようなデータ構造は、入れ子に
よる繰り返しや、データそのものが無いというような性
質をもっているので、いわゆるRDBのスキーマではう
まく表現することができない。これはテーブルにすると
領域が無駄になるというような話ではなく、たとえばい
くつ繰り返されるかわからないような属性値をもつよう
な構造は、ふつうはRDBの表形式ではそのまま表現で
きない。ところが世の中のデータ構造はおそらくテーブ
ルで表現できるものよりも木構造、さらには閉路のある
ようなグラフ構造で表現できるもののほうが当然多い。
このことをXMLで記述されたデータについて考えてみ
ると、あらっぽい言い方であるがXMLではDTDのあ
るものと無いものにわけて考えることができる。
【0008】DTDの無い物はノードとリンクというレ
ベルでしかクラスが既知ではなく、対象データの論理構
造はインスタンス間の物理構造を意味的に解釈すること
でしか得ることはできない。このようなものを非構造デ
ータと考える。DTDのあるXMLデータは、これに比
べてデータの論理構造はDTDによってあらかじめ規定
されているが、論理構造がきまれば全体の物理構造が1
つ決まるというものではなくて、繰り返しや値の欠損、
あるいはデータ型の解釈など依然として自由度の高いも
のである。そういう意味で、論理構造はあるが厳密でな
いことから構造データと非構造データの中間に位置する
ものとして半構造データと呼ぶ。我々が格納や検索の対
象として考えているのはこのような半構造データであ
る。XMLデータの構造は、このような半構造データの
一種と考えることができる。
【0009】ところで、XMLデータに対して、ユーザ
が行いたいと考える検索処理にはどんなものが考えられ
るであろうか。XMLデータに対する検索要求のパター
ンを考えてみると、「指定したエレメントに特定の値を
もっているエレメントを見つけたい」、言い換えると
「あるパターンに適合する部分を取り出したい」という
ことになる。さて、そうやって見つけたあと、ユーザは
どうしたいであろうか。例えば、先ほど示したような木
構造のノードで条件を満たすノードのIDを得る。その
ノードから木の上を移動して別のノードに至る。そし
て、到達したノード(エレメント)の値を得る。という
ようなインタフェースを提供して、見つけた後はアプリ
ケーションで好きなような処理を行ってくださいという
のも1つの方法である。
【0010】あるいは、パターンに適合したエレメント
から下のサブエレメントをまとめて得たいと考えるかも
しれない、あるいはもつと複雑な場合として、前記図1
0の例でいうと、著者が同じであるような本のタイトル
を組にして得たいというような複雑な検索要求もあり得
る。この場合も、木の上をたどるオペレーションの組み
あわせで実現することができる。しかしながら、効率よ
くそれを組み合わせるにはどうすればよいであろう図1
2の例ではbookが4つしかないが、例えば、これが数メ
ガ個になって、著者がその平均3倍いれば著者の組み合
わせの数はどうなるであろうか。
【0011】上記した検索要求を図で示すと、例えば図
13の太線に示すように、以下の○○の部分に”AW”
という値を持っているようなノードを枝に持っているbo
okノードを含む部分木を取り出すという要求として考え
ることができる。
【0012】このような要求に対して条件を満たすもの
を効率的に見つけたりたどったりするにはどのようなイ
ンデックスを用意しておけばよいであろうか。また、検
索とは少し話がそれるが、そのような巨大なものをメモ
リ上で取り扱うのもなかなか大変である。自前でファイ
ルシステムをつかって管理するあるいは永続プログラミ
ング言語型のOODBなども使えるかもしれない。しか
し、結局はユーザの検索要求から、実際に目的のデータ
を得るまでの実行最適化戦略をアプリケーションが立て
なくてはならない。以上のようにXMLデータの検索処
理は、種々の問題があり、これらの問題に対処できる検
索システムが要望される。
【0013】本発明は上記した事情に鑑みなされたもの
であって、本発明の目的は、蓄積されたXMLデータの
中から指定された条件に適合する部分を検索し抽出する
処理を最適な手順で実行することにより、XMLデータ
の検索処理の性能を向上させることである。
【0014】
【課題を解決するための手段】図1は本発明の概略構成
図である。同図に示すように、本発明は、検索要求の記
述手段1と、記述された検索要求を解析する解析手段2
と、検索要求の最適化を行う問い合わせ最適化手段3
と、基本操作列からなる検索処理手順を生成する検索手
順生成手段4と、生成された基本操作列を実行する実行
手段5と、実行の最適化を図る実行最適化手段6と、検
索を実行し検索結果を生成する結果生成手段7と、検索
結果の出力手段8と、XMLデータの格納手段9とを備
えている。上記問い合わせ最適化手段3は、検索実行の
前に、上記解析手段2により解析された検索要求の冗長
性を排除や、検索要求を副検索条件指定に分解し副検索
条件指定の入れ替え等の問い合わせの最適化を図る。上
記実行最適化手段6は、実行時にすでに行われた処理中
間結果を再利用する等の最適化を図る。また、上記検索
手順生成手段4は、検索要求に基づき、次のような基本
操作列からなる検索手順を生成する。 (イ) XML木構造のルートからのパス記述と要素の値
の組から、それに該当する要素の識別子の集合を得る操
作。 (ロ) ある要素の識別子を指定して、その要素の親関係
にあたる要素の識別子を得る操作。 (ハ) ある要素の識別子を指定して、その要素の子関係
にあたる要素の識別子の集合を得る操作。 (ニ) ある要素の識別子を指定して、その要素の値を得
る操作 (ホ) XML木構造のルートからのパス記述から、それ
に該当する要素の識別子の集合を得る操作。 本発明においては、上記のように、XML検索処理要求
として、検索すべきXMLデータの適合条件と抽出項目
の指定からなる検索要求の記述をおこなうだけで、その
検索要求を満たすような検索処理の手順を自動的に生成
し実行するようにしたので、従来においては、複雑な検
索処理の手順を利用者が自分で記述しなければならなか
った作業を軽減することができ、また、検索抽出処理の
性能を向上させることができる。また、本発明は、次の
ように構成することもできる。 (1) 検索を実行するに際し、あらかじめ構成された索
引を用いてXMLの木構造をたどることにより、蓄積さ
れたXMLデータのなかから指定された条件に適合する
部分を検索する。 (2) 検索要求の記述を解析し、結果が空集合になるこ
とが予知できるような検索要求の部分については処理を
省略し、あるいは2つ以上の冗長な検索要求記述を1つ
の検索要求記述にまとめることにより検索処理を最適化
する。 (3) 基本操作の実行にかかる平均的な実行時間をあら
かじめ収集しておき、検索要求から検索処理実行手順を
生成するに際し、同一な結果を得るための複数の実行手
順が存在する場合に、検索要求の全体の実行にかかる時
間を予測し、そのなかでもっとも実行時間の速い検索処
理実行手順を選択することにより最適化を図る。
【0015】
【発明の実施の形態】以下、本発明の実施の形態につい
て説明する。 (1) 検索言語:XQL 本発明の実施例のシステムの説明の前に、まず、XML
データの検索言語であるXQLについて説明する。RD
BにSQLという検索言語がある。これをそのまま使っ
てアプリケーションを書いている人は少なく、通常はも
っと低レベルのAPI(アプリケーションプログラミン
グインタフェース) も組み合わせて使っている。これ
は、想定するアプリケーションにもよるし、使用目的
(使い方) にもよる。
【0016】XMLについても同様のことがいえる。す
なわち、XMLのための検索言語として、1つはXSL
(スタイルシート) のパターン記述を拡張した条件指定
が可能な言語があり、また、もう1つはRDBで言うと
ころのSQLに相当するような検索言語XQLがある。
ここでは上記XQLを採用した場合の実施例について述
べる。なお、以下で述べるXQL検索言語(http://www.
w3.org/TandS/QL/98/pp/flab.doc) はW3Cのワークシ
ョップ(http://www.w3.org/TandS/QL/QL98/)で提案され
た公知の技術である。
【0017】(a) XML問い合わせ言語XQLと検索結
果の例 以下に、XML問い合わせ言語XQLと検索結果の例を
示す。
【0018】この問い合わせの意味は「bib.paper.auth
or.position が良大工業大学であるような bib.paperに
ついて、bib.paper.title,bib.paper.author.name,bib.
paper.author.position を検索結果として得たい」 とい
う意味である。ここで、bib.paper.author.position の
ように“."( ドット) で区切って表記したものをパス表
記と呼ぶ。この意味は、先に述べたXMLデータを木構
造で表現した場合の特定のエレメントを示すノードの、
ルートノードからの絶対パスを指している。
【0019】上記問い合わせ言語XQLについて簡単に
説明する。上記に示すように、問い合わせ文は大きく、
SELECT、FROM、WHERE の3つの部分に別れている。SELE
CTの部分では検索結果として得たいエレメントのプロジ
ェクションを指定する。FROMの部分では検索の対象とな
るエレメントを指定している。WHERE の部分では検索の
条件のセレクションを指定する。まず、FROMについて説
明する。FROMでは、問い合わせで用いる範囲変数を定義
している。ここで、範囲変数とは、問い合わせ中で用い
る変数で、WHERE の検索条件のセレクション記述やSELE
CTの検索結果として得たいエレメントのプロジェクショ
ンの指定に用いる。ここでは bib.paperが検索の対象と
なるエレメントで、それに対して $paper という範囲変
数名を割り当てている。
【0020】この意味は、以下のWHERE の部分で条件指
定する際に、例えば、ここでは$paper. aUthor.positio
n = ″良大工業大学〃となっているが、paper.author.p
osition が" 良大工業大学" であるような $paper つま
り bib.paperが検索の対象となることを示している。つ
まり、WHERE で指定しているのは bib.paperを限定する
ための条件であり、bib.paper.author.position という
エレメントが検索の対象ではないということである。こ
のことは、WHERE で2つの条件がAND で結ばれて記述さ
れていたとして、例えば、下記のように記述されている
場合は以下に説明することを示していることとなる。
【0021】 WHERE paper.author.position = "良大工業大学" AND $paper.author.name:"久保田";
【0022】すなわち、$paper.author.positionが”良
大工業大学”であるエレメントをサブエレメントとして
もつ $paper(つまり bib.paper) の集合と $paper.auth
or.name が“久保田" であるエレメントをサブエレメン
トとしてもつ $paper の集合の集合積を示していること
になる。なお、$paper.author.positionが”良大工業大
学”であるエレメントの集合とpaper.author.name が
“久保田" であるエレメントの集合の集合積ではないこ
とに注意されたい。上で述べたように、WHERE の部分で
はFROMで割り当てた範囲変数を用いて、検索対象となる
エレメントの集合を選択するための条件が言及されてい
る。ここの条件はAND やORを用いて複数の条件を指定す
ることができる。最後にSELECTの部分について説明す
る。SELECTは条件に適合したエレメントの集合に対し
て、その結果を得る際に出力するサブエレメントの選択
( プロジェクション) を指定する。
【0023】上記の場合、SELECT result:<$paper.titl
e,$paper.author.name,$paper.author.position>となっ
ているのは、条件に適合した $paper(つまり bib.pape
r)のエレメント集合のサブエレメントのうち、$paper.
title,$paper.author.name,$paper.author.positionに
ついて選択して出力することを指定している。例えば、
bib.paper のサブエレメントに bib.paper.publisher.n
ame というサブエレメントがあったとしても、このサブ
エレメントは検索の結果出力には含まれない。この例で
はSELECTの一番はじめの部分に result:<paper.title ・
・・となっている。このresultを結果出力タグと呼ぶ。こ
のタグは検索結果をXML形式で出力する際に、個々の
検索結果を囲むいちばん外側のエレメントとして用いら
れる。検索条件に適合するものが複数あれば、そのそれ
ぞれが結果出力タグによって囲まれることになる。これ
は、たとえば後で述べるようなセルフジョイン演算など
によって、エレメントの組の集合が検索結果となった場
合にどのエレメントが組みになっているかを示すのにも
用いられる。
【0024】この問い合わせの例を実行した場合の結果
出力の例を図2に示す。この場合、図2に示すように、
条件を満たす bib.paperは1つでそれが result で囲ま
れて出力され、bib.paper.authorは3人いて、それぞれ
についてbib.paper.nameとbib.paper.positionが出力さ
れている。$paper.author.position=”良大工業大学”
を満たしているのは最初に出力されているauthorの「田
金次彦」であるが、ここではこの条件を満たすようなサ
ブエレメントを含むbib.paper の集合を求めてそのサブ
エレメントを出力する問い合わせであるために、それ以
外のauthorについても結果として出力される。
【0025】(ii)セルフジョインの例 このセルフジョインはこの発明で提案するXQLの機能
の特徴にもなっている。以下にセルフジョインの例を示
す。
【0026】 SELECT result:<$paper1.title,$paper2.title> FROM paper1:bib.paper,paper2:bib.paper WHERE $paper1.author.name = $paper2.author.name;
【0027】先に示した値による選択の例と比較して、
セルフジョインの例ではFROMで指定されている範囲変数
が2つになっていることに注意してほしい。ここでは$p
aper1 とpaper2の2つの変数が指定されている。両方と
も変数の動く範囲は bib.paperを指しているが、2つの
範囲変数は別々のものである。この2つの変数を用いて
WHERE では $paper1.author.name=paper2.author.name
という条件が記述されている。これが意味するところは
「ある bib.paper.author.nameともうひとつのbib.ppae
r.auther.nameが等しいような bib.paperの組をみつけ
て、それぞれ$paper1,$paper2 とする」 ということであ
る。これによって、著者が同じである論文の組みを検索
することができる。
【0028】この検索が値による検索と異なっている点
は、前者が特定の値を指定して、エレメントの値がそれ
に等しいものを検索するのに対して、後者は2つのエレ
メントの間で値が等しいようなエレメントの組を検索す
ることである。その結果、得られる結果も、前者がエレ
メントの集合であるのに対して、後者はエレメントの組
みの集合となる。この問い合わせの例を実行した場合の
結果出力の例を図3に示す。ここでは、図3に示すよう
に条件を満たす2組の検索結果が表示されている。ま
た、それぞれの組みごとに結果出力タグ(result)で囲ま
れている。
【0029】(b) XQLの構文規則 以上、例を用いてXQLとその検索結果について簡単に
説明してきたが、次に、XQLのBMF形式での文法を
示す。図4、図5、図6にBMF(バッカス・ノーマル
・フォーム)形式での上記XML検索言語XQLの構文
規則を示す。同図において、list,quety,body,…等の小
文字は書き換え可能なものであり、下に書かれるものが
代入される。大文字は書き換えできない固定の文字列で
ある。また、"/* "," * /"で囲まれた部分はコメントを
示し、" |”はORを表し、"SM"はセミコロンを表し、"・
LT"," GT" はそれぞれ" < " ,">" を表している。例え
ば、同図において、6行目の"xql" の後ろの"query" に
は、11行目の"bodySM が代入され、"body " には、1
3行目の"selclose fromclose whereclose" または"sel
close whereclose" が代入される。さらに、"selclos"
には16行目の"SELECT sel"が代入される。以下同様に
各小文字には下の行のものが代入される。図4、図5に
示した文法規則は、後述するように、XQL文の構文チ
ェックに使用される。すなわち、本実施例のシステムに
入力されたXQL文は上記構文規則に基づき、文法が正
しいかがチェックされる。
【0030】(2) システム構成 以下、上記したXQLにより検索処理を実施する場合の
本発明の実施例のシステムの構成について説明する。 (a) システムの基本構成 図7に本発明の実施例のシステムの基本構成を示す。本
実施例のシステムは、同図に示すように、大きくわけ
て、テキストインタフェースなどのユーザインタフェー
ス部10、XQL処理系として、API11、XQLの
構文解析や問い合わせ実行計画生成などを行うXQL言
語処理部12、生成された実行計画をもとに問い合わせ
を実行する実行エンジン13、および、XMLデータや
XMLデータの検索インデックスを格納しているデータ
ベース15に対してアクセスをおこなうための問い合わ
せ基本関数などからなる問い合わせオペレータ14から
構成されている。以下、上記各構成要素について説明す
る。
【0031】(i) ユーザインタフェース部 ユーザインタフェース部10は、テキストインタフェー
ス10a 、HTMLGU110b等を備えており、AP
I(アプリケーション・プログラミング・インタフェー
ス) 11を介してXQL言語処理部12にアクセスす
る。テキストインタフェース10aは、XQLを入力し
XMLを結果として返すコマンドラインインタフェース
である。また、HTMLGUI10bは、テキストイン
タフェースにGUIをかぶせたものであり、WEBから
のアクセスに対して、検索結果等をWEB画面上に表示
する。また、ユーザインタフェース部10はXQLを利
用するアプリケーション10cとのインタフェース機能
を持つ。
【0032】(ii)XQL言語処理部 XQL言語処理部12は、XQLパーザ12a 、問い合
わせ実行計画生成部12b 、問い合わせ最適化部12c
を備えている。XQLパーザ12aは、前記図4〜図6
に示した構文規則により入力されたXQL文の構文チェ
ックを行い、問い合わせXQL構文木を生成する。問い
合わせ実行計画生成部12bは、上記XQL構文木をも
とに、問い合わせの実行プランを生成する。また、問い
合わせ最適化部12cは、問い合わせの実行プランに対
して、後述するように実行順序の最適化などの静的な最
適化を行う。
【0033】(iii) 実行エンジン 実行エンジン13は、問い合わせ実行部13a、実行最
適化部13b 、検索結果生成部13cを備えている。問
い合わせ実行部13aは、生成された実行プランを実行
する。具体的には後述するように問い合わせ基本関数群
を呼び出し、実行プランを実行する。実行最適化部13
bは、後述するように実行時にすでに手元にある中間結
果などを再利用したり、統計的な方法を用いてネステツ
ドループの内外を決めたりするなどの問い合わせの動的
な最適化を行う。検索結果生成部13cは、検索結果に
もとづいて出力のためのXMLデータを生成する。
【0034】(iv)問い合わせオペレータ 問い合わせオペレータ14はDB操作基本関数、問い合
わせ基本関数によりXMLデータの検索インデックスを
格納しているデータベース15に対してアクセスを行
う。問い合わせ基本関数は、XMLインデックスに対し
て操作を行う次の6種類のコマンド群からなる。なお、
各コマンドについては後述する。
【0035】 GetNode IDbyPathAndVal GetParentIDbyChild GetChildIDbyParent GetValuebyID GetNodeIDbyPath GetlabelIDbylabeltext
【0036】また、DB操作基本関数は、インデックス
が格納されているデータベースに対してセッションのオ
ープンクローズなどの制御を行う。なお、検索用インデ
ックスを複数用意し、問い合わせに応じて検索用インデ
ックスを使い分けるようにしてもよい。
【0037】図8は上記システムの全体処理フローを示
す図である。同図において、ユーザインタフェース部1
0からXQLによる検索要求があると(ステップS
1)、XQL言語処理部12のXQLパーザ12aで
は、入力された検索要求を構文解析し、問い合わせ解析
木を生成する(ステップS2) 。XQL言語処理部12
の問い合わせ実行計画生成部12bは、上記問い合わせ
解析木に基づき、問い合わせ実行計画を生成する(ステ
ップS3) 。XQL言語処理部12の問い合わせ最適化
部12cでは、実行順序の最適化、結果が空集合になる
ような処理要求の省略等の静的な実行計画の最適化を行
う(ステップS4) 。
【0038】次いで、実行エンジン13は実行すべき実
行計画を読み出し(ステップS5)、まず、すでに実行
した中間結果の再利用が可能であるか判定する(ステッ
プS6) 。すでに実行した中間結果の再利用が可能でな
い場合には、実行エンジン12の問い合わせ実行部13
aは後述するようにXMLの木構造をたどる基本操作単
位で問い合わせを実行する(ステップS7) 。また、す
でに実行した中間結果の再利用が可能な場合には、すで
にある中間結果を再利用する(ステップS9)。次に上
記問い合わせの中間結果を保存し(ステップS8) 、ス
テップS10において、実行計画を全て実行したかを調
べ、全ての実行計画を実行していない場合にはステップ
S5に戻り上記処理を繰り返す。全ての実行計画が実行
されると、検索結果生成部13cは中間結果を統合し、
検索結果をXMLデータ形式で生成する(ステップS1
1)。そして、生成した検索結果を、ユーザインタフェ
ース11よりXMLデータ形式で出力する(ステップS
12) 。
【0039】以下、上記システムの各部の処理について
さらに詳細に説明する。 (b) XMLデータの格納と問い合わせ基本関数 先に説明したように、本発明ではXMLデータを木構造
のモデルで表現している。実際の格納状況は可変長文字
列とインデックスのかたまりになるので、もとのXML
データのサイズが大きければ、非常に大きなものにな
る。このサイズは、例えば、3MバイトのXMLデータ
をパーズして木をつくると仮想メモリ上に100Mバイ
トの領域を使ってしまうというような場合もある。この
ようなものを自前のファイルシステム管理でやるのは並
大抵のことではない。そうなると既存のDBのうえにイ
ンデックス格納用のスキーマを構築しインデックスを格
納するという方法が開発を効率化するためにもうまいや
り方かもしれない。もちろん、専用のDBMSを作ると
いう方法もある。
【0040】XMLデータを格納するスキーマについて
ポイントを説明すると、方法としてはつぎの2つの方法
が考えられる。 繰り返し項目について回数の上限を設定してRDBの
テーブル構造で表現し格納する方法 木構造をノードとリンク2つのテーブルで格納する方
法 本実施例では、XMLの木構造をたどる操作を含む検索
処理要求を実行するのに有利であるという理由で上記
の木構造を格納する方法を用いる。上記の木構造を格
納する方法としては、例えば、XMLの木構造をノード
とリンクに分解し、RDBに該ノードとリンクを関係付
けたテーブルを格納する方法を探ることができる。具体
的には、上記木構造の中間ノードの情報を格納する中間
ノードテーブル、リンクの情報を格納するためのリンク
テーブル、葉ノードの情報を格納する葉ノードテーブル
等を設け、これらのテーブルに検索用インデックスを用
意し、該検索用インデックスを利用して木構造を辿る問
い合わせを実行する方法が考えられる。
【0041】データベース15に格納された検索用イン
デックスは、各データベースごとに実装された問い合わ
せ基本関数を通じて実行エンジン13からアクセスす
る。つまりXQL処理系は、ユーザからのXQLで記述
された検索要求を以下に示す問い合わせ基本関数の列に
置き換えて処理するという動作をする。その際に、後述
するように、どの順序で実行するのが効率的であるかを
考慮した実行最適化やどのインデックスを用いて目的と
するエレメント集合を得るかを判断して問い合わせ実行
計画を作成することになる。
【0042】問い合わせ基本関数は前記したように、つ
ぎの6つの関数である。これらの関数は、先に述べたX
MLデータを木構造で表現するモデルにおいて、木に沿
ってノードをたどる動作を関数化したものである。その
際にデータベースに格納されているノードにはすべてユ
ニークな識別子(ID) がつけられている。また、エレ
メントのタグはラベルという形で格納されていて、ラベ
ルにも識別子がつけられている。 GetNodeIDbyPathAndVal パス記述と値を指定して、それに該当するノードIDの
集合を得る。 GetParentIDbyChild 子のノードIDを指定して、その親ノードIDの集合を
得る(親ノードはこの場合1つである) 。 GetChildIDbyParent 親のノードIDを指定して、その子ノードIDの集合を
得る。 GetValuebyID ノードIDを指定してそのエレメントがもつ値を得る。 GetNodeIDbyPath パス記述を指定して、それに該当するノードIDの集合
を得る。 GetLabelIDbyLabeltext ラベルの名前を指定してラベルIDを得る。
【0043】(c) 検索用インデックス XMLデータの格納構造にもよるが、本実施例の場合で
は大まかに次の4つのインデックスを構築している。 Vインデックス:エレメントの値からノードIDを得る
インデックス Pインデックス:XMLデータのルートからのパスから
ノードIDを得るインデックス 親インデックス:エレメントの親エレメントのノードI
Dを得るインデックス子インデックス:エレメントの子
エレメントのノードIDを得るインデックス また、これ以外にDB内に定義されたテーブルの上に張
られるインデックスがある。
【0044】(d) XQLによる問い合わせとその実行 (i) 問い合わせ演算のパターン 先に(1) でXQLによる問い合わせとその結果の例に
ついて説明したが、XQLの問い合わせ演算のパターン
についてもう一度整理して説明すると次のようになる。
XQLによる問い合わせ演算は次に示す3つの演算の組
み合わせとなる。 値によるノードの選択(VS) SELECT result:<$book.author,$book.publisher.name> FROM book:bib.book WHERE $boook.tltle = " B"; この場合 $book.titleが" B"であるような $bookをすべ
ての bib.book の中から選択して $bookにバインドす
る。
【0045】 セルフジョイン(SJ) SELECT result:<$book1.title,$book1.author> FROM book1:bib.book,book2:bib.book WHERE $book1.title= $book2.title; この場合、2つの範囲変数を用いて $book1.title と$b
ook2.titleが等しくなるような$book1と$book2の組みを
求める。
【0046】 プロジェクション演算は単独で用いられることはなく、
値による選択やプロジェクション演算とともにSELECTの
部分で出力結果形式の指定の際に用いられる。この場
合、WHERE の部分に記述された条件を満たすような bi
b.book が$book にバインドされているときに、$book
がバインドされた各エレメントに対して、$book.autho
r,$book.publisher.name に相当するサブエレメントの
値がこの演算の結果となる。ここで指定されたサブエレ
メント以外のサブエレメントをもつ bib.book があった
としてもそれは結果から取り除かれる。
【0047】(ii) 実行計画の生成 実際の問い合わせを例にしてセレクションとプロジェク
ション演算を含むようなXQL問い合わせに対して、前
記図7の問い合わせ実行計画生成部12bにおいて作成
される実行計画について説明する。以下では、上記(i)
で示した3つの演算パターンを、それぞれ、VS:値に
よるノードの選択、SJ:セルフジョイン、PROJ:
プロジュクション、という省略形を用いて表記する。実
行計画は、演算パターンとそれに続く引数の列からなる
1つの処理単位を複数ならべたものである。引数の並び
はVSとSJの場合、演算子、左辺値、右辺値であり、
PROJの場合、範囲変数とパス名の並びである。
【0048】以下、生成される実行手順を前記図12に
示した木構造の例により説明する。 値による選択の例 SELBCT result:<$book.author,$book.publisher.name> FROM book:bib.book WHERE $book.title="B"; この問い合わせに対して作成される実行計画は次の通り
である。ここで、以下のOP_EQは演算子であり、左
辺値 $book.title= 右辺値"B" であることを意味してい
る。 VS OP_EQ $book.title "B" PROJ $book $book.author $book.publisher.name
【0049】生成された実行計画はそのまま順に実行さ
れ、中間結果はスタツクに詰まれる。この実行計画を実
行する際に呼び出される問い合わせ基本関数の列は次の
ようになる。なお、以下の1. 〜2. は上記VSの処理
に相当し、3. 〜7. はPROJの処理に相当する。 1.GetNodeIDbyPathAndValを用いてパス記述が bib.boo
k.title で値が"B" であるノード集合を得る。 2. 上記1. で得られたノード集合に対してそれぞれGe
tParentIDbyChildを適用してbib.bookとなるノード集合
を得る。これが $bookにバインドされる。 3. 上記2. で得られたノード集合に対してそれぞれGe
tChildIDbyParentを適用して$book.authorとなるノード
集合を得る。 4. 上記2. で得られたノード集合に対してそれぞれGe
tChildIDbyParentを適用して$book.publisher となるノ
ード集合を得る。 5. 上記4. で得られたノード集合に対してそれぞれGe
tChlldIDbyParentを適用して$book.publisher.nameとな
るノード集合を得る。 6. 上記3. で得られたノード集合に対してそれぞれGe
tValuebyIDを適用してエレメントの値を得る。 7. 上記3. で得られたノード集合に対してそれぞれGe
tValuebyIDを適用してエレメントの値を得る。 以上がこの問い合わせに対する実行計画と実際に実行計
画が実行される際の問い合わせ基本関数の呼び出しシー
ケンスである。
【0050】セルフジョイン 次に、同様にセルフジョインの場合について説明する。 SELECT result:<$book1.title,$book1.author> FROM book1:bib.book,book2.bib.book WHERE $book1.title=$book2.title; この問い合わせに対して作成される実行計画は次の通り
である。 SJ OP_EQ $book1.title $book2.title PROJ $book1 $book1.title $book2.author 生成された実行計画はそのまま順に実行され、中間結果
はスタツクに詰まれる。この実行計画を実行する際に呼
び出される問い合わせ基本関数の列は次のようになる。
なお、以下の1. 〜6. は上記SJの処理に相当し、
7. 〜10. はPROJの処理に相当する。
【0051】1.SJ の右辺について GetNodeIDbyPathを
用いてパス記述が bib.book.title となるノード集合を
得る。 2. 上記1. で得られたノード集合に対してそれぞれGe
tValuebyIDを適用してエレメントの値を得る。 3.SJ の左辺についてGetNodeIDbyParentAnDVal を用い
てパス記述が bib.book.title で値が上記2. で得られ
たそれぞれの値であるノード集合を得る。 4. 上記1. で得られたノード集合と3. で得られたノ
ード集合の組をつくる。 5. 上記3. で得られたノード集合の組の右辺分に対し
てそれぞれ GetParentIDbyChild を適用してbib.bookと
なるノード集合を得る。これが $book2 にバインドされ
る。 6. 上記1. で得られたノード集合の組の左辺分に対し
てそれぞれ GetParentIDbyChild を適用してbib.bookと
なるノード集合を得る。これが $book1 にバインドされ
る。 7. 上記6. で得られたノード集合に対してそれぞれ G
etChildIDbyParent を適用して$book1.titleとなるノー
ド集合を得る。 8. 上記6. で得られたノード集合に対してそれぞれ G
etChildIDbyParent を適用して$book1.author となるノ
ード集合を得る。 9. 上記7. で得られたノード集合に対してそれぞれGe
tValuebyIDを適用してエレメントの値を得る。 10. 上記8.で得られたノード集合に対してそれぞれ
GetValuebyIDを適用してエレメントの値を得る。
【0052】この演算の結果はノードの組の集合として
得られる。ここでは、セルフジョインの右辺について先
に値を求めて、その値に対応する左辺のノード集合を得
た。これは反対に左辺について値をもとめて行ってもか
まわない。結果として、$book1と$book2が同じノードを
指している場合の組も解に含まれる。したがって、この
場合は bib.book がとりうるすべてのノード集合に対し
て、$book1と等しい $book2 の組みが解に含まれること
になる。
【0053】(ii)問い合わせ演算の組み合わせ 実際には上述した値による選択とセルフジョイン演算は
単独で用いられるだけでなくANDなどを用いて組み合
わせて条件指定されることもある。この場合、その組み
合わせは次の6つに分類することができる。ここで、同
種とはANDで結ばれている範囲変数に対する条件指定
が同じ範囲変数に対して言及されているものか、別の範
囲変数に対して言及されているものであるかという意味
である。以下、前記図12に示した例を用いて説明す
る。
【0054】
【0055】この場合、1つめの条件指定も2つめの条
件指定もともに同一の範囲変数 $bookを限定する言及で
ある。したがって、これらをAND で結んだものは、1つ
めの条件指定によって選択された $bookを満たすノード
集合と2つめの条件指定によって選択された $bookを満
たすノード集合の集合積となる。したがって、前記図1
2の例の場合、著者=”金政" でかつtitle="B" のauth
or,publisher.name (図12のノード3, 5のauthor,p
ublisher.name )が得られる。
【0056】異種のVS同士のAND SELECT result:<$book1.author,$book1.publisher.name
> FROM book1:bib.book,book2 :bib.book WHBRE $bood1.title ="B" AND $book2.title="C";
【0057】この場合、1つめの条件指定と2つめの条
件指定は異なる範囲変数を限定する言及である。これら
をAND で結んだものは、1つめの条件指定によって選択
された $book1 を満たすノード集合と2つめの条件指定
によって選択された $book2を満たすノード集合の直積
となる。この演算によって得られる解はノード集合の組
の集合となる。この演算の数学的な意味を説明すると、
$book1と$book2は直交した空間の値をとる変数である。
$book1のとりうるすべてのノード集合をS1とし、$boo
k2のとりうるすべてのノード集合をS2として、1つめ
の条件によって言及された結果$book1 がとるノード集
合をS1’、2つめの条件によって言及された結果 $bo
ok2がとるノード集合をS2’とするとS1’⊆S1、
S2’⊆S2のとき、求めるAND演算の解となるノー
ドの組は、◎を直積をあらわす演算記号とすると、S1
◎S2’AND S1’◎S2となる。これはS1’◎
S2’に等しい。したがって、$book1が実際にとるノー
ド集合、$book2が実際にとるノード集合の直積が求める
解となる。
【0058】 同種のVSとSJのAND SELECT result:<$book1.author,$book1.publisher.name> FROM book1:bib.book,book2:bib.book WHERE $book1.title="B" AND $book1.author = $book2.author;
【0059】この場合、1つめの条件を満たす$book1に
バインドされたノード集合と2つめの条件を満たすノー
ドの組の集合との間の集合積となる。したがって、求め
る演算結果は2つめの条件を満たすノードの組みの集合
のうち、1つめの条件を満たすノード集合を$book1にと
るようなノードの組みの集合となる。
【0060】 異種のVSとSJのAND SELECT result:<$book1.author,$book1.publisher.name> FROM book1:bib.book,book2:bib.book,book3:bib.book WHERE $book3.title="B" AND $book1.author:$book2.author;
【0061】この場合、1つ目の条件指定と2つ目の条
件指定は異なる範囲変数を限定する言及である。したが
って、この演算の結果は1つ目の条件指定によって得ら
れるノード集合と2つ目の条件指定によって得られるノ
ードの組みの集合の直積となる。この解はノードの3つ
組の集合となる。
【0062】 同種のSJ同士のAND SELECT result:<$book1.author,$book1.publisher.name> FROM book1:bib.book,book2:bib.book WHERE $book1.title=$book2.title AND $book1.author=$book2.author;
【0063】この場合、1つ目の条件指定の結果のノー
ドの組の集合と2つ目の条件指定の結果のノードの組の
集合はともに条件を満たす$book1と$book2の組みの集合
である。したがってそれらをAND で結んだ結果は2つの
ノードの組みの集合の集合積となる。
【0064】 異種のSJ同士のAND SELECT result:<$book1.author,$book1.publisher.name> FROM book1:bib.book,book2:bib.book,book3:bib.book WHERE $book1.title=$book2.title AND $book2.author=$book3.author;
【0065】この場合、1つ目の条件指定の結果のノー
ドの組の集合は条件を満たす$book1と$book2の組みで、
2つめの条件指定の結果のノードの組の集合は条件を満
たす$book2と$book3の組みの集合である。したがって、
これらをANDで結んだ結果はこれらの直積となる。こ
の場合、解はノードの3つ組の集合となる。実際には、
これらをさらにANDなどで結んだもっと複数の条件指
定が考えられるが、これについては定められた順番で演
算を処理していくことで上記のいずれかの場合と同様に
処理することができる。ここではANDについて説明し
た。ORの場合については、同種のノード集合同士の演
算の場合は集合和になる。ここで示した方法は各演算の
意味を説明したもので、実際には処理の順序や方法を工
夫することで、さまざまな最適化を行うことができる。
これについては後述する。
【0066】(iii) 問い合わせの最適化とインデキシン
グ 以上で、XQL言語処理部における問い合わせ実行計画
生成と、実行エンジンでの各演算パターンにおける基本
的な実行について説明した。次に、いままでの説明を基
にして、最適化の実施例について説明する。 言語処理部での最適化 言語処理部12では、WHERE の条件で指定された条件節
を解くためのインデックスの選択等の最適化を行う。 実行エンジンでの最適化 実行エンジン13においては、次のような最適化を行
う。 ・ネステツドループをまわす場合の内外の入れ替え。例
えば、前記した下記の問い合わせにおいては、WHERE の
第1行目を先に実行して絞り込んだのち、2行目を実行
した方が処理が速い。このような場合には、より速く処
理を行うことができる検索対象を選定し、問い合わせを
実行する。
【0067】
【0068】・セルフジョインを処理する際の右辺と左
辺の入れ替え。例えば前記した下記の問い合わせにおい
て、左辺$book1.titleと右辺 $book2.title を入れ替え
るた方が処理が速くなる場合には、左辺と右辺を入れ替
える。
【0069】 SELECT result:<$book1.title,$book1.author> FROM book1:bib.book.book2:bib.book WHERE $book1.title=$book2.title
【0070】・同種のVSとSJのAND演算の際にVS
の結果でSJの結果を絞る。 ・中間結果が空集合となった場合の処理の打ち切り。 問い合わせの処理中に、中間結果が空集合になることが
分かったらその時点で処理を打ち切る。
【0071】また、問い合わせ実行プランレベルでの処
理の入れ替えなど、複数の処理にまたがる最適化とし
て、全体的な最適化、各処理単位での実行性能を向上さ
せるための局所的な最適化があり、このようにものとし
て次のように最適化を探ることができる。 全体的な最適化 ・実行順序の入れ替え 問い合わせ実行計画を立てる際に、値による選択を先に
処理しセルフジョインをあとで処理するような実行計画
を生成する。また、同一の範囲変数に対する処理はまと
まって処理するように順序を入れ替える。 ・構文解析による処理の省略 入力されたXQL文を静的に評価して、結果が空集合に
なることが予知できるような部分については処理を省略
する。また冗長な演算をまとめる。
【0072】 局所的な最適化 ・すでに得た検索結果の再利用 VSの結果を用いてSJの処理を行う。たとえばVSと
SJのANDの際に、VSの結果を用いてSJを行うこ
とでループ数を削減する。 ・統計的な処理の選択 問い合わせ基本関数の平均的な実行時間をもとにして処
理を選択する。例えば、GetNodeIDbypath の実行時間
は、GetNodeIDbyPathAndVal に比較して約15倍もかか
ってしまう。したがって、GetNodeIDbyPath を使わずに
すむところではなるべくほかの方法を用いたり、GetNod
eIDbyPath の結果を保存して再利用することで処理時間
を短縮する。
【0073】(3) XML検索システムの具体的構成例 以上説明したXML検索処理システムの具体的な構成例
を図9に示す。この例では、同図に示すように、データ
を格納するDBMSとして、RDB21はORACLE
8(商標名) 、および、OODB22はSymfoware (商
標名)のOODBを用いている。実際には各DBMSご
とに問い合わせ基本関数などを準備することでDBMS
を選ばずにインデックス格納部として用いることができ
る。
【0074】XQL処理系20自身の動作としては、X
QLで記述された問い合わせを解釈し、問い合わせ基本
関数群を呼び出す問い合わせ実行計画を生成し、それを
実行エンジンで実行する。上記問い合わせ実行計画は、
問い合わせ基本関数の実装により、データが格納されて
いるデータベースへの問い合わせ言語(SQLなど) に
変換され、各DBMSに送信される。そして、XQL処
理系20は検索結果を受け取り、ユーザが指定したXM
Lの形式で出力する。また、検索インデックス作成の対
象となるXMLデータは外部のファイル24からロー
ダ、インデクサ23を通して、本システムのインデック
ス格納部に格納される。これとは別に、XMLデータを
生成するXMLデータ生成プログラムからXMLデータ
を入力することもできる。
【0075】
【発明の効果】以上説明したように、本発明において
は、検索すべきXMLデータの適合条件と抽出項目の指
定からなる検索要求の記述をおこなうだけで、その検索
要求を満たすような検索処理の手順を自動的に生成し実
行するようにしたので、複雑な検索処理の手順を利用者
が自分で記述する必要がなく作業を軽減することがで
き、また、検索抽出処理の性能を向上させることができ
る。
【図面の簡単な説明】
【図1】本発明の基本構成を示す図である。
【図2】値による選択の問い合わせを実行した場合の結
果出力の1例を示す図である。
【図3】セルフジョインの問い合わせを実行した場合の
結果出力の1例を示す図である。
【図4】XML検索言語XQLの構文規則を示す図
(1) である。
【図5】XML検索言語XQLの構文規則を示す図
(2) である。
【図6】XML検索言語XQLの構文規則を示す図
(3) である。
【図7】本発明の実施例のシステムの基本構成を示す図
である。
【図8】本発明の実施例のシステムにおける全体処理フ
ローを示す図である。
【図9】XML検索処理システムの具体的な構成例を示
す図である。
【図10】XMLデータの例を示す図である。
【図11】図10のXMLデータのDTDを示す図であ
る。
【図12】XMLデータの木構造表現の一例を示す図で
ある。
【図13】木構造表現されたXMLデータの検索の例を
示す図である。
【符号の説明】
1 検索要求の記述手段 2 解析手段 3 最適化手段 4 検索手順生成手段 5 実行手段 6 実行最適化手段 7 検索結果生成手段 8 検索結果の出力手段 9 XMLデータの格納手段 10 ユーザインタフェース部 11 API 12 XQL言語処理部 13 実行エンジン 14 問い合わせオペレータ 15 データベース
フロントページの続き (56)参考文献 志村壮是,吉川正俊,オブジェクト的 関係を用いたXML文書の汎用的な格納 と検索,情報処理学会第58回(平成11年 前期)全国大会講演論文集(3),1999 年 3月 9日,第265〜266頁 田島敬史,半構造データのためのデー タモデルと操作言語,情報処理学会論文 誌,1999年 2月15日,第40巻,第SI G3(TOD1)号,第152〜170頁 Jonathan Robie (T excel), Joe Lapp (webMethods Inc.), David Schach (Mic rosoft),”XML Query Language (XQL)”,Q L’98 − Query Langua ges 1998,World Wide Web Consortium (W3 C) ,1998年12月 3日,URL,h ttp://www.w3.org/T andS/QL/QL98/pp.htm l Alin Deutsch (Uni versity of Pennsyl vania), Mary Ferna ndez (AT&T Labs), Daniela Florescu (INRIA), Alo,”XML− QL” ,QL’98 − Query Languages 1998,World Wide Web Consorti um (W3C),1998年12月 3日, URL,http://www.w3. org/TandS/QL/QL98/p p.html J. McHugh and J. Widom,Query Optimi zation for Semistr uctured Data,Techn ical Report,1997年11月, URL,http://www−db. stanford.edu/lore /pubs/index.html (58)調査した分野(Int.Cl.7,DB名) G06F 17/30 G06F 12/00 JICSTファイル(JOIS)

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 XMLデータの検索処理方法であって、
    XMLデータから指定された条件に適合する部分を検索
    するに際し、検索処理を、検索要求に基づきXMLの木
    構造の操作にもとづいた少なくとも次の(イ)〜(ホ)
    基本操作に分解し、(イ)XML木構造のルートからのパス記述と要素の値
    の組から、それに該当する要素の識別子の集合を得る操
    (ロ)ある要素の識別子を指定して、その要素の親関係
    にあたる要素の識別子を得る操作 (ハ)ある要素の識別子を指定して、その要素の子関係
    にあたる要素の識別子の集合を得る操作 (ニ)ある要素の識別子を指定して、その要素の値を得
    る操作 (ホ)XML木構造のルートからのパス記述から、それ
    に該当する要素の識別子の集合を得る操作 上記 分解した各基本操作を、検索要求を満たすような
    順で実行することにより、蓄積されたXMLデータのな
    かから指定された条件に適合する部分を検索することを
    特徴とするXMLデータ検索処理方法。
  2. 【請求項2】 XMLデータから指定された条件に適合
    する部分を検索するに際し、検索実行前に、問い合わせ
    の最適化を図るとともに、検索実行時、処理順序の入れ
    替え、すでに得た処理結果の再利用をすることによる
    行最適化を図ることを特徴とする請求項の検索処理方
    法。
  3. 【請求項3】 XMLデータから指定された条件に適合
    する部分を検索するXMLデータ検索処理システムであ
    って、 検索すべきXMLデータの適合条件と抽出項目を指定す
    るための検索要求の記述手段と、 記述された検索要求を解析する手段と、検索要求に基づき XMLの木構造の操作にもとづいた
    なくとも次の(イ)〜(ホ)の基本操作に分解し、検索
    要求を満たすような検索処理の手順を生成するための手
    段と、(イ)XML木構造のルートからのパス記述と要素の値
    の組から、それに該当する要素の識別子の集合を得る操
    (ロ)ある要素の識別子を指定して、その要素の親関係
    にあたる要素の識別子を得る操作 (ハ)ある要素の識別子を指定して、その要素の子関係
    にあたる要素の識別子の集合を得る操作 (ニ)ある要素の識別子を指定して、その要素の値を得
    る操作 (ホ)XML木構造のルートからのパス記述から、それ
    に該当する要素の識別子の集合を得る操作 生成された検索処理手順にもとづいて基本操作列を実行
    する手段と、 検索条件に適合したXMLデータを検索要求にもとづい
    て構成し、生成する結果生成手段と、検索結果の出力手
    段と、XMLデータの格納手段とを備え、 蓄積されたXMLデータのなかから指定された条件に適
    合する部分を検索することを特徴とするXMLデータ検
    索処理システム。
  4. 【請求項4】 XMLデータから指定された条件に適合
    する部分を検索するXMLデータ検索処理システムであ
    って、 検索すべきXMLデータの適合条件と抽出項目を指定す
    るための検索要求の記述手段と、記述された検索要求を
    解析する手段と、解析された検索要求の冗長性を排除や
    検索要求を副検索条件指定に分解し、副検索条件指定の
    入れ替えを行なう問い合わせ最適化手段と、検索要求に基づき XMLの木構造の操作にもとづいた
    なくとも次の(イ)〜(ホ)の基本操作に分解し、検索
    要求を満たすような検索処理の手順を生成するための手
    段と、(イ)XML木構造のルートからのパス記述と要素の値
    の組から、それに該当する要素の識別子の集合を得る操
    (ロ)ある要素の識別子を指定して、その要素の親関係
    にあたる要素の識別子を得る操作 (ハ)ある要素の識別子を指定して、その要素の子関係
    にあたる要素の識別子の集合を得る操作 (ニ)ある要素の識別子を指定して、その要素の値を得
    る操作 (ホ)XML木構造のルートからのパス記述から、それ
    に該当する要素の識別子の集合を得る操作 生成された検索処理手順にもとづいて基本操作列を実行
    する手段と、 実行時にすでに行われた処理の中間結果等を再利用する
    実行最適化手段と、 検索条件に適合したXMLデータを検索要求にもとづい
    て構成し、生成する結果生成手段と、検索結果の出力手
    段と、XMLデータの格納手段とを備え、 蓄積されたXMLデータのなかから指定された条件に適
    合する部分を検索することを特徴とするXMLデータ検
    索処理システム。
JP20390799A 1999-07-16 1999-07-16 Xmlデータ検索処理方法および検索処理システム Expired - Fee Related JP3492246B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20390799A JP3492246B2 (ja) 1999-07-16 1999-07-16 Xmlデータ検索処理方法および検索処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20390799A JP3492246B2 (ja) 1999-07-16 1999-07-16 Xmlデータ検索処理方法および検索処理システム

Publications (2)

Publication Number Publication Date
JP2001034618A JP2001034618A (ja) 2001-02-09
JP3492246B2 true JP3492246B2 (ja) 2004-02-03

Family

ID=16481684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20390799A Expired - Fee Related JP3492246B2 (ja) 1999-07-16 1999-07-16 Xmlデータ検索処理方法および検索処理システム

Country Status (1)

Country Link
JP (1) JP3492246B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002351892A (ja) * 2001-05-30 2002-12-06 A & D:Kk 商標検索システム及び商標出願支援システム
US7322022B2 (en) 2002-09-05 2008-01-22 International Business Machines Corporation Method for creating wrapper XML stored procedure
JP3560043B2 (ja) * 2002-11-25 2004-09-02 株式会社セック Xmlデータの格納方法及び格納装置、並びにプログラムおよびプログラムを記録した記録媒体
JP4247108B2 (ja) 2003-12-25 2009-04-02 株式会社東芝 構造化文書検索方法、構造化文書検索装置、及びプログラム
JP4247135B2 (ja) 2004-02-10 2009-04-02 株式会社東芝 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法
JP4623446B2 (ja) * 2004-06-08 2011-02-02 敬史 田島 データ管理プログラムおよびデータ管理システム
JP4309818B2 (ja) 2004-07-15 2009-08-05 株式会社東芝 構造化文書管理装置、検索装置、記憶方法、検索方法及びプログラム
US7899833B2 (en) * 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
JP4649339B2 (ja) * 2006-01-20 2011-03-09 日本電信電話株式会社 XPath処理装置、XPath処理方法、XPath処理プログラム、および、記憶媒体
JP5121146B2 (ja) 2006-02-22 2013-01-16 株式会社東芝 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
JP4825712B2 (ja) 2007-03-22 2011-11-30 株式会社東芝 クエリ処理装置、プログラムおよびクエリ処理方法
JP5223380B2 (ja) * 2008-03-03 2013-06-26 富士通株式会社 評価方法および検索装置
JP5060361B2 (ja) * 2008-03-28 2012-10-31 株式会社東芝 構造化文書検索装置、方法及びプログラム
JP5220483B2 (ja) * 2008-06-06 2013-06-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 木構造のデータに対する集約計算を行うコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
JP4796108B2 (ja) 2008-09-26 2011-10-19 株式会社東芝 構造化文書検索装置、方法及びプログラム
JP5296128B2 (ja) * 2011-03-18 2013-09-25 株式会社東芝 構造化文書管理装置、方法およびプログラム
JP5695586B2 (ja) * 2012-02-24 2015-04-08 株式会社日立製作所 Xml文書検索装置及びプログラム
AU2013295864B2 (en) * 2012-07-24 2017-09-14 Ab Initio Technology Llc Mapping entities in data models
KR102371811B1 (ko) 2014-03-14 2022-03-07 아브 이니티오 테크놀로지 엘엘시 키드 엔티티들의 속성 매핑

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Alin Deutsch (University of Pennsylvania), Mary Fernandez (AT&T Labs), Daniela Florescu (INRIA), Alo,"XML−QL" ,QL’98 − Query Languages 1998,World Wide Web Consortium (W3C),1998年12月 3日,URL,http://www.w3.org/TandS/QL/QL98/pp.html
J. McHugh and J. Widom,Query Optimization for Semistructured Data,Technical Report,1997年11月,URL,http://www−db.stanford.edu/lore/pubs/index.html
Jonathan Robie (Texcel), Joe Lapp (webMethods Inc.), David Schach (Microsoft),"XML Query Language (XQL)",QL’98 − Query Languages 1998,World Wide Web Consortium (W3C) ,1998年12月 3日,URL,http://www.w3.org/TandS/QL/QL98/pp.html
志村壮是,吉川正俊,オブジェクト的関係を用いたXML文書の汎用的な格納と検索,情報処理学会第58回(平成11年前期)全国大会講演論文集(3),1999年 3月 9日,第265〜266頁
田島敬史,半構造データのためのデータモデルと操作言語,情報処理学会論文誌,1999年 2月15日,第40巻,第SIG3(TOD1)号,第152〜170頁

Also Published As

Publication number Publication date
JP2001034618A (ja) 2001-02-09

Similar Documents

Publication Publication Date Title
JP3492246B2 (ja) Xmlデータ検索処理方法および検索処理システム
US8631028B1 (en) XPath query processing improvements
JP3754253B2 (ja) 構造化文書検索方法、構造化文書検索装置及び構造化文書検索システム
Arocena et al. WebOQL: Restructuring documents, databases, and webs
US7634498B2 (en) Indexing XML datatype content system and method
JP3842573B2 (ja) 構造化文書検索方法、構造化文書管理装置及びプログラム
US5873079A (en) Filtered index apparatus and method
US5884304A (en) Alternate key index query apparatus and method
EP2901318B1 (en) Evaluating xml full text search
JP3492247B2 (ja) Xmlデータ検索システム
US7844633B2 (en) System and method for storage, management and automatic indexing of structured documents
JP2002297605A (ja) 構造化文書検索方法および構造化文書検索装置およびプログラム
WO2002031625A2 (en) A system and method of translating a universal query language to sql
EP1570381A1 (en) Evaluating relevance of results in a semi-structured data-base system
Windhouwer et al. Acoi: A system for indexing multimedia objects
WO2000045304A1 (en) Database management system with capability of fine-grained indexing and querying
US8312030B2 (en) Efficient evaluation of XQuery and XPath full text extension
Yu et al. Metadata management system: design and implementation
Huang et al. Prefiltering techniques for efficient XML document processing
JP2002297601A (ja) 構造化文書管理方法および構造化文書管理装置およびプログラム
Lim et al. WebView: A tool for retrieving internal structures and extracting information from HTML documents
JP3842574B2 (ja) 情報抽出方法および構造化文書管理装置およびプログラム
KR100555982B1 (ko) 확장 마크업 언어로 작성된 문서를 위한 정보검색 시스템및 그 방법과 그 방법을 실행시키기 위한 프로그램을기록한 컴퓨터로 읽을 수 있는 기록매체
Chen et al. On the evaluation of path-oriented queries in document databases
JP2004348485A (ja) 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031104

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131114

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees