JP2014059757A - 木構造を有するデータを処理する装置、処理方法およびプログラム - Google Patents

木構造を有するデータを処理する装置、処理方法およびプログラム Download PDF

Info

Publication number
JP2014059757A
JP2014059757A JP2012204803A JP2012204803A JP2014059757A JP 2014059757 A JP2014059757 A JP 2014059757A JP 2012204803 A JP2012204803 A JP 2012204803A JP 2012204803 A JP2012204803 A JP 2012204803A JP 2014059757 A JP2014059757 A JP 2014059757A
Authority
JP
Japan
Prior art keywords
sequence
node
sequence element
tree structure
nodes
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
JP2012204803A
Other languages
English (en)
Inventor
Lianzi WEN
連子 文
Koichi Nishiya
晃一 西谷
Kansaku Nakakura
勘作 中倉
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2012204803A priority Critical patent/JP2014059757A/ja
Priority to US14/029,547 priority patent/US9524354B2/en
Publication of JP2014059757A publication Critical patent/JP2014059757A/ja
Pending legal-status Critical Current

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/81Indexing, e.g. XML tags; Data structures therefor; Storage structures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying

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)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】シリアライズされたデータに基づいて木構造を復元することを可能とし、元のデータから木構造の情報を含む部分データの抽出を可能とする。
【解決手段】検索部13は、検索処理により、シリアライズされたデータのシーケンス要素を特定する。必須要素列特定部31は、検索されたシーケンス要素を含むシーケンス要素列(必須要素列)を特定する。後部分特定部32は、必須要素列の全てのシーケンス要素に対応するノードを含む部分木を構成するために必要な、必須要素列の後に位置するシーケンス要素を含むシーケンス要素列を特定する。前部分特定部33は、必須要素列の全てのシーケンス要素に対応するノードを含む部分木を構成するために必要な、必須要素列の前に位置するシーケンス要素を含むシーケンス要素列を特定する。最小部分木特定部41は、検索部により特定された複数のノードを全て含む部分木に対応するシーケンス要素列を特定する。
【選択図】図9

Description

