JP2006189951A - XPath式処理方法、XPath式処理装置及びXPath式処理プログラム - Google Patents

XPath式処理方法、XPath式処理装置及びXPath式処理プログラム Download PDF

Info

Publication number
JP2006189951A
JP2006189951A JP2004381892A JP2004381892A JP2006189951A JP 2006189951 A JP2006189951 A JP 2006189951A JP 2004381892 A JP2004381892 A JP 2004381892A JP 2004381892 A JP2004381892 A JP 2004381892A JP 2006189951 A JP2006189951 A JP 2006189951A
Authority
JP
Japan
Prior art keywords
xpath expression
xpath
conditions
search target
target node
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
Application number
JP2004381892A
Other languages
English (en)
Other versions
JP4332109B2 (ja
Inventor
Hiroyuki Uchiyama
寛之 内山
Makoto Onizuka
真 鬼塚
Masashi Yamamuro
雅司 山室
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2004381892A priority Critical patent/JP4332109B2/ja
Publication of JP2006189951A publication Critical patent/JP2006189951A/ja
Application granted granted Critical
Publication of JP4332109B2 publication Critical patent/JP4332109B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 複数条件を含んだXPath式によるXMLデータの検索を、メモリ使用量を増やさずに高速化すること目的とする。
【解決手段】 入力された複数条件を含むXPath式をXPath式クラスタ化部30で絶対パスごとに条件をクラスタ化し、これに基づいて区間インデックス構築部40でXPath式のノードに含まれる形で複数条件を高速に検索するための木構造データを用いた区間インデックスを構築する。区間インデックス構築部40によって構築された前記の区間インデックスを、区間インデックス検索部50が検索する。そして、区間インデックス検索部50の検索機能を利用して複数条件XPath式フィルタリング処理部60が入力されたXMLデータからXPath式の指定に従って、高速にフィルタ済みXMLデータを出力する。
【選択図】 図1

Description

本発明は、XMLデータに対するXPath式の処理方法、XPath式の処理装置及びそのプログラムに関する。特に、複数の条件を持つXPath式の処理に関する。
XML(eXtensible Markup Language)は、ネットワーク上で交換可能な標準的なデータ記述方式を提供する技術であり、タグを用いて情報を構造化する特徴を活かして、newsML(News Markup Language)をはじめとして広く使われている。XPath式は、XMLデータの一部を特定するための記述方式を提供する技術であり、XMLデータに対する質問や変換などにおいて重要な役割を果たしている。
中でも注目されているのが、XMLデータとXPath式を入力したときに、XPath式に指定された部分を抽出する技術である。例えば、前記のnewsMLは、ニュース記事やそれに関連した画像、動画、音声などをウェブ、携帯電話、テレビ(データ放送)など、様々な端末に送ることができる。このとき、newsMLの受け側(利用者)は、XPath式を配信サーバに登録しておくことで、膨大な情報の中から、必要な情報のみを得ることができる。
XPath式を構文解析処理するための技術として典型的なものに、DOM(Document Object Model)とSAX(Simple Application Programing Interface for XML)がある。DOMは、XMLのデータが木で表現できることに注目し、処理を行う技術である。この技術によれば、複数条件に起因する分岐処理にも対応できるが、メモリの使用量が大きいという側面を持つ。また、リアルタイム処理を要求される場合には、DOMを用いたXPath式のフィルタ処理(構文解析処理)は非常に困難である。
SAXは、前記のDOMのリアルタイム性の問題の克服とメモリ使用量削減を狙った技術である。SAXでは、木を作らずに、XML文書を上から下へと走査して構文解析処理を行うため、少ないメモリ使用量でリアルタイムに処理ができるが、そのままでは、XPath式の処理に対応できない。特許文献1及び非特許文献1は、この問題に対処するために、XPath式に対応して、オートマトンを構築する方法を導入している。特許文献1及び非特許文献1では、図15に示すように、XPath式に対応して非決定性有限オートマトン(Non-deterministic Finite Automaton:以後、NFAとも記述)を決定性有限オートマトン(Deterministic Finite Automaton:以後、DFAとも記述)に変換することで、高速な処理を行うことを基本としている。なお、SAXにおいてXPath式への対応する場合には、非決定性有限オートマトンを用いるときと決定性有限オートマトンを用いるときでは、一般に、一長一短があるので、これを表1にまとめて示す。
Figure 2006189951
表1に示すように、通常はメモリ使用量と処理速度は相反する関係にあるが、特許文献1及び非特許文献1に示されている方法では、遅延型決定性有限オートマトン(lazy DFA)を導入して、決定性有限オートマトンを利用する場合に問題となるメモリ使用量の問題を回避し、高速な処理と少ないメモリ使用量を共に実現している。この他に非特許文献2に示すSAXに対する分岐XPath式処理システムもあるが、このシステムでは、複数の検索条件(分岐)を一つずつ処理しているので、条件数の増加に従い、線形に(比例的に)処理時間が増加する。
なお、複数の条件から決定される区間を利用した一般的な計算方法として、後記する区間インデックスとしてBR−treeと呼ばれる平衡木を構築する方法も知られている(非特許文献3参照)。
特開2003−323429号公報(請求項1、請求項6など、図3) T.J.Green,G.Miklau,M.Onizuka,D.Suciu著、"Processing XML Streams with Deterministic Automata"、Proceeding of ICDT、2003年 M.Onizuka著、"Light−weight XPath processing of XML stream with deterministic automata"、Proceeding of CIKM、2003年 T.H.Cormen,C.E.Leiserson,R.L.Rivest,C.Stein著、"Introduction to Algorithms second edition"、pp.311−316、MIT Press刊、2001年
前記したように、分岐XPath式処理システムでは、XPath式の複数条件を処理する場合に、登録されるXPath式が増加するに従って、性能が著しく劣化するという問題がある。しかしながら、実際的な応用においては、複数条件を指定する必要性が高く、しかも、高速に検索処理できなければならない。本発明における課題は、メモリ使用量を増やさずにXPath式の複数条件に基づく検索処理を高速に行う方法、装置及びプログラムを提供することにある。
前記課題を解決するために、本発明(請求項1)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行うXPath式処理方法であって、XPath式の記憶及び構文解析を行うためのメモリと前記構文解析及び前記XPath式に従った検索を行うための中央演算処理装置を少なくとも備えた計算機が、前記複数条件のXPath式の条件を検索対象ノードごとの条件集合にクラスタ化する手段と、前記検索対象ノードごとに当該ノードに対する条件集合から指定された区間に応じてノードを検索するための区間インデックスを構築する手段と、前記検索対象ノードに対する前記区間インデックスを用いて前記検索対象ノードに関する条件を検索する手段と、前記区間インデックスを用いて条件を一括処理してXMLデータをフィルタリングする手段を備え、前記XPath式の構文解析によって特定された前記XPath式に含まれる複数条件を検索対象ノードごとの条件集合にクラスタ化し、クラスタ化された前記検索対象ノードごとの条件集合から前記区間インデックスを構築し、検索対象ノードに含まれる前記区間インデックスを検索し、前記区間インデックスを用いてXPath式の条件を一括処理してXMLデータをフィルタリングするXPath式処理方法を備える。
この方法によれば、複数条件のXPath式に基づいてXMLデータを効率よくフィルタリングすることが可能になる。
また、本発明(請求項2)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1に記載のXPath式処理方法であって、前記複数条件のXPath式の条件を検索対象ノードごとの条件集合にクラスタ化する手段が、XPath式において相対パスで表現されている検索対象ノードを絶対パスによる表現に変換し、前記検索対象ノードの絶対パスを相互に比較することで検索対象ノードごとに条件をクラスタ化して条件集合を作成するXPath式処理方法を備える。
この方法によれば、区間インデックスを構築すべき検索対象ノードを特定し、区間インデックス構築のための条件集合を作成することができる。
さらに、本発明(請求項3)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1に記載のXPath式処理方法であって、前記複数条件のXPath式の条件を検索対象ノードごとの条件集合にクラスタ化する手段が、XPath式において相対パスで表現されている検索対象ノードを絶対パスによる表現に変換し、前記絶対パスと入力されるXMLデータの対応を調べて、前記絶対パスに含まれるワイルドカード表現を前記XMLデータに対して対応が取れるようにマッチングさせて展開することにより、前記絶対パスによる表現を展開パスによる表現に変換し、前記検索対象ノードの前記展開パスを比較する事で検索対象ノードごとに条件集合にクラスタ化するXPath式処理方法を備える。
この方法によれば、区間インデックスを構築すべき検索対象ノードを見落とすことなく特定し、区間インデックス構築のための条件集合を作成することができる。
また、本発明(請求項4)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項3のいずれか1項に記載のXPath式処理方法であって、前記区間インデックスを構築する手段が、前記クラスタ化された条件集合を元に既存の区間を分割し、前記分割後の区間群に対して木構造を持つインデックスを構築するXPath式処理方法を備える。
この方法によれば、複数条件によって規定される区間に関する検索を効率的に行うことができる。
また、本発明(請求項5)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項4のいずれか1項に記載のXPath式処理方法であって、前記検索対象ノードに対する前記区間インデックスを用いて前記検索対象ノードに関する条件を検索する手段が、構文解析によって得られた検索対象ノードに関連する値を検索対象ノードの区間インデックスに入力し、検索対象ノードに対応する複数の条件を一括して検索するXPath式処理方法を備える。
この方法によれば、前記区間インデックスを利用して、高速に検索を行うことができる。
また、本発明(請求項6)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項5のいずれか1項に記載のXPath式処理方法であって、前記区間インデックスを用いて条件を一括処理してXMLデータをフィルタリングする手段が、前記検索対象ノードに対する前記区間インデックスを用いて前記検索対象ノードに関する条件を検索する手段による検索結果を用いて、XMLデータをフィルタリングするXPath式処理方法を備える。
この方法によれば、複数条件のXPath式に従ってXMLデータをフィルタリングできる。
また、本発明(請求項7)では、複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項6のいずれか1項に記載のXPath式処理方法であって、前記区間インデックスを用いて条件を一括処理してXMLデータをフィルタリングする手段が、複数条件のXPath式を複数の単一条件のXPath式に展開して構文解析処理を行い、前記構文解析処理の結果に対応して検索のための複数の非決定性有限オートマトンを構築し、前記複数の非決定性有限オートマトンを1つの決定性有限オートマトンに統合し、前記決定性有限オートマトンを用いてXMLデータをフィルタリングするXPath式処理方法を備える。
この方法によれば、複数条件のXPath式を検索用の決定性有限オートマトンに変換して、前記決定性有限オートマトンを用いてXMLデータを効率よくフィルタリングできる。
本発明によれば、実際的な応用において重要な複数条件のXPath式の指定によるXMLデータのフィルタリングを行うことができる。しかも、XPath式の検索対象ノードに対応して区間インデックスを構築することにより、XPath式の複数条件に対応してXMLデータのフィルタリングを効率よく処理できる。
以下、図を参照して2つの実施形態を説明する。
<<第1の実施形態>>
まず、最初に本発明にかかる基本的な実施形態について説明する。
[装置の構成]
図1は、本発明の第1の実施形態の構成を説明する図である。XPath式処理装置1は、XPath式登録部10、XPath式格納部20、XPath式クラスタ化部30、区間インデックス構築部40、区間インデックス検索部50及び複数条件XPath式フィルタリング処理部60を少なくとも含む計算機である。
また、XPath式処理装置1は、図示しないCPU(Central Processing Unit)及び図示しないメモリを少なくとも含み、図示しないハードディスク装置を含むことが望ましい。
XPath式登録部10は、利用者からの複数条件のXPath式の登録を受け付ける。なお、XPath式が単一の条件しか持たないものでも同様に受け付ける。この登録の際に、単純なコマンドラインからの入力による登録を行うことも可能であるが、GUI(Graphical User Interface)を用いて利用者とのやり取りを行う表示装置の画面を出してもよい。
XPath式格納部20は、前記のXPath式登録部10によって入力したXPath式の情報を格納する。XPath式格納部20に格納した情報は、XPath式処理装置1が立ち上がるたびに繰り返し使う情報であるので、ハードディスク装置に格納することが望ましいが、メモリに格納することもできる。
XPath式クラスタ化部30は、前記XPath式格納部20に格納されているXPath式のデータを受け取って、XPath式を解析し、後記の区間インデックス構築部40での区間インデックス構築のために必要な条件のクラスタ化を行う。XPath式クラスタ化部30の動作については、図5を用いた説明において後記する。
区間インデックス構築部40は、前記XPath式クラスタ化部30においてクラスタ化されたXPath式を受け取って、クラスタ化が行われている部分について区間インデックスを構築する。区間インデックス構築部40の動作については、図9を用いた説明において後記する。
区間インデックス検索部50は、区間インデックス構築部40が構築した区間インデックスを含むノードに対しての検索を行う機能を持つ。区間インデックス検索部50は、後記する複数条件XPath式フィルタリング処理部60において区間インデックスを伴う検索処理が必要になったときには、呼び出されて区間インデックスを検索処理する。区間インデックス検索部50における処理は、図11を用いた説明において後記する。
複数条件XPath式フィルタリング処理部60は、区間インデックス検索部50からの検索結果に基づいて、入力されるXMLデータ61に対するフィルタリングを行い、フィルタ済みXMLデータ62を出力する。この出力されたフィルタ済みXMLデータ62は、例えばXMLデータを処理する能力を持つ端末に配信されて利用者に提供される。複数条件XPath式フィルタリング処理部60の処理については、図12を用いた説明において後記する。
なお、XPath式登録部10、XPath式クラスタ化部30、区間インデックス構築部40、区間インデックス検索部50及び複数条件XPath式フィルタリング処理部60は、CPUによるプログラム実行処理によって実現される。
[XPath式処理における動作]
これより、XPath式処理装置1がXPath式を処理してXMLデータをフィルタリングするまでの動作について説明する。まず、本実施形態の基本となるXMLの基本的なフィルタリング処理について説明した後に、図1に示した構成に対応して、各構成要素の動作を説明する。
(XMLの処理例)
まず、XMLのデータの例を以下に示す。この例は、文献用のXMLのデータであり、bib(文献)タグの下にbook(書籍)タグがあり、その下に、title(書名)タグ、author(著者)タグ、publication(発行年)タグ及びprice(価格)タグがある構成になっている。
<bib>
<book>
<title>Effective XML&XPath</title>
<author>Bob</author>
<publication>1999</publication>
<price>2100</price>
</book>
<book>
<title>詳解 XPath式</title>
<author>佐藤</author>
<author>鈴木</author>
<publication>2000</publication>
<price>3000</price>
</book>
</bib>
前記のXMLデータに対して、発行年が1999年以前であり、題名にXMLを含み、著者がBobであるような条件に一致したbookの要素を抽出するXPath式は、次のように記述することができる。
/bib/book[contains(title/text(),'XML')][author='Bob'][publication<=1999] ・・・(式1)
このとき、[ ]で囲まれた部分がXPath式の1つの条件を表す。前記のXPath式の例は複数(3つ)の条件を持っている。このXPath式を前記のXMLデータに適用した場合に得られる出力は以下に示すようなものになる。
<book>
<title>Effective XML</title>
<author>Bob</author>
<publication>1999</publication>
<price>2100</price>
</book>
(基本的なXMLのSAXフィルタリング処理における動作)
図2は、SAXフィルタとユーザアプリケーションとの関係を示す図である。SAXの構文解析では、XMLデータを解析するときに木を構成しない。その代わりに、コールバック関数を用いる手法をとっている。図2に示されているSAXフィルタ側にXMLデータが入力されると、上から順に読み込まれる。最初にbib(XMLデータの中では<bib>)が認識されると、SAXフィルタはユーザアプリケーション上にあるstartElement関数を呼び出す。この際、startElement関数の引数にはbibを入れておく(startElement(bib)という形をとる)ことで、ユーザアプリケーション側ではbibという情報を取得することができる。このように、SAXフィルタがユーザアプリケーション側を呼び出すことをコールバックと呼ぶ。表2にコールバック関数を示す。
Figure 2006189951
表2に示したコールバック関数の引数には、前記の例と同様にSAXフィルタ側からユーザアプリケーション側に引き渡すべき情報を入れておく。
図3は、以下に示す複数条件のXPath式である(式2)に対応してXPathフィルタリング装置が生成する(非決定性の)オートマトンの例である。
/bib/book[contains(title/text(),'XML')][publication>=1999 and publication<=
2000] ・・・(式2)
オートマトンとは、状態遷移図に対応する処理を行うような仮想的な計算機のモデルであり、初期状態、受理状態の集合、その仮想的な計算機の内部状態として取りうる状態の集合、状態遷移の集合及びその仮想的な計算機(オートマトン)のその時点での内部状態を用いて表現されたものと考えることができる。
図3においては、内部状態として取りうる状態は円で、状態遷移は矢印で示されており、矢印に付随して示されているのがその状態遷移が起きるための条件である。状態0は、オートマトンの初期状態を示している。この状態0から状態1への遷移が起きるためには、オートマトンにbib要素が与えられることが必要である。同様に状態1から状態2への遷移が起きるためには、book要素が与えられることが必要である。状態2においては、ε(イプシロン)遷移と呼ばれる遷移が行われる。このε遷移では、無条件に次の状態への遷移が起きる。図3の例においては、状態2への遷移が起きると、自動的に次の状態である状態3,5,7への遷移が起きることに対応することを示している。
状態3から状態4への遷移は、XPath式である(式2)の最初の条件[contains(title/text(),'XML')]に対応している。この状態3から状態4への遷移が起きるのは、タイトルタグにはさまれたテキストの中に“XML”という文字列が含まれている場合である。同様に、状態5から状態6への遷移は、[publication>=1999]に対応し、状態7から状態8への遷移は、[publication<=2000]に対応している。最終的に状態4、状態6、状態8の全ての受理状態への到達という条件が満たされている場合には、与えられたXMLデータは、XPath式(式2)を満たしているデータであるといえる。なお、この際に、従来技術ではpublicationという同一の検索対象のノードに対して2回の条件判断処理を行っており、このような同一検索対象に関する条件の数が増えれば増えるほど無駄な処理が増えて効率が低下するという問題を抱えていた。本実施形態では、このようなSAXによるXPath式の評価を、lazy DFAを用いて行うことを基本とし、前記の効率の問題を解決する。
図4は、その他の例を用いて、前記の効率が低下する問題の発生を説明する図である。図4には、F40からF60までの3つのXPath式の検索条件が示されていて、これらに対応するA40からA60までの3つのNFAが示されている。それぞれ、F40はA40に、F50はA50に、F60はA60に変換される。変換されて生成したA40からA60は、それぞれ非効率の原因となる同一の要素に対する複数の状態遷移を含んでいる。A40の例では、[1999<=publication]と[publication<=2002]という2つの条件は、publicationという同一の要素に対する別個の条件判断を行っているが、図4ではこのような部分を楕円で囲んで示している。後記する図5を参照したXPath式クラスタ化部30の処理においては、このような重複する条件判断の部分をクラスタ化の対象とする。
(XPath式クラスタ化部の処理)
図5は、XPath式クラスタ化部30における処理を説明する図である。適宜、図4の例も参照しつつ、クラスタ化の処理について説明する。
まず、XPath式格納部20が、対象となる複数の(全ての)XPath式をXPath式クラスタ化部30に入力し、これらのXPath式の検索対象ノードの絶対パスを格納できる集合Sを用意する(S110)。なお、集合Sは、最初は空集合であり、この時点ではまだいずれのパスも登録されていない。
次に、S110で入力されたXPath式から1つずつXPath式を取り出して、順次処理を行っていく。まず、その時点で全てのXPath式を処理したか否かを調べる(S120)。全てのXPath式を処理し終わっている場合は(S120→Yes)、そこで処理を終了する。未処理のXPath式が残っている場合には(S120→No)、XPath式クラスタ化部30に対して取り出したXPath式の入力を行い(S130)、XPath式の解析処理を行う(S140)。以下、XPath式に含まれる条件を順次処理する。
まず、対象となるXPath式について、全ての条件を処理したか否かを調べる(S150)。全ての条件の処理が終わっている場合には(S150→Yes)、ステップS120に戻って、次のXPath式の処理を続行する。未処理の条件が残っている場合には(S150→No)、まず、選択されている検索対象ノードの絶対パスを取得する(S160)。この絶対パスの取得については、補足説明を後記する。
そして、検索対象ノードの絶対パスが集合Sに登録されているか否かを調べる(S170)。既に検索対象ノードの絶対パスが集合Sに登録されている場合は(S170→Yes)、特別な処理を施さずに、後記するステップS190に進む。未だ検索対象ノードの絶対パスが集合Sに登録されていない場合は(S170→No)、まず、その絶対パスを集合Sに登録し、検索対象ノードに対する条件を格納できる集合Rを作成する(S180)。この時点では、集合Rは空集合である。そして、引き続き実行されるステップS190では、検索対象ノードに対する条件を検索対象ノードが持つ集合Rに追加する(S190)。この後、ステップS150から処理を繰り返す。
なお、図4に示したXPath式全体の例を対象に前記のクラスタ化を行った場合、集合Sに含まれる検索対象ノードの絶対パスは以下の2つが得られる。
S1:/bib/book/price
S2:/bib/book/publication
また、検索対象ノードへ分割して、検索対象ノードに対する条件を集合Rに蓄積した結果は下記のようになる。
R1:price>=2000, price<2000, price>=3000
R2:publication>=1999, publication<=2002, publication>=2000, publication<=2003, publication<=2004
なお、R1は検索ノードの絶対パスS1に対する条件集合であり、R2は検索ノードの絶対パスS2に対する条件集合である。明示していないが、R1及びR2に含まれるそれぞれの条件がどのXPath式に含まれるかの情報が保存されており、それらの情報は、後記する区間インデックス構築部40に引き渡される。
ここで、前記した絶対パスの取得について、補足説明を加える。図6は、パスの与え方(書式)が異なるが、意味としては等価なXPath式の例を示す。図6に示したF70からF90のXPath式は、パスの与え方は異なるが、意味としては等価である。F70からF90に対して、そのまま絶対パスを考慮せずにNFAを作成するとそれぞれA70からA90のようになる。これらは、本来、クラスタ化を行って、後記する区間インデックスの生成の対象とすべきものであるが、このままでは、本来の意味に沿ったクラスタ化や区間インデックス化は困難である。そこで、絶対パスを用いて、クラスタ化の対象を正確に調べる。
図6に示したF70からF90の例においては、以下のように絶対パスを取得すれば、3つとも/bib/type/book/publicationを絶対パスとして取得することになり、同一の扱いができることが判明する。
F70:/bib/type/bookとpublicationを解析し、/で接続してパスを作成する。
F80:/bib/typeとpublication/bookを解析し、/で接続してパスを作成する。
F90:/bibとtype/book/publicationを解析し、/で接続してパスを作成する。
前記した通常のパスの場合と同様に「//」と「*」を含むXPath式についての絶対パスも取得できる。なお、「//」は、ルート(ノード)とその全ての子孫ノードの要素(すなわちノード)にマッチするために用いられる。例えば、「/bib//book」と書いた場合には、/bib以下の子孫ノードの中でbookという名を持つノード全てにマッチする。「*」は一般的なファイルシステムにおけるワイルドカードと同様のもので、例えば、「/bib/*」と書くと、/bib以下の子ノード全てにマッチする。また、「/*」と書くと、ルートノードの子ノード全てにマッチする。
以下に「//」と「*」を含むXPath式についての例を示す。
F101://book[1999<=publication and publication<=2002]
に対しては、//bookとpublicationを解析し、/で接続してパスを作成する。
その結果、絶対パスとして、//book/publicationを取得する。
F102:./bib//book[1999<=publication and publication<=2002]
に対しては、/bib//bookとpublicationを解析し、/で接続してパスを作成する。
その結果、絶対パスとして、/bib//book/publicationを取得する。
F103:/*/*/*[1999<=publication and publication<=2002]
に対しては、/*/*/*とpublicationを解析し、/で接続してパスを作成する。
その結果、絶対パスとして、/*/*/*/publicationを取得する。
F104:/*/*[1999<=*/publication and */publication<=2002]
に対しては、/*/*と*/publicationを解析し、/で接続してパスを作成する。
その結果、絶対パスとして、/*/*/*/publicationを取得する。
F105:/*//book[1999<=publication and publication<=2002]
に対しては、/*//bookとpublicationを解析し、/で接続してパスを作成する。
その結果、絶対パスとして、/*//book/publicationを取得する。
F106:/*/*//book[1999<=publication and publication<=2002]
に対しては、/*/*//bookとpublicationを解析し、/で接続してパスを作成する。
その結果、絶対パスとして、/*/*//book/publicationを取得する。
このように「//」と「*」という特殊な表現を利用したとしても、通常のパスの場合と同様に絶対パスを取得することが可能であり、こうして得られた絶対パスの等価性により、後記する区間インデックスを構築するためのクラスタ化が可能である。
(区間インデックス構築部の処理)
図7及び図8は区間インデックスを説明するための図である。図7は、図4に示したF40からF60までのXPath式を例にとって、区間インデックスとの対応関係を説明する図である。図7に示した例では、検索対象ノードがpublicationであった場合の区間インデックスを上側に記載し、対応するNFAの一部を下側に示している。なお、下側に記載したA40からA60の3つのNFAは図4に記載したA40からA60と同一である。
図7の例においては、publicationについての区間インデックスに次の区間が存在する。
[-∞,1999), [1999,2000), [2000,2001), [2001,2002), [2002,2003), [2003,2004), [2004,+∞]
但し、[a,b)は、a以上b未満を示している。図7の中央部の破線矢印はpublicationの値がある区間に含まれるときに、どのNFAの条件を満たしているかを表している。例えば、publicationのテキストノードの値が2001である場合には、[2001,2002)に含まれることになり、その区間と対応する条件は、以下のようになる。
1999<publication, publication<=2002, 2000<=publication, publication<=2003, 2001<= publication, publication<=2004
なお、図7においては、該当する区間から破線の矢印が、対応するNFAの中の条件(を満たしたノード)へと結ばれている。(図7の破線の矢印は一部省略されている。)
このように、図7の上側に示されている2分木(区間インデックス)を用いると、publicationのテキストノードがどの区間に含まれるかを1回で検索することが可能になる。
図4に示された例のpriceについては、price>=2000という条件とprice<=2000という2つの条件において、値が2000の部分で重複している。このような場合には、[2000,2000]という区間を導入することで、重複のない区間群へと分割することが可能である。こうすれば、これらの区間群は、切れ目も重複もなく、全ての区間の間に順序関係がある。こうして得られた区間を次に示す。
[-∞,2000), [2000,2000], (2000,3000), [3000,+∞]
但し、(a,b)はaより大きく、b未満を表し、[c,d]はc以上d以下を表す。また、publicationの例と同様に、F40の条件を満たす区間は[2000,2000], (2000,3000), [3000,+∞]であり、F50の条件を満たす区間は[-∞,2000), [2000,2000]であり、F60を満たす区間は[3000,+∞]であることを1回で検索できる。
図8はXPath式と区間インデックスの関係の例を示す図である。木構造を持ったインデックスを用いて検索を行うには、区間群は、切れ目も重複もなく、全ての区間の間に順序関係があることが必要である。図8に示した例では、上部に示されている任意の2つの区間を選択したときに、細分化されてできた区間において、交差する部分がない状態で、それぞれの対照関係が明確になっている場合がこのような検索が可能な条件に該当する。そして、区間インデックスによって検索をかけた結果、図8の下部に示す検索にヒットした条件群が得られる。
図9は、区間インデックス構築部40における処理を説明する図である。この処理によって、区間インデックスを構築する。まず、XPath式クラスタ化部30でクラスタ化された検索対照ノードを取り出して(S210)、それら全てを区間インデックス構築の対象とする。すなわち、それぞれの検索対象ノードに対して1つずつ区間インデックスを構築する。
次に、ステップS210で取り出した全ての検索対象ノードを処理したか否かを調べる(S220)。全ての処理が終わっている場合(S220→Yes)、処理を終了する。未処理の検索対象ノードが残っている場合(S220→No)、まず、そのノードにおいて、選択された検索対象ノードの全ての条件を処理したか否かを調べる(S230)。そのノードの全ての条件を処理し終わっている場合は(S230→Yes)、ステップS220に戻って、次のノードの処理に移る。未処理の条件が残っている場合には(S230→No)、条件の処理を続行し、検索対象のノードの区間インデックスが存在するか否かを調べる(S240)。
まだ、区間インデックスが存在しない場合(S240→No)、まず、検索対象に対する区間インデックスを構築し、これに[-∞,+∞]の区間を登録し(S270)、ステップS230から処理を繰り返す。既に区間インデックスが存在する場合(S240→Yes)、選択された条件の示す区間に含まれる、区間インデックスに登録された区間Aが存在するか否かを調べる(S250)。前記の条件に該当する登録区間が存在する場合(S250→Yes)、存在した全ての区間Aに対して、選択された条件を登録して(S280)、ステップS230から処理を繰り返す。前記の条件に該当する登録区間がない場合(S250→No)、選択された条件の示す区間の境界が既存区間に含まれるか否かを調べる(S260)。前記の境界が既存区間に含まれる場合(S260→Yes)、その既存区間を削除し、前記の境界によってその既存区間を二つに分けた結果できる二つの区間を区間インデックスに登録し、前記二つの区間に対して、選択された条件を登録し(S290)、ステップS230から処理を繰り返す。前記の境界が既存区間に含まれていない場合には(S260→No)、ステップS230から処理を繰り返す。
図10は、既存の区間が区間インデックスに登録されている場合に新規のXPath式が登録される際にどのように区間インデックスを構築するかを示す例を説明する図である。この例では、(1)の[1999<=publication<=2002]という条件(区間)と(2)の[2000<=publication<=2003]という条件(区間)が既に登録されている場合に、新規の条件(区間)が新たに登録される際の処理の例を示している。
図10(A)は、(1)の[1999<=publication<=2002]という条件(区間)と(2)の[2000<=publication<=2003]という条件(区間)が既に登録されている状態を示している。ここでの区間インデックスをより詳細に説明すると、1999以上2000未満の値が検索されると条件(区間)(1)が満たされ、2000以上2002以下の値が検索されると条件(区間)(1)及び(2)が満たされ、2002以上2003以下の値が検索されると条件(区間)(2)が満たされる状態になっている。
図10(B)は、図10(A)のような区間インデックスに対して(3)の[2001<=publication<=2004]という新規の条件(区間)が登録される場合を示す図である。このとき、図10(B)にあるように、追加する条件(区間)が既存の区間を含む場合(図10(D))と追加された区間の境界が既存の区間に含まれる場合(図10(C))がある。ここでは、既存の[2000<=publication<=2002]という区間と[2003<publication<=+∞]という区間において、2001及び2004が新しく追加された区間の境界として加えられることが示されている。
追加された区間の境界が既存の区間に含まれる場合は、図10(C)に示されているが、この場合には、まず、追加された区間の境界を含むような区間を区間インデックスから削除する。そして、次に追加された区間により分割された2つの区間を区間インデックスに追加する。この例では、[2000<=publication<=2002]が削除されて、新たに[2000<=publication<2001]という区間と[2001<=publication<=2002]という区間が登録されていることを示している。
図10(D)は、追加する区間が既存の区間を含む場合を説明する図である。新しく追加された区間に対応する全ての分割された区間に対して、条件(区間)(3)を追加する。具体的には、[2001<=publication<=2004]に含まれる区間に対応する[2001<=publication<=2002]と[2002<publication<=2003]と[2003<publication<=2004]の3つの区間が区間(3)と対応する区間である。
図10(E)は、ここまでの処理を行った結果得られた区間インデックスを示している。なお、この例には、該当する区間がないが、[2002<=publication<=2002]あるいは[2002,2002]というような一価値(1つの点になる区間)も検索できる。
(区間インデックス検索部の処理)
図11は区間インデックス検索部50における処理を説明する図である。この処理では、前記の区間インデックス構築部40が構築した区間インデックスを検索する。まず、区間インデックス検索部50に検索対象ノードと検索値としての区間が入力される(S310)。そして、検索対象ノードの絶対パスから検索対象ノードを特定して、特定された検索対象ノードに対する区間インデックスへ前記の検索値すなわち区間が入力される(S320)。その値に対して、区間インデックスの検索の結果からマッチした条件のリストを返し(S330)、処理を終了する。この条件のリストの出力は、後記する複数条件XPath式フィルタリング処理部60に入力される。
(複数条件XPath式フィルタリング処理部の処理)
図12は、複数条件XPath式フィルタリング処理部60の処理を説明する図である。ここで説明する処理は、基本的にXMLデータの構造を示す文法であるスキーマを持たない前提で複数条件XPath式に対応するための処理である。
まず、複数条件XPath式フィルタリング処理部60は、複数のXPath式の入力が行われると(S410)、これらを順次処理するために、全てのXPath式を処理したか否かを調べる(S420)。そして、全てのXPath式の処理が終わっている場合には(S420→Yes)、ここで処理を終了する。未処理のXPath式が残っている場合には(S420→No)、1つのXPath式を入力して(S430)、XPath式の解析を行う(S440)。そして、この解析の結果に基づいて、XPath式が条件を含むか否かを調べる(S450)。この処理は、具体的には、XPath式の中に[]で囲まれた部分があるか否かを構文解析して調べている処理である。
そして、条件が存在する場合(S450→Yes)、複数の条件の中から選択されている条件のみをXPath式のプロセッサ(複数条件XPath式フィルタリング処理部の一部となっている単一条件のXPath式フィルタリング処理を行うプロセッサ)へ登録する(S460)。その際、複数の条件の中から選択されている条件のみを削除したXPath式を新しいXPath式として出力し(S470)、これをステップS440から処理を繰り返すことによって、最終的には全ての条件を処理する。なお、このような処理になっているのは、複数条件XPath式フィルタリング処理部60が従来の単一条件のXPath式のフィルタリング処理部から拡張して構成されたものであるため、XPath式の条件を1つ1つ処理していかねばならないからである。
条件が存在しない場合には(S450→No)、ここまでの処理で条件の数と同じだけのXPath式の集合が構築された状態になっているが、ここで入力したXPath式から条件を取り除いた情報を登録し(S480)、XPath式の親とする。そして、このXPath式の親にあたるものとそれ以外に登録したXPath式(すなわち、前記のXPath式の集合に含まれるXPath式)の間に親子関係をつけておき(S490)、それぞれの条件がどのように使われるものであるかを再現できるようにしておく。ここまでの処理が終了すると、1つのXPath式が処理し終えたことになるので、ステップS420から処理を繰り返して次のXPath式を処理する。
このようなXPathの処理が終わった後には、複数条件XPath式フィルタリング処理部60は、XMLのデータ61の入力に対して、XPath式に従ったフィルタリングを行えるようになる(図1参照)。この処理の結果、複数条件XPath式フィルタリング処理部60は、フィルタ済みXMLデータ62を出力するが、この出力には、利用者がほしいと思う情報がフィルタリングされており、これを例えばXMLデータを構文解析して表示できるような端末に送れば、利用者に応じてカスタマイズした情報流通などの応用が可能になる。
ここまで、本発明の第1の実施形態について説明をしてきたが、本実施形態によれば、従来は効率の低下を否めなかった複数条件のXPath式の処理を少ないメモリ使用量で高速に行うことができる。これは、数値を伴う条件の場合に効果が顕著である。このような効果は、newsMLを用いた文字放送に代表されるXMLデータを用いたストリーム系の情報サービスを行う際の処理効率を向上させる。
<<第2の実施形態>>
本発明の第1の実施形態では、区間インデックスを構築できるノードにだけ配置した。これだけでも効率的な処理を行えるが、区間インデックスの有効活用の余地はまだ残っている。そこで、本発明の第2の実施形態では、第1の実施形態では見落としていたノードにも区間インデックスを配置するようにする。第2の実施形態では、区間インデックスを構築(配置)する処理の一部だけが、第1の実施形態と異なっているので、ここでは、その異なっている部分だけを説明し、その他の共通の部分は説明を省略する。
第2の実施形態では、第1の実施形態において、絶対パスを用いてクラスタ化を行っていたのとは異なり、絶対パスだけではなく、展開パスを考慮する。つまり、「//」や「*」というワイルドカード的な表現を含む絶対パスについては、字面だけの同一性の判断では具体的な絶対パスを決定できないのである。
例えば、次に示す2つのXPath式F110とF120は、第1の実施形態では、同一のパスになるとは判断されなかった。
F110://book[publication<2000]
F120:/bib//book[publication<2000]
これは、F110のXPath式の絶対パスが//book/publicationであり、F120のXPath式の絶対パスが/bib//book/publicationだから、字面が同一でないためである。その結果、クラスタ化やそれに続く区間インデックスの構築も行われなかった。
しかしながら、以下に示すようなXMLのデータを与えた場合は、F110でもF120でも、検索の対象になる。
<bib>
<book>
<title>Effective XML&Xpath</title>
<author>Bob</author>
<publication>1999</publication>
<price>2100</price>
</book>
</bib>
このXMLデータに含まれる「<publication>1999</publication>」のタグは、F110においてもF120においても検索の際に評価される必要がある。ここでの問題は、この2つのXPath式にかかわる区間インデックスが生成されないので、高速化を図ることができないということである。
図13は、XPath式(110及びF120)からNFA(A130)へ変換し、最終的にDFA(A140)が構築される様子を説明する図である。DFA(A140)の各状態は、変換される前のNFAの状態に関する情報を持っている。たとえば、図13のA140の最初の状態であるN11には、A130のN1とN4の状態を持っているのである。よって、DFAに含まれるNFAの状態で、同じ要素名を持っている場合には、区間インデックスを構築することが可能となる。このことは、XPath式を展開した上で区間インデックスを構築することに該当するので、パスの展開を考慮していない第1の実施形態に比べて、見落としがない分だけ、より高速な処理を行うことが可能となる。
図14は、展開パスに対応して区間インデックスを構築する方法を説明する図である。まず、XMLデータが入力されると(S510)、必要に応じて遅延型決定性有限オートマトン(lazy DFA)が構築され、それと共に状態Aが構築される(S520)。
そして、前記の状態Aに含まれる全ての非決定性有限オートマトンの状態Bに対して処理を行ったか否かを調べる(S530)。なお、ここでの状態Aとは、図13における決定性有限オートマトンA140の状態N11,N12,N13,N14に該当し、状態Bとは、図13における非決定性有限オートマトンA130の状態N1,N2,N3,N4,N5,N6,N7に該当する。
既に全ての処理が行われている場合には(S530→Yes)、処理を終了する。未処理の状態Bが残っている場合には(S530→No)、状態Bの要素名に対する区間インデックスが存在するか否かを調べる(S540)。区間インデックスが存在する場合(S540→Yes)、その要素名に対する区間インデックスへ状態Bに対応する条件を追加し、(S550)、ステップS530から処理を繰り返す。区間インデックスが存在しない場合(S540→No)、その要素名に対する区間インデックスを構築し、その区間インデックスへ状態Bに対応する条件を追加し(S560)、ステップS530から処理を繰り返す。なお、ステップS550及びS560において「区間インデックスに状態Bに対応する条件を追加する」という説明が出てきているが、これは、図13の例でいえば、状態N3に対応する条件である「publication<2000」という条件を、構築した区間インデックスのより詳細な区間のうちの条件に該当する区間に対して登録を行うということに該当する。そして、このときの要素名は「publication」である。
第2の実施形態においても、第1の実施形態と同様に複数条件のXPath式の処理を少ないメモリ使用量で高速に行うことが出来る。これは、数値を伴う条件の場合に効果が顕著である。しかも、第2の実施形態は、展開パスにおいて同一のパスが出現する場合には、第1の実施形態よりもさらに高速化が期待できる。
ここまで、本発明にかかる2つの実施形態を説明してきたが、本発明はこれらの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で変更が可能である。例えば、ここまでに説明した実施例では区間インデックスをクラスタ化ができたノードに対してだけ配置していたが、実際にクラスタ化が出来なくてもクラスタ化される可能性があるところにあらかじめ区間インデックスを配置しておくようにしてもよい。なお、本発明にかかる実施形態は、それぞれ計算機に計算機プログラムを読み込むことにより、演算手段(中央演算処理装置)を用いて実現される。
第1の実施形態の構成を説明する図である。 SAXフィルタとユーザアプリケーションの関係を示す図である。 複数条件XPath式であるに対応してXPathフィルタリング装置が生成するオートマトンの例を説明する図である。 効率が低下する問題の発生を説明する図である。 XPath式クラスタ化部における処理を説明する図である。 パスの与え方が異なるが、意味としては等価なXPath式の例を示す図である。 XPath式と区間インデックスとの対応関係を説明する図である。 XPath式と区間インデックスの関係の例を示す図である。 区間インデックス構築部における処理を説明する図である。 既存の区間が区間インデックスに登録されている場合に新規のXPath式が登録される際にどのように区間インデックスを構築するかを示す例を説明する図である。 区間インデックス検索部における処理を説明する図である。 複数条件XPath式フィルタリング処理部の処理を説明する図である。 第2の実施形態において、XPath式からNFAへ変換し、最終的にDFAが構築される様子を説明する図である。 第2の実施形態において、展開パスに対応して区間インデックスを構築する方法を説明する図である。 XPath式処理に関する従来技術を説明するための図である。
符号の説明
1 XPath式処理装置
10 XPath式登録部
20 XPath式格納部
30 XPath式クラスタ化部
40 区間インデックス構築部
50 区間インデックス検索部
60 複数条件XPath式フィルタリング処理部

