JP5439606B1 - 構造化文書管理装置、方法およびプログラム - Google Patents

構造化文書管理装置、方法およびプログラム Download PDF

Info

Publication number
JP5439606B1
JP5439606B1 JP2012542303A JP2012542303A JP5439606B1 JP 5439606 B1 JP5439606 B1 JP 5439606B1 JP 2012542303 A JP2012542303 A JP 2012542303A JP 2012542303 A JP2012542303 A JP 2012542303A JP 5439606 B1 JP5439606 B1 JP 5439606B1
Authority
JP
Japan
Prior art keywords
structural condition
condition
structural
query
structured document
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.)
Active
Application number
JP2012542303A
Other languages
English (en)
Other versions
JPWO2014038069A1 (ja
Inventor
洋介 黒田
稔 稲田
雅一 服部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Application granted granted Critical
Publication of JP5439606B1 publication Critical patent/JP5439606B1/ja
Publication of JPWO2014038069A1 publication Critical patent/JPWO2014038069A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8358Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8373Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

構造化文書管理装置(1)は、階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付ける検索インタフェース部(26)と、クエリデータを、複数の構造条件を含む要素単位に分割する構造条件分割部(27)と、分割された前記構造条件の種類が構造化文書の上位の階層から下位の階層を指定する子孫構造条件以外であった場合、前記構造条件を、構造条件の前後の前記要素に影響を与えないようにそれぞれの前記構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換える構造条件書換え部(28)と、前記構造条件、及び書換えクエリとを含むクエリデータを入力として、検索結果を出力するクエリ実行部(29)と、を備える。

Description

本発明の実施形態は、構造化文書管理装置、方法およびプログラムに関する。
従来、XML(Extensible Markup Language)などで記述された構造化文書データを記憶・検索するための構造化文書管理装置が知られている。構造化文書管理装置における構造化文書データの検索のために、RDBMS(Relational Database Managemant System)における問い合わせ言語SQLのように、XMLデータに対する問い合わせ言語XQuery(XML Query Language)が策定されており、多くの構造化文書管理装置でサポートされている。
XQueryは、XMLデータ集合をデータベースのように扱うための言語であり、条件に合致するデータ集合の取り出しや集計・分析を行うための方法が提供されている。XMLデータは親子や兄弟などの要素が組み合わさった階層化された論理構造(階層構造)を持つため、条件にはこの階層構造に関する条件(構造条件)を指定することができる。
構造条件の処理には、構造化文書管理装置が記憶している構造化文書データが条件に合致する構造を持つかを照合する構造照合処理を行う必要がある。この構造照合処理は、構造条件が上位の階層から下位の階層を指定する処理(子孫構造条件)のみであれば比較的高速に処理することが可能であるが、下位の階層から上位の階層を指定する処理(先祖構造条件)や、同一階層の前後を指定する処理(兄弟構造条件)、構造条件の中にXMLデータに含まれる要素の順序関係を指定する処理(順序構造条件)が含まれる場合は、高速に処理することが難しい。
これに対して先祖構造条件、兄弟構造条件、及び順序構造条件を子孫構造条件と結合演算の組み合わせに変換することにより高速な処理を実現する試みが実施されている。例えば、構造ガイドと呼ばれる登録文書を構成するタグに付与したIDを利用する方法がある。また、XQuery内の先祖構造条件、兄弟構造条件及び順序構造条件を同じXQueryとして書き換えることによっても実現可能である。
しかしながら、構造ガイドと呼ばれる文書を登録する際に割り当てたIDを必要とするため、構造化文書装置に登録されていない外部のリソースに対して処理する場合や、XQueryの内部で一時的に生成される構造化文書に対しては、あらかじめ構造ガイドを決定することができない。そのようなケースにおいては、先祖構造条件、兄弟構造条件及び順序構造条件を変換した実行計画(プラン)を生成できないため、構造照合処理の効率が悪くなる問題が存在する。またXQueryを、構造ガイドを利用した独自の形式に変換する処理が必要であるため、構成が複雑になってしまう問題がある。
また、構造条件を書き換える際に、対象となる構造条件より前に記述された構造条件を全て書き換える必要があるため、書換えのオーバーヘッドが大きい問題がある。また、1つの構造化文書を対象とすることを想定しているため、構造化文書集合に対して書き換えたXQueryを適用すると、構造化文書集合に対する絞り込み条件が活用されず、性能が悪くなる場合がある。あるいは1文書ごとにXQueryを適用する必要があるため性能が悪くなってしまう。
特開2007−226452号公報
XPath: Looking Forward/Dan Olteanu,Holger Meuss,Tim Furche,Francois Bry/Insitute for Computer Schience and Center fo Information and Language Processing Uniceristy of Munich,Germany(2002)
本発明が解決しようとする課題は、単純な構成で高速な構造総合処理を実現することができる構造化文書管理装置、方法およびプログラムを提供することである。
実施形態の構造化文書管理装置は、構造化文書データ受付部と、構造化文書データ記憶部と、クエリデータ受付部と、構造条件分割部と、構造条件書換え部と、クエリ実行部を備える。構造化文書データ受付部は、階層化された論理構造を有する構造化文書データの入力を受け付ける。構造化文書データ記憶部は、前記構造化文書データを記憶する。クエリデータ受付部は、クエリデータの入力を受け付ける。構造条件分割部は、入力されたクエリデータ内の構造条件部分のみを切り出して分割する。構造条件書換え部は、切り出した構造条件を軸の種類に応じて書き換えて、分割したクエリデータの他の部分と結合する。クエリ実行部は、前記構造条件書換え部が出力したクエリを実行する。
第1の実施形態の構造化文書管理システムのシステム構築例を示す模式図。 第1の実施形態のサーバおよびクライアント端末のモジュール構成図。 第1の実施形態のサーバおよびクライアント端末の概略構成を示すブロック図。 第1の実施形態の構造化文書DBに登録される構造化文書データの一例を示す説明図。 第1の実施形態のクエリデータの一例を示す説明図。 第1の実施形態の構造条件を分類及び、処理内容の一覧の一例を示す模式図。 第1の実施形態のクエリデータについて構造条件の分割処理を行った結果を示す説明図。 第1の実施形態の構造条件分割処理で、分割される構造条件の一覧を示す説明図。 第1の実施形態の構造条件書換え処理の流れを示すフローチャート。 第1の実施形態の構造条件書換え処理を、構造条件書換え部で書き換える際に必要なルール一覧の一例を示す説明図。 第1の実施形態のクエリデータを書き換えた結果の一例を示す説明図。 第1の実施形態のクエリデータの結果データを示す説明図。 第2の実施形態のクエリデータの一例を示す説明図。 第2の実施形態のクエリデータについて構造条件の分割処理を行った結果を示す説明図。 第2の実施形態の構造条件書換え処理の流れを示すフローチャート。 第2の実施形態の構造条件書換え処理を、構造条件書換え部で書き換える際に必要なルール一覧の一例を示す説明図。 第2の実施形態のクエリデータを書き換えた結果の一例を示す説明図。 第2の実施形態のクエリデータの結果データを示す説明図。
以下、実施形態の構造化文書管理装置を図面を参照して説明する。
(第1の実施形態)
まず、第1の実施形態について、図1〜図12を参照して説明する。図1は、第1の実施形態にかかる構造化文書管理システムのシステム構築例を示す模式図である。ここでは、実施形態の構造化文書管理システムとして、図1に示すように、構造化文書管理装置であるサーバコンピュータ(以下、サーバという。)1に、LAN(Local Area Network)等のネットワーク2を介して、クライアントコンピュータ(以下、クライアント端末という。)3が複数台接続されたサーバクライアントシステムを想定する。
図2は、サーバ1およびクライアント端末3のモジュール構成図である。サーバ1およびクライアント端末3は、例えば、通常のコンピュータを利用したハードウェア構成を有している。すなわち、サーバ1およびクライアント端末3は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、媒体駆動装置105、通信制御装置106、表示部107、入力部108、及びバスコントローラ109を備えている。
CPU101は、各種情報処理を実行する。ROM102は、BIOSなどを記憶した読出し専用メモリである。RAM103は、各種データを書換え可能に記憶する。HDD104は、各種データベースとして機能するとともに各種のプログラムを格納する。媒体駆動装置105は、記憶媒体110を用いて情報を保管したり外部に情報を配布したり外部から情報を入手するためのCD−ROMドライブ等である。
通信制御装置106は、ネットワーク2を介して外部の他のコンピュータと通信により情報を伝達する。表示部107は、処理経過や結果等を操作者に表示するCRT(Cathode Ray Tube)やLCD(Liquid Cristal Display)等である。入力部108は、操作者がCPU101に命令や情報等を入力するためのキーボードやマウス等である。バスコントローラ109は、各部間で送受信されるデータを調停する。
このようなサーバ1およびクライアント端末3では、ユーザが電源を投入するとCPU101がROM102内のローダーというプログラムを起動させ、HDD104よりOS(Operating System)というコンピュータのハードウェアとソフトウェアとを管理するプログラムをRAM103に読み込み、このOSを起動させる。このようなOSは、ユーザの操作に応じてプログラムを起動したり、情報を読み込んだり、保存を行ったりする。OSのうち代表的なものとしては、Windows(登録商標)、UNIX(登録商標)等が知られている。これらのOS上で動作するプログラムをアプリケーションプログラムと呼んでいる。なお、アプリケーションプログラムは、所定のOS上で動作するものに限らず、後述の各種処理の一部の実行をOSに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやOSなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
ここで、サーバ1は、アプリケーションプログラムとして、構造化文書管理プログラムをHDD104に記憶している。この意味で、HDD104は、構造化文書管理プログラムを記憶する記憶媒体として機能する。また、一般的には、サーバ1のHDD104にインストールされるアプリケーションプログラムは、CD−ROMやDVDなどの各種の光ディスク、各種光磁気ディスク、フレキシブルディスクなどの各種磁気ディスク、半導体メモリ等の各種方式のメディア等の記憶媒体110に記録されて提供される。このため、CD−ROM等の光情報記録メディアやFD等の磁気メディア等の可搬性を有する記憶媒体110も、構造化文書管理プログラムを記憶する記憶媒体となり得る。さらには、構造化文書管理プログラムは、例えば通信制御装置106を介して外部から取り込まれ、HDD104にインストールされてもよい。
サーバ1は、OS上で動作する構造化文書管理プログラムが起動すると、この構造化文書管理プログラムに従い、CPU101が各種の演算処理を実行して各部を集中的に制御する。一方、クライアント端末3は、OS上で動作するアプリケーションプログラムが起動すると、このアプリケーションプログラムに従い、CPU101が各種の演算処理を実行して各部を集中的に制御する。サーバ1およびクライアント端末3のCPU101が実行する各種の演算処理のうち、実施形態の構造化文書管理システム関連する処理について、以下に説明する。
図3は、本実施形態におけるサーバ1およびクライアント端末3の概略構成を示すブロック図である。図3に示すように、クライアント端末3は、アプリケーションプログラムにより実現される機能構成として、構造化文書登録部11と、検索部12とを備える。
構造化文書登録部11は、入力部108から入力された構造化文書データやクライアント端末3のHDD104に予め記憶された構造化文書データを、後述するサーバ1の構造化文書データベース(構造化文書DB)21に登録するためのものである。この構造化文書登録部11は、登録すべき構造化文書データとともに格納要求をサーバ1に送信する。
図4は、構造化文書DB21に登録された構造化文書データの一例を示したものである。構造化文書データを記述するための代表的な言語としてXML(Extensible Markup Language)が挙げられる。図4に示す2つ構造化文書データD1、D2は、XMLで記述されたものである。XMLでは、文書構造を構成する個々のパーツを「要素」(エレメント:Element)と呼び、要素はタグ(tag)を使って記述される。具体的には、要素の始まりを示すタグ(開始タグ)と、終わりを示すタグ(終了タグ)の2つのタグでデータを挟み込んで、1つの要素を表現している。なお、開始タグと終了タグで挟み込まれたテキストデータは、当該開始タグと終了タグで表された1つの要素に含まれるテキスト要素である。
図4に示す例では、構造化文書D1は<book>というタグで囲まれたルート要素が存在する。この<book>要素は、<title>、<author>、<publisher>の各タグで囲まれた複数の子要素を包含する。<title>要素は、「Data On The Web」などのテキスト要素をもつ。
<book>要素は、2つの<author>要素を持ち、これら2つの<author>要素が<title>要素の後に出現する順序であり、その次に<publisher>要素が出現する。各<author>要素は<last>、<first>の順番で現れる2つの子要素を包含する。
構造化文書D2は構造化文書D1と同様にルート要素が<book>であるが、<book>の子要素がD1と異なり<author>ではなく<editor>という要素を代わりに持っている。<editor>要素は<author>要素と同様に<last>、<first>の順番で現れる2つの子要素を包含する。
図3に戻り、検索部12は、ユーザにより入力部108から入力された指示に従って、構造化文書DB21から所望のデータを検索するための検索条件などが記述されたクエリデータを作成し、当該クエリデータを含む検索要求をサーバ1へ送信する。また、検索部12は、サーバ1から送信された当該検索要求に対応する結果データを受け取り、これを表示部107に表示する。
一方、サーバ1は、構造化文書管理プログラムにより実現される機能構成として、格納処理部22と、検索処理部23とを備える。また、サーバ1は、HDD104などの記憶装置を利用した構造化文書DB21を備える。
格納処理部22は、クライアント端末3からの構造化文書の格納要求を受けて、クライアント端末3から送信された構造化文書データを構造化文書DB21に格納する処理を行う。この格納処理部22は、格納インタフェース部24を備えている。
格納インタフェース部24は、構造化文書データの入力を受け付けて(構造化文書データ受付部)、構造化文書データを構造化文書DB21に格納する。
検索処理部23は、クライアント端末3からの検索要求を受けて、クエリデータにより指定された条件に合致するデータを構造化文書DB21から探し出し、この探し出したデータを結果データとしてクライアント端末3へと返信する。この検索処理部23は、検索インタフェース部26と、構造条件分割部27と、構造条件書換え部28と、クエリ実行部29を備えている。
検索インタフェース部26は、クエリデータの入力を受け付けて(クエリデータ受付部)、受け付けたクエリデータにより指定された条件を満足する結果データを得るために構造条件分割部27を呼び出す。
構造条件分割部27は、クライアント端末3から送信され、検索インタフェース部26を介して入力されたクエリデータ(以下、入力クエリデータという。)を構文解析し、この入力クエリデータ内で、構造化文書データの論理構造における階層関係を指定する条件を示す構造条件の部分(以下、「構造条件分割リスト31」という。)を分割して取り出す。
構造条件書換え部28は、構造条件分割部27で出力された構造条件分割リスト31のうち、子孫構造条件以外の構造条件を、子孫構造条件と結合演算の組み合わせによって書き換える。書き換えの詳細については、後述する。書き換えたクエリデータは書き換えなかったその他のクエリデータと単純に結合して、最終的な書換えクエリデータ32として出力する。
クエリ実行部29は、クエリ実行部として機能するものであって、構造条件書換え成部28から出力された書換えクエリデータ32を構造化文書DB21に記憶された構造化文書データのデータ集合に対して実行し、得られた結果データ33を出力する。
検索インタフェース部26は、クエリ実行部29から出力された結果データ33を、検索の結果データ34としてクライアント端末3へ返却する。
図5は、クエリデータの一例を示す説明図である。XMLでは、W3Cで提案されているXQueryという問合せ言語があり、図5に示すクエリデータは、このXQueryに基づいた問合せ記述方法に則っている。図5は「姓が“Suciu”という著者よりも前に列挙された著者一覧を出せ」という意図であり、下記のような複雑な階層構造に関する条件(構造条件)を含むクエリデータQ1が示されている。構造条件はクエリデータ内で、文字“/”で始まり、“/”と文字列“::”の間に「軸」と呼ばれる構造条件の種類と処理内容を識別する文字列が入り、文字列“::”の右側に要素名や要素の種類を示す要素指定文字列が入る。要素指定文字列は“::”の次の文字から次の構造条件の開始を表す文字“/”や構造条件の以外の種類を示す文字列が現れるまでの文字列で構成される。
Q1:構造化文書DB21の各構造化文書データについて、最上位の階層に「book」という要素があり、その「book」という要素は、その直下に「author」という要素を持ち、さらにこの「author」という要素の直下に、「last」という要素を持ち、さらに「last」という要素の直下に値が「“Suciu“」であるテキスト要素があり、さらにそのテキスト要素を上位層のどこかに「author」という要素があり、さらにその「author」という要素と同一の親要素を持つ兄弟要素のうち、構造化文書における出現順序が前である「author」要素の一覧を返すということを示している。
図6は、サーバ1の検索処理部23による検索処理の流れを示すフローチャートである。まず、検索インタフェース部26は、クライアント端末3からネットワーク2経由で送信されたクエリデータの入力が受け付ける(ステップS1)。
次に、構造条件分割部27は、入力クエリデータに対して構造条件部分を分割する処理を行う(ステップS2)。
図7は、図5に示されるクエリデータを、構造条件分割部27が構造条件ごとに分割した結果であり、[1]から[7]の7つの構造条件に分割されている。[1]はクエリデータの先頭の文字“/”から次の“/”までの構造条件を切り出したものである。軸は“child”であり要素指定文字列は“book”となっている。[2],[3]、[4]も同様に軸が“child”で要素指定文字列は各々“author”、“last”、“text()”となっている。“text()”は要素名ではなく、テキスト要素を指定する文字列である。[5]は構造条件ではなく、[5]の出力結果に対して、その要素の持つ文字列値が“Suciu”のみを残すことを指定する絞り込み条件である。なお、[5]の絞込み条件は[4]の構造条件とひとまとまりとなるように分割されてもよい。[6]は軸名が“ancestor−or−self”で要素指定文字列が“author”、[7]は軸名が“preceding−sibling”で要素指定文字列が“author”の構造条件である。
図8は、構造条件の種類とその処理内容を示す表である。図8で示す表は、「軸名」、「構造条件の種類」、「処理内容」の3つの項目を有する。「軸名」は構造条件の処理内容を一意に決定するものであり、クエリとして用いられる。「構造条件の種類」は各軸が、構造条件が上位の階層から下位の階層を指定する子孫構造条件か、下位の階層から上位の階層を指定する先祖構造条件か、同一階層の前後を指定する兄弟構造条件か、構造条件の中にXMLデータに含まれる要素の順序関係を指定する順序構造条件のどのカテゴリに属するかを示すものである。「処理内容」は各軸の構造条件の取得対象を具体的に書いたものである。
図6に戻り、構造条件分割部27による構造条件分割が終了すると、次に、構造条件書換え部28は、構造条件分割部27が分割した各構造条件に対して書換え処理を行う(ステップS3)。なお、構造条件以外の要素(図7の例では[5])に対しては書換えは行われない。構造条件書換え部28による書換え処理の一例を、図9を参照して説明する。
図9は、構造条件書換えの流れを示すフローチャートである。構造条件書換え部28は、はじめに、入力として与えられた構造条件毎に分割したリストから先頭の要素を取得して、取得完了後にリストから削除する(ステップS21)。
次に、構造条件書換え部28は、ステップS21で取得した要素をチェックして、構造条件かそれ以外かを判定する(ステップS22)。構造条件とは、図8で定義された軸名を有する要素であり、図7で示した例では、[5]のみが構造条件ではない。構造化条件であると判定された場合(ステップS22:Yes)、構造条件書換え部28は、構造条件内の要素指定文字列を書換えパラメータXとする(ステップS23)。次に、構造条件書換え部28は、取得した要素に含まれる構造条件の軸名から、図8の構造条件の種類を取得する(ステップS24)。この表は、例えばHDD104などに予め記憶されている。次に、構造条件書換え部28は、取得した構造条件の種類が祖先構造条件、兄弟構造条件、順序構造条件のいずれかであるかを判定する(ステップS25)。
構造条件の種類が祖先構造条件、兄弟構造条件、順序構造条件のいずれかであった場合(ステップS25がYes)、構造条件書換え部28は、図10で示す表から構造条件の種類に対応する書換えベースクエリYを取得する(ステップS28)。
図10は、構造条件書換えにおける各軸の書換えルールの一例である。図10で示す表は「番号」「軸名」、「構造条件の種類」「書換えベースクエリ」、及び「書換えパラメータ」の項目を有する。「番号」は書換えルール毎に割り当てられる識別番号である。「軸名」と「構造条件の種類」は図8と同様である。「書換えベースクエリ」は構造条件の種類ごとの書換えクエリの基本テンプレートである。[パラメータA][パラメータB]は書換えベースクエリの変更可能なパラメータ部分である。ここで「書換えベースクエリ」は最初の1行目で、構造条件の入力を表す「.」を変数$1に代入し、以降この変数$1を起点にして処理を実施している。このため書き換えたクエリは、入力として構造条件より前で実施した絞り込み条件によって絞り込まれた構造化文書の要素のみが渡されることになる。また「書換えベースクエリ」に出てくる関数“root”は入力として渡された要素を含む構造化文書の先頭要素を取得する関数である。一度先頭要素に戻って上位から下位へ辿りなおす形に書き換えている。「書換えパラメータ」は「書換えベースクエリ」の[パラメータB]に代入される軸毎の値である。この表は、例えばHDD104などに予め記憶されている。書換えベースクエリYの内容について以下説明する。
祖先構造条件に対応する書換えベースクエリは、入力となるノードを保持する変数$1に対して、$1のノードを保持するXML文書内に存在するタグ名が[パラメータA]の全てのノードを保持する$2を求める。そして、$2に保持された各ノードに対して各々、[パラメータB]の構造条件を満たす全てのノードを保持する$3を求め、$3内に$1が保持するノードと同一のノードが存在する条件を満たす場合、$2が祖先構造条件を満たすノードであるとして、$2を返すという意味である。これは、すなわち入力ノードが存在ずる文書内で[パラメータA]のタグ名を持つノードを全て探し出し、そのノードAの子供(子孫)内に入力ノードが存在すれば、そのノードAが入力ノードの親(祖先)であることを意味する。
また、兄弟構造条件に対応するベースクエリは、入力となるノードを保持する変数$1に対して$1のノードを保持するXML文書内に存在するタグ名が[パラメータA]の全てのノードを保持する$2を求め、$2に保持された各ノードに対して各々、そのノードを保持するXML文書内の全てのノードを保持する$3を求め、$3に保持された各ノードに対して各々、その子供のノードを保持する$4を求め、$4内に$2のノードが存在する場合のみ、$4のノードを$5として保持し、$2と$1の順序関係が[パラメータB]を満たし、さらに$5内に$1のノードが存在する場合、$2が兄弟構造条件を満たすノードとなり、$2を返す式である。すなわち、本クエリは、入力ノードが存在ずる文書内で[パラメータA]のタグ名を持つノードAを全て探し出し、そのノードAと親が同じノードの集合Bを取得し、ノード集合Bに入力ノードが含まれ、かつノードAが入力ノードよりも順序が早ければ(遅ければ)、ノードAは入力ノードの兄(弟)である、ということを示している。
また、順序構造条件のうち、preceding条件を満たすノードを求めるベースクエリについて説明する。クエリは、入力となるノードを保持する変数$1に対して、$1のノードを保持するXML文書内に存在するタグ名が[パラメータA]の全てのノードを保持する$2を求め、$2に保持された各ノードに対して各々、その子孫ノードを保持する$3を求め、$2が$1よりも順序が早く、かつ$1内に$3のノードが存在しない場合、$2が条件を満たすノードであるとして、$2を返す式である。すなわち、入力ノードが存在ずる文書内で[パラメータA]のタグ名を持つノードAを全て探し出し、さらにノードAの子孫ノード集合Bを取得する。そして、ノードAが入力ノードよりも順序が早く、入力ノードがノードAの子孫ノード集合Bに含まれていなければ、ノードAは入力ノードに対してpreceding条件を満たすということを意味する。
また、順序構造条件のうち、following条件を満たすノードを求めるベースクエリについて説明する。クエリは、入力となるノードを保持する変数$1に対して、$1のノードを保持するXML文書内に存在するタグ名が[パラメータA]の全てのノードを保持する$2を求め、次いで$1の全ての子孫ノードを保持する$3を求め、$2が$1よりも順序が遅く、かつ$2内に$3のノードが存在しない場合、$2がfollowing条件を満たすノードであるとして、$2の値を返す式である。すなわち、入力ノードが存在ずる文書内で[パラメータA]のタグ名を持つノードAを全て探し出し、さらに入力ノードの子孫ノード集合Bを取得する。ノードAが入力ノードよりも順序が遅く、ノードAが入力ノードの子孫ノード集合Bに含まれていなければ、ノードAは入力ノードに対してfollowing条件を満たす。
次に、構造条件書換え部28は、書換えベースクエリYの[パラメータA]の部分を、書換えパラメータXに書き換える(ステップS29)。次に、構造条件書換え部28は、図10で示す表から軸の種類に対応する書換えパラメータZを取得する(ステップS30)。次に、構造条件書換え部28は、書換えベースクエリYの[パラメータB]の部分を書換えパラメータZに書き換える(ステップS31)。次に、構造条件書換え部28は、書き換えた結果を書換えクエリに追加する(ステップS26)。
次に構造条件書換え部28は、分割リストが空かを判定する(ステップS27)。分割リストが空の場合(ステップS27:Yes)、すなわちステップS21において削除した要素が、最後の要素であった場合、構造条件書換え部28は、構造条件書換え処理を終了し書換えクエリを出力する。
一方、ステップS22の判定で要素が構造条件ではなかった場合(ステップS22:No)、構造条件書換え部28は、要素を書き換えずにそのまま書換えクエリに追加する(ステップS26)。次にステップ27に進み同様の処理を繰り返す。
一方、ステップ27の判定で分割リストが空でなかった場合(ステップS27がNo)、ステップS21に進み再び同じ処理を繰り返す。
ここで、図7に例示した構造条件分割結果を用いて、一般的な構造条件書換えを行った場合の処理の概要を、図9〜図11を参照して説明する。
はじめに、構造条件書換え部28は、入力として図7の[1]から[7]までの7つの要素からなる分割リストを受け取り、最初の要素[1]を取り出した後、[1]をリストから削除する(ステップS21)。次に、構造条件書換え部28は、[1]が構造条件かどうかを判定し、構造条件であったため要素指定文字列“book”を書換えパラメータXとする(ステップS22、S23)。次に、構造条件書換え部28は、[1]の軸が“child”であるための構造条件の種類として図8の表から子孫構造条件を取得する(ステップS24)。次に、構造条件書換え部28は、[1]が祖先構造条件、兄弟構造条件、順序構造条件のいずれでもなかったため書換えクエリに[1]を追加して書換えクエリは「/child::book」となる(ステップS25、S26)。次に分割リストは空ではないため次のリストの先頭要素[2]を取得してリストから[2]を削除する(ステップS27、S21)。
分割リストの[2]、[3]、[4]はいずれも軸が[1]と同じ“child”であるため、S22からS27まで全く同じ処理を繰り返す。その結果書換えクエリは「/child::book/child::author::child::last/child::text()」となる。
次に、構造条件書換え部28は、再び分割リストの先頭要素[5]を取得して、[5]をリストから削除する(ステップS21)。次に、構造条件書換え部28は、要素が構造条件ではないため書換えクエリに[5]である「[.=“Suciu”]」を追加する(ステップS22、S26)。
次に、構造条件書換え部28は、分割リストの先頭から[6]を取り出してリストから削除する(ステップS21)。次に、構造条件書換え部28は、要素が構造条件であるため、書換えパラメータXに“author”を代入し、軸の種類“ancestor−or−self”から構造条件の種類として祖先構造条件を取得する(ステップS22、S23、S24)。次に、構造条件書換え部28は、要素が祖先構造条件であるため、図10から構造条件の種類に対応する書換えベースクエリYを取得する(ステップS25、S28)。次に、構造条件書換え部28は、書換えベースクエリYの[パラメータA]の部分を書換えパラメータXの“author”で書き換える(ステップ29)。次に、構造条件書換え部28は、図10から軸の種類に対応する書換えパラメータZとして“descendant−or−self”を取得し、書換えベースクエリYの[パラメータB]を書換えパラメータZに書き換える(ステップS30、S31)。そして、構造条件書換え部28は、書き換えた結果を書換えクエリに追加する(ステップ26)。次に、構造条件書換え部28は、分割リストが空ではないため、リストの先頭要素から[7]を取り出してリストから削除する(ステップS27、S21)。
次に、[7]の要素が構造条件であるため、構造条件書換え部28は、書換えパラメータXに“author”を代入し、軸の種類“preceding−sibling”から構造条件の種類として兄弟構造条件を取得する(ステップS22、S23、S24)。[7]は、兄弟構造条件であるため、構造条件書換え部28は、図10から構造条件の種類に対応する書換えベースクエリYを取得する(ステップS25、S28)。次に、構造条件書換え部28は、書換えベースクエリYの[パラメータA]の部分を書換えパラメータXの“author”で書き換える(ステップ29)。次に、構造条件書換え部28は、図10から軸の種類に対応する書換えパラメータZとして“following−sibling”を取得し、書換えベースクエリYの[パラメータB]を書換えパラメータZに書き換える(ステップS30、S31)。構造条件書換え部28は、書き換えた結果を書換えクエリに追加する(ステップ26)。次にリストが空であるため構造条件書換え部28は、構造条件書換え処理を終了する(ステップS27)。
図11は図7に例示した構造条件分割結果を用いて、構造条件書換えを行った書換えクエリの結果である。[6]、[7]に該当する構造条件が2つの()で始まるブロックに単純に書き換えられえている。[6]の書き換えた部分の入力は[1]〜[5]までの演算結果となるため、[1]〜[5]の条件によって構造化文書集合が絞り込まれた場合、対象となる構造化文書構造に対してのみ[6]の書換え結果が適用される。同様に[6]で絞り込まれた構造文書集合に対してのみ[7]で書き換えられた結果が適用される。
構造条件書換え部28による構造条件書換え処理が終了すると、書き換えられた書換えクエリがXQueryとして出力される。次に図6に示されるように、クエリ実行部29は、書き換えられたXQueryを実行する(ステップS4)。書き換えられた後もXQueryの形を保っているため、クエリ実行処理は、任意のXQuery処理系で実行可能である。
クエリ実行部29によるクエリ実行処理が終了すると、最後に、検索インタフェース部26は、クエリ実行部29による出力を結果データとしてクライアント端末3に返却して処理を終了する(ステップS5)。
図12は、図4の構造化文書D1、D2に対して図5に例示した書換えXQueryを実行した結果である。「姓が“Suciu”という著者よりも前に列挙された著者一覧を出せ」という元のXQueryの意図通りに、構造化文書D1内の“last”要素の直下のテキスト要素が“Suciu”の祖先である“author”要素よりも前に出現する “author”要素が条件に合致して出力されている。構造化文書D2は要素“author”を持たないため図7の[2]に該当する構造条件をチェックした段階で対象構造化文書構造から削除される。
以上、具体的な例を挙げながら説明したように、本実施形態によれば、サーバ1が、構造化文書データを構造化文書DB21に格納する。また、サーバ1は、構造化文書データの検索時には、クライアント端末3からの入力クエリデータを構文解析して、入力クエリデータから、構造化文書データの論理構造における階層構造を指定する構造条件を分割し、分割した構造条件が上位の階層から下位の階層を指定する子孫構造条件以外であった場合に、該当する構造条件部分を、子孫構造条件と結合条件を用いて書換えている。したがって、入力クエリデータに子孫構造条件以外の構造条件を含む場合でも、この入力クエリデータを単純な子孫構造条件のみからなる構造照合処理と結合演算処理とで処理することで、構造照合処理の高速化を実現することができるようになる。
また上記実施形態では、子孫構造条件以外の構造条件を書き換える際に、該当する構造条件部分のみを書き換えるため、該当しないクエリデータの他の部分に影響を与えず単純な部分置換で書き換えることができる。さらに上記の具体例では、子孫構造条件と結合演算処理に書き換える際に、書き換えた子孫構造条件の入力が、それまでのクエリデータの処理で得られた構造化文書のみを対象とするように書き換えている。これにより書き換えた構造条件を構造化文書集合全てに対してではなく、それまでの処理で絞り込まれた構造化文書集合に対してのみ子孫構造条件を実施すれば良いため検索を高速に実行することができる。
なお、上記の具体例では、入力クエリデータに、兄弟構造条件及び祖先構造条件として「preceeding−sibling」と「ancestor−or−self」が含まれる場合を例示して説明したが、兄弟構造条件及び祖先構造条件の他の条件、例えば「following−sibling」、「ancestor」、「parent」などが含まれる場合や、順序構造条件「preceding」、「follwoing」であっても、上記の具体例と同様に処理することができる。
(第2の実施形態)
次に、第2の実施形態について、説明する。本実施形態は、子孫構造条件以外の構造条件を書き換える際に、要素単独で書き換えずに前後の構造条件と組み合わせて書き換えるようにした例である。なお、以下の説明において、上述した第1の実施形態と共通の構成については同一の符号を付し、重複した説明を省略する。
図13は、本実施形態で想定するクエリデータの一例を示す説明図である。この図13に示すクエリデータQ2は、第1の実施形態で説明したクエリデータQ1と同じくXQueryで記述されている。図13のクエリは「著者名が”editor”要素以下に記述された構造化文書のタイトルを出せ」という意図であり、下記のような意味の複雑な階層構造に関する条件(構造条件)を含んでいる。
Q2:構造化文書DB21の各構造化文書データについて、最上位の階層に「book」という要素があり、その「book」という要素はその中に「editor」という要素を持ち、さらにこの「editor」という要素の一つ上の階層に要素に戻り、その要素の直下にある、「title」という要素の一覧を返す。
クエリデータQ2では、「/child::editor」で一度「book」要素から一つ下の階層に降りた後で、「/parent::node()」という構造条件でもう一度元の要素に戻った後に、再び「/child::title」で一つ下の異なる要素に降りている。これにより、「book」要素の下に「editor」要素があることを確認した後で、「title」要素を出力する。
本実施形態における検索処理部23による検索処理の流れは、図6に示した第1の実施形態のものと同様である。ただし、本実施形態では、ステップS3の構造条件書換え処理の中で、異なる書換えルールの下で構造条件書き換え処理が実施される。
図14は、図13のクエリデータに対して構造条件分割部27によって各要素に分割した結果であり、[1]から[4]の4つの要素に分割されている。[1]はクエリデータの先頭の文字“/”から次の“/”までの構造条件を切り出したものである。軸は“child”であり要素指定文字列は“book”となっている。[2]、[4]も同様に軸が“child”で要素指定文字列は各々“editor”、“title”となっている。[3]は軸名が“parent”で要素指定文字列が“node()”の構造条件である。“node()”は要素名ではなく、任意の種類の要素を指定する文字列である。
図15は、本実施形態における構造条件書換え処理の流れを示すフローチャートである。この図15のフローチャートにおいて、ステップS101の処理は、第1の実施形態で説明したステップS21と同様であるため、説明を省略する。
ステップS101の処理の次に、構造条件書換え部28は、ステップS101で取得した要素Pの軸名が子孫構造条件の1種であるchildであるか否かを判定する(ステップS102)。
要素Pの軸名が子孫構造条件の1種であるchildであると判定された場合(ステップS102:Yes)、構造条件書換え部28は、構造条件内の要素指定文字列を書換えパラメータXとする(ステップS103)。次に、構造条件書換え部28は、分割リストが空かを判定する(ステップS104)。
分割リストが空でないと判定された場合(ステップS104:No)、構造条件書換え部28は、分割リストの先頭の要素Qを取得する(ステップS105)。次に、構造条件書換え部28は、要素Qが、軸の値が”parent”かつ要素指定文字列が”node()”の構造条件であるか否かを判定する(ステップS106)。
要素Qが、軸の値が”parent”かつ要素指定文字列が”node()”の構造条件であると判定された場合(ステップS106:Yes)、構造条件書換え部28は、図16で示す表から書換えベースクエリYを取得する(ステップS109)。図16は、構造条件書換えにおける2つの連続した構造条件の書換えルールの一例である。図16は「番号」「先頭軸名」、「後続軸名」「後続要素文字列」、「書換えベースクエリ」の項目を有する。「番号」は書換えルール毎に割り当てられる識別番号である。今回は説明を単純化するため1つだけとする。「先頭軸名」は最初にチェックされる構造条件の軸名である。「構造軸名」は先頭の構造条件の次の構造条件の軸名である。「後続要素文字列」は先頭の構造条件の次の構造条件の要素文字列である。「書換えベースクエリ」はルールごとの書換えクエリの基本テンプレートである。[パラメータC]は書換えベースクエリの変更可能なパラメータ部分である。図16のルールは、該当条件が連続する2つの構造条件が必要になるが、書換えベースクエリは図10の書換えベースクエリと比較して単純な形に変換可能である。
次に、構造条件書換え部28は、書換えベースクエリYの[パラメータC]の部分を書換えパラメータXに書き換える(ステップS110)。次に、構造条件書換え部28は、書き換えた結果を書換えクエリに追加する(ステップS111)。次に、構造条件書換え部28は、要素Qを分割リストから削除する(ステップS112)。
次に、構造条件書換え部28は、分割リストが空か否かを判定する(ステップS108)。分割リストが空と判定された場合(ステップS108がYes)、構造条件書換え部28は、構造条件書換え処理を終了し書換えクエリを出力する。
一方、要素Pの軸名が子孫構造条件の1種であるchildでないと判定された場合(ステップS102:No)、要素Pを書き換えずにそのまま書換えクエリに追加する(ステップS107)。次にステップ108に進み同様の処理を繰り返す。
一方、分割リストが空の場合(ステップS104:Yes)、ステップS107に進み再び同じ処理を繰り返す。
一方、要素Qが、軸の値が”parent”かつ要素指定文字列が”node()”の構造条件ではないと判定された場合(ステップS106:No)、ステップS107に進み再び同じ処理を繰り返す。
ここで、図14に例示した構造条件分割結果を用いて、一般的な構造条件書換えを行った場合の処理の概要を説明する。
はじめに入力として図14の[1]から[4]までの4つの要素からなる分割リストを受け取り、構造条件書換え部28は、最初の要素[1]を取り出した後、[1]をリストから削除する(ステップS101)。次に、構造条件書換え部28は、[1]の軸名が“child”構造条件かどうかを判定し、条件に合致したため要素指定文字列“book”を書換えパラメータXとする(ステップS102、S103)。
次に、構造条件書換え部28は、分割リストが空かを判定し、空ではないため先頭要素Qとして[2]を取得する(ステップS104、S105)。次にQの軸が“parent”ではないため要素Pである[1]を書換えクエリに追加する(ステップS106、S107)。次に分割リストが空ではないため、構造条件書換え部28は、リストの先頭の[2]を要素Pとして取得する(ステップS108、S101)。要素Pである[2]の軸が“child”の構造条件であるため、要素指定文字列“editor”を書換えパラメータXとする(ステップS102、S103)。
次に、構造条件書換え部28は、分割リストが空かを判定し、空ではないため先頭要素Qとして[3]を取得する(ステップS104、S105)。次にQの軸が“parent”であり、要素文字列が“node()”の構造条件であるため、図16の表から書換えベースクエリYを取得する(ステップS106、ステップS109)。次に、構造条件書換え部28は、書換えベースクエリYの[パラメータC]の部分を書換えパラメータXである“editor”に書き換える(ステップS110)。次に、構造条件書換え部28は、書換えベースYを書換えクエリに追加して、分割リストから要素Qを削除する(ステップS111、S112)。
次に、構造条件書換え部28は、分割リストが空ではないため、リストの先頭の[4]を要素Pとして取得する(ステップS108、S101)。要素Pである[4]の軸が“child”の構造条件であるため、構造条件書換え部28は、要素指定文字列“title”を書換えパラメータXとする(ステップS102、S103)。次に分割リストが空であるため、構造条件書換え部28は、要素Pである[4]を書換えクエリに追加する(ステップS104、S107)。
次に、分割リストが空であるため、構造条件書換え部28は、構造条件書換え処理を終了する(ステップS108)。図17は図14に例示した構造条件分割結果を用いて、構造条件書換えを行った書換えクエリの結果である。[2]、[3]に該当する構造条件が1つの書換えルールで()で始まるブロックに単純に書き換えられている。
構造条件書換え部28による構造条件書換え処理が終了すると、構造条件書換え部28は、書き換えられたXQueryを出力する。以降は第1の実施形態と同様に、クエリ実行部29は、書き換えられたXQueryを実行して、検索され結果を出力する(ステップS4)。
クエリ実行部29によるクエリ実行処理が終了すると、最後に、検索インタフェース部26は、クエリ実行部29による出力を結果データとしてクライアント端末3に返却する(ステップS5)。
図18は、図4の構造化文書D1、D2に対して図13に例示した書換えXQueryを実行した結果である。「著者名が”editor”要素以下に記述された構造化文書のタイトルを出せ」という元のXQueryの意図通りに、構造化文書D1は著者名を表す要素名が“editor”ではなく“author”であるため出力されず、構造化文書D2は著者名を表す要素名が“editor”であるため、兄弟要素である“title”要素が出力される。
以上、具体的な例を挙げながら説明したように、本実施形態によれば、子孫構造条件以外の構造条件を書き換える際に、前後する他の構造条件と組み合わせて書き換えることで、該当部分の構造条件を単独で書き換えるよりも単純な書換え結果を実現することができる。
以上説明した各実施形態におけるサーバ1の機能は、例えば、コンピュータの演算装置であるCPU101が、アプリケーションプログラムとして実装された構造化文書管理プログラムを実行することにより実現される。
また各実施形態におけるサーバ1で実行される構造化文書管理プログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体110に記録されて提供される。
また、各実施形態におけるサーバ1で実行される構造化文書管理プログラムを、インターネットなどのネットワーク2に接続されたコンピュータ上に格納し、ネットワーク2経由でダウンロードさせることにより提供するように構成してもよい。また、各実施形態におけるサーバ1で実行される構造化文書管理プログラムを、インターネットなどのネットワーク2経由で提供または配布するように構成してもよい。さらに、各実施形態におけるサーバ1で実行される構造化文書管理プログラムを、ROM102などに予め組み込んで提供するように構成してもよい。
また、各実施形態におけるサーバ1で実行される構造化文書管理プログラムは、格納インタフェース部24、検索インタフェース部26、構造条件分割部27、構造条件書換え部28、クエリ実行部29などを含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)101がHDD104などから構造化文書管理プログラムを読み出して実行することにより上記各部が主記憶装置(例えばRAM103)上にロードされ、格納インタフェース部24、検索インタフェース部26、構造条件分割部27、構造条件書換え部28、クエリ実行部29、などが主記憶装置上に生成されるようになっている。
以上述べた少なくとも一つの実施形態にかかる構造化文書管理システムによれば、入力クエリデータを単純な構造条件に変えて構造照合処理を実行するようにしているので、入力クエリデータが複雑な構造条件を含む場合でも、構造照合処理の高速化を実現し、複雑な構造条件を含むクエリデータによる検索を高速に実行することができる。また入力クエリデータの該当する構造条件部分のみを書き換えているため単純な構成で実現できる。さらに構造条件に書き換える際に、書き換えた子孫構造条件の入力が、それまでのクエリデータの処理で得られた構造化文書のみを対象とするように書き換えている。これにより構造化文書集合全てに対してではなく、それまでの処理で絞り込まれた構造化文書集合に対してのみ書き換えた子孫構造条件を実施すれば良いため検索を高速に実行することができる。
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。