本発明は、XML文書等の木構造を有する構造化文書(データ)を処理し、所望の部分を抽出する装置、処理方法およびプログラムに関する。
近年、XML等の構造化言語で記述された構造化文書(データ)が様々な用途で広く利用されている。この種のデータが用いられる情報システムには、外部からの検索要求を受け付け、データ中の検索条件に該当する部分を抽出して返すシステムがある。このようなシステムにおいて、検索結果として、元のデータが有する構造のうち、抽出対象であるデータ部分に対応する部分の情報も要求される場合がある。
例えば、木構造を有するXML文書に対してキーワード検索を行う場合に、キーワードに該当するテキスト部分と共に、そのテキスト部分を含む木構造(部分木)を抽出することが要求される(以下、元のデータから抽出された部分データであって、該当部分の構造の情報を含むものを「部分文書」と呼ぶ)。従来、XML文書の中から所望の部分文書を抽出する手法が提案されている(例えば、非特許文献1参照)。
三木健士、横田治夫、「検索キーワードを含む最小XML部分文書抽出のための索引手法」、DEWS2007論文集、[URL] http://www.ieice.org/~de/DEWS/DEWS2007/pdf/c1-4.pdf
ところで、ネットワーク等を介して構造化文書を転送する場合、シリアライズ処理を行う必要がある。このとき、元のデータにおける構造の情報の一部が失われる。そのため、適切な部分文書を得るためには、シリアライズされたデータの他に、元のデータが持つ構造の情報に基づいて、部分文書に対応する部分の構造の情報を取得する手段が必要であった。
しかし、シリアライズされたデータの他に、元のデータの構造を表すデータ(マッピングデータ等)を転送することは、転送効率の向上を妨げる。
そこで、本発明は、シリアライズされたデータに基づいて木構造を復元することを可能とし、これにより、元のデータから木構造の情報を含む部分データの抽出を可能とすることを目的とする。
上記の目的を達成するため、本発明は、次のような装置として実現される。この装置は、木構造を有するデータを処理する装置において、検索部は、木構造の各ノードに対応するシーケンス要素を、この木構造を先行順で走査して得られたノードの順に配置し、葉ノードの次のノードを探索するために遡ったエッジの数に相当する数値をシーケンス要素として葉ノードに対応するシーケンス要素の直後に挿入して構成されたシリアライズド・データを対象とし、検索条件を満たす複数のノードを特定する。必須要素列特定部は、特定された複数のノードに対応するシーケンス要素を全て含む一連のシーケンス要素で構成されたシーケンス要素列である必須要素列を特定する。後部分特定部は、シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの木構造における深さの情報および必須要素列に含まれる各シーケンス要素に対応する各ノードの深さの最高値に基づいて、シーケンス要素に対応するノードの深さの加算値が、最高値を超えるように、必須要素列の後に位置するシーケンス要素を含むシーケンス要素列を特定する。前部分特定部は、シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの木構造における深さの情報に基づいて、シーケンス要素に対応するノードの深さの加算値が、必須要素列特定部により特定された必須要素列および後部分特定部により特定されたシーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、必須要素列の前に位置するシーケンス要素を含むシーケンス要素列を特定する。部分木特定部は、必須要素列特定部により特定された必須要素列、後部分特定部により特定されたシーケンス要素列および前部分特定部により特定されたシーケンス要素列に基づき、検索部により特定された複数のノードを全て含む部分木に対応するシーケンス要素列を特定する。
上記構成において、処理対象のデータは、構造化言語で記述された構造化文書としても良い。そして、この装置は、部分木特定部により特定されたシーケンス要素列に基づいて部分木の木構造を復元し、構造化文書のうちで部分木に対応する部分である部分文書を生成する部分文書生成部をさらに備える構成とする。
また、処理対象のデータは、構造化言語で記述され、木構造のノードにテキスト・ノードが付加された構造化文書としても良い。そして、検索部は、キーワード検索によりテキスト・ノードの検索を行い、検索されたテキスト・ノードに対応する木構造におけるノードを特定する。
さらにまた、前部分特定部は、必須要素列特定部により特定された必須要素列および後部分特定部により特定されたシーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値が0である場合は、シーケンス要素列を特定する処理を行わないこととしても良い。
また、本発明は、コンピュータによる木構造を有するデータの処理方法としても実現される。この処理方法は、木構造の各ノードに対応するシーケンス要素を、この木構造を先行順で走査して得られたノードの順に配置し、葉ノードの次のノードを探索するために遡ったエッジの数に相当する数値をシーケンス要素として葉ノードに対応するシーケンス要素の直後に挿入して構成されたシリアライズド・データを対象とし、検索条件を満たす複数のノードを特定するステップと、特定された複数のノードに対応するシーケンス要素を全て含む一連のシーケンス要素で構成された第1シーケンス要素列を特定するステップと、シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの木構造における深さの情報および第1シーケンス要素列に含まれる各シーケンス要素に対応する各ノードの深さの最高値に基づいて、シーケンス要素に対応するノードの深さの加算値が、最高値を超えるように、第1シーケンス要素列の後に位置するシーケンス要素を含む第2シーケンス要素列を特定するステップと、シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの木構造における深さの情報に基づいて、シーケンス要素に対応するノードの深さの加算値が、第1シーケンス要素列および第2シーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、第1シーケンス要素列の前に位置するシーケンス要素を含む第3シーケンス要素列を特定するステップと、第1シーケンス要素列、第2シーケンス要素列および第3シーケンス要素列に基づき、特定された複数のノードを全て含む部分木に対応するシーケンス要素列を特定するステップと、を含む。
さらにまた、本発明は、コンピュータを制御して上述した装置の各機能を実現するプログラム、またはコンピュータに上記の方法における各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
本発明によれば、シリアライズされたデータに基づいて木構造を復元することを可能とし、これにより、元のデータから木構造の情報を含む部分データを抽出することが可能となる。
XML文書の構成例およびシリアライズされたデータの例を示す図である。 図1に示すシリアライズされた木構造のデータを加工する様子を示す図である。 シリアライズにより木構造の情報の一部が失われる様子を説明する図である。 本実施形態で用いられる木構造における深さの概念を説明する図である。 葉ノードではないノードにテキスト・ノードが付加された木構造の例を示す図である。 図5(a)の木構造から得られるシリアライズド・データにおいて、本実施形態による加工を行った状態を示す図である。 図2(c)の木構造のシリアライズド・データから抽出された必須要素列を含む最小部分木に対応するシーケンス要素列のイメージを示す図である。 図7(c)に示したシーケンス要素列に基づいて、最小部分木の構成を示す図である。 本実施形態のシステム構成例を示す図である。 シリアライズ処理部による木構造のシリアライズド・データに対する加工処理の例を示すフローチャートである。 必須要素列特定部による必須要素列の特定処理の例を示すフローチャートである。 後(右側)部分特定部による必須要素列の後(右側)部分のシーケンス要素列の特定処理の例を示すフローチャートである。 前(左側)部分特定部による必須要素列の前(左側)部分のシーケンス要素列の特定処理の例を示すフローチャートである。 本実施形態の検索システムを構成するのに好適なコンピュータのハードウェア構成例を示す図である。
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
本実施形態では、木構造を有するデータとしてXML文書を用い、キーワード検索を行って、該当するテキスト(部分データ)を抽出すると共に、そのテキストを含む最小部分木を抽出する場合を例として説明する。以下、まず本実施形態による最小部分木の抽出方法について説明する。
<対象データのシリアライゼーション>
本実施形態では、検索対象となるXML文書をシリアライズして格納する。このシリアライズは、XML文書の木構造とテキストを分けて行われる。また、XML文書の木構造のシリアライズは、先行順(pre-order)で走査することにより行われる。本実施形態では、さらに、シリアライズされた木構造のデータを加工し、元のXML文書における木構造の情報を持たせる。以下、具体例を挙げて、本実施形態によるXML文書のシリアライゼーションについて説明する。
図1は、XML文書の構成例およびシリアライズされたデータの例を示す図である。図2は、図1に示すシリアライズされた木構造のデータを加工する様子を示す図である。
図1(a)に示すXML文書の構成は、ノードRを根ノード(root node)とし、葉ノード(leaf node)(図示の例では、ノードe、f、g、k)にテキストを表すテキスト・ノード(ノードA、B、C、F、O、P、Q)を付加している。
なお、図1(a)に示す木構造においては、各葉ノードから、他のノードと同様にエッジが伸びて、テキスト・ノードが接続されている。しかし、テキスト・ノードは、他のノードとは異なり、木構造を特定するために用いられるノードではないので、ここでは、テキスト・ノード以外の子ノードを持たないノードを葉ノードとする。
図1(a)に示したXML文書をシリアライズすることにより、図1(b)に示すデータ(以下、シリアライズド・データと呼ぶ)が得られる。図1(b)に示すように、シリアライズド・データには、木構造のシリアライズド・データとテキストのシリアライズド・データとが含まれる。木構造のシリアライズド・データは、図1(a)に示した木構造を先行順で走査し、得られたノード名をシーケンス要素として並べることにより生成される。図示の例では、「Raebfgkaebfg」というデータが得られている。また、テキストのシリアライズド・データは、木構造の葉ノードに付加されているテキスト・ノードを、木構造を走査して葉ノードが得られた順に、シーケンス要素として並べることにより生成される。図示の例では、「ABCFOPQ」というデータが得られている。
ここで、図1(b)に示した木構造のシリアライズド・データは、図1(a)に示したXML文書の木構造が持つ情報の一部しか有していない。すなわち、図1(b)に示した木構造のシリアライズド・データでは、異なる木構造が同じシリアライズド・データで表現される場合がある。
図3は、シリアライズにより木構造の情報の一部が失われる様子を説明する図である。
図3を参照すると、単純に、木構造を先行順で走査して得られたノードを並べるだけでは、図3(a)に示す木構造も、図3(b)に示す木構造も、同じ内容のシリアライズド・データ(図示の例では、いずれも「abc」)に変換されることがわかる。そこで、本実施形態では、木構造のシリアライズド・データを加工し、XML文書の木構造を復元するために必要となる情報をシリアライズド・データに付加する。具体的には、このシリアライズド・データに、木構造における各ノードの深さの情報を付加する。
図4は、本実施形態で用いられる木構造における深さの概念を説明する図である。
本実施形態では、木構造における深さ方向のエッジ数を、負号を付した数値で表すことにする。また、着目する木構造の最上位の親ノードの深さを−1とする。例えば、図1(a)に示した木構造において木全体に着目する場合、図4に示すように、ノードRの深さdがd=−1となる。そして、ノードRに対してノードaの深さ(ノード間距離)は−1である。また、ノードeは、ノードaに対する深さ(ノード間距離)が−1、ノードRに対する深さ(ノード間距離)が−2である。
図4に示した木構造の探索は、深さd=0から深さd=−1のノードRに降りて、先行順でノードの探索を開始し、木の全てのノードの探索を終えて、ノードRから上(深さd=0)に上がったときに終了となる。
次に、図1(a)に示した木構造を例として、木構造のシリアライズド・データに各ノードの深さの情報を付加する手法について、図2を参照して説明する。図2(a)は、図1(b)に示した木構造のシリアライズド・データと同様である。
木構造を先行順で走査していくと、次のノードへ進むたびに、原則として木構造における深さが1つ進む。また、先行順の走査で葉ノードに達した後は、未走査のエッジが残っているノードまで戻って、走査が行われる。例えば、図1(a)に示した木構造において、葉ノードであるノードeから次のノードbへ進むには、一度ノードaに戻ってからノードbへ進むことになる。また、ノードkから次のノードへ進むには、一度ノードRに戻ってからノードaへ進むことになる。このとき、エッジを遡った分だけ木構造における深さが戻る。
そこで、本実施形態では、この深さの進退を表すために、

(1)木構造の各ノードに対応するシリアライズド・データの各シーケンス要素が、深さ情報として、−1という値を持つものとする。

(2)葉ノードへ到達した後に未走査のエッジへ移行するためにエッジを遡る場合、シリアライズド・データの該当箇所に、遡った分に相当する数(正数)を、シーケンス要素(以下、数値要素)として挿入する。

