JP2005202507A - データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム - Google Patents

データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム Download PDF

Info

Publication number
JP2005202507A
JP2005202507A JP2004005842A JP2004005842A JP2005202507A JP 2005202507 A JP2005202507 A JP 2005202507A JP 2004005842 A JP2004005842 A JP 2004005842A JP 2004005842 A JP2004005842 A JP 2004005842A JP 2005202507 A JP2005202507 A JP 2005202507A
Authority
JP
Japan
Prior art keywords
template
data
vertex
vertices
candidate
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.)
Granted
Application number
JP2004005842A
Other languages
English (en)
Other versions
JP4394964B2 (ja
Inventor
Akira Konno
晃 金野
Hideki Yukitomo
英記 行友
Takehiro Nakayama
雄大 中山
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2004005842A priority Critical patent/JP4394964B2/ja
Publication of JP2005202507A publication Critical patent/JP2005202507A/ja
Application granted granted Critical
Publication of JP4394964B2 publication Critical patent/JP4394964B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】 テンプレートを用いて圧縮されたXML文書のデータ構造をテンプレートにより再圧縮して効率よく圧縮する。
【解決手段】 データ圧縮装置101は、型と値をそれぞれ有する複数の頂点と頂点間の参照情報とを有する入力データ108を分離手段107により、頂点間の参照情報を有する相互参照関係データと頂点群のデータとに分離して、その分離された頂点群のデータを第2の出力データ110として出力し、特定のパターンを有する相互参照関係データを頂点間の参照情報が共有可能なテンプレートとしてテンプレート蓄積手段102に蓄積し、分離された相互参照関係データから、蓄積されているテンプレートに対応する一致箇所を一致箇所検出手段103により検出し、一致箇所をテンプレート置換手段111により置換する際に、置換箇所を示す指示付き頂点を設けて、テンプレートによる再置換を可能にする。
【選択図】 図1

Description

本発明は、電子データの圧縮装置、復元装置、テンプレート生成装置およびデータ圧縮システムに関する。
近年、WWW(World Wide Web)の普及により、HTML(Hyper Text Markup Language)やXML(Extensible Markup Language)等、構造化文書を用いたデータ交換が増加している。特に、XMLはHTMLを補う次世代の言語として注目を集めており、今後インターネットにおける情報交換の場において最も普及していくことが予想される。
XMLは要素の階層構造を表すデータ表現形式を伴った言語であり、XMLを用いた文書(XML文書)は、例えば図32のように記述される。図32は、XML文書10を示す図である。図32に示すとおり、XMLは大きくマークアップとテキスト情報に分けられる。図32に示すXML文書10では、マークアップは、要素開始記号(開始タグ)Ma、要素終了記号(終了タグ)Mb、空要素記号(空要素タグ)Mcからなっている。図32では、<book>、<title>、<authors>、<author>、<contents>および<chapter>が要素開始記号Maを表している。また、</book>、</title>、</authors>、</author>、</contents>および</chapter>が要素終了記号Mbを表し、<misc/>が空要素記号Mcを表している。これらの要素開始記号Maから対応する要素終了記号Mbまでの領域、または空要素記号Mcが要素(XMLの基本となる情報単位)を表している。
要素開始記号Maと要素終了記号Mbの間には、別な要素記号の他、テキスト情報を記述することができる。例えば、図32に示すXML文書10では、要素<title>には、文字列“XMLの基礎”が、要素<authors>の中に現れる最初の要素<author>には、文字列“山田 太郎”がそれぞれテキスト情報として定義されている。
要素やテキスト情報の間には、親子関係、兄弟関係が定義されている。図32に示すXML文書10の場合、要素開始記号Maが<book>で始まり、要素終了記号Mbが</book>
で終了する要素(要素<book>)の中に、要素開始記号Maが<title>で始まり、要素終了
記号Mbが</title>で終了する要素(要素<title>)が含まれている。このとき、要素<book>は要素<title>の親要素であるといい、要素<title>は要素<book>の子要素であるという。これが要素の親子関係である。
また、要素<title>と要素<authors>とは、同一の親要素<book>を持ち、かつ連続している。このとき、要素<title>と要素<authors>とは兄弟であるといい、要素<title>は要素
<authors>の前兄弟、要素<authors>は要素<title>の次兄弟であるという。これが要素の
兄弟関係である。
一般に、XMLは、コンピュータ間で通信を行う際や、ハードディスク装置やフラッシュメモリに蓄積する際には、図32に示すXML文書10ようにテキスト形式で表現されている。一方、コンピュータ内部で検索や修正用に利用するときは、解析されてコンピュータ内部に適したデータ構造に変換されている。
図33は、図32に示すXML文書10を解析し、コンピュータの内部利用に適した形式に変換したデータ構造11を示す図である。図33では、各要素及びテキスト情報が型および値を有する頂点301〜317として記述されている。型は各頂点301〜317の左側に記述され、“E”であれば要素を表し、“T”であればテキスト情報を表している。例えば、頂点301では型301aは“E”である。また、値は頂点の右側に記述され、例えば、頂点301では値301bは“book”である。そして、頂点が要素を表す場合は値に要素の名称(要素名)が記述され、テキスト情報を表す場合は文字列が記述される。例えば、頂点302では要素名<title>を表し、頂点306ではテキスト情報“XMLの基礎”を表している。
また、各頂点301〜317は、もとの(変換前の)XML文書10の親子関係および兄弟関係を表現するため、親参照、子参照、次兄弟参照および前兄弟参照の4つの参照を表す参照情報を有している。上述のXML文書10の場合、要素<title>は要素<book>の子要素であり、要素<book>は要素<title>の親要素であるから、図33に示すデータ構造11では、例えば、頂点301、302については、それぞれ、<book>から<title>への子参照P1と、<title>から<book>への親参照P2を有し、それらが矢印によって表現されている。また、要素<book>は<title>の次の子要素として要素<authors>も有している。この場合、頂点302、303については、要素<title>から要素<authors>への次兄弟参照P3、要素<authors>から要素<title>への前兄弟参照P4が保持されている。なお、データ構造11の場合、兄弟関係にある要素では、先頭の子要素(例えば要素<title>)以外は親参照を直接に有しないようになっている。
データ構造は、各頂点間の参照情報と、要素名やテキスト情報とを分離して管理することができ、例えば、そのそれぞれを図34(a)、図34(b)のように表現することができる。ここで、図34(a)は各頂点間の参照情報を有する相互参照関係データ400を示す図であり、図34(b)は要素とテキスト情報のいずれかに設定される型と値を有する複数の頂点の集合(頂点群ともいう)を示すテーブル450を示す図である。
しかしながら、メモリ等の記憶装置の容量は有限であるため、データ構造を蓄積するときは、そのデータ構造を効率的に圧縮して蓄積することが求められる。この点に関し、非特許文献1には、図34(b)に示すような要素名やテキスト情報を圧縮する方法が開示されている。非特許文献1では、各頂点が保持する要素名やテキスト情報を辞書として別途蓄積し、各頂点には辞書のインデックスを持たせ、同じ文字列を複数蓄積しないようにすることで、圧縮する方法が開示されている。
一方、非特許文献2には、XML文書中の部分的な構造を再利用することで、XML文書を圧縮する方法が開示されている。この方法は元のXML文書を構造、要素名情報、テキスト情報の3つに分離したのち、そのそれぞれをLZ77等の一般的な圧縮アルゴリズムで圧縮するというものである(LZ77について詳しくは、Jacob Ziv、Abraham Lempel:A Universal Algorithm for Sequential Data Compression。IEEE Transactions on Information Theory 23(3):337-343(1977)を参照)。
ここで、非特許文献2に開示されている圧縮方法について説明する。この圧縮方法ではまず、要素開始記号や空要素記号をそれぞれ「#1」、「#2」のような短い要素名で置換し、要素終了記号を「/」で置換する。また、テキスト情報は「C」で置換する。
以上の圧縮方法を分離したXML文書10に適用すると、分離後のデータ構造12、要素名情報13およびテキスト情報14はそれぞれ図35、図36、図37のように表現される。
また、非特許文献2に記載の圧縮方法では、LZ77等に代表される圧縮アルゴリズムを用いてそれぞれを独立に圧縮するが、ここではその圧縮アルゴリズムの概要について説明する。LZ77等の圧縮アルゴリズムは元の入力情報に含まれる部分的なパターンを発見し、それをテンプレートとして繰り返し再利用することにより、圧縮を行う。例えば、図35に示すデータ構造12の圧縮について説明すると、テンプレートとして、テンプレートX、Y、Z、W、Vを用いるとし、それぞれのテンプレートの割り当てを、X=“#1 #2 C / #3”、Y=“#4C /”、Z=“/ #5”、W=“#6 C/”、V=“/ #7 / /”のように設定すると、図35に示したデータ構造12は“X Y Y Y Z W W V”のように表せる。これは一部の文書構造をあらわすテンプレートとして、Y、Wを複数回利用している。このように、テンプレートが繰り返し利用でき、元の文書を少ないテンプレートで表現することができれば、元のXML文書を表す情報量が少なくて済むから圧縮が可能になる。
Mathias Neumuller and John N. Wilson:"Compact In-Memory Representation of XML"Internal Report of University of strathclyde Hartmut Liefke and Dan Suciu.:"XMill: An Efficient Compressor for XML Data"、In proceedings of ACM SIGMOD International Conference on Management of Data、2000
しかしながら、従来の技術では、メモリ量の制約などにより、利用できるテンプレートが限られている場合、十分な圧縮を行うことができなかった。そのため、テンプレートを用いて圧縮されたデータ構造に対しても再圧縮を行い、その再圧縮で効率的に圧縮されたデータを復元できるようにすることが望ましい。
そこで、本発明は上記課題を解決するためになされたもので、XML文書のデータ構造をテンプレートにより効率的に圧縮し、効率的に圧縮されたデータをテンプレートにより復元して、効率的な圧縮および復元を可能にする構成を備えたデータ圧縮装置、その圧縮されたデータ構造を復元するデータ復元装置、その圧縮に用いるテンプレートを生成するテンプレート生成装置およびデータ圧縮システムを提供することを目的とする。
上記課題を解決するため、本発明は型と値をそれぞれ有する複数の頂点と、その頂点間の参照情報とを有する入力データを、頂点間の参照情報を有する相互参照関係データと、型と値を有する複数の頂点からなる頂点群とに分離し、その分離された頂点群のデータを出力する分離手段と、特定のパターンを有する頂点間の参照情報を、頂点間の参照情報が共有可能なテンプレートとして蓄積するテンプレート蓄積手段と、分離手段により分離された相互参照関係データから、テンプレート蓄積手段に蓄積されているテンプレートに対応する一致箇所を検出するテンプレート一致箇所検出手段と、分離手段により分離された相互参照関係データのうち、テンプレート一致箇所検出手段により検出された一致箇所をテンプレートで置換する際に、そのテンプレートによる置換箇所を示す指示付頂点を設けて、テンプレートによる再置換を可能にするテンプレート置換手段とを有し、頂点間の参照情報を参照可能な状態で、テンプレート置換手段により置換された相互参照関係データを出力する出力手段とを有するデータ圧縮装置を特徴とする。
このデータ圧縮装置は、置換箇所を頂点と同様の構成で表現することができ、再帰的にテンプレートを適用することができるから、少ないテンプレートで高い圧縮効率を実現することができる。
また、テンプレート一致箇所検出手段が、入力データが根付木構造を有するときはテンプレート蓄積手段に蓄積されているテンプレートに対応する一致箇所を検出するときに、葉頂点を含む一致箇所のみを検出することが好ましい。
これにより、圧縮された相互参照関係データを復元し、その復元された相互参照関係データの一部の頂点を参照する際に、その頂点の参照に必要なテンプレートのみを展開し、頂点の参照が高速に行える。
本発明は、特定のパターンを有する複数の頂点間の参照情報を、頂点間の参照情報が共有可能なテンプレートとして蓄積するテンプレート蓄積手段と、頂点間の参照情報を有して、テンプレートにより置換された圧縮済みの相互参照関係データを入力し、その圧縮済みの相互参照関係データをテンプレートを用いて展開し、その展開した相互参照関係データが、テンプレートで置換された頂点間の参照情報を有するときに、展開した相互参照関係データをテンプレートを用いて展開する再展開を繰り返し行い、圧縮済みの相互参照関係データから圧縮前の相互参照関係データを復元する展開手段と、複数の頂点からなる頂点群のデータを入力し、その頂点群のデータと、展開手段により復元された圧縮前の相互参照関係データとを合成して、その合成されたデータを出力する合成手段とを有するデータ復元装置を提供する。
このデータ復元装置は入力される相互参照関係データについてテンプレートを用いた再展開を繰り返し行うため、再帰的にテンプレートの適用が行われ、少ないテンプレートを用い、高い圧縮率で圧縮された相互参照関係データを展開して復元することができる。
また、展開手段は、相互参照関係データの中で参照すべき頂点が指定されたときに、その参照すべき頂点の参照に必要なテンプレートを用いて再展開を行うとよい。
これにより、参照すべき頂点の参照に必要なテンプレートのみを展開するようにでき、圧縮された相互参照関係データから高速にデータを参照することができる。
そして、本発明は、複数の頂点と、その頂点間の参照情報とを有する根付木構造のデータを入力し、入力データを取得する入力データ取得手段と、その手段により取得される入力データにおける各頂点間の参照情報に含まれる根付木構造の参照情報をテンプレート候補として検出するテンプレート候補検出手段と、その手段により取得されるテンプレート候補と、入力データにおけるテンプレート候補の出現頻度を記憶するテンプレート候補蓄積手段と、その手段に蓄積されているテンプレート候補により、入力データを置換するテンプレート置換手段と、テンプレート候補蓄積手段に記憶されているテンプレート候補から、出現頻度をもとにテンプレート候補を選択し、その選択されたテンプレート候補を出力するテンプレート選択手段とを有するテンプレート生成装置を提供する。
このテンプレート生成装置は、入力データに含まれる根付木構造の参照情報をテンプレート候補として検出してテンプレート候補蓄積手段に蓄積し、このテンプレート候補を用いて入力データを置換する。また、蓄積されているテンプレート候補から、出現頻度をもとにテンプレート候補を選択し、それをテンプレートとして出力する。
また、テンプレート選択手段は、テンプレート候補を選択する際に、テンプレート置換手段が入力データの置換に用いたテンプレート候補のみを選択することができる。
こうすると、与えられた入力データのうち、必要な部分の参照情報をテンプレート候補として出力することができる。
また、テンプレート候補検出手段は入力データにおける根頂点から最も浅い葉頂点と同じ深さの頂点すべてを含む最小木構造を有する部分の参照情報をテンプレート候補として検出することができる。
さらに、入力データにおけるテンプレート候補検出手段により検出されなかった箇所の根付木構造を有する部分の参照情報が、テンプレート候補検出手段に入力されるようにしてもよい。
このようにしてテンプレート生成装置を構成すると、入力データから根頂点のみが接続情報を有する根付木構造をテンプレートとして生成できるようになるから、再帰的な圧縮に効果的なテンプレートを生成することができる。
そして、テンプレート候補検出手段は入力データの根頂点から深さ優先探索で最初に遭遇する葉頂点を起点とし、その起点となる頂点と、その親頂点とを有する根付木構造部分の参照情報をテンプレート候補とし、参照情報に頂点を一つ追加して得られる根付木構造部分の参照情報を新たなテンプレート候補とする拡張候補検出を繰り返すこともできる。
このようにしてテンプレート生成装置を構成すると、テンプレートと入力データの一致確認を逐次行うことなく、入力データの構造解析を行うことにより、テンプレートとの一致を検証することができるため、テンプレートを高速に生成することができる。
また、テンプレート候補検出手段は、新たなテンプレート候補の検出を頂点数によって制限するとよく、根付木構造部分の参照情報の高さにより、新たなテンプレート候補の検出を制限してもよい。
これらのようにすると、生成されるテンプレートの大きさを制限し、出現頻度の低い大きなテンプレートの生成を抑制することができる。
さらに、テンプレート候補検出手段が、拡張候補検出を行う際に、起点となる頂点との深さの差が所定値よりも大きい新頂点への拡張は行わず、新頂点を起点として、拡張候補検出を繰り返すことが好ましい。
このようにしてテンプレート生成装置を構成すると、生成されるテンプレートの大きさを制限することができるだけでなく、起点とする頂点と深さの差が所定値よりも大きい頂点の子孫となる頂点が別のテンプレートにより置換されて、すべて葉頂点として扱うことが可能になる。入力データから、根頂点のみが接続情報を有する根付木構造をテンプレートとして生成することが可能になるから、再帰的な圧縮に効果的なテンプレートを動的に生成することが可能になる。
そして、本発明は、型と値をそれぞれ有する複数の頂点と、その頂点間の参照情報とを有する第1の入力データを圧縮するデータ圧縮システムであって、第1の入力データと同様の構造を有する第2の入力データから抽出した頂点間の参照情報を有する相互参照関係データを入力し、頂点間の参照情報が共有可能なテンプレートを生成する上記いずれか一項記載のテンプレート生成装置と、テンプレート生成装置によって生成されたテンプレートを蓄積するテンプレート蓄積手段を備えた上記いずれかのデータ圧縮装置と、頂点間の参照情報を参照可能な状態で、テンプレート蓄積手段に蓄積されたテンプレートにより置換された相互参照関係データを第1の出力データとして出力し、第1の入力データから分離された型と値をそれぞれ有する複数の頂点からなる頂点群のデータを第2の出力データとして出力する出力手段とを有するデータ圧縮システムを提供する。
このようにしてデータ圧縮システムを構成すると、与えられた入力データの圧縮に適したテンプレートを動的に生成しながら、その生成されたテンプレートを用いて入力データを圧縮することができるため、圧縮効果の高いデータ圧縮を実現することができる。
本発明によれば、XML文書のデータ構造を少ないテンプレートを用いて再帰的に効率良く圧縮し、その効率よく圧縮されたデータ構造を復元することができる。
以下、本発明の実施形態について図面を用いて詳細に説明する。
データ圧縮装置の実施の形態
(第1の実施の形態)
図1は、本実施の形態に係るデータ圧縮装置101の構成を示すブロック図である。図1に示すように、データ圧縮装置101はテンプレート蓄積手段102、テンプレート一致箇所検出手段103、分離手段107、テンプレート置換手段111および切り替え手段104を有している。このデータ圧縮装置101は、型と値をそれぞれ有する複数の頂点(頂点群)と、その各頂点間の参照情報とを有する入力データ108を入力し、第1の出力データ109と第2の出力データ110とを出力するようになっている。
本実施の形態では、図2に示すXML文書20を圧縮する手順をもって発明の詳細を説明する。図2(a)は、XML文書20のテキスト表現の一例を示す図である。XML文書20は既知の手法(例えばhttp://xml.apache.org/xerces2-j/において示されるXercesなど)により、図2(b)に示すようなコンピュータの内部利用に適したデータ構造21に変換可能である。そこで、以下では、XML文書20を図2(b)に示すデータ構造21に変換した後の圧縮工程について説明する。このデータ構造21は、型と値をそれぞれ有する複数の頂点(頂点群)と、その各頂点間の参照情報とを有している。
データ圧縮装置101は、分離手段107が図2(b)に示すデータ構造21を入力データ108として入力し、その入力データ108を各頂点間の参照情報を有する相互参照関係データRdと、型と値を有する複数の頂点からなる頂点群のデータTdとに分離している。すなわち、分離手段107は次のようにして、図3に示す相互参照関係データ1000と、図4に示すテーブル900を生成し、そのテーブル900を型と値を有する頂点1001〜1007の集合(頂点群)とすることによって、データ構造21を分離している。その相互参照関係データ1000は各頂点を一意に識別可能なID(頂点ID)を各頂点1001〜1007に順に割り振って生成する。また、テーブル900はその割り振った頂点IDと、対応する頂点1001〜1007がもともと有していた型および値との組を列記して生成する。各頂点1001〜1007への頂点IDの割り振り方には、幅優先探索や、深さ優先探索等があるが、ここでは深さ優先探索を用いている。また、分離手段107は、分離して得られる頂点群のデータを第2の出力データ110として出力する。
XML文書20から分離された相互参照関係データ1000、およびテーブル900はそれぞれ図3,図4に示す通りである。ここで、図4に示すテーブル900は頂点ID901、型902および値903を一行とする形式で表現されている。
テンプレート蓄積手段102は、圧縮に先立ちあらかじめテンプレートとテンプレート実体を蓄積している。このとき、テンプレート蓄積手段102は、テンプレートやテンプレート実体として、例えば、あらかじめ高い頻度で適用されることが分かっている高頻度のものや、後述するテンプレート生成装置1601で生成されたテンプレートを蓄積している。このようなテンプレートとテンプレート実体としては、例えば、図5(a),図5(b)に示すテンプレート1105とテンプレート実体1109とがある。
テンプレート1105は、テンプレートID1106、接続情報1107およびパターン情報1108を有している。テンプレートID1106はテンプレート蓄積手段102に複数のテンプレートが蓄積された際に、それら各テンプレートを一意に識別するために用いられる。パターン情報1108はそのテンプレートによって表現される頂点間の参照情報のパターンを表し、複数の頂点とそれら相互の参照情報とを有している。パターン情報1108に含まれる頂点間の参照情報には、親参照、子参照、次兄弟参照、前兄弟参照の4種類の参照が設けられている。なお、接続先の頂点がない参照のうち、後述するようにしてテンプレートを適用し、相互参照関係データ1000を圧縮する際に利用されない参照については、その旨がパターン情報1108に記述されている。これは、例えば、無効な頂点を定義しておき、その頂点への参照とすることで実現可能である。接続情報1107にはテンプレート1105を実際に適用し、相互参照関係データ1000を圧縮する際における他のテンプレートや頂点との接続を示す情報が列挙されている。
このようなテンプレート1105は、接続情報1107と、参照情報を有するパターン情報1108とを区別して構成しているから、異なるテンプレート1105同士でパターン情報1108を共有することができる。つまり、接続情報1107を異ならせることにより、接続され得る頂点や他のテンプレートを異ならせ、パターン情報1108が同じでも、別テンプレートのようにして利用することができる。すると、テンプレート内に含まれる頂点間の参照情報が省略可能となり、テンプレート蓄積手段102のメモリ使用量(記憶領域)を効率よく利用することが可能となる。
また、図5(a)において、テンプレートID1106には具体的な値として“T1”が設定されている。パターン情報1108は4つの頂点1101〜1104と、それらの間の参照を示す参照情報とにより構成され、参照は矢印で記述されている。なお、参照の種類は矢印に対して、親参照はp、子参照はc、次兄弟参照はns、前兄弟参照はpsとして記述されている。例えば、頂点1101の子参照cは頂点1102を指定しており、頂点1103の次兄弟参照nsは頂点1104を指定している。
また、テンプレートを適用し、相互参照関係データ1000を圧縮した際に利用されないことを示す参照は、端点を「×」で記述し、テンプレートを適用し相互参照関係データ1000を圧縮する際に他のテンプレートや頂点と接続されることを示す参照は端点を「○」で記述している。後者に該当する4つの参照、すなわち、頂点1101の親参照、頂点1102、頂点1103、頂点1104の子参照については、接続情報1107に頂点のIDと参照の種類が列挙されている。
図5(b)に示すテンプレート実体1109は、入力データ108に対し、相互参照関係データ1000を圧縮する際に、テンプレートを適用したこと(テンプレート適用済み)を表すために用いられる。このテンプレート実体1109は、テンプレート実体ID1110と、適用するテンプレートを表す利用テンプレートID1111と、実体接続情報1112と、実体情報1113とを有している。
テンプレート実体ID1110は、テンプレートID1111で示されるテンプレート1105を適用して相互参照関係データ1000を圧縮した際、そのテンプレート1105の適用箇所を一意に特定するために用いられる。実体接続情報1112は、テンプレート1105を適用し相互参照関係データ1000を圧縮した際に接続する先の頂点が列挙されている。実体情報1113はテンプレート1105を適用し、相互参照関係データ1000を圧縮した際に、テンプレート1105に内包されている頂点のID(頂点ID)が蓄積されている。実体接続情報1112と実体情報1113に入る具体的な値については後述する。
テンプレート一致箇所検出手段(以下「一致箇所検出手段」という)103は図3に示す相互参照関係データ1000から、テンプレート蓄積手段102に蓄積されているテンプレートに対応する一致箇所を検出する。テンプレート蓄積手段102には、テンプレート1105のほか、複数のテンプレートが蓄積されることが予想されるため、一致箇所検出手段103による検出結果は複数通り存在すると考えられる。ただし、例えば図12に示す一致箇所検出手順によれば検出結果は一意に定まる。
なお、図12に示す一致箇所検出手順は以下のとおりである。
処理開始後ステップ1で、テンプレート蓄積手段に蓄積されたテンプレートから、頂点の数が多い順に1つずつ選択し、以下の処理を繰り返す。
選択したテンプレートをPjとし、ステップ2に進む。
続くステップ2では、相互参照関係データに含まれる頂点から、選択したテンプレートPの頂点の数と一致する頂点を選択する組み合わせをX1,X2,Xmとし、その中から1つずつ選択して、以下を繰り返す。
選択した組み合わせをXkとする。
次に、ステップ3に進み、Xkに含まれる頂点はすべて置換済みマークが無いか否かを判断し、無ければステップ4に進み、そうでなければkがmに達するまでステップ3からステップ5を繰り返す。
ステップ4に進むと、XkがPjと同型か否かを判断し、同型であればステップ5に進み、そうでなければkをひとつ進め、ステップ3に戻る。
ステップ5に進むと、テンプレートPj,Xkを一致箇所としてパターン一致情報に登録し、Xkに含まれる頂点は置換済みとしてマークする。
本実施の形態では、テンプレート蓄積手段102にテンプレート1105のみが蓄積されているとき、相互参照関係データ1000に対して、図12に示す一致箇所検出手順により求めた一致箇所を示す。そのテンプレートの一致箇所は、例えば図11(a)に示す一致箇所情報1701のように、利用したテンプレートを示すテンプレートID1702と、テンプレートの頂点から元の相互参照関係データ1000の頂点への割り当てを示す頂点対応情報1703とにより表すことができる。
ここで、相互参照関係データ1000のうち、テンプレートに対応する一致箇所を検出した結果の一例として、一致箇所情報1704を図11(b)に示す。この一致箇所情報1704はテンプレート蓄積手段102にテンプレート1105のみが蓄積されているときに、図12に示す一致箇所検出手順により、相互参照関係データ1000のうち、テンプレート1105に対応する一致箇所を検出した結果であり、一致箇所は1つであったことを示している。この一致箇所情報1704は、一致箇所検出手段103からテンプレート置換手段111に入力される。
テンプレート置換手段111は、一致箇所検出手段103から一致箇所情報1704(図1に示す一致箇所情報Ud)を入力し、該当する頂点を起点としてテンプレートのパターン情報に内包されている頂点に対応する頂点の集合をすべてテンプレート実体1109に置換し、その置換結果を圧縮済の相互参照関係データCdとして出力する。この置換は例えば図12に示す一致箇所検出手順で実現することができる。
ここで、その置換結果を図6に示す。図6では、テンプレート実体としてテンプレート実体1202が存在している。テンプレート実体1202はテンプレート実体ID1203と、利用テンプレートID1204と、実体接続情報1205と、実体情報1206とを有している。テンプレート実体ID1203には“X1”が設定され、利用テンプレートID1204には、“T1”が設定されている。これにより、テンプレート実体1202は図5(a)に示すテンプレート1105が適用されたことを示している。
実体情報1206は、利用したテンプレート(のパターン情報)に内包されている頂点と、テンプレートを適用する前の相互参照関係データ1000の頂点との対応を示している。例えば、テンプレート実体1202の場合、テンプレート1105の頂点1101,1102,1103,1104がそれぞれ圧縮前の相互参照関係データ1000の頂点1001,頂点1002,頂点1006,頂点1007に対応していることを示している。
実体接続情報1205は、そのテンプレート実体における他のテンプレート実体や頂点との接続情報を示している。ここで、上述したとおり、テンプレート実体1202が適用しているテンプレートはテンプレート1105であるが、そのテンプレート1105は外部と接続できる参照を4つ保持していることが、テンプレート1105における接続情報1107に記述されている(図5(a)参照)。
そして、テンプレート実体1202には、これらの参照先がどの頂点なのかが記述されている。すなわち、頂点1102の子参照が頂点1003へ接続されるように記述され、頂点1101の親参照、頂点1103の子参照および頂点1104の子参照はいずれの頂点にも接続されないことが記述されている。
テンプレート置換手段111は置換する際に、テンプレート実体1202へ置換されたことを示す情報を頂点と同様の構成で表現することによって、テンプレートで置換した後の相互参照関係データ1000を再圧縮が可能なデータとしている。
本実施の形態では、テンプレート置換手段111が相互参照関係データ1000について、テンプレート1105を用いた置換を行うときに、テンプレート1105の適用を示すテンプレート実体1202で置換するのではなく、次のようにしている。すなわち、テンプレート置換手段111は、図6に示すように、テンプレート実体ID1203に設定されている実体ID(X1)を示すポインタ付頂点(指示付頂点)1207を設けることによって、テンプレート実体1202による置換が行われたことを示す一方、ポインタ付き頂点1207以外の頂点、すなわち頂点1003、頂点1004、頂点1005が圧縮前と同様にそれぞれの参照を有するようにして、テンプレート1105を用いた置換を行っている。これにより、テンプレート実体1202への置換を表すポインタ付き頂点1207はテンプレート1105により置換されていない他の頂点(頂点1003、頂点1004、頂点1005)と同様の構成となり、テンプレート実体1202を頂点の1つとして表現できるようになる。こうして、テンプレート置換手段111は、相互参照関係データ1000について、テンプレートによる圧縮後の再圧縮を実現可能にしている。
切り替え手段104は、圧縮前の相互参照関係データ1000に対する圧縮が行われた圧縮済の相互参照関係データ1201(図1に示すCd)を第1の出力データとして出力するか、一致箇所検出手段103に入力して再圧縮を行うか(出力または再圧縮)を切り替え、両者を選択できるように構成されている。この切り替え手段104は再圧縮の余地があるか否か(再圧縮余地の有無)の判定結果や、予め指定しておいた再圧縮の回数(以下「指定回数」という)等を用いて、出力または再圧縮を選択し得るようになっている。再圧縮余地の有無は、一致箇所検出手段103が出力するテンプレート一致箇所情報Udが空か否かで行える。
本実施の形態では、指定回数を利用して出力または再圧縮を選択することとしている。入力データとしては、図2(b)に示すXML文書のデータ構造21を与え、テンプレート蓄積手段102に、図5に示すテンプレート1105のみが蓄積されている場合の動作を例にとって説明する。
切り替え手段104は、指定回数を利用して、圧縮済みの相互参照関係データ1201の出力または再圧縮を選択する。ここでは、例えば指定回数がNであり、今回の圧縮がn回目であるとする。
n≧Nであるときは出力が選択される。このとき、切り替え手段104は、相互参照関係データ1201を第1の出力データ109として出力する。
n<Nであるときは再圧縮が選択される。このとき、切り替え手段104は、相互参照関係データ1201を一致箇所検出手段103に入力する。相互参照関係データ1201は、テンプレート実体1202の適用を頂点と同様の構成で表現しているため、テンプレートの適用箇所を一つの頂点とみなし、例えば図12に示す一致箇所検出手順で一致箇所情報を導出することができる。図6に示した相互参照関係データ1201が一致箇所検出手段103に入力されるとき、検出された一致箇所検出情報は図11(c)に示す一致箇所情報1710となる。
図7は図6に示す相互参照関係データ1201を再圧縮した相互参照関係データ1301を示す図である。テンプレート置換手段111は、図6に示した相互参照関係データ1201のうち、一致箇所検出情報に示された頂点1207を起点として、テンプレート1205のパターン情報と対応する頂点群、すなわち、頂点1207、頂点1003、頂点1004および頂点1005を、テンプレート実体1302を用いて置換する。この置換の結果、図7に示すとおり、単一の頂点1307のみからなる相互参照関係データ1301が得られる。本実施の形態では、例えば頂点1307がテンプレート実体1302のテンプレート実体ID1303を保持して、テンプレート実体1302を参照することを示し、他のテンプレートにより置換されていない頂点と同一の構成としている。
なお、テンプレートの接続情報の数が頂点の有する接続情報の数(親参照、子参照、次兄弟参照、前兄弟参照をそれぞれ1つずつ)よりも多くなる場合が考えられるが、接続情報の数が多い頂点については、一致箇所検出手段103において、一致箇所検出の対象から除外してもよい。
以上のように、データ圧縮装置は、一致箇所検出手段103により検出された一致箇所をテンプレートで置換する際に、そのテンプレートによる置換箇所を示す指示付き頂点1207を設けてテンプレートによる再置換を可能とし、再帰的にテンプレートを適用できるようにしている。そのため、同一のテンプレートを複数回適用することができ、より少ないテンプレートで高い圧縮率を実現できるようになっている。
(第2の実施の形態)
上述のような再圧縮を行うことにより、型と値をそれぞれ有する複数の頂点と、各頂点間の参照情報とを有する相互参照関係データにおける頂点の一部を参照するときは、圧縮された相互参照関係データに対し、テンプレートを用いて繰返し展開処理を行い、復元処理を再帰的に行う必要がある。そのため、再圧縮の回数が増えるにしたがい、頂点の参照に重大な時間を要するおそれがある。したがって、頂点の参照に要する時間が可能な限り短縮できることが好ましい。
そのためには、入力データとして提供される相互参照関係データが根付木構造を有するときに、その木構造を有する元の相互参照関係データの最も浅い位置にある頂点(根頂点)から最も深い位置にある頂点(葉頂点)へと順次復元することが可能となれば、すなわち、テンプレートが復元された相互参照関係データにおける葉頂点に存在するようになれば、復元が必要な箇所のみを選択しながら復元することが可能となる。そのため、参照に要する時間を短縮できると考えられる。
これは、例えば、一致箇所検出手段103が一致箇所の検出において、木構造の葉頂点を含む一致箇所のみを検出し、その一致箇所をテンプレート置換手段111がテンプレートに置換する処理を再帰的に行うことによって実現することができる。
ここで、例えば、図3に示した相互参照関係データ1000が一致箇所検出手段103に入力され、テンプレート蓄積手段102に図5に示すテンプレート1105が蓄積されているとする。このとき、一致箇所検出手段103は一致箇所の検出で葉頂点を優先するため、葉頂点1005から一致箇所を検出していく。そして、葉頂点1005を含む一致箇所として、頂点1002が検出されるので、一致箇所検出手段103は、一致箇所情報Vdとして、頂点1002をテンプレート置換手段111に入力する。
そして、テンプレート置換手段111は、入力する一致箇所情報Vdを用いて、頂点1002を起点としてテンプレート1105のパターン情報1108に対応する頂点群、すなわち頂点1002、頂点1003、頂点1004および頂点1005を再圧縮可能となるようにテンプレートで置換する。
一方、切り替え手段104は、テンプレートで置換された圧縮後の相互参照関係データの出力または再圧縮を選択する。ここでは、再圧縮が選択されたとすると、切り替え手段104はテンプレートで置換された相互参照関係データを一致箇所検出手段103に入力する。
図8は、上述の要領で葉頂点を優先する再圧縮(優先圧縮)を行ったときの相互参照関係データ1401を示す図である。この相互参照関係データ1401を、図7に示すようにして再圧縮の順序を考慮せずに再圧縮を行った相互参照関係データ1301と比較すると、以下の点で相違がある。後者の相互参照関係データ1301は、テンプレートを元の相互参照関係データへ完全に復元しなければ圧縮前の相互参照関係データ1000の根頂点、すなわち頂点1001を復元することができない。そのため、復元した箇所が元の相互参照関係データ1000におけるどの位置に存在していたかが不明である。これに対して、前者の相互参照関係データ1401は、テンプレートを相互参照関係データへ1回復元するだけで(根)頂点1001を復元することができるため、元の相互参照関係データ1000における位置を確認しながら復元することが可能となる。したがって、上述の要領で優先圧縮を行うと、頂点の参照に要する時間を短縮できるようになる。
(第3の実施の形態)
データ圧縮装置101から出力される第1の出力データ109は、テンプレートの適用を示すテンプレート実体を頂点として表現しているため、圧縮前の相互参照関係データと同様、一致箇所検出手段103に入力することができる。そのため、複数のデータ圧縮装置を直列に接続することにより、相互参照関係データの再圧縮を行うことができる。ここで、図15は、複数のデータ圧縮手段を直列に接続したデータ圧縮装置2104の構成を示すブロック図である。図に示すように、データ圧縮装置2104は一致箇所検出手段2107およびテンプレート置換手段2108を有する第1の圧縮手段2101と、第2の圧縮手段2102と、・・・、第Nの圧縮手段210nを連続して直列に接続している。第1〜第Nまでの各圧縮手段2101〜210nは、いずれも同一のテンプレート蓄積手段2109を参照するようになっている。また、各圧縮手段2101〜210nは、それぞれ相互参照関係データを入力し、その相互参照関係データをテンプレートを用いて圧縮し、圧縮済みの相互参照関係データを出力データとして出力するようになっている。このような構成を有するデータ圧縮装置2104により、相互参照関係データの再圧縮が行える。
データ復元装置の実施の形態
図9は、本発明の実施の形態に係るデータ復元装置1501の構成を示すブロック図である。データ復元装置1501は、テンプレート蓄積手段1502と、テンプレート展開手段1505と、切り替え手段1503および合成手段1504を有している。このデータ復元装置1501は圧縮済みの相互参照関係データを第1の入力データ1506とし、型と値を有する頂点群のデータを第2の入力データ1507とし、その第1の入力データ1506から圧縮前の相互参照関係データを復元し、それを第2の入力データ1507として入力される頂点群のデータと合成して、出力データ1508を出力するようになっている。本実施の形態では、データ復元装置1501に対し、第1の入力データ1506として、図7に示す相互参照関係データ1301を入力し、第2の入力データ1507として、図3に示すテーブル900を入力するとし、テンプレート蓄積手段1502に図5に示すテンプレート1105のみが蓄積されている場合を例にとって、データ復元装置1501について説明する。
テンプレート展開手段1505は第1の入力データ1506として与えられた相互参照関係データ1301(のテンプレート適用箇所)をテンプレート蓄積手段1502に蓄積されているテンプレート1105を用いて展開する。その展開は、例えば図13に示す置換手順により行うことができる。
なお、置換手順は以下のとおりである。
置換手順は、処理開始後、ステップ6に進みiに0をセットして、ステップ7に進む。
ステップ7では、テンプレート一致箇所情報に含まれるすべての一致箇所について、それぞれ1つづつステップ8およびステップ9の処理を繰り返す。
ステップ8では、テンプレート実体を一つ作成し、実体ID=iとする。このテンプレート実体をOiとし,以下の処理を行う
利用テンプレートIDを一致箇所Miの利用テンプレートIDより複製する。
実体情報をMiの頂点対応情報より複製する。実体接続情報は実体情報に記述された対応関係より、元の参照をそのまま代入する。
ステップ9では、i=i+1を計算する、
ステップ7の実行により、ステップ8およびステップ9を繰り返した後、ステップ10では、作成済のテンプレート実体を1つずつ選択し、以下の処理を繰り返す。選択したテンプレート実体をOiとする。
次にステップ11に進み、実体接続情報に記述された参照の接続先頂点が他のテンプレート実体に含まれる場合はテンプレート実体IDとテンプレートの頂点の組に置換する。
相互参照関係データ1301を図14に示す復元手順により展開すると、図6に示す相互参照関係データ1201のようになる。
なお、復元手順は以下のとおりである。
図14において、開始後のステップ12で、圧縮済みの相互参照関係データに含まれるすべてのテンプレート実体をX1,X2,Xnとし、すべてについて以下を行う。
選択したテンプレート実体をXiとする。
次にステップ13に進み、テンプレート実体Xiが利用するテンプレートが持つ頂点間の参照情報を複製し、テンプレート実体Xiの実体情報に記述される頂点のIDを割り振る。
次いでステップ14に進み、テンプレート実体Xiの実体接続情報に記述された頂点が他のテンプレート実体Xmに含まれる頂点の場合、テンプレート実体Xmに記述される頂点IDで置換する。
切り替え手段1503は展開された相互参照関係データ1201の中に、更なるテンプレートの適用箇所が有るか否か(再適用箇所の有無)を判断する。そして、切り替え手段1503は再適用箇所が有ると判断すると、更なる展開を行うため、展開した結果の相互参照関係データをテンプレート展開手段1505に入力する。また、切り替え手段1503は、再適用箇所が無いと判断すると、展開した結果の相互参照関係データの出力先を合成手段1504へと切り替える。なお、再適用箇所は、例えば、全頂点のうち、テンプレート実体への参照を有する頂点を検出することによって、検出可能である。
テンプレート展開手段1505と、切り替え手段1503は、適用箇所がなくなるまで上述した展開を繰り返し実行する。
本実施の形態の場合、テンプレート1105を用いた1回目の展開結果は図6に示す相互参照関係データ1201のようになる。この相互参照関係データ1201は、テンプレート実体1202への参照を有しているため(ポインタ付き頂点1207が有るため)、まだ再適用箇所を有している。そのため、切り替え手段1503は展開した結果の相互参照関係データ1201をテンプレート展開手段1505に入力し、テンプレート展開手段1505がその再適用箇所を再び展開する。すると、図3に示す相互参照関係データ1000が復元され、相互参照関係データ1000が切り替え手段1503へ入力される。相互参照関係データ1000は再適用箇所を含まないので、切り替え手段1503は出力先を合成手段1504へと切り替える。
合成手段1504は入力された相互参照関係データ1000と、第2の入力データ1507として入力されたテーブル900とを合成する。図4に示したテーブル900には、各頂点に対応する頂点ID901が割り振られている。そのため、合成手段1504は相互参照関係データ1000における頂点ID901が一致する各頂点に、型902と値903に設定されている情報を当て嵌めていくことにより、相互参照関係データ1000とテーブル900とを合成する。この合成を行うことにより、型と値をそれぞれ有する頂点群のデータと、各頂点間の参照情報とを有するデータ構造21を復元することができる。
なお、図9において、データ復元装置1501は各手段が一体化された単一の装置として構成されているが、必ずしも単一の装置として実現される必要はなく、複数の装置を図示しない通信手段により接続して実現することも可能である。例えば、データ復元装置1501からテンプレート蓄積手段1502を分離した上で、テンプレート蓄積手段1502を別な単一装置として実現し、両装置間を図示しない通信手段により接続する構成にしてもよい。そうすると、テンプレート蓄積手段1502を有しない複数のデータ復元装置間でテンプレート蓄積手段1502を共有するといったことも可能になる。
また、本実施の形態では、切り替え手段1503がテンプレート展開手段1505への入力と合成手段1504への出力を切り替えることにより、テンプレート展開手段1505におけるテンプレートの展開処理を繰り返し実行している。その他にも、展開された相互参照関係データを常にテンプレート展開手段1505に入力し、テンプレートの展開が終了した段階で、合成手段1504に出力させるような切り替え手段を用いてもよい。
さらに、切り替え手段1503に対して、相互参照関係データの参照位置やテンプレートの展開回数等のデータをデータ復元装置1501の外部から与えるように構成してもよい。こうすると、テンプレート展開手段1505が、テンプレートの適用箇所を展開することにより入手可能な型と値をそれぞれ有する頂点群のデータと、各頂点間の参照情報とを有するデータ構造のうち、参照すべき(参照する必要がある)頂点の参照に必要なテンプレートを用いた展開のみを行うことが可能になる。
テンプレート生成装置の実施の形態
(第1の実施の形態)
図10は、本実施の形態に係るテンプレート生成装置1601の構成を示すブロック図である。テンプレート生成装置1601はテンプレート候補検出手段1602と、テンプレート置換手段1603と、入力データ取得手段1604と、テンプレート候補蓄積手段1605と、テンプレート選択手段1606とを有している。このテンプレート生成装置1601は、入力データ群1607を入力し、出力データ(テンプレート群)1608を出力するようになっている。
入力データ群1607は根付木構造を有する複数の相互参照関係データにより構成されている。本実施の形態では、図21に示すXML文書30および図22に示すXML文書40からそれぞれ分離された図23および図24に示す2つの相互参照関係データ2900,3000を入力データ群1607として、テンプレート生成装置1601について説明する。
なお、図21、図22に示すXML文書30、40から、相互参照関係データ2900,3000を分離するためには、第1の実施の形態と同様にして行えばよい。すなわち、この分離は、各頂点を一意に識別可能な頂点IDを各頂点に順に割り振って相互参照関係データ2900,3000を生成し、その割り振った頂点IDと、対応する頂点がもともと有していた型および値との組を列記してテーブルを生成し、そのテーブルを頂点群とすることで容易に行うことができる。
本発明を実現するための手順として複数の手順が考えられる。本実施の形態では、図25、図26、図27に示すテンプレート生成の第1〜第3の手順を用いるものとする。
まず、図25に示すテンプレート生成の第1の手順について説明する。テンプレート生成装置1601は、第1の手順の処理開始後、ステップ30に進み、入力データ取得手段1604がテンプレート生成装置1601に与えられた入力データ群1607から相互参照関係データを1つ取り出し、その相互参照関係データをテンプレート候補検出手段1602に入力する。テンプレート候補検出手段1602は、入力する相互参照関係データを次の相互参照関係データが入力されるまで保持データDに設定する。なお、テンプレート候補検出手段1602への相互参照関係データの選択順はいずれでもよいが、本実施の形態では、相互参照関係データ2900,3000の順に入力されるものとする。
(中間手順1)
次にステップ31に進み、テンプレート生成装置1601は保持データDの根頂点を引数として、第2の手順の呼び出しを行う。ここでは、相互参照関係データ2900の根頂点2901を引数に設定して第2の手順の呼び出しを行う。続くステップ32では、入力データ群1607に相互参照関係データが有るか否かを判断し、相互参照関係データが有ればステップ30に戻り、無ければステップ33に進む。このステップ32により、テンプレート生成装置1601は入力データ群1607に相互参照関係データがある限り、各相互参照関係データ(の根頂点)を引数とする第2の手順の呼び出しを繰り返し行う。
一方、入力データ群1607に相互参照関係データが無くなると、それを入力データ取得手段1604が検知してテンプレート選択手段1606に通知する。テンプレート生成装置1601では、この通知があるとステップ33に進み、テンプレート選択手段1606がテンプレート候補蓄積手段1605に蓄積されているテンプレート候補の中からテンプレートを選択し、選択したテンプレートをテンプレート群1608として出力する。
次に、第2の手順について説明する。第2の手順では、保持データDの頂点を第1の手順または第3の手順から取得して引数cursorに設定する。この引数cursorは、第2の手順において、保持データDのどの位置を辿っているかを表している。
ここでは、上述の中間手順1に示すとおり、第2の手順を呼び出すときの引数に保持データDの根頂点2901が設定されている。
図26に示すように、第2の手順を開始すると、ステップ40に進み、保持データDにおいて、引数cursorを根とする木構造を形成する部分参照情報をTに設定する。ここでは引数cursorに保持データDの根頂点2901が設定されているので、部分参照情報Tは保持データD(ここでは相互参照関係データ2900)と一致している。
次に、ステップ41に進み、引数cursorの値を変数Rに設定する。この変数Rは、保持データDの部分参照情報Tの根頂点を示している。
続いてステップ42に進み、変数Rの示す頂点を起点として、深さ優先探索で部分参照情報Tにおける木構造を形成する頂点を探索し、最初に遭遇する(葉)頂点を引数cursorに設定する。この段階で、引数cursorに頂点2904が設定される。変数Rは頂点2901を示す。
次に、ステップ43では引数cursorに親となる頂点があるか否かを判断する。ここでは引数cursorが示す頂点2904は頂点2903を示す親参照を有しているため、ステップ44に進む。このとき、テンプレート生成装置1601はテンプレート候補検出手段1602により、引数cursorが示す頂点と引数cursorの親参照が示す頂点とを有するパターンとなる候補パターンを設定し、この候補パターンが保持データDに存在するか否かを検出する。ここでは、頂点2904と頂点2903とを有するパターンが候補パターンに設定される。
そして、テンプレート生成装置1601は、ステップ44において、引数cursorとその親参照が示す頂点とで構成される候補パターンを第1の引数に設定し、変数R、引数cursorをそれぞれ第2の引数、第3の引数に設定して、第3の手順を呼び出す。なお、第3の手順では、第1の引数をC、第2の引数、第3の引数をそれぞれR、cursorとして表現する。
(中間手順2)
テンプレート生成装置1601は第3の手順を呼び出すと、図27に示すステップ50に進み、第3の引数cursorをデータSに設定して保存する。なお、このステップ50は必ずしも必要ではないが、本実施の形態では、データSを後述するステップ57におけるテンプレート候補検索の中断条件の判定に利用している。
そして、テンプレート生成装置1601はステップ51に進み、第1の引数Cが示すパターン(候補パターンC)を有するテンプレート候補がテンプレート候補蓄積手段1605に蓄積されているか否かを判断する。ここでは、候補パターンCを有するテンプレート候補はテンプレート候補蓄積手段1605に蓄積されていないので、テンプレート生成装置1601はステップ53に進み、候補パターンCを有するテンプレート候補を通過回数(出現回数)に“1”を設定してテンプレート候補蓄積手段1605に保存する。
なお、テンプレート候補蓄積手段1605へのテンプレート候補の蓄積方法は、様々な方法があるが、本実施の形態では、図28に示すような形式で木構造を構築しながら蓄積する。
ここで、テンプレート候補の構成について図28を用いて説明する。図28に示すテンプレート候補3401は、パターン情報3402と、各テンプレート候補を一意に識別するための識別ID3403と、通過回数3405と、置換回数3406とを有している。通過回数3405は、テンプレート生成装置1601に入力された相互参照関係データ内における置換可能なテンプレート候補を探索する過程でカウントされるテンプレート候補により置換可能な延べ回数を示している。この通過回数3405は、テンプレートを蓄積するときに“1”に初期化されている。置換回数3406は、実際にそのテンプレートを適用した回数を示している。この置換回数3406は、テンプレートを蓄積するときに“0”に初期化されている。
テンプレート生成装置1601は、テンプレート候補蓄積手段1605内にテンプレート候補を複数蓄積している。本実施の形態では、図29に示すように、複数のテンプレート候補を各テンプレート候補が頂点となる木構造で蓄積している。図29において、各テンプレート候補間の矢印は、あるテンプレート候補に対し頂点を一つ加えることにより、その矢印が示すテンプレート候補と同じ構造になることを示している。矢印に添えられたラベルN(M)は頂点Mに対し、参照Nで頂点を加えることを意味している。参照Nは親参照p,子参照c,次兄弟参照nsの3種類で記述している。なお、テンプレート候補の通過回数および置換回数は刻々と変化するため、図29では図示を省略している。
テンプレート生成装置1601は、初めて第3の手順を呼び出したときはステップ53に進む。そして、図29に示すように、候補パターンCがテンプレート候補3501のパターン情報と一致することから、テンプレート候補3501をテンプレート候補蓄積手段1605に追加する。この時、候補パターンCは第3の引数cursorが示す保持データDの頂点において置換可能であることを示すため、テンプレート候補3501の通過回数は“1”に設定される。
テンプレート生成装置1601はステップ54に進むと、候補パターンCを有するテンプレート候補に対する停止条件の成立可否を判断し、停止条件に基づき、テンプレート候補をこれ以上生成するか否かを判定する。停止条件は複数考えられるが、本実施の形態では、頂点のうち、第2の引数Rに対応する頂点(頂点R)が木構造の根頂点になる部分参照情報におけるすべての頂点がテンプレート候補により置換されたことを停止条件とすることができる。これは、第3の引数cursorが頂点R以下の部分木の最後の頂点であるか否かを確認することにより判定することができる(停止条件1)。また、テンプレート候補蓄積手段1605の記憶容量が限られているので、テンプレート候補の検出をテンプレート候補内の頂点数や木の高さ等で止めることを停止条件にしてもよい(停止条件2)。この停止条件2は、テンプレート候補の候補パターンCに含まれる頂点数が5以上であるか否かにすることができるが、これには限られない。
(中間手順3)
ここでは、候補パターンCはテンプレート候補3501のパターン情報と一致し、テンプレート候補内の頂点数は“2”である。また、第2の引数Rは頂点2901を示すが、
候補パターンCは第2の引数R以下の頂点をすべて含んでいないため、停止条件2(テンプレート候補の候補パターンCに含まれる頂点数が5以上であること)および停止条件1のいずれの停止条件も成立しない。そのため、テンプレート生成装置1601の処理はステップ55に進む。
テンプレート生成装置1601はステップ55で、第3の引数cursorより、保持データDを深さ優先探索でトレースし、そのときに遭遇する次の頂点を候補パターンCに追加して、追加後のパターンを候補パターンCに設定する。これにより、テンプレート生成装置1601は候補パターンCに頂点を一つ加えて新たなテンプレート候補検出を行う。これにより、本発明における拡張候補検出が行われる。ここでは、第3の引数cursorは頂点2904を示している。また、候補パターンCはテンプレート候補3501のパターンと形状が一致し、保持データD上では頂点2903および頂点2904に一致している。そのため、深さ優先探索により、第3の引数cursorの示す頂点(頂点2904)の次の頂点である頂点2905を候補パターンCに加えた構造、すなわち図29に示すテンプレート候補3502のパターンと同一のパターンがテンプレート候補検出手段1602により検出され、その検出されたパターンが新たに候補パターンCに設定される。
さらにステップ56に進み、保持データDにおける新たに追加された頂点を第3の引数cursorに設定する。ここでは、第3の引数cursorに頂点2905が設定される。
次に、ステップ57に進み、候補パターンCを有するテンプレート候補に対する中断条件の成立可否を判断する。中断条件が成立すればステップ58に進み、未成立ならばステップ51に戻る。このステップ57の中断条件の判定と、ステップ58の処理を加えることにより、テンプレートの大きさを制限し、出現頻度の低いテンプレートの生成を抑制することができる。中断条件としては、保持データDにおける第3の引数cursorが示す頂点の高さと、データSが示す頂点(頂点S)の保持データDにおける高さの差がN以上であるとか、候補パターンCに含まれる頂点の数がN以下である等、複数の方法やその組み合わせを用いることが可能である。
(中間手順4)
本実施の形態では、ステップ57の中断条件は次のようにしている。すなわち、保持データDにおける第3の引数cursorが示す頂点の高さと、データSが示す頂点の高さとが同じであり、かつ第3の引数cursorが示す頂点が子頂点を有していることを中断条件に設定している。
この中断条件が成立するとステップ58に進み、第3の引数cursorを引数に設定して上述した第2の手順を呼び出す。第2の手順が終了するとステップ55に戻る。このように中断条件が成立するとステップ58に進み、第3の引数cursorを起点として別なテンプレート候補(候補パターン)の検出を繰返し行う。これにより、テンプレート候補検出手段1602は、検出するテンプレート候補の大きさを制限している。
ここでは、図23に示すように、第3の引数cursorが頂点2905を示し、頂点2905は子頂点を有していない。そのため、中断条件は成立せず、テンプレート生成装置1601はステップ57からステップ51に戻る。この時点での候補パターンCは図29に示すテンプレート候補3502のパターンと一致している。また、テンプレート候補蓄積手段1605には、テンプレート候補3501のみが蓄積されている。そのため、テンプレート生成装置1601は、ステップ51からステップ53に進み、テンプレート候補検出手段1602が候補パターンCを有するテンプレート候補3502を出現回数に“1”を設定して、テンプレート候補蓄積手段1605に追加する。また、テンプレート候補検出手段1602は、この追加の際、テンプレート候補3501とテンプレート候補3502の間に矢印を設け、頂点3602の次兄弟参照として、パターンに頂点を追加したことを表すラベルns(3602)を付する。
そして、テンプレート生成装置1601はステップ54からステップ57までを上記同様に繰り返し実行する。このとき、テンプレート候補3503のパターンと同様の構造を候補パターンCとして取得してステップ51からステップ53までを実行する。これにより、テンプレート候補蓄積手段1605にテンプレート候補3503が追加され、テンプレート候補3502とテンプレート候補3503の間に矢印が設定され、ラベルns(3603)が付される。
この段階におけるテンプレート候補蓄積手段1605には、図29に示す各テンプレート候補のうち、テンプレート候補3501、テンプレート候補3502、テンプレート候補3503のみが蓄積されている。また、各テンプレート候補3501、テンプレート候補3502、テンプレート候補3503のそれぞれの通過回数はいずれも“1”である。
(中間手順5)
そして、ステップ54〜56を実行してステップ57に進むと、第3の引数cursorが頂点2906を示し、中間手順4に示す中断条件が成立する。そこで、テンプレート生成装置1601はテンプレート検出を中断してステップ58に進み、第3の引数cursorを引数に設定して、第2の手順を呼び出す。
(中間手順6)
ここでは、引数に頂点2906が設定されて第2の手順が呼び出される。これにより、頂点2906を根とする保持データDの部分木に対して、テンプレート候補の探索が行われる。
テンプレート生成装置1601は、第2の手順を呼び出すと、図26に示すステップ40からステップ43までを上記同様に実行する。そして、ステップ44に進み、テンプレート候補3501のパターンと同様の構造を第1の引数に設定し、頂点2906を第2の引数に設定し、頂点2907を第3の引数に設定して第3の手順を呼び出す。
そして、第3の手順の呼び出しにより、テンプレート生成装置1601は、候補パターンCとしてテンプレート候補3501に含まれるパターンと同様のパターンを取得する。また、第2の引数Rとして頂点2906を取得し、第3の引数cursorとして、頂点2907を取得する。
ここで、候補パターンCは既にテンプレート候補蓄積手段1605にテンプレート候補3501として蓄積されていることから、テンプレート生成装置1601は、図27におけるステップ51からステップ52に進み、テンプレート候補3501の通過回数に“1”を加算して“2”にする。
また、テンプレート生成装置1601は、ステップ54からステップ57までの処理を実行するとステップ51に戻るが、このとき、候補パターンCはテンプレート候補3502のテンプレート候補と合致し、第3の引数cursorは頂点2908を示している。このとき、テンプレート生成装置1601は、テンプレート候補3502の通過回数に“1”を加算して、“2”にする。
この時点で、第3の引数cursorが頂点2908を示す。このことは、中間手順3に示した上述の停止条件1、すなわち引数cursorが頂点R以下の部分木の最後の頂点であることを満たしている。そのため、テンプレート生成装置1601の処理はステップ54からステップ59に進む。
(中間手順7)
テンプレート生成装置1601は、ステップ59に進むと、候補パターンCを有するテンプレート候補による置換がそのまま可能であるか否かを判定する。置換可能と判定したときはステップ60に進み、そうでなければステップ62に進む。
ここで、候補パターンCによる置換が可能であるか否かは、候補パターンCにおける根頂点Xの子頂点の数と、候補パターンCを保持データDに合致させたとき、根頂点Xに合致する保持データDにおける頂点Yの子頂点の数とが一致するか否かによって判定することができる(以下「置換判定基準」という)。ここでは、候補パターンCは、テンプレート候補3502のパターンと同様の構造を有し、その根頂点3601の子頂点は、頂点3602と頂点3603の2つであり、保持データDにおける頂点2906の子頂点は頂点2907と頂点2908の2つである。したがって、根頂点3601の子頂点数は、頂点2906における子頂点数と一致する。そのため、テンプレート生成装置1601はステップ59からステップ60に処理を進める。
(中間手順8)
テンプレート生成装置1601は、ステップ60に進むと、保持データDにおける該当箇所をテンプレート候補により置換して、その適用箇所を頂点で表現し、その結果得られるデータを入力データ取得手段1604に入力する。すなわち、テンプレート置換手段1603により、保持データDの頂点を候補パターンCと同様の構造を有するテンプレート候補で置換し、その置換した結果を入力データ取得手段1604に入力する。
テンプレート候補による置換は、第1の実施の形態におけるテンプレートによる置換と同様にテンプレート実体を用いて行うが、本実施の形態では、説明を簡単にするため、便宜上、「候補置換」と表現する。
ステップ62に進むと、テンプレート候補蓄積手段1605に蓄積されたテンプレート候補の中で、最新のテンプレート候補から木構造を上方向に辿り、最初に遭遇する親参照または子参照接続のテンプレート候補を用いて保持データDを置換して頂点で表現し、その結果得られるデータを入力データ取得手段1604に入力する。
入力データ取得手段1604は置換された保持データDが頂点一つで表されていない限り、さらにテンプレートの適用が可能と判断し、テンプレート候補検出手段1602に保持データDを入力してテンプレート候補の検出を継続する。このとき、テンプレート候補蓄積手段1605に蓄積された候補パターンCと合致するテンプレート候補、すなわち、テンプレート候補3502の置換回数に“1”を加算して“1”とする。
置換結果は図23に示す相互参照関係データ2900から、頂点2907、頂点2908を除いて、第1の実施の形態と同様に、頂点2906をテンプレート候補3502による置換を表す頂点(指示付頂点)で表現することができる。また、テンプレート候補3502による置換のため、引数cursorが参照していた頂点2908は存在しなくなる。そのため、引数cursorは置換後の頂点2906を参照するように設定する。
ステップ61では、第3の引数cursorと第2の引数Rとが異なるか否かを判定する。ここで、両者が一致していると第3の手順が終了し、異なればステップ63に進む。上述の中間手順8に示すようにしてテンプレート候補により置換すると第2の引数R以下の頂点がすべて含まれる。そのため、第3の引数cursorと第2の引数Rとは、ともに頂点2906を参照し、一致することになる。よって、テンプレート生成装置1601はステップ61からステップ63を実行することなく第3の手順を終了する。
一方、第3の手順の呼び出しは、上述の中間手順6に示すように、第2の手順におけるステップ44から再帰的に行われているが、第2の手順におけるステップ44の処理が修了した後、その第2の手順の呼び出し元となる第3の手順のステップ58、すなわち、上述の中間手順5で中断したテンプレート検出を再開することになる。
このとき、復帰後における値はそれぞれ候補パターンCはテンプレート候補3503と一致し、第3の引数cursorは頂点2906を示し、第2の引数Rは頂点2901を示し、データSは頂点2904を示している。
テンプレート生成装置1601は、ステップ55に戻ると、テンプレート候補検出手段1602により、候補パターンCに頂点を追加し、新たなテンプレート候補を検出しようとする。しかし、第3の引数cursorが示す頂点2906は、上述のとおり既にテンプレート候補による置換が行われ、子参照も、次兄弟参照も有していないことから、頂点の追加は第3の引数cursorにおける親頂点の更に親参照方向に向かって行われる。この頂点の追加により、候補パターンCはテンプレート候補3505のテンプレート候補と同様の構造を取得し、ステップ56により第3の引数cursorは頂点2902に移動する。
第3の引数cursorが示す頂点2902は、上述の中間手順2で保存され、始点となるデータSの示す頂点(頂点S)、すなわち、頂点2904と高さが異なるため、中間手順4に示した中断条件が成立しない。よって、テンプレート生成装置1601の処理は、ステップ57からステップ51に戻り、さらにステップ53に進み、テンプレート候補3505をテンプレート候補蓄積手段1605に出現回数を“1”にして蓄積する。
ステップ54に進むと、候補パターンCがテンプレート候補3505のパターンと一致し、頂点数が“5”であり、中間手順3に示した停止条件が成立している。よって、テンプレート生成装置1601の処理はステップ59に進む。
ステップ59では、候補パターンCを有するテンプレート候補による置換がそのまま可能か否かを判断する。ここでは、上述した中間手順7に示した置換判定基準を適用し、テンプレート候補3505により置換可能であると判断する。
さらに、テンプレート生成装置1601は続くステップ60において、テンプレート置換手段1603を用いてテンプレート候補3505により保持データDの頂点を置換し、その置換結果を入力データ取得手段1604に入力する。
入力データ取得手段1604は置換された保持データDが頂点1つで表されていない限り、更にテンプレートの適用が可能と判断し、テンプレート候補検出手段1602に保持データDを入力し、テンプレート候補の検出を継続する。
この時点で、候補パターンCはテンプレート候補3505のパターンと一致するため、テンプレート候補3505の通過回数に“1”を加算して、“1”とする。
この時、第3の引数cursorは置換後の頂点2902を示すが、第2の引数Rは頂点2901を示す。そのため、ステップ61において、第3の引数cursorと第2の引数Rとが異なると判断され、ステップ63に進み、第2の引数Rを引数として第2の手順が呼び出される。これは既にテンプレート候補により置換された元の保持データDに対し、テンプレート候補の検出を試みることを意味している。
本実施の形態のこれまでの説明の中で、保持データDに対しては、既にテンプレート置換が2回行われており、この段階で保持データDは、図23におけるエリア2912および2915に属する頂点のみを有している。
テンプレート生成装置1601はこれまでと同様、第2の手順と第3の手順を再帰的に呼び出しながら、保持データDのテンプレート候補による置換を更に進め、最終的に第1の手順を終了し、保持データDを一つの頂点で表す。入力データ取得手段1604は、保持データDが一つの頂点で表されたことを検出すると、入力データ群1607から、次の相互参照関係データ3000を取得する。
図23に示す相互参照関係データ2900について、テンプレート候補による置換が終了した段階におけるテンプレート候補蓄積手段1605の状況は図30に示すとおりである。
そして、入力データ取得手段1604は、図23に示す保持データDの入力が終了したため、図24に示す相互参照関係データ3000の入力を開始する。図24に示す相互参照関係データ3000についても、図23に示す相互参照関係データ2900と同様の手順を繰り返す。ここで、引数cursorは頂点3006に一致し、変数Rが頂点3008に一致し、候補パターンCが図29のテンプレート候補3510に一致するとき、候補パターンCの頂点数が“5”であることから、上述の中間手順3に示す停止条件2が成立する。
そのため、テンプレート生成装置1601は、処理をステップ59に進め、テンプレート候補3510がそのまま適用可能であるか否かを判定する。図24に示すように、頂点3006には、次兄弟頂点3007が存在するため、テンプレート候補3510による置換は不可能であり、ステップ62に進む。
よって、テンプレート生成装置1601はテンプレート候補蓄積手段1605の中で、テンプレート候補3510の位置から木構造を上方向に辿り、最初に遭遇する親参照または子参照接続のテンプレート候補を発見する。この時、辿った経路上に存在する、テンプレート候補の通過回数から“1”を減算していく。
本実施の形態の場合、これは図29に示すテンプレート候補3501となり、そのテンプレート候補3501により、保持データDの頂点を置換する。これ以降の処理は、相互参照関係データ2900にテンプレート置換を施した場合と同様にして進める。
相互参照関係データ3000についても、最終的には頂点1つで表現することが可能である。頂点1つで表現された段階で、入力データ取得手段1604がこれ以上入力がないことを検知し、テンプレート選択手段1606にその旨を入力する。
図23、図24に示す相互参照関係データ2900,3000の入力が終了した時点におけるテンプレート候補蓄積手段1605の状況を図31に示す。符号3701〜3709はパターンを示している。
テンプレート選択手段1606はテンプレート候補蓄積手段1605に蓄積されたテンプレート候補の中からテンプレートを選択して出力する。このとき、テンプレートの選択方法は複数通り考えられるが、本実施の形態では、テンプレート候補の置換回数が“0”でないものを選択するものとする。この時、テンプレート候補からパターンを抽出し、その抽出したパターンをテンプレートにするが、これは、第1の実施の形態に示すようにして、テンプレートを構成すれば容易に可能である。
このようにして、テンプレート生成装置1601は、テンプレート候補蓄積手段1605から、テンプレート選択手段1606を用いてパターン3701、パターン3702、パターン3704、パターン3705、パターン3709を抽出し、抽出した各パターンをそれぞれテンプレートに変換し、変換された各テンプレートを出力データ1608として出力する。
以上に示す手順により、テンプレート生成装置1601はテンプレートを生成することができる。
(第2の実施の形態)
上述のとおり、本発明ではテンプレートの再帰的な適用によるデータ圧縮、すなわち、テンプレートを適用し、そのテンプレートを新たな頂点として表現することにより、再帰的にデータ圧縮を行っている。このことを考慮すると、テンプレートはそのテンプレート内の頂点がテンプレート外の頂点との間で保有される参照情報を接続情報として保持するが、その接続情報の種類および数はもとの相互参照関係データの頂点が有している参照情報の種類および数(木構造の頂点であれば、親参照1つ、子参照1つ、前兄弟参照1つ、次兄弟参照1つ)を超えないことが望ましい。
また、テンプレートは接続情報の種類および数が多くなるほど、それを用いた置換による圧縮の効率が悪化するため、テンプレートはできるだけ接続情報が少なくなるように設けられていることが望ましい。
そこで、本実施の形態では、次のようにして、できるだけ接続情報が少なくなるようして、テンプレートを生成している。すなわち、データ圧縮の対象として入力される相互参照関係データ(入力データ)が根付木構造を有するときに、テンプレート生成装置において、入力データからテンプレート候補を検出する際に、入力データのある頂点を根頂点として、その頂点が有する子孫頂点で形成される部分木構造を抽出すべきテンプレート候補のパターン情報に設定している。
このようにして生成されたテンプレートは、テンプレート外部と相互に接続している頂点が根頂点のみとなる根付木構造になるため、再圧縮を行ったときにテンプレートをひとつの頂点とみなしても、テンプレートの接続情報の種類および数が、もとの入力データにおける各頂点が有する参照情報の種類および数を越えることはない。しかも、テンプレート内の根頂点のみがテンプレートの外部と相互に接続しているため、入力データを再圧縮する際、入力データの木構造で最も深い位置にある頂点(葉頂点)から順にテンプレートに置換していくと、頂点として表現されたテンプレートが必ずそのテンプレートを適用した箇所の上位の頂点よりも深い位置の頂点(葉頂点)となる。そのため、テンプレート候補検出手段1602において検出されたテンプレート候補をすべてテンプレートとして利用したときは、最終的に入力データを1つの頂点で表現することが可能となる。
図16はテンプレート候補検出手段1602における動作手順を示すフローチャートである。テンプレート候補検出手段1602は根付木構造を有する入力データを入力し、テンプレート候補として、その入力データの根頂点から数えて最も浅い位置にある葉頂点と同一の深さを有する頂点すべてを含む最小木構造の部分参照情報を検出する。
その葉頂点と同一の深さを有する頂点のうち、子孫頂点を有する頂点があるときは、その頂点を根頂点とし、その頂点が有する子孫頂点で形成される根付木構造の部分参照情報をテンプレート候補検出手段に再度入力することにより、別途テンプレート候補を検出する。
ここで、例えば、図17に示す相互参照関係データ2008からテンプレート候補を検出するとする。幅優先探索を行って最初に遭遇する葉頂点は頂点2006である。テンプレート候補検出手段1602は、根頂点2001から頂点2006の深さまでに存在する頂点群で形成される部分参照情報、すなわち、頂点2001、頂点2002、頂点2006、頂点2007で形成される根付木構造の部分参照情報をテンプレート候補として抽出し、テンプレート候補蓄積手段1605に蓄積する。
頂点2002は根頂点2001から頂点2006と同一の深さに存在し、子孫頂点を有する頂点である。この場合は、頂点2002を根頂点として、これとその子孫頂点とで形成される部分参照情報、すなわち、頂点2002、頂点2003、頂点2004、頂点2005で形成される根付木構造を有する部分参照情報を引数として、テンプレート候補検出手段1602を再帰的に呼び出す。その結果、得られるテンプレート候補は、図18、図19に示す第1のテンプレート候補2009、第2のテンプレート候補2010のようになる。
本実施の形態では、相互参照関係データ2008の根頂点から数えて最も浅い位置にある葉頂点を基準にしてテンプレート候補を抽出しているが、深さ優先探索で最初に遭遇する葉頂点を基準にしてその葉頂点より浅いか同じ深さにある頂点すべてを含む最小木構造の部分参照情報をテンプレート候補として検出しても良い。また、根頂点から数えた深さを予め設定しておき、その設定された深さにある頂点をすべて含む最小木構造の部分参照情報をテンプレート候補にしても良い。
また、相互参照関係データ2008の木構造のうち最も深い位置にある頂点を基準の頂点とし、その頂点と同一の深さにある頂点すべてを含む最小木構造の部分参照情報をテンプレート候補として検出しても良い。この場合、テンプレート候補として検出された部分参照情報は、その部分参照情報の根頂点のみで表し、その根頂点の子孫頂点は基準となる頂点の探索範囲としない。また、最も深い位置にある頂点から数えた深さ(設定深さ)を予め設定しておき、最も深い位置に存在する頂点から、その設定深さの中に存在している頂点までに存在する頂点で形成される根付木構造の部分参照情報群をそれぞれテンプレート候補としてもよい。
データ圧縮システムの実施の形態
図20は、本発明の実施の形態に係るデータ圧縮システム2601のシステム構成図である。データ圧縮システム2601はテンプレート生成装置2602と、データ圧縮装置2603とを有し、第1の入力データ2605と第2の入力データ2604を入力してデータ圧縮を行う。そして、データ圧縮システム2601では、テンプレートにより置換されたテンプレート適用済みの相互参照関係データを第1の出力データ2606として出力し、入力する相互参照関係データから分離された複数の頂点を有する頂点群のデータを第2の出力データ2607として出力する。
テンプレート生成装置2602は、型と値をそれぞれ有する複数の頂点と、各頂点間の参照関係が根付木構造を有する参照情報とを有する相互参照関係データを第2の入力データ2604として入力する。この第2の入力データ2604は、データ圧縮装置2603における圧縮に用いられるテンプレートの生成用として入力する。
また、テンプレート生成装置2602は、第2の入力データの各頂点間の参照情報に含まれる根付木構造の部分参照情報から、その部分参照情報をパターンに設定したときの出現頻度およびテンプレートにしたときの圧縮効果に応じた部分参照情報をテンプレートとして出力する。つまり、テンプレート生成装置2602は、出現頻度が高く、しかも圧縮効果が高い部分参照情報をテンプレートとして出力する。
そして、例えば、図2(b)に示したデータ構造21を入力し、これを圧縮する際、第2の入力データ2604として、データ構造21から分離手段107によって分離された相互参照関係データ2008がテンプレート生成装置2602に入力される。ここで、出現頻度が高く圧縮効果が高い部分参照情報が、図19に示した第2のテンプレート候補2010であったとすると、テンプレート生成装置2602は第2のテンプレート候補2010をテンプレートとして出力する。出力されたテンプレートはデータ圧縮装置2603のテンプレート蓄積手段102に蓄積される。このテンプレートは、他の相互参照関係データが入力された際に共通に利用されることになる。
データ圧縮装置2603は、第1の入力データ2605として、第2の入力データ2604と同様の構造を有するデータを入力する。このデータ圧縮装置2603は、図1に示すデータ圧縮装置101と同様の構成を有している。すなわち、データ圧縮装置2603は、分離手段107と、テンプレート蓄積手段102と、一致箇所検出手段103と、テンプレート置換手段111および切り替え手段104を有している。テンプレート蓄積手段102はテンプレート生成装置2602から出力されるテンプレートを蓄積している。一致箇所検出手段103は入力される相互参照関係データから、木構造の葉頂点を含む一致箇所のみを検出し、テンプレートへ置換する再置換を行う。
一致箇所検出手段103は、図17に示す相互参照関係データ2008に含まれる頂点のうち、テンプレート蓄積手段102に蓄積されているテンプレートに対応する一致箇所を検出する。この際、一致箇所検出手段103は、葉頂点を含むテンプレートの一致箇所のみを検出したとすると、頂点2002、頂点2003、頂点2004および頂点2005で形成される部分参照情報を一致箇所として検出する。
テンプレート置換手段111は、検出された一致箇所にテンプレートを適用する。この際、テンプレートを新たな頂点として表現し、テンプレート適用済みの相互参照関係データを出力する。また、切り替え手段104により出力が選択されると、テンプレート適用済みの相互参照関係データが第1の出力データ2606として出力される。切り替え手段104により再圧縮が選択されると、再圧縮を行うため、そのテンプレート適用済みの相互参照関係データが再帰的に一致箇所検出手段103に入力され、再度テンプレートの適用が行われる。第1の出力データ2606は、図8に示した相互参照関係データ1401のようになる。
このようにデータ圧縮システム2601を構成することにより、与えられた入力データの圧縮に適したテンプレートを動的に生成し、その生成されたテンプレートを用いて、入力データを圧縮することができる。そのため、データ圧縮システム2601によると圧縮効果の高いデータ圧縮を実現できる。
本発明の実施の形態に係るデータ圧縮装置の構成を示すブロック図である。 (a)はXML文書の一例を示す図、(b)は(a)のXML文書のデータ構造を示す図である。 圧縮前の相互参照関係データを示す図である。 頂点の集合のテーブルを示す図である。 (a)はテンプレートの構成を示すブロック図、(b)はテンプレート実体の構成を示すブロック図である。 図5(b)に示すテンプレートを用いて圧縮した相互参照関係データを示す図である。 図5(b)に示すテンプレートを用いてさらに圧縮した相互参照関係データを示す図である。 図5(b)に示すテンプレートを用いてさらに圧縮した別の相互参照関係データを示す図である。 本発明の実施の形態に係るデータ復元装置の構成を示すブロック図である。 本発明の実施の形態に係るテンプレート生成装置の構成を示すブロック図である。 (a)は一致箇所情報の構成を示すブロック図、(b)は図6に対応する一致箇所情報の構成を示すブロック図である、(c)は別の一致箇所情報の構成を示すブロック図である。 一致箇所検出手順の一例を示す図である。 置換手順の一例を示す図である。 復元手順の一例を示す図である。 別のデータ圧縮装置の構成を示すブロック図である。 テンプレート候補検出手段の動作手順の一例を示すフローチャートである。 圧縮前の別の相互参照関係データを示す図である。 第1のテンプレート候補の構成を示す図である。 第2のテンプレート候補の構成を示す図である。 データ圧縮システムのシステム構成図である。 別のXML文書を示す図である。 さらに別のXML文書を示す図である。 図21のXML文書から分離された相互参照関係データを示す図である。 図22のXML文書から分離された相互参照関係データを示す図である。 テンプレート生成の第1の手順を示すフローチャートである。 テンプレート生成の第2の手順を示すフローチャートである。 テンプレート生成の第3の手順を示すフローチャートである。 テンプレート候補の構成を示すブロック図である。 テンプレート候補蓄積手段の内部構成を示す図である。 テンプレート候補蓄積手段の別の内部構成を示す図である。 テンプレート候補蓄積手段のさらに別の内部構成を示す図である。 XML文書の別の一例を示す図である。 図32のXML文書のデータ構造を示す図である。 (a)は図33のXML文書から分離された相互参照関係データを示す図、(b)は頂点の集合のテーブルを示す図である。 図32のXML文書から分離されたデータ構造を示す図である。 図32のXML文書から分離された要素名情報を示す図である。 図32のXML文書から分離されたテキスト情報を示す図である。
符号の説明
20,30,40…XML文書
21,31…データ構造
101,2104,2603…データ圧縮装置
102,1502…テンプレート蓄積手段
103,2107…一致箇所検出手段
107,2106…分離手段
108,2105…入力データ
109,2110,2606…第1の出力データ
110,2111,2607…第2の出力データ
111,1603,2108…テンプレート置換手段
1000,1201…相互参照関係データ
1301,1401,2008…相互参照関係データ
1001,1002,1003,1004…頂点
1005,1006,1007…頂点
900…テーブル、1105…テンプレート
1109,1202,1302…テンプレート実体
1501…データ復元装置、1504…合成手段
1505…テンプレート展開手段
1506,2605…第1の入力データ
1507,2604…第2の入力データ
1508…出力データ
1601,2602…テンプレート生成装置
1602…テンプレート候補検出手段
1604…入力データ取得手段
1605…テンプレート候補蓄積手段
1606…テンプレート選択手段
1607…入力データ群、1608…出力データ
2009…第1のテンプレート候補
2010…第2のテンプレート候補
2101…第1の圧縮手段
2109…テンプレート蓄積手段
2601…データ圧縮システム
2900,3000…相互参照関係データ
3401…テンプレート候補

Claims (13)

  1. 型と値をそれぞれ有する複数の頂点と、該頂点間の参照情報とを有する入力データを、前記頂点間の参照情報を有する相互参照関係データと、前記型と値を有する複数の頂点からなる頂点群とに分離し、その分離された前記頂点群のデータを出力する分離手段と、
    特定のパターンを有する前記頂点間の参照情報を、前記頂点間の参照情報が共有可能なテンプレートとして蓄積するテンプレート蓄積手段と、
    前記分離手段により分離された前記相互参照関係データから、前記テンプレート蓄積手段に蓄積されているテンプレートに対応する一致箇所を検出するテンプレート一致箇所検出手段と、
    前記分離手段により分離された前記相互参照関係データのうち、前記テンプレート一致箇所検出手段により検出された前記一致箇所を前記テンプレートで置換する際に、該テンプレートによる置換箇所を示す指示付頂点を設けて、前記テンプレートによる再置換を可能にするテンプレート置換手段とを有し、
    前記頂点間の参照情報を参照可能な状態で、前記テンプレート置換手段により置換された相互参照関係データを出力する出力手段とを有することを特徴とするデータ圧縮装置。
  2. 前記テンプレート一致箇所検出手段は、前記入力データが根付木構造を有するときは前記テンプレート蓄積手段に蓄積されているテンプレートに対応する一致箇所を検出するときに、葉頂点を含む一致箇所のみを検出することを特徴とする請求項1記載のデータ圧縮装置。
  3. 特定のパターンを有する複数の頂点間の参照情報を、前記頂点間の参照情報が共有可能なテンプレートとして蓄積するテンプレート蓄積手段と、
    前記頂点間の参照情報を有して、前記テンプレートにより置換された圧縮済みの相互参照関係データを入力し、該圧縮済みの相互参照関係データを前記テンプレートを用いて展開し、その展開した相互参照関係データが、前記テンプレートで置換された頂点間の参照情報を有するときに、前記展開した相互参照関係データを前記テンプレートを用いて展開する再展開を繰り返し行い、前記圧縮済みの相互参照関係データから圧縮前の相互参照関係データを復元する展開手段と、
    前記複数の頂点からなる頂点群のデータを入力し、該頂点群のデータと、前記展開手段により復元された前記圧縮前の相互参照関係データとを合成して、該合成されたデータを出力する合成手段とを有することを特徴とするデータ復元装置。
  4. 前記展開手段は、前記相互参照関係データの中で参照すべき頂点が指定されたときに、該参照すべき頂点の参照に必要な前記テンプレートを用いて前記再展開を行うことを特徴とする請求項3記載のデータ復元装置。
  5. 複数の頂点と、該頂点間の参照情報とを有する根付木構造のデータを入力し、入力データを取得する入力データ取得手段と、
    該手段により取得される前記入力データにおける前記各頂点間の参照情報に含まれる根付木構造の参照情報をテンプレート候補として検出するテンプレート候補検出手段と、
    該手段により取得される前記テンプレート候補と、前記入力データにおける前記テンプレート候補の出現頻度を記憶するテンプレート候補蓄積手段と、
    該手段に蓄積されている前記テンプレート候補により、前記入力データを置換するテンプレート置換手段と、
    前記テンプレート候補蓄積手段に記憶されているテンプレート候補から、前記出現頻度をもとに前記テンプレート候補を選択し、その選択されたテンプレート候補を出力するテンプレート選択手段とを有することを特徴とするテンプレート生成装置。
  6. 前記テンプレート選択手段は、前記テンプレート候補を選択する際に、前記テンプレート置換手段が前記入力データの置換に用いた前記テンプレート候補のみを選択することを特徴とする請求項5記載のテンプレート生成装置。
  7. 前記テンプレート候補検出手段は、前記入力データにおける根頂点から最も浅い葉頂点と同じ深さの頂点すべてを含む最小木構造を有する部分の参照情報を前記テンプレート候補として検出することを特徴とする請求項5または6記載のテンプレート生成装置。
  8. 前記入力データにおける前記テンプレート候補検出手段により検出されなかった箇所の根付木構造を有する部分の参照情報が、前記テンプレート候補検出手段に入力されることを特徴とする請求項5〜7のいずれか一項記載のテンプレート生成装置。
  9. 前記テンプレート候補検出手段は、前記入力データの根頂点から深さ優先探索で最初に遭遇する葉頂点を起点とし、該起点となる頂点と、その親頂点とを有する根付木構造部分の参照情報を前記テンプレート候補とし、前記参照情報に頂点を一つ追加して得られる根付木構造部分の参照情報を新たなテンプレート候補とする拡張候補検出を繰り返すことを特徴とする請求項5または6記載のテンプレート生成装置。
  10. 前記テンプレート候補検出手段は、前記新たなテンプレート候補の検出を頂点数によって制限することを特徴とする請求項9記載のテンプレート生成装置。
  11. 前記テンプレート候補検出手段は、前記根付木構造部分の参照情報の高さにより、前記新たなテンプレート候補の検出を制限することを特徴とする請求項9記載のテンプレート生成装置。
  12. 前記テンプレート候補検出手段が、前記拡張候補検出を行う際に、前記起点となる頂点との深さの差が所定値よりも大きい新頂点への拡張は行わず、前記新頂点を起点として、前記拡張候補検出を繰り返すことを特徴とする請求項9〜11のいずれか一項記載のテンプレート生成装置。
  13. 型と値をそれぞれ有する複数の頂点と、該頂点間の参照情報とを有する第1の入力データを圧縮するデータ圧縮システムであって、
    前記第1の入力データと同様の構造を有する第2の入力データから抽出した前記頂点間の参照情報を有する相互参照関係データを入力し、前記頂点間の参照情報が共有可能なテンプレートを生成する請求項5〜12のいずれか一項記載のテンプレート生成装置と、
    前記テンプレート生成装置によって生成された前記テンプレートを蓄積するテンプレート蓄積手段を備えた請求項1または2記載のデータ圧縮装置と、
    前記頂点間の参照情報を参照可能な状態で、前記テンプレート蓄積手段に蓄積されたテンプレートにより置換された相互参照関係データを第1の出力データとして出力し、前記第1の入力データから分離された前記型と値をそれぞれ有する複数の頂点からなる頂点群のデータを第2の出力データとして出力する出力手段とを有することを特徴とするデータ圧縮システム。
JP2004005842A 2004-01-13 2004-01-13 データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム Expired - Fee Related JP4394964B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004005842A JP4394964B2 (ja) 2004-01-13 2004-01-13 データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004005842A JP4394964B2 (ja) 2004-01-13 2004-01-13 データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム

Publications (2)

Publication Number Publication Date
JP2005202507A true JP2005202507A (ja) 2005-07-28
JP4394964B2 JP4394964B2 (ja) 2010-01-06

Family

ID=34820028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004005842A Expired - Fee Related JP4394964B2 (ja) 2004-01-13 2004-01-13 データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム

Country Status (1)

Country Link
JP (1) JP4394964B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008219264A (ja) * 2007-03-01 2008-09-18 Ntt Communications Kk データ圧縮転送装置、データ圧縮転送システム、データ圧縮転送方法、およびデータ圧縮転送プログラム
JP2010258787A (ja) * 2009-04-24 2010-11-11 Mitsubishi Electric Corp シグナリング圧縮装置、シグナリング伸長装置およびシグナリング圧縮伸長装置
JP2011512730A (ja) * 2008-01-31 2011-04-21 マイクロソフト コーポレーション テンプレート式のパラメータを使用したメッセージの符号化および復号化
US20220138411A1 (en) * 2020-11-03 2022-05-05 Nuance Communications, Inc. Communication System and Method

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008219264A (ja) * 2007-03-01 2008-09-18 Ntt Communications Kk データ圧縮転送装置、データ圧縮転送システム、データ圧縮転送方法、およびデータ圧縮転送プログラム
JP2011512730A (ja) * 2008-01-31 2011-04-21 マイクロソフト コーポレーション テンプレート式のパラメータを使用したメッセージの符号化および復号化
JP2010258787A (ja) * 2009-04-24 2010-11-11 Mitsubishi Electric Corp シグナリング圧縮装置、シグナリング伸長装置およびシグナリング圧縮伸長装置
US20220138411A1 (en) * 2020-11-03 2022-05-05 Nuance Communications, Inc. Communication System and Method
US11956315B2 (en) 2020-11-03 2024-04-09 Microsoft Technology Licensing, Llc Communication system and method

Also Published As

Publication number Publication date
JP4394964B2 (ja) 2010-01-06

Similar Documents

Publication Publication Date Title
Gueniche et al. Compact prediction tree: A lossless model for accurate sequence prediction
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US20100332476A1 (en) Web graph compression through scalable pattern mining
JP4261299B2 (ja) データ圧縮装置、データ復元装置およびデータ管理装置
WO2009107315A1 (ja) 頻出変化パターン抽出装置
JP2008299867A (ja) データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法
JP2004530188A (ja) 構造化された文書を圧縮/伸長する方法
CN104040899B (zh) 生成符号的代码字母表以便为与程序一起使用的字生成代码字
Ferragina et al. On the bit-complexity of Lempel--Ziv compression
Gasieniec et al. Real-Time Traversal in Grammar-Based Compressed Files.
JP6467937B2 (ja) 文書処理プログラム、情報処理装置および文書処理方法
Navarro et al. On stricter reachable repetitiveness measures
JP6072922B2 (ja) 文字列検索装置、文字列検索方法および文字列検索プログラム
US8694521B2 (en) Modeling and searching patterns in a data sequence
Golovach et al. Model-checking for first-order logic with disjoint paths predicates in proper minor-closed graph classes
JP4394964B2 (ja) データ圧縮装置、データ復元装置、テンプレート生成装置およびデータ圧縮システム
Brisaboa et al. Using Compressed Suffix-Arrays for a compact representation of temporal-graphs
Van et al. An expanded prefix tree-based mining algorithm for sequential pattern maintenance with deletions
KR101793005B1 (ko) 정적 및 동적 데이터베이스에 대한 점진적 하이 유틸리티 패턴 마이닝 방법
JP5696132B2 (ja) 部分的木構造に応じた適応型再構成装置及び方法及びプログラム
Böttcher et al. Incremental updates on compressed XML
Gasieniec et al. Time/space efficient compressed pattern matching
Gori et al. The RW2 algorithm for exact graph matching
KR101594345B1 (ko) 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체
JP5871842B2 (ja) 情報可視化装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090403

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: 20091013

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: 20091016

R150 Certificate of patent or registration of utility model

Ref document number: 4394964

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees