JP2013246522A - Structured document retrieval device and program - Google Patents

Structured document retrieval device and program Download PDF

Info

Publication number
JP2013246522A
JP2013246522A JP2012117985A JP2012117985A JP2013246522A JP 2013246522 A JP2013246522 A JP 2013246522A JP 2012117985 A JP2012117985 A JP 2012117985A JP 2012117985 A JP2012117985 A JP 2012117985A JP 2013246522 A JP2013246522 A JP 2013246522A
Authority
JP
Japan
Prior art keywords
dag
path
dom
cpu
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
Application number
JP2012117985A
Other languages
Japanese (ja)
Inventor
Kaname Kojima
要 小島
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012117985A priority Critical patent/JP2013246522A/en
Priority to CN2013100571978A priority patent/CN103425719A/en
Publication of JP2013246522A publication Critical patent/JP2013246522A/en
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To enable a structure retrieval by combining both of structure information by an XML (Extensible Markup Language) and structure information by annotation tags.SOLUTION: The structured document retrieval device according to the present invention includes: a processor for executing a program; a first storage area for storing the program; a second storage area for storing structured documents satisfying tree structure conditions and annotation data attached to the documents; a document structure list construction unit that allocates a text of a structured document to a structure in which root elements of DOM (Document Object Model) tree are made common, the structure being individually obtained from an inclusion relation of tags of the structured document and an inclusion relation of tags of the annotation data, and that generates a text common DOM tree; and a retrieval processing unit for retrieving an element matching a retrieval query from the text common DOM tree.

Description

本発明は、構造化言語で記述された文書(以下、「構造化文書」という。)および任意の形式でアノテーションデータが付与された構造化文書を、タグの構造及び/又は文字列データに基づいて検索する構造化文書検索装置及びその機能をコンピュータを通じて実現するプログラムに関する。   According to the present invention, a document described in a structured language (hereinafter referred to as “structured document”) and a structured document to which annotation data is assigned in an arbitrary format are based on the tag structure and / or character string data. In particular, the present invention relates to a structured document search apparatus for searching and a program for realizing the function thereof through a computer.

XML(Extensible Markup Language)は、テキストに対して構造情報の記述を可能とするデータフォーマットであり、タグと呼ばれる「<」、「>」で囲まれた文字列により、テキスト内への構造情報の記述を可能にする。XMLは、タグを入れ子状に記述することにより階層状の木構造を表現でき、タグの追加・削除により階層状の木構造を変更することができる。このため、XMLは、財務情報の記録、特許明細書の記録、電子商取引におけるデータ交換、ソフトウェアのファイル形式のフォーマットとして広く使用されている。以下、XMLを用いて記述した文書をXML文書という。XML文書では、構造とテキストの双方を検索条件に用いる検索が可能である。XML文書の検索クエリ方式には、W3C勧告のXPath等がある。   XML (Extensible Markup Language) is a data format that makes it possible to describe structural information for text. By using character strings enclosed in "<" and ">" called tags, Enable description. XML can express a hierarchical tree structure by nesting tags, and can change the hierarchical tree structure by adding / deleting tags. For this reason, XML is widely used as a format for recording financial information, recording patent specifications, exchanging data in electronic commerce, and a software file format. Hereinafter, a document described using XML is referred to as an XML document. An XML document can be searched using both the structure and text as search conditions. The search query method of the XML document includes the XPath of W3C recommendation.

一方、一般的なテキストデータに対し、アノテーションを付与するための技術の一つに、UIMA(Unstructured Information Management Architecture)がある。UIMAは、構造化されていない文書等のデータを管理するために用いられる技術であり、文書へのアノテーションタグの付与を可能とするプラットフォームを提供する。UIMAは、XMLとは異なり、木構造条件を満たす形式でタグを付ける必要がない。このため、UIMAは、計算機により得られた文法構造の解析結果、文書中の技術的に重要な部分などへのマーキングのように、必ずしも構造間に木構造関係を満たす必要がない文書構造情報の保存に利用されている。   On the other hand, UIMA (Unstructured Information Management Architecture) is one of techniques for giving annotations to general text data. UIMA is a technique used to manage data such as unstructured documents, and provides a platform that allows annotation tags to be attached to documents. Unlike XML, UIMA does not need to be tagged in a format that satisfies the tree structure condition. For this reason, UIMA does not need to satisfy the tree structure relationship between the structures, such as the analysis of the grammatical structure obtained by the computer and the marking on technically important parts in the document. Used for storage.

米国特許出願公開第2004/0243560号明細書US Patent Application Publication No. 2004/0243560

清水敏之、鬼塚真、江田毅晴、吉川正俊、XMLデータの管理とストリーム処理に関する技術、電子情報通信学会論文誌D J90−D(2):159−184、2007Toshiyuki Shimizu, Makoto Onizuka, Masaharu Eda, Masatoshi Yoshikawa, Technology on XML Data Management and Stream Processing, IEICE Transactions J J90-D (2): 159-184, 2007 G.Navarro and V.Makinen、Compressed full-text indexes、 ACM Computing Surveys 39(1)、2007.G. Navarro and V. Makinen, Compressed full-text indexes, ACM Computing Surveys 39 (1), 2007.

ところで、構造間に木構造関係を満たす保証のない文書構造情報は、今後ますます増加すると予想される。このため、木構造関係に縛られることなく、構造条件とテキスト条件による検索を可能とする技術が求められている。   By the way, it is expected that document structure information that does not guarantee a tree structure relationship between structures will increase in the future. For this reason, there is a need for a technique that enables a search based on a structural condition and a text condition without being bound by a tree structure relationship.

しかし、計算機による自動抽出により得られる結果(例えば文法構造の解析結果、テキストの意味情報(例えば重要技術・効果など)に基づく文書構造の解析結果)や人手によるマーキングの結果は、その構造情報が木構造条件を満たすとは限らない。このため、木構造条件を満たさない構造情報を含む文書に対しては、既存のXML検索手法を利用することができなかった。   However, results obtained by automatic extraction by a computer (for example, grammatical structure analysis results, document structure analysis results based on text semantic information (for example, important technologies / effects)) and manual marking results include the structure information. It does not necessarily satisfy the tree structure condition. For this reason, the existing XML search method cannot be used for a document including structural information that does not satisfy the tree structure condition.

以上の理由により、構造上の制約がないタグ情報の検索には、UIMAにより用意される検索機能が用いられている(特許文献1)。しかし、この検索方式では、タグの包含関係による階層的構造が考えられていない。従って、UIMAの用意する検索機能では、検索クエリとして指定されたテキストが、各タグに含まれるか否かを検証するブーリアン検索しか実行されていない。   For the above reasons, a search function prepared by UIMA is used for searching tag information without any structural restrictions (Patent Document 1). However, this search method does not consider a hierarchical structure based on the inclusion relationship of tags. Therefore, in the search function prepared by UIMA, only a Boolean search for verifying whether or not the text specified as the search query is included in each tag is executed.

結局、XML文書について用意された既存の検索機能やUIMAにより用意された既存の検索機能では、アノテーション付きのXML文書について、XMLによる構造条件とアノテーションによる構造条件の双方を考慮した検索を実行することができなかった。   Eventually, with the existing search function prepared for XML documents and the existing search function prepared by UIMA, for an annotated XML document, a search is performed in consideration of both the structural condition by XML and the structural condition by annotation. I could not.

本発明は、前述した問題点を考慮し、タグの構造が木構造条件を満たす構造化文書と、当該文書に対応付けられた任意のアノテーションの構造情報とで形成される構造が木構造条件を満たさない場合でも、構造条件とテキストの双方を考慮した検索を可能にする。   In the present invention, in consideration of the above-described problems, a structure formed by a structured document whose tag structure satisfies the tree structure condition and structure information of an arbitrary annotation associated with the document satisfies the tree structure condition. Even if it is not satisfied, it is possible to search in consideration of both structural conditions and text.

本明細書は、上記課題を解決する発明を複数含んでいる。その一例である発明は、プログラムを実行するプロセッサと、プログラムを格納する第1の記憶領域と、木構造条件を満たす構造化文書及び当該文書に付されたアノテーションデータを記憶する第2の記憶領域と、構造化文書のタグの包含関係とアノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、構造化文書のテキストを割り当ててテキスト共有DOM木を生成する文書構造リスト構築部と、検索クエリとして与えられたロケーションパスに合致する要素を、テキスト共有DOM木から検索する検索処理部とを有する。   This specification includes a plurality of inventions that solve the above-described problems. The invention as an example includes a processor that executes a program, a first storage area that stores the program, a structured document that satisfies the tree structure condition, and a second storage area that stores annotation data attached to the document In addition, the text of the structured document is assigned to the structure in which the root element of the DOM (Document Object Model) tree obtained individually from the inclusion relation of the tags of the structured document and the annotation data is included. A document structure list construction unit that generates a shared DOM tree, and a search processing unit that searches the text shared DOM tree for an element that matches a location path given as a search query.

本発明によれば、任意の形式で付与されたアノテーションを含む構造情報とテキストの双方による検索を実現することができる。前述した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。   According to the present invention, it is possible to realize a search based on both structure information including an annotation given in an arbitrary format and text. Problems, configurations, and effects other than those described above will become apparent from the following description of embodiments.

構造化文書検索装置の構成例を示す図(第1の実施例)。1 is a diagram illustrating a configuration example of a structured document search device (first embodiment). FIG. 主記憶装置に記憶するプログラム及びデータの一例を示す図(第1の実施例)。The figure which shows an example of the program and data which are memorize | stored in a main memory (1st Example). アノテーショングループの一例を説明する図(各実施例共通)。The figure explaining an example of an annotation group (common to each Example). テキスト共有DOM木の一例を示す図(各実施例共通)。The figure which shows an example of a text sharing DOM tree (common to each Example). 構造化文書検索装置の前処理の流れを説明する図(第1の実施例)。The figure explaining the flow of the pre-processing of a structured document search device (1st Example). DOM木構築部の処理例を示すフローチャート(第1の実施例)。The flowchart which shows the process example of a DOM tree construction part (1st Example). 文書構造リスト構築部の処理例を示すフローチャート(第1の実施例)。The flowchart which shows the process example of a document structure list construction part (1st Example). 親子関係解析・登録部の処理例を示すフローチャート(第1の実施例)。The flowchart which shows the process example of a parent-child relationship analysis / registration part (1st Example). 構造化文書検索装置による検索処理の流れを説明する図(第1の実施例)。The figure explaining the flow of the search process by a structured document search device (1st Example). DOM DAGの一例を示す図(第2の実施例)。The figure which shows an example of DOM DAG (2nd Example). 2つのDOM DAGを統合したパスDAGと転置インデクスの一例を説明する図(第2の実施例)。The figure explaining an example of the path | pass DAG which integrated two DOM DAG, and a transposition index (2nd Example). 転置インデクス構築部の処理例を示すフローチャート(第3の実施例)。The flowchart which shows the process example of the transposition index construction part (3rd Example). 深さ割当部の処理例を示すフローチャート(第3の実施例)。The flowchart which shows the process example of a depth allocation part (3rd Example). パスDAG ID取得部の処理例を示すフローチャート(第3の実施例)。The flowchart which shows the process example of the path | pass DAG ID acquisition part (3rd Example). パスDAG要素生成・登録部を示すフローチャート(第3の実施例)。12 is a flowchart illustrating a path DAG element generation / registration unit (third embodiment). 転置インデクス登録部の処理例を示すフローチャート(第3の実施例)。The flowchart which shows the process example of a transposition index registration part (3rd Example). DOM DAGの記録例を説明する図(第4の実施例)。The figure explaining the example of a recording of DOM DAG (4th Example). 検索インデクスの概要を示す図(第4の実施例)。The figure which shows the outline | summary of a search index (4th Example). 検索インデクス構築部の処理例を示すフローチャート(第4の実施例)。The flowchart which shows the process example of a search index construction part (4th Example). 検索インデクス登録部の処理例を示すフローチャート(第4の実施例)。The flowchart which shows the process example of a search index registration part (4th Example). パスDAG ID登録部の処理例を示すフローチャート(第4の実施例)。The flowchart which shows the process example of the path | pass DAG ID registration part (4th Example). ロケーションパス検索部の処理例を示すフローチャート(第4の実施例)。The flowchart which shows the process example of a location path search part (4th Example). XML要素検索部の処理例を示すフローチャート(第4の実施例)。The flowchart which shows the process example of an XML element search part (4th Example). アノテーション要素検索部の処理例を示すフローチャート(第4の実施例)。The flowchart which shows the process example of an annotation element search part (4th Example). 拡張ウェーブレット木の概要を示す図(第6の実施例)。The figure which shows the outline | summary of an extended wavelet tree (6th Example). 拡張ウェーブレット木構築部の処理例を示すフローチャート(第6の実施例)。The flowchart which shows the process example of an extended wavelet tree construction part (6th Example). rank計算部の処理例を示すフローチャート(第6の実施例)。The flowchart which shows the process example of a rank calculation part (6th Example). select計算部の処理例を示すフローチャート(第6の実施例)。The flowchart which shows the process example of a select calculation part (6th Example).

以下、添付図面に基づいて、本発明の実施例を説明する。なお、本発明は、後述する実施例に限定されるものではなく、その技術思想の範囲において、種々の変形が可能である。   Embodiments of the present invention will be described below with reference to the accompanying drawings. In addition, this invention is not limited to the Example mentioned later, A various deformation | transformation is possible in the range of the technical thought.

[第1の実施例]
[概要]
本実施例では、XML文書の集合とアノテーションデータの集合を前処理して検索用データを予め作成し、この検索用データと検索クエリとの照合により、検索クエリに合致する要素を探索結果として出力する構造化文書検索装置について説明する。本実施例では、検索用データとして、XMLタグとアノテーションタグの構造情報を統合したテキスト共有DOM木を使用する。
[First embodiment]
[Overview]
In this embodiment, a set of XML documents and a set of annotation data are pre-processed to create search data in advance, and an element that matches the search query is output as a search result by matching the search data with the search query. A structured document search apparatus will be described. In this embodiment, a text sharing DOM tree in which structural information of XML tags and annotation tags is integrated is used as search data.

[装置構成]
図1−1は、構造化文書検索装置400の構成例を示す。構造化文書検索装置400は、CPU(Central Processing Unit)401、主記憶装置(メモリ)402、補助記憶装置403A、ユーザインタフェース部406を有する計算機として構成される。この構造化文書検索装置400は、LAN(Local Area Network)等のネットワーク405を介して外部のネットワーク装置に接続されている。
[Device configuration]
FIG. 1-1 shows a configuration example of the structured document search apparatus 400. The structured document search device 400 is configured as a computer having a CPU (Central Processing Unit) 401, a main storage device (memory) 402, an auxiliary storage device 403A, and a user interface unit 406. The structured document search apparatus 400 is connected to an external network apparatus via a network 405 such as a LAN (Local Area Network).

CPU401は、主記憶装置402に格納されたプログラムを実行する中央演算装置である。図1−2に、主記憶装置402に格納されるプログラムを通じて実現される機能部とデータの一例を示す。なお、図1−2には、実施例1で使用するプログラムを通じて実現される機能部だけでなく、他の実施例で使用するプログラムにより実現される機能部や、各実施例で使用するデータについても表している。例えば、CPU401は、プログラムの実行により、XML文書からDOM木を構築するDOM木構築部409、アノテーションデータからDOM木を構築するDOM木構築部410、文書構造リスト構築部411、テキスト共有DOM木構築部415、テキストデータ・テキスト要素リスト構築部417、テキスト割当部418、親子関係解析・登録部419、ロケーションパス検索部420、DOM DAG構築部422、転置インデクス構築部424、深さ割当部427、パスDAG ID取得部428、パスDAG要素生成・登録部429、パスDAG ID登録部439、検索インデクス登録部440、XML要素検索部443、アノテーション要素検索部444、拡張ウェーブレット木構築部451、検索インデクス構築部454、簡易ビットベクトル・ウェーブレット木構築部455として機能する。   The CPU 401 is a central processing unit that executes a program stored in the main storage device 402. FIG. 1-2 shows an example of functional units and data realized through a program stored in the main storage device 402. In FIG. 1-2, not only the functional unit realized through the program used in the first embodiment, but also the functional unit realized by the program used in the other examples and the data used in each example. Also represents. For example, the CPU 401 executes a program to construct a DOM tree construction unit 409 that constructs a DOM tree from an XML document, a DOM tree construction unit 410 that constructs a DOM tree from annotation data, a document structure list construction unit 411, and a text sharing DOM tree construction. Unit 415, text data / text element list construction unit 417, text assignment unit 418, parent-child relationship analysis / registration unit 419, location path search unit 420, DOM DAG construction unit 422, transposed index construction unit 424, depth assignment unit 427, Path DAG ID acquisition unit 428, path DAG element generation / registration unit 429, path DAG ID registration unit 439, search index registration unit 440, XML element search unit 443, annotation element search unit 444, extended wavelet tree construction unit 451, search index Construction unit 454 It acts as a simple bit vector wavelet tree construction unit 455.

主記憶装置402は、RAM(Random Access Memory)等の記憶装置である。主記憶装置402は、前述したプログラム及びプログラムの実行に用いるパスDAG423等を記憶する。また、主記憶装置402は、必要があれば、XML文書集合407、アノテーションデータ集合408、文書構造リスト412も一時的に記憶する。   The main storage device 402 is a storage device such as a RAM (Random Access Memory). The main storage device 402 stores the above-described program and the path DAG 423 used for executing the program. Further, if necessary, the main storage device 402 also temporarily stores an XML document set 407, an annotation data set 408, and a document structure list 412.

補助記憶装置403Aは、XML文書、アノテーションデータ、前述したプログラム等を格納するHDD等の記憶装置又は記憶媒体である。   The auxiliary storage device 403A is a storage device or storage medium such as an HDD that stores an XML document, annotation data, the above-described program, and the like.

リムーバブルメディア404は、XML文書やアノテーションデータ等を記録したCD−ROM、DVD等の記録媒体である。補助記憶装置403A及びリムーバブルメディア404に記録された各データは、構造化文書検索装置400の起動時に、必要に応じ、主記憶装置402に読み出される。   The removable medium 404 is a recording medium such as a CD-ROM or DVD that records an XML document, annotation data, or the like. Each data recorded in the auxiliary storage device 403A and the removable medium 404 is read to the main storage device 402 as necessary when the structured document search device 400 is activated.

ユーザインタフェース部406は、ユーザインタフェースを提供する入出力装置(例えば、キーボード、マウス、ディスプレイ)である。   The user interface unit 406 is an input / output device (for example, a keyboard, a mouse, a display) that provides a user interface.

CPU401は、主記憶装置402、補助記憶装置403A、リムーバブルメディア404、又は、ネットワーク405を介して接続された外部記憶装置403Bから、必要に応じ、XML文書と当該文書に付されたアノテーションデータを取得する。ここで、外部記憶装置403Bは、HDD等の記憶装置又は記憶媒体である。また、ネットワーク405は、ローカルエリアネットワークでも、インターネットでもよい。また、ネットワーク405は有線ネットワークでも無線ネットワークでもよい。CPU401は、これらの記憶装置から取得したXML文書とアノテーションデータに基づいて、検索インデクス430を作成する。作成された検索インデクス430は、主記憶装置402に記憶される。   The CPU 401 acquires an XML document and annotation data attached to the document as necessary from the main storage device 402, the auxiliary storage device 403A, the removable medium 404, or the external storage device 403B connected via the network 405. To do. Here, the external storage device 403B is a storage device such as an HDD or a storage medium. The network 405 may be a local area network or the Internet. The network 405 may be a wired network or a wireless network. The CPU 401 creates a search index 430 based on the XML document and annotation data acquired from these storage devices. The created search index 430 is stored in the main storage device 402.

前述の説明においては、XML文書とアノテーションデータは、主記憶装置402、補助記憶装置403A、リムーバブルメディア404、ネットワーク405上の外部記憶装置403Bにいずれかに格納される例を示したが、CPU401が読み書き可能な記憶装置上に格納されていればよい。例えばXML文書は補助記憶装置403Aに格納し、アノテーションデータは主記憶装置402に格納しても良い。   In the above description, an example in which the XML document and the annotation data are stored in any of the main storage device 402, the auxiliary storage device 403A, the removable medium 404, and the external storage device 403B on the network 405 has been described. It only needs to be stored on a readable / writable storage device. For example, the XML document may be stored in the auxiliary storage device 403A, and the annotation data may be stored in the main storage device 402.

