JP2004342029A - 構造化文書圧縮方法及び装置 - Google Patents

構造化文書圧縮方法及び装置 Download PDF

Info

Publication number
JP2004342029A
JP2004342029A JP2003140625A JP2003140625A JP2004342029A JP 2004342029 A JP2004342029 A JP 2004342029A JP 2003140625 A JP2003140625 A JP 2003140625A JP 2003140625 A JP2003140625 A JP 2003140625A JP 2004342029 A JP2004342029 A JP 2004342029A
Authority
JP
Japan
Prior art keywords
node
grammar rule
document
encoded
data
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
JP2003140625A
Other languages
English (en)
Inventor
Kojiro Nakayama
弘二郎 中山
Ryoichi Ueda
良一 植田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003140625A priority Critical patent/JP2004342029A/ja
Publication of JP2004342029A publication Critical patent/JP2004342029A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】構造化文書の利点である可読性を保ったまま圧縮を行ない構造化文書のデータ量を削減する。また、構造化文書内に含まれるデータへアクセスする際の処理の負荷を軽減する。
【解決手段】同じ文法規則に従う複数の構造化文書を圧縮することを前提とし、文法規則と構造化文書に含まれる情報をノードIDに関連付けて符号化する。符号化された構造化文書から文法規則で規定された情報を取り除くことで、符号化コンテンツを生成する。ノードIDを参照することで、符号化コンテンツに含まれるデータへ容易にアクセスすることが可能となる。
高い圧縮率で構造化文書の圧縮を行なうことができる。また、データアクセスする際の処理の負荷を軽減することができる。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、XML等の構造化文書の圧縮、解凍に係わる技術及び圧縮されたデータへのアクセスに係わる技術に関する。
【0002】
【従来の技術】
近年、構造化文書が注目を集めており、様々なデータのフォーマットとして構造化文書が用いられている。特にW3C(World Wide Web Consortium)が勧告しているマークアップ言語の一つであるXML(Extensible Markup Language)は、各種プログラムの設定ファイルなど階層構造を持ったデータのフォーマットとして使用されるほか、インターネット上のデータ交換の際の標準的なデータフォーマットとしても使用されている。
【0003】
XML文書には、構造化データを容易に表現できる、テキストデータであるため可読性があるといった利点がある。しかしその一方で、XML文書には処理効率が悪いという欠点がある。XML文書は冗長な記述が多いためデータ量が大きくなる。また、XML文書内のデータにアクセスするには、XML文書の構造解析を行ない、木構造からデータを検索しなくてはならい。この処理は負荷が大きく処理に時間がかかる。
【0004】
XML文書のデータ量が大きいと、通信時の通信コストや保存に必要な記憶容量が増大する。そこで、XML文書を圧縮しデータ量を小さくすることが考えられる。データ圧縮には様々な方法が知られているが、Huffman符号、LZ77など、あらゆる種類のデータを圧縮できるユニバーサル圧縮が広く用いられている。XML文書に対しても、これらのユニバーサル圧縮を適用することで高い圧縮効果が期待できる。しかし、これらの方法によって圧縮したデータはバイナリデータとなるため、XML文書の利点である可読性が失われてしまう。また、圧縮結果に含まれるデータにアクセスするには、解凍処理を行ない圧縮前のXML文書に復元した上で、さらにXML文書の構造解析、木構造の検索を行なわなければならず、XML文書の欠点であるデータアクセスの負荷がより増大することになる。
【0005】
ユニバーサル圧縮を用いずとも、XML文書の持つ冗長性を排除することで、テキストデータのままXML文書の圧縮を行なうことが可能である。たとえば、類似性を持つ複数のXML文書を扱うことを前提とすると、各XML文書から、全てのXML文書に共通している情報を取り除くことでデータ量を削減することが可能である。
【0006】
特開2002−163248(特許文献1)では、複数のXML文書が同じ構造を持つことを前提とし、各XML文書を構造とコンテンツに分離する。ここで、XML文書の構造とは、XML文書に含まれる要素ノードの名前と属性ノードの名前のことをいう。また、XML文書のコンテンツとは、XML文書に含まれるテキストノードの値と属性ノードの値のことをいう。圧縮結果としては、ひとつの構造と複数のコンテンツを出力する。解凍処理の際には、構造とコンテンツとから圧縮前のXML文書を復元するが、構造は複数のXML文書において共通のものを使用することができるためひとつだけ用意しておけばよい。上述したように、特許文献1ではXML文書の構造部分は複数の文書において共通でありコンテンツは個々の文書ごとに異なるものとする。特許文献1において構造とはXML文書に含まれる要素ノードの名前と属性ノードの名前のことをいい、コンテンツとはテキストノードの値と属性ノードの値のことをいう。従って、もしテキストノードの値や属性ノードの値が圧縮対象の複数のXML文書で共通であったとしても、これらは構造ではなくコンテンツとして扱われるため圧縮効果がない。また逆に、要素名や属性名が文書毎に異なる場合には、構造が一定でなくなるため特許文献1の方法を適用することはできない。
【0007】
特開2001−217720(特許文献2)では、複数のXML文書が同じ文法規則に従うことを前提としている。ここで、文法規則とは、XML文書に出現するノードの名前、値、出現回数、出現順序等を規定した規則のことをいい、DTD(Document Type Definition)などを用いて記述される。特許文献2では、複数のXML文書が同じ文法規則に従っていれば個々のXML文書の構造が同じである必要はない。圧縮の際には、圧縮対象のXML文書を構造とコンテンツに分離した後、文法規則から生成したプッシュダウンオートマトンを用いて構造を番号列に符号化する。解凍処理の際は、文法規則から生成したプッシュダウンオートマトンを用いて番号列から構造部分を復号化し、コンテンツと組み合わせることで圧縮前のXML文書を復元する。ここで、特許文献2は同じ文法規則に従うことを前提としているので、要素名や属性名が文書毎に異なっていても、それらのノードが全て文法規則で規定されていれば、この方法を適用することができる。ただし、文法規則で規定されていないノードがXML文書に出現する場合は、この方法を適用することができない。例えば、コメントノードは通常文法規則では規定されておらず、この方法はコメントノードを含むXML文書に対して適用することができない。また、特許文献2には、文法規則によっては圧縮効率が悪くなる、属性ノードを含むXML文書に適用する場合は属性ノードを要素ノードに変換しなくてはならないなどといった問題点もある。
また、特許文献1、特許文献2の共通の問題点として、圧縮結果内に含まれるデータにアクセスする処理の負荷が大きいといった点が挙げられる。特許文献1、特許文献2とも、圧縮結果として出力されるコンテンツはテキストデータであるため可読性がある。しかし、コンテンツは単にテキストノードの値、属性ノードの値を連結したものであり、これだけではそれらのデータが何を意味するのかは分からない。解凍処理によってXML文書を復元し、そのデータがXML文書のどの部分に記述されているのかを見て初めてデータの意味を知ることができる。よって、これらの方法で圧縮を行なった場合、圧縮結果に含まれるデータにアクセスするには、事前に解凍処理によってXML文書を復元しなくてはならず、XML文書の欠点のひとつであるデータアクセスの負荷は軽減されない。
【0008】
【特許文献1】
特開2002−163248(第4−5頁、第0015−0026段落)
【特許文献2】
特開2001−217720(第4−5頁、第0010−0022段落)
(ヨーロッパ特許庁 EP1122655A2)
【0009】
【発明が解決しようとする課題】
本発明の目的は、上記に挙げた従来技術の問題点を解決する新しい構造化文書の圧縮方法を提供することにある。すなわち第1の目的は、圧縮効率が高く、かつ様々なXML文書、例えば文法規則で規定されていないノードが出現するようなXML文書、に適用可能な圧縮方法を提供することにある。また、本発明の第2の目的は、圧縮された結果内に含まれるデータへ高速にアクセスする方法を提供することにある。
【0010】
【課題を解決するための手段】
本発明における圧縮プログラムは、文法規則ID付与部と文法規則符号化部と構造化文書ID付与部と構造化文書符号化部と分離部とを備える。文法規則ID付与部は、文法規則の規定するノードに対して各ノードを一意に識別することのできるノードIDを付与する。文法規則符号化部は、文法規則の規定する各ノードに関する情報を前記文法規則ID付与部によって付与されたノードIDと関連付け、符号化文法規則を生成する。構造化文書ID付与部は、前記文法規則ID付与部によって付与されたノードIDを参照しながら、圧縮対象の構造化文書を構成するノードに対して、各ノードを一意に識別することのできるノードIDを付与する。文法規則で規定されたノードと構造化文書を構成するノードが一対一に対応する場合には、構造化文書を構成するノードのIDと文法規則の規定するノードのIDが同一になるため、構造化文書ID付与における処理は不要である。構造化文書符号化部は、圧縮対象の構造化文書を構成する各ノードに関する情報を前記構造化文書ID付与部によって付与されたIDと関連付け、符号化文書を生成する。分離部は符号化文書の内容から、符号化文法規則に記述されている内容を取り除くことで符号化コンテンツを生成する。
【0011】
符号化コンテンツは、圧縮対象の構造化文書から文法規則で規定された情報を取り除いたものであり、圧縮対象の構造化文書よりもデータ量が小さくなることが期待できる。よって、本発明をデータ通信時のデータ圧縮に用いる場合、符号化文法規則を一度だけ送信し、その後は文書毎に符号化コンテンツだけを送信すればよい。これにより通信コストを削減することができる。また、本発明をデータ保存時のデータ圧縮に用いる場合、符号化文法規則をひとつだけ保存し、その後は文書毎に符号化コンテンツだけを保存すればよい。これにより、保存に必要な記憶容量を削減することができる。
【0012】
また、本発明の解凍プログラムは、結合部と復号化部とを備える。結合部は、符号化文法規則と符号化コンテンツを結合し符号化文書を生成する。復号化部は、符号化文書を復号化し圧縮前の構造化文書を復元する。
【0013】
また、本発明の変換プログラムは変換部とバイナリデータ生成部とを備える。変換部は、あらかじめ用意された構造化文書のノードとバイナリデータの変数との対応関係を示したノード対応表を、上述した圧縮プログラム内の構造化文書ID付与部によって付与されたノードIDとバイナリデータの変数名との対応関係を示したノードID対応表に変換する。バイナリデータ生成部は、ノードID対応表と上述した圧縮プログラムによって生成される符号化コンテンツから、バイナリデータを生成する。符号化コンテンツでは、各ノードの情報がノードIDに関連付けられている。よって、ノードID対応表を参照することで符号化コンテンツからバイナリデータへ変換することが可能になる。この方法を用いるとことで、符号化コンテンツを圧縮前の構造化文書に復元する必要がなくなり、データアクセスの処理を軽減することができる。
【0014】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。各実施形態では、圧縮対象の構造化文書としてXML文書を用いる場合を例にとり説明する。
〔1〕第1実施形態の説明
以下では、本発明の第1実施形態について説明する。図1は本実施形態における圧縮プログラム及び解凍プログラムを、データ通信時のデータ圧縮に用いる場合のシステム全体の構成を示す図である。図1では、ネットワーク103を介してデータが送信側計算機101から受信側計算機102に送信される。この場合、圧縮プログラム115はデータの送信側計算機101内に置かれ、解凍プログラム120はデータの受信側計算機102内に置かれる。圧縮プログラム115は、文法規則ID付与部121と、文法規則符号化部122と、構造化文書ID付与部123と、構造化文書符号化部124と、分離部125とを備える。なお後述するように、圧縮プログラム115は必ずしも構造化文書ID付与部123を備えていなくてもよい。本実施形態における圧縮処理は、記憶装置114内に格納されている圧縮プログラム115が、メモリ113に読み込まれ、CPU112によって実行されることにより実現される。圧縮されたデータは、送信側計算機101内の通信装置111によってネットワーク上に送信され、受信側計算機102内の通信装置116によって受信される。解凍プログラム120は、結合部126と、復号化部127とを備える。本実施形態における解凍処理は、記憶装置119内に格納されている解凍プログラム120が、メモリ118に読み込まれ、CPU117によって実行されることにより実現される。
【0015】
図2は、本実施形態における圧縮プログラム及び解凍プログラムを、データ保存時のデータ圧縮に用いる場合のシステム全体の構成を示す図である。この場合、圧縮プログラム115及び解凍プログラム120はXML文書処理システム201内に置かれる。圧縮プログラム115によって圧縮されたデータは、データベース214に保存される。データベース214に保存されたデータは、解凍プログラム120によって解凍され、圧縮前のXML文書に復元される。圧縮プログラム115と解凍プログラム120の内部構造は、図1に示したものと同じである。本実施形態における圧縮処理と解凍処理は、記憶装置213内に格納されている圧縮プログラム115と解凍プログラム120が、メモリ212に読み込まれ、CPU211によって実行されることにより実現される。
【0016】
次に、本実施形態における圧縮プログラム115について説明する。図3は、本実施形態における圧縮プログラム115の機能構成を示す図である。図4は、本実施形態における圧縮処理の手順を示す図である。圧縮プログラム115は、圧縮対象であるXML文書302と、文法規則301とを入力とし、符号化文法規則303と符号化コンテンツ305を出力する。符号化文法規則303は、同じ文法規則に従うXML文書圧縮時には共通のものを使用することができる。よって同じ文法規則に従うXML文書圧縮時には、符号化文法規則303の出力に関する処理のステップ402、403、404は最初の一度だけ行なえばよく、すでに符号化文法規則303が存在する場合はこれらの処理を省略することができる。符号化文法規則303が存在しない場合、まず文法規則301が文法規則ID付与部121に入力され、文法規則301が規定するノードに対しIDが付与される(ステップ402)。次に、文法規則符号化部122において後述する符号化ルールに従い文法規則301が符号化され(ステップ403)、符号化文法規則303が出力される(ステップ404)。ステップ401において、すでに文法規則が存在している場合は以上の処理を省略し既存の符号化文法規則を入力し(ステップ405)、これを使用する。次に、圧縮対象であるXML文書302が構造化文書ID付与部123に入力され、XML文書を構成するノードに対しIDが付与される(ステップ406)。後述するように文法規則301によって規定されるノードとXML文書302を構成するノードが一対一に対応する場合は、ID付与処理のステップ406を省略することができる。ID付与処理のステップ406を省略する場合、圧縮プログラム115は、構造化文書ID付与部123を備えていなくてもよい。次に、構造化文書符号化部124において後述する符号化ルールに従い、XML文書が符号化され(ステップ407)、符号化文書304が生成される。次に、分離部125において符号化文書304からコンテンツが分離され(ステップ408)、符号化コンテンツ305が出力される(ステップ409)。本実施形態では、文法規則の規定するノードへのID付与(ステップ402)が完了した後に文法規則の符号化(ステップ403)を行なっているが、ID付与(ステップ402)の処理を行ないながら同時に文法規則の符号化(ステップ403)を行なってもよい。同様に、本実施形態ではXML文書を構成するノードへのID付与(ステップ406)が完了した後にXML文書の符号化(ステップ407)を行なっているが、ID付与の処理(ステップ406)を行いながら同時にXML文書の符号化(ステップ407)を行なってもよい。
【0017】
後述するように、符号化文法規則303と符号化コンテンツ305を解凍プログラム120に入力することで圧縮前のXML文書302を復元することができる。同じ文法規則に従うXML文書の解凍処理の際には、符号化文法規則303は共通のものを使用できため、本実施形態を図1に示すようなデータ通信時のデータ圧縮に用いる場合、送信側計算機101から受信側計算機102に符号化文法規則303を一度だけ送信し、その後は文書毎に符号化コンテンツ305だけを送信すればよい。符号化コンテンツ305は、後述するようにXML文書302よりもデータ量が小さくなることが期待できる。よって本実施形態を用いることにより通信時間を短縮することができ、結果として通信コストを削減することができる。あらかじめ送信側計算機101と受信側計算機102で文法規則301を共有している場合は、符号化文法規則303を送信せずに、受信側計算機102内で符号化文法規則303を生成してもよい。また、本実施形態を図2に示すようなデータ保存時のデータ圧縮に用いる場合、符号化文法規則303をひとつだけ保存し、その後は文書毎に符号化コンテンツ305だけを保存すればよい。これにより、保存に必要な記憶容量を削減することができる。
【0018】
以下では、図5に示すXML文書を例に取り、本実施形態の各部における処理の詳細を説明する。図5の各行の先頭に記述してある数字は行番号を示すものであり、実際のXML文書には含まれない。以下で示す文法規則、符号化文法規則、符号化文書、符号化コンテンツでも同様に行番号を挿入してある。また、図5に示すXML文書では、読みやすくするために空白スペース、改行を挿入してあるが、実際のXML文書には空白スペース、改行は含まれないものとする。
一般にXML文書は複数のノードから構成される。ノードには様々な種類があり、例えばW3C(World Wide Web Consortium)が勧告しているXML文書処理のためのAPIであるDOM(Document Object Model)の構造モデルでは、Document、Document Fragment、Document Type、Entity Reference、Element、Attr、Processing Instruction、Comment、Text、CDATA Section、Entity、Notationの12種類のノードタイプを定義している。本実施形態の説明では、代表的なノードタイプであるElement、Attr、Text、Commentについて扱うが、他のノードタイプについても同様の方法で処理することが可能である。以下では、ノードタイプがElementのノードを要素ノード、 Attrのノードを属性ノード、Textのノードをテキストノード、Commentのノードをコメントノードと書く。
【0019】
図6は、図5に示すXML文書を構成する各ノードのタイプ、名前、値及び各ノード間の親子関係を示した図である。図6において、符号601、602、603、604、605、606、607、608、609はそれぞれひとつのノードを示しており、各ノードを示す表の1行目にはノードタイプ、2行目にはノードの名前、3行目にはノードの値が示してある。なお本発明の各実施形態では、ノードタイプを記述するのに、要素ノードは“−”、属性ノードは“@”、テキストノードは“#”、コメントノードは“!”といった省略記号を用いる。
【0020】
図6において、線で結ばれたノードには親子関係があることを示す。2つのノードが線で結ばれている場合、上側に位置するノードが親ノードであり、下側に位置するノードが子ノードである。DOMの構造モデルでは属性ノードは要素ノードの子ノードに含まれないとされるが、ここでは属性ノードも要素ノードの子ノードに含めるものとする。同じ親ノードを持つノードの集合を兄弟ノードという。図6において、ノードの水平方向の位置が、兄弟ノード内におけるXML文書での出現順を示す。すなわち兄弟ノードにおいて左側に位置するノードの方がXML文書での出現順が先であり、右側に位置するノードの方が、出現順が後であることを示す。また、要素ノードは値を持たないものとし、テキストノード、コメントノードは名前を持たないものとする。また、XML文書の最上位に位置する要素ノードをルート要素という。図6において、ルート要素であるOrder要素601は、その子ノードとして属性ノードであるxmlns属性602、コメントノード603、要素ノードであるName要素604、要素ノードであるItem要素605、606を持つ。Name要素604は値がJohnであるテキストノード607を子要素として持つ。Item要素605は値がpenであるテキストノード608を子要素として持ち、Item要素606は値がnoteであるテキストノード609を子要素として持つ。図6において、Order要素601、Name要素604、Item要素605、606を示す表の3行目に斜線が引いてあるのは、これらのノードが値を持たないことを表わす。また、コメントノード603、テキストノード607、608、609を示す表の2行目に斜線が引いてあるのは、これらのノードが名前を持たないことを表わす。
【0021】
次に、本実施形態における文法規則301について説明する。本実施形態において、文法規則とはXML文書を構成するノードのタイプ、名前、値、ノード間の親子関係を規定した規則のことをいう。以下では、文法規則301の記述方法としてDTDを用いた場合を例にとり各実施形態の詳細を説明する。文法規則301は必ずしもDTDを用いて記述する必要はなく、XML文書に出現するノードのタイプ、名前、値、ノード間の親子関係を規定していればどのような記述方法を用いてもよい。
【0022】
以下では、文法規則301の例として図7に示すDTDを用いて、本実施形態の各部における処理の詳細を説明する。図7に示す文法規則の1行目の符号701は、XML文書においてOrder要素が子ノードとしてName要素をひとつだけ持つことを表す。符号702は、Order要素がName要素の後に子ノードとしてTel要素を0個または1個持つことを表わす。記号“?”がこのノードの出現回数が0回または1回であることを示す。符号703は、Order要素が、Tel要素が存在するならばTel要素の後に、Tel要素が存在しないのならばName要素の後に子ノードとしてItem要素を1個以上持つことを表わす。記号“+”がこのノードの出現回数が1回以上であることを示す。図7の2行目は、Name要素が子ノードとしてテキストノードを持つことを表わす。本文法規則では、Name要素の子ノードであるテキストノードがどのような値を持つかについては規定しておらず、任意のテキストデータを値として持つことができることを表わす。同様に、図7の3行目、4行目は、それぞれTel要素、Item要素が子ノードとしてテキストノードを持ち、該テキストノードは任意のテキストデータを値として持つことができる。図7の5行目は、Order要素がxmlns属性を持ち、xmlns属性の値が必ず固定値“http://sample.com/order”であることを表す。図5に示すXML文書は、図7に示す文法規則従って記述されたものである。
【0023】
図8は、図7に示す文法規則が規定している各ノードのタイプ、名前、値及び各ノード間の関係を示した図である。図8において、テキストノード806、807、808を示す表の3行目が空欄になっているのは、これらのノードの値が文法規則では規定されておらず、XML文書において任意の値を取ることができることを示している。
【0024】
上述したように、XML文書は複数のノードから構成され、各ノードは、タイプ、名前、値の情報を持つ。XML文書を構成する各ノードの情報と、各ノードの親子関係、各ノードの出現順序がわかれば、XML文書を一意に特定することができる。本発明の各実施形態において、XML文書の構造とは、XML文書を構成する各ノードの情報のうち、文法規則で規定されているもののことをいう。また、XML文書のコンテンツとは、XML文書を構成する各ノードの情報のうち、文法規則で規定されていないもののことをいう。よって、図6に示した符号を用いると図5に示すXML文書において、構造とは601のノードのタイプ“−”、名前“Order”と、602のノードのタイプ“@”、名前“xmlns”、値“http://sample.com/order”と、604のノードのタイプ“−”、名前“Name”と、605、606のノードのタイプ“−”、名前“Item”と、607、608、609のノードのタイプ“#”とのことをいう。また、図5に示すXML文書においてコンテンツとは、603のノードのタイプ“!”、値“comment”と、607のノードの値“John”と、608のノードの値“pen”と、609のノードの値“note”のことをいう。
【0025】
次に、本実施形態におけるノードID付与の処理について説明する。本実施形態では、文法規則ID付与部121と構造化文書ID付与部123によって、ID付与の処理が行なわれる。本実施形態におけるノードIDには、ローカルIDとグローバルIDの2種類がある。以下では、ローカルIDのことをLID、グローバルIDのことをGIDと書く。LIDとは、任意のノードを兄弟ノード内から一意に識別できるような値をいう。GIDとは、ID付与の対象ノード内から任意のノードを一意に識別できるような値をいう。本実施形態では、ルート要素のLID、GIDを共に“1”とし、その他のノードについては親ノードのGID、区切り文字“/”、該ノードのLIDを連結した値をGIDとする。このような方法でGIDを付与することにより、ID付与の対象ノード内のノードを一意に識別できるだけでなく、GIDによってノード間の関係を記述することも可能となる。例えば、GIDが“1”であるノードとGIDが“1/3”であるノードがあった場合には、前者が後者の親ノードであることが分かる。ID付与の対象ノード内のノードを一意に識別でき、ノード間の親子関係も記述できる方法であれば、他の方法を用いてGIDを付与してもよい。
【0026】
次に、文法規則ID付与部121におけるID付与の処理について説明する。文法規則ID付与部121は、文法規則301が規定する各ノードに対しLIDをひとつずつ付与する。すなわち、図8に示す全てのノード801、802、803、804、805、806、807、808に対してそれぞれひとつのLIDを付与する。本実施形態では、LIDとして兄弟ノード内における出現順に従って1から順に数字を付与していく。兄弟ノード内で一意となる値であれば、他の方法を用いてLIDを付与してもよい。Tel要素804はXML文書に出現しない可能性もあるが、文法規則には記述されているためひとつのLIDを付与する。また、Item要素805はXML文書において複数回出現する可能性があるが、文法規則301における記述が1回なのでひとつのLIDを付与する。各ノードにLIDが付与されれば、各ノードのGIDも一意に決まる。図9は、文法規則ID付与部121によって図7に示す文法規則が規定するノードにIDを付与した結果を示す。図9に示した各ノードを示す表は、1行目がノードタイプを示し、2行目がノードの名前を示し、3行目がノードの値を示し、4行目がLIDを示し、5行目がGIDを示す。ルート要素であるOrder要素901は、LID、GIDともに“1”となる。xmlns属性902、Name要素903、Tel要素904、Item要素905の4つのノードは、Order要素901を親ノードに持つ兄弟ノードである。そこで、兄弟ノード内での出現順に従ってxmlns属性に“1”、Name要素に“2”、Tel要素に“3”、Item要素に“4”のLIDを付与する。GIDは、親要素であるOrder要素のGID“1”と、各ノードのLIDを区切り文字“/”を用いて連結した値となる。よってGIDは、xmlns属性が“1/1”、Name要素が“1/2”、Tel要素が“1/3”、Item要素が“1/4”となる。Name要素903は子要素としてテキストノード906をひとつだけ持つ。よってテキストノード906にはLIDとして“1”、GIDとして“1/2/1”を付与する。同様にして、テキストノード907には、LIDとして“1”、GIDとして“1/3/1”を付与し、テキストノード908には、LIDとして“1”、GIDとして“1/4/1”を付与する。
【0027】
次に、本実施形態におけるノードの符号化ルールについて説明する。以下で述べる符号化ルールは、文法規則符号化部122、構造化文書符号化部124、分離部125で適用される。本符号化では、符号化対象のノードに含まれる全てのノードに対し、XML文書における出現順に従い順番に符号化を行なう。各ノードの符号化では、ノードのタイプ、名前、値をノードのGIDに関連付けて記述する。本実施形態では、ノードのGID、ノードタイプ、ノードのタイプ、区切り文字“=”、ノードの値を連結し一行に記述することで、ひとつのノードの符号化を行なうものとする。ノード間の区切りは改行コードにより識別する。ノードのタイプ、名前、値をノードのGIDに関連付けて記述するのであれば、他の方法を用いて符号化を行なってもよい。符号化された結果のデータにおいて、ノードのタイプ、名前、値の全てが記述されている必要はない。例えば、要素ノードは値を持たないため、要素ノードを符号化する場合は、ノードの値は省略する。各部における符号化処理の詳細については後述する。このように、ノードに関する情報を省略して記述することを認めることで、後述するようにXML文書を文法規則とコンテンツに分離することが可能になる。また、以下では圧縮効率を高めるため、ノードの値を省略する場合は区切り文字“=”も一緒に省略するものとする。ノードの値を省略する場合は、区切り文字“=”を省略してもノードの各情報の区切りが曖昧になることはない。
【0028】
以下では、文法規則符号化部122における符号化処理について説明する。文法規則符号化部122は、文法規則301が規定するノードの情報に対して、上述した符号化ルールを用いて符号化を行なう。符号化の際に用いるGIDは、文法規則ID付与部121によって付与された値を用いる。図10は、文法規則符号化部122によって図7に示す文法規則を符号化した結果である。図10の1行目は、GIDが“1”であるノードが要素ノードであり、このノードの名前がOrderであることを表す。GIDが“1”であることから、このノードがルート要素であることが分かる。要素ノードは値を持たないため、“=”記号及びノードの値は省略してある。図10の2行目は、GIDが“1/1”であるノードが属性ノードであり、このノードの名前が“xmlns”であり値が“http://sample.com/order”であることを表す。図10の3行目は、GIDが“1/2”であるノードが要素ノードであり、ノードの名前が“Name”であることを表す。要素ノードは値を持たないため、“=”記号及びノードの値は省略してある。図10の4行目は、GIDが“1/2/1”であるノードがテキストノードであることを表わす。テキストノードは名前を持たないため、ノードの名前は省略してある。また、図7に示す文法規則では、このテキストノードの値については規定してないため、ノードの値及び区切り文字の“=”は省略してある。同様に、図10の5行目は、GIDが1/3“であるノードが要素ノードであり、ノードの名前が“Tel”であることを表し、図10の6行目はGIDが“1/3/1”であるノードがテキストノードであることを表わす。図10の7行目は、GIDが“1/4”であるノードが要素ノードであり、ノードの名前が“Item”であることを表し、図10の8行目はGIDが“1/4/1”であるノードがテキストノードであることを表わす。
【0029】
次に、構造化文書ID付与部123におけるノードID付与の処理について説明する。構造化文書ID付与部123は、XML文書302を構成する全てのノードに対して上述したLIDを付与する。すなわち、図6に示す全てのノード601、602、603、604、605、606、607、608、609に対してLIDを付与する。図11は、構造化文書ID付与部におけるLID付与の手順を示した図である。各ノードにLIDを付与する際は、まずID付与の対象ノードが文法規則ID付与部121によってすでにLIDが付与されているかが判断される(ステップ1102)。対象ノードについて文法規則301で何も規定されていない場合は、文法規則ID付与部121によってIDは付与されていない。この場合、構造化文書ID付与部123が兄弟ノード内における一意性が保たれるようなLIDを新たに付与する(ステップ1103)。ここでは、文法規則ID付与部121及び構造化文書ID付与部123によって、まだ兄弟ノード内のLIDとして付与されていない数字であり、かつ一番小さい数字を該ノードのLIDとして付与するものとする。LIDの一意性が保たれる方法であれば、他の方法によってLIDを付与してもよい。ID付与の対象ノードに対して、文法規則ID付与部121がすでにLIDを付与している場合、構造化文書ID付与部123は文法規則ID付与部121によって付与されたLIDを使って対象ノードにLIDを付与する。ただし、XML文書302内の複数のノードが、文法規則301のひとつの記述に対応している可能性がある。よって、文法規則ID付与部121によって付与されたLIDをそのまま対象ノードのLIDとしてしまうと、兄弟ノード内におけるLIDの一意性が失われてしまう可能性がある。そこで、ステップ1102において、対象ノードに対して文法規則ID付与部121がすでにLIDを付与している場合、そのLIDが構造化文書ID付与部123によって兄弟ノード内の他のノードにすでに付与されていないかが判断される(ステップ1104)。ステップ1104において、文法規則ID付与部121によって付与されたLIDが、兄弟ノード内の他のノードに付与されていない場合、文法規則ID付与部121によって付与されたLIDをそのまま対象ノードのLIDとして付与する(ステップ1105)。ステップ1104において、文法規則ID付与部121によって付与されたLIDが、兄弟ノード内の他のノードにすでに付与されている場合は、兄弟ノード内でのLIDの一意性を保つため、文法規則ID付与部121によって付与されたLIDに枝番を振ったものを対象ノードのLIDとする(ステップ1106)。ここでは、文法規則ID付与部121によって付与されたLIDの後に区切り文字“_”を付け、その後に枝番として1から順に数字を付けるものとする。LIDの一意性が保たれ、文法規則ID付与部121によって付与されたGIDとの対応が分かる方法であれば、他の方法を用いてLIDを付与してもよい。上述した方法を用いて、XML文書302を構成する全てのノードに対してLIDを付与する。各ノードのGIDは、LIDから容易に計算することができる。文法規則301で規定されたノードと、XML文書302を構成するノードが一対一に対応する場合、すなわち文法規則301で規定された各ノードがXML文書302において必ず一回ずつ出現し、かつ文法規則301に記述されていないノードがXML文書302に出現しない場合は、構造化文書ID付与部123によって付与されるIDは、文法規則ID付与部121で付与されるIDと同じものになる。よって、このような場合は構造化文書ID付与部123によるID付与の処理を省略してもよい。
【0030】
図12は、構造化文書ID付与部123によって図5に示すXML文書を構成するノードに対しIDを付与した結果を示す。構造化文書ID付与部123は、XML文書302を読み込み、出現順に従ってXML文書を構成する各ノードにIDを付与する。図5に示すXML文書では、最初にOrder要素が出現する。そこで、Order要素が図10に示す符号化文法規則で規定されているかが判断される(ステップ1102)。図5に示すXML文書において、Order要素はルート要素であることから、GIDには記号“/”が含まれないことがわかる。そこで、図10に示す符号化文法規則から、GIDに記号“/”が含まれず、ノードのタイプが“−”であり、名前が“Order”であるノードの記述を探す。図10に示す符号化文法規則において、以上の条件を満たすノードの記述として、1行目の“1−Order”がある。よって、Order要素は文法規則ID付与部121によって、GID“1”、LID“1”が付与されたことがわかる。次に、Order要素の兄弟ノードにおいてLID“1”がすでに付与されていないかが判断される(ステップ1104)。Order要素の兄弟ノードにおいて、LID“1”はまだ付与されていないため、LID“1”をそのままOrder要素のLIDとして付与する(ステップ1105)。Order要素のGIDは“1”になる。図5のXML文書では、Order要素の次にxmlns属性が出現する。xmlns属性は、Order要素の子ノードであることから、GIDが“1/n”となることがわかる。ここで、記号“n”は任意の数字を表わす。そこで、図10の符号化文法規則から、GIDが“1/n”であり、ノードタイプが“@”であり、名前が“xmlns”であるノードの記述を探す。図10に示す符号化文法規則において、以上の条件を満たすノードの記述として、2行目の“1/1@xmlns=http://sample.com/order”がある。よって、xmlns属性は文法規則ID付与部121によって、GID“1/1”、LID“1”が付与されたことがわかる。xmlns属性の兄弟ノードにおいて、LID“1”はまだ付与されていないため、LID“1”をそのままxmlns属性のLIDとして付与する(ステップ1105)。xmlns属性のGIDは“1/1”になる。図5のXML文書では、次にコメントノードが出現する。このコメントノードは、Order要素の子ノードであることから、GIDが“1/n”となることがわかる。しかし、図10の符号化文法規則には、GIDが“1/n”であり、ノードタイプが“!”であるノードは存在しない。よって、該ノードは文法規則ID付与部121によってノードIDが付与されていないことがわかる。そこで、構造化文書ID付与部123は新たにLIDとして“5”、GIDとして“1/5”を付与する(ステップ1103)。同様にして、図6に示した符号を用いると、604のノードにLID“2”、GID“1/2”を、607のノードにLID“1”、GID“1/2/1”を、605のノードにLID“4”、GID“1/4”を、608のノードにLID“1”、GID“1/4/1”を付与する。 符号606のItem要素については、GIDが“1/n”であり、ノードの名前が“Item”であることから、文法規則ID付与部121によって、GID“1/4”、LID“4”が付与されたことがわかる。しかし、LID“4”はすでに兄弟ノードである605のノードに付与してしまっているため、枝番を付けたLID“4_1”を606のノードのLIDとして付与する。606のノードのGIDは“1/4_1”となる。609のノードにはLID“1”、GID“1/4_1/1”を付与する。
【0031】
次に、構造化文書符号化部124におけるXML文書の符号化の処理について説明する。構造化文書符号化部124は、圧縮対象XML文書302を構成する全てのノードに対し、上述した符号化ルールを用いて符号化を行ない、符号化文書304を出力する。符号化の際に用いるGIDは、構造化文書ID付与部123によって付与されたGIDを用いる。ただし、構造化文書ID付与部123におけるID付与処理を省略した場合は、文法規則ID付与化部121よって付与されたGIDを用いる。図13は、構造化文書符号化部124によって図5に示すXML文書を符号化した結果である。図13の3行目は、GIDが“1/5”であるノードがコメントノードであり、その値が“comment”であることを示す。コメントノードは名前を持たないため、ノードの名前は省略しノードタイプを表わす“!”記号の直後に“=”記号及びノートの値が記述してある。
【0032】
符号化文書304には、XML文書302を構成する全てのノードについて、そのタイプ、種類、名前が記述されている。また、GIDの値を参照することで、これらのノードの親子関係を決めることができる。また、各ノードの符号化は、XML文書での出現順に従って行なわれているため、XML文書での出現順は符号化文書での出現順と同じになる。よって、構造化文書符号化部124における符号化の際に、符号化対象であるXML文書302の情報は損失しておらず、符号化前のXML文書302と符号化文書304は一対一に対応する。よって、符号化文書304から圧縮前のXML文書302を復元することが可能である。
【0033】
次に、分離部125における分離処理について説明する。分離部125では、符号化文書304と符号化文法規則303を入力とし、符号化文書304に記述されているノードの情報から、符号化文法規則303に記述されているノードの情報を取り除くことで符号化コンテンツ305を生成する。分離部125は、符号化文書304に記述されている各ノードに対し、出現順に分離処理行なう。図14は、各ノードに対する分離処理の手順を示した図である。各ノードの分離処理では、まず符号化文法規則303に、分離対象のノードと同じGIDを持つノードの記述があるかどうかが判断される(ステップ1401)。この際、分離対象のノードのGIDに枝番が付いている場合は、枝番を取り除いた値を用いて、符号化文法規則303に記述があるかどうかが判断される。符号化文法規則303に何も記述されていない場合、符号化文書304に記述された該ノードに関する情報はすべてコンテンツであることがわかる。よって符号文書に記述された内容を何も省略せず、そのまま符号化コンテンツ305に出力する(ステップ1402)。ステップ1401において、このノードの情報が符号化文法規則303に記述されている場合、符号化文法規則303に記述されている情報が構造であり、符号化文法規則303に記述されていない情報がコンテンツである。出力する符号化コンテンツには、構造に含まれる情報を省略して記述する(ステップ1404)。コンテンツに、処理対象のノードのタイプ、値、コンテンツのいずれも含まれない場合でも、XML文書内に対象ノードが存在することを示すため、GIDは省略せずに符号化コンテンツに出力する(ステップ1406)。また、本実施形態では圧縮効率を高めるため、コンテンツに、処理対象のノードのタイプ、値、コンテンツのいずれも含まれず、かつ対象ノードが子ノードを持つ場合に限り、GIDを省略し、符号化コンテンツには何も出力しない(ステップ1407)。これは、対象ノードが子ノードを持つ場合、そのノードの存在は自明であるためである。この処理は任意であり、行なわなくてもよい。
【0034】
図15は、図13に示す符号化文書から図10に示す符号化文法規則に記述されている情報を取り除くことで生成した符号化コンテンツである。図13の1行目は、GIDが“1”であるノードが要素ノードであり、名前が“Order”であることを表わす。これらの情報は、図10の符号化文法規則の1行目にも記述されている。よって、このノードが要素ノードであることを表わす“−”記号と、名前を表わす“Order”の文字を省略する。また、Order要素は子ノードを持つためGIDの記述も省略する。よって、Order要素に関する情報は符号化コンテンツ305には記述しない(ステップ1407)。図13の2行目は、GIDが“1/1”であるノードが要素ノードであり、名前が“xmlms”で値が“http://sample.com/order”であることを表わす。これらの情報は、図10の符号化文法規則の2行目にも記述されている。よって、該ノードが属性ノードであることを表わす“@”記号、名前が“xmlns”、値を表わす“http://sample.com”を省略する。xmlns属性は子ノードを持たないため、GIDを省略することはできない。よって符号化コンテンツには、xmlns属性が存在することを示すためGID“1/1”のみを記述する(ステップ1406)。図13の3行目に示したコメントノードに関する情報は、図10の符号化文法規則には記述されていない。よって図13の3行目に記述された情報“1/5!=comment”は何も省略せずに、そのまま符号化コンテンツ1515に記述する(ステップ1402)。以下同様にして、図13の各行について図10の符号化文法規則に記述されている情報を取り除いていく。
【0035】
このようにして生成された符号化コンテンツ305は、後述する解凍プログラム120に入力することで圧縮前のXML文書に復元することができるが、解凍処理の際には符号化文法規則303が必要になる。受信側計算機102内または構造化文書処理システム201内に複数の符号化文法規則303が存在する場合には、復号化対象の符号化コンテンツ305が、どの符号化文法規則303を用いて生成されたものかを明示する必要がある。本実施形態では、符号化文法規則303にIDを付与し、符号化コンテンツには符号化文法規則への参照情報としてこのIDを追加する。図25は、図10に示す符号化文法規則にIDを付与した例を示す図である。ここでは、図10に示す符号化文法規則に対してID“001”を付与するものとする。図25の1行目に記述された“id=001”が、この符号化文法規則のIDが“001”であることを示す。図26は、図15に示す符号化コンテンツに、符号化文法規則への参照情報を追加した例を示す図である。図25の1行目に記述された“ref=001”が、この符号化コンテンツの生成の際に使用した符号化文法規則が、IDが“001”の符号化文法規則であることを示す。符号化コンテンツが、どの符号化文書を使用して生成されたものであるかが分かる方法であれば、他の方法を用いて符号化コンテンツと符号化文法規則の対応関係を示してもよい。本実施形態を図1に示すデータ通信時のデータ圧縮に用いる場合、送信側計算機101から受信側計算機102には、図25に示す符号化文法規則と図26に示す符号化コンテンツを送信する。また、本実施形態を図2に示すようなデータ保存時のデータ圧縮に用いる場合、図25に示す符号化文法規則と図26に示す符号化コンテンツを保存する。
【0036】
次に、本実施形態における解凍プログラム120について説明する。図16は、本実施形態における解凍プログラム120の機能構成を示す図である。図17は、本実施形態における解凍処理の手順を示した図である。解凍プログラム120は、圧縮プログラム115によって出力された符号化文法規則303と符号化コンテンツ305を入力とし、XML文書1602を出力する。解凍プログラム120によって出力されるXML文書1602は、圧縮前のXML文書302と同じ内容になる。解凍処理の際には、まず符号化文法規則303と符号化コンテンツ305が結合部126に入力され、符号化文書1601が生成される(ステップ1701)。符号化文書1601は、圧縮プログラム115内の構造化文書符号化部124によって出力されたものと同じ内容になる。次に、復号化部127において符号化文書1601の復号化が行なわれ(ステップ1702)、XML文書1602が出力される(ステップ1703)。
【0037】
以下では、図15に示す符号化コンテンツと図10に示す符号化文法規則を結合する場合を例にとり、本実施形態の結合部126における結合処理の詳細を説明する。上述したように、受信側計算機102内またはXML文書処理システム201内に複数の符号化文法規則303が存在する場合には、符号化コンテンツ305には符号化文法規則303への参照情報が含まれている。これにより符号化コンテンツ305がどの符号化文法規則303を用いて生成されたものかがわかる。結合部126は、復号化対象の符号化コンテンツ305と、その符号化コンテンツを生成する際に使用した符号化文書303を読み込む。図18は、結合部126における結合処理の手順を示す図である。結合部126は、図15に示す符号化コンテンツを読み込み、1行目から順に結合処理を行なう。結合部126はまず、図15の1行目を読み込む。図15の1行目は、GIDが“1/1”のノードに関する記述だが、GIDが“1/1”のノードが存在するためには、その親ノードであるGIDが“1”のノードが存在しなくてはならない。GIDが“1”のノードはまだ符号化文書1601に出力していないため、GIDが“1/1”のノードをスタックに積み、先にGIDが“1”のノードの結合処理を行なう(ステップ1803)。GIDが“1”のノードに関する情報は、図10の1行目に“1−Order”と記述されており(ステップ1804)、図15には何も記述されていないため、符号化文書には“1−Order”の値を記述する(ステップ1805)。続いて、GIDが“1/1”のノードがスタックに積まれているため、GIDが“1/1”のノードの結合処理を行なう(ステップ1807)。GIDが“1/1”のノードに関する情報は、図10の符号化文法規則の2行目に“1/1@xmlns=http://sample.com/order”と記述されており(ステップ1804)、符号化文書にはこの値を記述する(ステップ1805)。スタックに積まれたノードがなくなったため、結合部126は次に図15の2行目を読み込む。図15の2行目はGIDが“1/5”のノードに関する記述である。GID“1/5”のノードの親ノードであるGID“1”のノードについては、すでに符号化文書1601に出力済みであるため、GID“1/5”のノードの結合処理を行なう(ステップ1801)。GIDが“1/5”のノードに関する情報は、図10の符号化文法規則には記述されていないため(ステップ1804)、符号化コンテンツに記述された“1/5!=comment”をそのまま符号化文書に記述する(ステップ1805)。同様にして、結合部126は符号化コンテンツ305の各行に記述されたノードに対してノードに対して結合処理を行なう。図15の3行目は、GIDが“1/2/1”のノードの情報を表わすが、このノードが存在するためには、GIDが“1/2”であるノードが存在しなくてはならない。GIDが“1/2”のノードに関する情報は、図10の符号化文法規則の3行目に“1/2−Name”と記述されており、符号化文書にはこの値を記述する。続いて、GIDが“1/2/1”のノードに関する情報を符号化文書に記述する。GIDが“1/2/1”のノードに関する情報は、図15の3行目の“1/2/1=John”と図10の4行目の“1/2/1#”とがある。前者はこのノードの値が“John”であることを表わし、後者はこのノードがテキストノードであることを表わす。符号化文書には、これらの情報を足し合わせ、GIDが“1/2/1”のノードがテキストノードであり、値が“John”であることを表わす“1/2/1#=John”という値を記述する。同様にして、GIDが“1/4”のノードに関する情報として“1/4−Item”を、“1/4/1”のノードに関する情報として“1/4/1#=pen”を符号化文書に記述する。GIDが“1/4_1”のノードは、図10の符号化文法規則では枝番のついていないGIDが“1/4”のノードとして記述されている。よって、GIDが“1/4_1”のノードに関する情報として、“1/4_1−Item”を、“1/4_1/1”に関する情報として“1/4_1/1#note”を符号化文書に記述する。このようにして生成した符号化文書は、圧縮プログラム115の構造化文書符号化部124によって生成された符号化文書304と同じ内容になる。
【0038】
次に、復号化部127について説明する。復号化部127は、符号化文書1601を入力とし、XML文書1602を出力する。上述したように、結合部126から出力される符号化文書1602は、圧縮プログラム115の構造化文書符号化部124によって出力される符号化文書304と同じ内容であり、圧縮前のXML文書302と一対一に対応している。よって、符号化文書1311からXML文書1602への復号化は、曖昧さなく行なうことができる。以下では、図13に示す符号化文書から圧縮前のXML文書を復元する場合を例に取り、復号化部127における復号処理の詳細を説明する。復号化部127は、図13に示す符号化文書の各行に記述されたノードの情報を1行目から順に読み込み、XML文書1602を生成する。復号化部127は、まず図13の一行目の“1−Order”を読み込む。“1−Order”という記述から、このノードがルート要素であり、名前が“Order”であることがわかる。よって、メモリ上に“<Order></Order>”というデータを生成する。復号化部127は、次に図13の2行目の“1/1@xmlns=http://sample.com/order”を読み込む。“1/1@xmlns=http://sample.com/order”という記述から、このノードが図13の1行目に記述されたOrder要素の子ノードである属性ノードであり、名前が“xmlns”で、値が“http://sample.com/order”であることがわかる。よって、メモリ上のデータをxml属性が追加されたデータ“<Order xmlns=“http://sample.com./order”></Order>”に更新する。同様にして、図13に示す符号化文書の全ての行について復号化を行なう。このようにして復号化を行なうことで、図5に示す圧縮前のXML文書と同じ内容のXML文書を復元することができる。
【0039】
次に、本実施形態による圧縮の効果について説明する。図5に示すXML文書から空白スペースと改行を取り除いた場合のデータ量は、114バイトである。一方、図25に示す符号化文法規則のデータ量は95バイトであり、図26に示す符号化コンテンツのデータ量は58バイトである。図5に示すXML文書と同程度のデータ量を持ち内容の異なる10個のXML文書を、ネットワークを介して送信する場合について考える。図5の例から、送信するXML文書の平均データ量が114バイトで、符号化文法規則のデータ量が95バイトで、符号化コンテンツの平均データ量が58バイトである仮定する。圧縮を行なわない場合、平均114バイトのXML文書を10個送信するため、総データ量は約1140バイトになる。一方、本実施形態により圧縮を行なった場合、95バイトの符号化文法規則を1個と、平均58バイトの符号化コンテンツを10個送信すればよく、総データ量は、約675バイトとなる。よって圧縮を行なわない場合に比べ約59%にデータ量が削減できることが分かる。
〔2〕第2実施形態の説明
XMLは標準化された技術であり、近年、システム間のデータ通信の際のフォーマットとしてXMLを使うことが増えている。データ通信の際のフォーマットとしてXMLを用いる場合、通常受信側計算機では、受信したXML文書内のデータにアクセスするためXML文書の構造解析を行ない、XML文書の木構造から必要なデータを検索し、受信側計算機に固有のバイナリデータに変換する。本実施形態は、XML文書ではなく、第1実施形態で述べた符号化文法規則303と符号化コンテンツ305を受信した際の、符号化コンテンツからバイナリデータへの変換方法に関するものである。
【0040】
以下では、本発明の第2実施形態について説明する。図19は、本実施形態のシステム全体の構成を示した図である。図19において、送信側計算機101は、第1実施形態で説明したものと同じである。本実施形態における受信側計算機1901の記憶装置1914内には、符号化コンテンツから受信側計算機1901に固有のバイナリデータへの変換を行なう変換プログラム1921が置かれる。圧縮されたデータは、送信側計算機101によってネットワーク上に送信され、受信側計算機1901内の通信装置1911によって受信される。変換プログラム1921は、対応表変換部1931とバイナリデータ生成部1932とを備える。後述するように、変換プログラム1921は、必ずしも対応表変換部1931を備えていなくてもよい。本実施形態における変換処理は、記憶装置1914内に格納されている変換プログラム1921が、メモリ1913に読み込まれ、CPU1912によって実行されることにより実現される。
【0041】
図20は、本実施形態における変換プログラム1921の機能構成を示した図である。図21は、変換プログラム1921における変換処理の手順を示した図である。ノードID対応表が存在しない場合、まずノード対応表2001と符号化文法規則303が対応表変換部1931に入力され、ノード対応表2001がノードID対応表2002へと変換される(ステップ2102)。ノード対応表2001は、XML文書のどのノードの値がバイナリデータ2003のどの変数に格納されるかを示した表であり、あらかじめ受信側計算機1901内に用意しておく。受信側計算機1901内に複数の符号化文法規則303が存在する場合、ノード対応表2001は、対応する符号化文法規則303への参照情報を含めるものとする。ノードID対応表2002は、圧縮前のXML文書が同じ文法規則に従っている場合共通のものを使用することができる。よってノードID対応表2001からノードID対応表2002への変換処理ステップ2102は、最初の一度だけ行なえばよく、すでにノードID対応表2002が存在する場合はこの処理を省略することができる。また、対応表変換部1931によってノードID対応表2002に変換するのではなく、あらかじめノードID対応表2002を用意しておいてもよい。この場合、変換プログラム1921は対応表変換部1931を備えていなくてもよい。ステップ2101においてすでにノードID対応表が存在する場合、ステップ2102の処理を省略し既存のノードID対応表2002を入力し(ステップ2103)、これを使用する。次に、符号化コンテンツ305とノードID対応表2002がバイナリデータ生成部1932へ入力され、バイナリデータ2003が出力される。
【0042】
次に、本実施形態における対応表変換部1931について説明する。以下では、図10に示す符号化文法規則と、図15に示す符号化コンテンツが変換プログラム1921に入力される場合を例にとり変換処理の詳細を説明する。以下では、図22に示すノード対応表を例に取り説明する。図22の符号2201は、このノード対応表が、IDが“001”である符号化文法規則に対応するものであることを示す。図22の1列目では、W3Cが勧告するXML上のノードの位置を特定する記述言語であるXPathを用いてXML文書のノードを指定している。ノード対応表は、XML文書のノードとバイナリデータの変数との対応関係を示していれば、別の方法を用いて記述してもよい。対応表変換部1931は、図10に示す符号化文法規則を参照しながら、図22に示すノード対応表を図23に示すノードID対応表に変換する。図22の1行目は、ルート要素であるOrder要素の子ノードであるName要素の、さらに子ノードであるテキストノードの値が、バイナリデータ2003において“CustomerName”という変数に格納されることを示す。図10に示す符号化文法規則から、ルート要素であるOrder要素の子ノードであるName要素の、さらに子ノードであるテキストノードのGIDは“1/2/1”であることがわかる。よって、図23に示すノードID対応表の1行目には、GID“1/2/1”と変数“CustomerName”が対応していることを記述する。図22の2行目は、ルート要素であるOrder要素の子ノードであるItem要素の、さらに子ノードであるテキストノードの値が、バイナリデータ2003において“OrderItem[]”という変数に格納されることを示す。ここで“[]”記号はOrderItem変数が配列であることを表わす。“/Order/Item/text()”によって表わされるノードは、XML文書において複数回出現する可能性があり、このノードの値はXML文書での出現順に従って配列“OrderItem[]”の要素に順に格納される。図10に示す符号化文法規則から、ルート要素であるOrder要素の子ノードであるItem要素の、さらに子ノードであるテキストノードのGIDは“1/4/1”であることがわかる。よって、ノードID対応表の1行目には、GID“1/4/1”と変数“OrderItem[]”が対応していることを記述する。生成したノードID対応表には、どの符号化文法規則から生成されたものであるか分かるように参照情報を付け加えておく。
【0043】
次に、バイナリデータ生成部1932について説明する。バイナリデータ生成部1932は、符号化コンテンツ305とノードID対応表2002を入力とし、バイナリデータ2003を出力する。符号化コンテンツ305には対応する符号化文法規則303への参照情報が含まれる。バイナリデータ生成部1932は、受信した符号化コンテンツと、その符号化コンテンツと対応する符号化文法規則から生成されたノードID対応表を読み込む。以下では、図15に示す符号化コンテンツと図23に示すノードID対応表を入力とした場合を例にバイナリデータ生成処理の詳細を説明する。図24は、メモリ1913におけるバイナリデータの様子を示した図である。図23に示すノードID対応表の1行目から、GIDが“1/2/1”のノードの値がバイナリデータ2003において変数“CustomerName”に格納されることがわかる。図15に示す符号化コンテンツでは、3行目にGIDが“1/2/1”であるノードの情報が記述されている。符号化コンテンツ305において、各ノードのGIDは各行の先頭に記述されている。よって、符号化コンテンツから該当するノードの情報を検索する処理は簡単に行なうことができる。図15の3行目には、GIDが“1/2/1”のノードの値が“John”であることが記述されている。よって、図24に示すようにバイナリデータの変数“CustomerName”に“John”を格納する。また、図23に示すノードID対応表の2行目から、GIDが“1/4/1”のノードの値がバイナリデータ2003において変数“OrderItem[]”に格納されることがわかる。図15に示す符号化コンテンツでは、4行目にGIDが“1/4/1”であるノードの値が“pen”であることが記述されている。変数“OrderItem[]”は配列であり、まだひとつも値が格納されていない。よって、図24に示すように配列“OrderItem[]”の最初の要素である“OrderItem[0]”に“pen”を格納する。また、5行目にGIDが“1/4_1/1”であるノードの情報が記述されているが、符号化コンテンツにおけるGID“1/4_1/1”は、符号化文法規則におけるGID“1/4/1”に対応する。よって、配列“OrderItem[]”の最初の要素“OrderItem[0]”にはすでに、“John”の値が格納されているため、次の要素である“OrderItem[1]”に“note”を格納する。
【0044】
このように、本実施形態の変換プログラム1921を用いることで、符号化コンテンツ305から圧縮前のXML文書を復元することなしに、受信側計算機に固有のバイナリデータに変換することが可能である。この方法を用いることで、受信側計算機1901において、圧縮前のXML文書への解凍処理、XML文書の構造解析処理を行なう必要がなくなり、データ受信時の処理の負荷を大幅に削減することができる。
【0045】
【発明の効果】
以上に述べたように、本発明の圧縮プログラムを用いることで、XML文書からコンテンツのみを符号化された形で取り出すことができる。これにより、XML文書の情報を損失することなくデータ量を削減することができる。本発明の符号化では、ノードのタイプ、名前、値の情報をノードのIDと関連付けて記述するため、ノードIDを参照することで符号化されたデータを容易に分離、結合することが可能である。これにより、ノードの値がXML文書の構造に含まれる場合、文法規則で記述されていないノードがXML文書に出現する場合など、従来の技術では対応が困難であった場合に対しても、本発明の圧縮プログラムを適用することができる。
【0046】
また、符号化コンテンツに含まれるデータをノードIDと関連付けて記述していることにより、圧縮前のXML文書に復元せずに、符号化コンテンツからバイナリデータへ変換することが可能になる。これにより、データアクセスの処理を軽減することができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態をデータ通信時のデータ圧縮に用いた場合のシステム全体の構成を示す図である。
【図2】本発明の第1実施形態をデータ保存時のデータ圧縮に用いた場合のシステム全体の構成を示す図である。
【図3】圧縮プログラムの機能構成を示す図である。
【図4】圧縮処理の手順を示すフローチャートである。
【図5】圧縮対象のXML文書の例を示す図である。
【図6】図5に示すXML文書を構成するノードに関する情報を示す図である。
【図7】圧縮対象のXML文書が従う文法規則の例を示す図である。
【図8】図7に示す文法規則が規定するノードに関する情報を示す図である。
【図9】図7に示す文法規則の規定するノードに対してIDを付与した結果を示す図である。
【図10】符号化文法規則の例を示す図である。
【図11】XML文書を構成するノードに対してIDを付与する処理の手順を示すフローチャートである。
【図12】図5に示すXML文書を構成するノードに対してIDを付与した結果を示す図である。
【図13】符号化文書の例を示す図である。
【図14】符号化文書から符号化コンテンツを分離する処理の手順を示すフローチャートである。
【図15】符号化コンテンツの例を示す図である。
【図16】圧縮プログラムの機能構成を示す図である。
【図17】解凍処理の手順を示すフローチャートである。
【図18】符号化文法規則と符号化コンテンツを結合する処理の手順を示すフローチャートである。
【図19】本発明の第2実施形態のシステム全体の構成を示す図である。
【図20】変換プログラムの機能構成を示す図である。
【図21】変換処理の手順を示すフローチャートである。
【図22】ノード対応表の例を示す図である。
【図23】ノードID対応表の例を示す図である。
【図24】メモリ内のバイナリデータに値が格納される様子を示した図である。
【図25】符号化文法規則にIDを付与した例を示す図である。
【図26】符号化コンテンツに符号化文法規則への参照情報を追加した例を示す図である。
【符号の説明】
101・・・・・送信側計算機、
102・・・・・受信側計算機、
103・・・・・ネットワーク、
111・・・・・通信装置、
112・・・・・CPU、
113・・・・・メモリ、
114・・・・・記憶装置、
115・・・・・圧縮プログラム、
116・・・・・通信装置、
117・・・・・CPU、
118・・・・・メモリ、
119・・・・・記憶装置、
120・・・・・解凍プログラム、
121・・・・・文法規則ID付与部、
122・・・・・文法規則符号化部、
123・・・・・構造化文書ID付与部、
124・・・・・構造化文書符号化部、
125・・・・・分離部、
126・・・・・結合部、
127・・・・・復号化部、
201・・・・・XML文書処理システム、
211・・・・・CPU、
212・・・・・メモリ、
213・・・・・記憶装置、
214・・・・・データベース、
301・・・・・文法規則、
302・・・・・XML文書、
303・・・・・符号化文法規則、
304・・・・・符号化文書、
305・・・・・符号化コンテンツ、
401〜409・・・圧縮処理ステップ
601・・・・・Order要素ノード、
602・・・・・xmlns属性ノード、
603・・・・・コメントノード、
604・・・・・Name要素ノード、
605、606・・・Item要素ノード、
607、608、609・・・テキストノード、
801・・・・・Order要素ノード、
802・・・・・xmlns属性ノード、
803・・・・・Name要素ノード、
804・・・・・Tel要素ノード、
805・・・・・Item要素ノード、
806、807、808・・・テキストノード、
901・・・・・Order要素ノード、
902・・・・・xmlns属性ノード、
903・・・・・Name要素ノード、
904・・・・・Tel要素ノード、
905・・・・・Item要素ノード、
906、907、908・・・テキストノード、
1101〜1107・・・ID付与処理ステップ、
1201・・・・・Order要素ノード、
1202・・・・・xmlns属性ノード、
1203・・・・・コメントノード、
1204・・・・・Name要素ノード、
1205・・・・・Tel要素ノード、
1206・・・・・Item要素ノード、
1207、1208、1209・・・テキストノード、
1401〜1407・・・分離処理ステップ、
1601・・・・符号化文書、
1602・・・・XML文書、
1701〜1703・・・解凍処理ステップ、
1801〜1808・・・結合処理ステップ、
1901・・・・受信側計算機、
1911・・・・通信装置、
1912・・・・CPU、
1913・・・・メモリ、
1914・・・・記憶装置、
1921・・・・変換プログラム、
1931・・・・対応表変換部、
1932・・・・バイナリデータ生成部、
2001・・・・ノード対応表、
2002・・・・ノードID対応表、
2003・・・・バイナリデータ、
2101〜2104・・・変換処理ステップ、
2201・・・・符号。