例えば、上記のノードeからノードbへ進む際には、ノードaに戻るために、エッジを一つ遡るので、シーケンス要素eの後ろに数値要素として数値1が挿入される。同様に、ノードkから2つ目のノードaへ進む際には、ノードRに戻るためにエッジを三つ遡るので、シーケンス要素kの後ろに数値要素として数値3が挿入される。
また、木構造に含まれる全てのノードを探索し、最後の葉ノードへ到達した後は、エッジを遡ってルートノードRへ戻るが、未走査のエッジが存在しないため、ルートノードRよりもさらに一つ上に上がり、深さd=0となって探索を終了する。そこで、

(3)最後のシーケンス要素の後ろに、木構造全体における最後の葉ノードの深さd=−Nに対応する正数値Nを、シーケンス要素(数値要素)として挿入する。

例えば、図1(a)の木構造では、最後の葉ノードgの深さがd=−4であるので、数値要素として数値4が挿入される。
以上のようにして、図2(a)のシリアライズド・データに数値要素を挿入した状態が、図2(b)に示されている。
さて、上記(1)〜(3)に示したように加工されたシリアライズド・データにおいて、数値要素は、木構造の葉ノードに対応するシーケンス要素の後ろに挿入されている。言い換えれば、数値要素の直前のシーケンス要素は、木構造の葉ノードに対応しており、この葉ノードに付加されたテキスト・ノードに対応している。そこで、数値要素ごとにシリアライズド・データを区切ることにより、シリアライズド・データにおける、各テキスト・ノードに対応する位置を明確にすることができる。本実施形態では、上記のように数値要素を挿入したシリアライズド・データに対して、さらに、

(4)(3)で最後のシーケンス要素の後ろに付した数値要素以外の各数値要素の直後に、分離記号(セパレーター:Separator)を挿入する。

図2(b)の状態のシリアライズド・データに対し、数値要素の直後に分離記号を挿入した状態が、図2(c)に示されている。なお、分離記号の挿入は、形式的なものであるので、シリアライズド・データの書式等の仕様によっては省略できる場合がある。
図2(c)に示す例において、図1(a)に示した木構造のテキスト・ノードFに対応するシーケンス要素Fは、テキストのシリアライズド・データにおいて、左から4番目に位置する。そこで、木構造のシリアライズド・データにおける左から4番目の数値要素を見ると、数値3が挿入されている。したがって、その数値3の直前のシーケンス要素kに対応するノードkが、図1(a)の木構造において、テキスト・ノードFが付加されたノードであることがわかる。
<XML文書の構造の限定>
図1(a)に示したXML文書の木構造では、テキスト・ノードが葉ノードに付加されていた。しかしながら、一般のXML文書の木構造においては、葉ノード以外のノードに対してテキスト・ノードが直接付加される場合がある(そのような構造を取ることが許される)。
図5は、葉ノードではないノードにテキスト・ノードが付加された木構造の例を示す図である。
図5(a)〜(c)に示す例では、ノードbは、子ノードとしてノードeおよびノードfを持つ(葉ノードではない)。しかし、ノードbには、テキスト・ノードEが付加されている。図5(a)〜(c)に示すように、葉ノードではないノードにテキスト・ノードが付加されている場合、本実施形態に適用できる木構造は、図5(a)に示すように、テキスト・ノードに至るエッジが他のノードに至るエッジよりも左側に存在する場合のみである。
そこで、本実施形態では、木構造において葉ノードではないノードにテキスト・ノードが付加されている場合、テキスト・ノードに至るエッジが他のノードに至るエッジよりも左側に位置するように、木構造を整形する。すなわち、図5(b)や図5(c)のような構造である場合には、図5(a)のような構造に変換する。なお、XML文書を扱うシステムにおいて一般的に扱われる、いわゆる正規化(normalize)されたXML文書は、上記の条件を満たす。したがって、一般的な手法によりXML文書を正規化処理した後に、本実施形態を適用するようにしても良い。
また、上記のように葉ノードではないノードにテキスト・ノードが付加されている場合、シリアライズド・データにおいては、

(5)そのノードに対応するシーケンス要素の直後に数値要素として数値0を挿入する。そして、数値0の直後に分離記号を挿入する。