CPU401は、前述した各機能部に対応するプログラムを実行し、所定の機能を実現する機能部として動作する。例えばCPU401は、文書構造構築プログラムに従って動作することにより、テキスト共有DOM木構築部415として機能する。他のプログラムについても同様である。例えばCPU401は、ロケーションパス検索プログラムに従って動作することにより、ロケーションパス検索部420として機能する。また、CPU401は、検索インデクス構築プログラムに従って動作することにより、検索インデクス構築部454として機能する。   The CPU 401 executes a program corresponding to each functional unit described above, and operates as a functional unit that realizes a predetermined function. For example, the CPU 401 functions as the text sharing DOM tree construction unit 415 by operating according to the document structure construction program. The same applies to other programs. For example, the CPU 401 functions as the location path search unit 420 by operating according to the location path search program. The CPU 401 functions as the search index construction unit 454 by operating according to the search index construction program.

ロケーションパス検索部420、DOM DAG構築部422及び検索インデクス構築部454の各機能を実現するプログラム、テーブル等の情報は、補助記憶装置403A、リムーバブルメディア404、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、又は、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。   Information such as programs and tables for realizing the functions of the location path search unit 420, the DOM DAG construction unit 422, and the search index construction unit 454 includes an auxiliary storage device 403A, a removable medium 404, a nonvolatile semiconductor memory, a hard disk drive, an SSD ( Solid State Drive) or a computer-readable non-transitory data storage medium such as an IC card, SD card, or DVD.

[アノテーションデータ]
続いて、アノテーションデータについて説明する。アノテーションは、XML文書内のテキスト領域に対して、タグを付与することで与えられる。アノテーションにより付与されるタグをアノテーションタグと呼ぶ。アノテーションタグは、互いに包含関係による構造が、木構造となるグループに事前に分けられていることを想定する。アノテーションタグのグループをアノテーショングループと呼び、各アノテーショングループには整数によるIDが割り振られる。異なるアノテーショングループに属するアノテーションタグ同士は、木構造条件を満たす必要はない。
[Annotation data]
Next, annotation data will be described. An annotation is given by adding a tag to a text area in an XML document. A tag given by annotation is called an annotation tag. It is assumed that the annotation tag has a structure based on an inclusive relationship divided in advance into a group having a tree structure. An annotation tag group is called an annotation group, and an integer ID is assigned to each annotation group. Annotation tags belonging to different annotation groups do not need to satisfy the tree structure condition.

図2は、XML文書に付与されたアノテーションとアノテーショングループの例を示す。「アノテーショングループ1」においては、文書中のテキスト「耐久性を向上」に「効果」というアノテーションタグが付与されており、テキスト「ナイフに関する」に「内容」というアノテーションタグが付与されている。これらのタグは、お互い重なることなく木構造条件を満たしている。また、「アノテーショングループ2」においては、文書中のテキスト「医療用」に「対象」というアノテーションタグが付与されており、テキスト「医療用ナイフ」に「道具」というアノテーションタグが付与されている。これらのアノテーションタグ同士は、入れ子の関係になっているので木構造条件を満たす。   FIG. 2 shows an example of annotations and annotation groups given to the XML document. In “annotation group 1”, an annotation tag “effect” is assigned to the text “improve durability” in the document, and an annotation tag “content” is assigned to the text “knife”. These tags satisfy the tree structure condition without overlapping each other. In “Annotation Group 2”, an annotation tag “target” is assigned to the text “medical” in the document, and an annotation tag “tool” is assigned to the text “medical knife”. Since these annotation tags are nested, they satisfy the tree structure condition.

一方、「アノテーショングループ1」に属するアノテーションタグである「内容」と、「アノテーショングループ2」に属するアノテーションタグである「道具」とは、タグ同士が入れ子の関係になっておらず、木構造条件を満たしていない。しかし、「内容」と「道具」は異なるアノテーショングループに属するタグ同士であるため、アノテーションデータとして問題ないものである。   On the other hand, “content” that is an annotation tag belonging to “annotation group 1” and “tool” that is an annotation tag belonging to “annotation group 2” are not nested in each other, and the tree structure condition Does not meet. However, since “content” and “tool” are tags belonging to different annotation groups, there is no problem as annotation data.

アノテーションタグは、「タグ名、アノテーショングループID、テキスト領域の開始位置、テキスト領域の終了位置」で与えられる4つの情報の組により構成される。アノテーションデータは、各アノテーションタグについて4つの情報の組が記述されたデータの集合である。アノテーションデータの一例には、各行に、各アノテーションタグのデータであるタグ名、アノテーショングループID、テキスト領域の開始位置、テキスト領域の終了位置をタブ区切りで記述したテキストデータを考えることができる。   An annotation tag is composed of a set of four pieces of information given by “tag name, annotation group ID, start position of text area, end position of text area”. The annotation data is a set of data in which a set of four information is described for each annotation tag. As an example of annotation data, text data in which a tag name, an annotation group ID, a text region start position, and a text region end position, which are data of each annotation tag, are tab-separated can be considered in each line.

[XML要素、アノテーション要素、テキスト要素]
XML要素は、各XMLタグの開始タグ、終了タグにより表された要素であり、タグ名、テキスト領域における開始タグ、終了タグの位置を持つ。アノテーション要素は、タグ名、アノテーショングループID、各アノテーションタグの開始タグ、終了タグの位置を持つ要素である。テキスト要素は、テキスト領域を表す要素であり、テキスト領域の開始位置、終了位置、テキスト領域に含まれるテキストから構成される。
[XML elements, annotation elements, text elements]
The XML element is an element represented by a start tag and an end tag of each XML tag, and has a tag name and a position of the start tag and end tag in the text area. An annotation element is an element having a tag name, an annotation group ID, a start tag of each annotation tag, and a position of an end tag. The text element is an element that represents a text area, and includes a start position and an end position of the text area, and text included in the text area.

[DOM木の要素]
DOM木を構成する要素は、タグ名、アノテーショングループID、テキスト領域開始位置、テキスト領域終了位置、深さを持つ。通常のXMLタグによる要素の場合、アノテーショングループIDを“0”とする。テキスト要素の場合、アノテーショングループIDを“−1”とし、タグ名の部分にテキストを保持する。
[DOM tree elements]
Elements constituting the DOM tree have a tag name, an annotation group ID, a text area start position, a text area end position, and a depth. In the case of an element using a normal XML tag, the annotation group ID is set to “0”. In the case of a text element, the annotation group ID is set to “−1”, and the text is held in the tag name portion.

[前処理の概要]
ここでは、構造化文書検索装置400が検索前に実行する前処理の概要について説明する。前処理は、文書構造リスト構築部411として機能するCPU401が実行する。CPU401は、前処理として、テキスト共有DOM木416を作成する。
[Overview of preprocessing]
Here, an overview of preprocessing executed by the structured document search apparatus 400 before search will be described. The pre-processing is executed by the CPU 401 functioning as the document structure list construction unit 411. The CPU 401 creates a text sharing DOM tree 416 as preprocessing.

まず、CPU401は、XML文書集合407とアノテーションデータ集合408の中から、未処理のXML文書と対応するアノテーションデータを取得する。次に、CPU401は、DOM木構築プログラムを実行し、XML文書からDOM木を構築するDOM木構築部409と、アノテーションデータからDOM木を構築するDOM木構築部410として動作する。DOM木構築部409及び410として機能するCPU401は、XML文書のDOM木とアノテーションデータの各アノテーショングループに属する要素のDOM木を作成する。   First, the CPU 401 acquires annotation data corresponding to an unprocessed XML document from the XML document set 407 and the annotation data set 408. Next, the CPU 401 executes a DOM tree construction program, and operates as a DOM tree construction unit 409 that constructs a DOM tree from an XML document, and a DOM tree construction unit 410 that constructs a DOM tree from annotation data. The CPU 401 functioning as the DOM tree construction units 409 and 410 creates a DOM tree of elements belonging to each annotation group of the DOM tree of the XML document and annotation data.

次に、CPU401は、テキスト共有DOM木構築プログラムを実行し、テキスト共有DOM木構築部415として機能する。ここで、CPU401は、同じテキストに対して形成された2つのDOM木のルート要素を共通化した構造にテキストを割り当て、テキスト共有DOM木416を作成する。各XML文書とアノテーションデータに対して構築されたテキスト共有DOM木416は、検索に用いるデータ構造として、文書構造リスト構築部411に保持される。   Next, the CPU 401 executes a text sharing DOM tree construction program and functions as the text sharing DOM tree construction unit 415. Here, the CPU 401 assigns text to a structure in which the root elements of two DOM trees formed for the same text are shared, and creates a text sharing DOM tree 416. The text sharing DOM tree 416 constructed for each XML document and annotation data is held in the document structure list construction unit 411 as a data structure used for search.

[テキスト共有DOM木]
続いて、テキスト共有DOM木416を説明する。テキスト共有DOM木416は、XMLタグに基づいて構築されたDOM木と、各アノテーショングループに属するタグに基づいて構成された1つ又は複数のDOM木から構築されるデータ構造であり、各DOM木のルート要素を共通化したデータ構造を有している。ここで、XMLタグに基づくDOM木は、DOM木構築部409として機能するCPU401が構築する。また、アノテーションタグに基づくDOM木は、DOM木構築部410として機能するCPU401が構築する。以下の説明において、単にDOM木というときは、XMLタグに基づいて構築されたDOM木又はアノテーションタグに基づいて構築されたDOM木をいう。
[Text sharing DOM tree]
Next, the text sharing DOM tree 416 will be described. The text sharing DOM tree 416 is a data structure constructed from a DOM tree constructed based on XML tags and one or a plurality of DOM trees constructed based on tags belonging to each annotation group. It has a data structure that shares the root elements of. Here, the DOM tree based on the XML tag is constructed by the CPU 401 functioning as the DOM tree construction unit 409. The DOM tree based on the annotation tag is constructed by the CPU 401 functioning as the DOM tree construction unit 410. In the following description, the term “DOM tree” means a DOM tree constructed based on an XML tag or a DOM tree constructed based on an annotation tag.

XML文書を構成するテキストは、XMLタグ及びアノテーションタグで区切られており、区切られたテキスト領域ごとにテキスト要素が構成される。各DOM木において、テキスト要素は、包含される要素のうち、ルート要素から最も深い位置の要素に割り当てられる。各テキスト領域は、単一のDOM木でなく、複数のDOM木に割り当てられる可能性がある。   The text composing the XML document is delimited by an XML tag and an annotation tag, and a text element is formed for each delimited text area. In each DOM tree, the text element is assigned to the element deepest from the root element among the included elements. Each text region may be assigned to multiple DOM trees instead of a single DOM tree.

図3は、XMLタグ<p>、<mtd>、<fx>、<val>、<attr>と、同一のアノテーションIDに属するタグ[A]と[T]でタグ付けした下記の文章から作成したテキスト共有DOM木の例を示している。
(タグ付け前の文章)
「本発明では、粉末コークスを用いることで、粗鋼を生産し、2倍の効率化を達成した。」
(タグ付け後の文章)
「<p>本発明では、[A]<mtd>粉末コークスを用いる</mtd>ことで、<fx>[T]<obj>粗鋼</obj>を生産[/T][/A]し、<val>2倍</val>の<atr>効率化</attr>を達成</fx>した。</p>」
図3に示すように、テキスト共有DOM木のルート要素には、XMLタグの<p>とアノテーションタグの[A]にエッジが接続されている。すなわち、テキスト共有DOM木は、XMLタグによるDOM木と、同一のアノテーショングループに属するアノテーションタグによるDOM木のルート要素を共通化した構造を有している。また、テキストは、XMLタグ、アノテーションタグに関わらず分割され、XMLタグ、アノテーションタグの場合に分け、テキスト領域の包含関係に基づいて、包含関係がある最も深い位置の要素に割り当てられる。例えば図3の例の場合、テキスト「粗鋼」は、XMLタグ<obj>とアノテーションタグ[T]の両方に割り当てられている。
Figure 3 is created from the following sentences tagged with XML tags <p>, <mtd>, <fx>, <val>, <attr> and tags [A] and [T] belonging to the same annotation ID An example of a text sharing DOM tree is shown.
(Sentence before tagging)
“In the present invention, by using powdered coke, crude steel was produced and the efficiency was doubled.”
(Text after tagging)
“<P> In the present invention, [A] <mtd></mtd> using powder coke is used to produce <fx> [T] <obj> crude steel </ obj> [/ T] [/ A]. <Val> 2 times </ val><atr> Efficient </ attr></fx> was achieved. </ P>
As shown in FIG. 3, an edge is connected to <p> of the XML tag and [A] of the annotation tag in the root element of the text sharing DOM tree. In other words, the text sharing DOM tree has a structure in which the root element of the DOM tree by the XML tag and the DOM tree by the annotation tag belonging to the same annotation group are shared. The text is divided regardless of the XML tag and the annotation tag, and is divided into the case of the XML tag and the annotation tag, and is assigned to the element at the deepest position having the inclusion relation based on the inclusion relation of the text region. For example, in the example of FIG. 3, the text “crude steel” is assigned to both the XML tag <obj> and the annotation tag [T].

[前処理の詳細処理]
図4に、前処理に関連して実行されるデータの流れを示す。前処理の開始は、ユーザインタフェース406を通じ、CPU401に与えられる(ステップS301)。また、CPU401は、XML文書集合407とアノテーションデータ集合408を補助記憶装置403Aから入力する(ステップS302)。なお、入力されたXML文書集合407とアノテーションデータ集合408は、作業領域としての主記憶装置402に格納される。
[Detailed preprocessing]
FIG. 4 shows the flow of data executed in connection with the preprocessing. The start of preprocessing is given to the CPU 401 through the user interface 406 (step S301). Further, the CPU 401 inputs the XML document set 407 and the annotation data set 408 from the auxiliary storage device 403A (step S302). The input XML document set 407 and annotation data set 408 are stored in the main storage device 402 as a work area.

この段階で、CPU401は、テキスト共有DOM木構築部415としての分析処理を実行し、文書構造リスト412を構築する(ステップS303)。   At this stage, the CPU 401 executes analysis processing as the text sharing DOM tree construction unit 415 and constructs the document structure list 412 (step S303).

CPU401(テキスト共有DOM木構築部415)は、XML文書集合407の要素としてのXML文書と、XML文書に対応したアノテーションデータ集合408の要素としてのアノテーションデータ408とに基づいてテキスト共有DOM木416を生成する。CPU401(テキスト共有DOM木構築部415)が実行する前処理の詳細については後述する。前処理が終了すると、CPU401は、生成されたテキスト共有DOM木416を文書構造リスト412として、補助記憶装置403Aに出力する(ステップS304)。   The CPU 401 (text sharing DOM tree construction unit 415) generates the text sharing DOM tree 416 based on the XML document as an element of the XML document set 407 and the annotation data 408 as an element of the annotation data set 408 corresponding to the XML document. Generate. Details of the preprocessing executed by the CPU 401 (text sharing DOM tree construction unit 415) will be described later. When the preprocessing ends, the CPU 401 outputs the generated text sharing DOM tree 416 as the document structure list 412 to the auxiliary storage device 403A (step S304).

[アノテーションデータ用のDOM木構築部410]
図5は、アノテーションデータからDOM木を構築するDOM木構築部410として機能するCPU401の処理動作例を示すフローチャートである。
[DOM tree construction unit 410 for annotation data]
FIG. 5 is a flowchart illustrating a processing operation example of the CPU 401 functioning as the DOM tree construction unit 410 that constructs the DOM tree from the annotation data.

CPU401(DOM木構築部410)は、入力されたアノテーションデータのファイルを読み込み、「タグ名、アノテーショングループID、テキスト領域開始位置、テキスト領域終了位置」の4組データの集合ASを用意する(ステップS401)。CPU401は、集合ASのうち最大のアノテーショングループIDを“g”にセットする(ステップS402)。次に、CPU401は、変数iに“1”をセットする(ステップS403)。次に、CPU401は、変数iが“g”以下か判定し、変数iが“g”より大きくなるまで、後述するステップS405〜S413を繰り返す(ステップS404)。   The CPU 401 (DOM tree construction unit 410) reads the input annotation data file, and prepares a set AS of four sets of data “tag name, annotation group ID, text region start position, text region end position” (step). S401). The CPU 401 sets the largest annotation group ID in the set AS to “g” (step S402). Next, the CPU 401 sets “1” to the variable i (step S403). Next, the CPU 401 determines whether or not the variable i is “g” or less, and repeats steps S405 to S413 described later until the variable i becomes larger than “g” (step S404).

ステップS404で肯定結果が得られた場合、CPU401は、集合ASよりアノテーショングループIDが変数iとなる要素のリストをALに設定する(ステップS405)。次に、CPU401は、リストALの要素をテキスト領域開始位置の昇順にソートし、テキスト領域開始位置が同じものについては、テキスト領域の終了位置の降順にソートする(ステップS406)。   If an affirmative result is obtained in step S404, the CPU 401 sets the list of elements whose annotation group ID is the variable i from the set AS to AL (step S405). Next, the CPU 401 sorts the elements of the list AL in ascending order of the text area start position, and sorts elements having the same text area start position in descending order of the end position of the text area (step S406).

続いて、CPU401は、ルート要素のみからなるDOM木ATを用意し、ルート要素をvとする(ステップS407)。ここで、CPU401は、変数jに1をセットする(ステップS408)。次に、CPU401は、変数jがリストALの長さ(要素数)を越えるまで、後述するステップS410〜S412を繰り返し(ステップS409)、繰り返し終了後、変数iに“1”を加算してステップS404に戻る(ステップS413)。   Subsequently, the CPU 401 prepares a DOM tree AT including only root elements, and sets the root element to v (step S407). Here, the CPU 401 sets 1 to the variable j (step S408). Next, the CPU 401 repeats steps S410 to S412 described later until the variable j exceeds the length (number of elements) of the list AL (step S409). After the repetition is completed, “1” is added to the variable i and the step is repeated. The process returns to S404 (step S413).

先のステップS409で肯定結果が得られた場合、CPU401は、リストALのj番目の要素のテキスト領域(テキスト領域開始位置とテキスト領域終了位置で与えられる領域)が、ルート要素vにあるテキスト領域(テキスト領域開始位置とテキスト領域終了位置で与えられる領域)に含まれるまで、ルート要素vの親要素をvにセットする処理を繰り返す(ステップS410)。   When a positive result is obtained in the previous step S409, the CPU 401 determines that the text area of the jth element of the list AL (the area given by the text area start position and the text area end position) is in the root element v. The process of setting the parent element of the root element v to v is repeated until it is included in (text area start position and text area end position) (step S410).

この後、CPU401は、リストALのj番目の要素のタグ名、アノテーショングループID、テキスト領域開始位置、テキスト領域終了位置を有するDOM木の要素を作成し、ルート要素vの子要素としてDOM木ATに加える(ステップS411)。この後、CPU401は、変数jに“1”を加算し、ステップS409に戻る(ステップS412)。   Thereafter, the CPU 401 creates a DOM tree element having a tag name, an annotation group ID, a text area start position, and a text area end position of the jth element of the list AL, and uses the DOM tree AT as a child element of the root element v. (Step S411). Thereafter, the CPU 401 adds “1” to the variable j and returns to step S409 (step S412).

CPU401は、各アノテーショングループについて、テキスト領域の開始位置と終了位置に基づいて要素を事前にソートし、その後、前述した方法を適用することにより、アノテーションデータのDOM木を構築する。また、DOM木は順序木となっているが、前述した方法で要素を加えることにより、兄弟要素同士は、テキスト領域の開始位置で昇順にソートされた状態となる。   For each annotation group, the CPU 401 sorts the elements in advance based on the start position and end position of the text area, and then constructs a DOM tree of annotation data by applying the method described above. Although the DOM tree is an ordered tree, sibling elements are sorted in ascending order at the start position of the text area by adding elements by the method described above.

[XML文書用のDOM木構築部409]
前述したように、CPU401は、XML文書からDOM木を構築するDOM木構築部409としても機能する。DOM木構築部409としてのCPU401は、入力されたXML文書に付与されたタグの包含関係を分析し、DOM木を構築する。XML文書のDOM木は、非特許文献1に記載の方法により構築することができる。構築されたDOM木は、各タグに対応するテキスト領域の開始位置、終了位置の情報は含まない。
[DOM tree construction unit 409 for XML document]
As described above, the CPU 401 also functions as the DOM tree construction unit 409 that constructs a DOM tree from an XML document. The CPU 401 serving as the DOM tree construction unit 409 analyzes the inclusion relationship of the tags attached to the input XML document and constructs a DOM tree. The DOM tree of the XML document can be constructed by the method described in Non-Patent Document 1. The constructed DOM tree does not include information on the start position and end position of the text area corresponding to each tag.

