JP2007034763A - XPath式処理装置、XPath式処理方法、および、XPath式処理プログラム - Google Patents

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

Info

Publication number
JP2007034763A
JP2007034763A JP2005218239A JP2005218239A JP2007034763A JP 2007034763 A JP2007034763 A JP 2007034763A JP 2005218239 A JP2005218239 A JP 2005218239A JP 2005218239 A JP2005218239 A JP 2005218239A JP 2007034763 A JP2007034763 A JP 2007034763A
Authority
JP
Japan
Prior art keywords
xpath
path
branch
predicate
xpath expression
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
JP2005218239A
Other languages
English (en)
Other versions
JP4519028B2 (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 JP2005218239A priority Critical patent/JP4519028B2/ja
Publication of JP2007034763A publication Critical patent/JP2007034763A/ja
Application granted granted Critical
Publication of JP4519028B2 publication Critical patent/JP4519028B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】 フィルタリング処理を高速化しかつメモリ使用量を削減すること。
【解決手段】 XMLデータ130をフィルタリング処理するための分岐XPath式を処理するXPath式処理システムであって、入力された複数の分岐XPath式を格納するXPath式格納装置120と、前記XPath式格納装置120に格納された分岐XPath式ごとにターゲットパスおよび述語それぞれの絶対パスおよびスコープパスを抽出するパス抽出装置160と、前記パス抽出装置160により抽出された各パスをノードとして、部分的に等しいノードまたはノード間のリンクを共有可能部分として共有化し、複数の分岐XPath式から1つの共有化インデックスを構築する共有化インデックス構築装置150と、を有する。
【選択図】 図3

Description

本発明は、XPath式処理装置、XPath式処理方法、および、XPath式処理プログラムに関する。
XML(Extensible Markup Language)は、ネットワーク上で交換可能な標準的なデータ記述方式を提供する技術であり、現在newsMLなどをはじめとして広く使われている。XPath(XML Path Language)式は、XMLデータの一部を特定するための記述方式を提供する技術であり、XMLデータに対するクエリや変換などにおいて重要な役割を果たしている。
XMLデータとその中の一部分を表しているXPath式とを入力としたときに、XPath式により指定された部分を抽出する技術が注目を集めている。例えば、newsMLは、ニュース記事やそれに関連した画像、動画、音声などをウェッブ端末、携帯電話、テレビ(データ放送)等、さまざまな端末に送ることができる。このとき、newsMLの受け側(利用者)は、XPath式を配信サーバに登録しておくことで膨大な情報の中から、必要な情報のみを得ることができる。
なお、XPathは、W3C(The World Wide Web Consortium)が勧告した標準規格で、XML文書の中の特定の要素を指し示す記述方法を定めている。XPathは、XSLT(XML Stylesheet Language Transformations)やXPointer(XML Pointer Language)で使われる位置指定の記述方式を独立させたものである。XPathは、ハイパーリンクなどに使われる人為的に付加されたアンカーによる指定とは異なり、XMLデータを表す木構造をたどって文書内のあらゆる要素や属性にアクセスする手段を提供する。なお、XPath式は、XPathの規格に従った実際の式である。
XMLデータのパース(Parse)処理は、DOM(Document Object Model)またはSAX(Simple API for XML)に分類される。DOMとは、XMLが木で表現できることに注目し処理を行う技術である。DOM(XMLを内部木で表現したもの)に対して走査を行うことで、分岐処理に対応することができる。ただし、DOMでは巨大なXMLに対しても内部木(以下、DOM木)を作らなければならないために、メモリ使用量が膨大となる。また、ニュース配信や株価配信のように逐次的なデータ(時系列データなど)として送られてリアルタイム処理を必要とする場合には、DOM木を用いたXPath式処理は不可能である。
一方、SAXは、前記のDOMの弱点であるリアルタイム性とメモリ使用量削減を狙った技術である。DOMでは、XMLを木として表現することで、XPath式を与えられたときに走査することで検索およびフィルタリング処理を行った。一方SAXを用いた場合には、XMLをあくまでも文書を上から下へ走査することしかできないために、DOMと同じようには、XPath式処理を行うことができない。
そこで、SAXを用いたXPath式処理技術としては、NFA(Nondeterministic Finite Automaton)を利用した方法やDFA(Deterministic Finite Automaton)を利用した方法がある。NFAとDFAとは完全に独立したものではなく、それぞれ一長一短がある。NFAは、1つのXPath式に対して1つのオートマトンを構築する。複数のXPath式が与えられたときには、いくつものオートマトンを構築する必要がある。DFAは、NFAから構築される。それぞれの長所短所を表1に示す。
Figure 2007034763
NFAやDFAが作成されると入力されたXMLの中でどの部分がXPath式に一致するかを判断することが可能となる。NFAを利用した方法は、1つのXPath式に対して1つのNFAを作成する。この方法は、XPath式が多くなると処理速度が著しく劣化する特徴がある(非特許文献2)。DFAを利用した方法は、前記NFAを変換することで実現できる。DFAは、XPath式が多くなっても処理速度が一定のまま高速に維持できるという特徴がある。ただし、変換の際にメモリ利用量が膨大になるという欠点も有する。
遅延型DFA(lazyDFA)と呼ばれる手法は、非決定オートマトンからDFAヘすぐに変換を行うことをせず、XMLが入力された際に利用されるオートマトンのみを変換することで高速な処理を実現している(非特許文献1)。
前記のSAXを利用したXPath式処理装置を拡張し、1つのXPath式に対して複数の検索条件に対応した技術が分岐XPath式処理装置である(非特許文献3、特許文献1)。このシステムでは、複数の分岐XPath式を1つずつ処理している。つまり、1つのXPath式に対して、1つの検索インデックスを構築しているということである。検索インデックスは、XPath式の数と同じだけ存在するので、XPath式が増加すればするほど線形に処理時間が増加することが知られている。
特開2005−135199号公報 T.J.Green,G.Miklau,M.Onizuka,D.Suciu著、"Processing XML Streams with Deterministic Automata"、In Proceeding of ICDT(2003). Y.Diao,P.Fischer and M.Franklin著、"Yfilter:Efficient and scalable filtering of xml documents"、In Proceedings of the ICDE(2002). M.Onizuka著、"Light-weight XPath processing of XML stream with deterministic automata"、CIKM(2003).
前記した分岐XPath式処理装置は、複数の条件を処理するにあたりNFAを用いたために、登録されるXPath式が増加するに従って、XPath式に含まれる条件を判定する処理が増加してしまい、性能が著しく劣化するという問題がある。実運用上では複数の条件を指定する必要性が高いため、この性能劣化は分岐XPath式処理装置におけるボトルネックとなっている。
そこで、本発明は、前記した問題を解決し、XMLデータをフィルタリング処理するための検索条件を示す分岐XPath式が複数存在するときに、フィルタリング処理を高速化し、かつメモリ使用量を削減することができるように、分岐XPath式を処理する手段を提供することを主な目的とする。
前記課題を解決するために、本発明は、XMLデータをフィルタリング処理するための分岐XPath式を処理するXPath式処理装置であって、入力された複数の分岐XPath式を格納するXPath式格納手段と、前記XPath式格納手段に格納された分岐XPath式ごとにターゲットパスおよび述語それぞれの絶対パスおよびスコープパスを抽出するパス抽出手段と、前記パス抽出手段により抽出された各パスをノードとして、部分的に等しいノードまたはノード間のリンクを共有可能部分として共有化し、複数の分岐XPath式から1つの共有化インデックスを構築する共有化インデックス構築手段と、を有することを特徴とする。
これにより、フィルタリング処理を高速化しかつメモリ使用量を削減することができる。
本発明は、入力されたXMLデータの構成要素ごとにその出現順序に従って順番に番号を割り当てた共有化バッファを構築する共有化バッファ管理手段を有することを特徴とする。
これにより、XMLデータへのアクセスを高速化しかつメモリ使用量を削減することができる。
本発明は、入力されたXMLデータをSAXパーサおよびオートマトンを用いて処理し、コールバック関数を用いて実施されるスコープパスの終了が通知された直後に、前記共有化インデックスを用いてターゲットパスに対する述語の真偽判定を行い、複数の分岐XPath式を一括してフィルタリング処理するXPath式処理手段を有することを特徴とする。
これにより、フィルタリング処理を高速化しかつメモリ使用量を削減することができる。
本発明は、前記パス抽出手段が、述語の条件を満たしたときに返すパスをターゲットパスの絶対パスとし、分岐XPath式の一番左にある述語のコンテキストパスをターゲットパスのスコープパスとし、相対パスで表現されている述語と述語のコンテキストパスとを結合して述語の絶対パスとし、述語のコンテキストパスを述語のスコープパスとすることを特徴とする。
これにより、パスの抽出処理が具体化される。
本発明は、前記共有化インデックス構築手段が、述語の絶対パスの論理積および論理和を前記共有化インデックスのノードに追加し、ノードの依存関係を前記共有化インデックスのリンクとすることを特徴とする。
これにより、複数の条件の真偽判定を統合して扱うことができる。
本発明は、XMLデータをフィルタリング処理するための分岐XPath式を処理するXPath式処理方法であって、コンピュータが、入力された複数の分岐XPath式を記憶手段に格納するXPath式格納手順と、記憶手段に格納された分岐XPath式ごとにターゲットパスおよび述語それぞれの絶対パスおよびスコープパスを抽出するパス抽出手順と、前記パス抽出手順により抽出された各パスをノードとして、部分的に等しいノードまたはノード間のリンクを共有可能部分として共有化し、複数の分岐XPath式から1つの共有化インデックスを構築する共有化インデックス構築手順と、を実行することを特徴とする。
これにより、フィルタリング処理を高速化しかつメモリ使用量を削減することができる。
本発明は、前記XPath式処理方法をコンピュータに実行させるためのXPath式処理プログラムである。
これにより、フィルタリング処理を高速化しかつメモリ使用量を削減することができる。
本発明によれば、複数の分岐XPath式が入力される場合に、分岐XPath式に関する条件判断やコールバック呼び出しの回数を減らすように共有化インデックスを構築することによって、フィルタリングの高速化を行うことができる。
以下に、本発明が適用されるXPath式処理システムの一実施形態について、図面を参照して詳細に説明する。
まず、本実施形態の概要を説明する。最初にXPath式に関する説明を行い、その後にXMLに関する説明を行う。
/bib/book[contains(title/text(),‘XML')][.//author=‘Bob'][publication<=1999] …式1
式1などのXPath式は、XML文書の中の特定の要素を指し示す記述方法を定めている。XPath式の基本的な記述の仕方はUNIX(登録商標)のファイルシステムに似ていて、文書木構造の頂点となるルートノードを「/」で表し、以下、「/」で区切って要素をたどっていく。a要素の中のbという値を参照するには「/a/b」と記述する。ノードのデータ型やノードの種類、名前空間(XML namespace)の扱いなどについても規定があり、これらを使用して条件式や演算などを含んだ複雑な位置指定を行うこともできる。
XML文書の中の特定の要素を指し示すパスは、絶対パス(Absolute Path)または相対パス(Comparative Path)の形式で表現される。絶対パスとは、ルートノードから記述されているようなXPath式である。絶対パスは、あるノードを指し示す上で完全な情報を持ったXPath式であり、絶対パスを用いることで検索対象ノードの等価性を完全に判断すること、つまり絶対パスと絶対パスとが同じか否かを判定することが可能となる。一方、相対パスは、ある着目するノード(コンテキストとも呼ばれる)から見た相対的な位置を示すパスである。
1つのXPath式からは、1つのターゲットパス(Target Path)および1つ以上の述語(Predicate)が抽出される。ターゲットパスは、分岐XPath式が条件を満たした場合に、返されるべきXMLの部分を示したパスである。ターゲットパスは、XPath式の括弧[…]で囲まれた部分を除く部分を抽出することにより得られる。
一方、述語は、XPath式中に存在する条件部であり、XPath式の括弧[…]で囲まれている。1つの述語は、1つの括弧[…]に対応する。なお、分岐XPath式は、述語を複数持ったXPath式である。なお、本実施形態は、後記するように、1つ以上の分岐XPath式を1つの共有化インデックスに変換することによって、分岐XPath式を高効率で処理することを特徴とする。
次に、ターゲットパスおよび述語について、絶対パスおよびスコープパス(SP:Scope Path)を定義する。スコープパスは、述語の絶対パスやターゲットパスが有効であることを示すための絶対パスである。述語の絶対パスやターゲットパスがコールバック関数によって呼び出されたとしても、その時点で対応するスコープパスに含まれていない場合には、述語の絶対パスやターゲットパスの真偽判断、出力判断を行うことができない。
Figure 2007034763
ターゲットパスの絶対パス(TAP:Target Absolute Path)は、前記したように、XPath式の括弧[…]で囲まれた部分を除く部分を抽出することにより得られる。ターゲットパスのスコープパス(TSP:Target Scope Path)は、XPath式の一番ルート側にある述語の前までの絶対パス、つまり、分岐XPath式の一番左にある述語のコンテキストパスとする。
述語の絶対パス(PAP:Predicate Absolute Path)は、述語に含まれるXPath式(述語の相対パス)と、後記する述語のスコープパスとを結合することにより、得られる。述語のスコープパス(PSP:Predicate Scope Path)は、コンテキストパスとすることで構築できる。コンテキストパスとは、述語内に含まれる相対パスで表現されたXPath式がどのような状況において有効であるかを示している。実際には、分岐XPath式の先頭からその述語までの分岐XPath式を解析、取得する。得られた分岐XPath式から述語を全て抜いたものがコンテキストパスとなる。
次に、XMLおよびそのXMLに対してXPath式を適用するSAXベースのフィルタリング処理に関する説明を行う。なお、XMLの詳細については、例えば、文献「中山幹敏,奥井康弘著、“改訂版標準XML完全解説(上)(下)”、技術評論社(2001).」に詳しい。
図1は、SAXフィルタとユーザアプリケーションとの関係を示す説明図である。まず、SAXのコールバック関数について説明する。SAXは、前記のように、XMLデータを解析するときに木を構成しない。よって、XMLデータの解析処理を行う際には、コールバック関数を用いた手法がとられている。
SAXフィルタにXMLデータが入力されると、上から順に読み込まれる。bibが認識されると、SAX装置はユーザアプリケーション上にあるstartElement関数を呼び出す。この際、startElement関数の引数には、bibを入れておくことで、ユーザアプリケーション側ではbibという情報を取得することができる。このように、フィルタ装置がユーザアプリケーションの関数を呼び出すことをコールバックと呼ぶ。コールバック関数には、表3のようなものがある。
Figure 2007034763
図2(a)は、XMLデータの一例を示している。文献用のXMLでありbibタグの下にbookタグがある。bookタグの下には、title(タイトル)タグ、author(著者)タグ、publication(発行年)タグ、price(価格)タグがある。このような、XMLに対して、発行年が1999年以前であり、タイトルにXMLを含み、著者がBobであるような条件に一致したbook要素を抽出するXPath式は、式1のように記すことができる。
図2(a)のXMLに式1のXPath式を適用した場合に期待される返値は、図2(b)に示したものとなる。注意してほしいのは、bookタグに含まれる部分が返されていることである。/bib/bookという記述が述語の条件を満たしたときに返されるタグ名を示している。この/bib/bookが前記したTAPである。それぞれの述語のPSPは、述語にいたるまでのパスをつなげたものであるので、/bib/bookとなる。
次に、式2について考える。
/bib/book[contains(title/text(),‘XPath')][publication=2000]/authors …式2
式2は、タイトルが「XPath」という文字列を含んでおり、発行年が2000年であるような本の著者を取得するというものである。このXPath式を図2(a)のXMLに適用させた場合の返値は、図2(c)のようになる。このときのTAPは、/bib/book/authorsとなる。PSPは、/bib/bookである。
図3に示すXPath式処理システムは、XPath式登録装置110、パス抽出装置160、共有化インデックス構築装置150、共有化バッファ管理装置180、XPath式処理装置190、共有化インデックス検索装置140、および、分岐無XPath式処理装置200を含む。XPath式処理システムの記憶手段は、XPath式格納装置120のXPath式、入力される解析対象となるXMLデータ130、および、XMLデータ130から生成される共有化バッファ170を格納する。このXPath式処理システムを構成する計算機の台数は、図3に示す台数に限定されず、1台に集約するなど様々な構成を取ることができる。
XPath式処理システムの各装置は、演算処理を行う際に用いられる記憶手段としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータとして構成される。なお、メモリは、RAM(Random Access Memory)などにより構成される。演算処理は、CPU(Central Processing Unit)によって構成される演算処理装置が、メモリ上のプログラムを実行することで、実現される。以下、各装置の詳細を説明する。
図3において、破線の矢印はデータフローを示す。XPath式処理システムにXMLデータ130が入力されると、XPath式処理装置190へ転送される。XPath式処理装置190では、入力されたXMLデータ130を分岐無XPath式処理装置200へ出力する。分岐無XPath式処理装置200によって、入力されたXMLデータ130が解析されて、共有化インデックス装置150において登録された分岐無XPath式に対する結果がXPath式処理装置190へ送られてくる。このとき、分岐無XPath式処理装置200は、SAXベースでXMLデータ130を処理するために、返値に対して順番をつけることが可能となる。
図3において、実線の矢印は機能呼び出し関係を示しており、利用するほうから利用されるほうへと向きを描いている。XPath式処理装置190は、分岐無XPath式処理装置200の結果を共有化バッファ管理装置180へ送る。このとき、コールバック関数を利用してデータを送ることになる。
XPath式登録装置110は、入力された分岐XPath式をXPath式格納装置120に登録する。パス抽出装置160は、XPath式格納装置120を呼び出して分岐XPath式を取得し、その分岐XPath式から各パス(TAP,TSP,PAP,PSP)を抽出する。以下、パスの抽出処理を詳細に説明する。
パス抽出装置160は、分岐XPath式をターゲットパスおよび述語に分解し、それぞれの絶対パス(AP)を構築する。パス抽出装置160は、分岐XPath式から述語を除きつなぎ合わせてTAPを構築し、分岐XPath式から述語を取り出して述語に含まれる相対パスおよび述語までのパスをつなぎ合わせてPAPを構築する。なお、構築された絶対パスは、分岐無しXPath式であるためそれ自体のフィルタ処理は、分岐無XPath式処理装置200を用いて行うことができる。
そして、パス抽出装置160は、TSPはターゲットパス自身とし、PSPは述語のコンテキストパスとすることで、それぞれSPを構築する。なお、述語のコンテキストパスとは、述語内に含まれる相対パスで表現されたXPath式がどのような状況において有効であるかを示している。実際には、分岐XPath式の先頭からその述語までの分岐XPath式を解析、取得する。得られた分岐XPath式から述語を全て抜いたものがコンテキストパスとなる。
なお、分岐XPath式の処理では、分岐無しXPath式の処理とは異なり、出力するか否かの判断が述語の真偽判定までできないので、出力の可能性のあるデータをバッファすることが必要になる。図4は、TANが持つバッファ構造の一例を示す説明図である。まず、入力されたストリームXMLの中で、出力される可能性のあるXMLデータ130を基本バッファへ格納する。複数の分岐XPath式に対して、それぞれがどのようなバッファを持つかについては、基本バッファヘの参照情報を用いて構築する。つまり、複数の分岐XPath式に対してただひとつのバッファ実体を持たせることを可能とし、メモリ使用量を抑えることが可能となる。
共有化インデックス構築装置150は、パス抽出装置160が抽出した各パスを用いて、共有化インデックスを構築する。共有化インデックスは、述語群の論理積や論理和、述語に対応する絶対パスをノードとし、それぞれのノード間の関係をリンクとするグラフである。共有化インデックスにおける分岐XPath式の述語は、分解された述語群の論理積や論理和を用いて表現されている。
なお、共有化インデックスでは、複数の分岐XPath式から部分的に等しいノードやリンクが共有化される。複数の分岐XPath式が入力され、それぞれが共有化インデックスを持つ場合には、ストリームが入力された場合に同様の処理を行う場合が比較的多く存在する。同様の処理を行う部分を共有化、つまり、複数の分岐XPath式の共有化インデックスの共有化を行い、共有化インデックスを構築する。共有化インデックスを用いて、一括して複数の分岐XPath式を処理することが可能となる。
具体的には、共有化インデックス構築装置150は、複数の分岐XPath式が入力された場合に、まず、最初の分岐XPath式に対して共有化インデックスを構築する。次に、別の分岐XPath式は、パス抽出装置160と共有化インデックス構築装置150とによって解析される。このとき、共有化インデックス構築装置150は、最初の分岐XPath式の共有化インデックスに対して走査を行い、共有化インデックス中に別の分岐XPath式の共有化インデックスと同様の処理を行う部分がある場合には、最初の分岐XPath式の共有化インデックスを利用する。全ての分岐XPath式に対して順次このように共有化インデックスを構築する。以下、共有化インデックスを構成するノードを説明する。なお、分岐無XPath式処理装置200は、入力された各パスから後記する各ノードが保持する返値を出力する。
Figure 2007034763
TAN(Target Absolute Node)は、TAPに対応するノードである。TSN(Target Scope Node)は、TSPに対応するノードである。PAN(Predicate Absolute Node)は、PAPに対応するノードである。PSN(Predicate Scope Node)は、PSPに対応するノードである。そして、絶対パスに対応するノード(AN:Absolute path Node)は、TANおよびPANであり、スコープパスに対応するノード(SN:Scope path Node)は、TSNおよびPSNである。なお、共有化インデックスは、前記したノードの他に、論理ノード(LN:Logical Node)を含めてもよい。なお、LNは、TAN、PAN、および、LNを論理演算子(and,or)によって結合するノードである。
ここで、一致する複数のパスの組(TAPおよびTSP)は、1つのノードの組(TANおよびTSN)に統合することができる。同様に、一致する複数のパスの組(PAPおよびPSP)は、1つのノードの組(PANおよびPSN)に統合することができる。さらに、パスが一致する複数のSP(TSPまたはPSP)は、1つのSNに統合することができる。これにより、パスの個数よりもノードの個数のほうが少なくなることが期待され、それに伴い述語のノードに関する比較回数およびTAP,PAPに対するコールバック関数の呼び出し回数も少なくなることが期待される。
共有化バッファ管理装置180は、分岐XPath式のターゲットパスに対して結果を構築する際に必要となるバッファを共有化した共有化バッファ170を構築する。つまり、共有化バッファ管理装置180は、入力されたXMLデータ130が分岐XPath式に適合する可能性がある場合に、1つの基本バッファを用意して入力XMLデータ130をバッファリングする。複数の分岐XPath式を処理する場合には、それぞれの分岐XPath式に関するバッファは実際のXMLデータ130を持たずに、基本バッファの区間アドレスを保持する。こうすることで、大きなバッファをそれぞれの分岐XPath式に対して用意する必要がなくなるため、メモリの使用量を軽減させることが可能となる。
XPath式処理装置190は、分岐XPath式のフィルタリング処理を行う。つまり、XPath式処理装置190は、分岐無XPath処理装置200からのコールバック関数を受けて、分岐XPath式のフィルタリング処理を行い、その結果を出力する。XPath式処理装置190は、共有化インデックス検索装置140および共有化バッファ管理装置180を利用する。具体的には、XPath式処理装置190は、入力されたXMLデータ130をSAXパーサおよびオートマトンを用いて処理し、コールバック関数を用いて実施されるスコープパスの終了が通知された直後に、ターゲットパスに対する述語の真偽判定を行い、複数の分岐XPath式を一括してフィルタリング処理する。
分岐無XPath式処理装置200は、既存技術のSAXベースのXPath式処理装置となっており(非特許文献1、非特許文献2参照)、ターゲットパスや述語、スコープパスの分岐無しXPath式を登録し、ストリームのXMLデータ130を入力するとコールバック関数を通じて、分岐無しXPath式に対する結果を返す。
分岐無XPath式処理装置200は、次のような複数の分岐無しXPath式を高速に処理することができることが知られている。このXPathは、述語を含んでいないが、分岐XPath式を分解して登録することが可能である。SAXのコールバック関数による返値と述語の条件とを比較することで、分岐XPath式はストリームXMLデータ130が述語に適合するかどうかを決定することが可能となる。
/bib/book
/bib/book/title
/bib/book/publication
図5は、パス抽出装置によるパス抽出処理の実行例を示す説明図であり、式3〜式5のXPath式が入力されたときの出力を示している。それぞれの分岐XPath式に対して、結果が出力される。
/bib/book[price<=21OO][publication<=2000]/authors[author='Bob'] …式3
/bib/book[price<=21OO][publication<=2000]/authors/author …式4
/bib[book/price=21OO][book/publication<=2000]/book/authors/author …式5
式3に対しては、まず、分岐XPath式から全ての述語を抜いた後記のようなXPath式をTAPとする。
/bib/book/authors
次に、一番ルート側にある述語
[price<=2100]
の前までのXPath式をTSPとする。次に、後記の全ての述語について考える。
[price<=2100]
[publication<=2000]
[author='Bob']
それぞれ、述語が出現する直前までのXPath式は、
/bib/book
/bib/book
/bib/book/authors
となり、それぞれのPSP(=コンテキストパス)とする。述語の相対パスは、後記のようになる。
price
publication
author
前記の相対パスとスコープパスを結合したXPath式が後記のようなPAPとなる。
/bib/book/price
/bib/book/publication
/bib/book/authors/author
式4に関しては、式3とほぼ同様であるため、省略する。式5に対しても同様に、まず、分岐XPath式から全ての述語を抜いた次のようなXPath式をTAPとする。
/bib/book/authors/author
次に、一番ルート側にある述語
[book/price=2100]
の前までのXPath式をTSPとする。つまり、
/bib
となる。
次に、次の全ての述語について考える。
[book/price=2100]
[book/publication<=2000]
それぞれ、述語が出現する直前までのXPath式は、
/bib
/bib
となり、それぞれのPSP(=コンテキストパス)とする。述語の相対パスは、次のようになる。
book/price
book/publication
前記の相対パスとスコープパスを結合したXPath式が次のようなPAPとなる。
/bib/book/price
/bib/book/publication
/bib/book/authors/author
式3および式5のPAPは等しいが、PSPが変わっていることに注意してほしい。
図6は、共有化インデックスの構築処理の実行例を示す説明図である。図6には、2つのXPath式(式3、式4)から共有化インデックスを構築した場合の模式図を示している。四角の枠は、TAN(TAN1,TAN2)、PAN(PAN1,PAN2,PAN3)(述語の条件部も共有化のためにノードとして表現している)、SN(SN1,SN2)、LN(LN1,LN2)を示している。また、ノード間をつなぐ線は、2つのノードがリンクされていることを示している。LN1はノード「<=2100」およびノード「<=2000」の親ノードに相当し、LN2はLN1の親ノードに相当する。
注目してほしいことは、式3および式4において、[price<=2100][publication<=2000]の条件判断を共有化していることである。具体例においては、簡単のため2つのXPath式のみを挙げているが、実用上登録されるXPath式は、数万〜数十万単位で登録される。よって、このように処理が同じである場合には、それを1つに統合することにより共有化を図ることができる。また、共有化インデックスを利用しない場合には、同じ意味を持ったインデックスを重複して作成することになるため、不必要なメモリを使うことになる。つまり、共有化インデックスを用いると使用メモリ量の削減を図ることができる。
表5は、共有化バッファ170の構築処理の実行例を示す説明図である。コールバック関数によって呼び出される順番が、カウンタ列に入っている数字に対応する。このカウンタ列に入っている数字は、共有化バッファ170におけるインデックスを示しており、この数字を利用することで、各XPath式に対するバッファを行うことが可能となる。XMLデータ130の格納個数がXPath式の数となっていた方式に比べ、XPath式の数に関係なく1つの共有化バッファ170を格納するだけで済む。
Figure 2007034763
図4は、TANが持つバッファ構造の一例を示す説明図である。バッファは、(start、end)という区間を表現する形で積み上げていく。バッファする区間は、述語に影響を受け複数持つべき場合があるので、図4のようにスタックを用いて管理する。1つ目の<book>が出現したときのカウンタは、2である。1つ目の</book>が出現するのは、23である。2つ目の<book>が出現したときのカウンタは、24である。2つ目の</book>が出現するのは、42である。このようにして、出力するべきバッファを共有化バッファ170のアドレスとして保持することで、バッファ処理にかかるメモリ使用量を大幅に削減することが可能となる。
図7は、後記するフィルタリング処理のサブルーチン「PAN処理」の実行例を示す説明図である。この説明図は、図6で示されている共有化インデックスに対して、図2(b)のXMLデータ130が入力されたときを想定する。図8は、後記するフィルタリング処理のサブルーチン「SN処理」の実行例を示す説明図である。この説明図は、図2(a)のXMLデータ130に対して実行した一例を示す。
図9は、分岐XPath式を分割しターゲットパスおよび述語の絶対パスおよびそれぞれのスコープパスの構築処理を示すフローチャートである。3つのXPath式(式3、式4、式5)を考える。以下では、これらのXPath式をもとにして説明を行う。
まず、パス抽出装置160は、複数の分岐XPath式を入力し(S102)、全てのXPath式を処理したなら(S104,Yes)、処理を終了する(S106)。つまり、入力された分岐XPath式の数だけ、それぞれの分岐XPath式に対応する変数P,変数Tの組み合わせを出力する。
次に、パス抽出装置160は、全てのXPath式を処理していないなら(S104,No)、分岐XPath式のPAPおよびPSPを格納できる変数P、ならびに、TAPおよびTSPを格納できる変数Tを、分岐XPath式1つに対して1つずつ用意する(S108)。分岐XPath式から述語を全て抜いたものをTAPとして変数Tに追加し(S110)、分岐XPath式のルートから見て、一番最初に出現した述語までのコンテキストパスをTSPとして、変数Tに追加する(S112)。
そして、パス抽出装置160は、全ての述語を処理していないなら(S114,No)、選択されている述語についてのPAPおよびPSPを変数Pに追加する(S116)。具体的には、述語までの分岐XPath式から全ての述語を抜いたものをPSPとして変数Pに追加し、PSPと述語に含まれている相対パスを単純に結合したパスをPAPとして、変数Pに追加する。全ての述語を処理したなら(S114,Yes)、処理をS104に戻す。
図10および図11は、共有化インデックスの構築処理を示すフローチャートである。共有化インデックスにおいて、そのノードは、共有化インデックスをグラフ構造で表したときの節点として定義される。共有化インデックスのリンクは、ノード間をエッジ(辺)で結合したものである。述語が複数存在する場合には、それらの述語はandまたはorで結合される。LNとは、この述語の結合を表現するために用いることができる。
まず、共有化インデックス構築装置150は、全ての分岐XPath式について、分岐XPath式から抽出される各パス(TAP,TSP,PAP,PSP)を入力し(S202)、全ての分岐XPath式を処理したなら(S204,Yes)、その時点で構築されている共有化インデックスを出力して、終了する(S206)。
次に、共有化インデックス構築装置150は、全ての分岐XPath式を処理していないなら(S204,No)、TAPからTANを作成し(S208)、TANとリンクするTSNが共有化インデックスに存在しないなら(S210,No)、TSNを作成する(S212)。なお、TANは、分岐XPath式に含まれる全ての述語について、LNを用いた木構造により、述語の持つ条件を判断しバッファの出力を行うものである。
そして、共有化インデックス構築装置150は、TANとTSNとをリンクし(S214)、LNを保持するための変数Pを用意する(S216)。変数Pは、1つのLNをルートとして持つような木構造を構築するために利用される。
さらに、共有化インデックス構築装置150は、変数Pに含まれるのは、ただ1つのLNなら(図11のS218,Yes)、その1つのLNをルートとして持つような木構造を構築できたことになり、LNとTANとをリンクし(図10のS220)、処理をS204に戻す。これにより、1つの分岐XPath式を共有化インデックスへ組み込むことができたことになる。
そして、共有化インデックス構築装置150は、変数Pに含まれるのがただ1つのLNでないとき(図11のS218,No)、選択された分岐XPath式の全ての述語に対して処理が完了しておらず(S222,No)、PANが存在しないなら(S224,No)、PANを作成し、変数Pに追加する(S226)。
さらに、共有化インデックス構築装置150は、PSNが存在しないなら(S228,No)、PSNを作成する(S230)。そして、共有化インデックス構築装置150は、PSNとPANとをリンクし(S232)、処理をS218に戻す。
そして、共有化インデックス構築装置150は、S222またはS224の条件を満たし、既に存在する共有化インデックス中に同じLNを持つ述語が存在しないなら(S234,No)、変数Pに新たに作成したPANを追加し(S236)、処理をS218に戻す。新たに作成したPANは、論理演算子と、PANと、変数Pに含まれるPANまたはLNから任意にひとつ選択したノードと、を格納するノードである。一方、述語が存在するなら(S234,Yes)、存在したLNを変数Pに追加し、そのLNに格納されているLNおよびPANを変数Pから削除し(S238)、処理をS218に戻す。
図12は、共有化バッファ170の構築処理を示すフローチャートである。
まず、共有化バッファ管理装置180は、分岐無XPath式処理装置200のコールバックにより(S302)、処理が起動される。次に、共有化バッファ管理装置180は、endDocument()の呼び出しにより(S304,Yes)、終了する(S322)。
そして、共有化バッファ管理装置180は、endDocument()の呼び出しではなく(S304,No)、新しいXMLドキュメントが入力された場合には、startDocument()の呼び出しにより(S306,Yes)、バッファの順番を示すカウンタ変数Cを用意し、C=0で初期化する(S308)。
さらに、共有化バッファ管理装置180は、startDocument()の呼び出しではなく(S306,No)、startElement(var)の呼び出しにより(S310,Yes)、カウンタCをインクリメントし、カウンタCおよび引数varで与えられたデータの組を共有化バッファ170に追加する(S312)。
そして、共有化バッファ管理装置180は、startElement(var)の呼び出しではなく(S310,No)、endElement(var)の呼び出しにより(S314,Yes)、カウンタCをインクリメントし、カウンタCおよび引数varで与えられたデータの組を共有化バッファ170に追加する(S316)。
さらに、共有化バッファ管理装置180は、endElement(var)の呼び出しではなく(S314,No)、character(var)の呼び出しにより(S318,Yes)、カウンタCをインクリメントし、カウンタCおよび引数varで与えられたデータの組を共有化バッファ170に追加する(S320)。character(var)の呼び出しではないときは(S318,No)、処理をS302に戻す。
図13は、共有化インデックスと共有化バッファ170を用いてフィルタリングする処理を示すフローチャートである。
まず、共有化インデックス検索装置140は、分岐無XPath式処理装置200のコールバックにより(S402)、処理が起動され、全てのコールバックを処理したなら(S404,Yes)、終了する(S406)。XPath式処理装置190は、共有化バッファ管理装置180と同様に、コールバック関数を利用して分岐無XPath式処理装置200の処理結果を受け渡す。
次に、共有化インデックス検索装置140は、全てのコールバックを処理していないとき(S404,No)、コールバックに対して、全TANを処理していないなら(S408,No)、未処理であるTANを引数として、サブルーチン「TAN処理」を実行する(S410)。
そして、共有化インデックス検索装置140は、全TANを処理し(S408,Yes)、コールバックに対して、全PANを処理していないなら(S412,No)、未処理であるPANを引数として、サブルーチン「PAN処理」を実行する(S414)。
さらに、共有化インデックス検索装置140は、全PANを処理し(S412,Yes)、コールバックに対して、全SNを処理していないなら(S416,No)、未処理であるSNを引数として、サブルーチン「SN処理」を実行する(S418)。全SNを処理したなら(S416,Yes)、処理をS404に戻す。
図14は、サブルーチン「TAN処理」を示すフローチャートである。
まず、共有化インデックス検索装置140は、分岐無XPath式処理装置200のコールバックにより(S502)、処理が起動され、全てのコールバック関数呼び出しが終了したなら(S504,Yes)、終了する(S506)。
次に、共有化インデックス検索装置140は、全てのコールバック関数呼び出しが終了していないなら(S504,No)、startDocument()の呼び出しにより(S508,Yes)、カウンタCを用意してC=0で初期化する(S510)。
そして、共有化インデックス検索装置140は、startDocument()の呼び出しではなく(S508,No)、startElement(var)の呼び出しにより(S512,Yes)、カウンタCをインクリメントする(S514)。さらに、共有化インデックス検索装置140は、startElement(var)の呼び出しではなく(S512,No)、endElement(var)の呼び出しにより(S516,Yes)、カウンタCをインクリメントする(S518)。そして、共有化インデックス検索装置140は、endElement(var)の呼び出しではなく(S516,No)、character(var)の呼び出しにより(S520,Yes)、カウンタCをインクリメントする(S522)。
なお、startElement、endElement、character関数では、共有化バッファ管理装置180と同じカウンタ値を持たせるために変数Cに対するインクリメントを行っている。これにより、該当するXPath式のバッファを行うにあたって、共有化バッファ170の持つカウンタ値を持ってバッファリングすることが可能となる。
さらに、共有化インデックス検索装置140は、character(var)の呼び出しではなく(S520,No)、startContext()の呼び出しにより(S524,Yes)、バッファを追加し、スタートアドレスにカウンタCの値+1を代入する(S526)。
そして、共有化インデックス検索装置140は、startContext()の呼び出しではなく(S524,No)、endContext()の呼び出しにより(S528,Yes)、バッファのエンドアドレスにカウンタCの値を代入する(S530)。このときは、endContext関数が呼び出されたときのカウンタの値までバッファすることになる。endContext()の呼び出しではないなら(S528,No)、処理をS502に戻す。
図15は、サブルーチン「PAN処理」を示すフローチャートである。ここでは、共有化インデックスを用いて、述語の条件に適合している分岐XPath式が何であるかを決定していく。
まず、共有化インデックス検索装置140は、分岐無XPath式処理装置200のコールバックにより(S602)、処理が起動され、全てのコールバック関数呼び出しが終了したなら(S604,Yes)、終了する(S606)。
次に、共有化インデックス検索装置140は、全てのコールバック関数呼び出しが終了しておらず(S604,No)、character(var)の呼び出しでなく(S608,No)、startContext()の呼び出しなら(S610,Yes)、述語の持つ条件を検査することを示すフラグEVALにtureをセットする(S612)。PANが分岐無XPath式処理装置200から、startContext、endContext関数を通じて呼び出された場合には、条件を評価するかどうかを決定する。startContextでは、述語の絶対パスが評価されるべき区間に入ったことを示している。
そして、共有化インデックス検索装置140は、startContext()の呼び出しでなく(S610,No)、endContext()の呼び出しにより(S614,Yes)、述語の持つ条件を検査することを示すフラグEVALにfalseをセットする(S616)。endContextでは、述語の絶対パスが評価されるべき区間から外れたことを示している。それぞれの状態をEVALフラグによって表す。処理をS604に戻す。
さらに、共有化インデックス検索装置140は、character(var)の呼び出しがあり(S608,Yes)、EVAL=false(S618,Yes)またはPANが持つ全ての条件を処理した(S620,Yes)なら処理をS604に戻し、EVAL=falseでなく(S618,No)、PANが持つ全ての条件を処理していないなら(S620,No)、以下の処理を行う。
つまり、共有化インデックス検索装置140は、条件を満たすcharacter関数の引数varが述語ノードの条件を満たしているかどうかを評価し(S622)、条件を満たしていない(S622,No)なら、条件を満たしていないノードの親ノードヘリンクを通じて条件を満たしていないことを通知し(S624)、通知された親ノードは、その通知により自分の状態が変化した場合には、さらに上位の親ノードヘ通知を行う。一方、条件を満たしている(S622,Yes)なら、条件を満たしたノードの親ノード(演算子ノード)ヘリンクを通じて条件を満たしたこと(条件部が真であること)を通知し(S626)、通知された側の親ノードは、さらに親ノードヘと通知を行う。S618に処理を戻す。
図16は、サブルーチン「SN処理」を示すフローチャートである。具体的には、スコープパスを用いて、ターゲットパスの出力管理、述語の評価が偽である場合のターゲットパスのノードに格納されているバッファからの削除、共有化インデックスの保持情報クリアを行うためのフローチャートが示されている。簡単のため、次の分岐XPath式を考える。
/bib/book[price<=2100][publication<=2000]/authors/author
複数の分岐XPath式がある場合においても、それぞれの分岐XPath式に対して、共有化インデックスと共有化バッファ170とを用いて同様に処理することが可能となる。
まず、共有化インデックス検索装置140は、分岐無XPath式処理装置200のコールバックにより(S702)、処理が起動され、全てのコールバック関数呼び出しが終了したなら(S704,Yes)、終了する(S706)。
次に、共有化インデックス検索装置140は、全てのコールバック関数呼び出しが終了していないなら(S704,No)、startDocument()の呼び出しにより(S708,Yes)、カウンタCを用意し,C=Oで初期化する(S710)。カウンタCは、共有化バッファ170のカウンタを利用するために処理される。また、スコープの区間を表現するstart,end変数を用意し、0で初期化する。
そして、共有化インデックス検索装置140は、startDocument()の呼び出しではなく(S708,No)、startElement(var)の呼び出しにより(S712,Yes)、カウンタCをインクリメントする(S714)。さらに、共有化インデックス検索装置140は、startElement(var)の呼び出しではなく(S712,No)、endElement(var)の呼び出しにより(S716,Yes)、カウンタCをインクリメントする(S718)。そして、共有化インデックス検索装置140は、endElement(var)の呼び出しではなく(S716,No)、character(var)の呼び出しにより(S720,Yes)、カウンタCをインクリメントする(S722)。
さらに、共有化インデックス検索装置140は、character(var)の呼び出しではなく(S720,No)、startContext()の呼び出しにより(S724,Yes)、startにC+1を代入する(S726)。そして、共有化インデックス検索装置140は、startContext()の呼び出しではなく(S724,No)、endContext()の呼び出しにより(S728,Yes)、endにCを代入する(S730)。startContextとendContext関数が呼び出されると、まず、スコープの範囲を決定することができて、それを変数startとendにセットする。endContext()の呼び出しではないときは(S728,No)、処理をS702に戻す。
さらに、共有化インデックス検索装置140は、SNにリンクする全てのPANに対して処理しておらず(S732,No)、SNとリンクする全てのPANの持つ条件が偽である場合には、この述語を条件として持つ全てのTANのバッファからstartアドレス、endアドレスに含まれるバッファを全てクリアし(S734)、述語ノードとそれに関連する演算子ノードを偽にセットする。
そして、共有化インデックス検索装置140は、SNにリンクする全てのPANに対して処理し(S732,Yes)、TSNにリンクする全てのTANに対して処理していないなら(S736,No)、SNとリンクする全てのTANがバッファリングしている共有化バッファ170の区間(start、end)を出力し(S738)、TANにリンクする全てのPANおよびLNを偽にセットする。TSNにリンクする全てのTANに対して処理したなら(S736,No)、処理をS702に戻す。
以上説明した本発明と、以下に示す比較例とを比較する。
図17は、比較例に関するXPath式から作成されるオートマトンを示す状態遷移図である。既存のSAXベースの複数のXPath式処理装置190(非特許文献3参照)は、式6のようなXPath式が与えられたときに、図17のようなオートマトンを作成する。
/bib/book[contains(title/text(),‘XML')][publication>=1999 and publication<=2000] …式6
オートマトンとは、状態遷移図のようなものである。丸で示されているのは状態であり、矢印に付随して書いてあるのは状態が移るための条件である。状態0は、初期状態を示している。状態0から状態1に移るためには、bib要素がくることが必要である。状態1から状態2へ行くためには、状態1においてbook要素がくることが必要である。
状態2においては、ε(イプシロン)遷移と呼ばれる遷移が行われる。この遷移は、状態2に遷移が生じた場合には、自動的に矢印の先の状態へ遷移することを示している。つまり、状態2に遷移すると状態3、5、7にそれぞれ遷移する。状態3から状態4へは式6の最初の条件に対応している([contains(title/text(),‘XML')])。タイトルタグに挟まれたテキストの中に“XML”という文字列が含まれている場合には、状態4へ遷移する。状態5から状態6、状態7から8はそれぞれ、[publication>=1999][publication<=2000]に対応している。
最終的に、状態4、状態6、状態8が全て満たされている場合には、式6を満たしているXMLデータ130であるといえる。この際、既存技術ではpublicationという同一の検索対象ノードに対して2回の条件判断処理を行っている。複数のXPath式まで本数を増やせば、同じ検索対象ノードに対して条件の数だけ処理を行うことは効率が非常に悪い。
一方、本発明は図6に例示する共有化インデックスにおいて、XPath式の数やXPath式に含まれる述語の数に比例してXMLデータ130と述語との比較回数が比例するのではなく、重複するデータを統合することにより、比較回数が抑制されている。
本発明の一実施形態に関するSAXフィルタとユーザアプリケーションの関係を示す説明図である。 本発明の一実施形態に関するXMLの例を示す説明図である。 本発明の一実施形態に関するXPath式処理装置を示す構成図である。 本発明の一実施形態に関するTANが持つバッファ構造の一例を示す説明図である。 本発明の一実施形態に関する分岐XPath式を分割しターゲットパスおよび述語の絶対パスおよびそれぞれのスコープパスの構築処理の実行例を示す説明図である。 本発明の一実施形態に関する共有化インデックスの構築処理の実行例を示す説明図である。 本発明の一実施形態に関するフィルタリング処理のサブルーチン「PAN処理」の実行例を示す説明図である。 本発明の一実施形態に関するフィルタリング処理のサブルーチン「SN処理」の実行例を示す説明図である。 本発明の一実施形態に関する分岐XPath式を分割しターゲットパスおよび述語の絶対パスおよびそれぞれのスコープパスの構築処理を示すフローチャートである。 本発明の一実施形態に関する共有化インデックスの構築処理(前半)を示すフローチャートである。 本発明の一実施形態に関する共有化インデックスの構築処理(後半)を示すフローチャートである。 本発明の一実施形態に関する共有化バッファの構築処理を示すフローチャートである。 本発明の一実施形態に関する共有化インデックスと共有化バッファを用いてフィルタリングする処理を示すフローチャートである。 本発明の一実施形態に関するフィルタリング処理のサブルーチン「TAN処理」を示すフローチャートである。 本発明の一実施形態に関するフィルタリング処理のサブルーチン「PAN処理」を示すフローチャートである。 本発明の一実施形態に関するフィルタリング処理のサブルーチン「SN処理」を示すフローチャートである。 本発明の比較例に関するXPath式から作成されるオートマトンを示す状態遷移図である。
符号の説明
110 XPath式登録装置
120 XPath式格納装置
130 XMLデータ
140 共有化インデックス検索装置
150 共有化インデックス構築装置
160 パス抽出装置
170 共有化バッファ
180 共有化バッファ管理装置
190 XPath式処理装置
200 分岐無XPath式処理装置

Claims (7)

  1. XMLデータをフィルタリング処理するための分岐XPath式を処理するXPath式処理装置であって、
    入力された複数の分岐XPath式を格納するXPath式格納手段と、
    前記XPath式格納手段に格納された分岐XPath式ごとにターゲットパスおよび述語それぞれの絶対パスおよびスコープパスを抽出するパス抽出手段と、
    前記パス抽出手段により抽出された各パスをノードとして、部分的に等しいノードまたはノード間のリンクを共有可能部分として共有化し、複数の分岐XPath式から1つの共有化インデックスを構築する共有化インデックス構築手段と、
    を有することを特徴とするXPath式処理装置。
  2. 入力されたXMLデータの構成要素ごとにその出現順序に従って順番に番号を割り当てた共有化バッファを構築する共有化バッファ管理手段を有することを特徴とする請求項1に記載のXPath式処理装置。
  3. 入力されたXMLデータをSAXパーサおよびオートマトンを用いて処理し、コールバック関数を用いて実施されるスコープパスの終了が通知された直後に、前記共有化インデックスを用いてターゲットパスに対する述語の真偽判定を行い、複数の分岐XPath式を一括してフィルタリング処理するXPath式処理手段を有することを特徴とする請求項1または請求項2に記載のXPath式処理装置。
  4. 前記パス抽出手段は、述語の条件を満たしたときに返すパスをターゲットパスの絶対パスとし、分岐XPath式の一番左にある述語のコンテキストパスをターゲットパスのスコープパスとし、相対パスで表現されている述語と述語のコンテキストパスとを結合して述語の絶対パスとし、述語のコンテキストパスを述語のスコープパスとすることを特徴とする請求項1ないし請求項3のいずれか1項に記載のXPath式処理装置。
  5. 前記共有化インデックス構築手段は、述語の絶対パスの論理積および論理和を前記共有化インデックスのノードに追加し、ノードの依存関係を前記共有化インデックスのリンクとすることを特徴とする請求項1ないし請求項4のいずれか1項に記載のXPath式処理装置。
  6. XMLデータをフィルタリング処理するための分岐XPath式を処理するXPath式処理方法であって、
    コンピュータが、
    入力された複数の分岐XPath式を記憶手段に格納するXPath式格納手順と、
    記憶手段に格納された分岐XPath式ごとにターゲットパスおよび述語それぞれの絶対パスおよびスコープパスを抽出するパス抽出手順と、
    前記パス抽出手順により抽出された各パスをノードとして、部分的に等しいノードまたはノード間のリンクを共有可能部分として共有化し、複数の分岐XPath式から1つの共有化インデックスを構築する共有化インデックス構築手順と、
    を実行することを特徴とするXPath式処理方法。
  7. 請求項6に記載のXPath式処理方法をコンピュータに実行させるためのXPath式処理プログラム。
JP2005218239A 2005-07-28 2005-07-28 XPath式処理装置 Active JP4519028B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005218239A JP4519028B2 (ja) 2005-07-28 2005-07-28 XPath式処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005218239A JP4519028B2 (ja) 2005-07-28 2005-07-28 XPath式処理装置

Publications (2)

Publication Number Publication Date
JP2007034763A true JP2007034763A (ja) 2007-02-08
JP4519028B2 JP4519028B2 (ja) 2010-08-04

Family

ID=37793934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005218239A Active JP4519028B2 (ja) 2005-07-28 2005-07-28 XPath式処理装置

Country Status (1)

Country Link
JP (1) JP4519028B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010536085A (ja) * 2007-08-03 2010-11-25 韓國電子通信研究院 マルチメディア検索のためのクエリ表現装置および方法
US7996444B2 (en) 2008-02-18 2011-08-09 International Business Machines Corporation Creation of pre-filters for more efficient X-path processing
JP2012174212A (ja) * 2011-02-24 2012-09-10 Fujitsu Ltd ウィンドウ処理装置,方法およびプログラム
US8612945B2 (en) 2008-05-13 2013-12-17 Nec Corporation XML processing device, XML processing method, and XML processing program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7009001737, Chee−Yong Chan, 外3名, "Efficient Filtering of XML Documents with XPath Expressions", Proc. of the 18th International Conference on Data Engineering, 2002, pp. 235−244, US, IEEE Computer Society *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010536085A (ja) * 2007-08-03 2010-11-25 韓國電子通信研究院 マルチメディア検索のためのクエリ表現装置および方法
US8805868B2 (en) 2007-08-03 2014-08-12 Electronics And Telecommunications Research Institute Apparatus and method for a query express
US7996444B2 (en) 2008-02-18 2011-08-09 International Business Machines Corporation Creation of pre-filters for more efficient X-path processing
US8612945B2 (en) 2008-05-13 2013-12-17 Nec Corporation XML processing device, XML processing method, and XML processing program
JP2012174212A (ja) * 2011-02-24 2012-09-10 Fujitsu Ltd ウィンドウ処理装置,方法およびプログラム

Also Published As

Publication number Publication date
JP4519028B2 (ja) 2010-08-04

Similar Documents

Publication Publication Date Title
CN101765842B (zh) 用于xml策略匹配的方法和装置
CN108733689B (zh) 一种json文本的比对方法和装置
US7975220B2 (en) Apparatus, program product and method for structured document management
CN106982150B (zh) 一种基于Hadoop的移动互联网用户行为分析方法
US20140101176A1 (en) Blended match mode dfa scanning
JP2009251686A (ja) 文書検索装置
JP4519028B2 (ja) XPath式処理装置
JP4523561B2 (ja) XPath式処理装置
US8549009B2 (en) XML data processing system, data processing method and XML data processing control program used for the system
JP5536790B2 (ja) コンディショナルプロセッシング方法及び装置
Alwidian et al. Big data ingestion and preparation tools
JP4320004B2 (ja) XPath式処理方法、XPath式処理装置、XPath式処理プログラムおよびそのプログラムを格納した記憶媒体
JP2013045208A (ja) データ生成方法、装置及びプログラム、検索処理方法、装置及びプログラム
US20060004838A1 (en) Sharing large objects in distributed systems
US10387474B2 (en) System and method for cross-cloud identification of topics
JP6103021B2 (ja) データ生成方法、装置及びプログラム、検索処理方法、装置及びプログラム
KR101650316B1 (ko) 분산 병렬 처리 기반의 html5 문서 수집 및 분석 장치 및 방법
Hasani Implementation of infrastructure for streaming outlier detection in big data
US9177252B2 (en) Incremental DFA compilation with single rule granularity
CN113326407A (zh) 一种数据处理方法及装置
KR101878291B1 (ko) 에너지 빅데이터 관리 시스템 및 그 방법
JP5206675B2 (ja) 構造化文書変換装置
Ziekow et al. Sharing RFID and complex event data among organizations
JP3968749B2 (ja) XPath処理方法、XPath処理装置、XPath処理プログラム、及びそのプログラムを記憶した記憶媒体
US20110145700A1 (en) Structured document analysis apparatus and structured document analysis method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091026

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100208

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100303

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

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

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

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4519028

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

Year of fee payment: 4

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