このような操作を行うことにより、分離記号により区切られた数値要素である数値0の直前のシーケンス要素に対応するノードにテキスト・ノードが付加されていることが示される。そして、数値が0であるから、そのノードから次のノードへ移行するためにエッジを遡らない(木構造における深さは変わらない)ことが示される。
図6は、図5(a)の木構造から得られるシリアライズド・データにおいて、本実施形態による加工(上記(1)〜(5)に示した加工)を行った状態を示す図である。
図6に示す例において、テキスト・ノードEに対応するシーケンス要素Eは、テキストのシリアライズド・データにおいて、左から3番目に位置する。そこで、木構造のシリアライズド・データにおける左から3番目の数値要素を見ると、数値0が挿入されている。したがって、その数値0の直前のシーケンス要素bに対応するノードbが、図5(a)の木構造において、テキスト・ノードEが付加されたノードであることがわかる。
<最小部分木の抽出>
次に、上記のようにして作成された木構造およびテキストのシリアライズド・データを用いて、所望のテキスト・ノードを含む範囲の最小部分木を抽出する手法について説明する。ここで、最小部分木とは、特定された二つのテキスト・ノードを含む木構造(部分木)のうちで、ノードの数が最小のものである。上記のように作成された木構造のシリアライズド・データには、各シーケンス要素に、木構造における深さの情報が含まれているので、最小部分木を構成するノードに対応するシーケンス要素を特定できれば、これに基づいて木構造を復元することができる。
本手法の概略的な手順としては、まず、テキストのシリアライズド・データにおいて、二つのシーケンス要素を特定し、これらに対応する、木構造のシリアライズド・データにおける二つのシーケンス要素を特定する。これら二つのシーケンス要素は、抽出しようとする最小部分木が含まなければならないノードの範囲を示す。すなわち、本実施形態による最小部分木の抽出は、これら二つのシーケンス要素に対応するノードを含む、部分木(木構造として成立している部分)を抽出する操作である。
次に、上記の二つのシーケンス要素および各シーケンス要素に付加されている深さの情報に基づいて、抽出しようとする最小部分木に含まれる全てのノードに対応するシーケンス要素を特定する。具体的には、まず、上記二つのシーケンス要素およびその間のシーケンス要素を特定する。そして、これらのシーケンス要素に対応するノードを全て含み、かつ木構造として成立するために必要な最低限のノードに対応するシーケンス要素を特定する。これにより、上記の二つのシーケンス要素に対応するノードを含む部分木のうちで、ノード数が最小である最小部分木が抽出される。
以下、この手順の各段階の処理について、詳細に説明する。
[1]二つのシーケンス要素およびその間のシーケンス要素の特定
本実施形態では、まず、テキストのシリアライズド・データにおける二つのシーケンス要素を特定する。すると、これらのシーケンス要素に基づいて、これらに対応する木構造のシリアライズド・データにおける二つのシーケンス要素が特定される。そして、木構造のシリアライズド・データにおけるこれら二つのシーケンス要素の間に位置するシーケンス要素が特定される。これにより、抽出しようとする最小部分木(木構造)が必ず含むシーケンス要素が確定される。
例えば、図2(c)に示したテキストのシリアライズド・データにおいて、5番目のシーケンス要素Oと7番目のシーケンス要素Qとが特定されたものとする。これに対応する木構造のシーケンス要素を探すと、5番目の数値要素(数値1)の直前に位置するシーケンス要素eと、7番目の数値要素(数値4)の直前に位置するシーケンス要素gが見つかる。そして、これら二つのシーケンス要素に挟まれた一連のシーケンス要素を加えて、シーケンス要素列e1,bf1,gが得られる。このシーケンス要素列に含まれる各シーケンス要素は、抽出される最小部分木に必ず含まれるノードに対応している(以下、このシーケンス要素列を必須要素列と呼ぶ)。
[2]最小部分木のノードに対応するシーケンス要素の特定
次に、[1]で特定された各シーケンス要素に付加されている木構造の深さの情報に基づいて、これらのシーケンス要素を全て含む最小部分木に対応するシーケンス要素列を特定する。
図7は、図2(c)の木構造のシリアライズド・データから抽出された必須要素列を含む最小部分木に対応するシーケンス要素列のイメージを示す図である。
図7(a)に示すように、木構造のシリアライズド・データから部分木(木構造として成立する部分)を構成するシーケンス要素を抽出するには、必須要素列701に加えて、必須要素列の最後(右端)のシーケンス要素の後(右側)部分702と、必須要素列の最先(左端)のシーケンス要素の前(左側)部分703とに、必要なシーケンス要素を追加する。以下、具体的な手法について説明する。
[2−1]
まず、[1]で特定された必須要素列701の各シーケンス要素に付加されている深さの値を左端から順に加算していく。そして、全てのシーケンス要素の加算値を算出すると共に、加算する過程で現れる最高値maxを取得する。
上記の例では、図7に示す必須要素列701の各シーケンス要素e1,bf1,gに付加されている深さの値を加算すると、
−1+1−1−1+1−1=−2
である。また、左端から順に加算した際の値は、
−1+1=0
−1+1−1=−1
−1+1−1−1=−2
−1+1−1−1+1=−1
−1+1−1−1+1−1=−2
であるから、最高値maxは0である。この最高値maxは、必須要素列701の各シーケンス要素に対応するノード群を含む部分木の高さの最高値を示している。なお、最高値maxは、必須要素列701の左端のシーケンス要素eの深さを−1として得られる相対的な値であり、その値自体(上記の例では0という値)に特別な意味はない。
[2−2]
次に、必須要素列701の右端のシーケンス要素gの後(右側)部分702に、最小部分木を構成するために(木構造として成立させるために)必要なシーケンス要素を追加する。木構造を先行順で走査する場合、その木構造における深さの最も小さい(浅い)ノードよりも上に上がった時に、木の右側部分については走査が完了する。そこで、加算値が上記の最高値maxよりも値1だけ大きい値となるまで、シーケンス要素gの後(右側)部分702に位置するシーケンス要素を、順次追加する。
上記の例では、図2(c)の木構造のシリアライズド・データにおいて、シーケンス要素gの直後には、数値要素(数値4)が存在している。ここで、数値4は、エッジを4回遡ることを示しており、数値1が四つ並んでいるとみなすこともできる。したがって、最大で4までの値を必要に応じて加算して良い。そこで、上記のシーケンス要素eからシーケンス要素gまでを加算した値が−2、最高値maxが0であるから、シーケンス要素gの後(右側)に追加される値は、3(=0+1−(−2))となる。
図7(a)に示した必須要素列701の後(右側)部分702に、数値要素(数値3)が付加された状態を、図7(b)に示す。
[2−3]
次に、必須要素列701の左端のシーケンス要素eの前(左側)部分703に、最小部分木を構成するために(木構造として成立させるために)必要なシーケンス要素を追加する。木構造を先行順で走査する場合、最上位のノード(深さd=−1)から初めて、全てのエッジおよびノードを探索して最上位のノードに戻り、その最上位のノードから上(深さd=0)に上がったときに走査が終わる。したがって、木構造として成立する範囲のシーケンス要素の深さの値を全て加算すると値は0になる。
ここで、[2−1]、[2−2]から、必須要素列701に含まれるシーケンス要素の深さの値と後(右側)部分702に含まれるシーケンス要素の深さの値とを全て加算すると、(最高値max+1)である。したがって、必須要素列701の前(左側)部分703に含まれるシーケンス要素の深さの値を加算して得られる値は、(−(最高値max+1))となる。
なお、必須要素列701とその後(右側)部分702から得られる(最高値max+1)の値が0である場合、必須要素列701の前(左側)部分703に含まれるシーケンス要素の深さの値を加算して得られる値も0である。したがって、この場合は、必須要素列701の前(左側)部分703に含まれるシーケンス要素は求めない。
上記の例では、図2(c)の木構造のシリアライズド・データにおいて、シーケンス要素eの直前には、シーケンス要素aが存在している。そこで、シーケンス要素aから前方(左方)へ向かって、値(−(最高値max+1))が得られるまで、シーケンス要素の深さの値を加算していく。[2−1]で求めたように、最高値maxの値は0であったので、求める値は−1(=−(0+1))である。ここで、シーケンス要素aの深さの値は−1である。したがって、必須要素列701の前(左側)部分703に含まれるシーケンス要素は、シーケンス要素aのみである。
図7(b)に示した必須要素列701の前(左側)部分703に、シーケンス要素aが付加された状態を、図7(c)に示す。
以上のようにして、必須要素列701、後(右側)部分702、前(左側)部分703のそれぞれに含まれるシーケンス要素が特定された。すなわち、特定されたシーケンス要素列ae1,bf1,g3は、必須要素列701(e1,bf1,g)に対応するノードを含む最小部分木に対応するシーケンス要素列である。
<木構造の復元>
ここで、得られたシーケンス要素列ae1,bf1,g3に基づいて最小部分木を作成可能であることを示す。
シーケンス要素列ae1,bf1,g3の先頭は、シーケンス要素aなので、これに対応するノードaが最小部分木における最上位のノードとなる。次のシーケンス要素は、シーケンス要素eなので、これに対応するノードeがノードaの子ノードとなる。次のシーケンス要素は、数値要素(数値1)なので、ノードeは葉ノードである。したがって、ノードeにはテキスト・ノードOが付加される。そして、1階層戻り、次のシーケンス要素bに対応するノードbがノードaの二つ目の子ノードとなる。
さらに、シーケンス要素bの次のシーケンス要素fに対応するノードfは、ノードbの子ノードとなる。シーケンス要素fの次は、数値要素(数値1)なので、ノードfは葉ノードであり、テキスト・ノードPが付加される。そして、1階層戻り、次のシーケンス要素gに対応するノードgがノードbの二つ目の子ノードとなる。次のシーケンス要素は、数値要素(数値3)なので、ノードgから3階層戻り、ノードaの上に上がるので、木構造が完成する。
図8は、図7(c)に示したシーケンス要素列に基づいて、上記のように作成された最小部分木の構成を示す図である。
図1(a)に示した木構造と、図8に示した木構造とを比較すると、図8に示す木構造は、図1(a)に示す木構造のうち、ノードe、g(テキスト・ノードO、Q)を含む最小部分木となっていることがわかる。
<システム構成例>
次に、本実施形態による最小部分木の抽出方法を適用した、XML文書の検索システムについて説明する。
図9は、システム構成例を示す図である。
図9に示す検索システム100は、データ取得部11と、シリアライズ処理部12と、検索部13と、データ格納部21と、を備える。また、最小部分木を抽出する手段として、必須要素列特定部31と、後(右側)部分特定部32と、前(左側)部分特定部33と、最小部分木特定部41と、部分文書生成部42と、データ出力部51と、を備える。
データ取得部11は、例えば、外部装置200から、検索対象となるXML文書を取得する。また、データ取得部11は、例えば、検索システム100のユーザが使用する端末装置300から、キーワード検索に用いられる検索キーワードを含んだ検索要求を取得する。外部装置200や端末装置300と検索システム100とは、例えばネットワークを介して接続されている。
シリアライズ処理部12は、図1、図2および図6を参照して説明したように、データ取得部11により取得されたXML文書に対してシリアライズを行い、木構造のシリアライズド・データを加工する。シリアライズ処理部12により作成されたシリアライズド・データは、データ格納部21に格納される。データ格納部21は、格納されたXML文書のシリアライズド・データ(木構造のシリアライズド・データおよびテキストのシリアライズド・データ)を、処理対象として保持する。
なお、シリアライズ処理部12において処理対象のXML文書からシリアライズド・データを生成するのではなく、外部装置において別途に本実施形態のシリアライズ処理を行って生成されたシリアライズド・データをデータ取得部11により取得し、データ格納部21に格納しても良い。この場合、検索システム100において、シリアライズ処理部12を設けなくても良い。
検索部13は、データ取得部11により取得された検索要求に含まれる検索キーワードを用いて、データ格納部21に格納されているXML文書に対し、キーワード検索を行う。検索対象はテキストのシリアライズド・データである。検索手法としては、プレーンテキストに対する既存の検索手法を用いることができる。この検索により、キーワードを含む(検索条件に該当する)テキスト・ノードが検出される。
必須要素列特定部31は、検索部13により検出されたテキスト・ノードに基づき、データ格納部21に格納されている木構造のシリアライズド・データから、検出されたテキスト・ノードに対応するノードのシーケンス要素を特定する。そして、特定したシーケンス要素を全て含む一連のシーケンス要素で構成されたシーケンス要素列(必須要素列)を特定する。必須要素列特定部31の処理の詳細は、後述する。
ここで、検索部13により三つ以上のテキスト・ノードが検出された場合(検索キーワードを含むテキスト・ノードが三つ以上あった場合)について考える。この場合、検出されたテキスト・ノードのうち、シリアライズド・データにおける左端(最先)と右端(最後)のテキスト・ノード以外のテキスト・ノードは、これら両端のテキスト・ノードが含まれる最小部分木に必ず含まれる。したがって、検索部13により三つ以上のテキスト・ノードが検出された場合は、検出されたテキスト・ノードのうち、シリアライズド・データにおける両端のテキスト・ノードに基づいて必須要素列を特定すれば良い。例えば、図2(c)に示したテキストのシリアライズド・データにおいて、キーワード検索によりシーケンス要素C、O、Pが検索された場合、これらの中で左端のシーケンス要素であるCと右端のシーケンス要素であるPに基づいて、必須要素列が特定される。
後(右側)部分特定部32は、図7を参照して説明したように、必須要素列特定部31により特定された必須要素列と、木構造のシリアライズド・データの各シーケンス要素に付加された深さの情報とに基づいて、最小部分木を構成するために必要な必須要素列の後(右側)部分を特定する。ここで、後(右側)部分特定部32は、必須要素列の後(右側)に位置するシーケンス要素に対応するノードの深さの情報に基づき、シーケンス要素に対応するノードの深さの加算値が必須要素列における深さの最高値を超えるように、後(右側)部分のシーケンス要素列を特定する。後(右側)部分特定部32の処理の詳細は、後述する。
前(左側)部分特定部33は、図7を参照して説明したように、必須要素列特定部31により特定された必須要素列および後(右側)部分特定部32により特定された必須要素列の後(右側)部分と、木構造のシリアライズド・データの各シーケンス要素に付加された深さの情報とに基づいて、最小部分木を構成するために必要な必須要素列の前(左側)部分を特定する。ここで、前(左側)部分特定部33は、必須要素列の前(左側)に位置するシーケンス要素に対応するノードの深さの情報に基づき、シーケンス要素に対応するノードの深さの加算値が必須要素列および後(右側)部分のシーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、前(左側)部分のシーケンス要素列を特定する。前(左側)部分特定部33の処理の詳細は、後述する。なお、求める最小部分木の構造によっては、上述したように、必須要素列の前(左側)部分が特定されない場合もある。
最小部分木特定部41は、必須要素列特定部31、後(右側)部分特定部32および前(左側)部分特定部33により特定された、必須要素列、後(右側)部分のシーケンス要素列および前(左側)部分のシーケンス要素列を合わせて、最小部分木に対応するシーケンス要素列を特定する。
部分文書生成部42は、最小部分木特定部41により特定された最小部分木に対応するシーケンス要素列に基づいて最小部分木の木構造を復元し、この木構造と、これに対応するテキスト・ノードとに基づいて、最小部分木に基づくXML文書(部分文書)を生成する。図9を参照して説明したように、本実施形態では、木構造のシリアライズド・データから抽出したシーケンス要素列に基づいて、木構造(部分木)を生成することができる。したがって、元のXML文書の書式を損なわずに部分文書が得られる。
データ出力部51は、検索要求を送信した端末装置300に、応答として、部分文書生成部42により生成された部分文書を返送する。
なお、図9に示した構成例では、検索システム100において、検索要求に基づく部分文書を生成することとしたが、本実施形態によれば、シリアライズド・データから木構造の復元は端末装置300において行うことも可能である。この場合、部分文書生成部42は設けられず、データ出力部51は、最小部分木特定部41により特定された木構造のシリアライズド・データおよびテキストのシリアライズド・データを端末装置300に送信する。
<シリアライズ処理部の動作>
図10は、シリアライズ処理部12による木構造のシリアライズド・データに対する加工処理の例を示すフローチャートである。
シリアライズ処理部12は、まず、処理対象のXML文書の木構造を先行順で走査して探索し(ステップ1001)、検知したノードに対応するシーケンス要素を順次並べ、シリアライズド・データを生成していく(ステップ1002)。
ステップ1002で検知したノードが葉ノードであった場合(ステップ1003でYes)、次にシリアライズ処理部12は、未走査のエッジが存在するか否かを調べる。未走査のエッジが存在するならば(ステップ1004でYes)、その未走査のエッジのあるノードまで戻る際に通ったエッジの数を、数値要素としてシリアライズド・データに追加する(ステップ1005)。また、追加した数値要素の直後に分離記号を付加する(1006)。そして、ステップ1001に戻り、ノードの探索を継続する。
ステップ1002で検知したノードが葉ノードでない場合(ステップ1003でNo)、次にシリアライズ処理部12は、未走査のエッジが存在するか否かを調べる。未走査のエッジが存在するならば(ステップ1007でYes)、ステップ1001に戻り、ノードの探索を継続する。
未走査のエッジが存在しない場合は(ステップ1004またはステップ1007でNo)、全てのノードの探索が終了したので、シリアライズ処理部12は、処理を終了する。
<必須要素列特定部、後(右側)部分特定部および前(左側)部分特定部の動作>
次に、必須要素列特定部31、後(右側)部分特定部32および前(左側)部分特定部33によるシーケンス要素列を特定する処理について説明する。
以下の説明において、特定される必須要素列をSm〜Sn(シリアライズド・データにおける必須要素列の左端のシーケンス要素がSm、右端のシーケンス要素がSn)とし、シーケンス要素Sxの深さをd(Sx)とする。ここで、xは、シーケンス要素の位置を表す変数(シリアライズド・データにおけるシーケンス要素の数をXとすると、x=1〜X、また、1≦m<n≦X)である。
図11は、必須要素列特定部31による必須要素列の特定処理の例を示すフローチャートである。
必須要素列は、シーケンス要素SmおよびSnが特定されたことにより、すでに特定されている。したがって、以下では、後(右側)部分特定部32の処理に必要となる深さの値に関する処理について説明する。
必須要素列特定部31は、まず、Sx=Smとして(ステップ1101、1102)、S(x+1)の深さの値を求める(ステップ1103)。ここでは、現在の深さの値d(Sx)に、直後のシーケンス要素S(x+1)に付与されている深さの値を加算する。具体的には、シーケンス要素S(x+1)が木構造のノードに対応するシーケンス要素であるならば、現在の深さの値d(Sx)に−1を加算する。一方、数値要素であるならば、現在の深さの値d(Sx)に数値要素の値を加算する。
次に、必須要素列特定部31は、現在までの深さの最高値dmaxと、シーケンス要素S(x+1)の深さd(S(x+1))とを比較する。そして、d(S(x+1))>dmaxでなければ(ステップ1104でNo)、現在のdmaxを維持し、d(S(x+1))>dmaxであれば(ステップ1104でYes)、dmax=d(S(x+1))とする(ステップ1105)。初期的には、上記のようにx=mなので、d(S(m+1))>d(Sm)でなければ(ステップ1104でNo)、dmax=d(Sm)となる。一方、d(S(m+1))>d(Sm)であれば(ステップ1104でYes)、dmax=d(S(m+1))となる(ステップ1105)。
次に、必須要素列特定部31は、x+1をxに置き換え、Sx=S(x+1)、d(Sx)=d(S(x+1))として(ステップ1106)、ステップ1102に戻り、Sx=Snとなるまで上記の処理を繰り返す。そして、Sx=Snとなったならば、必須要素列特定部31による処理を終了し、後(右側)部分特定部32による処理に移行する。
図12は、後(右側)部分特定部32による必須要素列の後(右側)部分のシーケンス要素列の特定処理の例を示すフローチャートである。
後(右側)部分特定部32は、まず、現在の深さの値d(Sx)が深さの最高値dmaxよりも1つ大きい値か否かを判断する(ステップ1201)。初期的には、d(Sx)=d(Sn)なので、d(Sx)=dmax+1ではない(ステップ1201でNo)。
d(Sx)≠dmax+1の場合、後(右側)部分特定部32は、図11のステップ1103と同様にして、S(x+1)の深さの値を求める(ステップ1202)。ただし、S(x+1)が数値要素である場合は、必要に応じて、その数値を分解して、d(S(x+1))=dmax+1となるように、数値を加算する。そして、後(右側)部分特定部32は、x+1をxに置き換え、Sx=S(x+1)、d(Sx)=d(S(x+1))として(ステップ1203)、ステップ1201に戻り、d(Sx)=dmax+1となるまで上記の処理を繰り返す。
d(Sx)=dmax+1となったならば、次に後(右側)部分特定部32は、d(Sx)の値が0か否かを判断する(ステップ1204)。d(Sx)=0であれば、前(左側)部分特定部33による処理は必要ないので、x=n+1〜p(p:n+1≦p≦X)のシーケンス要素S(n+1)〜Spを後(右側)部分のシーケンス要素列として特定し、処理を終了する(ステップ1205)。
一方、d(Sx)≠0の場合は、後(右側)部分特定部32による処理を終了し、前(左側)部分特定部33による処理に移行する。
図13は、前(左側)部分特定部33による必須要素列の前(左側)部分のシーケンス要素列の特定処理の例を示すフローチャートである。
前(左側)部分特定部33は、まず、シーケンス要素Sx=S(m−1)として(ステップ1301)、深さの値d(Sx)が、−(dmax+1)と等しいか否かを判断する(ステップ1302)。
d(Sx)≠−(dmax+1)の場合、前(左側)部分特定部33は、シーケンス要素S(x−1)の深さの値を求める(ステップ1303)。ここでは、現在の深さの値d(Sx)に、直前のシーケンス要素S(x−1)に付与されている深さの値を加算する。具体的には、シーケンス要素S(x−1)が木構造のノードに対応するシーケンス要素であるならば、現在の深さの値d(Sx)に−1を加算する。一方、数値要素であるならば、現在の深さの値d(Sx)に数値要素の値を加算する。
次に、前(左側)部分特定部33は、x−1をxに置き換え、Sx=S(x−1)、d(Sx)=d(S(x−1))として(ステップ1304)、ステップ1302に戻り、d(Sx)=−(dmax+1)となるまで上記の処理を繰り返す。d(Sx)=−(dmax+1)となったならば、x=q〜m−1(q:1≦q≦m−1)のシーケンス要素Sq〜S(m−1)を前(左側)部分のシーケンス要素列として特定し、処理を終了する。
以上のようにして、必須要素列Sm〜Sn、後(右側)部分のシーケンス要素列S(n+1)〜Sp、前(左側)部分のシーケンス要素列Sq〜S(m−1)が得られた。最小部分木特定部41は、これらのシーケンス要素列を合わせて、最小部分木に対応するシーケンス要素列Sq〜Sp(Sq〜S(m−1)、Sm〜Sn、S(n+1)〜Sp)を特定する。
なお、上記の必須要素列特定部31、後(右側)部分特定部32および前(左側)部分特定部33の動作は、例示に過ぎず、上記の処理手順に限定するものではない。例えば、必須要素列の各シーケンス要素の深さやその最高値の情報は、後(右側)部分特定部32の処理において必要となるので、後(右側)部分特定部32が計算するようにしても構わない。その他、本発明における技術思想上の本質を損なわない範囲で具体的な処理やその手順を変更したものは、本発明に含まれる。
<ハードウェア構成例>
図14は、本実施形態の検索システム100を構成するのに好適なコンピュータのハードウェア構成例を示す図である。
図14に示すコンピュータは、演算手段であるCPU(Central Processing Unit)110aと、主記憶手段であるメモリ110cを備える。また、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)110g、ネットワーク・インターフェイス110f、表示機構110d、音声機構110h、キーボードやマウス等の入力デバイス110i等を備える。
図14に示す構成例では、メモリ110cおよび表示機構110dは、システム・コントローラ110bを介してCPU110aに接続されている。また、ネットワーク・インターフェイス110f、磁気ディスク装置110g、音声機構110hおよび入力デバイス110iは、I/Oコントローラ110eを介してシステム・コントローラ110bと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
なお、図14は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施形態は、XML文書等の木構造を有する構造化文書(データ)を処理する情報処理システムに広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
図14において、磁気ディスク装置110gにはOSやアプリケーション・ソフトのプログラムが格納されている。そして、これらのプログラムがメモリ110cに読み込まれてCPU110aに実行されることにより、図9に示したシリアライズ処理部12、検索部13、必須要素列特定部31、後(右側)部分特定部32、前(左側)部分特定部33、最小部分木特定部41、部分文書生成部42を含む各種の機能が実現される。また、磁気ディスク装置110gやメモリ110c等の記憶手段により、データ格納部21が実現され、ネットワーク・インターフェイス110fにより、データ取得部11、データ出力部51が実現される。
<適用例>
本実施形態の検索システムは、上記の説明において対象としたXML文書に限定せず、同様の木構造を有する構造化文書(データ)を処理対象とし、その木構造における特定の複数のノードを含む最小部分木を抽出し、部分文書を生成する場合に、広く適用することができる。
また、上記の実施形態では、検索システムは、XML文書を処理対象とし、最小部分木を構成するノードとして、まずテキスト・ノードを特定し、これに対応する木構造のノード(主に葉ノード)を特定した。しかし、本実施形態の検索システムは、一般的に、木構造を有するデータから特定の複数のノードを含む最小部分木を抽出するシステムとして実現することができる。
さらに、本実施形態は、木構造を有する様々なデータにおいて、その木構造における特定の複数のノードに対する最低共通親(Lowest common ancestors)ノードを検出するような場合にも適用することができる。例えば、データファイルを階層的に管理するファイルシステムに本実施形態を適用すれば、適当な条件によって特定された複数のファイルが含まれる共通のフォルダのうち、最下層のフォルダを発見することが可能である。
11…データ取得部、12…シリアライズ処理部、13…検索部、21…データ格納部、31…必須要素列特定部、32…後(右側)部分特定部、33…前(左側)部分特定部、41…最小部分木特定部、42…部分文書生成部、51…データ出力部、100…検索システム