本実施例では、CPU401が、XML文書について構築されたDOM木に割り当てられたテキスト要素について、テキスト領域における開始位置及び終了位置を計算する。次に、CPU401は、計算された位置情報を各要素に付与しながらテキスト要素を削除し、テキスト要素が保持する文字列をつなげたテキストを作成する。   In the present embodiment, the CPU 401 calculates the start position and the end position in the text area for the text element assigned to the DOM tree constructed for the XML document. Next, the CPU 401 deletes the text element while giving the calculated position information to each element, and creates a text in which character strings held by the text element are connected.

ここでは、“t”を空のテキストとする。CPU401は、構築されたDOM木をルート要素から走査しながら、テキスト要素に対応するテキストの長さを記録し、前順に開始位置、後順に終了位置を記録する。各テキスト要素を走査した後、CPU401は、テキスト要素を削除し、テキスト“t”に対し、削除されたテキスト要素が保持する文字列を加える。最後に、CPU401は、構築されたDOM木とテキストtを出力し、一連の処理を終了する。   Here, “t” is an empty text. The CPU 401 scans the constructed DOM tree from the root element, records the text length corresponding to the text element, and records the start position in the front order and the end position in the back order. After scanning each text element, the CPU 401 deletes the text element and adds a character string held by the deleted text element to the text “t”. Finally, the CPU 401 outputs the constructed DOM tree and text t, and ends a series of processing.

[文書構造リスト構築部411]
図6は、文書構造リスト構築部411として機能するCPU401により実行される処理の一例を示すフローチャートである。
[Document Structure List Building Unit 411]
FIG. 6 is a flowchart illustrating an example of processing executed by the CPU 401 functioning as the document structure list construction unit 411.

まず、CPU401は、XML文書集合407とアノテーションデータ集合408を入力とする(ステップS501)。次に、CPU401は、文書構造リスト412を空のリストに初期化する(ステップS502)。その後、CPU401は、変数iに“1”をセットする(ステップS503)。次に、CPU401は、テキストデータリストを空に初期化する(ステップS504)。   First, the CPU 401 inputs an XML document set 407 and an annotation data set 408 (step S501). Next, the CPU 401 initializes the document structure list 412 to an empty list (step S502). Thereafter, the CPU 401 sets “1” in the variable i (step S503). Next, the CPU 401 initializes the text data list to be empty (step S504).

この後、CPU401は、XML文書集合407とアノテーションデータ集合408に含まれる、XML文書とアノテーションデータの全てのペアを処理したか否かを判定する(ステップS505)。この判定処理で肯定結果が得られるまで、CPU401は、後述するステップS506〜S510の処理を繰り返し実行する。   Thereafter, the CPU 401 determines whether or not all the pairs of XML documents and annotation data included in the XML document set 407 and the annotation data set 408 have been processed (step S505). Until a positive result is obtained in this determination process, the CPU 401 repeatedly executes processes in steps S506 to S510 described later.

ステップS505で否定結果が得られた場合、CPU401は、未処理のXML文書とアノテーションデータのペアを読み込む(ステップS506)。次に、CPU401は、XML文書用のDOM木構築部409とアノテーションデータ用のDOM木構築部410として機能し、それぞれ対応するDOM木を作成する(ステップS507)。   If a negative result is obtained in step S505, the CPU 401 reads an unprocessed XML document and annotation data pair (step S506). Next, the CPU 401 functions as a DOM tree construction unit 409 for XML documents and a DOM tree construction unit 410 for annotation data, and creates corresponding DOM trees (step S507).

この後、CPU401は、XML文書から得られたDOM木と各アノテーショングループに属するタグから得られたDOM木を入力すると、後述するテキスト共有DOM木構築部415として機能してテキスト共有DOM木416を作成し、作成されたテキスト共有DOM木416を構成する要素のリストNを得る(ステップS508)。次に、CPU401は、リストNを、文書構造リスト(テキスト共有DOM木リスト)412に追加する(ステップS509)。   Thereafter, when the CPU 401 inputs the DOM tree obtained from the XML document and the DOM tree obtained from the tag belonging to each annotation group, the CPU 401 functions as a text sharing DOM tree construction unit 415 to be described later, and the text sharing DOM tree 416 is displayed. A list N of elements constituting the created text sharing DOM tree 416 is obtained (step S508). Next, the CPU 401 adds the list N to the document structure list (text sharing DOM tree list) 412 (step S509).

次に、CPU401は、読み込んだXML文書及びアノテーションデータを処理済としてステップS505に戻る(ステップS510)。   Next, the CPU 401 determines that the read XML document and annotation data have been processed, and returns to step S505 (step S510).

[テキスト共有DOM木構築部415]
テキスト共有DOM木構築部415として機能するCPU401は、XML要素によるDOM木と、XML文書内のテキスト及び各アノテーショングループの要素からなるDOM木を入力する。ここで、CPU401は、各DOM木のルート要素以外の要素のリストNを用意する。
[Text sharing DOM tree construction unit 415]
The CPU 401 functioning as the text sharing DOM tree construction unit 415 inputs a DOM tree made up of XML elements, and a DOM tree made up of text in the XML document and elements of each annotation group. Here, the CPU 401 prepares a list N of elements other than the root element of each DOM tree.

CPU401は、リストNとXML文書内のテキストを、テキストデータ・テキスト要素リスト構築部417に入力し、テキストデータリスト414とテキスト要素リスト413を更新する。   The CPU 401 inputs the text in the list N and the XML document to the text data / text element list construction unit 417 and updates the text data list 414 and the text element list 413.

この後、CPU401は、テキスト要素リスト413と、XML要素と、各アノテーショングループの要素からなるDOM木を入力する。テキスト割当部418として機能するCPU401は、テキスト要素を子要素として各要素に割り当てる。CPU401は、テキスト要素リスト413の各要素をリストNに加える。また、CPU401は、各DOM木のルート要素を1つに共通化し、共通化したルート要素をリストNの先頭に加える。最後に、CPU401は、リストNを出力し、テキスト共有DOM木の作成処理を終了する。   Thereafter, the CPU 401 inputs a DOM tree including a text element list 413, XML elements, and elements of each annotation group. The CPU 401 functioning as the text assignment unit 418 assigns the text element to each element as a child element. The CPU 401 adds each element of the text element list 413 to the list N. Further, the CPU 401 shares the root element of each DOM tree into one, and adds the common root element to the top of the list N. Finally, the CPU 401 outputs the list N and ends the text sharing DOM tree creation process.

[テキストデータ・テキスト要素リスト構築部417]
テキストデータ・テキスト要素リスト構築部417として機能するCPU401は、リストNとテキストtとを入力する。CPU401は、リストN内の各要素のテキスト領域の開始位置、終了位置を取り出し、昇順にソートした数値からなるリストをSとする。CPU401は、リストS内で数値が重複している部分を除去する。リストSの先頭の値が0でない場合、CPU401は、先頭に0を追加する。また、リストSの最後尾の値がテキストtと同じ場合、CPU401は、最後尾の値を削除する。CPU401は、テキストtとリストSをテキストデータとして、テキストデータリスト414の最後尾に追加する。
[Text Data / Text Element List Building Unit 417]
The CPU 401 functioning as the text data / text element list construction unit 417 inputs the list N and the text t. The CPU 401 takes out the start position and end position of the text area of each element in the list N, and designates a list composed of numerical values sorted in ascending order as S. The CPU 401 removes the portion where the numerical value is duplicated in the list S. When the top value of the list S is not 0, the CPU 401 adds 0 to the top. If the last value in the list S is the same as the text t, the CPU 401 deletes the last value. The CPU 401 adds the text t and the list S as text data to the end of the text data list 414.

CPU401は、テキスト要素リスト413を空に初期化する。リストSの各値は、テキスト領域の開始位置、終了位置を与えている。従って、CPU401は、リストSの先頭の要素から順番に、テキスト領域の開始位置を現在見ている要素の値、終了位置を次の要素の値、タグ名を#として、DOM DAG421の要素を作成し、テキスト要素リスト413の最後尾に順次追加する。なお、リストSの最後の要素の場合、次の要素が存在しない。このため、CPU401は、テキストtの長さをテキスト領域の終了位置にセットする。   The CPU 401 initializes the text element list 413 to be empty. Each value in the list S gives the start position and end position of the text area. Therefore, the CPU 401 creates elements of the DOM DAG 421 in order from the top element of the list S, with the start position of the text area being the value of the element currently being viewed, the end position being the value of the next element, and the tag name being #. The text element list 413 is sequentially added to the end. In the case of the last element in the list S, the next element does not exist. Therefore, the CPU 401 sets the length of the text t at the end position of the text area.

[テキスト割当部418]
テキスト要素リスト413の各要素は、互いのテキスト領域が重ならないため包含関係を有していない。このため、テキスト割当部418として機能するCPU401は、テキスト要素リスト413の各要素とルート要素とに基づいて、テキスト要素同士が兄弟となるDOM木を作成することができる。作成されるDOM木をTtとする。CPU401は、DOM木Ttに対して、各アノテーショングループのDOM木から、後述する親子関係解析・登録部419としての機能を通じ、アノテーショングループ外の親を登録する。
[Text allocation unit 418]
Each element of the text element list 413 does not have an inclusion relationship because the text areas do not overlap each other. For this reason, the CPU 401 functioning as the text assignment unit 418 can create a DOM tree in which the text elements are siblings based on each element of the text element list 413 and the root element. Let the created DOM tree be Tt. The CPU 401 registers a parent outside the annotation group with respect to the DOM tree Tt through a function as a parent-child relationship analysis / registration unit 419 described later from the DOM tree of each annotation group.

[要素間の包含関係]
本実施例では、XML要素又はアノテーション要素とテキスト要素間の包含関係は、以下のルールに従うものとする。XML要素又はアノテーション要素のテキスト領域がテキスト要素のテキスト領域を包含する、又は同じである場合、XML要素又はアノテーション要素は、テキスト要素を包含するとする。これ以外の場合は、包含関係はないものとする。
[Inclusive relation between elements]
In the present embodiment, the inclusion relationship between the XML element or annotation element and the text element is assumed to follow the following rules. If the text area of the XML element or annotation element includes or is the same as the text area of the text element, the XML element or annotation element shall include the text element. In other cases, there is no inclusion relationship.

[親子関係解析・登録部419]
図7は、親子関係解析・登録部419として機能するCPU401により実行される処理の一例を示すフローチャートである。
[Parent-child relationship analysis / registration unit 419]
FIG. 7 is a flowchart illustrating an example of processing executed by the CPU 401 functioning as the parent-child relationship analysis / registration unit 419.

まず、CPU401は、DOM木TとDOM木Uを入力とする(ステップS601)
次に、CPU401は、DOM木Uの要素の集合をVとし(ステップS602)、Vが空であるかを判定する(ステップS603)。Vが空になるまで、後述のステップS604〜S608を繰り返す。
First, the CPU 401 inputs the DOM tree T and the DOM tree U (step S601).
Next, the CPU 401 sets a set of elements of the DOM tree U as V (step S602), and determines whether V is empty (step S603). Steps S604 to S608 described later are repeated until V becomes empty.

要素vをVから取り出し、Vから削除する(ステップS604)。CPU401は、DOM木Tの要素の中で、vを包含する要素のうち、ルートからの深さが最も深いものを要素uとする(ステップS605)。uがDOM木Tのルート要素であるかを判定し(ステップS606)、ルート要素でないならば、CPU401は、uをvのアノテーショングループ外の親要素として登録し、ステップS603に戻る(ステップS607)。   The element v is extracted from V and deleted from V (step S604). Among the elements of the DOM tree T, the CPU 401 sets the element u that has the deepest depth from the root among the elements including v (step S605). It is determined whether u is a root element of the DOM tree T (step S606). If it is not a root element, the CPU 401 registers u as a parent element outside the annotation group of v, and returns to step S603 (step S607). .

[検索動作の概要]
続いて、構造化文書検索装置400において実行される検索処理の概要を説明する。検索処理は、後述するロケーションパス検索部420として機能するCPU401により実行される。ロケーションパス検索部420として機能するCPU401は、各XML文書とアノテーションデータとから構築されたテキスト共有DOM木をロケーションパスに沿って辿り、検索クエリに合致した要素を検索結果として取得する。
[Overview of search operation]
Next, an outline of search processing executed in the structured document search apparatus 400 will be described. The search process is executed by the CPU 401 functioning as a location path search unit 420 described later. The CPU 401 functioning as the location path search unit 420 follows a text sharing DOM tree constructed from each XML document and annotation data along the location path, and acquires an element that matches the search query as a search result.

図3では、テキスト共有DOM木について、ロケーションパス「/p/fx/obj」とロケーションパス「/A/T」とが共通する要素を検索する場合について表している。図3の例の場合、ロケーションパス「/p/fx/obj」は、ルート要素の下のタグ<p>の下のタグ<fx>の下のタグ<obj>の下に割り当てられた要素を表しており、ロケーションパス「/A/T」は、ルート要素の下のタグ[A]の下のタグ[T]の下に割り当てられた要素を表している。図3では、これら2つのロケーションパスを点線の矢印により表している。この結果、共通する要素は、テキスト要素である「粗鋼」となる。   FIG. 3 shows a case where an element having a common location path “/ p / fx / obj” and location path “/ A / T” is searched for the text sharing DOM tree. In the case of the example in FIG. 3, the location path “/ p / fx / obj” indicates that the element assigned under the tag <obj> under the tag <fx> under the tag <p> under the root element. The location path “/ A / T” represents an element allocated under the tag [T] under the tag [A] under the root element. In FIG. 3, these two location paths are represented by dotted arrows. As a result, the common element is “crude steel” which is a text element.

[検索動作の詳細]
図8に、構造化文書検索装置400において検索処理が実行される際のデータの流れを示す。なお、CPU401は、検索に使用する文書構造リスト412(本実施例の場合、テキスト共有DOM木416)を、補助記憶装置403Aから主記憶装置402に事前に読み出しているものとする(ステップS401)。
[Details of search operation]
FIG. 8 shows the flow of data when search processing is executed in structured document search apparatus 400. It is assumed that the CPU 401 has previously read the document structure list 412 (text sharing DOM tree 416 in this embodiment) used for the search from the auxiliary storage device 403A to the main storage device 402 (step S401). .

この状態で、ユーザがユーザインタフェース406を通じ、検索クエリとしてのロケーションパスを構造化文書検索装置400(具体的には、CPU401)に投入する(ステップS402)。   In this state, the user inputs a location path as a search query to the structured document search device 400 (specifically, the CPU 401) through the user interface 406 (step S402).

すると、ロケーションパス検索部420として機能するCPU402は、文書構造リスト412にあるテキスト共有DOM木416にアクセスし、検索クエリとして指定されたロケーションパスに合致した要素の箇所を計算する(ステップS403)。この後、CPU401は、検索クエリに合致した要素の集合をユーザインタフェース406に出力する(ステップS405)。   Then, the CPU 402 functioning as the location path search unit 420 accesses the text sharing DOM tree 416 in the document structure list 412 and calculates the location of the element that matches the location path specified as the search query (step S403). Thereafter, the CPU 401 outputs a set of elements that match the search query to the user interface 406 (step S405).

[ロケーションパス検索部420]
最後に、ロケーションパス検索部420として機能するCPU401の動作を説明する。文書構造リスト412を構成する各要素のリストの先頭は、テキスト共有DOM木のルート要素となっている。従って、CPU401は、各テキスト共有DOM木のルート要素からテキスト共有DOM木をロケーションパスに沿って辿ることにより、検索クエリに合致するテキスト共有DOM木の要素を得る。
[Location path search unit 420]
Finally, the operation of the CPU 401 functioning as the location path search unit 420 will be described. The head of the list of each element constituting the document structure list 412 is a root element of the text sharing DOM tree. Accordingly, the CPU 401 obtains an element of the text sharing DOM tree that matches the search query by tracing the text sharing DOM tree along the location path from the root element of each text sharing DOM tree.

[実施例の効果]
本実施例に係る構造化文書検索装置400は、前処理として、XMLタグに基づいて構築されたDOM木と、アノテーショングループに属するタグに基づいて構築されたDOM木の間でルート要素を共通化したテキスト共有DOM木416を生成する。テキスト共有DOM木416には、共通するルート要素を起点として各DOM木の構造が含まれている。従って、任意の形式でアノテーションがXML文書に付与されている場合にも、XMLによる階層構造とアノテーションによる階層構造の双方を考慮した検索を可能とすることができる。
[Effect of Example]
The structured document search apparatus 400 according to the present embodiment uses, as preprocessing, a text in which a root element is shared between a DOM tree constructed based on an XML tag and a DOM tree constructed based on a tag belonging to an annotation group. A shared DOM tree 416 is generated. The text sharing DOM tree 416 includes the structure of each DOM tree starting from a common root element. Therefore, even when an annotation is added to an XML document in an arbitrary format, it is possible to perform a search in consideration of both the XML hierarchical structure and the annotation hierarchical structure.

[第2の実施例]
本実施例においては、XML要素とアノテーション要素、又は、異なるアノテーショングループに属するアノテーション要素同士といった異なる種類の要素間における包含関係を定義する。このために、本実施例では、第1の実施例におけるテキスト共有DOM木の構造を拡張したDOM DAG(Directed Acyclic Graph:非循環有向グラフ)を使用する。なお、本実施例に係る構造化文書検索装置400の基本構成は、実施例1と同様である。すなわち、図1−1及び図1−2に示す構成を基本構成とする。ただし、本実施例では、テキスト共有DOM木構築部415に代えて、DOM DAG構築部422を使用する。
[Second Embodiment]
In this embodiment, an inclusion relationship between different types of elements such as XML elements and annotation elements or annotation elements belonging to different annotation groups is defined. For this purpose, in this embodiment, a DOM DAG (Directed Acyclic Graph) obtained by extending the structure of the text sharing DOM tree in the first embodiment is used. The basic configuration of the structured document search apparatus 400 according to the present embodiment is the same as that of the first embodiment. That is, the basic configuration is the configuration shown in FIGS. 1-1 and 1-2. However, in this embodiment, the DOM DAG construction unit 422 is used instead of the text sharing DOM tree construction unit 415.

[前処理の概要]
前述したように、本実施例においては、XML要素とアノテーション要素間、及び、異なるアノテーショングループ間に属する要素間におけるテキスト領域の包含関係についても親子関係として考慮したDOM DAGを使用した構造検索について説明する。DOM DAGの導入により、異なる種類の要素間の包含関係を考慮した検索を実行可能な構造化文書検索装置が実現される。
[Overview of preprocessing]
As described above, in this embodiment, the structure search using the DOM DAG in which the inclusion relation of the text area between the XML element and the annotation element and between the elements belonging to different annotation groups is also considered as the parent-child relation is described. To do. With the introduction of DOM DAG, a structured document search apparatus capable of executing a search in consideration of the inclusion relationship between different types of elements is realized.

[DOM DAG]
ここでは、本実施例で使用するDOM DAGについて説明する。DOM DAGは、テキスト共有DOM木において、XMLタグや異なるアノテーショングループに属するタグなど、異なる種類の要素間の包含関係も記述したデータ構造である。すなわち、ルート要素で共通化された各DOM木の間において、包含関係による親子関係が記述されたデータ構造である。
[DOM DAG]
Here, the DOM DAG used in the present embodiment will be described. The DOM DAG is a data structure in which inclusion relationships between different types of elements such as XML tags and tags belonging to different annotation groups are described in a text sharing DOM tree. That is, it is a data structure in which a parent-child relationship based on an inclusion relationship is described between DOM trees shared by root elements.

DOM DAGでは、例えばDOM木T2の要素を包含するDOM木T1の要素のうち、DOM木T1のルート要素から最も深い位置にある要素との間に親子関係があるものとして扱い、DOM木T1とDOM木T2の間にリンクを張る。これにより、DOM木T1の要素からDOM木T2の要素への包含関係を表現する。   In the DOM DAG, for example, among the elements of the DOM tree T1 including the elements of the DOM tree T2, it is treated as having a parent-child relationship with the element at the deepest position from the root element of the DOM tree T1, and the DOM tree T1 and A link is established between the DOM trees T2. Thereby, the inclusion relationship from the element of the DOM tree T1 to the element of the DOM tree T2 is expressed.

図9に、図3に示したテキスト共有DOM木416に基づいて構築されたDOM DAGの例を示す。図9の場合、XMLタグであるタグ<fx>からアノテーションタグであるタグ[T]へのリンク、アノテーションタグであるタグ[T]からXMLタグであるタグ<obj>へのリンクのように、異なる種類のタグ間でも親子関係が考えられている。   FIG. 9 shows an example of a DOM DAG constructed based on the text sharing DOM tree 416 shown in FIG. In the case of FIG. 9, the link from the tag <fx>, which is an XML tag, to the tag [T], which is an annotation tag, and the link from the tag [T], which is an annotation tag, to a tag <obj>, which is an XML tag, Parent-child relationships are also considered between different types of tags.