Claims (9)

  1. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行うXPath式処理方法であって、
    XPath式の記憶及び構文解析を行うためのメモリと前記構文解析及び前記XPath式に従った検索を行うための中央演算処理装置を少なくとも備えた計算機が、
    前記複数条件のXPath式の条件を検索対象ノードごとの条件集合にクラスタ化する手段と、
    前記検索対象ノードごとに当該ノードに対する条件集合から指定された区間に応じてノードを検索するための区間インデックスを構築する手段と、
    前記検索対象ノードに対する前記区間インデックスを用いて前記検索対象ノードに関する条件を検索する手段と、
    前記区間インデックスを用いて条件を一括処理してXMLデータをフィルタリングする手段を備え、
    前記XPath式の構文解析によって特定された前記XPath式に含まれる複数条件を検索対象ノードごとの条件集合にクラスタ化し、
    クラスタ化された前記検索対象ノードごとの条件集合から前記区間インデックスを構築し、
    検索対象ノードに含まれる前記区間インデックスを検索し、
    前記区間インデックスを用いてXPath式の条件を一括処理してXMLデータをフィルタリングすること
    を特徴とするXPath式処理方法。
  2. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1に記載のXPath式処理方法であって、
    前記複数条件のXPath式の条件を検索対象ノードごとの条件集合にクラスタ化する手段が、XPath式において相対パスで表現されている検索対象ノードを絶対パスによる表現に変換し、
    前記検索対象ノードの絶対パスを相互に比較することで検索対象ノードごとに条件をクラスタ化して条件集合を作成すること
    を特徴とするXPath式処理方法。
  3. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1に記載のXPath式処理方法であって、
    前記複数条件のXPath式の条件を検索対象ノードごとの条件集合にクラスタ化する手段が、XPath式において相対パスで表現されている検索対象ノードを絶対パスによる表現に変換し、
    前記絶対パスと入力されるXMLデータの対応を調べて、前記絶対パスに含まれるワイルドカード表現を前記XMLデータに対して対応が取れるようにマッチングさせて展開することにより、前記絶対パスによる表現を展開パスによる表現に変換し、
    前記検索対象ノードの前記展開パスを比較する事で検索対象ノードごとに条件集合にクラスタ化すること
    を特徴とするXPath式処理方法。
  4. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項3のいずれか1項に記載のXPath式処理方法であって、
    前記区間インデックスを構築する手段が、前記クラスタ化された条件集合を元に既存の区間を分割し、
    前記分割後の区間群に対して木構造を持つインデックスを構築すること
    を特徴とするXPath式処理方法。
  5. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項4のいずれか1項に記載のXPath式処理方法であって、
    前記検索対象ノードに対する前記区間インデックスを用いて前記検索対象ノードに関する条件を検索する手段が、構文解析によって得られた検索対象ノードに関連する値を検索対象ノードの区間インデックスに入力し、
    検索対象ノードに対応する複数の条件を一括して検索すること
    を特徴とするXPath式処理方法。
  6. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項5のいずれか1項に記載のXPath式処理方法であって、
    前記区間インデックスを用いて条件を一括処理してXMLデータをフィルタリングする手段が、前記検索対象ノードに対する前記区間インデックスを用いて前記検索対象ノードに関する条件を検索する手段による検索結果を用いて、XMLデータをフィルタリングすること
    を特徴とするXPath式処理方法。
  7. 複数条件のXPath式に従ってXMLデータをフィルタリングする処理を行う請求項1ないし請求項6のいずれか1項に記載のXPath式処理方法であって、
    前記区間インデックスを用いて条件を一括処理してXMLデータをフィルタリングする手段が、複数条件のXPath式を複数の単一条件のXPath式に展開して構文解析処理を行い、
    前記構文解析処理の結果に対応して検索のための複数の非決定性有限オートマトンを構築し、
    前記複数の非決定性有限オートマトンを1つの決定性有限オートマトンに統合し、
    前記決定性有限オートマトンを用いてXMLデータをフィルタリングすること
    を特徴とするXPath式処理方法。
  8. 請求項1ないし請求項7のいずれか1項に記載のXPath式処理方法を、少なくともメモリと中央演算処理装置を備えた計算機を用いて実現することを特徴とするXPath式処理装置。
  9. 請求項1ないし請求項7のいずれか1項に記載のXPath式処理方法を、少なくともメモリと中央演算処理装置を備えた計算機に実行させることを特徴とするXPath式処理プログラム。