Claims (6)

  1. 情報処理システムにおいて扱われる文書構造定義言語で記述された構造化文書において、同じ文法規則に従う複数の前記構造化文書を圧縮する方法であって、前記文法規則の規定するノードに対してノードIDを付与し、前記文法規則の規定する前記ノードに関する情報を文法規則ID付与部によって付与された前記ノードIDと関連付け符号化文法規則を生成し、圧縮対象の前記構造化文書を構成する前記ノードに関する情報を前記文法規則ID付与部によって付与された前記ノードIDと関連付け符号化文書を生成し、前記構造化文書符号化部によって生成された符号化文書から符号化文法規則で規定されていない情報を分離し符号化コンテンツを生成することを特徴とするデータ圧縮方法。
  2. 請求項1において、前記構造化文書を構成する前記ノードと前記符号化文法規則の規定する前記ノードが一対一に対応していない場合には、前記文法規則ID付与部によって付与された前記ノードIDを参照しながら新たに圧縮対象の前記構造化文書を構成する前記ノードに対して前記ノードIDを付与することを特徴とするデータ圧縮方法。
  3. 請求項1または請求項2によって生成された前記符号化コンテンツから圧縮前の前記構造化文書を復元する解凍方法であって、前記符号化コンテンツと前記符号化文法規則とを結合し前記符号化文書を生成し、前記符号化文書を復号化し圧縮前の前記構造化文書を生成することを特徴とするデータ解凍方法。
  4. 請求項1または請求項2によって生成された前記符号化コンテンツからバイナリデータを生成する変換方法であって、前記符号化コンテンツを前記文法規則ID付与部または前記構造化文書ID付与部によって付与された前記ノードIDとバイナリデータにおける変数名との関係を示したノードID対応表を用いてバイナリデータに変換することを特徴とするデータ変換方法。
  5. 請求項4において、前記構造化文書のノードとバイナリデータにおける変数名との対応関係を示したノード対応表から前記ノードID対応表を生成することを特徴とするデータ変換方法。
  6. 同じ文法規則に従う複数の構造化文書を圧縮する装置であって、文法規則の規定するノードに対してノードIDを付与する手段と、前記文法規則の規定する前記ノードに関する情報を前記文法規則ID付与部によって付与された前記ノードIDと関連付け符号化文法規則を生成する手段と、圧縮対象の前記構造化文書を構成する前記ノードに関する情報を前記文法規則ID付与部によって付与された前記ノードIDと前記関連付け符号化文書を生成する手段と、前記構造化文書符号化部によって生成された前記符号化文書から前記符号化文法規則で規定されていない情報を分離する手段とを有することを特徴とするデータ圧縮装置。