[DOM DAG内の要素の包含関係]
DOM木又はDOM DAG内の要素の包含関係は、次のルールに従うものとする。
(1)ルート要素は、ルート要素以外のどの要素も包含する。
(2)XML要素とアノテーション要素のテキスト領域開始位置と終了位置が同じ場合、XML要素がアノテーション要素を包含する。
(3)アノテーション要素同士のテキスト領域開始位置と終了位置が同じ場合、アノテーショングループIDが小さい要素がアノテーショングループIDが大きい要素を包含する。
(4)テキスト要素とテキスト要素以外の他の要素について、テキスト領域開始位置と終了位置が同じ場合、後者が前者を包含する。
(5)(1)〜(4)によって包含関係が決定しない場合、要素にあるテキスト領域の包含関係から要素の包含関係を決定する。ただし、テキスト要素のテキスト領域が他の要素のテキスト領域を包含する場合、要素の包含関係はないものとする。
(6)(1)〜(5)によって包含関係が決定しない場合、互いに包含関係がないものとする。
[Inclusive relation of elements in DOM DAG]
The inclusion relationship of the elements in the DOM tree or DOM DAG shall follow the following rules.
(1) The root element includes any element other than the root element.
(2) When the text region start position and end position of the XML element and annotation element are the same, the XML element includes the annotation element.
(3) When the text region start position and end position of annotation elements are the same, an element with a small annotation group ID includes an element with a large annotation group ID.
(4) When the text region start position and end position are the same for the text element and other elements other than the text element, the latter includes the former.
(5) When the inclusion relation is not determined by (1) to (4), the inclusion relation of the element is determined from the inclusion relation of the text region in the element. However, when the text area of the text element includes the text area of another element, it is assumed that there is no element inclusion relationship.
(6) When the inclusion relationship is not determined by (1) to (5), it is assumed that there is no mutual inclusion relationship.

[DOM DAG構築部422]
DOM DAG構築部422として機能するCPU401は、XML要素から構築したDOM木、XML文書内のテキスト、各アノテーショングループの要素から構築したDOM木を入力とする。
[DOM DAG construction unit 422]
The CPU 401 functioning as the DOM DAG construction unit 422 receives as input the DOM tree constructed from the XML elements, the text in the XML document, and the DOM tree constructed from the elements of each annotation group.

親子関係解析・登録部419として機能するCPU401は、XML要素を含むアノテーショングループの全てのDOM木の組に対し、アノテーショングループ外の親を割り当てる。ここで、CPU401は、各DOM木について、ルート要素以外の要素のリストNを用意する。CPU401は、リストNとXML文書内のテキストを、テキストデータ・テキスト要素リスト構築部417に入力し、テキストデータリスト414とテキスト要素リスト413を更新する。   The CPU 401 functioning as the parent-child relationship analysis / registration unit 419 assigns a parent outside the annotation group to all DOM tree pairs of the annotation group including the XML element. Here, the CPU 401 prepares a list N of elements other than the root element for each DOM tree. The CPU 401 inputs the text in the list N and the XML document to the text data / text element list construction unit 417 and updates the text data list 414 and the text element list 413.

テキスト割当部418として機能するCPU401は、テキスト要素リスト413と、XML要素と、各アノテーショングループの要素からなるDOM木を入力すると、テキスト要素を子要素としてDOM木の各要素に割り当てる。CPU401は、テキスト要素リスト413の各要素をリストNに加えると共に、深さの情報を各要素に割り当てる。CPU401は、DOM木の各要素が持つアノテーショングループ外の親要素リストの要素に対し、親子関係のリンクを張る。また、CPU401は、各DOM木のルート要素を1つに共通化し、共通化したルート要素をリストNの先頭に加える。この後、CPU401は、リストNを出力し、DOM DAGの作成処理を終了する。   When the CPU 401 functioning as the text assigning unit 418 inputs a text element list 413, an XML element, and a DOM tree composed of elements of each annotation group, the CPU 401 assigns the text element to each element of the DOM tree as a child element. The CPU 401 adds each element of the text element list 413 to the list N and assigns depth information to each element. The CPU 401 establishes a parent-child relationship link to the elements in the parent element list outside the annotation group possessed by each element of the DOM tree. Further, the CPU 401 shares the root element of each DOM tree into one, and adds the common root element to the top of the list N. Thereafter, the CPU 401 outputs the list N and ends the creation process of the DOM DAG.

[実施例の効果]
本実施例に係る構造化文書検索装置400は、前処理として、実施例1で説明したテキスト共有DOM木416を構成する異なるDOM木の要素間についても包含関係を規定したDOM DAGを作成する。従って、本実施例に係る構造化文書検索装置400を用いれば、実施例1の効果に加え、異なる種類の要素間における包含関係(親子関係)も考慮した検索を可能とすることができる。
[Effect of Example]
The structured document search apparatus 400 according to the present embodiment creates a DOM DAG that defines an inclusion relationship between elements of different DOM trees constituting the text sharing DOM tree 416 described in the first embodiment as preprocessing. Therefore, by using the structured document search apparatus 400 according to the present embodiment, in addition to the effects of the first embodiment, it is possible to perform a search in consideration of an inclusion relationship (parent-child relationship) between different types of elements.

[第3の実施例]
前述したように、DOM DAGを用いれば、異種タグ間の構造関係を利用した検索が可能となる。しかし、ロケーションパスの検索時、構築した全てのDOM DAGをルート要素から辿るのでは非効率的である。
[Third embodiment]
As described above, if DOM DAG is used, a search using the structural relationship between different types of tags becomes possible. However, it is inefficient to trace all constructed DOM DAGs from the root element when searching for a location path.

そこで、本実施例では、複数のDOM DAGの構造を集約したデータ構造であるパスDAGを定義する。さらに、パスDAG内の要素をエントリとして、DOM DAG内の要素を値とした転置インデクスによる検索を可能とすることにより、ロケーションパスを検索クエリとした効率的な探索を可能にする。   Therefore, in this embodiment, a path DAG that is a data structure in which the structures of a plurality of DOM DAGs are aggregated is defined. Furthermore, by making an element in the path DAG an entry and performing a search using a transposed index with the element in the DOM DAG as a value, an efficient search using the location path as a search query is enabled.

本実施例の場合も、構造化文書検索装置400の基本構成は、実施例1と同様である。すなわち、図1−1及び図1−2に示す構成を基本構成とする。ただし、本実施例の場合、DOM DAG構築部422とロケーションパス検索部420の機能が拡張されている。   Also in this embodiment, the basic configuration of the structured document search apparatus 400 is the same as that of the first embodiment. That is, the basic configuration is the configuration shown in FIGS. 1-1 and 1-2. However, in this embodiment, the functions of the DOM DAG construction unit 422 and the location path search unit 420 are expanded.

[前処理の概要]
本実施例の場合、転置インデクス構築部424が前処理を実行する。転置インデクス構築部424として機能するCPU401は、パスDAG423をルート要素のみからなるデータ構造に初期化すると共に、各XML文書と対応したアノテーションデータに基づいてDOM DAGを構築する。
[Overview of preprocessing]
In this embodiment, the transposed index construction unit 424 executes preprocessing. The CPU 401 functioning as the transposed index construction unit 424 initializes the path DAG 423 to a data structure including only root elements, and constructs a DOM DAG based on annotation data corresponding to each XML document.

パスDAG ID取得部428として機能するCPU401は、DOM DAGを構成する各要素のタグ名と親要素に基づいて、パスDAG内に既に登録されている構造か否かを判定する。判定対象である構造がパスDAG内に既に登録されている場合、CPU401は、当該構造に対し、対応するパスDAG内の要素のIDであるパスDAG IDを与える。これに対し、判定対象とする構造が登録されていない場合、CPU401は、パスDAG要素生成・登録部429として機能し、パスDAG423に対して新しく要素を生成すると共に、生成された要素に対してパスDAG IDを得える。パスDAG IDの取得後、CPU401は、転置インデクス425の取得したパスDAG IDに対応したエントリに各要素を追加する。   The CPU 401 functioning as the path DAG ID acquisition unit 428 determines whether or not the structure is already registered in the path DAG based on the tag name and parent element of each element constituting the DOM DAG. When the structure to be determined is already registered in the path DAG, the CPU 401 gives the structure a path DAG ID that is an ID of an element in the corresponding path DAG. On the other hand, when the structure to be determined is not registered, the CPU 401 functions as the path DAG element generation / registration unit 429, generates a new element for the path DAG 423, and generates a new element for the generated element. You can get a pass DAG ID. After acquiring the path DAG ID, the CPU 401 adds each element to the entry corresponding to the acquired path DAG ID of the transposition index 425.

図10は、2つのDOM DAGの登録後に生成される、パスDAGと転置インデクス425の例を示す。図10に示すように、パスDAG423は、XML文書1から構築されたDOM DAGとXML文書2から構築されたDOM DAGについて、親ノードの集合が同じである要素を共通化させるように構築される。図中、白抜きで示す要素は、XML要素、黒の塗りつぶしで示す要素は、アノテーション要素を示す。   FIG. 10 shows an example of a path DAG and a transposed index 425 generated after registration of two DOM DAGs. As shown in FIG. 10, the path DAG 423 is constructed so that elements having the same set of parent nodes are shared between the DOM DAG constructed from the XML document 1 and the DOM DAG constructed from the XML document 2. . In the figure, the elements shown in white are XML elements, and the elements shown in black are annotation elements.

ただし、要素cのように、2つの文書間で親の集合の関係が異なる要素の場合には、パスDAG423上では、異なる要素として登録される。図10では、「c:1」と「c:2」として区別して登録されている。   However, in the case of an element such as element c in which the parent set relationship is different between the two documents, it is registered as a different element on the path DAG 423. In FIG. 10, “c: 1” and “c: 2” are distinguished and registered.

また、要素dは、親要素がどちらも要素cだけであり、親の集合が共通しているように見える。しかし、パスDAG上における要素cは、前述したように異なる要素として登録されている。このため、要素dも、パスDAG上異なる要素として登録される。DOM DAGの各要素には、文書の順番、文書内でのタグの出現順を組にした番号が振られている。各要素の番号は、転置インデクス425内で対応するパスDAG要素のパスDAG IDのエントリに記録される。   In addition, the element d has only the element c as the parent element, and it seems that the set of parents is common. However, the element c on the path DAG is registered as a different element as described above. For this reason, the element d is also registered as a different element on the path DAG. Each element of the DOM DAG is assigned a number that is a combination of the document order and the tag appearance order in the document. The number of each element is recorded in the path DAG ID entry of the corresponding path DAG element in the transposed index 425.

なお、図10には、パスDAG423に対応する転置インデクス425の構造もIDとタグ番号の関係として記載されている。この転置インデクスの生成方法については、次項において説明する。   In FIG. 10, the structure of the transposed index 425 corresponding to the path DAG 423 is also described as the relationship between the ID and the tag number. A method for generating this transposed index will be described in the next section.

[転置インデクス構築部424]
図11は、転置インデクス構築部424として機能するCPU401の処理動作を示すフローチャートである。
[Transposition index construction unit 424]
FIG. 11 is a flowchart showing the processing operation of the CPU 401 functioning as the transposed index construction unit 424.

まず、CPU401は、XML文書集合407とアノテーションデータ集合408を入力する(ステップS1001)。次に、CPU401は、DOM DAGリストを空のリストに初期化する(ステップS1002)。続いて、CPU401は、転置インデクス425を空のテーブルに初期化する(ステップS1003)。また、CPU401は、変数iを“1”にセットする(ステップS1004)。次に、CPU401は、テキストデータリストを空に初期化する(ステップS1005)。   First, the CPU 401 inputs an XML document set 407 and an annotation data set 408 (step S1001). Next, the CPU 401 initializes the DOM DAG list to an empty list (step S1002). Subsequently, the CPU 401 initializes the transposed index 425 to an empty table (step S1003). Further, the CPU 401 sets the variable i to “1” (step S1004). Next, the CPU 401 initializes the text data list to be empty (step S1005).

この後、CPU401は、XML文書集合407とアノテーションデータ集合408に含まれる、XML文書とアノテーションデータの全てのペアを処理したか否かを判定する(ステップS1006)。この判定処理において肯定結果が得られるまで、CPU401は、後述するステップS1007〜S1013の処理を繰り返す。   Thereafter, the CPU 401 determines whether or not all the pairs of XML documents and annotation data included in the XML document set 407 and the annotation data set 408 have been processed (step S1006). Until a positive result is obtained in this determination process, the CPU 401 repeats the processes of steps S1007 to S1013 described later.

DOM DAG構築部422として機能するCPU401は、未処理のXML文書とアノテーションデータのペアを読み込む(ステップS1007)。ここで、CPU401は、XML文書用のDOM木構築部409及びアノテーションデータ用のDOM木構築部410として機能し、XML文書とアノテーションデータのそれぞれからDOM木を作成する(ステップS1008)。   The CPU 401 functioning as the DOM DAG construction unit 422 reads an unprocessed XML document and annotation data pair (step S1007). Here, the CPU 401 functions as the DOM tree construction unit 409 for the XML document and the DOM tree construction unit 410 for the annotation data, and creates a DOM tree from each of the XML document and the annotation data (step S1008).

次に、CPU401は、後述するDOM DAG構築部422として機能し、XML文書から得られたDOM木と各アノテーショングループに属するタグから得られたDOM木からDOM DAG421を作成し、DOM DAG421を構成する要素のリストNを得る(ステップS1009)。   Next, the CPU 401 functions as a DOM DAG construction unit 422 to be described later, creates a DOM DAG 421 from the DOM tree obtained from the XML document and the DOM tree obtained from the tag belonging to each annotation group, and configures the DOM DAG 421. An element list N is obtained (step S1009).

続いて、CPU401は、リストNを後述するDOM DAG要素リストソート部426に入力し、ソートする(ステップS1010)。さらに、CPU401は、リストNと変数iを転置インデクス登録部440に入力し、転置インデクス425に各要素を登録する(ステップS1011)。この後、CPU401は、リストNをDOM DAGリストに追加する(ステップS1012)。また、CPU401は、読み込んだXML文書、アノテーションデータを処理済とし、ステップS1006に戻る(ステップS1013)。   Subsequently, the CPU 401 inputs the list N to a DOM DAG element list sorting unit 426 described later and sorts the list N (step S1010). Further, the CPU 401 inputs the list N and the variable i to the transposed index registration unit 440 and registers each element in the transposed index 425 (step S1011). Thereafter, the CPU 401 adds the list N to the DOM DAG list (step S1012). In addition, the CPU 401 determines that the read XML document and annotation data have been processed, and returns to step S1006 (step S1013).

[DOM DAG要素リストソート部426]
ここでは、ステップS1010の処理を実行するDOM DAG要素リストソート部426の処理動作を説明する。勿論、DOM DAG要素リストソート部426としての機能は、CPU401によるプログラムの実行を通じて実現する。DOM DAG要素リストソート部426として機能するCPU401は、DOM DAG要素のリストNを入力とする。次に、CPU401は、リストN内の要素を、テキスト領域開始位置と包含関係に基づいて文書内の出現順に並び替える。事前に、XML要素を、各アノテーショングループ毎に対応するDOM木について前順で並び換え、並び替えた要素同士をマージソートの要領でマージすると、リストN内の要素を効率的にソートすることができる。要素の並びは、次のルールに従うものとする。
(1)ルート要素は他のどの要素より前に来る。
(2)テキスト領域開始位置が前の要素の前に来る又はテキスト領域開始位置が同じ場合、包含する要素が前に来る。
[DOM DAG element list sort unit 426]
Here, the processing operation of the DOM DAG element list sorting unit 426 that executes the processing of step S1010 will be described. Of course, the function as the DOM DAG element list sorting unit 426 is realized through execution of a program by the CPU 401. The CPU 401 functioning as the DOM DAG element list sorting unit 426 receives a list N of DOM DAG elements as an input. Next, the CPU 401 rearranges the elements in the list N in the order of appearance in the document based on the text region start position and the inclusion relationship. If the XML elements are rearranged in the order of the DOM tree corresponding to each annotation group in advance and the rearranged elements are merged in the manner of merge sort, the elements in the list N can be efficiently sorted. it can. The arrangement of elements shall follow the following rules:
(1) The root element comes before any other element.
(2) When the text region start position comes before the previous element or when the text region start position is the same, the containing element comes before.

[深さ割当部427]
ここでは、深さ割当部427として機能するCPU401の機能を説明する。図12は、深さ割当部427の処理例を示すフローチャートである。
[Depth allocation unit 427]
Here, the function of the CPU 401 functioning as the depth assignment unit 427 will be described. FIG. 12 is a flowchart illustrating a processing example of the depth assignment unit 427.

まず、CPU401は、DOM DAG421の要素からなるリストNを入力とする(ステップS1101)。次に、CPU401は、XML文書の中で最も深い位置にある要素の深さをDとし、長さDの配列をEとする(ステップS1102)。次に、CPU401は、変数iを1とし、変数dを0とする(ステップS1103)。この後、CPU401は、変数iがNの長さ以下か否かを判定する(ステップS1104)。変数iがNの長さより大きいと判定されるまで、CPU401は、後述するステップS1105〜S1113を繰り返す。   First, the CPU 401 receives a list N composed of elements of the DOM DAG 421 (step S1101). Next, the CPU 401 sets the depth of the element at the deepest position in the XML document as D and sets the array of lengths D as E (step S1102). Next, the CPU 401 sets variable i to 1 and variable d to 0 (step S1103). Thereafter, the CPU 401 determines whether or not the variable i is equal to or shorter than the length of N (step S1104). The CPU 401 repeats steps S1105 to S1113 described later until it is determined that the variable i is greater than the length of N.

ステップS1104で肯定結果が得られた場合、CPU401は、リストNのi番目の要素をvとする(ステップS1105)。次に、CPU401は、vがXML要素またはテキスト要素かを判定する(ステップS1106)。ここで、vがXML要素またはテキスト要素であった場合、CPU401は、DOM DAG421のルート要素からの深さをdにセットする(ステップS1107)。さらに、CPU401は、Eのd番目の要素にvのテキスト領域終了位置をセットし、ステップS1104へ戻る(ステップS1108)。   If a positive result is obtained in step S1104, the CPU 401 sets the i-th element of the list N to v (step S1105). Next, the CPU 401 determines whether v is an XML element or a text element (step S1106). Here, when v is an XML element or a text element, the CPU 401 sets the depth of the DOM DAG 421 from the root element to d (step S1107). Further, the CPU 401 sets the text area end position of v in the d-th element of E, and returns to step S1104 (step S1108).

一方、ステップS1106の判定処理において、vがXML要素でもテキスト要素でもないと判定された場合、CPU401は、vがアノテーションタグの開始要素か否か判定する(ステップS1109)。ここで、vがアノテーションタグの開始要素であると判定された場合、CPU401は、vのテキスト領域開始位置を変数eにセットする(ステップS1110)。これに対し、ステップS1109の判定処理において、vがアノテーションタグの開始要素でないと判定された場合、CPU401は、vのテキスト領域の終了位置を変数eにセットする(ステップS1111)。   On the other hand, if it is determined in step S1106 that v is neither an XML element nor a text element, the CPU 401 determines whether v is an annotation tag start element (step S1109). If it is determined that v is the start element of the annotation tag, the CPU 401 sets the text area start position of v in the variable e (step S1110). In contrast, if it is determined in step S1109 that v is not the start element of the annotation tag, the CPU 401 sets the end position of the text area of v in the variable e (step S1111).

vがテキスト領域開始位置とテキスト領域終了位置のいずれであった場合でも、CPU401は、変数dが1になるか、Eのd−1番目の要素が変数eより大きくなるまで、変数dから1を引く(ステップS1112)。この後、CPU401は、vの深さをdとする一方、変数iに1を加算し、ステップS1104に戻る(ステップS1113)。   Regardless of whether the v is the text region start position or the text region end position, the CPU 401 sets the variable d to 1 until the variable d becomes 1 or the d-1th element of E becomes larger than the variable e. Is subtracted (step S1112). Thereafter, the CPU 401 sets the depth of v to d, adds 1 to the variable i, and returns to step S1104 (step S1113).

[パスDAG ID取得部428]
ここでは、DOM DAGからパスDAGを取得するパスDAG ID取得部428の処理機能を説明する。図13は、パスDAG ID取得部428として機能するCPU401の処理例を示すフローチャートである。
[Pass DAG ID acquisition unit 428]
Here, the processing function of the path DAG ID acquisition unit 428 that acquires the path DAG from the DOM DAG will be described. FIG. 13 is a flowchart illustrating a processing example of the CPU 401 functioning as the path DAG ID acquisition unit 428.

