JP2005135199A - Automaton generating method, method, device, and program for xml data retrieval, and recording medium for xml data retrieval program - Google Patents
Automaton generating method, method, device, and program for xml data retrieval, and recording medium for xml data retrieval program Download PDFInfo
- Publication number
- JP2005135199A JP2005135199A JP2003371309A JP2003371309A JP2005135199A JP 2005135199 A JP2005135199 A JP 2005135199A JP 2003371309 A JP2003371309 A JP 2003371309A JP 2003371309 A JP2003371309 A JP 2003371309A JP 2005135199 A JP2005135199 A JP 2005135199A
- Authority
- JP
- Japan
- Prior art keywords
- xml data
- automaton
- xml
- xpath
- search
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、オートマトン作成方法、および、XMLデータ検索方法、ならびに、XMLデータ検索装置、XMLデータ検索プログラム、および、XMLデータ検索プログラムの記録媒体に関する。 The present invention relates to an automaton creation method, an XML data search method, an XML data search device, an XML data search program, and an XML data search program recording medium.
XML(Extensible Markup Language)は、ネットワーク上で交換可能な標準的なデータ記述方式を提供する技術であり、タグを用いてデータ構造を表現する(非特許文献1など)。よって、XMLに従って作成されたデータは、コンピュータが処理可能な形で構造化されているため、現在newsMLなどをはじめとして広く使われている。
XML (Extensible Markup Language) is a technology that provides a standard data description method that can be exchanged on a network, and expresses a data structure using tags (Non-Patent
なお、XML形式のデータを処理するための特定の言語も、XMLに合わせて広く利用されている。例えば、XPath(XML Path Language)は、XMLデータの一部を特定するための記述方式を提供する技術であり、XMLデータに対するクエリや変換など、XMLデータへのアクセスを効率的に行うための表現方法として、重要な役割を果たしている。例えば、XMLデータの集合から所定の条件に適合するXMLデータを検索する場合には、所定の条件をXPath式として記述することで、XMLデータへの検索を容易にする。 A specific language for processing data in XML format is also widely used according to XML. For example, XPath (XML Path Language) is a technology that provides a description method for specifying a part of XML data, and is an expression for efficiently accessing XML data, such as a query and conversion for XML data. As a method, it plays an important role. For example, when searching for XML data that meets a predetermined condition from a set of XML data, the predetermined condition is described as an XPath expression to facilitate the search to the XML data.
XMLデータを対象とした検索処理の一例として、例えば、newsML形式に従ったデータを検索対象とする処理がある。newsMLは、ニュース記事やそれに関連した画像、動画、音声などをウェッブ、携帯電話、テレビ(データ放送)など、さまざまな端末に送ることが出来る。よって、newsMLの受け側(利用者)は、XPath式を配信サーバに登録しておくことで膨大な情報の中から、必要な情報のみを得ることが出来る。 As an example of a search process for XML data, there is a process for searching for data according to the newsML format, for example. newsML can send news articles and related images, videos, sounds, etc. to various terminals such as web, mobile phone, TV (data broadcasting). Therefore, the recipient (user) of newsML can obtain only necessary information from a vast amount of information by registering the XPath expression in the distribution server.
そして、XMLデータを対象とした検索処理は、検索対象のXMLデータをどのような順序でパーズ(走査)するかによって、大きく2種類に分類できる。 The search processing for XML data can be roughly classified into two types depending on the order in which the XML data to be searched is parsed (scanned).
まず、第1のパーズ手法は、DOM(Document Object Model)である。DOMは、XMLが木で表現できることに注目し処理を行う技術である。DOM(XMLを内部木で表現したもの)に対して走査を行うことで、分岐処理に対応することが出来る`但し、DOMには巨大なXML対しても内部木(以下、DOM木)を作らなければならないために、メモリ使用量が膨大となる、また、ニュース配信や株価配信のように逐次的なデータ(時系列データなど)として送られてリアルタイム処理を必要とする場合には、DOM木を用いたXPath式処理は、適用が困難である。 First, the first parsing method is DOM (Document Object Model). DOM is a technology that performs processing paying attention to the fact that XML can be expressed by a tree. By scanning DOM (XML expressed as an internal tree), it is possible to handle branch processing. However, DOM has an internal tree (hereinafter referred to as DOM tree) even for a large XML. If the memory usage is enormous, or if it is sent as sequential data (such as time series data) and requires real-time processing, such as news distribution or stock price distribution, the DOM tree It is difficult to apply the XPath type processing using.
一方、第2のパーズ手法は、SAX(Simple API for XML)である。SAXは、前記のDOMの弱点であるリアルタイム性とメモリ使用量削減を狙った技術である。DOMでは、XMLを木として表現することで、XPath式を与えられたときに走査することで検索及びフィルタリング処理を行った。一方SAXを用いた場合には、XMLデータをあくまでも上から下へ走査することしか出来ないためにDOMのようにXPath式処理を行うことが出来ない。 On the other hand, the second parsing method is SAX (Simple API for XML). SAX is a technology aimed at real-time performance and memory usage reduction, which are weak points of the DOM. In DOM, XML is represented as a tree, and scanning and filtering are performed by scanning when an XPath expression is given. On the other hand, when SAX is used, since XML data can only be scanned from top to bottom, XPath processing cannot be performed like DOM.
そこで、SAXを用いたXPath式処理技術としては、非決定性オートマトンを利用した方法や決定性オートマトンを利用した方法がある。非決定性オートマトンと決定性オートマトンは完全に独立したものではなく、それぞれ一長一短がある。なお、非決定性オートマトンは、XPath式一つに対して一つのオートマトンを構築する。ちなみに、複数のXPath式が与えられたときには、いくつものオートマトンを構築する必要がある。そのため、メモリ使用量は少なくて済むが、処理速度は低速となる。一方、決定性オートマトンは、非決定性オートマトンからサブセット生成法に従って構築される。よって、メモリ使用量は多くなるが、処理速度は高速となる。 Therefore, as an XPath type processing technique using SAX, there are a method using a non-deterministic automaton and a method using a deterministic automaton. Non-deterministic automata and deterministic automata are not completely independent, and each has advantages and disadvantages. Note that a nondeterministic automaton constructs one automaton for one XPath expression. Incidentally, when a plurality of XPath expressions are given, it is necessary to construct a number of automata. Therefore, the memory usage is small, but the processing speed is low. On the other hand, a deterministic automaton is constructed from a non-deterministic automaton according to a subset generation method. Therefore, the memory usage is increased, but the processing speed is increased.
非決定性オートマトンや決定性オートマトンが作成されると、入力されたXMLの中でどの部分がXPath式に一致するかを判断することが可能となる。非決定性オートマトンを利用した方法は、XPath式ひとつに対してひとつの非決定性オートマトンを作成する。この方法は、XPath式が多くなると処理速度が著しく劣化する特徴がある(非特許文献2参照)。決定性オートマトンを利用した方法は、前記非決定性オートマトンを変換することで実現できる。決定性オートマトンは、XPath式が多くなっても処理速度が一定のまま高速に維持できるという特徴がある。但し、変換の際にメモリ利用量が膨大になるという欠点も有する。 When a non-deterministic automaton or a deterministic automaton is created, it is possible to determine which part of the input XML matches the XPath expression. The method using a nondeterministic automaton creates one nondeterministic automaton for one XPath expression. This method has a feature that the processing speed is remarkably deteriorated as the number of XPath expressions increases (see Non-Patent Document 2). A method using a deterministic automaton can be realized by converting the non-deterministic automaton. The deterministic automaton is characterized in that even if the number of XPath expressions increases, the processing speed can be maintained at a high speed. However, there is a disadvantage that the memory usage becomes enormous during conversion.
遅延型決定性有限オートマトンと呼ばれる手法は、非決定オートマトンから決定性オートマトンヘすぐに変換を行うことをせず、XMLが入力された際に利用されるオートマトンのみを決定性化することで高速かつ少ないメモリ使用量を実現している(非特許文献3参照)。
しかし、複数の述語(検索条件)に対する処理を実現するシステムは、提案されていなかった。これは、SAXべ一スのXPath式処理システムが逐次的にXMLを処理するため、ただ一つの検索条件のみしか扱わない検索システムを、そのまま複数の検索条件に適合することが出来なかったためである。 However, a system that realizes processing for a plurality of predicates (search conditions) has not been proposed. This is because the SAX-based XPath processing system sequentially processes XML, so that a search system that handles only one search condition cannot be adapted to a plurality of search conditions as it is. .
ここで、検索対象となるXMLデータから検索条件に適合したXMLデータを効率的に検索するためには、複数の条件を指定することは、必要となる。従来のただ一つの検索条件のみしか扱わない検索システムでは、利用者の必要としないXMLデータまでも、ノイズとして検索結果に出力されてしまうために、効率的ではない。 Here, it is necessary to specify a plurality of conditions in order to efficiently search XML data that matches the search conditions from the XML data to be searched. In a conventional search system that handles only one search condition, even XML data that is not required by the user is output to the search result as noise, which is not efficient.
なお、検索対象となるXMLデータは、親子関係を有するノードの集合を含むものとする。また、検索条件となるXPath式は、XMLデータのノードを指定するためのコンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含む。ここで、プレディケイト(predicate)は、個々の検索条件を示すもので、以降、“述語”や、“条件”と表記する。 The XML data to be searched includes a set of nodes having a parent-child relationship. Further, the XPath expression as a search condition includes one or more sets of correspondence relationships between a context node for designating a node of XML data and a plurality of predicates corresponding to the context node. Here, the predicate indicates individual search conditions, and is hereinafter referred to as “predicate” or “condition”.
そこで、本発明は、前記した問題を解決し、複数の条件を有するXPath式を用いたXMLデータ検索システムを提案することを、主な目的とする。 In view of the above, the main object of the present invention is to propose an XML data search system that uses the XPath expression having a plurality of conditions to solve the above-described problems.
前記課題を解決するため、請求項1に記載のオートマトン作成方法は、XPath式からオートマトンを作成するオートマトン作成方法であって、前記XPath式は、コンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含むものとし、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータが、
前記コンテキストノードに対応する開始状態を作成する手順と、前記プレディケイトを入力とする受理状態を前記プレディケイトごとに作成する手順と、前記開始状態と前記受理状態とをイプシロン遷移によって対応付けてXPath式からオートマトンを作成する手順と、を実行することを特徴とする。
In order to solve the above problem, an automaton creation method according to
A procedure for creating a start state corresponding to the context node, a procedure for creating a reception state for each predicate with the predicate as an input, and an association between the start state and the reception state by an epsilon transition. And a step of creating an automaton from the formula.
請求項2に記載のオートマトン作成方法は、XPath式からXMLスキーマを用いてオートマトンを作成するオートマトン作成方法であって、前記XPath式は、コンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含むものとし、前記XMLスキーマは、XMLデータに含まれるノードの出現順序を規定するものとし、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータが、
前記コンテキストノードに対応する開始状態を作成する手順と、前記XMLスキーマに規定される前記ノードの出現順序から前記プレディケイトの出現順序を特定する手順と、前記プレディケイトごとに状態を作成して前記プレディケイトの出現順序に従って状態の遷移を規定する手順と、前記出現順序の最後に相当する状態を受理状態としてXPath式からオートマトンを作成する手順と、を実行することを特徴とする。
The automaton creation method according to
A procedure for creating a start state corresponding to the context node; a procedure for specifying the appearance order of the predicate from the order of appearance of the node specified in the XML schema; and creating a state for each predicate A procedure for defining state transitions according to the appearance order of predicates, and a procedure for creating an automaton from an XPath expression with the state corresponding to the end of the appearance order as an accepting state are executed.
請求項3に記載のXMLデータ検索方法は、請求項1または請求項2に記載されたオートマトン作成方法によって作成されたオートマトンを用いてXMLデータを検索するXMLデータ検索方法であって、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータが、
検索対象となるXMLデータの入力を受け付ける手順と、前記XMLデータを順に走査してSAXイベントを発生させる手順と、前記作成されたオートマトンに対して前記SAXイベントを入力として前記オートマトンの状態を推移させる手順と、前記オートマトンの状態が前記オートマトンに含まれる全ての受理状態に到達するときに、前記XMLデータを検索結果として出力する手順と、を実行することを特徴とする。
The XML data search method according to
A procedure for accepting input of XML data to be searched, a procedure for sequentially scanning the XML data to generate a SAX event, and a transition of the automaton state by inputting the SAX event to the created automaton And a step of outputting the XML data as a search result when the state of the automaton reaches all acceptance states included in the automaton.
請求項4に記載のXMLデータ検索装置は、検索対象のXMLデータから検索条件のXPath式に適合するXMLデータを検索するXMLデータ検索装置であって、前記XMLデータ検索装置は、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備え、前記メモリに格納される前記XMLデータは、親子関係を有するノードの集合を含むものとし、前記メモリに格納される前記XPath式は、コンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含むものとし、前記XMLデータ検索装置は、
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成部と、前記XPath式から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索部と、を含めて構成されることを特徴とする。
The XML data retrieval apparatus according to
A SAX event generation unit that sequentially scans XML data to be searched to generate a SAX event, an automaton creation unit that creates an automaton for each context node from the XPath expression, and the automaton that is created using the SAX event as an input And an XPath search unit that searches for XML data based on the state transition of the above.
請求項5に記載のXMLデータ検索装置は、検索対象のXMLデータから検索条件のXPath式に適合するXMLデータを検索するXMLデータ検索装置であって、前記XMLデータ検索装置は、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備え、前記メモリに格納される前記XMLデータは、親子関係を有するノードの集合を含むものとし、前記メモリに格納される前記XPath式は、コンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含むものとし、前記メモリに格納される前記XMLスキーマは、XMLデータに含まれるノードの出現順序を規定するものとし、前記XMLデータ検索装置は、
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成部と、前記XPath式および前記XMLスキーマに規定されたノードの出現順序から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索部と、を含めて構成されることを特徴とする。
The XML data retrieval apparatus according to
An SAX event generation unit that sequentially scans XML data to be searched to generate a SAX event; and an automaton creation unit that creates an automaton for each context node from the appearance order of the nodes specified in the XPath expression and the XML schema. , And an XPath search unit that searches for XML data based on the state transition of the created automaton using the SAX event as an input.
請求項6に記載のXMLデータ検索プログラムは、検索対象のXMLデータから検索条件のXPath式に適合するXMLデータを検索するXMLデータ検索プログラムであって、前記XMLデータは、親子関係を有するノードの集合を含むものとし、前記XPath式は、コンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含むものとし、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータを、
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成手段と、前記XPath式から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索手段、として機能させることを特徴とする。
The XML data search program according to claim 6 is an XML data search program for searching XML data that conforms to an XPath expression of a search condition from XML data to be searched, the XML data being a node having a parent-child relationship. The XPath expression includes one or more sets of correspondences between a context node and a plurality of predicates corresponding to the context node, and a memory as a storage area used when performing arithmetic processing And a computer comprising at least an arithmetic processing unit that performs the arithmetic processing,
SAX event generation means for generating SAX events by sequentially scanning XML data to be searched, automaton creation means for creating an automaton for each context node from the XPath expression, and the automaton created using the SAX event as an input It is made to function as an XPath search means for searching XML data by the state transition.
請求項7に記載のXMLデータ検索プログラムは、検索対象のXMLデータから検索条件のXPath式に適合するXMLデータを検索するXMLデータ検索プログラムであって、前記XMLデータは、親子関係を有するノードの集合を含むものとし、前記XPath式は、コンテキストノードと、そのコンテキストノードに対応する複数のプレディケイトとの対応関係の組を1つ以上含むものとし、前記XMLスキーマは、XMLデータに含まれるノードの出現順序を規定するものとし、演算処理を行う際に用いられる記憶領域としてのメモリと、前記演算処理を行う演算処理装置とを少なくとも備えるコンピュータを、
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成手段と、前記XPath式および前記XMLスキーマに規定されたノードの出現順序から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索手段、として機能させることを特徴とする。
The XML data search program according to claim 7 is an XML data search program for searching XML data that conforms to an XPath expression of a search condition from XML data to be searched, wherein the XML data is a node having a parent-child relationship. The XPath expression includes one or more pairs of correspondence relationships between a context node and a plurality of predicates corresponding to the context node, and the XML schema includes the occurrence of a node included in the XML data. A computer that includes at least a memory as a storage area that is used when performing arithmetic processing and an arithmetic processing device that performs the arithmetic processing, which defines the order.
SAX event generation means for generating SAX events by sequentially scanning XML data to be searched; and automaton creation means for creating an automaton for each context node from the appearance order of nodes defined in the XPath expression and the XML schema. , And an XPath search means for searching XML data based on the state transition of the created automaton using the SAX event as an input.
前記のように、本発明によって、SAXベースのXMLデータ検索装置において、XPath式が複数の条件を含んでいても検索処理を行うことが可能となる。 As described above, according to the present invention, in the SAX-based XML data search apparatus, it is possible to perform search processing even if the XPath expression includes a plurality of conditions.
以下、本発明の実施の形態について図面を用いて説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図1には、本発明の一実施形態に関する全体構成が示されている。図1に示すXMLデータ検索装置1は、検索対象のXMLデータから検索条件に適合するXMLデータを検索する機能を有する。このため、XMLデータ検索装置1は、検索対象のXMLデータを格納するXMLデータ格納部10と、検索対象のXMLデータをXMLデータ格納部に登録するXMLデータ登録部11と、検索対象のXMLデータが従うXMLスキーマを格納するXMLスキーマ格納部12と、検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成部13と、検索条件であるXPathを格納するXPath格納部20と、検索条件であるXPathをXPath格納部に登録するXPath登録部21と、XPathから生成されたオートマトンの遷移を用いてXMLデータを検索するXPath検索部22と、XPathから生成されたオートマトンを格納するオートマトン格納部30と、を含めて構成される。なお、図1に示す矢印は、データの流れを示すものである。
FIG. 1 shows an overall configuration relating to an embodiment of the present invention. The XML
また、XMLデータ検索装置1は、オートマトンの作成手段として、XMLスキーマに規定されたXMLデータのノードの出現順序を用いてXPathからオートマトンを作成する順序有オートマトン作成部31と、XMLデータのノードの出現順序を利用せずにXPathからオートマトンを作成する順序無オートマトン作成部32とのうち、少なくとも1つを備えるものとする。なお、順序有オートマトン作成部31または順序無オートマトン作成部32のいずれかをオートマトンの作成手段として利用するかの判断は、検索対象のXMLデータが特定のXMLスキーマに従って作成されたかどうかによって行われる。
The XML
なお、XMLスキーマは、XMLデータを構成するノード(タグによって表現される)のXMLデータ内での出現順序を規定した文法である。まず、検索対象のXMLデータがXMLスキーマに従って作成されている場合には、XMLデータ検索装置1は、順序有オートマトン作成部31または順序無オートマトン作成部32のどちらかを用いて、検索条件であるXPathからオートマトンを作成する。一方、検索対象のXMLデータがXMLスキーマに従って作成されていない場合には、XMLデータ検索装置1は、順序無オートマトン作成部32を用いて、検索条件であるXPathからオートマトンを作成する。なお、作成されたオートマトンは、オートマトン格納部30に保存される。
The XML schema is a grammar that defines the appearance order of nodes (represented by tags) constituting XML data in the XML data. First, when the XML data to be searched is created in accordance with the XML schema, the XML
ここで、順序有オートマトン作成部31は、順序無オートマトン作成部32よりも検索処理効率の良いオートマトンを作成する。これは、順序有オートマトン作成部31が作成するオートマトンは、順序情報を活用しているので、順序無オートマトン作成部32が作成するオートマトンよりも、検証する受理状態が少なくて済むためである。よって、検索対象のXMLデータがXMLスキーマに従って作成されている場合には、順序有オートマトン作成部31が順序無オートマトン作成部32よりも優先的に使用される。 Here, the ordered automaton creation unit 31 creates an automaton with higher search processing efficiency than the unordered automaton creation unit 32. This is because the automaton created by the ordered automaton creating unit 31 uses order information, and therefore, the automaton created by the unordered automaton creating unit 32 requires fewer acceptance states to be verified. Therefore, when the XML data to be searched is created according to the XML schema, the ordered automaton creation unit 31 is used in preference to the unordered automaton creation unit 32.
そして、XMLデータ検索装置1は、作成されたオートマトンを用いて、検索処理を行う。具体的には、XMLデータ検索装置1は、SAXイベント生成部13によって、XMLデータ格納部10のXMLデータを順次走査することによってSAXイベントを発生させる。次に、XMLデータ検索装置1のXPath検索部22は、発生されたSAXイベントを入力として、オートマトン格納部30に格納されたオートマトンの状態遷移を検証する。そして、XPath検索部22は、オートマトンの状態遷移が受理状態となる場合に、SAXイベントの生成元となったXMLデータが、そのオートマトンの生成元となったXPathに適合したとして、そのXMLデータを検索結果として出力する。以上、XMLデータ検索装置1の概要について説明した。次に、XMLデータ検索装置1の各構成要素について、具体的に説明する。
Then, the XML
まず、XMLデータ格納部10は、検索対象のXMLデータを格納する。図10(A)は、格納されるXMLデータの一例を示す図である。図10(A)のXMLデータは、文献用のXMLでありbibタグの下にbookタグがある。bookタグの下には、titleタグとauthorタグがある。このような、XMLに対して、発行年が1999年であり、題名にXMLを含み、著者がBobであるような条件に一致したbook要素を抽出するため、(式1)のXPathの検索式を用いる。この時、[]で囲まれた部分がXPath式の条件を表すことになる。そして、XMLデータ検索装置1は、図10(A)のXMLデータに対して、(式1)の検索式を用いて、図10(B)の検索結果を得る。なお、本発明の主な特徴は、本発明は、(式1)の[]の部分が複数の場合でも処理できることである。
/bib/book[contains(title/text(),`XML`)][author=`Bob`][@year=1999]・・・(式1)
First, the XML data storage unit 10 stores XML data to be searched. FIG. 10A is a diagram illustrating an example of stored XML data. The XML data in FIG. 10A is a document XML, and has a book tag under the bib tag. Below the book tag are a title tag and an author tag. In order to extract book elements that match the conditions such that the year of publication is 1999, XML is included in the title, and the author is Bob, for this XML, the XPath search formula of (Formula 1) Is used. At this time, the portion surrounded by [] represents the condition of the XPath expression. Then, the XML
/ bib / book [contains (title / text (), `XML`)] [author =` Bob`] [@ year = 1999] ... (Formula 1)
次に、SAXイベント生成部13は、XMLデータを走査して、所定のノード(タグ)をXMLデータから読み込んだ場合に、そのノードの種別に対応するコールバック関数を発生させる。これは、SAXが、前記のように、XMLを解析するときに木を構成しないためである。なお、図11(B)は、コールバック関数の一例を列挙したものである。 Next, the SAX event generation unit 13 scans the XML data, and when a predetermined node (tag) is read from the XML data, generates a callback function corresponding to the type of the node. This is because SAX does not construct a tree when analyzing XML as described above. FIG. 11B lists examples of callback functions.
また、図2は、SAXフィルタ(SAXイベント生成部13)とユーザアプリケーションの関係を示している。図2のSAXフィルタにXMLデータが入力されると、上から順にXMLデータが読み込まれる。bibが認識されると、SAXフィルタはユーザアプリケーション上にあるstartElement関数を呼び出す。この際、startElement関数の引数には、bibを入れておくことで、ユーザアプリケーション側ではbibという情報を取得することが出来る。このように、SAXイベント生成部13がユーザアプリケーションの関数を呼び出すことをコールバックと呼ぶ。 FIG. 2 shows the relationship between the SAX filter (SAX event generation unit 13) and the user application. When XML data is input to the SAX filter of FIG. 2, the XML data is read in order from the top. When bib is recognized, the SAX filter calls the startElement function on the user application. At this time, by putting bib in the argument of the startElement function, information called bib can be acquired on the user application side. In this way, calling the function of the user application by the SAX event generation unit 13 is called a callback.
そして、図11(A)は、XMLスキーマ格納部12が格納するXMLスキーマのDTD(Document Type Definition)を示す。XMLスキーマは、XMLのノードの出現順序を規定している。これによると、先にあげたXML文書例である図10(A)は、図11(A)のXMLスキーマを満たすことが分かる。なお、図11(A)の3行目に示される属性は、各要素に対して1つ以上付け加えることが出来るものであり、[属性名=`値']という形式で表現される。 FIG. 11A shows an XML schema DTD (Document Type Definition) stored in the XML schema storage unit 12. The XML schema defines the order of appearance of XML nodes. According to this, it can be seen that the XML document example shown in FIG. 10A satisfies the XML schema of FIG. 11A. Note that one or more attributes shown in the third line of FIG. 11A can be added to each element, and are expressed in the format [attribute name = `value '].
なお、本実施形態では、“XMLスキーマ”という用語を、XMLデータにおけるノードの出現順序を規定する文法の総称という意味で用いている。よって、ノードの出現順序を規定する文法の記述方法の一例として、W3Cが規定するDTDや、XML Schemaなどが挙げられるが、本実施形態では、これらの特定の一例に限定されることはなく、様々な文法の記述方法を用いてもよい。 In this embodiment, the term “XML schema” is used to mean a generic name of grammar that defines the order of appearance of nodes in XML data. Thus, examples of a grammar description method that defines the appearance order of nodes include DTD defined by W3C, XML Schema, and the like. However, in the present embodiment, the present invention is not limited to these specific examples. Various grammar description methods may be used.
さらに、図3は、順序無オートマトン作成部32が、XPath式からオートマトンを作成する様子を示している。なお、オートマトンは、様々な記述方法があり、本実施形態では、オートマトンを状態遷移図として記述する。丸で示されているのは状態であり、矢印に付随して書いてあるのは状態が移るための入力である。なお、XPath検索部22がオートマトンの検証を行う際には、状態が移るための入力は、SAXイベント生成部13から与えられるSAXイベントに相当する。 Further, FIG. 3 shows a state in which the unordered automaton creating unit 32 creates an automaton from the XPath expression. There are various description methods for the automaton, and in this embodiment, the automaton is described as a state transition diagram. The state indicated by the circle is the state, and what is written accompanying the arrow is the input for changing the state. When the XPath search unit 22 verifies the automaton, the input for changing the state corresponds to the SAX event given from the SAX event generation unit 13.
まず、順序無オートマトン作成部32は、XPath式の[]印で囲まれた各条件を、それぞれ状態が移るための入力として抽出する。次に、順序無オートマトン作成部32は、各条件の遷移後の状態を、それぞれオートマトンの受理状態とする。さらに、順序無オートマトン作成部32は、各条件から生成されたオートマトンを、イプシロン遷移を用いて1つのオートマトンに統合する。なお、イプシロン遷移は、入力に依存せずに遷移する旨を示す。このようにして作成されたオートマトンは、イプシロン遷移から各条件のいずれかに分岐するので、分岐有オートマトンと表記する。 First, the unordered automaton creating unit 32 extracts each condition surrounded by [] marks in the XPath expression as an input for changing the state. Next, the unordered automaton creation unit 32 sets the state after the transition of each condition as the accepting state of the automaton. Further, the unordered automaton creating unit 32 integrates the automaton generated from each condition into one automaton using the epsilon transition. Note that the epsilon transition indicates that the transition does not depend on the input. The automaton created in this way branches to one of the conditions from the epsilon transition, and is therefore referred to as a branching automaton.
そして、図4は、順序有オートマトン作成部31が、変換前のXPath式から変換後のオートマトンを作成する様子を示している。なお、図4(A)と図4(B)とでは、オートマトンの生成に使用されるXPath式は等価なものであるが、[]印で囲まれた条件の出現順序が異なっているため、生成されるオートマトンも異なるものとなる。つまり、条件の順番が違えばオートマトンも変化することが、順序有オートマトン作成部31によって生成されるオートマトンの特徴である。 FIG. 4 shows a state in which the ordered automaton creation unit 31 creates a post-conversion automaton from the pre-conversion XPath expression. Note that in FIG. 4A and FIG. 4B, the XPath expression used to generate the automaton is equivalent, but the appearance order of the conditions surrounded by [] marks is different. The generated automaton will also be different. That is, a feature of the automaton generated by the ordered automaton creation unit 31 is that the automaton changes if the order of the conditions is different.
図4(A)を説明する。状態0は、初期状態を示している。状態0から状態1に移るためには、bib要素のあとにbook要素がくることが必要である。状態1から状態2に移るためには、title要素がはさんでいるデータ中に`XML'という文字を含んでいる必要がある。状態2から3へは、authorがBobで移る。最後に、book要素がyear属性を持ちさらにその値が1999のとき、受理状態となり、XMLデータが検索結果として抽出される。
FIG. 4A will be described.
図5は、XMLデータの構造を示す文法を持つ場合において、文法を用いて条件の適用されるべき順序を抽出し、複数の子ノードに対する条件を持ったXPath式を等価な非決定性オートマトンに変換する処理を示すフローチャートである。なお、図5は、順序有オートマトン作成部31を主体とする動作のフローチャートを示している。非決定性オートマトンへの変換結果は、オートマトン格納部30に登録される。これにより、複数条件を持ったXPath式を処理することが可能となる。以下、図5の各処理を順に説明する。 FIG. 5 shows a case where a grammar indicating the structure of XML data is used, and the order in which conditions are applied is extracted using the grammar, and an XPath expression having conditions for a plurality of child nodes is converted into an equivalent nondeterministic automaton. It is a flowchart which shows the process to perform. FIG. 5 shows a flowchart of the operation mainly performed by the ordered automaton creation unit 31. The conversion result to the non-deterministic automaton is registered in the automaton storage unit 30. As a result, an XPath expression having a plurality of conditions can be processed. Hereinafter, each process of FIG. 5 is demonstrated in order.
まず、XMLデータ検索装置1は、検索条件であるXPathの入力を受け付ける(S101)。そして、入力されるXMLがスキーマを持つ場合にこのフローチャートは動作するため、XMLデータ検索装置1は、入力されるXMLがスキーマを持つかどうかを判定する(S102)。ここで、スキーマを持たないXMLデータは、順序有オートマトン作成部31の処理対象ではないので、処理を終了する(S103)。
First, the XML
次に、XMLデータ検索装置1は、文法(スキーマ)を解析し、要素の出現順序を得る(S104)。なお、DTDであれば、そのような出現順序は要素型宣言において表現されている。要素型宣言とは、〈!ELEMENT要素内容モデル〉という形をとっている。内容モデルの部分において、要素の順番を「要素名1、要素名2、要素名3、...」のようにカンマで区切って表現する。
Next, the XML
そこで、XMLデータ検索装置1は、要素名1、要素名2、要素名3、...の順番を記憶しておく。例えば、図11(A)のような文法の場合であれば、必ずyear、title、authorの順番で現れることを指定している。
Therefore, the XML
なお、属性は、特殊な扱いとなっていて、図11(A)の順序3のように宣言される。属性は、XMLデータにおける出現位置が対象要素と同じであるために、属性に対する条件は一番最初に処理されなければならない。そこで、複数の条件があるときに属性に対する条件が存在すれば(S105、Y)、そのような条件部分をまず一番最初に持ってくる(S106)。全ての属性に対する条件を前に持ってきたら、要素(title、author)に対する順番を先ほどDTDから得られた順序に移動する(S107)。このようにして得られたXPath式を出力として、XPath登録部21に出力する(S108)。
Note that the attribute is treated specially and is declared as shown in
具体例を用いて説明する。XPath式(式2)が与えられると、まず属性に関する条件全てを条件群の前へ移動して、(式3)とする。次に、文法に従って(式3)の条件を整列させて(式4)とする。このようにして、文法に従った順番で条件を整列する。このXPath式は、例で示したDTDに関して、元のXPath式と等価である。よって、この出力されたXPath式を用いて、検索処理を行うことが出来る。
/bib/book[author=`Bob`][contains(title/text(),`XML`)][@year=1999]・・・(式2)
/bib/book[@year=1999][author=`Bob`][contains(title/text(),`XML`)]・・・(式3)
/bib/book[@year=1999][contains(title/text(),`XML`)][author=`Bob`]・・・(式4)
This will be described using a specific example. When the XPath expression (Expression 2) is given, first, all the conditions related to the attribute are moved to the front of the condition group to obtain (Expression 3). Next, the conditions of (Equation 3) are aligned according to the grammar to obtain (Equation 4). In this way, the conditions are arranged in the order according to the grammar. This XPath expression is equivalent to the original XPath expression with respect to the DTD shown in the example. Therefore, the search process can be performed using the output XPath expression.
/ bib / book [author = `Bob`] [contains (title / text (),` XML`)] [@ year = 1999] ... (Formula 2)
/ bib / book [@ year = 1999] [author = `Bob`] [contains (title / text (),` XML`)] ... (Formula 3)
/ bib / book [@ year = 1999] [contains (title / text (), `XML`)] [author =` Bob`] ... (Formula 4)
図6は、XMLデータの構造を示す文法(スキーマ)を持たない場合において、複数の子ノードに対する条件を持ったXPath式でXMLデータに対する検索処理を可能にするフローチャートである。つまり、図6は、複数の子ノードに対する条件を持ったXPath式を分岐有り非決定性オートマトンに変換する処理を示すものである。なお、図6は、順序無オートマトン作成部32を動作の主体とするものである。以下、図6の各手順を順に説明する。 FIG. 6 is a flowchart that enables a search process for XML data using an XPath expression having conditions for a plurality of child nodes when the grammar (schema) indicating the structure of the XML data is not provided. That is, FIG. 6 shows processing for converting an XPath expression having conditions for a plurality of child nodes into a nondeterministic automaton with a branch. FIG. 6 shows the operation of the unordered automaton creating unit 32. Hereafter, each procedure of FIG. 6 is demonstrated in order.
まず、XMLデータ検索装置1は、複数のXPath式が与えられたときには(S201)、各XPathを1つ1つ順に処理する。よって、XMLデータ検索装置1は、全てのXPath式が処理されたかどうかを判定し(S202)、全てのXPath式が処理されたら、処理を終了する(S203)。
First, when a plurality of XPath expressions are given (S201), the XML
次に、XMLデータ検索装置1は、XPath式が入力されると(S204)、入力されたXPath式を解析して(S205)、XPath式が条件(述語)を持つかどうかを判断する(S206)。つまり、XPath式の中から[]でくくられた条件の部分を探すことになる。よって、XMLデータ検索装置1は、それぞれの条件を分割して、スタックしておく。そして、XMLデータ検索装置1は、スタックした複数の条件の中からひとつの条件を取り出して連結し、XPathプロセッサに登録する(S207)。連結した条件は、スタックから取り除き、選択された条件のみを削除してXPathを新しいXPathとして出力する(S208)。
Next, when the XPath expression is input (S204), the XML
さらに、XMLデータ検索装置1は、スタックから条件がなくなるまで繰り返すと(S206、N)、条件の数と同じだけのXPath式集合が構築される。最後に、元のXPath式から条件部分を取り除いたXPath式−Parentを取得する(S209)。XPath式−ParentとXPath式集合の間に親子関係を表す情報を構築しておく(S210)。
Further, when the XML
例を用いて説明する。文法を持たないXMLデータが、図10(A)のように与えられているとする。この時、XPath式である(式1)を考える。この時、前記の考察から単にオートマトンを構成してもフィルタリング処理することが出来ない、そこでまず、XPath式を、図12(A)のように分割する。これは、条件部を抜いた部分と複数条件をひとつの条件に分割している。 This will be described using an example. Assume that XML data having no grammar is given as shown in FIG. At this time, the XPath formula (Formula 1) is considered. At this time, even if an automaton is simply configured from the above consideration, filtering cannot be performed. First, the XPath expression is divided as shown in FIG. In this method, a part from which the condition part is omitted and a plurality of conditions are divided into one condition.
次に、各条件部分と、各条件部分に対応するコンテキストノードとを連結して、図12(B)のようなXPath式集合を得ることが出来る。なお、ここで得られたXPath式群は、親子関係を持っている。前記の例に対する分岐有り非決定性オートマトンは、図3に示されているように構成される。 Next, each condition part and a context node corresponding to each condition part can be connected to obtain an XPath expression set as shown in FIG. Note that the XPath expression group obtained here has a parent-child relationship. The branching nondeterministic automaton for the above example is constructed as shown in FIG.
なお、本発明の一実施形態に関するXMLデータ検索装置1は、順序無オートマトン作成部32によって構築されたXPath式群をXPath格納部20に登録しておく。例の中で#Y、#Z、#U、#Xなどを用いたが、これらは実際のXPath式と同じ働きを行う。例えば、/bib/bookがstartContextから呼ばれると#Yが呼ばれる。#Z、#U、#Xが#Yを用いて定義されているのは、//bookに対応するためである。//bookのようなXPath式は、XMLがbook要素をネストして保持している場合にも対応しなければならない。#Yは、//bookが展開した後のXPath式を表現しているので、#Z、#U、#Xをそれぞれ#Yへの相対XPath式として定義することが出来る。
The XML
ここで、図8に示すXMLデータの検索処理の概要について、図7に示す具体例を用いて説明する。なお、図7の灰色で示された状態が受理状態を示している。 Here, an outline of the XML data search process shown in FIG. 8 will be described using a specific example shown in FIG. In addition, the state shown in gray in FIG. 7 indicates the acceptance state.
まず、図10(B)のようなXMLデータが、検索対象となる。そして、(式5)のようなXPath式が入力されて、図7(a)のようなオートマトンが作成されたとする。
/bib/book[author=`Bob`][@year=1999][contains(title/text(),`XML`)]・・・(式5)
First, XML data as shown in FIG. 10B is a search target. Assume that an XPath expression such as (Expression 5) is input and an automaton as shown in FIG. 7A is created.
/ bib / book [author = `Bob`] [@ year = 1999] [contains (title / text (),` XML`)] ... (Formula 5)
この時、startElement関数が2回呼び出されて、$Yに遷移が移る。すると、$Yに対する子オートマトンがそれぞれ状態を持つ、endEelment関数の引数には、属性の情報`year=1999'も含まれているので、$Xが受理状態となる(図7(b)参照)。よって、親オートマトンである$Yに対して自分自身を登録し、$Xが受理状態であることを伝える。 At this time, the startElement function is called twice, and a transition is made to $ Y. Then, since the child automaton for $ Y has a state, the argument of the endEelment function also includes attribute information `year = 1999 ', so $ X is in the accepting state (see FIG. 7B). . Therefore, it registers itself to $ Y, which is the parent automaton, and informs that $ X is in an accepting state.
同様にendElement関数が呼び出された後、contains(title/text()、`XML')とauthor=`Bob'という条件が満たされて、$Z、$Uがそれぞれ受理状態となる(図7(c)および図7(d)参照)。次に、endElement関数が</book>に関して呼び出されると、$Yに対応するオートマトンは、全ての子オートマトンが受理状態であるかを検査し、受理状態であるので$Yも受理する(図7(e)参照)。 Similarly, after the endElement function is called, the conditions of “contains (title / text (),` XML ') and author = `Bob" are satisfied, and $ Z and $ U are in the accepting state (FIG. 7 ( c) and FIG. 7 (d)). Next, when the endElement function is called with respect to </ book>, the automaton corresponding to $ Y checks whether all child automata are in the accepting state, and accepts $ Y because it is in the accepting state (FIG. 7). (See (e)).
ここで、xpath_variableが持つスタックについて、図9を用いて説明する。図9には、$Y、$Z、$U、$Xの持つスタックを表している。スタックは、子オートマトンの受理状態を表すレジスタから構成されるので、$Yは、レジスタ{$Z、$U、$X}をスタックしている。こうすることで、子オートマトンの受理状態を受け取ることが出来る。リーフオートマトンは、子オートマトンを持たないのでスタックの中は空である。 Here, the stack of xpath_variable will be described with reference to FIG. FIG. 9 shows a stack of $ Y, $ Z, $ U, and $ X. Since the stack is composed of registers indicating the acceptance state of the child automaton, $ Y stacks registers {$ Z, $ U, $ X}. By doing this, the acceptance status of the child automaton can be received. Leaf automata have no child automata, so the stack is empty.
なお、スタックを利用している理由を述べる。今回紹介した例は、簡単のため$Yが絶対パスで表現されている。実際には、//bookのようにbook要素を再帰的に指定するXPathが存在する。この時、登録できるレジスタが一つだけであると、複数のbook要素がstartElement関数からコールバックを受けたときに現時点で処理するべきbook要素が判断できなくなる。そのため、レジスタを複数格納しかつ処理するべき要素を判断するために、スタックを用いている。 The reason for using the stack will be described. In the example introduced this time, $ Y is expressed by an absolute path for simplicity. Actually, there is an XPath that recursively designates a book element, such as // book. At this time, if there is only one register that can be registered, when a plurality of book elements receive a callback from the startElement function, the book element to be processed at the present time cannot be determined. For this reason, the stack is used to store a plurality of registers and determine an element to be processed.
このようにして、受理されたときにXPath式に受理されたXMLデータを出力するために、ルートオートマトンにおいて遷移が起こったところからXMLデータをレジスタに格納しておく。受理状態になったらレジストされているデータを全て出力する。受理状態にならなかったときには、受理状態にならなかったオートマトンがレジスタの開放作業を行う。以上により、文法(XMLスキーマ)が無い場合においても、複数条件をもったXPath式の処理を行うことが出来る。 In this way, in order to output the XML data accepted by the XPath expression when accepted, the XML data is stored in the register from the place where the transition occurred in the root automaton. When it is accepted, all registered data is output. When the acceptance state is not reached, the automaton that has not entered the acceptance state opens the register. As described above, even when there is no grammar (XML schema), it is possible to perform processing of an XPath expression having a plurality of conditions.
図8は、作成されたオートマトンを用いて、入力されたXMLデータを検索する処理を示すフローチャートである。ここでは、作成されたオートマトンの一例として、順序無オートマトン作成部32によって作成された分岐有り非決定性オートマトンを用いている。なお、図8は、XPath検索部22が主体となる動作を示す。 以下、図8の処理を順に説明する。 FIG. 8 is a flowchart showing a process for searching input XML data using the created automaton. Here, as an example of the created automaton, the branching nondeterministic automaton created by the unordered automaton creating unit 32 is used. FIG. 8 shows an operation mainly performed by the XPath search unit 22. Hereinafter, the processing of FIG. 8 will be described in order.
XMLデータ検索装置1は、入力されたXMLデータ(S301)に対するSAXイベント生成部13からのコールバック(S302)を、処理の契機とする。まず、コールバック関数であるstartContext関数とendContext関数は、対象となるXPath式を示す変数xpath_variableを引数として持つ。
The XML
ここで、startContext関数がコールバックされたときには、xpath_variableに対応するスタックを用意する(S305)。スタックされるのは、xpath_variableが持つ全ての子オートマトンの受理状態をtrue/falseで格納することが出来るレジスタである。子オートマトンは、親オートマトンに対して受理状態であればtrueを親オートマトンに通知する。レジスタは、falseに初期化される。 Here, when the startContext function is called back, a stack corresponding to xpath_variable is prepared (S305). What is stacked is a register that can store the accept states of all child automata possessed by xpath_variable as true / false. If the child automaton is in an accepting state with respect to the parent automaton, the child automaton notifies the parent automaton of true. The register is initialized to false.
一方、endContext関数がコールバックされたときには、分岐有りオートマトン上のリーフであるならば(S306、Y)、xpath_variableの親に相当するxpathに対して、xpath_variableに関するレジスタを持っているので、そのレジスタをtrueとする。ここで、リーフとは図3を木として捉えたときの葉となる部分のことをさす。xpath_variableがリーフでないときには(S306、N)、xpath_variableの子に対応する子オートマトンが全て受理状態かどうかをレジスタの状態によって判断する。 On the other hand, when the endContext function is called back, if it is a leaf on a branching automaton (S306, Y), since there is a register related to xpath_variable for xpath corresponding to the parent of xpath_variable, Let it be true. Here, the leaf refers to a portion that becomes a leaf when FIG. 3 is regarded as a tree. When xpath_variable is not a leaf (N in S306), it is determined based on the state of the register whether all child automata corresponding to the children of xpath_variable are in an accepting state.
複数の子オートマトンで表現されている条件は、and/orを用いた論理式で表現される。よって、レジスタに含まれるそれぞれの子オートマトンに含まれるtrue/falseを条件群の論理式に代入演算し、論理式がtrueであるかどうかを判断する。 A condition expressed by a plurality of child automata is expressed by a logical expression using and / or. Thus, true / false included in each child automaton included in the register is assigned to the logical expression of the condition group to determine whether the logical expression is true.
もし、条件群の論理式がtrueならば(S307、Y)、子オートマトン群の表す条件は受理状態である。受理状態であれば、xpath_variableは受理される。一方、条件群の論理式がfalseならば(S307、N)、子オートマトン群の表す条件は受理状態でない。受理状態でなければ、xpath_variableも受理されない。そして、受理状態であっても無くてもxpath_variableの持つスタックから現在のレジスタをポップする(S309、S310)。 If the logical expression of the condition group is true (S307, Y), the condition represented by the child automaton group is an acceptance state. If it is in the accepting state, xpath_variable is accepted. On the other hand, if the logical expression of the condition group is false (S307, N), the condition represented by the child automaton group is not in the accepting state. If it is not in the accepting state, xpath_variable is not accepted. Then, the current register is popped from the stack of xpath_variable whether it is in the accepting state or not (S309, S310).
また、受理状態の場合(S307、Y)には、xpath_variableに対応するオートマトンがルートであるかどうかによって処理を分岐する(S311)。ルートである場合には(S311、Y)、対象となる分岐オートマトンが受理されていることになるため、元のXPath式が受理状態であることを示している。そこで、そのXPath式をリストAにプッシュする(S313)。ルートで無い場合には(S311、N)、xpath_variableの親に相当するXPath式に対して、xpath_variableをプッシュする(S312)。どちらの場合にも、次のコールバック関数が呼ばれるまで待つ(S302)。 In the case of an acceptance state (S307, Y), the process branches depending on whether the automaton corresponding to xpath_variable is a route (S311). If it is a route (S311, Y), the target branch automaton is accepted, indicating that the original XPath expression is in the accepted state. Therefore, the XPath expression is pushed to the list A (S313). If it is not the root (S311; N), xpath_variable is pushed to the XPath expression corresponding to the parent of xpath_variable (S312). In either case, the process waits until the next callback function is called (S302).
以上説明した本発明は、前記した実施例に限定されることなく、その技術思想の及ぶ範囲で様々な形態として実施することができる。 The present invention described above is not limited to the embodiments described above, and can be implemented in various forms within the scope of the technical idea.
1 XMLデータ検索装置
10 XMLデータ格納部
12 XMLスキーマ格納部
13 SAXイベント生成部
20 XPath格納部
22 XPath検索部
30 オートマトン格納部
31 順序有オートマトン作成部(オートマトン作成手段)
32 順序無オートマトン作成部(オートマトン作成手段)
DESCRIPTION OF
32 Orderless automaton creation part (automata creation means)
Claims (8)
前記コンテキストノードに対応する開始状態を作成する手順と、前記プレディケイトを入力とする受理状態を前記プレディケイトごとに作成する手順と、前記開始状態と前記受理状態とをイプシロン遷移によって対応付けてXPath式からオートマトンを作成する手順と、を実行することを特徴とするオートマトン作成方法。 An automaton creation method for creating an automaton from an XPath expression, wherein the XPath expression includes at least one set of correspondences between a context node and a plurality of predicates corresponding to the context node, and performs an arithmetic process A computer including at least a memory as a storage area used at the time, and an arithmetic processing device that performs the arithmetic processing,
A procedure for creating a start state corresponding to the context node, a procedure for creating a reception state for each predicate with the predicate as an input, and an association between the start state and the reception state by an epsilon transition. A method for creating an automaton from an expression.
前記コンテキストノードに対応する開始状態を作成する手順と、前記XMLスキーマに規定される前記ノードの出現順序から前記プレディケイトの出現順序を特定する手順と、前記プレディケイトごとに状態を作成して前記プレディケイトの出現順序に従って状態の遷移を規定する手順と、前記出現順序の最後に相当する状態を受理状態としてXPath式からオートマトンを作成する手順と、を実行することを特徴とするオートマトン作成方法。 An automaton creation method for creating an automaton from an XPath expression using an XML schema, wherein the XPath expression includes one or more pairs of correspondence relationships between a context node and a plurality of predicates corresponding to the context node. The XML schema defines the order of appearance of nodes included in the XML data, and a computer including at least a memory serving as a storage area used when performing arithmetic processing, and an arithmetic processing device that performs the arithmetic processing. ,
A procedure for creating a start state corresponding to the context node; a procedure for specifying the appearance order of the predicate from the order of appearance of the node specified in the XML schema; and creating a state for each predicate A method for creating an automaton, comprising: a step of defining a state transition in accordance with a predicate appearance order; and a step of creating an automaton from an XPath expression with a state corresponding to the end of the appearance order as an acceptance state.
検索対象となるXMLデータの入力を受け付ける手順と、前記XMLデータを順に走査してSAXイベントを発生させる手順と、前記作成されたオートマトンに対して前記SAXイベントを入力として前記オートマトンの状態を推移させる手順と、前記オートマトンの状態が前記オートマトンに含まれる全ての受理状態に到達するときに、前記XMLデータを検索結果として出力する手順と、を実行することを特徴とするXMLデータ検索方法。 An XML data search method for searching XML data using an automaton created by the automaton creation method according to claim 1 or 2, wherein a memory as a storage area used when performing arithmetic processing; A computer comprising at least an arithmetic processing unit that performs the arithmetic processing,
A procedure for accepting input of XML data to be searched, a procedure for sequentially scanning the XML data to generate a SAX event, and a transition of the automaton state by inputting the SAX event to the created automaton An XML data search method comprising: executing a procedure; and outputting the XML data as a search result when the state of the automaton reaches all acceptance states included in the automaton.
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成部と、前記XPath式から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索部と、を含めて構成されることを特徴とするXMLデータ検索装置。 An XML data search device that searches XML data that conforms to an XPath expression of a search condition from XML data to be searched, the XML data search device including a memory as a storage area used when performing arithmetic processing, The XML data stored in the memory includes a set of nodes having a parent-child relationship, and the XPath expression stored in the memory includes a context node, It is assumed that the XML data retrieval apparatus includes at least one set of correspondences with a plurality of predicates corresponding to the context node.
A SAX event generation unit that sequentially scans XML data to be searched to generate a SAX event, an automaton creation unit that creates an automaton for each context node from the XPath expression, and the automaton created by using the SAX event as an input An XML data search device comprising: an XPath search unit that searches for XML data based on state transitions of:
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成部と、前記XPath式および前記XMLスキーマに規定されたノードの出現順序から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索部と、を含めて構成されることを特徴とするXMLデータ検索装置。 An XML data search device that searches XML data that conforms to an XPath expression of a search condition from XML data to be searched, the XML data search device including a memory as a storage area used when performing arithmetic processing, The XML data stored in the memory includes a set of nodes having a parent-child relationship, and the XPath expression stored in the memory includes a context node, The XML schema stored in the memory includes one or more pairs of correspondence relationships with a plurality of predicates corresponding to the context node, and defines the appearance order of nodes included in the XML data. The data retrieval device
An SAX event generation unit that sequentially scans XML data to be searched to generate a SAX event; and an automaton creation unit that creates an automaton for each context node from the appearance order of the nodes specified in the XPath expression and the XML schema. And an XPath search unit that searches for XML data based on the state transition of the created automaton using the SAX event as an input.
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成手段と、前記XPath式から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索手段、として機能させるためのXMLデータ検索プログラム。 An XML data search program for searching XML data that matches an XPath expression of a search condition from XML data to be searched, wherein the XML data includes a set of nodes having a parent-child relationship, and the XPath expression is a context node And one or more pairs of correspondence relationships with a plurality of predicates corresponding to the context node, a memory serving as a storage area used when performing the arithmetic processing, and an arithmetic processing device that performs the arithmetic processing A computer comprising at least
SAX event generation means for generating SAX events by sequentially scanning XML data to be searched, automaton creation means for creating an automaton for each context node from the XPath expression, and the automaton created using the SAX event as an input XML data search program for functioning as an XPath search means for searching XML data based on the state transition of.
検索対象のXMLデータを順に走査してSAXイベントを発生させるSAXイベント生成手段と、前記XPath式および前記XMLスキーマに規定されたノードの出現順序から前記コンテキストノードごとにオートマトンを作成するオートマトン作成手段と、前記SAXイベントを入力として前記作成されたオートマトンの状態遷移によりXMLデータを検索するXPath検索手段、として機能させるためのXMLデータ検索プログラム。 An XML data search program for searching XML data that matches an XPath expression of a search condition from XML data to be searched, wherein the XML data includes a set of nodes having a parent-child relationship, and the XPath expression is a context node And one or more pairs of correspondence relations with a plurality of predicates corresponding to the context node, and the XML schema prescribes the appearance order of the nodes included in the XML data. A computer comprising at least a memory as a storage area used for the above and an arithmetic processing unit that performs the arithmetic processing;
SAX event generation means for generating SAX events by sequentially scanning XML data to be searched; and automaton creation means for creating an automaton for each context node from the appearance order of nodes defined in the XPath expression and the XML schema. An XML data search program for functioning as an XPath search means for searching XML data based on the state transition of the created automaton with the SAX event as an input.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003371309A JP2005135199A (en) | 2003-10-30 | 2003-10-30 | Automaton generating method, method, device, and program for xml data retrieval, and recording medium for xml data retrieval program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003371309A JP2005135199A (en) | 2003-10-30 | 2003-10-30 | Automaton generating method, method, device, and program for xml data retrieval, and recording medium for xml data retrieval program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005135199A true JP2005135199A (en) | 2005-05-26 |
Family
ID=34648007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003371309A Pending JP2005135199A (en) | 2003-10-30 | 2003-10-30 | Automaton generating method, method, device, and program for xml data retrieval, and recording medium for xml data retrieval program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005135199A (en) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009140494A (en) * | 2007-12-03 | 2009-06-25 | Intel Corp | Method and apparatus for searching extensible markup language (xml) data |
JP2009175862A (en) * | 2008-01-22 | 2009-08-06 | Fujitsu Ltd | Retrieval method |
JP2009295013A (en) * | 2008-06-06 | 2009-12-17 | Hitachi Ltd | Method, apparatus and program for database management |
JP2010140258A (en) * | 2008-12-11 | 2010-06-24 | Fujitsu Ltd | Retrieving method and retrieving device |
JP2010211768A (en) * | 2009-03-12 | 2010-09-24 | Bank Of Tokyo-Mitsubishi Ufj Ltd | Data search device, data search method and program |
WO2010119794A1 (en) * | 2009-04-13 | 2010-10-21 | Canon Kabushiki Kaisha | Information processing apparatus and information processing method |
US9087204B2 (en) | 2012-04-10 | 2015-07-21 | Sita Information Networking Computing Ireland Limited | Airport security check system and method therefor |
US9324043B2 (en) | 2010-12-21 | 2016-04-26 | Sita N.V. | Reservation system and method |
US9460412B2 (en) | 2011-08-03 | 2016-10-04 | Sita Information Networking Computing Usa, Inc. | Item handling and tracking system and method therefor |
US9460572B2 (en) | 2013-06-14 | 2016-10-04 | Sita Information Networking Computing Ireland Limited | Portable user control system and method therefor |
US9491574B2 (en) | 2012-02-09 | 2016-11-08 | Sita Information Networking Computing Usa, Inc. | User path determining system and method therefor |
US10001546B2 (en) | 2014-12-02 | 2018-06-19 | Sita Information Networking Computing Uk Limited | Apparatus for monitoring aircraft position |
US10095486B2 (en) | 2010-02-25 | 2018-10-09 | Sita Information Networking Computing Ireland Limited | Software application development tool |
US10235641B2 (en) | 2014-02-19 | 2019-03-19 | Sita Information Networking Computing Ireland Limited | Reservation system and method therefor |
US10320908B2 (en) | 2013-03-25 | 2019-06-11 | Sita Information Networking Computing Ireland Limited | In-flight computing device for aircraft cabin crew |
-
2003
- 2003-10-30 JP JP2003371309A patent/JP2005135199A/en active Pending
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009140494A (en) * | 2007-12-03 | 2009-06-25 | Intel Corp | Method and apparatus for searching extensible markup language (xml) data |
US8341165B2 (en) | 2007-12-03 | 2012-12-25 | Intel Corporation | Method and apparatus for searching extensible markup language (XML) data |
JP2009175862A (en) * | 2008-01-22 | 2009-08-06 | Fujitsu Ltd | Retrieval method |
JP2009295013A (en) * | 2008-06-06 | 2009-12-17 | Hitachi Ltd | Method, apparatus and program for database management |
JP2010140258A (en) * | 2008-12-11 | 2010-06-24 | Fujitsu Ltd | Retrieving method and retrieving device |
JP2010211768A (en) * | 2009-03-12 | 2010-09-24 | Bank Of Tokyo-Mitsubishi Ufj Ltd | Data search device, data search method and program |
WO2010119794A1 (en) * | 2009-04-13 | 2010-10-21 | Canon Kabushiki Kaisha | Information processing apparatus and information processing method |
JP2010250449A (en) * | 2009-04-13 | 2010-11-04 | Canon Inc | Information processor and information processing method |
US10095486B2 (en) | 2010-02-25 | 2018-10-09 | Sita Information Networking Computing Ireland Limited | Software application development tool |
US9324043B2 (en) | 2010-12-21 | 2016-04-26 | Sita N.V. | Reservation system and method |
US10586180B2 (en) | 2010-12-21 | 2020-03-10 | Sita N.V. | Reservation system and method |
US10586179B2 (en) | 2010-12-21 | 2020-03-10 | Sita N.V. | Reservation system and method |
US9460412B2 (en) | 2011-08-03 | 2016-10-04 | Sita Information Networking Computing Usa, Inc. | Item handling and tracking system and method therefor |
US9491574B2 (en) | 2012-02-09 | 2016-11-08 | Sita Information Networking Computing Usa, Inc. | User path determining system and method therefor |
US10129703B2 (en) | 2012-02-09 | 2018-11-13 | Sita Information Networking Computing Usa, Inc. | User path determining system and method therefor |
US9667627B2 (en) | 2012-04-10 | 2017-05-30 | Sita Information Networking Computing Ireland Limited | Airport security check system and method therefor |
US9087204B2 (en) | 2012-04-10 | 2015-07-21 | Sita Information Networking Computing Ireland Limited | Airport security check system and method therefor |
US10320908B2 (en) | 2013-03-25 | 2019-06-11 | Sita Information Networking Computing Ireland Limited | In-flight computing device for aircraft cabin crew |
US9460572B2 (en) | 2013-06-14 | 2016-10-04 | Sita Information Networking Computing Ireland Limited | Portable user control system and method therefor |
US10235641B2 (en) | 2014-02-19 | 2019-03-19 | Sita Information Networking Computing Ireland Limited | Reservation system and method therefor |
US10001546B2 (en) | 2014-12-02 | 2018-06-19 | Sita Information Networking Computing Uk Limited | Apparatus for monitoring aircraft position |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5121146B2 (en) | Structured document management apparatus, structured document management program, and structured document management method | |
US7877366B2 (en) | Streaming XML data retrieval using XPath | |
Bikakis et al. | The XML and semantic web worlds: technologies, interoperability and integration: a survey of the state of the art | |
KR100815563B1 (en) | System and method for knowledge extension and inference service based on DBMS | |
US7941417B2 (en) | Processing structured electronic document streams using look-ahead automata | |
JP2005135199A (en) | Automaton generating method, method, device, and program for xml data retrieval, and recording medium for xml data retrieval program | |
WO2007144853A2 (en) | Method and apparatus for performing customized paring on a xml document based on application | |
US20100153331A1 (en) | System and method for managing semantic and syntactic metadata | |
CA2538626A1 (en) | Web content adaptation process and system | |
JP2005063432A (en) | Multimedia object retrieval apparatus and multimedia object retrieval method | |
JP2005234837A (en) | Structured document processing method, structured document processing system and its program | |
Lisena et al. | Transforming the JSON output of SPARQL queries for linked data clients | |
JP2003256455A (en) | Xml document storage/retrieval device, xml document storage/retrieval method used in it, and program for it | |
JP3832693B2 (en) | Structured document search and display method and apparatus | |
JP2007011998A (en) | Xpath expression processing method, xpath expression processor, xpath expression processing program, storage medium storing the program, and automaton | |
KR101221306B1 (en) | Method and system for navigation of a data structure | |
Liu et al. | An XML-enabled data extraction toolkit for web sources | |
US20090307187A1 (en) | Tree automata based methods for obtaining answers to queries of semi-structured data stored in a database environment | |
JP2010250449A (en) | Information processor and information processing method | |
JP2006127235A (en) | Structured document management system, structured document management method and program | |
CN112783836A (en) | Information exchange method, device and computer storage medium | |
JP4649339B2 (en) | XPath processing apparatus, XPath processing method, XPath processing program, and storage medium | |
Deshmukh et al. | An Empirical Study: XML Parsing using Various Data Structures | |
Chou et al. | A syntactic approach to twig-query matching on XML streams | |
JP2007249724A (en) | Xpath expression processor, xpath expression processing method and xpath expression processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060404 |
|
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: 20090508 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090520 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090508 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090728 |