JP2004381892A 2004-12-28 2004-12-28 XPath式処理方法、XPath式処理装置及びXPath式処理プログラム Active JP4332109B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004381892A JP4332109B2 (ja) 2004-12-28 2004-12-28 XPath式処理方法、XPath式処理装置及びXPath式処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004381892A JP4332109B2 (ja) 2004-12-28 2004-12-28 XPath式処理方法、XPath式処理装置及びXPath式処理プログラム

Publications (2)

Publication Number Publication Date
JP2006189951A true JP2006189951A (ja) 2006-07-20
JP4332109B2 JP4332109B2 (ja) 2009-09-16

Family

ID=36797114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004381892A Active JP4332109B2 (ja) 2004-12-28 2004-12-28 XPath式処理方法、XPath式処理装置及びXPath式処理プログラム

Country Status (1)

Country Link
JP (1) JP4332109B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008117454A1 (ja) * 2007-03-27 2008-10-02 Fujitsu Limited 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
JP2009295013A (ja) * 2008-06-06 2009-12-17 Hitachi Ltd データベース管理方法、データベース管理装置およびプログラム
US8549009B2 (en) 2007-09-07 2013-10-01 Nec Corporation XML data processing system, data processing method and XML data processing control program used for the system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008117454A1 (ja) * 2007-03-27 2008-10-02 Fujitsu Limited 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
JPWO2008117454A1 (ja) * 2007-03-27 2010-07-08 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US8190632B2 (en) 2007-03-27 2012-05-29 Fujitsu Limited Computer product, information retrieving apparatus, and information retrieving method
JP5067420B2 (ja) * 2007-03-27 2012-11-07 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US8549009B2 (en) 2007-09-07 2013-10-01 Nec Corporation XML data processing system, data processing method and XML data processing control program used for the system
JP2009295013A (ja) * 2008-06-06 2009-12-17 Hitachi Ltd データベース管理方法、データベース管理装置およびプログラム