Claims (7)

  1. 木構造を有するデータを処理する装置において、
    前記木構造の各ノードに対応するシーケンス要素を、当該木構造を先行順で走査して得られたノードの順に配置し、葉ノードの次のノードを探索するために遡ったエッジの数に相当する数値をシーケンス要素として当該葉ノードに対応するシーケンス要素の直後に挿入して構成されたシリアライズド・データを対象とし、検索条件を満たす複数のノードを特定する検索部と、
    特定された前記複数のノードに対応する前記シーケンス要素を全て含む一連のシーケンス要素で構成されたシーケンス要素列である必須要素列を特定する必須要素列特定部と、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報および前記必須要素列に含まれる各シーケンス要素に対応する各ノードの深さの最高値に基づいて、シーケンス要素に対応するノードの深さの加算値が、当該最高値を超えるように、当該必須要素列の後に位置するシーケンス要素を含むシーケンス要素列を特定する後部分特定部と、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報に基づいて、シーケンス要素に対応するノードの深さの加算値が、前記必須要素列特定部により特定された前記必須要素列および前記後部分特定部により特定されたシーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、当該必須要素列の前に位置するシーケンス要素を含むシーケンス要素列を特定する前部分特定部と、
    前記必須要素列特定部により特定された前記必須要素列、前記後部分特定部により特定されたシーケンス要素列および前記前部分特定部により特定されたシーケンス要素列に基づき、前記検索部により特定された前記複数のノードを全て含む部分木に対応するシーケンス要素列を特定する部分木特定部と、
    を備える、装置。
  2. 処理対象の前記データは、構造化言語で記述された構造化文書であり、
    前記部分木特定部により特定されたシーケンス要素列に基づいて部分木の木構造を復元し、前記構造化文書のうちで当該部分木に対応する部分である部分文書を生成する部分文書生成部をさらに備える、請求項1に記載の装置。
  3. 処理対象の前記データは、構造化言語で記述され、木構造のノードにテキスト・ノードが付加された構造化文書であり、
    前記検索部は、キーワード検索により前記テキスト・ノードの検索を行い、検索されたテキスト・ノードに対応する前記木構造におけるノードを特定する、
    請求項1または請求項2に記載の装置。
  4. 前記前部分特定部は、前記必須要素列特定部により特定された前記必須要素列および前記後部分特定部により特定されたシーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値が0である場合は、シーケンス要素列を特定する処理を行わない、請求項1乃至請求項3のいずれかに記載の装置。
  5. 構造化言語で記述され、木構造のノードにテキスト・ノードが付加された構造化文書を処理する装置において、
    前記木構造の各ノードに対応するシーケンス要素を、当該木構造を先行順で走査して得られたノードの順に配置し、葉ノードの次のノードを探索するために遡ったエッジの数に相当する数値をシーケンス要素として当該葉ノードに対応するシーケンス要素の直後に挿入して構成されたシリアライズド・データを対象とし、キーワード検索により前記テキスト・ノードの検索を行い、検索されたテキスト・ノードに対応する複数のノードを特定する検索部と、
    特定された前記複数のノードに対応する前記シーケンス要素を全て含む一連のシーケンス要素で構成されたシーケンス要素列である必須要素列を特定する必須要素列特定部と、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報および前記必須要素列に含まれる各シーケンス要素に対応する各ノードの深さの最高値に基づいて、シーケンス要素に対応するノードの深さの加算値が、当該最高値を超えるように、当該必須要素列の後に位置するシーケンス要素を含むシーケンス要素列を特定する後部分特定部と、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報に基づいて、シーケンス要素に対応するノードの深さの加算値が、前記必須要素列特定部により特定された前記必須要素列および前記後部分特定部により特定されたシーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、当該必須要素列の前に位置するシーケンス要素を含むシーケンス要素列を特定する前部分特定部と、
    前記必須要素列特定部により特定された前記必須要素列、前記後部分特定部により特定されたシーケンス要素列および前記前部分特定部により特定されたシーケンス要素列に基づき、前記検索部により特定された前記複数のノードを全て含む部分木に対応するシーケンス要素列を特定する部分木特定部と、
    前記部分木特定部により特定されたシーケンス要素列に基づいて部分木の木構造を復元し、前記構造化文書のうちで当該部分木に対応する部分である部分文書を生成する部分文書生成部と、
    を備える、装置。
  6. コンピュータによる木構造を有するデータの処理方法であって、
    前記木構造の各ノードに対応するシーケンス要素を、当該木構造を先行順で走査して得られたノードの順に配置し、葉ノードの次のノードを探索するために遡ったエッジの数に相当する数値をシーケンス要素として当該葉ノードに対応するシーケンス要素の直後に挿入して構成されたシリアライズド・データを対象とし、検索条件を満たす複数のノードを特定するステップと、
    特定された前記複数のノードに対応する前記シーケンス要素を全て含む一連のシーケンス要素で構成された第1シーケンス要素列を特定するステップと、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報および前記第1シーケンス要素列に含まれる各シーケンス要素に対応する各ノードの深さの最高値に基づいて、シーケンス要素に対応するノードの深さの加算値が、当該最高値を超えるように、当該第1シーケンス要素列の後に位置するシーケンス要素を含む第2シーケンス要素列を特定するステップと、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報に基づいて、シーケンス要素に対応するノードの深さの加算値が、前記第1シーケンス要素列および前記第2シーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、当該第1シーケンス要素列の前に位置するシーケンス要素を含む第3シーケンス要素列を特定するステップと、
    前記第1シーケンス要素列、前記第2シーケンス要素列および前記第3シーケンス要素列に基づき、特定された前記複数のノードを全て含む部分木に対応するシーケンス要素列を特定するステップと、
    を含む、データ処理方法。
  7. コンピュータに、
    木構造の各ノードに対応するシーケンス要素を、当該木構造を先行順で走査して得られたノードの順に配置し、葉ノードの次のノードを探索するために遡ったエッジの数に相当する数値をシーケンス要素として当該葉ノードに対応するシーケンス要素の直後に挿入して構成されたシリアライズド・データを対象とし、検索条件を満たす複数のノードを特定する処理と、
    特定された前記複数のノードに対応する前記シーケンス要素を全て含む一連のシーケンス要素で構成された第1シーケンス要素列を特定する処理と、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報および前記第1シーケンス要素列に含まれる各シーケンス要素に対応する各ノードの深さの最高値に基づいて、シーケンス要素に対応するノードの深さの加算値が、当該最高値を超えるように、当該第1シーケンス要素列の後に位置するシーケンス要素を含む第2シーケンス要素列を特定する処理と、
    前記シリアライズド・データに含まれる各シーケンス要素に対応する各ノードの前記木構造における深さの情報に基づいて、シーケンス要素に対応するノードの深さの加算値が、前記第1シーケンス要素列および前記第2シーケンス要素列に含まれるシーケンス要素に対応するノードの深さの加算値に負号を付した値と等しくなるように、当該第1シーケンス要素列の前に位置するシーケンス要素を含む第3シーケンス要素列を特定する処理と、
    前記第1シーケンス要素列、前記第2シーケンス要素列および前記第3シーケンス要素列に基づき、特定された前記複数のノードを全て含む部分木に対応するシーケンス要素列を特定する処理と、
    を実行させる、プログラム。
