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

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

Info

Publication number
JP5121146B2
JP5121146B2 JP2006045807A JP2006045807A JP5121146B2 JP 5121146 B2 JP5121146 B2 JP 5121146B2 JP 2006045807 A JP2006045807 A JP 2006045807A JP 2006045807 A JP2006045807 A JP 2006045807A JP 5121146 B2 JP5121146 B2 JP 5121146B2
Authority
JP
Japan
Prior art keywords
data
structured document
structured
path pattern
stream
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
JP2006045807A
Other languages
English (en)
Other versions
JP2007226452A (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
Original Assignee
Toshiba 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 filed Critical Toshiba Corp
Priority to JP2006045807A priority Critical patent/JP5121146B2/ja
Priority to US11/524,621 priority patent/US7975220B2/en
Priority to CNB200710005309XA priority patent/CN100541493C/zh
Publication of JP2007226452A publication Critical patent/JP2007226452A/ja
Application granted granted Critical
Publication of JP5121146B2 publication Critical patent/JP5121146B2/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

Landscapes

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

Description

本発明は、階層化された論理構造をもつ構造化文書データを記憶・検索する構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法に関する。
XML(Extensible Markup Language)などで記述された構造化文書データを記憶・検索するための構造化文書管理システムとしては、いくつかの方式が考えられている。
第1の方式としては、構造化文書データをそのままテキストファイルとして管理する方式がある。この第1の方式では、データ数やサイズが大きくなると格納効率が悪くなるという問題がある。また、この第1の方式では、構造化文書の特性を生かした検索が困難になるという問題がある。
第2の方式としては、RDB(Relational Database)に構造化文書データを管理する方式がある。この第2の方式は、基幹系などで広く使われている。
第3の方式としては、構造化文書データを管理するために開発されたOODB(Object Oriented Database)で管理する方式がある。この第3の方式は、RDBを拡張した、例えばXML対応RDBである。
RDBは、データをフラットなテーブル形式に格納するため、XMLデータのような階層構造をテーブルに対応付ける複雑なマッピングが必要となる。このマッピングのため、テーブルに関する事前の構造(スキーマ)設計を十分に行わないと、パフォーマンスが低下してしまう問題が発生する。
そこで、近年においては、上述した第1〜第3の方式に代わる第4の方式が提案されている。第4の方式は、ネイティブに構造化文書データを管理する方式である。この第4の方式は、多種多様な階層構造を持つXMLデータを特別なマッピング処理すること無しに格納するため、格納や取得時に特別なオーバヘッドが存在しない。また、コストのかかる事前のスキーマ設計が不要になり、ビジネス環境の変化により必要に応じてXMLデータの構造を自由に変更することが可能である。
ところで、構造化文書データが効率良く格納されたからといって、格納されたデータを取り出す手段が無ければ意味が無い。この格納されたデータを取り出す手段として、問合せ言語がある。RDBの世界ではSQL(Structured Query Language)があるように、XMLではXQuery(XML Query Language)が策定されている。このXQueryは、XMLデータをデータベースのように扱うための言語であり、条件に合致するデータ集合の取り出しや集計・分析を行うための手段が提供されている。
また、XMLデータは親子や兄弟などの要素が組み合わさった階層構造を持つため、この階層構造を辿る手段が提供されている。このように格納された構造化文書データの階層構造を辿りながら、検索条件で指定された特定の要素と特定の構造が含まれている構造化文書データを検索するための技術は、例えば特許文献1や特許文献2において開示されている。
特開2001−034618号公報 特開2000−057163号公報
ところが、前述したように、XMLデータは親子や兄弟などの要素が組み合わさった階層構造を持つため、格納効率が悪いという問題がある。
さらに、構造化文書データの構造が大規模になる程、データベースに格納されている構造化文書データの数が多い程、あるいは、検索条件が複雑な程、各構造化文書データの階層構造を構成する要素間を辿るという処理には時間がかかる。また、構造化文書データの数、あるいはサイズが大きくなれば、格納された構造化文書データをメモリ上に展開することは不可能であり、多くはハードディスクなど二次記憶に格納されることになる。
特に、ネイティブに構造化文書データを管理する方式では、構造化文書データは要素間の階層構造をそのまま記憶することから、検索条件として指定された要素や構造があるか否かを調べるためには、二次記憶上に格納された構造化文書データの要素間を頻繁にアクセスしなければならない。複雑な検索条件の場合はなおさらである。
すなわち、特許文献1や特許文献2において開示されているような階層構造を辿る手段によれば、データベース内の各構造化文書データの階層構造を構成する要素データ間を辿りながら、検索条件にて指定された要素や構造を持つ構造化文書データを検索するため、高速に検索できないという問題点がある。特に、構造化文書データのサイズが大きくなる程、検索対象の構造化文書データの数が多い程、あるいは、クエリデータ(検索条件)が複雑である程、検索処理の高速化が困難である。より具体的には、下記の通りである。
(1)複雑なXQueryの場合、複数のパスパターンがクエリに含まれる。複数のパスパターンへの照合を行うのに、同一構造化文書へのトラバースが繰り返し発生する。特にオンメモリにできないサイズを取り扱うケースでは、同一ページへのディスクI/Oが断続発生し、性能劣化が激しくなる。
(2)XQueryのサブセットであるXPathの場合でも、高ヒット時には性能劣化が発生する。つまり、構造化文書の集合の大半をトラバースするケースでは、大量のディスクI/Oが発生してしまう。
また、同一の構造化文書データへのデータスキャンを抑えるアイデアとして、構造化文書ストリーム処理の技術がある。例えば、以下の参考文献が挙げられる。
(参考文献1)Y. Diao, P.Fischer, and M.J.Franklin. YFilter: Efficient and Scalable Filtering of XML Documents. In The 18th International Conference of Data Engineering, San Jose, February 2002.
(参考文献2)I. Avila-Campillo, D. Raven, T. Green, A. Gupta, Y. Kadiyska, M.Onizuka, and D. Suciu. An XML Toolkit for Light-weight XML Stream Processing,2002.
これは構造化文書データ全部を主記憶に記憶しないでXPathなどの問合わせを処理するものである。複数のXPathに現れる複数のパスパターンを状態遷移に変換して処理する方式も提案されている。しかし、現実には以下のような問題が発生してしまう。
(3)高ヒットでないXPathでは性能劣化が著しい。バックトラックベースであるため、CPU処理上のオーバヘッドも大きい。処理の特性上、索引を使った問合わせ処理が難しい。
上述したように、構造化文書データを格納したデータベースに対して、複数のパスパターンを最小のディスクI/Oと少ない計算量で処理するのは困難であると言える。
本発明は、上記に鑑みてなされたものであって、構造化文書データの格納効率を向上させることを目的とする。
また、本発明は、クエリデータによる検索処理を高速化することを目的とする。
上述した課題を解決し、目的を達成するために、本発明の構造化文書管理装置は、記憶部を備える構造化文書管理装置であって、階層化された論理構造を有している構造化文書データの入力を受け付ける文書データ受付手段と、前記文書データ受付手段により受け付けた前記構造化文書データを構文解析して当該構造化文書データ集合の全体に渡るものであって格納先フォルダを示す一意なIDが割り当てられたガイドノードを含む階層構造情報の要約である構造ガイドデータを生成し、当該構造ガイドデータを用いて前記構造化文書データをルートノードに対応する前記IDから深さ優先で辿って行くときに通過するガイドノードに対応する前記IDを並べた1次元の配列データである構造ストリームデータに変換する構造ストリーム変換手段と、前記構造ストリーム変換手段により変換された前記構造ストリームデータを前記記憶部に記憶する構造ストリームデータ記憶手段と、前記構造ガイドデータを前記記憶部に記憶する構造ガイドデータ記憶手段と、クエリデータの入力を受け付けるクエリデータ受付手段と、前記クエリデータ受付手段により受け付けた前記クエリデータを構文解析してタグ間の関連をツリー形式で表現した第1次構造グラフを生成し、当該第1次構造グラフと前記構造ガイドデータ記憶手段により前記記憶部に記憶されている前記構造ガイドデータとを照合して前記IDに変換して不要なノードを取り除いた第2次構造グラフを生成し、前記IDに対応した配列要素を持ち前記IDに対応した手続きを実行するエントリーテーブルと前記IDの位置を示す中間データであるトークンのキューを保持する記憶領域要素であるプレースと前記プレース間を接続して上位のプレースに保持されたトークンを下位のプレースに流す役割を持つ要素であるトランスとを含み前記クエリデータに特化した処理手順を指定するパスパターン処理テーブルを前記エントリーテーブルの前記IDに対応する手続きを張るとともに前記プレースと前記トランスとの間にリンクを張る処理を前記第2次構造グラフのルートノードから末端ノードまで再帰的に処理することによって生成するパスパターンコンパイル手段と、前記記憶部から前記構造ストリームデータ集合を取得し、当該前記構造ストリームデータの要素と前記パスパターン処理テーブルの要素とを突き合わせることで、前記トークンで構成される結果データを生成する構造ストリーム走査手段と、を備える。
また、本発明の構造化文書管理プログラムは、記憶部を備える構造化文書管理装置を制御するコンピュータに、階層化された論理構造を有している構造化文書データの入力を受け付ける文書データ受付機能と、前記文書データ受付機能により受け付けた前記構造化文書データを構文解析して当該構造化文書データ集合の全体に渡るものであって格納先フォルダを示す一意なIDが割り当てられたガイドノードを含む階層構造情報の要約である構造ガイドデータを生成し、当該構造ガイドデータを用いて前記構造化文書データをルートノードに対応する前記IDから深さ優先で辿って行くときに通過するガイドノードに対応する前記IDを並べた1次元の配列データである構造ストリームデータに変換する構造ストリーム変換機能と、前記構造ストリーム変換機能により変換された前記構造ストリームデータを前記記憶部に構造ストリームデータ記憶手段に記憶する機能と、前記構造ガイドデータを前記記憶部に記憶する構造ガイドデータ記憶機能と、クエリデータの入力を受け付けるクエリデータ受付機能と、前記クエリデータ受付機能により受け付けた前記クエリデータを構文解析してタグ間の関連をツリー形式で表現した第1次構造グラフを生成し、当該第1次構造グラフと前記構造ガイドデータ記憶機能により前記記憶部に記憶されている前記構造ガイドデータとを照合して前記IDに変換して不要なノードを取り除いた第2次構造グラフを生成し、前記IDに対応した配列要素を持ち前記IDに対応した手続きを実行するエントリーテーブルと前記IDの位置を示す中間データであるトークンのキューを保持する記憶領域要素であるプレースと前記プレース間を接続して上位のプレースに保持されたトークンを下位のプレースに流す役割を持つ要素であるトランスとを含み前記クエリデータに特化した処理手順を指定するパスパターン処理テーブルを前記エントリーテーブルの前記IDに対応する手続きを張るとともに前記プレースと前記トランスとの間にリンクを張る処理を前記第2次構造グラフのルートノードから末端ノードまで再帰的に処理することによって生成するパスパターンコンパイル機能と、前記記憶部から前記構造ストリームデータ集合を取得し、当該前記構造ストリームデータの要素と前記パスパターン処理テーブルの要素とを突き合わせることで、前記トークンで構成される結果データを生成する構造ストリーム走査機能と、を実行させる。
また、本発明の構造化文書管理方法は、構造化文書管理装置で実行される構造化文書管理方法であって、前記構造化文書管理装置は、制御部と記憶部を備え、前記制御部において実行される、文書データ受付手段が、階層化された論理構造を有している構造化文書データの入力を受け付ける工程と、構造ストリーム変換手段が、前記文書データ受付手段により受け付けた前記構造化文書データを構文解析して当該構造化文書データ集合の全体に渡るものであって格納先フォルダを示す一意なIDが割り当てられたガイドノードを含む階層構造情報の要約である構造ガイドデータを生成し、当該構造ガイドデータを用いて前記構造化文書データをルートノードに対応する前記IDから深さ優先で辿って行くときに通過するガイドノードに対応する前記IDを並べた1次元の配列データである構造ストリームデータに変換する工程と、構造ストリームデータ記憶手段が、前記構造ストリーム変換手段により変換された前記構造ストリームデータを前記記憶部に記憶する工程と、構造ガイドデータ記憶手段が、前記構造ガイドデータを前記記憶部に記憶する工程と、クエリデータ受付手段が、クエリデータの入力を受け付ける工程と、パスパターンコンパイル手段が、このクエリデータ受付手段により受け付けた前記クエリデータを構文解析してタグ間の関連をツリー形式で表現した第1次構造グラフを生成し、当該第1次構造グラフと前記構造ガイドデータ記憶手段により前記記憶部に記憶されている前記構造ガイドデータとを照合して前記IDに変換して不要なノードを取り除いた第2次構造グラフを生成し、前記IDに対応した配列要素を持ち前記IDに対応した手続きを実行するエントリーテーブルと前記IDの位置を示す中間データであるトークンのキューを保持する記憶領域要素であるプレースと前記プレース間を接続して上位のプレースに保持されたトークンを下位のプレースに流す役割を持つ要素であるトランスとを含み前記クエリデータに特化した処理手順を指定するパスパターン処理テーブルを前記エントリーテーブルの前記IDに対応する手続きを張るとともに前記プレースと前記トランスとの間にリンクを張る処理を前記第2次構造グラフのルートノードから末端ノードまで再帰的に処理することによって生成する工程と、構造ストリーム走査手段が、前記構造ストリームデータ記憶手段から前記構造ストリームデータ集合を取得し、当該前記構造ストリームデータの要素と前記パスパターン処理テーブルの要素とを突き合わせることで、前記トークンで構成される結果データを生成する工程と、を含む。
本発明によれば、構造化文書データを構文解析し、構造ガイドデータを用いて構造化文書データ中にある構造情報を1次元の配列データである構造ストリームデータに変換して記憶することにより、構造化文書データの原文比でも1/20程度に圧縮することができ、ディスクI/Oを大幅に低減することができるので、格納効率を向上させることができるという効果を奏する。
また、本発明によれば、バックトラックでなく決定的な基本動作の繰返しであり、CPU処理上のオーバヘッドが小さいことから、結果として、高速化が困難であった複雑なXQueryや複数のXPathなどのクエリデータによる検索処理を飛躍的に高速化することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法の最良な実施の形態を詳細に説明する。
[第1の実施の形態]
本発明の第1の実施の形態を図1ないし図16に基づいて説明する。
図1は、本発明の第1の実施の形態にかかる構造化文書管理システムのシステム構築例を示す模式図である。本システムは、図1に示すように、構造化文書管理装置であるサーバコンピュータ(以下、サーバという)1にLAN(Local Area Network)等のネットワーク2を介して構造化文書入出力装置であるクライアントコンピュータ(以下、クライアント端末という)3が複数台接続されたサーバクライアントシステムを想定する。
図2は、サーバ1およびクライアント端末3のモジュール構成図である。サーバ1およびクライアント端末3は、例えば、一般的なパーソナルコンピュータである。
サーバ1およびクライアント端末3は、情報処理を行うCPU(Central Processing Unit)101、BIOSなどを記憶した読出し専用メモリであるROM(Read Only Memory)102、各種データを書換え可能に記憶するRAM(Random Access Memory)103、各種データベースとして機能するとともに各種のプログラムを格納するHDD(Hard Disk Drive)104、記憶媒体110を用いて情報を保管したり外部に情報を配布したり外部から情報を入手するためのCD−ROMドライブ等の媒体駆動装置105、ネットワーク2を介して外部の他のコンピュータと通信により情報を伝達するための通信制御装置106、処理経過や結果等を操作者に表示するCRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等の表示部107、並びに操作者がCPU101に命令や情報等を入力するためのキーボードやマウス等の入力部108等から構成されており、これらの各部間で送受信されるデータをバスコントローラ109が調停して動作する。
このようなサーバ1およびクライアント端末3では、ユーザが電源を投入するとCPU101がROM102内のローダーというプログラムを起動させ、HDD104よりOS(Operating System)というコンピュータのハードウェアとソフトウェアとを管理するプログラムをRAM103に読み込み、このOSを起動させる。このようなOSは、ユーザの操作に応じてプログラムを起動したり、情報を読み込んだり、保存を行ったりする。OSのうち代表的なものとしては、Windows(登録商標)、UNIX(登録商標)等が知られている。これらのOS上で走る動作プログラムをアプリケーションプログラムと呼んでいる。なお、アプリケーションプログラムは、所定のOS上で動作するものに限らず、後述の各種処理の一部の実行をOSに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやOSなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
ここで、サーバ1は、アプリケーションプログラムとして、構造化文書管理プログラムをHDD104に記憶している。この意味で、HDD104は、構造化文書管理プログラムを記憶する記憶媒体として機能する。
一方、クライアント端末3は、アプリケーションプログラムとして、構造化文書入出力プログラムをHDD104に記憶している。この意味で、HDD104は、構造化文書入出力プログラムを記憶する記憶媒体として機能する。
また、一般的には、サーバ1およびクライアント端末3のHDD104にインストールされるアプリケーションプログラムは、CD−ROMやDVDなどの各種の光ディスク、各種光磁気ディスク、フレキシブルディスクなどの各種磁気ディスク、半導体メモリ等の各種方式のメディア等の記憶媒体110に記録され、この記憶媒体110に記録された動作プログラムがHDD104にインストールされる。このため、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は構造化文書データの一例を示したものである。構造化文書データを記述するための代表的な言語としてXML(eXtensible Markup Language)が挙げられる。図4に示す構造化文書データは、XMLで記述されたものである。XMLでは、文書構造を構成する個々のパーツを「要素」(エレメント:Element)と呼び、要素はタグ(tag)を使って記述する。具体的には、要素の始まりを示すタグ(開始タグ)と、終わりを示すタグ(終了タグ)の2つのタグでデータを挟み込んで、1つの要素を表現している。なお、開始タグと終了タグで挟み込まれたテキストデータは、当該開始タグと終了タグで表された1つの要素に含まれるテキスト要素である。
図4に示す例では、<books>というタグで囲まれた要素のルート要素が存在する。この「books」要素は、<book>のタグで囲まれた2つの子要素を包含する。<book>は、<title>、<author>の各タグで囲まれた複数の子要素を包含する。<title>要素は、「XMLデータベース」というテキスト要素をもつ。1番目の<book>は、2つの<author>要素を持ち、2番目の<book>は1つの<author>要素を持つ。<title>と<author>の順序であるが、1番目の<book>では<title>が先に出現し、2番目の<book>では<author>が先に出現している。
なお、図4に示すように、テキスト要素を含めた各要素には、Ei(i=1〜20)という要素IDを使って各要素を参照することにする。
検索部12は、ユーザにより入力部108から入力された指示に従って、構造化文書DB21から所望のデータを検索するための検索条件などが記述されたクエリデータを作成し、当該クエリデータを含む検索要求をサーバ1へ送信する。また、検索部12は、サーバ1から送信された当該検索要求に対応する結果データを受け取り、これを表示部107に表示する。
一方、サーバ1は、構造化文書管理プログラムに従うことにより、構造化文書DB21と、格納処理部22と、検索処理部23とを備える。
格納処理部22は、クライアント端末3からの格納要求を受けて、クライアント端末3から送信された構造化文書データを構造化文書DB21に格納する処理を行う。この格納処理部22は、格納インタフェース部24と、構造ストリーム変換部25とから構成されている。
格納インタフェース部24は、構造化文書データの入力を受け付け(文書データ受付手段)、構造化文書データを格納するために構造ストリーム変換部25を呼び出す。
構造ストリーム変換部25は、構造ストリーム変換手段として機能するものであって、クライアント端末3から送信された構造化文書データを構文解析し、構造化文書DB21の構造ガイドデータ記憶手段である構造ガイドデータ領域21a内の構造ガイドデータを参照および更新することで、構造化文書データ中にある階層構造情報を構造ストリームデータに変換して構造化文書DB21の構造ストリームデータ記憶手段である構造ストリームデータ領域21bに格納する。また、構造ストリーム変換部25は、構造化文書データ中にあるテキスト情報を、別途テキストデータに変換して構造化文書DB21のテキストデータ領域21cに格納する。
ここで、構造ガイドデータは、システムに格納された構造化文書データ集合の全体に渡る階層構造情報の要約である。構造ガイドデータは、階層構造をなしており、以下の条件を保持している。
(1)システムに格納された構造化文書データ集合に現れる全てのパスは、構造ガイドデータに現れる。
(2)構造ガイドデータに現れる全てのパスは、システムに格納された構造化文書データ集合に現れる。
(3)構造ガイドデータに現れるパスは全て一意的である。
図5は、構造ガイドデータの一例を示す説明図である。図4に示した構造化文書データを構文解析した結果、構造ガイドデータが生成される。構造ガイドデータは複数のガイドノードとアークからなる階層構造である。各ガイドノードには、タグ名が記されている。テキスト要素に対しては、「text()」という組み込みタグ名が記されている。また、ルートのガイドノードには「ROOT」というタグ名が設定されている。各ガイドノードには、一意なID(GID)が割り当てられており、G0〜G11までのIDが使われている。新たな構造化文書データが構造化文書DB21に格納される毎に、それまで存在しなかったガイドノード集合が構造化文書DB21の構造ガイドデータ領域21aに追加されることで、構造ガイドデータは漸増的に更新されていく。
構造ストリームデータは、構造化文書データをルートから深さ優先で辿って行くときに通過する文書ノードに対応するGIDを並べた配列である。
図6は、構造ストリームデータの一例を示す説明図である。この構造ストリームデータの例は、図5に示した構造ガイドデータを使って図4の構造化文書データを配列データに変換したものである。各配列要素は、GIDを使って数値化されている。
E0 「ROOT」に対応する配列要素 (G)0
E1 「books」に対応する配列要素 (G)1
E2 「book」に対応する配列要素 (G)2
・・・ ・・・ ・・・
・・・ ・・・ ・・・
このように配列データ、つまり構造ストリームに変換することで、2次元的な構造的なデータを1次元の配列データとして扱えるようになる。
ここで、図7に示すフローチャートを参照して、構造ストリーム変換部25の構造ガイドデータの更新処理動作について説明する。
クライアント端末3からは、新たに格納すべき構造化文書データと、この構造化文書データの格納先のフォルダのGIDを含む格納要求メッセージが送信される。
なお、クライアント端末3では、格納先のフォルダのGIDは、次のようにして得ることができる。クライアント端末3の検索部12は、構造化文書DB21の概略構造(図5参照)を表示するためのGUI(Graphic User Interface)を有しており、このGUIにより表示された構造からユーザが格納先のフォルダとして所望のガイドノード(フォルダ)を指示すると、当該ガイドノードに対応するGIDを得るための問合せデータが作成され、サーバ1へ送信される。サーバ1では、当該問合せデータから、当該指示されたガイドノードのGIDを獲得して、クライアント端末3の検索部12へ返す。検索部12は、この得られたGIDを構造化文書登録部11へ渡す。
さて、サーバ1は、新たなに格納すべき構造化文書データと格納先のフォルダのGIDpを含む格納要求メッセージを受け取る(ステップS101)。
格納要求メッセージに含まれる、格納すべき構造化文書データは、格納処理部22の構造ストリーム変換部25へ渡されて、当該構造化文書データの構文解析が行われる。この結果得られるものは、構造化文書データの複数のオブジェクトデータからなる階層構造であり、メモリ上に展開される(ステップS102)。すなわち、構造ストリーム変換部25は、XMLデータである構造化文書データに対し、構文解析処理を行うことによりDOM(Document Object Model)形式のオブジェクトデータに展開するXMLパーサに相当する機能を有するものである。
次に、構造ストリーム変換部25は、解析結果をそのルートから辿ることによって、当該構造化文書データの構造、すなわち、当該構造化文書データ中の各要素に対応する複数のノードと、当該複数のノードからなる構造を抽出する。当該構造化文書データの構造をScとする(ステップS103)。
そして、構造ストリーム変換部25は、格納先フォルダのGIDをキーに構造ガイドデータ領域21aから構造を取得する。取得したGIDをGIDpと表す。構造ストリーム変換部25は、GIDpをキーにして構造ガイドデータ領域21aをスキャンすることで、対応する構造を取得する(ステップS104)。取得した構造をSpとする(ステップS105)。
その後、構造ストリーム変換部25は、ScとSpの照合を行う(ステップS106)。これはツリーの単純なマッチングである。すなわち、Scの構造要素に対応するSpの構造要素があれば、当該Scの構造要素に当該Spの構成要素のGIDを付与する。Scの構造要素に対応するSpの構造要素がなければ、Spに存在せずに、Scに存在する新たな要素に新たなGIDを付与し、Spに当該新たな要素を追加する。また、Scの当該新たな要素に当該新たなGIDを付与する。この操作をScの全ての構造要素に対し行う。
さらに、構造ストリーム変換部25は、更新されたSpを構造ガイドデータ領域21aに格納する(ステップS107)。これにより、構造ガイドデータ領域21aに格納される構造ガイドデータの更新がなされる。
最後に、格納すべき構造化文書データの各要素にGIDを付与する(ステップS108)。すなわち、格納すべき構造化文書データの各要素にGIDを付与するタイミングは、構造ガイドデータ領域を更新した後である。
検索処理部23は、クライアント端末3からの検索要求を受けて、指定された条件(クエリデータ)に合致するデータを構造化文書DB21から探し出し、この探し出したデータを結果データとして返す処理を行う。この検索処理部23は、検索インタフェース部26と、パスパターンコンパイル部27と、構造ストリーム走査部28とから構成されている。
検索インタフェース部26は、クエリデータの入力を受け付けて(クエリデータ受付手段)、受け付けたクエリデータを満足する結果データを得るためにパスパターンコンパイル部27と構造ストリーム走査部28を呼び出す。
パスパターンコンパイル部27は、パスパターンコンパイル手段として機能するものであって、クライアント端末3から送信されたクエリデータ集合を構文解析し、構造化文書DB21の構造ガイドデータ領域21a内の構造ガイドデータを参照することでクエリデータに特化した処理手順を指定するパスパターン処理テーブル29を生成する。
図8は、クエリデータの一例を示す説明図である。XMLでは、W3Cで提案されているXQuery(XML Query Language)という問合せ言語があり、これに基づいた問合せ記述方法に則っている。図8には、下記に示すようなクエリデータQ1が示されている。
Q1:構造化文書DB「ROOT」の階層木の中に「book」という要素があり、この「book」という要素の中に、「author」という要素があり、この「author」という要素の中に、「first」という要素がある構造化文書データの「book」の一覧を返す。
ここで、パスパターンコンパイル部27におけるパスパターンコンパイル処理について図9のフローチャートを参照して説明する。
まず、クライアント端末3から送信されたクエリデータから第1次構造グラフを生成する(ステップS1)。より詳細には、XQueryで記述されたクエリデータを構文解析し、タグとタグ間の関連をツリー形式で表現する。図8に示したクエリデータQ1について考えると、図10に示すような第1次構造グラフが生成される。「ROOT」を起点として、「book」との「//(Descendant-or-Self)」という関係で結ばれている。「book」は、「author」と「child」という関係で結ばれている。また、図8に示したQ1では、構造化文書データの「book」の一覧を返すので、「book」は出力ノードの印(二重線)が付いている。
次いで、ステップS1で生成した第1次構造グラフと構造ガイドデータとを照合し、第2次構造グラフを生成する(ステップS2)。より詳細には、第1次構造グラフと構造ガイドデータとを照合し、GIDに変換して不要なノードを取り除いたものとして第2次構造グラフを生成する。ここで、図10に示した第1次構造グラフについて考える。第1次構造グラフの各ノードが対応するGIDを算出すると、下記に示すようになる。
「ROOT」 → (G)0
「book」 → (G)2
「author」 → (G)5
「first」 → (G)6
さらに、以下のルールで不要なノードを取り除く。
(1)出力ノード以外で中間ノードにあたり、AND条件がついていないもの G5
(2)ルートノードにあたるもの G0
その結果、図11に示すような第2次構造グラフが生成される。
最後に、ステップS2で生成した第2次構造グラフからパスパターン処理テーブル29を生成する(ステップS3)。
図12は、図8に示すクエリデータQ1に対するパスパターン処理テーブル29の一例を示す説明図である。このようなパスパターン処理テーブル29は、以下の要素から構成される。
(1)エントリーテーブル
GIDに対応した配列要素を持つテーブル。構造ストリーム走査部28における構造ストリーム走査処理にて、構造ストリームデータの先頭要素から順にGIDを読み込んでいく。読み込んだGIDの位置はEIDで示される。読み込んだGIDに対応した手続きを実行する。手続きは、以下の2つである。
(1.1)PList
Placeに対してEID(Token(トークン)と呼ぶ)を追加(プッシュ)する。
(1.2)CList
Placeに対してクリアする。
(2)Place(プレース)
中間データであるTokenのキューを保持する記憶領域の役割を持つ。
(3)Trans(トランス)
PlaceとPlaceを接続し、上位Placeに保持されたTokenを下位Placeに流す(フロー)役割を持つ。TransにはAND、CMBなどのより詳しい役割が与えられる。AND、CMBに関する説明は以下の通りである。
(3.1)AND
上位のPlace集合の全てにTokenが存在すれば、下位のPlaceにToken(True)を流す。
(3.2)CMB
上位のPlace集合の全てにTokenが存在すれば、そのTokenの組み合わせを流す(出力する)。
図13は、パスパターン処理テーブル29の生成処理(図9のステップS3)の流れを示すフローチャートである。
まず、Place_rを新規作成し(ステップS11)、処理テーブル該当要素からPlace_rにPlistを張り(ステップS12)、親ノードが有るか否かを判定する(ステップS13)。親ノードが有ると判定した場合には(ステップS13のYes)、ステップS14に進み、親ノードの処理テーブル該当要素からCListを張る。一方、親ノードが無いと判定した場合には(ステップS13のNo)、ステップS15に進み、自ノードの処理テーブル該当要素からCListを張る。
その後、末端ノードであるか否かを判定する(ステップS16)。末端ノードであれば(ステップS16のYes)、呼び出し元に戻る。
一方、末端ノードでなければ(ステップS16のNo)、ステップS17に進み、AND条件であるか否かを判定する。AND条件であると判定した場合には(ステップS17のYes)、Trans(AND)を作り(ステップS18)、Trans(AND)からPlace_rへのリンクを張る(ステップS19)。次いで、各子ノードに対して処理テーブル生成し(ステップS21)、返値Place_nからTrans(AND)へのリンクを張る(ステップS22)。ステップS21〜S22の処理は、各子ノードを処理するまで(ステップS20のYes)、繰り返される。各子ノードを処理したと判定した場合には(ステップS20のYes)、ステップS23に進み、Place_rを返す。
AND条件でないと判定した場合には(ステップS17のNo)、Trans(CMB)を作り(ステップS24)、Trans(CMB)からPlace_rへのリンクを張る(ステップS25)。次いで、子ノードに対して処理テーブル生成し(ステップS26)、返値Place_nからTrans(CMB)へのリンクを張った後(ステップS27)、ステップS23に進み、Place_rを返す。
上述したように、パスパターン処理テーブル29は、第2次構造グラフのルートノードから再帰的に処理することで生成される。
構造ストリーム走査部28は、構造ストリーム走査手段として機能するものであって、構造化文書DB21の構造ストリームデータ領域21bから構造ストリームデータ集合を取得し、パスパターン処理テーブル29と突き合わせることで、結果データを生成する。
ここで、構造ストリーム走査部28における構造ストリームの走査処理について、図14及び図15のフローチャートを参照して説明する。図14に示すように、まず、構造ストリームの要素を順に取り出して(ステップS201)、全ての要素を取り出したと判断するまで(ステップS202のYes)、以下に示す処理(ステップS203〜S207)を繰り返す。全ての要素を取り出したと判断すると(ステップS202のYes)、構造ストリームの走査処理を終了する。
全ての要素を取り出したと判断しなかった場合には(ステップS202のNo)、構造ストリームの要素に対応するエントリテーブル要素を参照し(ステップS203)、CListがあれば(ステップS204のYes)、CListに接続するPlaceをクリアする(ステップS205)。つまり、内部に保持するキューを空にする。
一方、PListがあれば(ステップS204のNo,ステップS206のYes)、PListに接続するPlaceにTokenをプッシュする(ステップS207)。
ステップS207における処理について図15を参照して詳述する。PlaceへのTokenプッシュは、まず、Placeで保持するキューにTokenをプッシュする(ステップS301)。その後、Placeの先にあるTransを順に取り出し(ステップS302)、全てのTransを取り出したと判断するまで(ステップS303のYes)、以下に示す処理(ステップS304〜S309)を繰り返す。全てのTransを取り出したと判断すると(ステップS303のYes)、PlaceへのTokenプッシュ処理を終了する。
全てのTransを取り出したと判断しなかった場合には(ステップS303のNo)、TransがANDタイプであれば(ステップS304のYes)、上位のPlace集合の全てにTokenが存在するか否かをチェックする(ステップS305)。
上位のPlace集合の全てにTokenが存在すると判断した場合には(ステップS305のYes)、下位のPlaceにToken(True)をプッシュし(ステップS306)、ステップS302に戻る。
一方、TransがCMBタイプであれば(ステップS304のNo,ステップS307のYes)、上位のPlace集合の全てにTokenが存在するか否かをチェックする(ステップS308)。
上位のPlace集合の全てにTokenが存在すると判断した場合には(ステップS308のYes)、そのTokenの組み合わせを出力する(ステップS309)。一方、上位のPlace集合の全てにTokenが存在しないと判断した場合には(ステップS308のYes)、ステップS302に戻る。
なお、TransがANDタイプでもCMBタイプでもない場合には(ステップS304のNo,ステップS307のNo)、エラー処理を行う。
図16は、図12で示したパスパターン処理テーブル29に対して図6で示した構造ストリームデータを与えたときの進行図表である。
E0[G0]を走査した時、
PList、CListが存在しないので、何もしない。
E1[G1]を走査した時、
PList、CListが存在しないので、何もしない。
E2[G2]を走査した時、
PList、CListが存在する。Place0、Place1をクリアし、Place0にToken 2をプッシュする。Place1が空なので、Trans0は何も出力しない。
・・・
・・・
E6[G6]を走査した時、
PListが存在する。Place1に6をプッシュする。Place0、Place1にTokenが入っているので、Trans0は出力ノードに当たるPlace0のToken 2を出力する。
・・・
・・・
E13[G2]を走査した時、
PList、CListが存在する。Place0、Place1をクリアし、Place0にToken 13をプッシュする。Place1が空なので、Trans0は何も出力しない。
・・・
E15[G6]を走査した時、
PListが存在する。Place1に15をプッシュする。Place0、Place1にTokenが入っているので、Trans0は出力ノードに当たるPlace0のToken 13を出力する。
・・・
上述したような処理により、2,13のTokenが出力されることになる。2は図4におけるE2に相当し、13は図4におけるE13に相当する。2,13のTokenは、検索インタフェース部26にて構造化文書DB21のテキストデータ領域21cに記憶されているテキストデータを取得し、構造化文書データとして文字列化され、結果データとしてクライアント端末3に出力される。
このように本実施の形態によれば、構造化文書データを構文解析し、構造ガイドデータを用いて構造化文書データ中にある構造情報を1次元の配列データである構造ストリームデータに変換して記憶することにより、構造化文書データの原文比でも1/20程度に圧縮することができ、ディスクI/Oを大幅に低減することができるので、格納効率を向上させることができる。
また、本実施の形態によれば、バックトラックでなく、決定的な基本動作の繰返しであり、CPU処理上のオーバヘッドが小さいことから、結果として、高速化が困難であった複雑なXQueryや複数のXPathなどのクエリデータによる検索処理を飛躍的に高速化することができる。
[第2の実施の形態]
次に、本発明の第2の実施の形態を図17ないし図21に基づいて説明する。なお、前述した第1の実施の形態と同じ部分は同じ符号で示し説明も省略する。本実施の形態においては、第1の実施の形態とはクエリデータの種類が異なっている。
図17は、本実施の形態のクエリデータQ2の一例を示す説明図である。図17には、下記に示すようなクエリデータQ2が示されている。
Q2:構造化文書DB「ROOT」の階層木の中に「book」という要素があり、この「book」という要素の中に、「author」という要素があり、この「author」という要素の中に、「first」と「last」という2つの要素がある構造化文書データの「book」の一覧を返す。
ここで、図18は図17のクエリデータQ2に対する第1次構造グラフを示す模式図、図19は図18の第1次構造グラフに基づく第2次構造グラフを示す模式図である。
図18に示すように、クエリデータQ2に対する第1次構造グラフは、「author」の下に「first」と「last」の2つの要素を持つという条件が付いているので、AND条件がリンクに付加されている。そして、不要なノードを取り除くと、図19に示すような第2次構造グラフが生成される。
図20は、図17に示すクエリデータQ2に対するパスパターン処理テーブル29の一例を示す説明図である。図12に示したクエリデータQ1に対するパスパターン処理テーブル29の一例との違いは、Trans(AND)が追加されていることである。
図21は、図20で示したパスパターン処理テーブル29に対して図6で示した構造ストリームデータを与えたときの進行図表である。
E0[G0]を走査した時、
PList、CListが存在しないので、何もしない。
E1[G1]を走査した時、
PList、CListが存在しないので、何もしない。
E2[G2]を走査した時、
PList、CListが存在する。Place0、Place3、Place4をクリアし、Place0にToken 2をプッシュする。Place3が空なので、Trans1は何も出力しない。
・・・
・・・
E5[G5]を走査した時、
PList、CListが存在する。Place1、Place2をクリアする。Place4にToken5をプッシュする。
E6[G6]を走査した時、
PListが存在する。Place1にToken 6をプッシュする。Place2が空なので、Trans0は何も出力しない。
・・・
E8[G5]を走査した時、
PList、CListが存在する。Place1、Place2をクリアする。Place4にToken8をプッシュする。

E9[G8]を走査した時、
PListが存在する。Place2にToken 9をプッシュする。Place1が空なので、Trans0は何も出力しない。
・・・
・・・
E14[G5]を走査した時、
PList、CListが存在する。Place1、Place2をクリアする。Place4にToken14をプッシュする。
E15[G6]を走査した時、
PListが存在する。Place1にToken 15をプッシュする。Place2が空なので、Trans0は何も出力しない。
・・・
E17[G8]を走査した時、
PListが存在する。Place2にToken 17をプッシュする。Place1、Place2、Place4にTokenが入っているので、Trans0はToken TrueをPlace3にプッシュする。Place0、Place3にTokenが入っているので、Trans1は出力ノードに当たるPlace0のToken 13を出力する。
・・・
上述したような処理により、13のTokenが出力されることになる。13は図4におけるE13に相当する。13のTokenは、検索インタフェース部26にて構造化文書DB21のテキストデータ領域21cに記憶されているテキストデータを取得し、構造化文書データとして文字列化され、結果データとしてクライアント端末3に出力される。
第1の実施の形態の図16と比較し、同じ構造ストリームデータであっても、パスパターン処理テーブルが異なれば、異なる結果データが得られることになる。
[第3の実施の形態]
次に、本発明の第3の実施の形態を図22に基づいて説明する。なお、前述した第1の実施の形態または第2の実施の形態と同じ部分は同じ符号で示し説明も省略する。本実施の形態は、第1の実施の形態のクエリデータQ1と第2の実施の形態のクエリデータQ2とを同時に処理するようにしたものである。
図22は、クエリデータQ1、Q2を同時に処理するパスパターン処理テーブル29の一例を示す説明図である。これは、図12に示したパスパターン処理テーブル29と図20に示したパスパターン処理テーブル29とを合成することで得られる。図22で示したパスパターン処理テーブル29に対して図6で示した構造ストリームデータを与えたときには、下記に示すような出力が得られる。
(1)Trans0_1からは、2、13のTokenが出力されることになる。
(2)Trans1からは、13のTokenが出力されることになる。
このように本実施の形態によれば、単純なXPathだけでなく、複雑なXQueryでも、1回の構造ストリームデータの走査で複数の結果データを同時出力することができる。さらに、複数のXQueryを受け付けた場合、1回の構造ストリームデータの走査で複数の結果データを同時出力することができる。
[第4の実施の形態]
次に、本発明の第4の実施の形態を図23および図24に基づいて説明する。なお、前述した第1の実施の形態ないし第3の実施の形態と同じ部分は同じ符号で示し説明も省略する。
本実施の形態においては、構造化文書データが事前の構造情報を伴っている場合、すなわち構造化文書データの構造情報が事前に明確に定義されている場合、パスパターンコンパイル部27が、構造ストリームデータの走査をスキップする処理手順を埋め込むようにした点で、第1の実施の形態ないし第3の実施の形態とは異なるものである。
図23は、事前の構造情報を伴う1つの構造化文書データの一例を示す説明図である。図23に示すように、取り扱う構造化文書データについて、文書構造を事前に定義することができる。この定義を可能にするのがスキーマ言語であり、XMLでは基本的なものとしてDTD(Data Type Definition)がある。DTDは、要素宣言、属性宣言、実体宣言、などの宣言集合から構成される。図23では、「books」、「book」、「info」、「isbn」、「issueDate」、「year」、「month」、「day」といった要素宣言を行っている。
「books」 複数の「book」と1つの「info」から構成される。+は1個以上の繰り返しを許容することを意味する。
「info」 「isbn」と「issuDate」から構成される。
「issueDate」 「year」、「month」、「day」から構成される。
新たな構造化文書データを格納するときに、事前に与えられたDTDとの妥当性チェックが行われ、DTDに合致しなければ妥当性エラーとして格納しないことになる。
このように構造化文書DB21のテキストデータ領域21cにあるテキストデータにDTD(構造情報)が事前定義されている場合、パスパターンコンパイル部27では構造ストリームデータの一部をスキップする手続きをパスパターン処理テーブル29に埋め込んで、構造ストリーム走査部28における走査処理を高速化することができる。
図23の構造化文書データに対して図8に示したクエリデータQ1を処理する例を以下に示す。クエリデータQ1が与えられたパスパターンコンパイル部27は、図23のDTDを参照し「info」を構成する要素が10個であることを計算する。つまり、
(1)info
(2)isbn
(3)isbnテキスト
(4)issueDate
(5)year
(6)yearテキスト
(7)month
(8)monthテキスト
(9)day
(10)dayテキスト
の10個である。もちろん、これらの要素は構造化文書DB21の構造ガイドデータ領域21aに反映される。
一方、クエリデータQ1
//book[author[first]
に対応する第2構造グラフは、図11に示したように、
2 − 6
であった。対応する構造ガイドデータ領域21aの部分木があるが、先の(1)〜(10)に対応する構造ガイドデータ領域21aの部分木とは共有部分を持たない。
その結果、パスパターンコンパイル部27は、「info」に該当するGID12が来た場合には10個分の配列要素をスキップできることを判断し、図24に示すように、GID12に対応するPListに10個のスキップ手続きをパスパターン処理テーブル29に設定しておく。
そして、構造ストリーム走査部28では、GID12を走査した時、10個の構造ストリーム要素を飛ばして、走査処理を継続する。
なお、上記の例では、事前の構造情報を使った高速化を説明したが、格納された構造化文書データの統計情報を使っても同様に高速化することができる。
上記の例では、DTDが事前定義されていたケースを考えたが、同様にDTDが事前定義されていなくても、全構造化文書データに「info」以下の構造情報が現れていれば、パスパターンコンパイル部27では構造ストリームデータの一部をスキップする手続きをパスパターン処理テーブル29に埋め込んで、同様のスキップを実行することができる。そのために、構造ストリーム変換部25にて、全構造化文書データに「info」以下の構造が現れているフラグを構造ガイドデータ領域21aに記憶しておけばよい。
このように本実施の形態によれば、構造ストリームは途中再生可能であるため、構造IDと統計情報(描画スキーマ、索引)を使うことで不要なトラバースをスキップすることができる。
本発明の第1の実施の形態にかかる構造化文書管理システムのシステム構築例を示す模式図である。 サーバおよびクライアント端末のモジュール構成図である。 サーバおよびクライアント端末の概略構成を示すブロック図である。 構造化文書データの一例を示す説明図である。 構造ガイドデータの一例を示す説明図である。 構造ストリームデータの一例を示す説明図である。 構造ガイドデータの更新処理の流れを示すフローチャートである。 クエリデータの一例を示す説明図である。 パスパターンコンパイル処理の流れを概略的に示すフローチャートである。 クエリデータQ1に対する第1次構造グラフを示す模式図である。 図10の第1次構造グラフに基づく第2次構造グラフを示す模式図である。 クエリデータQ1に対するパスパターン処理テーブルの一例を示す説明図である。 パスパターン処理テーブルの生成処理の流れを示すフローチャートである。 構造ストリームの走査処理の流れを示すフローチャートである。 PlaceへのTokenプッシュ処理の流れを示すフローチャートである。 図12で示したパスパターン処理テーブルに対して図6で示した構造ストリームデータを与えたときの進行図表である。 本発明の第2の実施の形態にかかるクエリデータQ2の一例を示す説明図である。 クエリデータQ2に対する第1次構造グラフを示す模式図である。 図18の第1次構造グラフに基づく第2次構造グラフを示す模式図である。 クエリデータQ2に対するパスパターン処理テーブルの一例を示す説明図である。 図20で示したパスパターン処理テーブルに対して図6で示した構造ストリームデータを与えたときの進行図表である。 本発明の第3の実施の形態にかかるクエリデータQ1、Q2を同時に処理するパスパターン処理テーブルの一例を示す説明図である。 本発明の第4の実施の形態にかかる事前の構造情報を伴う1つの構造化文書データの一例を示す説明図である。 スキップ手続きが設定されたパスパターン処理テーブルの一例を示す説明図である。
符号の説明
1 構造化文書管理装置
21a 構造ガイドデータ記憶手段
21b 構造ストリームデータ記憶手段
24 文書データ受付手段
25 構造ストリーム変換手段
26 クエリデータ受付手段
27 パスパターンコンパイル手段
28 構造ストリーム走査手段
Q1,Q2 クエリデータ

Claims (12)

  1. 記憶部を備える構造化文書管理装置であって、
    階層化された論理構造を有している構造化文書データの入力を受け付ける文書データ受付手段と、
    前記文書データ受付手段により受け付けた前記構造化文書データを構文解析して当該構造化文書データ集合の全体に渡るものであって格納先フォルダを示す一意なIDが割り当てられたガイドノードを含む階層構造情報の要約である構造ガイドデータを生成し、当該構造ガイドデータを用いて前記構造化文書データをルートノードに対応する前記IDから深さ優先で辿って行くときに通過するガイドノードに対応する前記IDを並べた1次元の配列データである構造ストリームデータに変換する構造ストリーム変換手段と、
    前記構造ストリーム変換手段により変換された前記構造ストリームデータを前記記憶部に記憶する構造ストリームデータ記憶手段と、
    前記構造ガイドデータを前記記憶部に記憶する構造ガイドデータ記憶手段と、
    クエリデータの入力を受け付けるクエリデータ受付手段と、
    前記クエリデータ受付手段により受け付けた前記クエリデータを構文解析してタグ間の関連をツリー形式で表現した第1次構造グラフを生成し、当該第1次構造グラフと前記構造ガイドデータ記憶手段により前記記憶部に記憶されている前記構造ガイドデータとを照合して前記IDに変換して不要なノードを取り除いた第2次構造グラフを生成し、前記IDに対応した配列要素を持ち前記IDに対応した手続きを実行するエントリーテーブルと前記IDの位置を示す中間データであるトークンのキューを保持する記憶領域要素であるプレースと前記プレース間を接続して上位のプレースに保持されたトークンを下位のプレースに流す役割を持つ要素であるトランスとを含み前記クエリデータに特化した処理手順を指定するパスパターン処理テーブルを前記エントリーテーブルの前記IDに対応する手続きを張るとともに前記プレースと前記トランスとの間にリンクを張る処理を前記第2次構造グラフのルートノードから末端ノードまで再帰的に処理することによって生成するパスパターンコンパイル手段と、
    前記記憶部から前記構造ストリームデータ集合を取得し、当該前記構造ストリームデータの要素と前記パスパターン処理テーブルの要素とを突き合わせることで、前記トークンで構成される結果データを生成する構造ストリーム走査手段と、
    を備えることを特徴とする構造化文書管理装置。
  2. 前記パスパターンコンパイル手段は、複数の前記クエリデータを処理する場合、前記各クエリデータに係るそれぞれの前記パスパターン処理テーブルを合成して、複数の前記クエリデータのパスパターン処理テーブルとする、
    ことを特徴とする請求項1記載の構造化文書管理装置。
  3. 前記パスパターンコンパイル手段は、前記構造化文書データの構造情報が定義されている場合、前記構造ストリームデータの一部をスキップする手続きを前記パスパターン処理テーブルに埋め込む、
    ことを特徴とする請求項2記載の構造化文書管理装置。
  4. 前記パスパターンコンパイル手段は、前記構造化文書データの統計情報により構造情報が現れている場合、前記構造ストリームデータの一部をスキップする手続きを前記パスパターン処理テーブルに埋め込む、
    ことを特徴とする請求項2記載の構造化文書管理装置。
  5. 記憶部を備える構造化文書管理装置を制御するコンピュータに、
    階層化された論理構造を有している構造化文書データの入力を受け付ける文書データ受付機能と、
    前記文書データ受付機能により受け付けた前記構造化文書データを構文解析して当該構造化文書データ集合の全体に渡るものであって格納先フォルダを示す一意なIDが割り当てられたガイドノードを含む階層構造情報の要約である構造ガイドデータを生成し、当該構造ガイドデータを用いて前記構造化文書データをルートノードに対応する前記IDから深さ優先で辿って行くときに通過するガイドノードに対応する前記IDを並べた1次元の配列データである構造ストリームデータに変換する構造ストリーム変換機能と、
    前記構造ストリーム変換機能により変換された前記構造ストリームデータを前記記憶部に構造ストリームデータ記憶手段に記憶する機能と、
    前記構造ガイドデータを前記記憶部に記憶する構造ガイドデータ記憶機能と、
    クエリデータの入力を受け付けるクエリデータ受付機能と、
    前記クエリデータ受付機能により受け付けた前記クエリデータを構文解析してタグ間の関連をツリー形式で表現した第1次構造グラフを生成し、当該第1次構造グラフと前記構造ガイドデータ記憶機能により前記記憶部に記憶されている前記構造ガイドデータとを照合して前記IDに変換して不要なノードを取り除いた第2次構造グラフを生成し、前記IDに対応した配列要素を持ち前記IDに対応した手続きを実行するエントリーテーブルと前記IDの位置を示す中間データであるトークンのキューを保持する記憶領域要素であるプレースと前記プレース間を接続して上位のプレースに保持されたトークンを下位のプレースに流す役割を持つ要素であるトランスとを含み前記クエリデータに特化した処理手順を指定するパスパターン処理テーブルを前記エントリーテーブルの前記IDに対応する手続きを張るとともに前記プレースと前記トランスとの間にリンクを張る処理を前記第2次構造グラフのルートノードから末端ノードまで再帰的に処理することによって生成するパスパターンコンパイル機能と、
    前記記憶部から前記構造ストリームデータ集合を取得し、当該前記構造ストリームデータの要素と前記パスパターン処理テーブルの要素とを突き合わせることで、前記トークンで構成される結果データを生成する構造ストリーム走査機能と、
    を実行させることを特徴とする構造化文書管理プログラム。
  6. 前記パスパターンコンパイル機能は、複数の前記クエリデータを処理する場合、前記各クエリデータに係るそれぞれの前記パスパターン処理テーブルを合成して、複数の前記クエリデータのパスパターン処理テーブルとする、
    ことを特徴とする請求項5記載の構造化文書管理プログラム。
  7. 前記パスパターンコンパイル機能は、前記構造化文書データの構造情報が定義されている場合、前記構造ストリームデータの一部をスキップする手続きを前記パスパターン処理テーブルに埋め込む、
    ことを特徴とする請求項5記載の構造化文書管理プログラム。
  8. 前記パスパターンコンパイル機能は、前記構造化文書データの統計情報により構造情報が現れている場合、前記構造ストリームデータの一部をスキップする手続きを前記パスパターン処理テーブルに埋め込む、
    ことを特徴とする請求項5記載の構造化文書管理プログラム。
  9. 構造化文書管理装置で実行される構造化文書管理方法であって、
    前記構造化文書管理装置は、制御部と記憶部を備え、
    前記制御部において実行される、
    文書データ受付手段が、階層化された論理構造を有している構造化文書データの入力を受け付ける工程と、
    構造ストリーム変換手段が、前記文書データ受付手段により受け付けた前記構造化文書データを構文解析して当該構造化文書データ集合の全体に渡るものであって格納先フォルダを示す一意なIDが割り当てられたガイドノードを含む階層構造情報の要約である構造ガイドデータを生成し、当該構造ガイドデータを用いて前記構造化文書データをルートノードに対応する前記IDから深さ優先で辿って行くときに通過するガイドノードに対応する前記IDを並べた1次元の配列データである構造ストリームデータに変換する工程と、
    構造ストリームデータ記憶手段が、前記構造ストリーム変換手段により変換された前記構造ストリームデータを前記記憶部に記憶する工程と、
    構造ガイドデータ記憶手段が、前記構造ガイドデータを前記記憶部に記憶する工程と、
    クエリデータ受付手段が、クエリデータの入力を受け付ける工程と、
    パスパターンコンパイル手段が、このクエリデータ受付手段により受け付けた前記クエリデータを構文解析してタグ間の関連をツリー形式で表現した第1次構造グラフを生成し、当該第1次構造グラフと前記構造ガイドデータ記憶手段により前記記憶部に記憶されている前記構造ガイドデータとを照合して前記IDに変換して不要なノードを取り除いた第2次構造グラフを生成し、前記IDに対応した配列要素を持ち前記IDに対応した手続きを実行するエントリーテーブルと前記IDの位置を示す中間データであるトークンのキューを保持する記憶領域要素であるプレースと前記プレース間を接続して上位のプレースに保持されたトークンを下位のプレースに流す役割を持つ要素であるトランスとを含み前記クエリデータに特化した処理手順を指定するパスパターン処理テーブルを前記エントリーテーブルの前記IDに対応する手続きを張るとともに前記プレースと前記トランスとの間にリンクを張る処理を前記第2次構造グラフのルートノードから末端ノードまで再帰的に処理することによって生成する工程と、
    構造ストリーム走査手段が、前記構造ストリームデータ記憶手段から前記構造ストリームデータ集合を取得し、当該前記構造ストリームデータの要素と前記パスパターン処理テーブルの要素とを突き合わせることで、前記トークンで構成される結果データを生成する工程と、
    を含むことを特徴とする構造化文書管理方法。
  10. 前記パスパターンコンパイル工程は、複数の前記クエリデータを処理する場合、前記各クエリデータに係るそれぞれの前記パスパターン処理テーブルを合成して、複数の前記クエリデータのパスパターン処理テーブルとする、
    ことを特徴とする請求項9記載の構造化文書管理方法。
  11. 前記パスパターンコンパイル工程は、前記構造化文書データの構造情報が定義されている場合、前記構造ストリームデータの一部をスキップする手続きを前記パスパターン処理テーブルに埋め込む、
    ことを特徴とする請求項9記載の構造化文書管理方法。
  12. 前記パスパターンコンパイル工程は、前記構造化文書データの統計情報により構造情報が現れている場合、前記構造ストリームデータの一部をスキップする手続きを前記パスパターン処理テーブルに埋め込む、
    ことを特徴とする請求項9記載の構造化文書管理方法。
JP2006045807A 2006-02-22 2006-02-22 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法 Active JP5121146B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006045807A JP5121146B2 (ja) 2006-02-22 2006-02-22 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
US11/524,621 US7975220B2 (en) 2006-02-22 2006-09-21 Apparatus, program product and method for structured document management
CNB200710005309XA CN100541493C (zh) 2006-02-22 2007-02-14 用于结构化文档管理的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006045807A JP5121146B2 (ja) 2006-02-22 2006-02-22 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法

Publications (2)

Publication Number Publication Date
JP2007226452A JP2007226452A (ja) 2007-09-06
JP5121146B2 true JP5121146B2 (ja) 2013-01-16

Family

ID=38429615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006045807A Active JP5121146B2 (ja) 2006-02-22 2006-02-22 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法

Country Status (3)

Country Link
US (1) US7975220B2 (ja)
JP (1) JP5121146B2 (ja)
CN (1) CN100541493C (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5196924B2 (ja) * 2007-09-11 2013-05-15 株式会社東芝 データベース処理装置、方法及びプログラム
US8412516B2 (en) 2007-11-27 2013-04-02 Accenture Global Services Limited Document analysis, commenting, and reporting system
US8271870B2 (en) 2007-11-27 2012-09-18 Accenture Global Services Limited Document analysis, commenting, and reporting system
US8266519B2 (en) * 2007-11-27 2012-09-11 Accenture Global Services Limited Document analysis, commenting, and reporting system
JP4796108B2 (ja) 2008-09-26 2011-10-19 株式会社東芝 構造化文書検索装置、方法及びプログラム
JP5396843B2 (ja) * 2008-12-11 2014-01-22 富士通株式会社 検索方法および検索装置
CN101477532B (zh) * 2008-12-23 2011-09-28 北京畅游天下网络技术有限公司 实现数据存储、读取的方法、装置及系统
JP5262864B2 (ja) * 2009-03-10 2013-08-14 富士通株式会社 記憶媒体、検索方法および検索装置
JP5380542B2 (ja) 2009-09-17 2014-01-08 株式会社東芝 管理装置
EP2362333A1 (en) 2010-02-19 2011-08-31 Accenture Global Services Limited System for requirement identification and analysis based on capability model structure
US9436763B1 (en) * 2010-04-06 2016-09-06 Facebook, Inc. Infrastructure enabling intelligent execution and crawling of a web application
US8566731B2 (en) 2010-07-06 2013-10-22 Accenture Global Services Limited Requirement statement manipulation system
US9400778B2 (en) 2011-02-01 2016-07-26 Accenture Global Services Limited System for identifying textual relationships
US8935654B2 (en) 2011-04-21 2015-01-13 Accenture Global Services Limited Analysis system for test artifact generation
CN102479248A (zh) * 2011-05-30 2012-05-30 北京中科希望软件股份有限公司 一种电子文档结构化处理的方法和系统
CN102662774B (zh) * 2012-03-13 2014-06-25 中冶南方工程技术有限公司 多进程间结构化文档通信方法
US8935267B2 (en) * 2012-06-19 2015-01-13 Marklogic Corporation Apparatus and method for executing different query language queries on tree structured data using pre-computed indices of selective document paths
CN103827861B (zh) 2012-09-07 2017-09-08 株式会社东芝 结构化文档管理装置及方法
JP5422751B1 (ja) 2012-09-20 2014-02-19 株式会社東芝 構造化文書管理装置、方法およびプログラム
US9928287B2 (en) 2013-02-24 2018-03-27 Technion Research & Development Foundation Limited Processing query to graph database
KR101974341B1 (ko) * 2014-01-23 2019-05-02 한화정밀기계 주식회사 계층적 데이터 분석 방법 및 그 프로그램이 기록된 기록 매체

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467472A (en) * 1994-04-15 1995-11-14 Microsoft Corporation Method and system for generating and maintaining property sets with unique format identifiers
JPH07319918A (ja) * 1994-05-24 1995-12-08 Fuji Xerox Co Ltd 文書検索対象指示装置
US5913214A (en) * 1996-05-30 1999-06-15 Massachusetts Inst Technology Data extraction from world wide web pages
SE510000C2 (sv) * 1997-07-21 1999-03-29 Ericsson Telefon Ab L M Struktur vid databas
JP2000057163A (ja) 1998-08-12 2000-02-25 Nec Corp 構造化文書データベースシステム
JP3492246B2 (ja) 1999-07-16 2004-02-03 富士通株式会社 Xmlデータ検索処理方法および検索処理システム
US6502112B1 (en) * 1999-08-27 2002-12-31 Unisys Corporation Method in a computing system for comparing XMI-based XML documents for identical contents
US8131773B2 (en) * 2000-10-20 2012-03-06 Sharp Kabushiki Kaisha Search information managing for moving image contents
US7171404B2 (en) * 2002-06-13 2007-01-30 Mark Logic Corporation Parent-child query indexing for XML databases
AU2003236543A1 (en) * 2002-06-13 2003-12-31 Mark Logic Corporation A subtree-structured xml database
US7069504B2 (en) * 2002-09-19 2006-06-27 International Business Machines Corporation Conversion processing for XML to XML document transformation
AU2002953555A0 (en) * 2002-12-23 2003-01-16 Canon Kabushiki Kaisha Method for presenting hierarchical data
JP4247108B2 (ja) * 2003-12-25 2009-04-02 株式会社東芝 構造化文書検索方法、構造化文書検索装置、及びプログラム
US7877366B2 (en) * 2004-03-12 2011-01-25 Oracle International Corporation Streaming XML data retrieval using XPath

Also Published As

Publication number Publication date
CN100541493C (zh) 2009-09-16
US20070198559A1 (en) 2007-08-23
CN101025748A (zh) 2007-08-29
JP2007226452A (ja) 2007-09-06
US7975220B2 (en) 2011-07-05

Similar Documents

Publication Publication Date Title
JP5121146B2 (ja) 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
US8484210B2 (en) Representing markup language document data in a searchable format in a database system
US7664773B2 (en) Structured data storage method, structured data storage apparatus, and retrieval method
JP4977128B2 (ja) データベースからxml文書を動的に生成する方法
US20050060306A1 (en) Apparatus, method, and program for retrieving structured documents
JP2008052662A (ja) 構造化文書管理システム及びプログラム
JP2008090403A (ja) 文書検索装置、文書検索方法および文書検索プログラム
JP4247108B2 (ja) 構造化文書検索方法、構造化文書検索装置、及びプログラム
JP4796108B2 (ja) 構造化文書検索装置、方法及びプログラム
JP2005135199A (ja) オートマトン作成方法、および、xmlデータ検索方法、ならびに、xmlデータ検索装置、xmlデータ検索プログラム、および、xmlデータ検索プログラムの記録媒体
JP3832693B2 (ja) 構造化文書検索表示方法及び装置
Liu et al. An XML-enabled data extraction toolkit for web sources
JP3914081B2 (ja) アクセス権限設定方法および構造化文書管理システム
JP2006127235A (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
JP3632643B2 (ja) 構造化文書管理装置
JP4649339B2 (ja) XPath処理装置、XPath処理方法、XPath処理プログラム、および、記憶媒体
JP3842572B2 (ja) 構造化文書管理方法および構造化文書管理装置およびプログラム
JP3842576B2 (ja) 構造化文書編集方法及び構造化文書編集システム
JP5695586B2 (ja) Xml文書検索装置及びプログラム
JP2008243075A (ja) 構造化文書管理装置及び方法
JP3842574B2 (ja) 情報抽出方法および構造化文書管理装置およびプログラム
JP2005018811A (ja) 文字列検索装置
JP2004348485A (ja) 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体
JP2008140157A (ja) 構造化文書処理装置
JP2003177923A (ja) ポーティング支援システムにおける予約語変換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100302

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100428

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100817

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101117

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101207

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120903

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121023

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

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5121146

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350