まず、CPU401は、DOM DAG421の要素のリストNを入力とする(ステップS1201)。次に、CPU401は、変数iを1にセットする(ステップS1202)。この後、CPU401は、変数iがNの長さ以下か否かを判定し、変数iがNの長さより大きいと判定されるまで、後述するステップS1204〜S1213を繰り返す(ステップS1203)。   First, the CPU 401 inputs a list N of elements of the DOM DAG 421 (step S1201). Next, the CPU 401 sets a variable i to 1 (step S1202). Thereafter, the CPU 401 determines whether or not the variable i is equal to or less than the length of N, and repeats steps S1204 to S1213 described later until it is determined that the variable i is greater than the length of N (step S1203).

変数iがリストNの長さ以下であった場合、CPU401は、リストNのi番目の要素をvとする(ステップS1204)。次に、CPU401は、要素vがアノテーションの終了タグ要素か否かを判定する(ステップS1205)。この判定結果として肯定結果が得られた場合、CPU401は変数iに1を加算し、ステップS1203に戻る(ステップS1206)。これに対し、ステップS1205の判定処理で否定結果が得られた場合、CPU401は、DOM DAG421における要素vの親要素の集合をVとする(ステップS1207)。さらに、CPU401は、集合Vの各要素に相当するパスDAG423の要素の集合をPとする(ステップS1208)。さらに、CPU401は、集合Pに属するパスDAG423の要素のうち共通する子要素の中で、要素vと同じタグ名を持つパスDAG423の要素の集合をIとする(ステップS1209)。   When the variable i is equal to or shorter than the length of the list N, the CPU 401 sets the i-th element of the list N as v (step S1204). Next, the CPU 401 determines whether or not the element v is an annotation end tag element (step S1205). When a positive result is obtained as the determination result, the CPU 401 adds 1 to the variable i and returns to step S1203 (step S1206). On the other hand, when a negative result is obtained in the determination process in step S1205, the CPU 401 sets a set of parent elements of the element v in the DOM DAG 421 as V (step S1207). Further, the CPU 401 sets a set of elements of the path DAG 423 corresponding to each element of the set V as P (step S1208). Further, the CPU 401 sets the set of elements of the path DAG 423 having the same tag name as the element v among the common child elements among the elements of the path DAG 423 belonging to the set P as I (step S1209).

ここで、CPU401は、集合Iの中で親要素の集合が集合Pと同一となる要素が存在するか否かを判定する(ステップS1210)。この判定処理において肯定結果が得られた場合、CPU401は、その要素が持つパスDAG IDを要素vに登録し、ステップS1203に戻る(ステップS1211)。これに対し、ステップS1210の判定処理において否定結果が得られた場合、CPU401は、後述するパスDAG要素生成・登録部429に要素vと集合Pを入力する(ステップS1212)。その後、CPU401は、変数iに1を加算し、ステップS1203に戻る(ステップS1213)。   Here, the CPU 401 determines whether or not there is an element in the set I whose parent element set is the same as the set P (step S1210). If a positive result is obtained in this determination process, the CPU 401 registers the path DAG ID of the element in the element v, and the process returns to step S1203 (step S1211). On the other hand, if a negative result is obtained in the determination process in step S1210, the CPU 401 inputs the element v and the set P to a path DAG element generation / registration unit 429 described later (step S1212). Thereafter, the CPU 401 adds 1 to the variable i and returns to step S1203 (step S1213).

[パスDAG要素生成・登録部429]
ここでは、ステップS1212で使用されるパスDAG要素生成・登録部429としてのCPU401の処理機能を説明する。図14は、パスDAG要素生成・登録部429として機能するCPU401の処理例を示すフローチャートである。
[Path DAG element generation / registration unit 429]
Here, the processing function of the CPU 401 as the path DAG element generation / registration unit 429 used in step S1212 will be described. FIG. 14 is a flowchart illustrating a processing example of the CPU 401 functioning as the path DAG element generation / registration unit 429.

CPU401は、DOM DAG421の要素vとパスDAG423の要素Pを入力とする(ステップS1301)。ここで、CPU401は、要素vが保持する深さをdとする(ステップS1302)。   The CPU 401 inputs the element v of the DOM DAG 421 and the element P of the path DAG 423 (step S1301). Here, the CPU 401 sets the depth held by the element v to d (step S1302).

次に、CPU401は、要素vがアノテーション要素か否か判定する(ステップS1303)。要素vがアノテーション要素であった場合、CPU401は、(2,d,AI)をパスDAG IDとして要素vに与え、AIに1を加算する(ステップS1304)。その後、CPU401は、要素vが保持するパスDAG IDを持つパスDAG要素を作成し、集合Pの各要素の子要素とする(ステップS1305)。   Next, the CPU 401 determines whether or not the element v is an annotation element (step S1303). When the element v is an annotation element, the CPU 401 gives (2, d, AI) to the element v as a path DAG ID, and adds 1 to AI (step S1304). Thereafter, the CPU 401 creates a path DAG element having a path DAG ID held by the element v and sets it as a child element of each element of the set P (step S1305).

これに対し、ステップS1303で否定結果が得られた場合(すなわち、要素vがXML要素であった場合)、CPU401は、要素vのタグ名が“#”か否か判定する(ステップS1306)。   On the other hand, when a negative result is obtained in step S1303 (that is, when the element v is an XML element), the CPU 401 determines whether the tag name of the element v is “#” (step S1306).

要素vのタグ名が#の場合、CPU401は、(1,d,XI[d])をパスDAG IDとして要素vに与える(ステップS1307)。これに対し、要素vのタグ名が#でない場合、CPU401は、(0,d,XI[d])をパスDAG IDとして要素vに与える(ステップS1308)。いずれかのパスDAG IDが要素vに与えられた後、CPU401は、XI[d]に1を加算する(ステップS1309)。   When the tag name of the element v is #, the CPU 401 gives (1, d, XI [d]) to the element v as a path DAG ID (step S1307). On the other hand, if the tag name of the element v is not #, the CPU 401 gives (0, d, XI [d]) to the element v as a path DAG ID (step S1308). After any path DAG ID is given to the element v, the CPU 401 adds 1 to XI [d] (step S1309).

[転置インデクス登録部442]
次に、転置インデクス登録部442の処理動作を説明する。図15は、転置インデクス登録部442として機能するCPU401の処理を示すフローチャートである。
[Transposition index registration unit 442]
Next, the processing operation of the transposed index registration unit 442 will be described. FIG. 15 is a flowchart showing processing of the CPU 401 functioning as the transposed index registration unit 442.

まず、CPU401は、DOM DAG要素のリストNと文書番号nを入力とする(ステップS1401)。次に、CPU401は、変数iに1をセットする(ステップS1402)。続いて、CPU401は、変数iがリストNの長さ以下か否かを判定する(ステップS1403)。CPU401は、変数iがリストNの長さを越えると判定されるまで、後述するステップS1404〜S1409を繰り返す。   First, the CPU 401 inputs a DOM DAG element list N and a document number n (step S1401). Next, the CPU 401 sets 1 to the variable i (step S1402). Subsequently, the CPU 401 determines whether or not the variable i is equal to or shorter than the length of the list N (step S1403). The CPU 401 repeats steps S1404 to S1409 described later until it is determined that the variable i exceeds the length of the list N.

変数iがリストNの長さを越えない場合、CPU401は、要素vがルート要素か否か判定する(ステップS1404)。要素vがルート要素である場合、CPU401は、変数iに1を加算してステップS1403に戻る(ステップS1409)。これに対し、要素vがルート要素でなかった場合、CPU401は、後述するパスDAG ID取得部428に対して変数vを入力し、変数vが保持するパスDAG IDjを取得する(ステップS1405)。   When the variable i does not exceed the length of the list N, the CPU 401 determines whether the element v is a root element (step S1404). When the element v is the root element, the CPU 401 adds 1 to the variable i and returns to step S1403 (step S1409). On the other hand, if the element v is not a root element, the CPU 401 inputs a variable v to a path DAG ID acquisition unit 428 described later, and acquires a path DAG IDj held by the variable v (step S1405).

この後、CPU401は、転置インデクス425において、変数jに対応したエントリが存在しないか否か判定する(ステップS1406)。対応するエントリが存在しない場合、CPU401は、変数jに対応したエントリを作成する(ステップS1408)。この後、CPU401は、変数j対応したエントリに対し、(n、i)のタプル(tuple)を追加する(ステップS1407)。その後、CPU401は、変数iに1を加算し、ステップS1403へ戻る(ステップS1409)。   Thereafter, the CPU 401 determines whether or not there is an entry corresponding to the variable j in the transposed index 425 (step S1406). If there is no corresponding entry, the CPU 401 creates an entry corresponding to the variable j (step S1408). Thereafter, the CPU 401 adds a (n, i) tuple to the entry corresponding to the variable j (step S1407). Thereafter, the CPU 401 adds 1 to the variable i and returns to step S1403 (step S1409).

[検索動作の概要]
本実施例による検索動作は以下のように進行する。本実施例の場合、ロケーションパスによる検索は、ロケーションパス検索部420としてのCPU401が、転置インデクス425に基づいて実行する。ロケーションパス検索部420としてのCPU401は、ロケーションパスに沿ってパスDAGを辿り、ロケーションパスの構造に合致したパスDAG要素のパスDAG IDを取得する。
[Overview of search operation]
The search operation according to the present embodiment proceeds as follows. In the case of the present embodiment, the search based on the location path is executed by the CPU 401 as the location path search unit 420 based on the transposed index 425. The CPU 401 as the location path search unit 420 traces the path DAG along the location path, and acquires the path DAG ID of the path DAG element that matches the location path structure.

CPU401は、取得したパスDAG IDに基づいて転置インデクス425を検索し、ロケーションパスに合致するDOM DAG要素のタグ番号をDOM DAGリストから得る。次に、CPU401は、このタグ番号で特定されるDOM DAG要素を検索結果として取得する。   The CPU 401 searches the transposition index 425 based on the acquired path DAG ID, and obtains the tag number of the DOM DAG element that matches the location path from the DOM DAG list. Next, the CPU 401 acquires a DOM DAG element specified by this tag number as a search result.

以上の処理動作を具体例により説明する。ここでは、図10を参照する。図10は、パスDAG423と転置インデクス425を使用し、ロケーションパス「/a/b/#」に合致する要素の検索が実行される要素を表している。この場合、CPU401は、パスDAG(左下に示す構造図)上でロケーションパスを辿り、(1,3,1)をパスDAG IDとして得る。次に、CPU401は、転置インデクス425(右下に示すテーブル)から(1,3,1)に対応するエントリを検索する。図10の例では、破線矢印で示すように、DOM DAG要素のタグ番号である(1,5)と(2,4)が得られる。次に、CPU401は、このタグ番号に対応する要素を、文書1のDOM DAGと文書2のDOM DAGから取得する。   The above processing operation will be described using a specific example. Here, FIG. 10 is referred. FIG. 10 shows an element for which a search for an element that matches the location path “/ a / b / #” is executed using the path DAG 423 and the transposed index 425. In this case, the CPU 401 follows the location path on the path DAG (structure diagram shown in the lower left), and obtains (1, 3, 1) as the path DAG ID. Next, the CPU 401 searches for an entry corresponding to (1, 3, 1) from the transposed index 425 (table shown in the lower right). In the example of FIG. 10, (1, 5) and (2, 4), which are tag numbers of the DOM DAG element, are obtained as indicated by broken-line arrows. Next, the CPU 401 acquires an element corresponding to the tag number from the DOM DAG of the document 1 and the DOM DAG of the document 2.

[ロケーションパス検索部420]
ここでは、ロケーションパス検索部420として機能するCPU401の処理を説明する。CPU401は、ロケーションパスに沿ってパスDAG423を辿り、到達した要素に対応するパスDAG IDを変数iとする。次に、CPU401は、転置インデクス425の中からパスDAG IDiに対応するエントリEを取得する。エントリE内の各要素は、DOM DAGリストにあるDOM DAGの要素のリストの場所と、DOM DAGリスト内の要素の場所の組になっている。ロケーションパス検索部420は、これら対応するDOM DAGの要素を転置インデクス425から全て取得し、出力する。
[Location path search unit 420]
Here, processing of the CPU 401 functioning as the location path search unit 420 will be described. The CPU 401 follows the path DAG 423 along the location path, and sets the path DAG ID corresponding to the reached element as the variable i. Next, the CPU 401 acquires an entry E corresponding to the path DAG IDi from the transposed index 425. Each element in entry E is a set of the location of the list of elements in the DOM DAG in the DOM DAG list and the location of the elements in the DOM DAG list. The location path search unit 420 acquires all the corresponding DOM DAG elements from the transposed index 425 and outputs them.

[実施例の効果]
本実施例に係る構造化文書検索装置400では、複数のDOM DAGの構造を集約したパスDAGを定義することにより、前述した実施例に比して検索効率を高めることができる。
[Effect of Example]
In the structured document search apparatus 400 according to the present embodiment, by defining a path DAG in which the structures of a plurality of DOM DAGs are defined, search efficiency can be improved as compared with the above-described embodiment.

[第4の実施例]
ここでは、DOM DAG421の計算機上での保持形態について考える。C言語等では、構造情報をポインタとして表現する。このため、DOM DAG421の構造が複雑である場合、多数のポインタが要素間に張られることになり、元のXML文書とアノテーションデータよりも多くのメモリが必要となる。そこで、本実施例では、パスDAGと数列データにより、DOM DAGの構造を表現する手法を説明する。
[Fourth embodiment]
Here, a holding form on the computer of the DOM DAG421 will be considered. In the C language or the like, the structure information is expressed as a pointer. For this reason, when the structure of the DOM DAG 421 is complicated, a large number of pointers are extended between elements, and more memory is required than the original XML document and annotation data. In this embodiment, a method for expressing the structure of the DOM DAG using the path DAG and the numerical sequence data will be described.

なお、本実施例に係る構造化文書検索装置400は、XML文書の開始タグとアノテーションデータに出現する開始要素と終了要素について出現順に割り当てられた要素番号に基づいて、検索クエリに合致するタグの開始場所と終了場所に該当する要素を検索する。   Note that the structured document search apparatus 400 according to the present embodiment uses the start tag of the XML document and the element number assigned to the search query based on the element numbers assigned in the order of appearance for the start element and the end element that appear in the annotation data. Search for elements corresponding to the start and end locations.

[前処理の概要]
本実施例に係る前処理は、検索インデクス構築部424として機能するCPU401が実行する。前述の実施例で説明したように、検索インデクス430は、パスDAGと数列データにより、DOM DAG421の構造を記述する。このため、各XML文書と対応するアノテーションデータについてのDOM DAG421を、主記憶装置402に保持する必要はない。
[Overview of preprocessing]
The pre-processing according to the present embodiment is executed by the CPU 401 functioning as the search index construction unit 424. As described in the above embodiment, the search index 430 describes the structure of the DOM DAG 421 using the path DAG and the sequence data. Therefore, it is not necessary to store the DOM DAG 421 for the annotation data corresponding to each XML document in the main storage device 402.

まず、CPU401は、各XML文書と対応するアノテーションデータについてDOM DAG421を構築する。次に、CPU401は、パスDAG ID取得部428として機能し、構築したDOM DAG421の各要素のパスDAG IDを取得する。この後、CPU401は、取得されたパスDAG IDを順番に数列データに登録する。   First, the CPU 401 constructs a DOM DAG 421 for annotation data corresponding to each XML document. Next, the CPU 401 functions as the path DAG ID acquisition unit 428 and acquires the path DAG ID of each element of the constructed DOM DAG 421. Thereafter, the CPU 401 registers the acquired path DAG ID in the sequence data in order.

図16は、図10に示すDOM DAGを数列データとして記録する様子を示している。左上段に示すように、DOM DAG421の各要素には、出現順に通し番号が振られている。図16の場合、文書1のDOM DAGの各要素には、その出現順に“1”から“7”の通し番号が付されており、文書2のDOM DAGの各要素には、その出現順に“8”から“15”の通し番号が付されている。また、右上段に示すように、2つのDOM DAG421を集約したパスDAG423の各要素には、パスDAG IDが各階層の出現順に数列データが記録されている。   FIG. 16 shows how the DOM DAG shown in FIG. 10 is recorded as sequence data. As shown in the upper left column, each element of the DOM DAG 421 is assigned a serial number in the order of appearance. In the case of FIG. 16, each element of the DOM DAG of the document 1 is assigned a serial number from “1” to “7” in the order of appearance, and each element of the DOM DAG of the document 2 is “8” in the order of appearance. "To" 15 "are assigned serial numbers. Further, as shown in the upper right column, in each element of the path DAG 423 in which the two DOM DAGs 421 are aggregated, the sequence DAG ID is recorded in the order of appearance of each layer.

[検索インデクス430]
図17は、検索インデクス430の概要を示す。検索インデクス430は、複数のDOM DAGの構造を集約したパスDAG423と、パスDAG423の各要素に振られたIDをDOM DAGの各要素に割り当て、要素の出現順に登録した数列データ群と、ビット列のデータ群と、テキストデータリスト414とから構成される。
[Search index 430]
FIG. 17 shows an overview of the search index 430. The search index 430 includes a path DAG 423 in which the structures of a plurality of DOM DAGs are aggregated, an ID assigned to each element of the path DAG 423 assigned to each element of the DOM DAG, a sequence data group registered in the appearance order of the elements, and a bit string It consists of a data group and a text data list 414.

数列データ群は、アノテーション要素判別ビット列431、テキスト要素判別ビット列432、XML要素の深さ数列433、深さ別ID列リスト434、アノテーション終了タグ判別ビット列435、アノテーション開始タグID列436、アノテーション終了タグID列437、アノテーション要素の深さ数列438とから構成される。テキストデータリスト414は、各XML文書内の全文字列を出現順につなげたテキストと、XMLタグとアノテーションタグにより切り分けられたテキスト分割位置のリストとから構成される。   The sequence data group includes an annotation element determination bit string 431, a text element determination bit string 432, an XML element depth number string 433, a depth-specific ID string list 434, an annotation end tag determination bit string 435, an annotation start tag ID string 436, and an annotation end tag. An ID string 437 and an annotation element depth number string 438 are included. The text data list 414 includes a text in which all character strings in each XML document are connected in the order of appearance, and a list of text division positions separated by the XML tag and the annotation tag.

[検索インデクス構築部454]
図18は、検索インデクス構築部454として機能するCPU401の処理例を示すフローチャートである。
[Search index construction unit 454]
FIG. 18 is a flowchart illustrating a processing example of the CPU 401 functioning as the search index construction unit 454.

まず、CPU401は、XML文書集合407とアノテーションデータ集合408を入力とする(ステップS1701)。次に、CPU401は、アノテーション要素判別ビット列431、テキスト要素判別ビット列432、XML要素の深さ数列433、アノテーション終了タグ判別ビット列435、アノテーション開始タグID列436、アノテーション終了タグID列437、アノテーション要素の深さ数列438を空の数列に初期化する(ステップS1702)。   First, the CPU 401 receives an XML document set 407 and an annotation data set 408 as input (step S1701). Next, the CPU 401 determines the annotation element determination bit string 431, the text element determination bit string 432, the XML element depth number string 433, the annotation end tag determination bit string 435, the annotation start tag ID string 436, the annotation end tag ID string 437, and the annotation element The depth sequence 438 is initialized to an empty sequence (step S1702).

次に、CPU401は、XML文書集合407に含まれるXML文書の中で最も深い位置にある要素の深さをDとする時、深さ別ID列リスト434に空の数列をD本セットする(ステップS1703)。   Next, when the depth of an element at the deepest position in the XML document included in the XML document set 407 is D, the CPU 401 sets D empty number sequences in the depth-specific ID column list 434 ( Step S1703).

この後、CPU401は、パスDAG423をルート要素のみを持つグラフに初期化し、ルート要素にパスDAG IDとして(0,0,1)を与える(ステップS1704)。また、CPU401は、数字XD、長さDの数列XIの各要素、数字AIを0に初期化する(ステップS1704)。   Thereafter, the CPU 401 initializes the path DAG 423 to a graph having only the root element, and gives (0, 0, 1) as the path DAG ID to the root element (step S1704). Further, the CPU 401 initializes each element of the numerical sequence XI having the number XD and the length D and the number AI to 0 (step S1704).

さらに、CPU401は、テキストデータリストを空に初期化する(ステップS1705)。   Further, the CPU 401 initializes the text data list to be empty (step S1705).

この後、CPU401は、XML文書集合407とアノテーションデータ集合408に含まれる、XML文書とアノテーションデータの全ペアを処理したか否かを判定する(ステップS1706)。この判定処理で肯定結果が得られるまで、CPU401は、後述するステップS1707〜S1713の処理を繰り返し実行する。   Thereafter, the CPU 401 determines whether or not all pairs of the XML document and annotation data included in the XML document set 407 and the annotation data set 408 have been processed (step S1706). Until a positive result is obtained in this determination process, the CPU 401 repeatedly executes processes in steps S1707 to S1713 described later.