Claims (7)

  1. 階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付けるクエリデータ受付部と、
    前記クエリデータを、構造条件を含む複数の要素毎に分割する構造条件分割部と、
    分割された前記構造条件の種類が、下位の階層から上位の階層を指定する先祖構造条件、同一階層の前後を指定する兄弟構造条件、及び構造条件の中にXMLデータに含まれる要素の順序関係を指定する順序構造条件のいずれかであった場合、前記構造条件を、前記構造条件の前後の構造条件に影響を与えないように構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換える構造条件書換え部と、
    前記構造条件、及び書換えクエリを含むクエリデータを入力として、検索結果を出力するクエリ実行部と、
    を備える構造化文書管理装置。
  2. 前記構造条件書換え部は、さらに、前記分割された各前記構造条件のうちの第1構造条件に対して、前記構造条件の種類が直下の階層のノードを取得対象とする構造条件であった場合、第1構造条件で指定される文字列と、前記第1構造条件の次に位置する第2構造条件とを取得して、前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であるか否かを判定し、
    前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であると判定された場合は、前記第1構造条件で指定される文字列を指定する子孫構造条件を有する単一の前記書換えクエリへと、前記第1構造条件、及び第2構造条件を変換する、
    請求項1に記載の構造化文書管理装置。
  3. クエリデータ受付部が階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付けるステップと、
    構造条件分割部が前記クエリデータを、構造条件を含む複数の要素毎に分割するステップと、
    構造条件書換え部が分割された前記構造条件の種類が、下位の階層から上位の階層を指定する先祖構造条件、同一階層の前後を指定する兄弟構造条件、及び構造条件の中にXMLデータに含まれる要素の順序関係を指定する順序構造条件のいずれかであった場合、前記構造条件を、前記構造条件の前後の構造条件に影響を与えないように構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換えるステップと、
    クエリ実行部が前記構造条件、及び書換えクエリを含むクエリデータを入力として、検索結果を出力するステップと
    を含むことを特徴とする構造化文書管理方法。
  4. コンピュータに、
    階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付けるクエリデータ受付機能と、
    前記クエリデータを、構造条件を含む複数の要素毎に分割する構造条件分割機能と、
    分割された前記構造条件の種類が、下位の階層から上位の階層を指定する先祖構造条件、同一階層の前後を指定する兄弟構造条件、及び構造条件の中にXMLデータに含まれる要素の順序関係を指定する順序構造条件のいずれかであった場合、前記構造条件を、前記構造条件の前後の構造条件に影響を与えないように構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換える構造条件書換え機能と、
    前記構造条件、及び書換えクエリを含むクエリデータを入力として、検索結果を出力するクエリ実行機能と、
    を実行させるための構造化文書管理プログラム。
  5. 階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付けるクエリデータ受付部と、
    前記クエリデータを、構造条件を含む複数の要素毎に分割する構造条件分割部と、
    分割された前記構造条件の種類が構造化文書の上位の階層から下位の階層を指定する子孫構造条件以外であった場合、前記構造条件を、前記構造条件の前後の構造条件に影響を与えないように構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換える構造条件書換え部と、
    前記構造条件、及び書換えクエリを含むクエリデータを入力として、検索結果を出力するクエリ実行部と、を備え、
    前記構造条件書換え部は、さらに、前記分割された各前記構造条件のうちの第1構造条件に対して、前記構造条件の種類が直下の階層のノードを取得対象とする構造条件であった場合、第1構造条件で指定される文字列と、前記第1構造条件の次に位置する第2構造条件とを取得して、前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であるか否かを判定し、
    前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であると判定された場合は、前記第1構造条件で指定される文字列を指定する子孫構造条件を有する単一の前記書換えクエリへと、前記第1構造条件、及び第2構造条件を変換する、
    構造化文書管理装置。
  6. クエリデータ受付部が階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付けるステップと、
    構造条件分割部が前記クエリデータを、構造条件を含む複数の要素毎に分割するステップと、
    構造条件書換え部が分割された前記構造条件の種類が構造化文書の上位の階層から下位の階層を指定する子孫構造条件以外であった場合、前記構造条件を、前記構造条件の前後の構造条件に影響を与えないように構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換えるステップと、
    構造条件書換え部が前記分割された各前記構造条件のうちの第1構造条件に対して、前記構造条件の種類が直下の階層のノードを取得対象とする構造条件であった場合、第1構造条件で指定される文字列と、前記第1構造条件の次に位置する第2構造条件とを取得して、前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であるか否かを判定するステップと、
    構造条件書換え部が前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であると判定された場合は、前記第1構造条件で指定される文字列を指定する子孫構造条件を有する単一の前記書換えクエリへと、前記第1構造条件、及び第2構造条件を変換するステップと、
    クエリ実行部が前記構造条件、及び書換えクエリを含むクエリデータを入力として、検索結果を出力するステップと、
    を含むことを特徴とする構造化文書管理方法。
  7. コンピュータに、
    階層化された論理構造を有する構造化文書を検索するためのクエリデータの入力を受け付けるクエリデータ受付機能と、
    前記クエリデータを、構造条件を含む複数の要素毎に分割する構造条件分割機能と、
    分割された前記構造条件の種類が構造化文書の上位の階層から下位の階層を指定する子孫構造条件以外であった場合、前記構造条件を、前記構造条件の前後の構造条件に影響を与えないように構造条件の種類毎に予め定められた子孫構造条件と結合演算処理とを含む書換えクエリに書き換える構造条件書換え機能と、
    前記構造条件、及び書換えクエリを含むクエリデータを入力として、検索結果を出力するクエリ実行機能と、を実行させ、
    前記構造条件書換え機能は、さらに、前記分割された各前記構造条件のうちの第1構造条件に対して、前記構造条件の種類が直下の階層のノードを取得対象とする構造条件であった場合、第1構造条件で指定される文字列と、前記第1構造条件の次に位置する第2構造条件とを取得して、前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であるか否かを判定し、
    前記第2構造条件が直上の階層のノードの任意の文字列を取得対象とする構造条件であると判定された場合は、前記第1構造条件で指定される文字列を指定する子孫構造条件を有する単一の前記書換えクエリへと、前記第1構造条件、及び第2構造条件を変換する、
    構造化文書管理プログラム。