JP2012204803A 2012-09-18 2012-09-18 木構造を有するデータを処理する装置、処理方法およびプログラム Pending JP2014059757A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012204803A JP2014059757A (ja) 2012-09-18 2012-09-18 木構造を有するデータを処理する装置、処理方法およびプログラム
US14/029,547 US9524354B2 (en) 2012-09-18 2013-09-17 Device, method, and program for processing data with tree structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012204803A JP2014059757A (ja) 2012-09-18 2012-09-18 木構造を有するデータを処理する装置、処理方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2014059757A true JP2014059757A (ja) 2014-04-03

Family

ID=50616169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012204803A Pending JP2014059757A (ja) 2012-09-18 2012-09-18 木構造を有するデータを処理する装置、処理方法およびプログラム

Country Status (2)

Country Link
US (1) US9524354B2 (ja)
JP (1) JP2014059757A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9977817B2 (en) * 2014-10-20 2018-05-22 Conduent Business Services, Llc Matching co-referring entities from serialized data for schema inference
US10083002B2 (en) * 2014-12-18 2018-09-25 International Business Machines Corporation Using voice-based web navigation to conserve cellular data
CN107247749B (zh) * 2017-05-25 2020-08-25 创新先进技术有限公司 一种数据库状态确定方法、一致性验证方法及装置
CN111435938B (zh) * 2019-01-14 2022-11-29 阿里巴巴集团控股有限公司 一种数据请求的处理方法、装置及其设备
CN116028309B (zh) * 2023-02-01 2023-07-07 中煤协联合认证(北京)中心 一种体系运行情况的量化监测系统及其监测方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3607182B2 (ja) 2000-08-25 2005-01-05 日本電信電話株式会社 文書情報抽出装置、方法、及びそのプログラムを記録した記録媒体
JP4774145B2 (ja) * 2000-11-24 2011-09-14 富士通株式会社 構造化文書圧縮装置および構造化文書復元装置並びに構造化文書処理システム
US8316060B1 (en) * 2005-01-26 2012-11-20 21st Century Technologies Segment matching search system and method
US8417825B2 (en) * 2005-03-09 2013-04-09 Apple Inc. Communications handles and proxy agents
US7752192B2 (en) * 2007-03-02 2010-07-06 International Business Machines Corporation Method and system for indexing and serializing data
JP2008305124A (ja) 2007-06-07 2008-12-18 Nippon Telegr & Teleph Corp <Ntt> Xml文書の適合度の算出方法、情報処理装置およびプログラム
JP5339507B2 (ja) * 2008-10-01 2013-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 木構造を探索する方法
US8862897B2 (en) * 2011-10-01 2014-10-14 Oracle International Corporation Increasing data security in enterprise applications by using formatting, checksums, and encryption to detect tampering of a data buffer