ステップS1706で否定の結果が得られた場合、CPU401は、未処理のXML文書とアノテーションデータのペアを読み込む(ステップS1707)。XML文書から、XML文書からのDOM木構築部409により、アノテーションデータから、アノテーションデータからのDOM木構築部410により、DOM木を作成する(ステップS1708)。   If a negative result is obtained in step S1706, the CPU 401 reads an unprocessed XML document and annotation data pair (step S1707). From the XML document, the DOM tree construction unit 409 from the XML document creates a DOM tree from the annotation data by the DOM tree construction unit 410 from the annotation data (step S1708).

次に、CPU401は、XML文書から得られたDOM木と各アノテーショングループに属するタグから得られたDOM木を入力すると、後述するDOM DAG構築部422としての機能を通じてDOM DAG421を作成し、要素のリストNを得る(ステップS1709)。   Next, when a DOM tree obtained from an XML document and a DOM tree obtained from a tag belonging to each annotation group are input, the CPU 401 creates a DOM DAG 421 through a function as a DOM DAG construction unit 422 to be described later. A list N is obtained (step S1709).

この後、CPU401は、リストNをDOM DAG要素リストソート部426に入力し、ソートする(ステップS1710)。さらに、CPU401は、リストNを後述するアノテーション終了タグ挿入部441に入力する(ステップS1711)。次に、CPU401は、リストNを後述する検索インデクス登録部440に入力する(ステップS1712)。そして、CPU401は、読み込んだXML文書とアノテーションデータを処理済とし、ステップS1706に戻る(ステップS1713)。   Thereafter, the CPU 401 inputs the list N to the DOM DAG element list sorting unit 426 and sorts it (step S1710). Further, the CPU 401 inputs the list N to the annotation end tag insertion unit 441 described later (step S1711). Next, the CPU 401 inputs the list N to the search index registration unit 440 described later (step S1712). The CPU 401 determines that the read XML document and annotation data have been processed, and returns to step S1706 (step S1713).

[アノテーション終了タグ要素]
アノテーション終了タグ要素とは、アノテーションの終了タグを示す要素であり、対応するアノテーション要素、深さ、パスDAG IDを保持する。アノテーション終了タグ要素は、DOM DAG421の要素をソートしたリスト内におけるアノテーションタグの終了位置を示すために用いる。
[Annotation end tag element]
An annotation end tag element is an element indicating an annotation end tag, and holds a corresponding annotation element, depth, and path DAG ID. The annotation end tag element is used to indicate the end position of the annotation tag in the list in which the elements of the DOM DAG 421 are sorted.

[アノテーション終了タグ挿入部441]
アノテーション終了タグ挿入部441として機能するCPU401は、DOM DAG421の要素のリストNを入力とする。ここで、CPU401は、空のアノテーション要素のリストLを用意する。
[Annotation end tag insertion unit 441]
The CPU 401 functioning as the annotation end tag insertion unit 441 receives a list N of elements of the DOM DAG 421 as an input. Here, the CPU 401 prepares a list L of empty annotation elements.

CPU401は、リストNの要素を先頭から順番に走査する。リストNの要素がアノテーション要素の場合、アノテーションタグの終了要素を作成し、該当するアノテーション要素を記録した後、リストLの最後尾に追加する。CPU401は、リストNを走査した後、リストL内の要素をマージソートの要領でリストNに挿入し、リストLをリストNにマージする。ソート時の順序は次のルールに従うものとする。   The CPU 401 scans the elements of the list N in order from the top. When the element of the list N is an annotation element, an end element of the annotation tag is created, and the corresponding annotation element is recorded, and then added to the end of the list L. After scanning the list N, the CPU 401 inserts elements in the list L into the list N in the manner of merge sort, and merges the list L into the list N. The order of sorting shall follow the following rules.

DOM木の要素のソート時は次のルールに従い、降順にソートする。
(1)ルート要素は他のどの要素より前に来る。
(2)リストN内の要素とアノテーション終了タグ要素の比較において、前者のテキスト領域開始位置が後者のテキスト領域終了位置と同じ場合、後者に保持するアノテーション要素が前者に含まれるならば、前者が前に来る。そうでない場合、後者が前にくる。
(3)リストN内の要素とアノテーション終了タグ要素の比較において、前者のテキスト領域終了位置が後者のテキスト領域終了位置と同じ場合、後者に対応したアノテーション要素が前者を含むならば、前者が前に来る。そうでない場合、後者が前にくる。
When sorting the elements of the DOM tree, the elements are sorted in descending order according to the following rules.
(1) The root element comes before any other element.
(2) In the comparison between the element in the list N and the annotation end tag element, when the former text area start position is the same as the latter text area end position, if the former includes an annotation element held in the latter, Come forward. If not, the latter comes first.
(3) In the comparison between the element in the list N and the annotation end tag element, when the former text area end position is the same as the latter text area end position, if the annotation element corresponding to the latter includes the former, the former is I come to. If not, the latter comes first.

[検索インデクス登録部440]
図19は、検索インデクス登録部440として機能するCPU401の処理例を示すフローチャートである。
[Search index registration unit 440]
FIG. 19 is a flowchart illustrating a processing example of the CPU 401 functioning as the search index registration unit 440.

CPU401は、DOM DAG421の要素からなるリストNを入力とする(ステップS1801)。次に、CPU401は、変数iに1をセットする(ステップS1802)。その後、CPU401は、変数iがリストNの長さ以下か判定する(ステップS1803)。CPU401は、変数iがリストNの長さを越えるまで、後述するステップS1804〜S1811を繰り返す。   The CPU 401 receives a list N composed of elements of the DOM DAG 421 (step S1801). Next, the CPU 401 sets 1 to the variable i (step S1802). Thereafter, the CPU 401 determines whether the variable i is equal to or shorter than the length of the list N (step S1803). The CPU 401 repeats steps S1804 to S1811 described later until the variable i exceeds the length of the list N.

変数iがリストNの長さ以下の場合、CPU401は、リストNのi番目の要素をvとする(ステップS1804)。ここで、CPU401は、要素vがアノテーションタグの終了要素か否か判定する(ステップS1805)。肯定結果が得られた場合、CPU401は、要素vに対応した開始要素のパスDAG IDjを取得し、IDjの1番目の要素に3をセットする(ステップS1806)。一方、ステップS1805で否定結果が得られた場合、CPU401は、後述するパスDAG ID取得部428に要素vを入力し、要素vが保持するパスDAG IDjを取得する(ステップS1807、S1808)。   When the variable i is equal to or shorter than the length of the list N, the CPU 401 sets the i-th element of the list N as v (step S1804). Here, the CPU 401 determines whether or not the element v is an end element of the annotation tag (step S1805). If an affirmative result is obtained, the CPU 401 obtains the path DAG IDj of the start element corresponding to the element v, and sets 3 to the first element of IDj (step S1806). On the other hand, if a negative result is obtained in step S1805, the CPU 401 inputs an element v to a path DAG ID acquisition unit 428 described later, and acquires a path DAG IDj held by the element v (steps S1807 and S1808).

以上の処理の後、CPU401は、IDjをパスDAG IDとしてDNに登録する(ステップS1809)。さらに、CPU401は、IDjをパスDAG ID登録部439に入力する(ステップS1810)。この後、CPU401は、変数iに1を加算し、ステップS1803に戻る(ステップS1811)。   After the above processing, the CPU 401 registers IDj as a path DAG ID in the DN (step S1809). Further, the CPU 401 inputs IDj to the path DAG ID registration unit 439 (step S1810). Thereafter, the CPU 401 adds 1 to the variable i and returns to step S1803 (step S1811).

[パスDAG ID登録部439]
前述のステップS1810で使用されるパスDAG ID登録部439の処理内容を説明する。図20は、パスDAG ID登録部439として機能するCPU401の処理内容を示すフローチャートである。
[Pass DAG ID registration unit 439]
The processing contents of the path DAG ID registration unit 439 used in step S1810 described above will be described. FIG. 20 is a flowchart showing the processing contents of the CPU 401 functioning as the path DAG ID registration unit 439.

まず、CPU401は、パスDAG IDiを入力とする(ステップS1901)。次に、CPU401は、IDiのj番目の要素をi[j]とする(ステップS1902)。
ここで、CPU401は、i[1]が0または1であるか判定する(ステップS1903)。i[1]が0または1の時、CPU401は、アノテーション要素判別ビット列431の最後尾に0を追加し(ステップS1904)、XML要素の深さ数列433の最後尾にi[2]を加え(ステップS1905)、テキスト要素判別ビット列432の最後尾にi[1]を加える(ステップS1906)。
First, the CPU 401 receives a path DAG IDi (step S1901). Next, the CPU 401 sets the j-th element of IDi to i [j] (step S1902).
Here, the CPU 401 determines whether i [1] is 0 or 1 (step S1903). When i [1] is 0 or 1, the CPU 401 adds 0 to the end of the annotation element determination bit string 431 (step S1904), and adds i [2] to the end of the XML element depth number sequence 433 ( In step S1905), i [1] is added to the end of the text element determination bit string 432 (step S1906).

さらに、CPU401は、i[2]が0か否かを判定する(ステップS1907)。i[2]が0であれば、CPU401は、この時点で登録処理を終了する。これに対し、i[2]が0以外の場合、CPU401は、深さ別ID列リスト434にあるi[2]番目の数列の最後尾にi[3]を加え、登録処理を終了する(ステップS1908)。   Furthermore, the CPU 401 determines whether i [2] is 0 (step S1907). If i [2] is 0, the CPU 401 ends the registration process at this point. On the other hand, if i [2] is other than 0, the CPU 401 adds i [3] to the end of the i [2] -th number sequence in the depth-specific ID sequence list 434 and ends the registration process ( Step S1908).

一方、ステップS1903で否定結果の場合、すなわちi[1]が2また3の時、CPU401は、アノテーション要素判別ビット列431の最後尾に1を追加する(ステップS1910)。さらに、CPU401は、アノテーション要素の深さ数列438の最後尾にi[2]を加える(ステップS1911)。   On the other hand, in the case of a negative result in step S1903, that is, when i [1] is 2 or 3, the CPU 401 adds 1 to the end of the annotation element determination bit string 431 (step S1910). Further, the CPU 401 adds i [2] to the end of the annotation element depth sequence 438 (step S1911).

この後、CPU401は、i[1]が2であるか否かを判定する(ステップS1912)。i[1]が2の場合、CPU401は、アノテーション終了タグ判別ビット列435の最後尾に0を加えると共に、アノテーション開始タグID列436の最後尾にi[3]を加え、登録処理を終了する(ステップS1913、S1914)。   Thereafter, the CPU 401 determines whether i [1] is 2 (step S1912). When i [1] is 2, the CPU 401 adds 0 to the end of the annotation end tag determination bit string 435 and i [3] to the end of the annotation start tag ID string 436, and ends the registration process ( Steps S1913 and S1914).

これに対し、ステップS1912で否定結果が得られた場合、すなわちi[1]が3の場合、CPU401は、アノテーション終了タグ判別ビット列435の最後尾に1を加えると共に、アノテーション終了タグID列437の最後尾にi[3]を加え、登録処理を終了する(ステップS1915、S1916)。   On the other hand, if a negative result is obtained in step S 1912, that is, if i [1] is 3, the CPU 401 adds 1 to the end of the annotation end tag determination bit string 435 and the annotation end tag ID string 437. I [3] is added to the end, and the registration process ends (steps S1915 and S1916).

[検索動作の概要]
ここで、本実施例に係る検索動作を説明する。本実施例における検索動作は、ロケーションパス検索部420として機能するCPU401により実行される。CPU401は、検索クエリで与えられたロケーションパスに沿ってパスDAGを辿り、ロケーションパスの構造に合致したパスDAG要素のパスDAG IDを取得する。
[Overview of search operation]
Here, the search operation according to the present embodiment will be described. The search operation in this embodiment is executed by the CPU 401 functioning as the location path search unit 420. The CPU 401 follows the path DAG along the location path given by the search query, and acquires the path DAG ID of the path DAG element that matches the structure of the location path.

CPU401は、取得したパスDAG IDから、検索結果となる要素がXML要素かアノテーション要素か判定する。検索結果となる要素がXML要素の場合、CPU401は、XML要素検索部443として機能し、検索クエリに合致した数列データにおける要素の箇所を計算する。一方、検索結果となる要素がアノテーション要素の場合、CPU401は、アノテーション要素検索部444として機能し、検索クエリに合致した数列データにおける要素の箇所を計算する。   The CPU 401 determines from the acquired path DAG ID whether the element that is the search result is an XML element or an annotation element. If the element that is the search result is an XML element, the CPU 401 functions as the XML element search unit 443 and calculates the position of the element in the numerical sequence data that matches the search query. On the other hand, when the element that is the search result is an annotation element, the CPU 401 functions as the annotation element search unit 444 and calculates the position of the element in the sequence data that matches the search query.

ここで、XML要素検索部443とアノテーション要素検索部444は、数列に対して次のrankと、selectと、nearestと呼ばれる演算を実行する。
(1)rank(c,p):数列において、p番目の位置の要素にあるcの数
(2)select(c,n):数列において、n回目に出現するcの位置
(3)nearest(p,d):数列において、p番目より後ろの要素でd以下の値を持つ、pに最も近い要素の位置
Here, the XML element search unit 443 and the annotation element search unit 444 perform operations called “rank”, “select”, and “nearest” on the sequence.
(1) rank (c, p): number of c in the element at the p-th position in the number sequence (2) select (c, n): position of c appearing n times in the number sequence (3) nearest ( p, d): position of the element closest to p having a value less than or equal to d in the element after the pth in the sequence

ここでは、図16を参照して、一連の処理動作を説明する。図16は、パスDAG423と数列データを使用して、ロケーションパス「/e/c/d」に合致する要素を検索する例を示す。   Here, a series of processing operations will be described with reference to FIG. FIG. 16 shows an example of searching for an element matching the location path “/ e / c / d” using the path DAG 423 and the sequence data.

まず、CPU401は、ロケーションパスに沿ってパスDAGを辿ることで、パスDAG IDである(0,3,3)を得る。図16では、該当するパスDAG IDを破線で囲んで示している。ここで、パスDAG IDの1番目の要素が“0”の時はXML要素を示し、2番目の要素である“3”は深さを示している。   First, the CPU 401 obtains a path DAG ID (0, 3, 3) by following the path DAG along the location path. In FIG. 16, the corresponding path DAG ID is surrounded by a broken line. Here, when the first element of the path DAG ID is “0”, it indicates an XML element, and the second element “3” indicates a depth.

従って、CPU401は、深さ別ID列リスト434の3番目の数列(深さが“3”の位置の数列)において、パスDAG IDの3番目の要素である“3”を含む位置を探す。図16の場合、“3”は、深さ“3”の数列内の4番目にある。この要素も、図16では、破線で囲んで示している。   Therefore, the CPU 401 searches for a position including “3” that is the third element of the path DAG ID in the third number sequence (the number sequence at the position where the depth is “3”) in the depth-specific ID column list 434. In the case of FIG. 16, “3” is the fourth in the sequence of depth “3”. This element is also surrounded by a broken line in FIG.

次に、CPU401は、XML要素の深さ数列433について、select(3,4)を計算し、“3”が4回目に出現する位置である“14”を得る。次に、CPU401は、アノテーション要素判別ビット列431に対して、select(0,14)を計算する。アノテーション要素判別ビット列431では、XML要素の位置には0が登録されているためである。従って、この演算は、アノテーション要素判別ビット列431で、14回目に出現するXML要素の位置を求めることを意味する。ここでは、演算結果として“15”を得る。   Next, the CPU 401 calculates select (3, 4) for the depth sequence 433 of the XML element, and obtains “14”, which is the position where “3” appears for the fourth time. Next, the CPU 401 calculates select (0, 14) for the annotation element determination bit string 431. This is because 0 is registered at the position of the XML element in the annotation element determination bit string 431. Therefore, this calculation means obtaining the position of the XML element that appears for the 14th time in the annotation element determination bit string 431. Here, “15” is obtained as the calculation result.

図16の左上段に示すように、“15”に対応するDOM DAGの要素は、XML文書2のDOM DAGの“d”である。なお、“15”は、要素における開始タグの位置を示している。要素の終了タグの位置についても同様の方法で取得できる。   As shown in the upper left part of FIG. 16, the element of the DOM DAG corresponding to “15” is “d” of the DOM DAG of the XML document 2. “15” indicates the position of the start tag in the element. The position of the end tag of the element can be obtained in the same way.

[ロケーションパス検索部420]
図21は、ロケーションパス検索部420として機能するCPU401の処理を示すフローチャートである。
[Location path search unit 420]
FIG. 21 is a flowchart showing processing of the CPU 401 that functions as the location path search unit 420.

CPU401は、ロケーションパスに沿ってパスDAG423を辿り、到達した要素に対応するパスDAG IDをiとする(ステップ2001)。次に、CPU401は、IDiの1番目の要素をs、2番目の要素をdとする(ステップS2002)。また、CPU401は、変数jに1をセットする(ステップS2003)。さらに、CPU401は、Lを、検索対象のタグの開始位置と終了位置のペアを保持するための空のリストとする(ステップS2004)。   The CPU 401 follows the path DAG 423 along the location path, and sets the path DAG ID corresponding to the reached element to i (step 2001). Next, the CPU 401 sets s as the first element of IDi and s as the second element (step S2002). Further, the CPU 401 sets 1 to the variable j (step S2003). Further, the CPU 401 sets L as an empty list for holding a pair of a start position and an end position of a search target tag (step S2004).

ここで、CPU401は、要素sが0または1か判定する(ステップS2005)。要素sが0または1であれば、CPU401は、XML要素検索部443に対してiとjを入力し、得られたタグの開始位置、終了位置のタプルtを得る(ステップS2006)。   Here, the CPU 401 determines whether the element s is 0 or 1 (step S2005). If the element s is 0 or 1, the CPU 401 inputs i and j to the XML element search unit 443, and obtains a tuple t of the obtained tag start position and end position (step S2006).

次に、CPU401は、タプルtが(−1,−1)であるか否か判定する(ステップS2007)。タプルtが(−1,−1)でない場合、CPU401は、タプルtをリストLの最後尾に加え、jを1増やす(ステップS2008、S2009)。タプルtが(−1、−1)となるまでステップS2006〜S2009を繰り返す(ステップS2007)。なお、CPU401は、タプルtが(−1、−1)となるまで、CPU401は、ステップS2006〜S2009を繰り返す。そして、タプルtが(−1,−1)となると、CPU401は、リストLを出力し、検索処理を終了する(ステップS2014)。   Next, the CPU 401 determines whether or not the tuple t is (−1, −1) (step S2007). When the tuple t is not (−1, −1), the CPU 401 adds the tuple t to the tail of the list L and increments j by 1 (steps S2008 and S2009). Steps S2006 to S2009 are repeated until the tuple t becomes (−1, −1) (step S2007). The CPU 401 repeats steps S2006 to S2009 until the tuple t becomes (−1, −1). When the tuple t becomes (-1, -1), the CPU 401 outputs the list L and ends the search process (step S2014).

これに対し、ステップS2005で否定結果が得られた場合(この場合は、要素sが0と1のどちらでもない場合)、CPU401は、アノテーション要素検索部444に対してiとjを入力し、得られたタグの開始位置と終了位置のタプルをtとする(ステップS2010)。   On the other hand, if a negative result is obtained in step S2005 (in this case, the element s is neither 0 nor 1), the CPU 401 inputs i and j to the annotation element search unit 444, A tuple of the start position and end position of the obtained tag is set to t (step S2010).

ここで、CPU401は、タプルtが(−1,−1)であるか否か判定する(ステップS2011)。この場合も、タプルtが(−1,−1)でない場合、CPU401は、タプルtをリストLの最後尾に加え、変数jに1を加算する(ステップS2012、S2013)。そして、タプルtが(−1、−1)となるまで、CPU401は、ステップS2010〜S2013を繰り返す。そして、タプルtが(−1,−1)となると、CPU401は、リストLを出力し、検索処理を終了する(ステップS2014)。   Here, the CPU 401 determines whether or not the tuple t is (−1, −1) (step S2011). Also in this case, when the tuple t is not (−1, −1), the CPU 401 adds the tuple t to the tail of the list L and adds 1 to the variable j (steps S2012 and S2013). The CPU 401 repeats steps S2010 to S2013 until the tuple t becomes (-1, -1). When the tuple t becomes (-1, -1), the CPU 401 outputs the list L and ends the search process (step S2014).

[XML要素検索部443]
図22は、XML要素検索部443として機能するCPU401の処理を示すフローチャートである。
[XML element search unit 443]
FIG. 22 is a flowchart illustrating processing of the CPU 401 functioning as the XML element search unit 443.

まず、CPU401は、入力されたパスDAG IDをi、検索番号をnとする(ステップS2101)。次に、CPU201は、パスDAG IDiの2番目の要素をd、3番目の要素をjとする(ステップS2102)。さらに、CPU401は、深さ別ID列リスト434のd番目の数列にjが含まれる数をmとする(ステップS2103)。   First, the CPU 401 sets the input path DAG ID as i and the search number as n (step S2101). Next, the CPU 201 sets d as the second element of the path DAG IDi and j as the third element (step S2102). Further, the CPU 401 sets m as the number of j included in the d-th number sequence in the depth-specific ID sequence list 434 (step S2103).

ここで、CPU401は、mがnより小さいか判定する(ステップS2104)。mがnより少ない場合、CPU401は、2つの要素からなるタプル(−1,−1)を出力して探索処理を終了する(ステップS2105)。   Here, the CPU 401 determines whether m is smaller than n (step S2104). If m is less than n, the CPU 401 outputs a tuple (-1, -1) consisting of two elements and ends the search process (step S2105).

これに対し、mがn以上であった場合、CPU401は、深さ別ID列リスト434のd番目の数列に対して、select(j,n)を計算し、結果をnにセットする(ステップS2106)。   On the other hand, if m is greater than or equal to n, the CPU 401 calculates select (j, n) for the d-th number sequence in the depth-specific ID sequence list 434 and sets the result to n (step) S2106).

次に、CPU401は、XML要素の深さ数列433に対して、select(d,n)を計算し、その結果をnにセットする(ステップS2107)。   Next, the CPU 401 calculates select (d, n) for the depth sequence 433 of the XML element, and sets the result to n (step S2107).

さらに、CPU401は、アノテーション要素判別ビット列431に対して、select(0,n)を計算し、変数sにセットする(ステップS2108)。   Further, the CPU 401 calculates select (0, n) for the annotation element determination bit string 431 and sets it to the variable s (step S2108).

次に、CPU401は、XML要素の深さ数列433に対して、nearest(n,d)を計算し、結果を変数pにセットする(ステップS2109)。   Next, the CPU 401 calculates nearest (n, d) for the depth sequence 433 of the XML element, and sets the result to a variable p (step S2109).

その後、CPU401は、アノテーション要素判別ビット列431に対して、select(0,p)を計算し、結果をpにセットする(ステップS2110)。   Thereafter, the CPU 401 calculates select (0, p) for the annotation element determination bit string 431 and sets the result to p (step S2110).

次に、CPU401は、アノテーション要素判別ビット列431に対して、rank(1,n)を計算し、結果を変数rにセットする(ステップS2111)。   Next, the CPU 401 calculates rank (1, n) for the annotation element determination bit string 431 and sets the result in a variable r (step S2111).

さらに、CPU401は、アノテーション要素の深さ数列438に対して、nearest(r,d)を計算し、結果をrにセットする(ステップS2112)。   Further, the CPU 401 calculates nearest (r, d) for the depth sequence 438 of annotation elements, and sets the result to r (step S2112).

また、CPU401は、アノテーション要素判別ビット列431に対して、select(1,q)を計算し、変数qにセットする(ステップS2113)。   Further, the CPU 401 calculates select (1, q) for the annotation element determination bit string 431 and sets it to the variable q (step S2113).

また、CPU401は、変数eにpとqで小さい方をセットする(ステップS2114)。   Further, the CPU 401 sets the smaller one of p and q to the variable e (step S2114).

そして、CPU401は、sとeのペアのタプル(s,e)を出力する(ステップS2115)。   Then, the CPU 401 outputs a tuple (s, e) of a pair of s and e (step S2115).

[アノテーション要素検索部444]
図23は、アノテーション要素検索部444として機能するCPU401の処理を示すフローチャートである。
[Annotation element search unit 444]
FIG. 23 is a flowchart showing the processing of the CPU 401 functioning as the annotation element search unit 444.

まず、CPU401は、入力されたパスDAG IDをi、検索番号をnとする(ステップS2201)。次に、CPU401は、iの3番目の要素をjとする(ステップS2202)。また、CPU401は、アノテーション開始タグID列436にjが含まれる数をmとする(ステップS2203)。   First, the CPU 401 sets the input path DAG ID as i and the search number as n (step S2201). Next, the CPU 401 sets j as the third element of i (step S2202). Also, the CPU 401 sets m as the number of j included in the annotation start tag ID column 436 (step S2203).

ここで、CPU401は、mがnより小さいか否か判定する(ステップS2204)。mがnより小さい場合、CPU401は、2つの要素からなるタプル(−1,−1)を出力して検索処理を終了する(ステップS2205)。   Here, the CPU 401 determines whether m is smaller than n (step S2204). If m is smaller than n, the CPU 401 outputs a tuple (-1, -1) consisting of two elements and ends the search process (step S2205).

一方、mがn以上であった場合、CPU401は、アノテーション開始タグID列436に対して、select(j,n)を計算し、結果をmにセットする(ステップS2206)。   On the other hand, if m is greater than or equal to n, the CPU 401 calculates select (j, n) for the annotation start tag ID string 436 and sets the result to m (step S2206).

次に、CPU401は、アノテーション終了タグ判別ビット列435に対して、select(0,m)を計算し、結果をmにセットする(ステップS2207)。   Next, the CPU 401 calculates select (0, m) for the annotation end tag determination bit string 435 and sets the result to m (step S2207).

さらに、CPU401は、アノテーション要素判別ビット列431に対して、select(1,m)を計算し、変数sにセットする(ステップS2208)。   Further, the CPU 401 calculates select (1, m) for the annotation element determination bit string 431 and sets it to the variable s (step S2208).

また、CPU401は、アノテーション終了タグID列437に対して、select(j,n)を計算し、結果をmにセットする(ステップS2209)。   Further, the CPU 401 calculates select (j, n) for the annotation end tag ID column 437 and sets the result to m (step S2209).

その後、CPU401は、アノテーション終了タグ判別ビット列435に対して、select(1,m)を計算し、結果をmにセットする(ステップS2210)。   Thereafter, the CPU 401 calculates select (1, m) for the annotation end tag determination bit string 435, and sets the result to m (step S2210).

また、CPU401は、アノテーション要素判別ビット列431に対して、select(1,m)を計算し、変数eにセットする(ステップS2211)。   Further, the CPU 401 calculates select (1, m) for the annotation element determination bit string 431 and sets it to the variable e (step S2211).

さらに、CPU401は、sとeのペアのタプル(s,e)を出力する(ステップS2212)。   Further, the CPU 401 outputs a tuple (s, e) of a pair of s and e (step S2212).

[実施例の効果]
本実施例に係る構造化文書検索装置400では、パスDAGと数列データによりDOM DAGの構造を記述する手法を採用する。この場合、構造化文書検索装置400は、各XML文書と対応するアノテーションデータから作成されたDOM DAGを保持する必要がなく、前述した実施例に比してメモリ容量の消費量を大幅に低減することができる。
[Effect of Example]
In the structured document search apparatus 400 according to the present embodiment, a method of describing the structure of the DOM DAG using the path DAG and the numerical sequence data is adopted. In this case, the structured document search apparatus 400 does not need to hold the DOM DAG created from the annotation data corresponding to each XML document, and greatly reduces the memory capacity consumption compared to the above-described embodiment. be able to.

[第5の実施例]
定数オーダの計算量により、ビット列に対してrankやselectを計算することができるデータ構造として、簡潔ビットベクトルが知られている。また、数列データをデータ圧縮した状態で保持し、圧縮した状態のままrankやselectを効率良く計算することができるデータ構造として、ウェーブレット木が知られている。
[Fifth embodiment]
A concise bit vector is known as a data structure that can calculate rank and select for a bit string depending on the calculation amount of a constant order. In addition, a wavelet tree is known as a data structure that can hold numeric sequence data in a compressed state and efficiently calculate rank and select in the compressed state.

ウェーブレット木は、簡潔ビットベクトルを発展させたデータ構造であり、どちらも事前に計算のための辞書データが必要となる。辞書データの構築法、データ構造を用いたrankやselectの計算方法は、非特許文献2に記載された手法等を用いれば良い。   A wavelet tree is a data structure developed from a concise bit vector, and both require dictionary data for calculation in advance. As a method for constructing dictionary data and a method for calculating rank and select using the data structure, the method described in Non-Patent Document 2 may be used.

本実施例では、検索インデクス構築部454としての処理機能の実行後、簡易ビットベクトル・ウェーブレット木構築部455が、前述した公知の方法により、アノテーション終了タグ判別ビット列435、テキスト要素判別ビット列432、アノテーション要素判別ビット列431に対して簡潔ビットベクトルを生成すると共に、XML要素の深さ数列433、深さ別ID列リスト434、アノテーション開始タグID列436、アノテーション終了タグID列437、アノテーション要素の深さ数列438に対してウェーブレット木を生成する。   In this embodiment, after the processing function as the search index construction unit 454 is executed, the simple bit vector / wavelet tree construction unit 455 performs the annotation end tag determination bit string 435, the text element determination bit string 432, the annotation by the known method described above. A concise bit vector is generated for the element determination bit string 431, and an XML element depth number string 433, a depth-specific ID string list 434, an annotation start tag ID string 436, an annotation end tag ID string 437, and an annotation element depth A wavelet tree is generated for the sequence 438.

[実施例の効果]
本実施例に係る構造化文書検索装置400は、用意した簡潔ビットベクトル、ウェーブレット木を用いることにより、XML要素検索部443とアノテーション要素検索部444におけるrank演算及びselect演算を効率化することができる。
[Effect of Example]
The structured document search apparatus 400 according to the present embodiment can improve the rank operation and the select operation in the XML element search unit 443 and the annotation element search unit 444 by using the prepared simple bit vector and wavelet tree. .

[第6の実施例]
実運用面では、同じXML文書に対して、異なるアノテーションデータを追加し又は削除できることが望まれる。本実施例では、与えられたXML文書に対して既にインデクスが構築された状態において、インデクスの構成を大きく変更することなく、アノテーション要素群を追加する手法について説明する。
[Sixth embodiment]
In actual operation, it is desired that different annotation data can be added to or deleted from the same XML document. In the present embodiment, a method of adding an annotation element group without greatly changing the index configuration in a state where an index has already been constructed for a given XML document will be described.

アノテーション要素が追加されると、各要素の親の集合が変更される。このため、これまでパスDAG上で同一と考えられていた要素を別の要素として扱わなければならない。また、アノテーションを追加すると、テキスト領域が分割されるため、パスDAG IDの変更だけでなく、テキスト領域を表す要素の数も増える問題がある。また、アノテーションを追加すると、パスDAGの構造を変更するだけでなく、数列データにある数字cの一部を、これまで数列になかった数字とcからなる数列に置換する必要が発生する。   When an annotation element is added, the parent set of each element is changed. For this reason, an element that has been considered to be identical on the path DAG so far must be treated as another element. In addition, when an annotation is added, the text area is divided, so that not only the path DAG ID is changed, but also the number of elements representing the text area increases. Further, when an annotation is added, not only the structure of the path DAG is changed, but also a part of the number c in the number sequence data needs to be replaced with a number sequence consisting of a number and c that were not in the number sequence so far.

以下では、ウェーブレット木446に登録されている数列にある数字cの一部が、これまで数列になかった数字からなる数列Nに変更となった場合に、既存のウェーブレット木446にデータ構造を追加することで、変更時におけるrank、select、lookupを可能とする拡張ウェーブレット木445について説明する。   In the following, when a part of the number c in the number sequence registered in the wavelet tree 446 is changed to a number sequence N consisting of numbers that were not in the number sequence so far, a data structure is added to the existing wavelet tree 446 An extended wavelet tree 445 that enables rank, select, and lookup at the time of change will be described.

[拡張ウェーブレット木445]
図24は、拡張ウェーブレット木445の概要を示す図である。拡張ウェーブレット木445は、元の数列から構成されたウェーブレット木446、変更となった数字xが元の数列に登録されたどの数字になるかを示す数字変更表447、数列全体において、どの部分の数字が追加されたかを示す追加フラグ448、元の数列の各数字に対して、どの位置に追加されたかを示す数字別追加フラグ449、元の数列を構成する数字において、変更に関連した数字に対応した変更ウェーブレット450から構成される。
[Extended wavelet tree 445]
FIG. 24 is a diagram showing an outline of the extended wavelet tree 445. The extended wavelet tree 445 includes a wavelet tree 446 composed of the original number sequence, a number change table 447 indicating which number the changed number x is registered in the original number sequence, and which part of the entire number sequence An addition flag 448 indicating whether a number has been added, a number-specific addition flag 449 indicating which position is added to each number in the original number sequence, and a number related to the change in the numbers constituting the original number sequence It consists of a corresponding modified wavelet 450.

[拡張ウェーブレット木構築部451]
図25は、拡張ウェーブレット木構築部445として機能するCPU401の処理を示すフローチャートである。CPU401は、ウェーブレット木446に登録されている数列のp番目にある数字cが数列Nに変更された場合、以下の手順により、ウェーブレット木446を拡張する。
[Extended wavelet tree construction unit 451]
FIG. 25 is a flowchart showing processing of the CPU 401 functioning as the extended wavelet tree construction unit 445. When the p-th number c registered in the wavelet tree 446 is changed to the number N, the CPU 401 expands the wavelet tree 446 according to the following procedure.

まず、CPU401は、ウェーブレット木446に登録されている数列と同じ長さで全ての値が0で初期化された数列Bを用意する(ステップS2401)。次に、CPU401は、リストNの長さを|N|とし、数列Bのp番目以降に|N|−1個の“1”を追加する(ステップS2402)。   First, the CPU 401 prepares a number sequence B that has the same length as the number sequence registered in the wavelet tree 446 and is initialized with all values being 0 (step S2401). Next, the CPU 401 sets the length of the list N to | N | and adds | N | −1 “1” s after the p-th in the sequence B (step S2402).

この後、CPU401は、数列Bの簡潔ビットベクトルを作成し、これを追加フラグ448とする(ステップS2403)。次に、CPU401は、追加フラグ448のrank(p,c)を計算し、計算結果をqとする(ステップS2404)。   Thereafter, the CPU 401 creates a simple bit vector of the sequence B and sets it as an addition flag 448 (step S2403). Next, the CPU 401 calculates rank (p, c) of the additional flag 448, and sets the calculation result to q (step S2404).

ここで、CPU401は、ウェーブレット木446に登録されている数字cの個数をmとする(ステップS2405)。さらに、CPU401は、全ての値が0で初期化された長さmの数列Vを用意し、q番目以降に|N|−1個の“1”を追加する(ステップS2406)。   Here, the CPU 401 sets m as the number of numbers c registered in the wavelet tree 446 (step S2405). Further, the CPU 401 prepares a sequence m of length m that is initialized with all values being 0, and adds | N | −1 “1” s after the q-th (step S2406).

この後、CPU401は、数列Vの簡潔ビットベクトルを作成し、これを数字cに対応した数字別追加フラグ449とする(ステップS2407)。さらに、CPU401は、数列Nを保持するウェーブレット木を作成し、これを数字cに対応した変更ウェーブレット450とする(ステップS2408)。その後、CPU401は、変更された数列を構成する各数字が、元の数列を構成していたどの数字に対応するかを記述した数字変更表447を作成する(ステップS2409)。   Thereafter, the CPU 401 creates a concise bit vector of the sequence V and sets it as a number-by-number addition flag 449 corresponding to the number c (step S2407). Further, the CPU 401 creates a wavelet tree that holds the sequence N, and sets this as a modified wavelet 450 corresponding to the number c (step S2408). After that, the CPU 401 creates a number change table 447 that describes which numbers constituting the changed number sequence correspond to the numbers constituting the original number sequence (step S2409).

[拡張ウェーブレット木におけるrank計算部452]
図26は、拡張ウェーブレット木445についてrank計算を実行するrank計算部452として機能するCPU401の処理を示すフローチャートである。
[Rank calculation unit 452 in the extended wavelet tree]
FIG. 26 is a flowchart showing processing of the CPU 401 functioning as a rank calculation unit 452 that executes rank calculation on the extended wavelet tree 445.

まず、CPU401は、追加フラグ448に対してrank(0,p)を計算し、qとする(ステップS2501)。次に、CPU401は、数字変更表447から、cの元の数列における数字を取得し、これをdとする(ステップS2502)。次に、CPU401は、元のウェーブレット木446に対して、rank(c,q)を計算し、計算結果をrとする(ステップS2503)。   First, the CPU 401 calculates rank (0, p) for the additional flag 448 and sets it to q (step S2501). Next, the CPU 401 acquires the number in the original number sequence of c from the number change table 447 and sets it as d (step S2502). Next, the CPU 401 calculates rank (c, q) for the original wavelet tree 446, and sets the calculation result to r (step S2503).

ここで、CPU401は、cとdが同じか否か判定する(ステップS2504)。cとdが同じでない場合、CPU401はrを出力し、演算処理を終了する(ステップS2508)。   Here, the CPU 401 determines whether c and d are the same (step S2504). If c and d are not the same, the CPU 401 outputs r and ends the arithmetic processing (step S2508).

これに対し、cとdが同じ場合、CPU401は、追加フラグ448に対して、select(0,q)を計算し、計算結果をsとする(ステップS2505)。次に、CPU401は、dに対応した数字別追加フラグ449に対して、select(0,r)を計算し、計算結果をtとする(ステップS2506)。また、CPU401は、dに対応した数字別追加フラグ449に対して、rank(c,t+p−s)を計算し、計算結果を出力し、演算処理を終了する(ステップS2507)。   On the other hand, when c and d are the same, the CPU 401 calculates select (0, q) for the additional flag 448 and sets the calculation result to s (step S2505). Next, the CPU 401 calculates select (0, r) for the numerical addition flag 449 corresponding to d, and sets the calculation result to t (step S2506). Further, the CPU 401 calculates rank (c, t + ps) with respect to the numerical addition flag 449 corresponding to d, outputs the calculation result, and ends the arithmetic processing (step S2507).

[拡張ウェーブレット木におけるselect計算部453]
図27は、拡張ウェーブレット木445についてselect計算を実行するselect計算部453として機能するCPU401の処理を示すフローチャートである。
[Select Calculation Unit 453 in Extended Wavelet Tree]
FIG. 27 is a flowchart illustrating the processing of the CPU 401 functioning as the select calculation unit 453 that executes the select calculation for the extended wavelet tree 445.

まず、CPU401は、数字変更表447から、cの元の数列における数字を取得し、これをdとする(ステップS2601)。   First, the CPU 401 acquires the number in the original number sequence of c from the number change table 447 and sets it as d (step S2601).

ここで、CPU401は、cとdが異なるか否か判定する(ステップS2602)。cがdと異なる場合(肯定結果)、CPU401は、dに該当する追加ウェーブレット木に対して、select(c,n)を計算し、計算結果をsとする(ステップS2603)。さらに、CPU401は、dに対応した数字別追加フラグ449に対して、rank(0,s)を計算し、計算結果をnとする(ステップS2604)。   Here, the CPU 401 determines whether c and d are different (step S2602). When c is different from d (positive result), the CPU 401 calculates select (c, n) for the additional wavelet tree corresponding to d, and sets the calculation result to s (step S2603). Further, the CPU 401 calculates rank (0, s) for the numerical addition flag 449 corresponding to d, and sets the calculation result to n (step S2604).

このステップS2604の後、又はステップS2602で否定結果を得た後、CPU401は、dに対応した数字別追加フラグ449に対して、select(0,n)を計算し、計算結果をtとする(ステップS2606)。   After this step S2604 or after obtaining a negative result in step S2602, the CPU 401 calculates select (0, n) for the numerical addition flag 449 corresponding to d and sets the calculation result to t ( Step S2606).

次に、CPU401は、元のウェーブレット木446に対して、select(d,n)を計算し、計算結果をmとする(ステップS2607)。また、CPU401は、追加フラグ448に対して、select(0,m)を計算し、計算結果をuとする(ステップS2608)。   Next, the CPU 401 calculates select (d, n) for the original wavelet tree 446 and sets the calculation result to m (step S2607). Further, the CPU 401 calculates select (0, m) for the addition flag 448 and sets the calculation result to u (step S2608).