JP2012542303A 2012-09-07 2012-09-07 構造化文書管理装置、方法およびプログラム Active JP5439606B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/072940 WO2014038069A1 (ja) 2012-09-07 2012-09-07 構造化文書管理装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP5439606B1 true JP5439606B1 (ja) 2014-03-12
JPWO2014038069A1 JPWO2014038069A1 (ja) 2016-08-08

Family

ID=50234453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012542303A Active JP5439606B1 (ja) 2012-09-07 2012-09-07 構造化文書管理装置、方法およびプログラム

Country Status (4)

Country Link
US (1) US10007666B2 (ja)
JP (1) JP5439606B1 (ja)
CN (1) CN103827861B (ja)
WO (1) WO2014038069A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650846B (zh) * 2021-01-13 2024-08-23 北京智通云联科技有限公司 一种基于问句框架的问答意图知识库构建系统及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3612914B2 (ja) * 1997-01-14 2005-01-26 富士ゼロックス株式会社 構造化文書検索装置及び構造化文書検索方法
WO2002027551A2 (en) * 2000-08-01 2002-04-04 Nimble Technology, Inc. Nested conditional relations (ncr) model and algebra
SE523930C3 (sv) * 2002-09-03 2004-08-18 Sixsteps Ab Ideon Science Park Datorprogramprodukt med tillhörande metoder för att söka i en databas med objekt, koppla samman objekt i en sådan databas och exportera data från minst en godtycklig databas
US7219091B1 (en) * 2003-02-24 2007-05-15 At&T Corp. Method and system for pattern matching having holistic twig joins
US7451144B1 (en) * 2003-02-25 2008-11-11 At&T Corp. Method of pattern searching
JP2006127229A (ja) * 2004-10-29 2006-05-18 Toshiba Corp 構造化文書検索システム、構造化文書検索方法及びプログラム
US7685203B2 (en) * 2005-03-21 2010-03-23 Oracle International Corporation Mechanism for multi-domain indexes on XML documents
US7685138B2 (en) * 2005-11-08 2010-03-23 International Business Machines Corporation Virtual cursors for XML joins
JP5121146B2 (ja) 2006-02-22 2013-01-16 株式会社東芝 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
US7502802B2 (en) * 2006-06-27 2009-03-10 International Business Machines Corporation Optimizing cursor movement in holistic twig joins
JP4854542B2 (ja) * 2007-02-27 2012-01-18 株式会社東芝 文書検索システム及び文書検索方法
JP4445509B2 (ja) * 2007-03-20 2010-04-07 株式会社東芝 構造化文書検索システム及びプログラム
JP4398988B2 (ja) * 2007-03-26 2010-01-13 株式会社東芝 構造化文書を管理する装置、方法およびプログラム
JP5320697B2 (ja) * 2007-07-26 2013-10-23 富士通株式会社 照合処理プログラムおよび照合処理装置
JP5060345B2 (ja) * 2008-02-29 2012-10-31 株式会社東芝 データベース処理装置、情報処理方法及びプログラム
JP5125662B2 (ja) * 2008-03-24 2013-01-23 富士通株式会社 クエリ変換方法および検索装置
JP5296128B2 (ja) 2011-03-18 2013-09-25 株式会社東芝 構造化文書管理装置、方法およびプログラム
US8468150B2 (en) * 2011-10-31 2013-06-18 International Business Machines Corporation Accommodating gaps in database index scans
US9275103B2 (en) * 2013-02-28 2016-03-01 International Business Machines Corporation Optimization of JOIN queries for related data