JP2003140625A 2003-05-19 2003-05-19 構造化文書圧縮方法及び装置 Pending JP2004342029A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003140625A JP2004342029A (ja) 2003-05-19 2003-05-19 構造化文書圧縮方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003140625A JP2004342029A (ja) 2003-05-19 2003-05-19 構造化文書圧縮方法及び装置

Publications (1)

Publication Number Publication Date
JP2004342029A true JP2004342029A (ja) 2004-12-02

Family

ID=33529306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003140625A Pending JP2004342029A (ja) 2003-05-19 2003-05-19 構造化文書圧縮方法及び装置

Country Status (1)

Country Link
JP (1) JP2004342029A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537895A (ja) * 2006-05-18 2009-10-29 オラクル・インターナショナル・コーポレイション バイナリにエンコードされたxmlデータの効率的な区分的アップデート
CN112214461A (zh) * 2020-10-12 2021-01-12 河南大学 一种遥感元数据的模糊xml压缩方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537895A (ja) * 2006-05-18 2009-10-29 オラクル・インターナショナル・コーポレイション バイナリにエンコードされたxmlデータの効率的な区分的アップデート
CN112214461A (zh) * 2020-10-12 2021-01-12 河南大学 一种遥感元数据的模糊xml压缩方法
CN112214461B (zh) * 2020-10-12 2022-09-30 河南大学 一种遥感元数据的模糊xml压缩方法