ここで、CPU401は、cとdが同じか否か判定する(ステップS2609)。cとdが同じ場合、CPU401は、uを出力して計算処理を終了する(ステップS2610)。一方、cとdが異なる場合、CPU401は、s−t+uを計算結果として出力し、計算処理を終了する(ステップS2611)。   Here, the CPU 401 determines whether c and d are the same (step S2609). When c and d are the same, the CPU 401 outputs u and ends the calculation process (step S2610). On the other hand, if c and d are different, the CPU 401 outputs s−t + u as the calculation result, and ends the calculation process (step S2611).

[実施例の効果]
本実施例に係る構造化文書検索装置400によれば、同じXML文書に対して、異なるアノテーションデータを追加し又は削除することが可能になる。
[Effect of Example]
According to the structured document search apparatus 400 according to the present embodiment, different annotation data can be added to or deleted from the same XML document.

[他の実施例]
本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば上述した実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備える場合に限定されるものではない。
[Other examples]
The present invention is not limited to the above-described embodiments, and includes various modifications. For example, the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to the case where all the configurations described are provided.

また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能である。また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成を追加し、削除し、又は置換することもできる。   In addition, a part of the configuration of a certain embodiment can be replaced with the configuration of another embodiment. It is also possible to add the configuration of another embodiment to the configuration of one embodiment. Further, with respect to a part of the configuration of each embodiment, another configuration can be added, deleted, or replaced.

また、上述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上述した各構成、機能等は、CPUがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。   Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Further, each of the above-described configurations, functions, and the like may be realized by software by the CPU interpreting and executing a program that realizes each function.

各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。   Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.

また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。   Further, the control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

400 構造化文書検索装置
401 CPU(中央演算装置)
402 主記憶装置
403A 補助記憶装置
403B 外部記憶装置
404 リムーバブルメディア
405 ネットワーク
406 インターフェース部
407 XML文書集合
408 アノテーションデータ集合
409 DOM木構築部(XML文書用)
410 DOM木構築部(アノテーションデータ用)
411 文書構造リスト構築部
412 文書構造リスト
413 テキスト要素リスト
414 テキストデータリスト
415 テキスト共有DOM木構築部
416 テキスト共有DOM木
417 テキストデータ・テキスト要素リスト構築部
418 テキスト割当部
419 親子関係解析・登録部
420 ロケーションパス検索部
421 DOM DAG
422 DOM DAG構築部
423 パスDAG
424 転置インデクス構築部
425 転置インデクス
426 DOM DAG要素リストソート部
427 深さ割当部
428 パスDAG ID取得部
429 パスDAG要素生成・登録部
430 検索インデクス
431 アノテーション要素判別ビット列
432 テキスト要素判別ビット列
433 XML要素の深さ数列
434 深さ別ID列リスト
435 アノテーション終了タグ判別ビット列
436 アノテーション開始タグID列
437 アノテーション終了タグID列
438 アノテーション要素の深さ数列
439 パスDAG ID登録部
440 検索インデクス登録部
441 アノテーション終了タグ挿入部
442 転置インデクス登録部
443 XML要素検索部
444 アノテーション要素検索部
445 拡張ウェーブレット木
446 元の数列から構成されたウェーブレット木
447 数字変更表
448 追加フラグ
449 数字別追加フラグ
450 変更ウェーブレット木
451 拡張ウェーブレット木構築部
452 拡張ウェーブレット木におけるrank計算部
453 拡張ウェーブレット木におけるselect計算部
454 検索インデクス構築部
455 簡易ビットベクトル・ウェーブレット木構築部
400 Structured Document Retrieval Device 401 CPU (Central Processing Unit)
402 Main storage device 403A Auxiliary storage device 403B External storage device 404 Removable media 405 Network 406 Interface unit 407 XML document set 408 Annotation data set 409 DOM tree construction unit (for XML document)
410 DOM tree construction department (for annotation data)
411 Document structure list construction unit 412 Document structure list 413 Text element list 414 Text data list 415 Text sharing DOM tree construction unit 416 Text sharing DOM tree 417 Text data / text element list construction unit 418 Text allocation unit 419 Parent-child relationship analysis / registration unit 420 Location Path Search Unit 421 DOM DAG
422 DOM DAG construction part 423 path DAG
424 Transposition index construction unit 425 Transposition index 426 DOM DAG element list sort unit 427 Depth allocation unit 428 Path DAG ID acquisition unit 429 Path DAG element generation / registration unit 430 Search index 431 Annotation element discrimination bit string 432 Text element discrimination bit string 433 XML element Depth number sequence 434 Depth ID sequence list 435 Annotation end tag discrimination bit sequence 436 Annotation start tag ID sequence 437 Annotation end tag ID sequence 438 Annotation element depth number sequence 439 Path DAG ID registration unit 440 Search index registration unit 441 End of annotation Tag insertion unit 442 Transposed index registration unit 443 XML element search unit 444 Annotation element search unit 445 Extended wavelet tree 446 Consists of original sequence Wavelet tree 447 Number change table 448 Additional flag 449 Number-specific addition flag 450 Changed wavelet tree 451 Extended wavelet tree construction unit 452 Rank calculation unit 453 in extended wavelet tree Select calculation unit 454 in extended wavelet tree Search index construction unit 455 Simple bit vector・ Wavelet tree construction department

Claims (12)

プログラムを実行するプロセッサと、
プログラムを格納する第1の記憶領域と、
木構造条件を満たす構造化文書及び当該文書に付されたアノテーションデータを記憶する第2の記憶領域と、
前記構造化文書のタグの包含関係と前記アノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、構造化文書のテキストを割り当ててテキスト共有DOM木を生成する文書構造リスト構築部と、
検索クエリを入力する入力装置と、
前記検索クエリとして与えられたロケーションパスに合致する要素を、前記テキスト共有DOM木から検索するロケーションパス検索部と
を有する構造化文書検索装置。
A processor for executing the program;
A first storage area for storing a program;
A second storage area for storing a structured document satisfying the tree structure condition and annotation data attached to the document;
By assigning the text of the structured document to the structure in which the root element of the DOM (Document Object Model) tree obtained individually from the inclusion relation of the tags of the structured document and the inclusion relation of the tags of the annotation data is assigned, the text A document structure list construction unit for generating a shared DOM tree;
An input device for entering a search query;
A structured document search apparatus comprising: a location path search unit that searches the text sharing DOM tree for an element that matches a location path given as the search query.
プログラムを実行するプロセッサと、
プログラムを格納する第1の記憶領域と、
木構造条件を満たす構造化文書及び当該文書に付されたアノテーションデータを記憶する第2の記憶領域と、
前記構造化文書のタグの包含関係と前記アノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、異なるDOM木のタグ間における包含関係を組み入れ、さらに当該組み入れ後の構造に対して構造化文書のテキストを割り当ててDOM DAG(Directed Acyclic Graph)を生成する文書構造リスト構築部と、
検索クエリを入力する入力装置と、
前記検索クエリとして与えられたロケーションパスに合致する要素を、前記DOM DAGから検索するロケーションパス検索部と
を有する構造化文書検索装置。
A processor for executing the program;
A first storage area for storing a program;
A second storage area for storing a structured document satisfying the tree structure condition and annotation data attached to the document;
Inclusion relationship between tags of different DOM trees with respect to a structure in which a root element of a DOM (Document Object Model) tree obtained individually from the inclusion relationship of tags of the structured document and the inclusion relationship of tags of the annotation data is shared A document structure list construction unit that generates a DOM DAG (Directed Acyclic Graph) by assigning the text of the structured document to the structure after incorporation,
An input device for entering a search query;
A structured document search apparatus comprising: a location path search unit that searches the DOM DAG for an element that matches a location path given as the search query.
請求項2に記載の構造化文書検索装置において、
複数の前記DOM DAGの構造を集約したパスDAGを生成するパスDAG要素生成・登録部と、
前記パスDAGの要素のIDであるパスDAG IDと、対応関係にある1つ又は複数の前記DOM DAGの要素の位置情報とで構成される転置インデクスを構築する転置インデクス構築部とを有し、
前記ロケーションパス検索部は、前記パスDAGと前記転置インデクスとに基づいて、検索クエリであるロケーションパスに合致する要素が出現する箇所を計算する
ことを特徴とする構造化文書検索装置。
The structured document search device according to claim 2,
A path DAG element generation / registration unit that generates a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A transposition index construction unit that constructs a transposition index composed of a path DAG ID that is an ID of the element of the path DAG and position information of one or more elements of the DOM DAG that are in a correspondence relationship;
The said location path search part calculates the location where the element which corresponds to the location path which is a search query appears based on the said path | pass DAG and the said transposition index. The structured document search apparatus characterized by the above-mentioned.
請求項2に記載の構造化文書検索装置において、
複数の前記DOM DAGの構造を集約したパスDAGを生成するパスDAG要素生成・登録部と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する検索インデクス構築部とを有し、
前記ロケーションパス検索部は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記ビット列と前記数列データの走査により計算する
ことを特徴とする構造化文書検索装置。
The structured document search device according to claim 2,
A path DAG element generation / registration unit that generates a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A search index construction unit that constructs a search index that holds the path DAG, a bit string, and numerical sequence data that stores a type of location path corresponding to each element of the DOM DAG;
The location path search unit calculates a path DAG ID corresponding to a location path that is a search query from the path DAG, and a location where an element specified by the path DAG ID obtained by the calculation appears is the bit string and the A structured document search apparatus characterized by performing calculation by scanning numerical sequence data.
請求項2に記載の構造化文書検索装置において、
複数の前記DOM DAGの構造を集約したパスDAGを生成するパスDAG要素生成・登録部と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する検索インデクス構築部と、
前記検索インデクスが保持する前記ビット列及び前記数列データに基づいて、簡潔ビットベクトル及びウェーブレット木を生成する簡潔ビットベクトル・ウェーブレット木生成部とを有し、
前記ロケーションパス検索部は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記簡潔ビットベクトル又は前記ウェーブレット木に対するrank演算及びselect演算により計算する
ことを特徴とする構造化文書検索装置。
The structured document search device according to claim 2,
A path DAG element generation / registration unit that generates a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A search index construction unit that constructs a search index that holds the path DAG, a bit string, and numeric data that stores a type of location path corresponding to each element of the DOM DAG;
A concise bit vector / wavelet tree generation unit for generating a concise bit vector and a wavelet tree based on the bit string and the sequence data held by the search index;
The location path search unit calculates a path DAG ID corresponding to a location path which is a search query from the path DAG, and a location where an element specified by the path DAG ID obtained by the calculation appears is the concise bit vector. Alternatively, the structured document search apparatus, wherein the calculation is performed by a rank operation and a select operation on the wavelet tree.
請求項5に記載の構造化文書検索装置において、
アノテーションデータの追加により、前記ウェーブレット木に登録されている数列の一部の数字が他の数列へ置き換えられた場合に、前記ウェーブレット木を、当該ウェーブレット木に対する変更情報を含む拡張ウェーブレット木に変換する拡張ウェーブレット木構築部を有し、
前記ロケーションパス検索部は、前記rank演算及びselect演算に前記拡張ウェーブレット木を使用する
ことを特徴とする構造化文書検索装置。
The structured document search apparatus according to claim 5,
When a part of a number sequence registered in the wavelet tree is replaced with another number sequence by adding annotation data, the wavelet tree is converted into an extended wavelet tree including change information for the wavelet tree. Has an extended wavelet tree construction department,
The location path search unit uses the extended wavelet tree for the rank operation and the select operation.
木構造条件を満たす構造化文書のタグの包含関係と当該文書に付されたアノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、構造化文書のテキストを割り当ててテキスト共有DOM木を生成する第1の処理と、
検索クエリとして与えられたロケーションパスに合致する要素を、前記テキスト共有DOM木から検索する第2の処理と
をコンピュータに実行させるプログラム。
For a structure in which the root element of a DOM (Document Object Model) tree obtained individually from the inclusion relation of tags of structured documents that satisfy the tree structure condition and the inclusion relation of tags of annotation data attached to the document is shared, A first process of assigning text of a structured document and generating a text sharing DOM tree;
A program that causes a computer to execute a second process of searching an element that matches a location path given as a search query from the text sharing DOM tree.
木構造条件を満たす構造化文書のタグの包含関係と当該文書に付されたアノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、異なるDOM木のタグ間における包含関係を組み入れ、さらに当該組み入れ後の構造に構造化文書のテキストを割り当ててDOM DAG(Directed Acyclic Graph)を生成する第1の処理と、
検索クエリとして与えられたロケーションパスに合致する要素を、前記DOM DAGから検索する第2の処理と
をコンピュータに実行させるプログラム。
For a structure in which the root element of a DOM (Document Object Model) tree obtained individually from the inclusion relation of tags of structured documents that satisfy the tree structure condition and the inclusion relation of tags of annotation data attached to the document is shared, A first process of incorporating a containment relationship between tags of different DOM trees, and assigning a text of a structured document to the structure after the incorporation, and generating a DOM DAG (Directed Acyclic Graph);
A program that causes a computer to execute a second process of searching the DOM DAG for an element that matches a location path given as a search query.
請求項8に記載のプログラムは、コンピュータに実行させる処理として、
複数の前記DOM DAGの構造を集約したパスDAGを生成する第3の処理と、
前記パスDAGの要素のIDであるパスDAG IDと、対応関係にある1つ又は複数の前記DOM DAGの要素の位置情報とで構成される転置インデクスを構築する第4の処理とを更に有し、
前記第2の処理は、前記パスDAGと前記転置インデクスとに基づいて、検索クエリであるロケーションパスに合致する要素が出現する箇所を計算する
ことを特徴とするプログラム。
The program according to claim 8 is a process executed by a computer.
A third process for generating a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A fourth process for constructing a transposed index composed of a path DAG ID that is an ID of the element of the path DAG and position information of one or more elements of the DOM DAG that are in a corresponding relationship; ,
The program according to the second aspect is characterized in that, based on the path DAG and the transposed index, a portion where an element that matches a location path that is a search query appears is calculated.
請求項8に記載のプログラムは、コンピュータに実行させる処理として、
複数の前記DOM DAGの構造を集約したパスDAGを生成する第3の処理と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する第5の処理とを更に有し、
前記第2の処理は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記ビット列と前記数列データの走査により計算する
ことを特徴とするプログラム。
The program according to claim 8 is a process executed by a computer.
A third process for generating a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A fifth process for constructing a search index that holds the path DAG, a bit string, and numerical sequence data that stores a type of location path corresponding to each element of the DOM DAG;
In the second process, a path DAG ID corresponding to a location path that is a search query is calculated from the path DAG, and a place where an element specified by the path DAG ID obtained by the calculation appears is the bit string and the A program characterized by being calculated by scanning numerical data.
請求項8に記載のプログラムは、コンピュータに実行させる処理として、
複数の前記DOM DAGの構造を集約したパスDAGを生成する第3の処理と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する第5の処理と、
前記検索インデクスが保持する前記ビット列及び前記数列データに基づいて、簡潔ビットベクトル及びウェーブレット木を生成する第6の処理とを更に有し、
前記第2の処理は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記簡潔ビットベクトル又は前記ウェーブレット木に対するrank演算及びselect演算により計算する
ことを特徴とするプログラム。
The program according to claim 8 is a process executed by a computer.
A third process for generating a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A fifth process for constructing a search index that holds the path DAG, a bit string, and numerical sequence data that stores a type of location path corresponding to each element of the DOM DAG;
A sixth process for generating a concise bit vector and a wavelet tree based on the bit string and the number sequence data held by the search index;
In the second process, a path DAG ID corresponding to a location path that is a search query is calculated from the path DAG, and a place where an element specified by the path DAG ID obtained by the calculation appears is the concise bit vector. Alternatively, the program is calculated by a rank operation and a select operation on the wavelet tree.
請求項11に記載のプログラムは、コンピュータに実行させる処理として、
アノテーションデータの追加により、前記ウェーブレット木に登録されている数列の一部の数字が他の数列へ置き換えられた場合に、前記ウェーブレット木を、当該ウェーブレット木に対する変更情報を含む拡張ウェーブレット木に変換する第7の処理を有し、
前記第2の処理は、前記rank演算及びselect演算に前記拡張ウェーブレット木を使用する
ことを特徴とするプログラム。
The program according to claim 11 is a process to be executed by a computer.
When a part of a number sequence registered in the wavelet tree is replaced with another number sequence by adding annotation data, the wavelet tree is converted into an extended wavelet tree including change information for the wavelet tree. Having a seventh process,
In the program, the second process uses the extended wavelet tree for the rank operation and the select operation.
JP2012117985A 2012-05-23 2012-05-23 Structured document retrieval device and program Pending JP2013246522A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012117985A JP2013246522A (en) 2012-05-23 2012-05-23 Structured document retrieval device and program
CN2013100571978A CN103425719A (en) 2012-05-23 2013-02-22 Structured document retrieval device and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012117985A JP2013246522A (en) 2012-05-23 2012-05-23 Structured document retrieval device and program

Publications (1)

Publication Number Publication Date
JP2013246522A true JP2013246522A (en) 2013-12-09

Family

ID=49650472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012117985A Pending JP2013246522A (en) 2012-05-23 2012-05-23 Structured document retrieval device and program

Country Status (2)

Country Link
JP (1) JP2013246522A (en)
CN (1) CN103425719A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151988A (en) * 2017-03-14 2018-09-27 Phcホールディングス株式会社 Electronic diagnostic chart device and program
JP2020115303A (en) * 2019-01-18 2020-07-30 ハーディス株式会社 Natural language parsing system, parsing method and program

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6434162B2 (en) * 2015-10-28 2018-12-05 株式会社東芝 Data management system, data management method and program
CN107256217B (en) * 2017-04-19 2020-10-02 江苏师范大学 Quick query method of XML data
CN107862728B (en) * 2017-09-05 2021-04-06 平安普惠企业管理有限公司 Picture label adding method and device and computer readable storage medium
CN110471888A (en) * 2018-05-09 2019-11-19 株式会社日立制作所 A kind of method, apparatus of automatic data collection, medium, equipment and system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100336061C (en) * 2003-08-08 2007-09-05 富士通株式会社 Multimedia object searching device and methoed
JP2006127235A (en) * 2004-10-29 2006-05-18 Toshiba Corp Structured document management system, structured document management method and program
CN101290625A (en) * 2008-06-11 2008-10-22 华东师范大学 XML document storage and search method
US8296722B2 (en) * 2008-10-06 2012-10-23 International Business Machines Corporation Crawling of object model using transformation graph

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151988A (en) * 2017-03-14 2018-09-27 Phcホールディングス株式会社 Electronic diagnostic chart device and program
JP7100960B2 (en) 2017-03-14 2022-07-14 Phcホールディングス株式会社 Electronic medical record device and program
JP2020115303A (en) * 2019-01-18 2020-07-30 ハーディス株式会社 Natural language parsing system, parsing method and program
JP7095874B2 (en) 2019-01-18 2022-07-05 ハーディス株式会社 Natural language analysis system, analysis method and program

Also Published As

Publication number Publication date
CN103425719A (en) 2013-12-04

Similar Documents

Publication Publication Date Title
US20210382927A1 (en) System and method for hierarchically organizing documents based on document portions
CN103299292B (en) For the treatment of method and the equipment thereof of natural language and mathematical formulae
JP2013246522A (en) Structured document retrieval device and program
JP6173848B2 (en) Document classification device
CN106489142A (en) The visualization of publication scope and analysis
JP2006091994A (en) Device, method and program for processing document information
Nargesian et al. Data lake organization
Rantala et al. How to create easily a data analytic semantic portal on top of a SPARQL endpoint: introducing the configurable Sampo-UI framework
Staar et al. Corpus processing service: a knowledge graph platform to perform deep data exploration on corpora
Rayson et al. Towards interactive multidimensional visualisations for corpus linguistics
Papadakos et al. On exploiting static and dynamically mined metadata for exploratory web searching
Sunuwar et al. Comparative analysis of relational and graph databases for data provenance: Performance, queries, and security considerations
Peña et al. Linked open data visualization revisited: a survey
Maria Brunetti et al. User-centered design and evaluation of overview components for semantic data exploration
Wei et al. Management of scientific documents and visualization of citation relationships using weighted key scientific terms
Whitehead et al. A tool for visualizing and exploring relationships among cancer-related patents
Cribbin Augmenting citation chain aggregation with article maps
Peng et al. PZXG: A genealogy data service platform for kinship management and application
Wu et al. Plexus: an interactive visualization tool for analyzing public emotions from Twitter data
Brunetti Design and evaluation of overview components for effective semantic data exploration
Xiao et al. CKM: a shared visual analytical tool for large-scale analysis of audio-video interviews
Ferré Reconciling expressivity and usability in information access
Holstrom et al. Studying Subject Ontogeny at Scale in a Polyhierarchical Indexing Language
Tang et al. Efficient web-based data imputation with graph model
Lettieri et al. Nets of legal information connecting and displaying heterogeneous legal sources