Also Published As

Publication number Publication date
US20140172897A1 (en) 2014-06-19
US9524354B2 (en) 2016-12-20

Similar Documents

Publication Publication Date Title
US20200279107A1 (en) Digital image-based document digitization using a graph model
US8411961B1 (en) Method and apparatus for image feature matching in automatic image stitching
Morisse et al. Hybrid correction of highly noisy long reads using a variable-order de Bruijn graph
JP2014059757A (ja) 木構造を有するデータを処理する装置、処理方法およびプログラム
JP4189369B2 (ja) 構造化文書検索装置及び構造化文書検索方法
JP5845764B2 (ja) 情報処理装置及び情報処理プログラム
CN106255979B (zh) 行分割方法
JP6003705B2 (ja) 情報処理装置及び情報処理プログラム
JP2011198364A (ja) 媒体文書へのラベル添加方法及び該方法を用いるシステム
JP5978393B2 (ja) 計算機、記録媒体及びデータ検索方法
JP2019040260A (ja) 情報処理装置及びプログラム
JP4983526B2 (ja) データ処理装置及びデータ処理プログラム
JP2019101889A (ja) テスト実行装置及びプログラム
JP2009181301A (ja) 表現テンプレート生成装置、その方法およびそのプログラム
JP2007193532A (ja) メタデータ検索装置、メタデータ検索方法およびメタデータ検索プログラム
JP6325472B2 (ja) データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム
JP2016167123A (ja) 共通操作列抽出プログラム、共通操作列抽出方法、及び共通操作列抽出装置
JP2013218627A (ja) 構造化文書からの情報抽出方法、装置、及びプログラム
JP6131765B2 (ja) 情報処理装置及び情報処理プログラム
JP7383882B2 (ja) 情報処理装置、及び情報処理プログラム
WO2014170965A1 (ja) 文書処理方法、文書処理装置および文書処理プログラム
JP2013077084A (ja) 文例辞書生成プログラム及び文例辞書生成装置
US20170052833A1 (en) Information processing apparatus, non-transitory storage medium, and information processing method
JP6171807B2 (ja) 文書データ処理システム、文書データ処理プログラム
JP2010092426A (ja) 画像処理装置、画像処理方法およびプログラム