Similar Documents

Publication Publication Date Title
KR100424130B1 (ko) 데이터 압축 장치, 데이터베이스 시스템, 데이터 통신시스템, 데이터 압축 방법, 기억 매체 및 프로그램 전송장치
KR100614677B1 (ko) 구조화된 문서를 압축/복원하기 위한 방법
JP4373721B2 (ja) マークアップ言語文書を符号化するための方法およびシステム
JP3272014B2 (ja) 階層構造データ処理情報を含むデータ処理辞書を作成する方法及び装置
US8010889B2 (en) Techniques for efficient loading of binary XML data
US20050120031A1 (en) Structured document encoder, method for encoding structured document and program therefor
US7509574B2 (en) Method and system for reducing delimiters
US8015218B2 (en) Method for compressing/decompressing structure documents
JP5377818B2 (ja) コンパイル済みスキーマに順次アクセスする方法とシステム
CN101346689A (zh) 压缩模式表示对象和用于元数据处理的方法
MXPA02006077A (es) Formato binario para instancias mpg7.
US7500184B2 (en) Determining an acceptance status during document parsing
JP5044943B2 (ja) データ文書の高速符号化方法及びシステム
JP5789236B2 (ja) 構造化文書分析方法、構造化文書分析プログラム、および構造化文書分析システム
US20060184562A1 (en) Method and system for decoding encoded documents
JP4821287B2 (ja) 構造化文書の符号化方法、符号化装置、符号化プログラム、復号装置及び符号化された構造化文書のデータ構造
JP2004342029A (ja) 構造化文書圧縮方法及び装置
US20060212799A1 (en) Method and system for compiling schema
Wei et al. A new and effective approach to GML documents compression
JPH06274311A (ja) データ圧縮装置及びデータ復元装置
Cherukuri et al. XAdap: An Adaptive Huffman Coding on Markup Languages
JPS62214751A (ja) キヤラクタデ−タ圧縮方式
JP2005175926A (ja) 復号装置及び方法