JP2009543243A - 構造化文書の圧縮のための方法と装置 - Google Patents
構造化文書の圧縮のための方法と装置 Download PDFInfo
- Publication number
- JP2009543243A JP2009543243A JP2009518997A JP2009518997A JP2009543243A JP 2009543243 A JP2009543243 A JP 2009543243A JP 2009518997 A JP2009518997 A JP 2009518997A JP 2009518997 A JP2009518997 A JP 2009518997A JP 2009543243 A JP2009543243 A JP 2009543243A
- Authority
- JP
- Japan
- Prior art keywords
- event
- stream
- sequence
- unit code
- byte
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/149—Adaptation of the text data for streaming purposes, e.g. Efficient XML Interchange [EXI] format
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Document Processing Apparatus (AREA)
Abstract
本発明は、それぞれネストされた要素を有するツリー状構造を備える構造化文書(DOC)の圧縮方法に関する。前記構造化要素のそれぞれは、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素(Val)を区切る構造化要素を具備し、前記方法は、前記構造化文書(DOC)を、構造化文書の構造化要素に対応するイベントを有するイベントストリーム(EVST)に変換するステップと、前記イベントストリームで発生する、1つのイベントまたは連続したイベントの少なくとも2度目の発生のシーケンスをエンコードするそれぞれのバイト単位コードを有するバイナリストリーム(BST)を生成することにより、前記イベントストリームをエンコーディングするステップと、を具備する。前記文書のXMLスキーマを使用せずにXML文書を圧縮する本発明のアプリケーション。
Description
本発明は、概してデータを転送,保存,読み出し,および表示するためのコンピュータシステムの分野に関する。さらに詳しくは、あまり知られていない構造を有する構造化文書の圧縮および解凍のための方法およびシステムに関する。
限定はされないが、構造化マルチメディア文書,デジタル画像もしくは画像シーケンスまたはビデオ画像もしくは画像シーケンス,映画またはビデオプログラムを処理,転送,保存,そして読み出すことに、さらに一般的には、データ転送ネットワークにより相互接続されたプロセッサ装置間、またはプロセッサ装置と記憶装置間、またはもし前記文書がデジタル又はビデオ画像を含む場合にはプロセッサ装置とテレビ受像機のような再生装置間の前記文書のいろいろな転送に特にあてはまる。
ますます頻繁に,このような方法で処理されるとともに転送される文書は、構造に組み込まれた複数の異なるデータ型を含むようになっている。構造化文書は、それぞれ型と属性に関連付けられている一連の情報要素であり、関連により主に階層的に相互に連結されている。そのような文書は、汎用マークアップ言語規約(SGML),ハイパーテキストマークアップ言語(HTML),または拡張マークアップ言語(XML)といった、特に文書を構成する多種の情報要素間を識別するために供されるマークアップ言語を使用している。その一方で、"リニア"な文書では、前記文書の内容情報は、レイアウト情報および型情報が入り混じっている。
構造化文書は、文書内の異なる情報要素を分離するための"タグ"と呼ばれるマーカーを有する。SGML,XMLまたはHTMLフォーマットでは、これらのタグは、"<XXXX>"および"</XXXX>"といったフォームをとり、前記第1タグ"XXXX"は、情報要素の開始のマーキングであり、前記第2タグ"</XXXX>"は、前記要素の終わりを示すマーキングである。情報要素は、それ自身が複数の属性および"下位要素"と呼ばれる低レベル情報要素で構成されている。このように、構造化文書は、ツリー状構造または階層構造を呈しており、それぞれのノードは情報要素を表すとともに、前記低レベル情報要素を含む情報要素である高階層レベルのノードと接続されている。そのようなツリー状構造の分岐の最後にあるノードは、情報部分要素に分けられない所定の非構造型のデータを含む情報要素を意味する。
このように、構造化文書は、通常テキスト形式で表される分離マーカーまたはタグを具備する。情報要素または下位要素で定義されている前記タグは、タグにより分離されている他の情報部分要素をそれ自身に含んでもよい。
しかし、XMLのようなマークアップ言語は、冗長な言語であるため、処理を行なうには非効率的であるとともに転送または格納するのにコストがかかる。加えて、多くのソフトウェアアプリケーションでは、構造化文書が非常に大きくなりがちである。特にHTML文書および情景記述,アート,図面,図表などのようなデジタルグラフィカル文書を作成するソフトウェアアプリケーションのケースなどである。グラフィカルアプリケーションで作成された前記文書は、多数の点,線,曲線で記述されたグラフィカルデータを含む。これらのグラフィカル文書やグラフィカルオブジェクトは、二次元ベクターおよびベクター/ラスターグラフィック混合オブジェクトを記述するSVG(Scalable Vector Graphics)のような言語を使用したグラフィカル構造化要素により記述されている。
構造化文書は、デジタルネットワークを通じて格納または転送ことを目的とするので、構造化文書のサイズを減少させる必要性がある。
構造化文書のサイズを減少させるための既知の解決法は、前記文書に対して圧縮処理を行なうことである。この点において、ISO/IEC 15938-1 (MPEG-7 - Moving Picture Expert Group)または、つい最近のISO/IEC 23001-1が、XML構造化文書の符号化(圧縮)およびそのようなバイナリ形式の復号化のための方法およびバイナリーフォーマットを提案している。この規格は、特に1つまたは複数のスキーマで定義された既知の構造を有するマルチメディアのメタデータのような高度に構造化されたデータを処理するために設計された。
しかし、ISO/IEC 15938-1またはISO/IEC 23001-1による前記圧縮方法は、バイト単位ではないバイナリストリームを提供する。このように、ZLIB(圧縮ライブラリ)のような従来の圧縮アルゴリズムは、これらの圧縮方法により提供される前記バイナリストリームをさらに圧縮するのには効果的ではない。
さらに、ISO/IEC 15938-1またはISO/IEC 23001-1による前記圧縮または解凍方法は、圧縮または解凍するために前記文書の構造を定義する効果的なスキーマを必要とする。しかし、そのようなスキーマは、前記符号化または復号化に必ずしも利用可能ではない。
一実施構成では、前記文書の構造を定義するスキーマを使用することなく、構造化文書を符号化および復号化すること可能にする。
一実施構成では、ZLIBのような従来の圧縮アルゴリズムによる更なる処理を可能とするバイト単位のバイナリストリームを提供するための圧縮方法を提供する。
このように、一実施構成は、ツリー状構造を有する構造化文書を圧縮するための圧縮方法を提供する。前記ツリー状構造は、それぞれネストされた構造化要素を具備する。前記構造化要素のそれぞれは、要素の構造を定めるとともに、少なくともひとつの構造化要素または非構造化要素のセットである少なくとも1つの値要素を区切る構造化要素を具備する。
一実施構成によれば、前記方法は、前記構造化文書を、前記構造化文書の構造化要素と対応するイベントを有するイベントストリームに変換するステップと、前記イベントストリームで発生する、1つのイベントまたは連続したイベントの少なくとも2度目の発生のシーケンスをエンコードするそれぞれのバイト単位コードを有するバイナリストリーム(BST)を生成することにより前記イベントストリームをエンコーディングするステップと、を具備する。
一実施構成によれば、前記方法は、圧縮されたバイナリストリームを得るために圧縮アルゴリズムをバイナリストリームに適用するステップを具備する。
一実施構成によれば、前記圧縮アルゴリズムは、ZLIBである。
一実施構成によれば、前記イベントストリーム(EVST)のイベントのための前記エンコーディングステップは、1バイト単位コードを、前記イベントストリームで発生した少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを前記イベントに属性付けるステップと、を具備する。
一実施構成によれば、前記イベントストリームのイベントのための前記エンコーディングステップは、1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、を具備する。
一実施構成によれば、対応テーブルは、前記バイナリストリームのそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとのリンクを確立し、前記対応テーブルは、限定されたサイズである。
一実施構成によれば、前記対応テーブルがフルの場合、最も古いイベントまたはイベントシーケンスのバイト単位コードを、前記新たなイベントまたはイベントシーケンスに属性付けられるように、前記最も古いイベントまたはイベントシーケンスを前記新たなイベントまたはイベントシーケンスと置き換えることで、前記新たなイベントまたはイベントシーケンスが対応テーブルに挿入される。
一実施構成によれば、前記バイト単位コードは、1バイト長である。
本発明の他の実施構成によれば、オリジナル構造化文書は、それぞれネストされた構造化要素を具備し、それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素を区切る構造化要素を具備する、ツリー状構造を有するオリジナル構造化文書の圧縮によるバイナリストリームを解凍する解凍方法を提供する。
一実施構成によれば、前記バイナリストリーム(BST)は、イベントストリーム(EVST)のイベントをエンコーディングする連続したバイト単位コードと、前記構造化文書の構造化要素と対応する前記イベントと、を具備し、前記解凍方法は、バイナリストリームのそれぞれのバイト単位コードに対し、1つのイベントまたは連続したイベントの少なくとも2度目の発生のイベントシーケンスを有する前記イベントストリームを生成することにより、前記バイナリストリーム(BST)をデコーディングするステップと、オリジナル構造化文書(DOC)を提供するために、前記イベントストリームのそれぞれのイベントを構造化要素に変換するステップと、を具備する。
一実施構成によれば、前記解凍方法は、前記バイナリストリームを得るために解凍アルゴリズムを圧縮されたバイナリストリームに適用する先行ステップを有する。
一実施構成では、前記解凍アルゴリズムは、ZLIBである。
一実施構成によれば、前記イベントストリームのイベントのための前記デコーディングステップは、1バイト単位コードを、前記イベントストリームの少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、を具備する。
一実施構成において、前記イベントストリームのイベントのための前記デコーディングステップは、1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、を具備する。
一実施構成において、対応テーブルは、前記バイナリストリームのそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとのリンクを確立し、前記対応テーブルは限定されたサイズである。
一実施構成において、対応テーブルがフルな場合、最も古いイベントまたはイベントシーケンスのバイト単位コードを新たなイベントまたはイベントシーケンスに属性付けるために、新たなイベントまたはイベントシーケンスは、最も古いイベントまたはイベントシーケンスを新たなイベントまたはイベントシーケンスと置き換えることで対応テーブルに挿入される。
一実施構成において、前記バイト単位コードは、1バイト長である。
本発明の他の実施構成において、それぞれネストされた構造化要素を具備し、それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素を区切る構造化要素を具備する、ツリー状構造を有する構造化文書を圧縮するための圧縮装置提供することを特徴とする。一実施構成において、前記圧縮装置は、前記構造化文書を、前記構造化文書の構造化要素に対応するイベントを有するイベントストリームに変換するためのコンバータと、前記イベントストリームで発生する1つのイベントまたは少なくとも2度目の発生の連続したイベントのシーケンスをエンコードする、それぞれのバイト単位コードを有するバイナリストリームを生成することにより、前記イベントストリームをエンコードするためのエンコーダと、を具備する。
一実施構成において、圧縮装置は、圧縮されたバイナリストリームを得るために、圧縮アルゴリズムを前記バイナリストリームに適用するための圧縮モジュールを具備する。
一実施構成において、前記圧縮アルゴリズムは、ZLIBである。
一実施構成において、前記エンコーダは、1バイト単位コードを、前記イベントストリームの少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、により前記イベントストリームのイベントを処理するように設定される。
一実施構成において、前記エンコーダは、1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、により前記イベントストリームのイベントを処理するように設定される。
一実施構成において、対応テーブルは、前記バイナリストリームのそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとの間のリンクを確立し、前記対応テーブルは限定されたサイズである。
一実施構成において、前記エンコーダは、対応テーブルがフルな場合、最も古いイベントまたはイベントシーケンスのバイト単位コードが新たなイベントまたはイベントシーケンスに属性付けられるように、最も古いイベントまたはイベントシーケンスを新しいイベントまたはイベントシーケンスで置き換えることで、新たなイベントまたはイベントシーケンスを対応テーブルに挿入するように設定される。
一実施構成によれば、前記バイト単位コードは、1バイト長である。
本発明の他の実施構成において、前記オリジナル構造化文書は、それぞれネストされた情報要素を具備し、それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素を区切る構造化要素を具備する、ツリー状構造を有するオリジナル構造化文書の圧縮によるバイナリストリームを解凍する解凍装置を提供する。
一実施構成において、前記バイナリストリームは、イベントストリームのイベントをエンコーディングする連続したバイト単位コードを有し、前記構造化文書の構造化要素と対応する前記イベントと、を具備し、前記解凍装置は、バイナリストリームのそれぞれのバイト単位コードに対し、1つのイベントまたは連続したイベントの少なくとも2度目の発生のイベントシーケンスを有する前記イベントストリームを生成することにより、前記バイナリストリームをデコーディングするためのデコーダーと、オリジナル構造化文書を提供するために、前記イベントストリームのそれぞれのイベントを構造化要素に変換するためのコンバータと、を具備する。
一実施構成において、前記解凍装置は、前記バイナリストリームを得るために、解凍アルゴリズムを圧縮されたバイナリストリームに適用するための解凍モジュールを有する。
一実施構成において、解凍アルゴリズムは、ZLIBである。
一実施構成において、前記デコーダーは、1バイト単位コードを、前記イベントストリームの少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、により前記イベントストリームのイベントを処理するように設定される。
一実施構成において、前記デコーダーは、1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、1バイト単位コードを、前記イベントに属性付けるステップと、により前記イベントストリームのイベントを処理するように設定される。
一実施構成において、対応テーブルは、前記バイナリストリームのそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとの間のリンクを確立し、前記対応テーブルは限定されたサイズである。
一実施構成において、前記デコーダーは、対応テーブルがフルな場合、最も古いイベントまたはイベントシーケンスの前記バイト単位コードが新たなイベントまたはイベントシーケンスに属性付けられるように、最も古いイベントまたはイベントシーケンスを新しいイベントまたはイベントシーケンスで置き換えることで、新たなイベントまたはイベントシーケンスを対応テーブルに挿入するように設定される。
本発明のこれらおよび他の利点および機能は、以下の本発明に関する記載により今まで以上に詳しく示される。しかし、以下の添付の図面に限定されるわけではない。
図1は、ヘッダHDおよび主要要素を具備する構造化文書1を図示している。前記主要要素MELは、型識別子Typeと、一連の属性 Att.1, Att.2, ... Attnと、値 Valと、を具備する。前記主要要素MELの前記値は、"主要要素の下位要素"である1つまたは複数の構造化要素4を有してもよく、それぞれ型識別子Typeと、一連の属性 Att.1-Attnと、値 Valと、を具備する。それぞれの要素4の前記値は、それ自身が1つまたは複数の構造化または非構造化部分要素を備えてもよい。前記非構造化要素は、文字列,整数,浮動小数点数などといった既知のフォーマットを有する。それぞれの要素または部分要素は、前記要素の構造を定義する型と関連付けられている。構造化文書の要素のそれぞれの型は、スキーマ(例えばXML言語おけるXMLスキーマ)によって定められる。
構造化文書の構造化要素は、XMLまたはHTMLやSVGなどのXMLにより生成された言語により以下のフォームを有する。
<type att1-name="att1-value" att2-name="att2-value" ...
attn-name ="attb-value">value</type>
attn-name ="attb-value">value</type>
ここで、"<type ...>"は、前記文書内の前記要素の開始を定める開始タグであり、
"type"は、型識別子であり、
"</type>"は、前記文書内の前記要素の終わりを定める終了タグであり、
"atti-name=atti-value"は、前記要素の属性"i"の名前であり、
"value"は、構造化または非構造化部分要素を有する前記要素の値である。
"type"は、型識別子であり、
"</type>"は、前記文書内の前記要素の終わりを定める終了タグであり、
"atti-name=atti-value"は、前記要素の属性"i"の名前であり、
"value"は、構造化または非構造化部分要素を有する前記要素の値である。
図2は、本発明の実施形態における圧縮装置を示している。前記圧縮装置は、圧縮される構造化文書(DOC)を受信するパーサーXSXPと、バイナリエンコーダーBCDと、好適には圧縮されたバイナリストリームBDOCを提供するZLIBのような圧縮モジュールZIPと、を具備する。
前記パーサーは、英数字による文書形式の前記構造化文書(DOC)を分析し、前記文書の構造化要素、すなわち、タグを定義する英数字の文字列、属性、および前記文書を構成する要素の値、を識別するとともに、これらの構造化要素をイベントストリームEVSTに変換する。イベントストリームEVSTの生成は、前記文書DOCの構造化される要素それぞれのための、SAXイベント(SAX: Simple API - Application Program Interface - for XML)のような少なくとも1つのイベントを有する。SAXは、http://www.saxproject.org/. において詳細に定義されている。例えば、XML文書内のXML開始タグまたは終了タグの出現は、SAXイベントである。
前記バイナリエンコーダーBCDは、前記イベントストリームEVSTをバイナリストリーム(BST)に変換する。前記バイナリストリームは、それぞれのイベント若しくは2つまたは3つの連続したイベントのイベントシーケンスのための1バイトコードを有する。前記イベントストリーム内の2つまたは3つの連続したイベントの新たなイベントシーケンスの発生(occurrence)すべてが記録されるとともに、1バイトコードが前記イベントシーケンスに属性付けられる。記録されているイベントシーケンスが他にも発生し前記イベントストリームにおいて検出された場合、前記シーケンスはそれに属性付けられたバイトコードを使用してエンコードされる。
前記バイナリエンコーダーBCDは、シンボルテーブルST1およびシンボルコードマップテーブルSCM1を使用する。これらのテーブルは、コンバータXSXPにより提供されるイベントを含んでいる。これらのテーブルは、テーブルINEVTにより初期化される。前記テーブルINEVTは、コンバータXSXPにより提供される起こりうるイベント、または最も頻繁なイベントを含む。前記テーブルSCM1は、前記テーブルST1内のそれぞれのイベントまたはイベントシーケンスと、1バイトコードとの間の対応を確立する。前記1バイトコードは、イベントまたはイベントシーケンスをエンコードするために前記エンコーダBCDにより使用される。前記バイナリエンコーダーBCDにより実行されるエンコーディング処理の間、前記テーブルST1は、前記エンコーダによりエンコードされた最終イベントまたはイベントシーケンスを有する。
前記バイナリエンコーダーBCDにより提供されるバイナリストリームは、バイト単位である。すなわち、それぞれのバイトまたはバイナリストリームの連続したバイトシーケンスは、整数バイトを使用してエンコードされる前記構造化文書DOCの一部に対応する。したがって、前記バイナリエンコーダーBCDにより提供される前記バイナリストリーム(BST)に、ZLIBのような圧縮アルゴリズムが効果的に適用可能となる。
本発明における一実施形態によると、前記バイナリストリーム(BST)は、圧縮されたバイナリストリームBDOCを提供する圧縮モジュールZIPによりさらに圧縮される。前記モジュールZIPは、ZLIBのような従来の圧縮アルゴリズムを実装する。
図3は、本発明の一実施形態における解凍装置を図示している。前記解凍装置は、バイナリデコーダーBDCDと、圧縮装置に適用された前記文書である構造化文書DOCを提供するコンバータSXXPと、を具備する。
本発明における一実施形態によると、前記解凍装置は、バイナリストリームBDOCに適用される解凍モジュールDZIPを、さらに具備する。前記解凍モジュールDZIPは、実施されているZLIBのような従来の解凍アルゴリズムによるイニシャル解凍処理を行なうとともに、前記デコーダーBDCDにより処理されるバイナリストリームBSTを提供する。
前記バイナリデコーダーBDCDは、解凍装置に適用された前記バイナリストリーム(BST)または、解凍モジュールDZIPにより提供されたバイナリストリーム(BST)をイベントストリームEVSTに変換する。前記コンバータSXXPは、前記バイナリデコーダーBDCDにより提供された前記イベントストリームEVSTを、前記構造化文書(DOC)を構成しているタグに変換する。
前記バイナリデコーダーBDCDは、前記エンコーダBCDで使用された前記テーブルST1およびSCM1と同様のシンボルテーブルST2およびシンボルコードマップテーブルSCM2を使用する。これらのテーブルは、同じテーブルINEVTにより初期化される。前記テーブルINEVTは、コンバータXSXPから提供される、起こりうるイベントまたは最も頻繁なイベントを含む。前記テーブルSCM2は、それぞれのイベントまたは前記テーブルST2のイベントシーケンスと、前記バイナリストリーム(BST)に現れる1バイトコード間との対応を確立する。前記バイナリデコーダーBDCDにより実行されるデコーディング処理の間、前記テーブルST2は、前記デコーダーBDCDにより提供された前記イベントストリームEVSTに現れる最後のイベントまたはイベントシーケンスを有する。
XMLおよびSAXの場合の、SAXイベントを以下の表1にリストする。
要素の開始をリポートするイベントSTART_ELTという一般的な開始要素はない。代わりに、SAX START_ELTイベントは、特定の属性イベントATTR_#attおよび特定のSTART_ELT_#eltイベントに分かれる。従って、無限のATTR_#attイベントおよびSTART_ELT_#eltが、以下の表2にリストされるように仮想的(virtually)にイベントテーブルに属する。
名前空間、要素の名前、属性の名前というXMLの構造的なアイテムネームを格納するために3つの動的辞書(dynamic dictionaries))が使用される。これらの文字列辞書は動的であるとともにエンコーディング処理の間にADD_NS,ADD_ENAMEおよびADD-ANAMEの特別イベントの助けを得て成長する。初期設定では、これらの辞書は空に初期化されている。
現在分かっているイベントは、表1に記載されている。すべてのSAXイベントは、対応するSAXイベントコールバックにより定められる。3つの特別なイベントであるADD_NS,ADD_ENAMEおよびADD_ANAMEは、名前空間,要素の名前または、属性の名前を対応する辞書に動的に追加するために使用される。
UID番号は、イベントを明白に定められる固定数値IDである。しかし、これは以下に説明するようにイベントのエンコードに使用される値ではない。イベントは、0,1つまたはいくつかのパラメータを持っている(carry)。前記パラメータは対応する動的文字列辞書を指し示す文字列または数値である。文字列は、0で終端される(terminating)とともに、UTF-8フォーマットでエンコードされる。
図4は、前記バイナリエンコーダーBCDにより実行される処理を示している。図4における前記処理は、ステップS1からS17を具備する。この処理には、前記シンボルテーブルST1および前記シンボルコードマップテーブルSCM1を使用する。前記テーブルST1は、表1および表2上にリストされたすべてのイベントが含まれるようにテーブルINEVTにより事前に初期化されている。テーブルST1およびSCM1は、例えば127個など限定された数のイベントを有する。
ステップS1において、前記イベントストリームEVSTは、前記ドキュメントから前記コンバータXSXPにより提供される前記ストリームEVSTすべてのイベントが処理されるまで(ステップS2)、イベント毎にリード(read)される。このステップにおいて、3つのイベントがFIFOバッファ(First-In First-Out) Bevtにロードされる。テーブルSCM1は、前記テーブルST1内のそれぞれのイベントとコード(code)間との対応を確立する。前記コードは、前記エンコーダBCDにより生成される前記バイナリストリーム(BST)のイベントをエンコードするために使用される。前記テーブルST1およびSCM1内のそれぞれのイベントに対応する前記コードは、例えば、テーブルSCM1内のイベントの位置に相当する。
ステップS2において、前記イベントストリームEVSTが終了に達した場合に、前記エンコーダBCDにより実行される処理は終了する。ステップ S3,S4,S5において、前記バッファBevtのそれぞれの記憶域(memory location)のコンテンツは、ヌル(null)と比較される。もし、バッファBevt内の3番イベントBevt[0]だけがヌルでないなら、前記イベントBevt[0]を含むシンボルsymが、ステップS6で生成される。ステップS7において、前記イベントBevt[0]に対応する前記コードは、テーブルSCM1から決定される。このコードおよびイベントに関係するパラメータは、前記エンコーダBCDにより生成された前記バイナリストリーム(BST)に挿入される。
ステップS8において、前記シンボルsymは、シンボルテーブルST1およびシンボルコードマップテーブルSCM1を更新するために使用される。図5および図6を参照しながら以下で説明されるテーブルST1およびSCM1の更新処理は、もしまだこれらのテーブルに前記シンボルがないならば、前記シンボルを前記テーブルに挿入するステップと、前記テーブルST1の先頭に前記シンボルを置くステップと、で構成される。このようにテーブルST1は、最も新しいシンボルが前記テーブルの先頭にリストされるように配置される。
その後、ステップS9において最も古いイベントBevt[0]は、前記バッファBevtの外にプッシュされる。そして、新たなイベントが前記イベントストリームEVSTからリードされるとともに前記バッファBevtのBevt[2]の領域(location)にロードされるステップであるステップS1を新たに繰り返す(new interactioin)処理を続ける。
もし、ステップS4においてBevt[1]がヌルでなかったならば、ステップS10において、Bevt[0]およびBevt[1]の結合(concantenation)によるシンボルsymである sym = Bevt[0]//Bevt[1] が生成される。もし、ステップS11において前記シンボルsymがテーブルST1にまだないならば、ステップ S6-S9が実行される。そうでないならば、ステップS12において前記バッファBevtは、1イベント(Bevt[0]のコンテンツ)をバッファBevtの外にプッシュするためにシフトされる。ステップS13において、前記シンボルsym=Bevt[0]//Bevt[1]に対応する前記コードは、テーブルSCM1から決定される。このコードおよび前記イベントBevt[0]およびBevt[1]に関係するパラメータは、前記エンコーダBCDにより生成された前記バイナリストリーム(BST)に挿入される。前記処理は、前記シンボルsymに含まれるイベントによりテーブルST1およびSCM1を更新するステップS8と、バッファBevtをもう一度シフトするステップS9と、を続ける。注目すべきは、ステップS12およびステップS9の実行により、2つのイベントBevt[0]およびBevt[1]が処理されているので、2つのイベントがバッファBevtの外にプッシュされることである。そして、2つの新しいイベントがイベントストリームEVSTからリードされるとともに、前記バッファBevtのBevt[1]およびBevt[2]の領域にロードするステップS1を新たに繰り返す処理を続ける。
もし、ステップS3においてBevt[2]がヌルでなかったならば、ステップS14において、Bevt[0],Bevt[1]およびBevt[2]の結合によるシンボルsymであるsym = Bevt[0]//Bevt[1]//Bevt[2]が生成される。もし、ステップS15において前記シンボルsymがテーブルST1にまだないならば、ステップS10の処理を続ける。そうでないならば、ステップS16において前記バッファBevtは1つのイベントをバッファの外にプッシュするためにシフトする。ステップS17において、前記シンボルsym = Bevt[0]//Bevt[1]//Bevt[1]に対応する前記コードは、テーブルSCM1から決定される。このコード並びにイベントBevt[0],Bevt[1]およびBevt[2]に関係するパラメータは、前記エンコーダBCDにより生成された前記バイナリストリーム(BST)に挿入される。そして、前記シンボルsymに含まれる3つのイベントによりテーブルST1およびSCM1を更新するステップS8およびバッファBevtがもう一度シフトされるステップS9の前記処理を続ける。前記バッファBevtは、このようにステップS16、S12およびS9により3回シフトされる。したがって、前記バッファBevtは、3つのイベント処理後において新たな繰り返しによりステップS1を再び実行したときには空である。
図5は、ステップS8において実行される処理20を示している。ステップS21からS28を有する前記処理20は、前記テーブルST1およびSCM1を1つのシンボルsymにより更新する。前記シンボルは3つまでのイベントを含んでいる。第1ステップS21において、カウンターiが初期化される。ステップS22において、もしシンボルsymのi番目のイベントがヌルならば、前記処理は終了する。そうでないならば、変数evt-2およびevt-1に記憶された、以前に処理された2つのイベントがヌルかそうでないかをテストするためにステップS23およびS24が実行される。ステップS25において、もし前記以前に処理された2つのイベントがヌルである場合には、前記イベントevtと同等なシンボルをテーブルST1およびSCM1に挿入する処理が実行される。ステップS26において、変数evt-2は、変数evt-1の値に、変数evt-1は、変数evtの値に更新されるとともにカウンターiに1が加算される。その後、2つまたは3つのイベントによりシンボルsymを処理するステップS22を新たに繰り返す処理を続ける。
もしステップS24において、変数evt-1に記憶された以前に処理されたイベントがヌルでなかった場合、evt-1およびevtの結合したイベントと同等なシンボルをテーブルST1およびSCM1への挿入する処理がステップS27において実行される。そして処理はステップS25を続ける。このように、もし変数evt-1がヌルでないならば、前記シンボルevt-1//evtおよびevtは、連続的にテーブルST1およびSCM1に挿入される。
もしステップS23において、変数evt-2に記憶された以前に処理されたイベントがヌルでなかった場合、evt-2,evt-1,およびevtの結合したイベントと同等なシンボルをテーブルST1およびSCM1に挿入する処理がステップS28において実行される。そして前記処理はステップS27を続ける。このように、もし変数evt-1およびevt-2がヌルでないならば、前記シンボルevt-2//evt-l//evt,evt-1//evtおよびevtは、連続的にテーブルST1およびSCM1に挿入される。
図6は、シンボルsymのシンボルテーブルST1およびシンボルコードマップテーブルSCM1への挿入処理30を示している。ステップS31からS35を有する前記処理30は、前記処理20のステップS25,S27,およびS28において実行される。最初のステップS31において、テーブルST1から前記シンボルsymがサーチされる。ステップS32において、もしテーブルST1においてシンボルsymが見つかったならば、前記シンボルsymはテーブルST1から取り除かれるとともにこのテーブルの先頭に挿入される。そうでないならば、ステップS33においてもしテーブルST1がフル(full)でないならば、前記シンボルsymがテーブルST1の先頭に挿入されるとともに、テーブルST1のサイズと等しいコードに対応するテーブルSCM1の位置に挿入される(ステップS34)。前記シンボルは、このようにテーブルSCM1の最後に挿入される。ステップS33において、もしテーブルST1がフルであったならば、ステップS35が実行される。このステップにおいて、最も古いシンボルがテーブルST1から取り除かれる。前記シンボルsymは、ST1の先頭に挿入されるとともに後者のコードに対応するように、テーブルSCM1の取り除かれたシンボルの位置に挿入される。
テーブルST1およびSCM1は、直近の127のイベントを有しているので、前記イベントストリームEVSTでの新たなイベントの発生により、これらのテーブルから外部へのプッシュがなされる。この場合、そのようなイベントの第1発生は、テーブルINEVTにより提供されるイベントコードを使用した2バイトを使用してエンコードされる。イベントをエンコードするそれぞれのコードの第1ビット(最上位ビット)は、イベントのエンコードが1バイトでなされたか2バイトでなされたかどうかを示しており、7または15の他のビットは、テーブルSCM1またはINEVTにより提供されたイベントコードである。このようにステップS7(図4)において、もし前記イベントがテーブルSCM1に属していない場合、前記イベントは、テーブルINEVTにより指定された2バイトによりエンコードされる。前記コードの第1ビットが1である場合はイベントは2バイトによりエンコードされることを示している。
処理される新たなイベントがSTART_ELEMENT_eltidまたはATTRIBUTE_attid(表2を参照)の場合、そのようなイベントは、特別イベントADD_NS,ADD_ENAME,およびADD_ANAMEを使用して定められる。
前記エンコーダBCD(図4)により実行される処理は、今から例を用いて説明される。以下のXMLタグシーケンスがエンコードされるものであると想定する。
<a><b><b/><b><b/>... (1)
このXMSシーケンスは、前記パーサーXSXPにより処理され、以下のイベントストリームを生成する。
START_ELT_1, START_ELT_2, END_ELT, START_ELT_2, END_ELT (2)
さらに、初期化後の前記シンボルテーブルST1は、以下のコンテンツを有する。
前記テーブルST1の前記イベントは、直近のイベントがテーブルの先頭に記憶されるように配置される。前記テーブルの先頭のイベントIDLEは、存在するイベントではないが、前記テーブルの初期化中および初期化後に挿入されたイベントを分けるために使用される。"code"欄は、テーブルSCM1により提供されるように、テーブルST1のそれぞれのシンボルに対応するコードを示す。
エンコーディング処理の第1繰り返し(iteration)において、イベントSTART_ELT_1,START_ELT_2およびEND_ELTは、ステップS1においてバッファBevtにロードされる。前記ステップ S2,S3,S14,S15,S10,S11,S6-S9が、前記エンコーダBCDにより連続して実行される。ステップS7において、バイト25によりエンコードされた第1イベントSTART_ELT_1は、前記エンコーダBCDにより提供されるバイナリストリームに挿入される。ステップS8において、イベントSTART_ELT_1は、以下のようにテーブルST1の先頭に移動させられる。
処理20の変数evt-1およびevt-2がヌルであった場合、処理20(ステップS8)の実行中に、シンボルSTART_ELT_1だけが、テーブルST1の先頭に挿入される。
エンコーディング処理の第2繰り返しにおいて、前記バッファBevtには、ステップS1において前記イベントストリームの次のイベントSTART_ELT_2がロードされるため、前記バッファは、イベントSTART_ELT_2,END_ELTおよびSTART_ELT_2を有する。前記エンコーダBCDは、その後ステップS2,S3,S14,S15,S10,S11,S6-S9 を再び実行する。ステップS7において、バイト27によりエンコードされた第2イベントSTART_ELT_2が、前記エンコーダBCDにより提供されるバイナリストリームに挿入される。処理20(ステップS8)の実行中、シンボルSTART_ELT_1//START_ELT_2およびSTART_ELT_2は、以下の表に示すように、テーブルST1(変数 evt-2はヌル)の先頭に連続的に挿入される。
シンボルSTART_ELT_1//START_ELT_2を挿入する前には、テーブルST1はフルである。従って、このシンボルを挿入する場合に、テーブルST1の終わりのシンボルATTR_52は取り除かれるとともにコード127が新たなシンボルSTART_ELT_1//START_ELT_2に属性づけられる。その後、前記シンボルSTART_ELT_2は、テーブルST1の先頭に移動させられる。
エンコーディング処理の第3繰り返しにおいて、前記バッファBevtには、ステップS1において前記イベントストリームの次のイベントEND_ELTがロードされるため、前記バッファは、イベントEND_ELT,START_ELT_2およびEND_ELTを有する。前記エンコーダBCDは、その後ステップS2,S3,S14,S15,S10,S11,S6-S9を再び実行する。ステップS7において、バイト4によりエンコードされた第3イベントEND_ELTが、前記エンコーダBCDにより提供される前記バイナリストリーム(BST)に挿入される。処理20(ステップS8)の実行中、前記シンボルSTART_ELT_1//START_ELT_2//END_ELT,START_ELT_2//END_ELTおよびEND_ELTは、以下の表6に示すように、テーブルST1の先頭に連続的に挿入される。
前記シンボルSTART_ELT_1//START_ELT_2//END_ELTを挿入する前に、テーブルST1はフルである。したがって、このシンボルを挿入する場合に、テーブルST1の最後のシンボルSTART_ELT_51は取り除かれるとともに、前記コード126が、新しいシンボルSTART_ELT_1//START_ELT_2//END_ELTに属性付けられる。その後、前記シンボルSTART_ELT_2//END_ELTは、テーブルST1の先頭に挿入されるとともに、テーブルから取り除かれる最後のシンボルであるコード125が与えられる(receives)。その後、シンボルEND_ELTは、テーブルST1の先頭に移動させられる。
エンコーディング処理の第4繰り返しにおいて、前記バッファBevtには、ステップS1において前記イベントストリームの次のイベントがロードされるため、前記バッファは、イベントSTART_ELT_2およびEND_ELTを、バッファの第1および第2位置に有する。前記エンコーダBCDはその後ステップS2,S3,S14,S15およびS10,S11を再び実行する。前記シンボルSTART_ELT_2//END_ELTが、テーブルST1に属しているので、前記エンコーダBCDは、ステップS12,S13およびS8,S9をさらに実行する。その結果、2つの連続したイベントSTART_ELT_2およびEND_ELTのシーケンスが、1バイトコード125でエンコードされる。前記1バイトコード125はステップS13において前記エンコーダBCDにより提供されるバイナリストリームに挿入される。ステップS8において、シンボルSTART_ELT_2およびEND_ELTは、テーブルST1の先頭に連続的に移動させられるとともに、2つおよび3つの対応する連続したイベントシーケンスがテーブルST1およびテーブルSCM1に挿入される。つまり、以下の表7に示すように、前記シンボルSTART_ELT_2//END_ELT//START_ELT_2,END_ELT//START_ELT_2,START_ELT_2, END_ELT//STARTJELT_2//END_ELT,START_ELT_2//END_ELTおよびEND_ELTは、連続的に挿入されるかテーブルST1の先頭に移動させられ、必要であればテーブルSCM1にも挿入される。
前記XMLシーケンス<a><b><b/><b><b/>は以下のバイトコードのシーケンスによりエンコードされることになる。
25/27/4/125 (3)
図7は、前記バイナリデコーダーBDCDにより実行される処理を示している。図7の前記処理は、ステップS41-S45を具備する。この処理においてもシンボルテーブルST2およびシンボルコードマップテーブルSCM2を使用する。前記テーブルST2は、事前に初期化され、前記の表1および表2にリストされているすべてのイベントを含んでいる。テーブルST2およびSCM2は、例えば128など限定された数のイベントを有する。
ステップ41において、前記デコーダーBDCDは、デコードするために前記バイナリストリーム(BST)の次のコードをリードする。もし、ステップS42において前記バイナリストリーム(BST)の最後に達しなかった場合には、前記デコーダーはステップS43を実行する。前記ステップS43では、リードされたコードが、テーブルシンボルコードマップSCM2を使用してシンボル、すなわち1つまたは複数の連続したイベントに変換される。ステップS44において、前記シンボルはイベントに変換される。ステップ45において、テーブルSCM2およびST2は、ステップS44の実行後に得られるそれぞれのイベントにより処理20が実行されることにより更新される。
前記デコーダーBDCDにより実行されるデコーディング処理を、今からエンコーディング処理のために図解された上記の例を使用して説明する。この例において、デコーダーはバイトコードシーケンス(2)をデコードする。
第1繰り返しにおいて、前記デコーダーはバイナリストリーム内のコード25をリードする。表3に示すような初期テーブルST2に対応するテーブルSCM2内において、コード25は、1つのイベントを有するシンボルSTART_ELT_1に対応する。その後、前記デコーダーは、このように得られた前記イベントを、提供するイベントストリームに挿入する。前記テーブルST2は、イベントSTART_ELT_1を前記テーブルの先頭に移動させることにより更新する。第1繰り返しの最後において、テーブルST2には表4のシンボルが含まれている。
第2繰り返しにおいて、前記デコーダーBDCDはバイナリストリームの次のコード27をリードする。テーブルSCM2において、コード27は、1つのイベントを有するシンボルSTART_ELT_2に対応する。その後前記デコーダーは、このように得られた前記イベントを、提供する前記イベントストリームに挿入する。前記テーブルST2およびSCM2は、コード127と関連付けられているシンボルSTART_ELT_1//START_ELT_2が追加されることにより更新される。テーブルST2の先頭にこのシンボルは置かれている(put)。テーブルST2は、イベントSTART_ELT_2を前記テーブルの先頭に移動させることによりさらに更新される。第2繰り返しの最後において、テーブルST2には、表5のシンボルが含まれている。
第3繰り返しにおいて、前記デコーダーBDCDはバイナリストリームの次のコード4をリードする。テーブルSCM2において、コード4は、1つのイベントを有するシンボルEND_ELTに対応する。その後前記デコーダーは、このように得られた前記イベントを、提供する前記イベントストリームEVSTに挿入する。前記テーブルST2およびSCM2は、コード126と関連付けられているシンボルSTART_ELT_1//START_ELT_2//END_ELT、およびコード125と関連付けられているシンボルSTART_ELT_2//END_ELTが追加されることにより更新される。これらのシンボルはテーブルST2の先頭に置かれている。テーブルST2は、イベントEND_ELTを前記テーブルの先頭に移動させることによりさらに更新される。第3繰り返しの最後において、テーブルST2には、表6のシンボルが含まれている。
第4繰り返しにおいて、前記デコーダーBDCDは、バイナリストリームの次のコート125をリードする。テーブルSCM2において、コード125は、2つのイベントを有するシンボルSTART_ELT_2//END_ELTに対応する。その後前記デコーダーは、このように得られた前記イベントを、提供する前記イベントストリームEVSTに挿入する。前記テーブルST2およびSCM2は、イベントSTART_ELT_2およびEND_ELTが連続してテーブルST2の先頭に移動させられるとともにテーブルST2およびSCM2に2つおよび3つの連続したイベントシーケンスが挿入されることで、更新される。第4繰り返しの最後において、テーブルST2には、表7のシンボルが含まれている。
このように前記デコーダーBDCDは、前記イベントストリーム(2)を提供し、その後コンバータSXXPによりXMLタグシーケンス(1)に変換される。
3つの異なる設定(setup)において、MPEG-7およびMPEG-21の228のテストファイルのコレクション(collection)のシミュレーションが行なわれている。
これらのシミュレーションで扱われた名前空間、要素の名前および属性の名前を含んでいる外部のタグ名前テーブルは、使用するか、または使用しない。ブートストラップ辞書のように前記タグ名前テーブルを使用しているZLIBのポスト圧縮は、イベントストリームEVSTの出力に対して行なわれる。さらに、コメント、要素間の余白、およびプレフィックスマッピングは、転送さるか、または転送しない。
第1設定においては、タグ名前テーブルが使用され、コメント、余白およびプレフィックスマッピングは、削除されている。入力されるXMLファイルそのまま(raw)では、平均圧縮比19.15が観測され、ZLIB圧縮されたXML入力ファイルと比較すると圧縮比6.58が観測される。
第2設定において、タグ名前テーブルが使用され、コメント、余白およびプレフィックスマッピングは、保持されている。入力されるXMLファイルそのままでは、平均圧縮比4.01が観測され、ZLIB圧縮されたXML入力ファイルと比較すると圧縮比1.30が観測される。
第3設定において、タグ名前テーブルは使用されず、余白およびプレフィックスマッピングは、削除されている。入力されるXMLファイルそのまま(raw)では、平均圧縮比4が観測され、ZLIB圧縮されたXML入力ファイルと比較すると圧縮比1.30が観測される。
上述の例に照らして、本発明における方法および装置は、いろいろなバリエーションの実装またはアプリケーションに影響しやすいことは当業者にとり明らかである。特に、本発明は、XML言語またはHTMLまたはSVGといったXML言語により生成されたものに限定されない。本発明はさらに一般的にすべての構造言語文書に適用される。
StAX (Streaming API for XML)およびDOM (Document Object Model)といったSAX以外の他のアプリケーションプログラムインターフェース(API)は、イベントストリームを生成するのに使用される。DOMの場合には、前記文書の構造は、ノードを有するツリー状構造を示す。前記イベントストリームの前記イベントはツリー状構造内のノードに対応しており、ツリー状構造の定義済みの経路に従って連続的に考えられている。
本発明は上述した、同じコードに関連付けられた1から3つのイベントのシーケンスを生成するためのアルゴリズムに限定するものではない。2つまたは3つ以上のイベントのシーケンスがこのように生成されることで、1バイトコードがいくつかのイベントをエンコードできる。さらにイベントを集めシーケンスにグルーピングするための他のアルゴリズムを使用してもよい。例えば、前記イベントストリームEVST内で一度しか発生しないイベントシーケンスを前記テーブルへ挿入することを防ぐために、イベントシーケンスの2度目の発生後のみ、連続したイベントのシーケンスをテーブルSTおよびSCMに挿入する、ということを提供してもよい。このように前記イベントは、テーブルSTおよびSCM内でそれほど早く変更されない。いくつかのイベントは、構造化文書から生成されるイベントストリーム中にたまにしか現れない。したがって、そのようなイベントを含むイベントシーケンスの生成を防ぐことを提供してもよい。
4 要素、構造化要素
Claims (32)
- それぞれネストされた構造化要素(4)を具備し、
それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素(Val)を区切る構造化要素を具備する、ツリー状構造を有する構造化文書(DOC)を圧縮するための圧縮方法において、
前記構造化文書(DOC)を、前記構造化文書の構造化要素に対応するイベントを有するイベントストリーム(EVST)に変換するステップと、
前記イベントストリームで発生する、1つのイベントまたは連続したイベントの少なくとも2度目の発生のシーケンスをエンコードするそれぞれのバイト単位コードを有するバイナリストリーム(BST)を生成することにより前記イベントストリームをエンコーディングするステップと、
を具備することを特徴とする圧縮方法。 - 圧縮されたバイナリストリーム(BDOC)を得るために圧縮アルゴリズム(ZIP)を前記バイナリストリーム(BST)に適用するステップを有することを特徴とする請求項1に記載の圧縮方法。
- 前記圧縮アルゴリズム(ZIP)は、ZLIBであることを特徴とする請求項2に記載の圧縮方法。
- 前記イベントストリーム(EVST)のイベントのための前記エンコーディングステップは、
1バイト単位コードを、前記イベントストリームで発生した少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを前記イベントに属性付けるステップと、
を具備することを特徴とする請求項1から3のいずれか1項に記載の圧縮方法。 - 前記イベントストリーム(EVST)のイベントのための前記エンコーディングステップは、
1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
を具備することを特徴とする請求項1から4のいずれか1項に記載の圧縮方法。 - 対応テーブル(SCM1)は、前記バイナリストリーム(BST)のそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとのリンクを確立し、
前記対応テーブルは、限定されたサイズであることを特徴とする請求項1から5のいずれか1項に記載の圧縮方法。 - 前記対応テーブル(SCM1)がフルの場合、最も古いイベントまたはイベントシーケンスのバイト単位コードを、前記新たなイベントまたはイベントシーケンスに属性付けられるように、前記最も古いイベントまたはイベントシーケンスを前記新たなイベントまたはイベントシーケンスと置き換えることで、前記新たなイベントまたはイベントシーケンスが対応テーブルに挿入されることを特徴とする請求項6に記載の圧縮方法。
- 前記バイト単位コードは、1バイト長であることを特徴とする請求項1から7のいずれか1項に記載の圧縮方法。
- オリジナル構造化文書(DOC)は、それぞれネストされた構造化要素(4)を具備し、
それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素(Val)を区切る構造化要素を具備する、ツリー状構造を有するオリジナル構造化文書(DOC)の圧縮によるバイナリストリーム(BST)を解凍する解凍方法において、
前記バイナリストリーム(BST)は、
イベントストリーム(EVST)のイベントをエンコーディングする連続したバイト単位コードと、
前記構造化文書の構造化要素と対応する前記イベントと、
を具備し、
前記解凍方法は、
バイナリストリームのそれぞれのバイト単位コードに対し、1つのイベントまたは連続したイベントの少なくとも2度目の発生のイベントシーケンスを有する前記イベントストリームを生成することにより、前記バイナリストリーム(BST)をデコーディングするステップと、
オリジナル構造化文書(DOC)を提供するために、前記イベントストリームのそれぞれのイベントを構造化要素に変換するステップと、
を具備することを特徴とする解凍方法。 - 前記バイナリストリーム(BST)を得るために解凍アルゴリズム(DZIP)を圧縮されたバイナリストリーム(BDOC)に適用する先行ステップを有することを特徴とする請求項9に記載の解凍方法。
- 前記解凍アルゴリズム(DZIP)は、ZLIBであることを特徴とする請求項10に記載の解凍方法。
- 前記イベントストリーム(EVST)のイベントのための前記デコーディングステップは、
1バイト単位コードを、前記イベントストリームの少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
を具備することを特徴とする請求項9から11のいずれか1項に記載の解凍方法。 - 前記イベントストリーム(EVST)のイベントのための前記デコーディングステップは、
1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
を具備することを特徴とする請求項9から12のいずれか1項に記載の解凍方法。 - 対応テーブル(SCM2)は、前記バイナリストリーム(BST)のそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとのリンクを確立し、
前記対応テーブルは限定されたサイズであることを特徴とする請求項9から13のいずれか1項に記載の解凍方法。 - 対応テーブル(SCM2)がフルな場合、最も古いイベントまたはイベントシーケンスのバイト単位コードを新たなイベントまたはイベントシーケンスに属性付けるために、新たなイベントまたはイベントシーケンスは、最も古いイベントまたはイベントシーケンスを新たなイベントまたはイベントシーケンスと置き換えることで対応テーブルに挿入されることを特徴とする請求項14に記載の解凍方法。
- 前記バイト単位コードは、1バイト長であることを特徴とする請求項9から15のいずれか1項に記載の解凍方法。
- それぞれネストされた構造化要素(4)を具備し、
それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素(Val)を区切る構造化要素を具備する、ツリー状構造を有する構造化文書(DOC)を圧縮するための圧縮装置において、
前記構造化文書(DOC)を、前記構造化文書の構造化要素に対応するイベントを有するイベントストリーム(EVST)に変換するためのコンバータ(XSXP)と、
前記イベントストリームで発生する1つのイベントまたは少なくとも2度目の発生の連続したイベントのシーケンスをエンコードする、それぞれのバイト単位コードを有するバイナリストリーム(BST)を生成することにより、前記イベントストリームをエンコードするためのエンコーダー(BCD)と、
を具備することを特徴とする圧縮装置。 - 圧縮されたバイナリストリーム(BDOC)を得るために、圧縮アルゴリズムを前記バイナリストリーム(BST)に適用するための圧縮モジュール(ZIP)を具備することを特徴とする請求項17に記載の圧縮装置。
- 前記圧縮アルゴリズムは、ZLIBであることを特徴とする請求項18に記載の圧縮装置。
- 前記エンコーダー(BCD)は、
1バイト単位コードを、前記イベントストリームの少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
により前記イベントストリーム(EVST)のイベントを処理するように設定されることを特徴とする請求項17から19のいずれか1項に記載の圧縮装置。 - 前記エンコーダ(BCD)は、
1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
により前記イベントストリーム(EVST)のイベントを処理するように設定されることを特徴とする請求項17から20のいずれか1項に記載の圧縮装置。 - 対応テーブル(SCM1)は、前記バイナリストリーム(BST)のそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとの間のリンクを確立し、
前記対応テーブルは限定されたサイズであることを特徴とする請求項17から21のいずれか1項に記載の圧縮装置。 - 前記エンコーダ(BCD)は、対応テーブル(SCM1)がフルな場合、最も古いイベントまたはイベントシーケンスのバイト単位コードが新たなイベントまたはイベントシーケンスに属性付けられるように、最も古いイベントまたはイベントシーケンスを新しいイベントまたはイベントシーケンスで置き換えることで、新たなイベントまたはイベントシーケンスを対応テーブル(SCM1)に挿入するように設定されることを特徴とする請求項22に記載の圧縮装置。
- 前記バイト単位コードは、1バイト長であることを特徴とする請求項17から23のいずれか1項に記載の圧縮装置。
- 前記オリジナル構造化文書(DOC)は、それぞれネストされた情報要素(4)を具備し、
それぞれの前記構造化要素は、要素の構造を定めるとともに、少なくとも1つの構造化要素または非構造化要素のセットである少なくとも1つの値要素(Val)を区切る構造化要素を具備する、ツリー状構造を有するオリジナル構造化文書(DOC)の圧縮によるバイナリストリーム(BST)を解凍する解凍装置において、
前記バイナリストリーム(BST)は、
イベントストリーム(EVST)のイベントをエンコーディングする連続したバイト単位コードを有し、
前記構造化文書の構造化要素と対応する前記イベントと、
を具備し、
前記解凍装置は、
バイナリストリームのそれぞれのバイト単位コードに対し、1つのイベントまたは連続したイベントの少なくとも2度目の発生のイベントシーケンスを有する前記イベントストリームを生成することにより、前記バイナリストリーム(BST)をデコーディングするためのデコーダー(BDCD)と、
オリジナル構造化文書(DOC)を提供するために、前記イベントストリームのそれぞれのイベントを構造化要素に変換するためのコンバータ(SXXP)と、
を具備することを特徴とする解凍装置。 - 前記バイナリストリーム(BST)を得るために、解凍アルゴリズム(DZIP)を圧縮されたバイナリストリーム(BDOC)に適用するための解凍モジュール(DZIP)を有することを特徴とする請求項25に記載の解凍装置。
- 前記解凍アルゴリズム(DZIP)は、ZLIBであることを特徴とする請求項26に記載の解凍装置。
- 前記デコーダー(BDCD)は、
1バイト単位コードを、前記イベントストリームの少なくとも2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
により前記イベントストリーム(EVST)のイベントを処理するように設定されることを特徴とする請求項25から27のいずれか1項に記載の解凍装置。 - 前記デコーダー(BDCD)は、
1バイト単位コードを、前記イベントストリームで発生する3つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントストリームで発生する2つの連続したイベントを有するとともに前記イベントで終了するイベントシーケンスに属性付けるステップと、
1バイト単位コードを、前記イベントに属性付けるステップと、
により前記イベントストリーム(EVST)のイベントを処理するように設定されることを特徴とする請求項25から28のいずれか1項に記載の解凍装置。 - 対応テーブル(SCM2)は、前記バイナリストリーム(BST)のそれぞれのバイト単位コードと、イベントまたはイベントシーケンスとの間のリンクを確立し、
前記対応テーブルは限定されたサイズであることを特徴とする請求項29に記載の解凍装置。 - 前記デコーダー(BDCD)は、対応テーブル(SCM2)がフルな場合、最も古いイベントまたはイベントシーケンスの前記バイト単位コードが新たなイベントまたはイベントシーケンスに属性付けられるように、最も古いイベントまたはイベントシーケンスを新しいイベントまたはイベントシーケンスで置き換えることで、新たなイベントまたはイベントシーケンスを対応テーブル(SCM2)に挿入するように設定されることを特徴とする請求項30に記載の解凍装置。
- 前記バイト単位コードは、1バイト長であることを特徴とする請求項25から21のいずれか1項に記載の解凍装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US80713106P | 2006-07-12 | 2006-07-12 | |
PCT/IB2007/001992 WO2008010059A1 (en) | 2006-07-12 | 2007-07-06 | Methods and devices for compressing structured documents |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009543243A true JP2009543243A (ja) | 2009-12-03 |
Family
ID=38578679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009518997A Pending JP2009543243A (ja) | 2006-07-12 | 2007-07-06 | 構造化文書の圧縮のための方法と装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2039009A1 (ja) |
JP (1) | JP2009543243A (ja) |
WO (1) | WO2008010059A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101499441B1 (ko) * | 2011-12-30 | 2015-03-06 | 페킹 유니버시티 | 문서를 압축, 역압축 및 조회하는 방법 및 장치 |
-
2007
- 2007-07-06 WO PCT/IB2007/001992 patent/WO2008010059A1/en active Application Filing
- 2007-07-06 JP JP2009518997A patent/JP2009543243A/ja active Pending
- 2007-07-06 EP EP07734998A patent/EP2039009A1/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101499441B1 (ko) * | 2011-12-30 | 2015-03-06 | 페킹 유니버시티 | 문서를 압축, 역압축 및 조회하는 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2008010059A1 (en) | 2008-01-24 |
EP2039009A1 (en) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3973557B2 (ja) | 構造化された文書を圧縮/伸長する方法 | |
US20080294980A1 (en) | Methods and Devices for Compressing and Decompressing Structured Documents | |
US7565452B2 (en) | System for storing and rendering multimedia data | |
JP4884438B2 (ja) | 階層化ツリーを圧縮する方法及び圧縮されたマルチメディア信号をデコーディングする方法 | |
US20020029229A1 (en) | Systems and methods for data compression | |
US20070143664A1 (en) | A compressed schema representation object and method for metadata processing | |
JP4145144B2 (ja) | 構造化文書をいくつかの部分に分割する方法 | |
MXPA02006077A (es) | Formato binario para instancias mpg7. | |
JP2004508647A (ja) | 構造化文書の圧縮/解凍方法 | |
US7523392B2 (en) | Method and system for mapping between components of a packaging model and features of a physical representation of a package | |
JP2006514354A (ja) | MPEG−4Textual表現からMPEG−4IntermediaFormatを作成する効率的な手段 | |
JP2006517309A (ja) | MPEG−4IntermediaFormatからMPEG−4TextualRepresentationを作成する効率的な手段 | |
US7627586B2 (en) | Method for encoding a structured document | |
WO2019018030A1 (en) | COMPRESSION AND RECOVERY OF STRUCTURED RECORDINGS | |
US7571152B2 (en) | Method for compressing and decompressing structured documents | |
JP2009543243A (ja) | 構造化文書の圧縮のための方法と装置 | |
JP2004342029A (ja) | 構造化文書圧縮方法及び装置 | |
Shen et al. | An approach to efficient compression transmission schema of GML | |
HUE029618T2 (en) | Broadcast metadata compression method and system |