Also Published As

Publication number Publication date
WO2014038069A1 (ja) 2014-03-13
JPWO2014038069A1 (ja) 2016-08-08
US20140074875A1 (en) 2014-03-13
US10007666B2 (en) 2018-06-26
CN103827861B (zh) 2017-09-08
CN103827861A (zh) 2014-05-28

Similar Documents

Publication Publication Date Title
US7293018B2 (en) Apparatus, method, and program for retrieving structured documents
US7080067B2 (en) Apparatus, method, and program for retrieving structured documents
JP4314221B2 (ja) 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム
KR20090028758A (ko) 정보 재사용 방법, 정보 제공 방법, 편집 가능한 문서, 및 문서 편집 시스템
US7457812B2 (en) System and method for managing structured document
US8595215B2 (en) Apparatus, method, and computer program product for processing query
JP4247135B2 (ja) 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法
JP2006053724A (ja) Xmlデータ管理方法
US9378301B2 (en) Apparatus, method, and computer program product for searching structured document
US8086561B2 (en) Document searching system and document searching method
JP3914081B2 (ja) アクセス権限設定方法および構造化文書管理システム
JP5439606B1 (ja) 構造化文書管理装置、方法およびプログラム
JP2008243075A (ja) 構造化文書管理装置及び方法
JP5296128B2 (ja) 構造化文書管理装置、方法およびプログラム
JP4289022B2 (ja) 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体
JP2002297601A (ja) 構造化文書管理方法および構造化文書管理装置およびプログラム
JP3842574B2 (ja) 情報抽出方法および構造化文書管理装置およびプログラム
JP3842575B2 (ja) 構造化文書検索方法、構造化文書管理装置及びプログラム
JP5422751B1 (ja) 構造化文書管理装置、方法およびプログラム
JP2006018584A (ja) 構造化文書管理システム、値索引生成方法及びプログラム
CN116955310A (zh) 数据工件的扩展的传播
CN117472940A (zh) 数据血缘关系构建方法和装置、电子设备及存储介质
JP2004126640A (ja) 文書構造検索方法、文書構造検索装置および文書構造検索プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131216

R150 Certificate of patent or registration of utility model

Ref document number: 5439606

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350