Also Published As

Publication number Publication date
JP4332109B2 (ja) 2009-09-16

Similar Documents

Publication Publication Date Title
US7788262B1 (en) Method and system for creating context based summary
CN102279894B (zh) 基于语义的查找、集成和提供评论信息的方法及搜索系统
CN103914513B (zh) 一种实体输入方法和装置
CN104679783B (zh) 一种网络搜索方法和装置
CN101398858B (zh) 一种基于本体学习的Web服务语义提取方法
CN104281702A (zh) 基于电力关键词分词的数据检索方法及装置
KR101054824B1 (ko) 키워드 시맨틱 네트워크 구성을 통한 특허정보 시각화 시스템 및 그 방법
CN107451120B (zh) 一种公开文本情报的内容冲突检测方法及系统
CN104462268B (zh) 一种html文档信息抽取表达式的方法及系统
CN107679035A (zh) 一种信息意图检测方法、装置、设备和存储介质
CN103207917A (zh) 标注多媒体内容的方法、生成推荐内容的方法及系统
CN105005616A (zh) 基于文本图片特征交互扩充的文本图解方法及系统
CN104462532A (zh) 网页正文提取的方法和装置
RU2568276C2 (ru) Способ извлечения полезного контента из установочных файлов мобильных приложений для дальнейшей машинной обработки данных, в частности поиска
CN103838792A (zh) 一种网页主题确定的方法
JP2005135199A (ja) オートマトン作成方法、および、xmlデータ検索方法、ならびに、xmlデータ検索装置、xmlデータ検索プログラム、および、xmlデータ検索プログラムの記録媒体
Tao et al. Facilitating Twitter data analytics: Platform, language and functionality
CN112464591B (zh) 一种多端口嵌套模型连接分析方法及介质
JP4332109B2 (ja) XPath式処理方法、XPath式処理装置及びXPath式処理プログラム
CN112148938B (zh) 一种跨域异构数据检索系统及检索方法
JP4519028B2 (ja) XPath式処理装置
CN116523041A (zh) 装备领域知识图谱构建方法、检索方法、系统及电子设备
Zhang et al. Construction of a cloud scenario knowledge graph for cloud service market
CN113407678A (zh) 知识图谱构建方法、装置和设备
CN109923538A (zh) 文本检索装置、文本检索方法以及计算机程序

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090331

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20090414

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090417

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090515

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: 20090616

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: 20090619

R150 Certificate of patent or registration of utility model

Ref document number: 4332109

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130626

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140626

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350