(57)【特許請求の範囲】
【請求項１】
行と列とが規定されている構造化データを圧縮して圧縮データを生成する圧縮プログラムであって、
前記構造化データにおける或る行の或る列を特定するステップと、
特定された前記或る行の前記或る列に設定されているデータが、前記或る行の１行前の前記或る列に設定されているデータと同じである場合、前記圧縮データにおける前記或る行の前記或る列に、空を設定するステップと、
特定された前記或る行の前記或る列に空が設定されており、且つ前記或る行の１行前の前記或る列に空以外のデータが設定されている場合、前記圧縮データにおける前記或る行の前記或る列に、空に対応する符号を設定するステップと、
を、コンピュータに実行させるための圧縮プログラム。
【請求項２】
行と列とが規定されている構造化データを解凍する解凍プログラムであって、
同一列において、空が設定された、連続する１以上の行を特定するステップと、
当該特定された１以上の行に対し、その直前の行に設定されたデータを設定するステップと、
空に対応する符号が設定された行に対し、空を設定するステップと、
を、コンピュータに実行させるための解凍プログラム。
【請求項３】
行と列とが規定されている構造化データを圧縮して圧縮データを生成する圧縮方法であって、
前記構造化データにおける或る行の或る列を特定するステップと、
特定された前記或る行の前記或る列に設定されているデータが、前記或る行の１行前の前記或る列に設定されているデータと同じである場合、前記圧縮データにおける前記或る行の前記或る列に、空を設定するステップと、
特定された前記或る行の前記或る列に空が設定されており、且つ前記或る行の１行前の前記或る列に空以外のデータが設定されている場合、前記圧縮データにおける前記或る行の前記或る列に、空に対応する符号を設定するステップと、
を含み、コンピュータに実行される圧縮方法。
【請求項４】
行と列とが規定されている構造化データを解凍する解凍方法であって、
同一列において、空が設定された、連続する１以上の行を特定するステップと、
当該特定された１以上の行に対し、その直前の行に設定されたデータを設定するステップと、
空に対応する符号が設定された行に対し、空を設定するステップと、
を含み、コンピュータに実行される解凍方法。
【請求項５】
行と列とが規定されている構造化データを圧縮して圧縮データを生成する圧縮装置であって、
前記構造化データにおける或る行の或る列を特定する手段と、
特定された前記或る行の前記或る列に設定されているデータが、前記或る行の１行前の前記或る列に設定されているデータと同じである場合、前記圧縮データにおける前記或る行の前記或る列に、空を設定する手段と、
特定された前記或る行の前記或る列に空が設定されており、且つ前記或る行の１行前の前記或る列に空以外のデータが設定されている場合、前記圧縮データにおける前記或る行の前記或る列に、空に対応する符号を設定する手段と、
を有する圧縮装置。
【請求項６】
行と列とが規定されている構造化データを解凍する解凍装置であって、
同一列において、空が設定された、連続する１以上の行を特定する手段と、
当該特定された１以上の行に対し、その直前の行に設定されたデータを設定する手段と、
空に対応する符号が設定された行に対し、空を設定する手段と、
を有する解凍装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データ圧縮技術に関する。
【背景技術】
【０００２】
技術の進歩に応じてコンピュータの処理速度や記憶容量なども向上しているが、取り扱うデータの量も飛躍的に増加しており、圧縮技術が必要となる場面も多い。辞書を用いる単純な従来技術によれば、図１に示すようなデータは以下に述べるように圧縮される。すなわち、データ「２００９／６／５」に対して符号「Ａ」を割り当て、データ「１０：１３」に対して符号「Ｂ」を割り当て、データ「ホワイト」に対して符号「Ｃ」を割り当てて、このような対応関係を辞書に登録しておく。そして、この辞書に従って、図１のデータ内において辞書に登録済みのデータが出現した場合には、対応する符号に置換する。データ「２００９／６／５」などの長さに比べて符号「Ａ」の長さが十分短い場合には、データ量の削減が可能となる。図１のデータ例の場合には、図２に示すように、データ「２００９／６／５」の代わりに符号「Ａ」が設定されており、データ「１０：１３」の代わりに符号「Ｂ」が設定され、データ「ホワイト」の代わりに符号「Ｃ」が設定されている。
【０００３】
さらに、ランレングス符号化方式というものもよく知られている。この方法は、特定の値が連続して出現する場合に当該特定の値と当該特定の値の連続出現回数とを用いてデータ量を削減する手法である。
【０００４】
さらに、非空フィールド及び空フィールドを含むデータ・レコードのうち、非空フィールド中の連続ゼロ・バイトの数に基づきゼロ・バイトを符号化し、空フィールドを空フィールド標識に単に置換するような技術も存在している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１７５７０７号公報
【特許文献２】特公平８−７６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上で述べた技術は、行と列とが規定されているリレーショナルデータベース、ＣＳＶ（Comma Separated Values）ファイルのような構造化データに適してはいない。
【０００７】
従って、本技術の目的は、行と列とが規定されている構造化データに適した圧縮及び解凍技術を提供することである。
【課題を解決するための手段】
【０００８】
本圧縮方法は、行と列とが規定されている構造化データを圧縮する圧縮方法であり、同一列において同一のデータが設定された、連続する複数の行を特定するステップと、特定された複数の行において空以外のデータが設定されている場合、当該複数の行における２行目以降のデータとして、空を設定するステップと、特定された複数の行において空が設定されている場合、当該複数の行における１行目のデータとして、空に対応する符号を設定するステップとを含む。
【０００９】
また、本解凍方法は、行と列とが規定されている構造化データを解凍する解凍方法であり、同一列において、空が設定された、連続する１以上の行を特定するステップと、当該特定された１以上の行に対し、その直前の行に設定されたデータを設定するステップと、空に対応する符号が設定された行に対し、空を設定するステップとを含む。
【発明の効果】
【００１０】
行と列とが規定されている構造化データに適した圧縮及び解凍が可能となる。
【図面の簡単な説明】
【００１１】
【図１】図１は、従来技術を説明するための図である。
【図２】図２は、従来技術を説明するための図である。
【図３】図３は、本実施の形態を説明するための図である。
【図４】図４は、本実施の形態を説明するための図である。
【図５】図５は、データ圧縮装置の機能ブロック図である。
【図６】図６は、データ圧縮処理の処理フローを示す図である。
【図７】図７は、データ圧縮処理の処理フローを示す図である。
【図８】図８は、データ圧縮処理の処理フローを示す図である。
【図９】図９は、辞書の一例を示す図である。
【図１０】図１０は、データ圧縮処理の具体例を説明するための図である。
【図１１】図１１は、データ圧縮処理の具体例を説明するための図である。
【図１２】図１２は、データ圧縮処理の具体例を説明するための図である。
【図１３】図１３は、データ圧縮処理の具体例を説明するための図である。
【図１４】図１４は、データ圧縮処理の具体例を説明するための図である。
【図１５】図１５は、データ圧縮処理の具体例を説明するための図である。
【図１６】図１６は、データ圧縮処理の具体例を説明するための図である。
【図１７】図１７は、データ圧縮処理の具体例を説明するための図である。
【図１８】図１８は、データ圧縮処理の具体例を説明するための図である。
【図１９】図１９は、データ圧縮処理の具体例を説明するための図である。
【図２０】図２０は、データ圧縮処理の具体例を説明するための図である。
【図２１】図２１は、データ圧縮処理の具体例を説明するための図である。
【図２２】図２２は、データ圧縮処理の具体例を説明するための図である。
【図２３】図２３は、データ圧縮処理の具体例を説明するための図である。
【図２４】図２４は、データ圧縮処理の具体例を説明するための図である。
【図２５】図２５は、データ圧縮処理の具体例を説明するための図である。
【図２６】図２６は、データ圧縮処理の具体例を説明するための図である。
【図２７】図２７は、ＣＳＶ形式のデータの一例を示す図である。
【図２８】図２８は、ＣＳＶ形式の圧縮データの一例を示す図である。
【図２９】図２９は、他のフォーマットの圧縮データの一例を示す図である。
【図３０】図３０は、ランレングス法を用いた場合の圧縮データの一例を示す図である。
【図３１】図３１は、データ解凍装置の機能ブロック図である。
【図３２】図３２は、データ解凍処理の処理フローを示す図である。
【図３３】図３３は、データ解凍処理の処理フローを示す図である。
【図３４】図３４は、データ解凍処理の処理フローを示す図である。
【図３５】図３５は、データ解凍処理の具体例を説明するための図である。
【図３６】図３６は、データ解凍処理の具体例を説明するための図である。
【図３７】図３７は、データ解凍処理の具体例を説明するための図である。
【図３８】図３８は、データ解凍処理の具体例を説明するための図である。
【図３９】図３９は、データ解凍処理の具体例を説明するための図である。
【図４０】図４０は、データ解凍処理の具体例を説明するための図である。
【図４１】図４１は、データ解凍処理の具体例を説明するための図である。
【図４２】図４２は、データ解凍処理の具体例を説明するための図である。
【図４３】図４３は、データ解凍処理の具体例を説明するための図である。
【図４４】図４４は、データ解凍処理の具体例を説明するための図である。
【図４５】図４５は、データ解凍処理の具体例を説明するための図である。
【図４６】図４６は、データ解凍処理の具体例を説明するための図である。
【図４７】図４７は、データ解凍処理の具体例を説明するための図である。
【図４８】図４８は、データ解凍処理の具体例を説明するための図である。
【図４９】図４９は、コンピュータの機能ブロック図である。
【図５０】図５０は、本技術の第２の態様に係る圧縮方法の処理フローを示す図である。
【図５１】図５１は、本技術の第２の態様に係る解凍方法の処理フローを示す図である。
【発明を実施するための形態】
【００１２】
最初に、本実施の形態の圧縮方法について図３及び図４を用いて説明しておく。例えばリレーショナルデータベースやＣＳＶ、スプレッドシートのデータとして図３のようなデータを保持しているものとする。すなわち、行と列とが規定されており、特に、列ごとにその属性が異なっているため、列単位で同一のデータが出現しやすいようなデータを取り扱う。そして、データ圧縮技術においては周知の辞書生成技術により、例えば出現頻度の高いデータを符号化して、辞書に登録する。図３の例では、辞書に、データ「２００９／６／５」に対して符号「Ａ」を割り当て、データ「１０：１３」に対して符号「Ｂ」を割り当てる。さらに、本実施の形態では、データが「空」である場合にも符号を設定するものとし、図３の例では符号「Ｄ」を割り当てる。さらに、本実施の形態では、「空」に対する符号「Ｄ」をも、辞書に登録しておくものとする。但し、「空」については、辞書に登録することなく、常に同じ符号を割り当てるといった手法を採用する場合もある。
【００１３】
基本的には、図３の構造化データの各要素位置（フィールド、セルなどと呼ぶ場合もある）におけるデータが辞書に登録済みであれば当該データを符号に置換することによって、圧縮する。なお、図３の構造化データのうち１行目については、各列の属性名を示すものであるが、この部分については圧縮の対象外とする。但し、同じデータが同一列内で連続して出現する場合には、最初の要素位置のみ符号への置換を実施して、同一データが連続する間は「空」を設定する。「空」を設定することによって、データ量が削減される。なお、設定された「空」と、元々の「空」とを区別するため、元々の「空」に対しては符号「Ｄ」で置換する。但し、元々の「空」が連続する場合には、２番目以降の元々の「空」については「空」のままになる。このようにすることによって、ランレングスのためのデータを用いることなく、元々「空」と、処理において設定された「空」とを区別することができるようになる。
【００１４】
図３の「年月日」の列では、全ての行にデータ「２００９／６／５」が設定されているので、図４に示すように、第１行目だけ符号「Ａ」に置換し、その他の行については「空」を設定する。「時間」の列では、最初の３行のデータが「１０：１３」で同一であるから、図４に示すように、１行目については符号「Ｂ」を設定し、残りの２行については「空」を設定する。４行目については辞書に登録されていないのでデータ「１０：２２」が、図４に示すように、そのまま設定される。「商品ＩＤ」の列については、全てのデータが辞書に登録されていないので、図４に示すように、そのまま設定される。「数量」の列については、１行目及び２行目についてはデータ「１」が連続して設定されているが、辞書には登録されていないデータなので、図４に示すように、１行目には「１」を２行目には「空」を設定する。また、３行目及び４行目についてはデータ「２」が連続して設定されているが、辞書には登録されていないデータなので、図４に示すように、３行目には「２」を４行目には「空」を設定する。さらに、図３の「レジ名」の列では、全ての行に元々「空」が設定されているので、図４に示すように、最初の行には「空」を表す符号「Ｄ」を設定し、残余の行については「空」のままにする。
【００１５】
このようにすれば、構造化データの構造自体を有効活用しているので、ランレングスを登録せずともよく、その分データ量を削減することができる。
【００１６】
次に、このような圧縮処理を実施するデータ圧縮装置の機能ブロック図を図５に示す。図５に示したデータ圧縮装置は、（Ａ）圧縮対象データを格納する第１構造化データ格納部１と、（Ｂ）当該第１構造化データ格納部１に格納されている構造化データについて処理を行って辞書を生成する辞書生成部４と、（Ｃ）辞書生成部４によって生成された辞書のデータを格納する辞書格納部５と、（Ｄ）処理途中のデータを格納する直前データ格納部３と、（Ｅ）辞書格納部５及び直前データ格納部３を用いて第１構造化データ格納部１に格納されている構造化データを圧縮する処理を実施する圧縮処理部２と、（Ｆ）圧縮処理部２の処理結果が格納される第２構造化データ格納部６とを有する。第２構造化データ格納部６及び辞書格納部５に格納されているデータは、解凍に用いられるので出力データ１０として、以下で述べるデータ解凍装置に出力される。
【００１７】
次に、図６乃至図３０を用いて、データ圧縮装置の処理内容について説明する。まず、辞書生成部４は、第１構造化データ格納部１に格納されている圧縮対象の構造化データから、例えば出現頻度の高いデータに対して所定のルールで符号を割り当て、データと符号との対応付けデータを含む辞書データを生成し、辞書格納部５に格納する（ステップＳ１）。この処理については、従来と同じであるからこれ以上述べない。
【００１８】
次に、圧縮処理部２は、第１構造化データ格納部１に格納されている圧縮対象の構造化データと同一構造のデータ構造を、第２構造化データ格納部６において用意する（ステップＳ３）。第２構造化データ格納部６に格納される圧縮データの形式には以下で述べるように様々な形式が可能であるが、どのような形式であっても圧縮対象の構造化データと同一の構造が必要となるので、ここで用意する。より具体的には、行数及び列数が同一のデータ構造を用意する。なお、第１構造化データ格納部１に格納されている構造化データに圧縮データを上書き保存しても良い場合には、第２構造化データ格納部６を用いることなく、さらに本ステップを実施することなく以下の処理を実施することができる。
【００１９】
そして、圧縮処理部２は、圧縮対象の構造化データにおける第一行第１列を注目要素位置に設定する（ステップＳ５）。そして、圧縮処理部２は、注目要素位置のデータを読み出し（ステップＳ７）、読み出したデータが、直前データ格納部３に格納されている一行前のデータと一致するか判断する（ステップＳ９）。注目要素位置が第一行である場合には、一行前のデータは存在しないので、一致しないと判断される。一方、それ以外の場合には、一致する場合がある。一致する場合には、圧縮処理部２は、第２構造化データ格納部６に用意されているデータ構造において注目要素位置と同一の要素位置に「空」を設定する（ステップＳ１１）。そしてステップＳ１７に移行する。
【００２０】
一方、一行前のデータと一致しないと判断された場合には、圧縮処理部２は、読み出したデータが「空」であるか判断する（ステップＳ１３）。本ステップにおいて「空」であると判断された場合には、「空」に変化したことになるので、圧縮処理部２は、辞書格納部５において「空」に対応付けて登録されており「空」を表す符号又は「空」に対応する予め定められた符号を、第２構造化データ格納部６に用意されているデータ構造において注目要素位置と同一要素位置に設定する（ステップＳ１５）。そしてステップＳ１７に移行する。一方、読み出したデータが「空」ではない場合には、端子Ａを介して図７の処理に移行する。
【００２１】
図７の処理の説明に移行して、圧縮処理部２は、読み出したデータで辞書格納部５に格納されている辞書を検索し、登録済みであるか判断する（ステップＳ２３）。登録済みである場合には、辞書において対応付けて登録されている符号を読み出し、当該符号を、第２構造化データ格納部６に用意されているデータ構造において注目要素位置と同一要素位置に設定する（ステップＳ２５）。そして端子Ｃを介して図６の処理のステップＳ１７に移行する。
【００２２】
一方、読み出したデータが辞書に登録されていない場合、圧縮処理部２は、読み出したデータそのものを、第２構造化データ格納部６に用意されたデータ構造において注目要素位置と同一要素位置に設定する（ステップＳ２７）。そして端子Ｃを介して図６の処理のステップＳ１７に移行する。
【００２３】
図６の処理の説明に戻って、圧縮処理部２は、ステップＳ１１、Ｓ１５、Ｓ２５又はＳ２７の後に、読み出したデータを、直前データ格納部３に一行前のデータとして登録する（ステップＳ１７）。そして、圧縮処理部２は、第１構造化データ格納部１における圧縮対象の構造化データにおいて次の行が存在するか判断する（ステップＳ１９）。次の行が存在する場合には、圧縮処理部２は、次の行の同一列を注目要素位置に設定する（ステップＳ２１）。そしてステップＳ７に戻る。一方、次の行が存在しない場合には、現在処理中の列については処理が完了したことになる。処理は端子Ｂを介して図８の処理に移行する。
【００２４】
図８の処理の説明に移行して、圧縮処理部２は、直前データ格納部３に格納されている一行前のデータをクリアする（ステップＳ２９）。クリアは「空」でもない状態であるとする。そして、圧縮処理部２は、第１構造化データ格納部１における圧縮対象の構造化データにおいて次の行が存在しているか判断する（ステップＳ３１）。次の列が存在する場合には、まだ処理を行う必要があるので、圧縮処理部２は、次の列の第一行を注目要素位置に設定する（ステップＳ３３）。そして端子Ｄを介して図６のステップＳ７に戻る。一方、次の列が存在しない場合処理を終了する。
【００２５】
以上のような処理を実施することによって、同一データが連続する場合にもランレングスのデータを用意せずに済むようになり、高い圧縮率を得ることができる。
【００２６】
次に、図６乃至図８に示した処理フローを具体的なデータに対して適用した場合の処理内容について図９乃至図２６を用いて説明する。なお、図９乃至図２６では、圧縮対象の構造化データをあたかも置換するような形で説明するが、これは処理内容を分かりやすくするためであって、上で述べたように圧縮対象の構造化データとは別に圧縮データを用意するようにする場合もある。
【００２７】
本例では、図３に示した圧縮対象の構造化データを圧縮するものとする。図９に、辞書格納部５に格納される辞書の一例を示す。上でも述べたように、データ「２００９／６／５」に対して符号「Ａ」が割り当てられ、データ「１０：１３」に対して符号「Ｂ」が割り当てられ、「空」データに対して符号「Ｄ」が割り当てられているものとする。
【００２８】
図１０に、第一行第１列が注目要素位置に設定された場合の状態を示す。第一行第１列の場合、一行前のデータがクリアされた状態であり、一行前のデータと一致することはない。従って、第一行第１列のデータが辞書に登録されているか判断し、データ「２００９／６／５」は登録されているので、対応する符号「Ａ」が、第一行第１列に設定される。
【００２９】
図１１に、第二行第１列が注目要素位置に設定された場合の状態を示す。第二行第１列の場合、一行前のデータが「２００９／６／５」に設定されているので、第二行第１列のデータと一行前のデータとは一致する。従って、第二行第１列には「空」が設定される。
【００３０】
図１２に、第三行第１列が注目要素位置に設定された場合の状態を示す。第三行第１列の場合、一行前のデータが「２００９／６／５」に設定されているので、第三行第１列のデータと一行前のデータとは一致する。従って、第三行第１列には「空」が設定される。
【００３１】
図１３に、第四行第１列が注目要素位置に設定された場合の状態を示す。第四行第１列の場合、一行前のデータが「２００９／６／５」に設定されているので、第四行第１列のデータと一行前のデータとは一致する。従って、第四行第１列には「空」が設定される。
【００３２】
図１４に、第一行第２列が注目要素位置に設定された場合の状態を示す。第一行第２列の場合、一行前のデータがクリアされた状態であるから、一行前のデータと一致することはない。従って、第一行第２列のデータが辞書に登録されているか判断し、データ「１０：１３」は登録されているので、対応する符号「Ｂ」が、第一行第２列に設定される。
【００３３】
図１５に、第二行第２列が注目要素位置に設定された場合の状態を示す。第二行第２列の場合、一行前のデータが「１０：１３」に設定されているので、第二行第２列のデータと一行前のデータとは一致する。従って、第二行第２列には「空」が設定される。
【００３４】
図１６に、第三行第２列が注目要素位置に設定された場合の状態を示す。第三行第２列の場合、一行前のデータが「１０：１３」に設定されているので、第三行第２列のデータと一行前のデータとは一致する。従って、第三行第２列には「空」が設定される。
【００３５】
図１７に、第四行第２列が注目要素位置に設定された場合の状態を示す。第四行第２列の場合、一行前のデータが「１０：１３」に設定されているので、第四行第１列のデータ「１０：２２」と一行前のデータとは一致しない。従って、第四行第２列のデータが辞書に登録されているか判断し、データ「１０：２２」は登録されていないので、元のデータ「１０：２２」が第四行第２列に設定される。
【００３６】
図１８に、第一行第３列が注目要素位置に設定された場合の状態を示す。第一行第３列の場合、一行前のデータがクリアされて「空」であるから、一行前のデータと一致することはない。従って、第一行第３列のデータが辞書に登録されているか判断し、データ「０００９２０９」は登録されていないので、元データが、第一行第３列に設定される。この列のデータは全て一行前のデータと一致しないので、説明をスキップする。
【００３７】
図１９に、第一行第４列が注目要素位置に設定された場合の状態を示す。第一行第４列の場合、一行前のデータがクリアされた状態であるから、一行前のデータと一致することはない。従って、第一行第４列のデータが辞書に登録されているか判断し、データ「１」は登録されていないので、元データ「１」が、第一行第４列に設定される。
【００３８】
図２０に、第二行第４列が注目要素位置に設定された場合の状態を示す。第二行第４列の場合、一行前のデータが「１」に設定されているので、第二行第４列のデータと一行前のデータとは一致する。従って、第二行第４列には「空」が設定される。
【００３９】
図２１に、第三行第４列が注目要素位置に設定された場合の状態を示す。第三行第４列の場合、一行前のデータが「１」に設定されているので、第三行第４列のデータ「２」と一行前のデータとは一致しない。従って、第三行第４列には元のデータ「２」が設定される。
【００４０】
図２２に、第四行第４列が注目要素位置に設定された場合の状態を示す。第四行第４列の場合、一行前のデータが「２」に設定されているので、第四行第４列のデータと一行前のデータとは一致する。従って、第四行第４列には「空」が設定される。
【００４１】
図２３に、第一行第５列が注目要素位置に設定された場合の状態を示す。第一行第５列の場合、一行前のデータがクリアされた状態であるから、一行前のデータと一致することはない。従って、第一行第５列のデータは「空」であるから、「空」を表す符号「Ｄ」が、第一行第５列に設定される。
【００４２】
図２４に、第二行第５列が注目要素位置に設定された場合の状態を示す。第二行第５列の場合、一行前のデータが「空」に設定されているので、第二行第５列のデータと一行前のデータとは一致する。従って、第二行第５列には「空」が設定される。
【００４３】
図２５に、第三行第５列が注目要素位置に設定された場合の状態を示す。第三行第５列の場合、一行前のデータが「空」に設定されているので、第三行第５列のデータと一行前のデータとは一致する。従って、第三行第５列には「空」が設定される。
【００４４】
図２６に、第四行第５列が注目要素位置に設定された場合の状態を示す。第四行第５列の場合、一行前のデータが「空」に設定されているので、第四行第５列のデータと一行前のデータとは一致する。従って、第四行第５列には「空」が設定される。
【００４５】
このようにして図４と同じ結果が得られるようになる。
【００４６】
なお、図３に示したデータは、例えばＣＳＶ形式であれば、図２７に示すようなデータである。すなわち、要素間にはカンマが配置され、列の最後のデータの後ろには改行コード（ＣＲＬＦ）が配置される。図２７の例では、属性名の行より下の行以降において、左側から５番目の列は「空」であるから、直前のカンマと改行コードの間にデータは存在しない。
【００４７】
さらに、図４に示したデータは、例えばＣＳＶ形式であれば、図２８に示すようなデータである。図２７と比較すれば、明らかに「空」の要素が増えている。従って、データ量も削減されている。
【００４８】
さらに、図４に示したデータは、図２９に示すようなデータフォーマットで第２構造化データ格納部６に格納される場合もある。図２９の例では、圧縮対象の構造化データと同様のデータ構造を有する第１のデータ構造と、第１のデータ構造の各要素位置に設定されているポインタが指しているデータが設定されている第２のデータとが含まれる。第１のデータ構造において、「ＮＵＬＬ」とされている要素については、図４において「空」が設定されていた要素であってポインタは設定されていない。第１のデータ構造において第一行第１列に設定されたポインタ１０１は、第２のデータにおいて、符号を表す「ＩＤ」と「Ａ」を表す「４１」を指している。さらに、第１のデータ構造において第一行第２列に設定されたポインタ１０２は、第２のデータにおいて、符号を表す「ＩＤ」と「Ｂ」を表す「４２」を指している。また、第１のデータ構造において第四行第２列に設定されているポインタ１０３は、第２のデータにおいて、データ「１０：２２」を表す「３１」「３０」「３ａ」「３２」「３２」「００」を指している。
【００４９】
さらに、第１のデータ構造において第一行第３列に設定されているポインタ１０４は、第２のデータにおいて、データ「０００９２０９」を表す「３０」「３０」「３０」「３９」「３２」「３０」「３１」「００」を指している。また、第１のデータ構造において第二行第３列に設定されているポインタ１０５は、第２のデータにおいて、データ「００５４２９８」を表す「３０」「３０」「３５」「３４」「３２」「３９」「３８」「００」を指している。さらに、第１のデータ構造において第三行第３列に設定されているポインタ１０６は、第２のデータにおいて、データ「００４１８３１」を表す「３０」「３０」「３４」「３１」「３８」「３３」「３１」「００」を指している。
【００５０】
さらに、第１のデータ構造において第四行第３列に設定されているポインタ１０７は、第２のデータにおいて、データ「００２０３９１」を表す「３０」「３０」「３２」「３０」「３３」「３９」「３１」「００」を指している。また、第１のデータ構造において第一行第４列に設定されているポインタ１０８は、第２のデータにおいて、データ「１」を表す「３１」「００」を指している。さらに、第１のデータ構造において第三行第４列に設定されているポインタ１０９は、第２のデータにおいて、データ「２」を表す「３２」「００」を指している。  また、第１のデータ構造において第四行第３列に設定されているポインタ１１０は、第２のデータにおいて、符号を表す「ＩＤ」と「Ｄ」を表す「４４」を指している。
【００５１】
なお、第１のデータ構造におけるポインタが各８バイトであり、第２のデータにおける１つのＡＳＣＩＩコードが１バイトとすると、第１のデータ構造で８０（＝８＊１０）バイトとなり、第２のデータで４８バイト（＝１＊８＊６）となり、合計で１２８バイトとなる。
【００５２】
このようなデータ構造を採用するようにしても良い。処理フローにおけるステップＳ１１、Ｓ１５、Ｓ２５及びＳ２７におけるデータの設定は、このようにポインタと当該ポインタで指し示されているデータとの組み合わせの設定である場合を含むものとする。
【００５３】
なお、同様の圧縮対象の構造化データを、従来技術であるランレングス符号化法を適用して圧縮すると、図３０に示すようなデータとなる。図３０は、図２９と同様に、ポインタを保持する第１のデータ構造と、ポインタにより指し示されているデータを含む第２のデータとを示している。図２９とは異なり、第２のデータには、圧縮対象の構造化データにおいて同一データが連続する場合にはレングスを表す「ＬＥＮ」とその長さを表すデータとが含まれる。このためデータ量が、図３０の例では、８バイト（＝（１＋１）＊４））分だけデータ量が多くなっている。
【００５４】
次に、上で述べたような方法で生成された圧縮データ（第２構造化データ格納部６及び辞書格納部５に格納されているデータである出力データ１０）を元の構造化データに戻すための解凍処理について説明する。図３１に、データ解凍装置の機能ブロック図を示す。本データ解凍装置は、（Ａ）データ圧縮装置により生成された圧縮データを格納する第２構造化データ格納部１４と、（Ｂ）データ圧縮装置により生成された辞書のデータを格納する辞書格納部１５と、（Ｃ）処理途中のデータを格納する直前データ格納部１２と、（Ｄ）第２構造化データ格納部１４と辞書格納部１５と直前データ格納部１２とを用いて解凍処理を実施する解凍処理部１１と、（Ｅ）解凍処理部１１により生成された構造化データを格納する第３構造化データ格納部１３とを有する。
【００５５】
次に、図３２乃至図４８を用いて解凍処理の処理フローを説明する。まず、解凍処理部１１は、第２構造化データ格納部１４に格納されている圧縮データを走査して、当該圧縮データに含まれる構造化データと同一のデータ構造を、第３構造化データ格納部１３において用意する（ステップＳ５１）。すなわち、圧縮データにおける構造化データと同一の行数及び列数のデータ構造を用意する。そして、解凍処理部１１は、圧縮データにおける構造化データの第一行第１列を注目要素位置に設定する（ステップＳ５３）。
【００５６】
そして、解凍処理部１１は、第２構造化データ格納部１４から、注目要素位置のデータを読み出し（ステップＳ５５）、読み出したデータが「空」であるか判断する（ステップＳ５７）。通常、第一行目において「空」であることはないので、ステップＳ６１に移行する。但し、第二行目以降については、「空」である場合もある。「空」であれば、解凍処理部１１は、直前データ格納部１２に格納されている一行前の設定データを、第３構造化データ格納部１３に用意されたデータ構造において注目要素位置と同一の要素位置に設定する（ステップＳ５９）。そしてステップＳ６５に移行する。
【００５７】
一方、読み出したデータが「空」ではない場合、解凍処理部１１は、読み出したデータが空を表す符号であるか判断する（ステップＳ６１）。空を表す符号が辞書に登録されている場合には、辞書格納部１５に格納されており、空を表す符号と、読み出したデータとが一致するか判断する。一致する場合には、解凍処理部１１は、「空」を、第３構造化データ格納部１３に用意されたデータ構造において注目要素位置と同一の要素位置に設定する（ステップＳ６３）。そしてステップＳ６５に移行する。一方、空を表す符号と一致しない場合には、端子Ｅを介して図３３の処理に移行する。
【００５８】
図３３の処理の説明に移行して、解凍処理部１１は、読み出したデータで辞書格納部１５に格納されている辞書を検索して、符号として辞書に登録されているか判断する（ステップＳ７１）。読み出したデータが符号として辞書に登録されている場合には、解凍処理部１１は、辞書格納部１５に格納されている辞書において符号に対応付けて登録されているデータを、第３構造化データ格納部１３に用意されたデータ構造において注目要素位置と同一の要素位置に設定する（ステップＳ７３）。処理は端子Ｆを介して図３２のステップＳ６５に移行する。一方、読み出したデータが符号として辞書に登録されていない場合には、解凍処理部１１は、読み出したデータをそのまま、第３構造化データ格納部１３に用意されたデータ構造において注目要素位置と同一の要素位置に設定する（ステップＳ７５）。この場合も、端子Ｆを介して図３２のステップＳ６５に移行する。
【００５９】
図３２の処理の説明に戻って、ステップＳ５９、Ｓ６３、Ｓ７３又はＳ７５の後に、解凍処理部１１は、第３構造化データ格納部１３に用意されたデータ構造において注目要素位置と同一の要素位置に設定されているデータを、直前データ格納部１２に一行前の設定データとして設定する（ステップＳ６５）。そして、解凍処理部１１は、第２構造化データ格納部１４における構造化データにおいて次の行が存在しているか判断する（ステップＳ６７）。次の行が存在している場合には、解凍処理部１１は、次の行の同一列を注目要素位置に設定する（ステップＳ６９）。そしてステップＳ５５に戻る。一方、次の行が存在しない場合には、端子Ｇを介して図３４の処理に移行する。
【００６０】
図３４の処理の説明に移行して、解凍処理部１１は、直前データ格納部１２に格納されている、一行前の設定データをクリアし（ステップＳ７７）、第２構造化データ格納部１４における構造化データにおいて次の列が存在するか判断する（ステップＳ７９）。クリアされた状態は「空」とは異なるものとする。次の列が存在している場合には、解凍処理部１１は、次の列の第一行を注目要素位置に設定する（ステップＳ８１）。そして端子Ｈを介して図３２のステップＳ５５に戻る。一方、次の列が存在しない場合には、処理を終了する。
【００６１】
以上のような処理を実施することによって、圧縮データを元のデータに戻すことができる。
【００６２】
次に、図３２乃至図３４に示した処理フローを具体的なデータに対して適用した場合の処理内容について図３５乃至図４８を用いて説明する。なお、図３５乃至図４８では、圧縮データをあたかも置換するような形で説明するが、これは処理内容を分かりやすくするためであって、上で述べたように圧縮データとは別に解凍データを用意するようにする場合もある。
【００６３】
本例では、図４に示した圧縮データに含まれる構造化データを解凍するものとする。辞書も図９に示すようなものが与えられるものとする。
【００６４】
図３５に、第一行第１列が注目要素位置に設定された場合の状態を示す。第一行第１列の場合、一行前の設定データはクリアされた状態であり、一行前の設定データと一致することはない。従って、第一行第１列の符号「Ａ」が辞書に登録されているか判断し、登録されているので、図３６に示すように、対応するデータ「２００９／６／５」が、第一行第１列に設定される。
【００６５】
次に、図３６に示すように、ハッチングが付された第二行第１列が注目要素位置に設定される。第二行第１列に設定されているデータは「空」であり、一行前の設定データが「２００９／６／５」である。従って、図３７に示すように、第二行第１列には「２００９／６／５」が設定される。
【００６６】
次に、図３７に示すように、ハッチングが付された第三行第１列が注目要素位置に設定される。第三行第１列に設定されているデータは「空」であり、一行前の設定データが「２００９／６／５」である。従って、図３８に示すように、第三行第１列には「２００９／６／５」が設定される。
【００６７】
次に、図３８に示すように、ハッチングが付された第四行第１列が注目要素位置に設定される。第四行第１列に設定されているデータは「空」であり、一行前の設定データが「２００９／６／５」である。従って、図３９に示すように、第四行第１列には「２００９／６／５」が設定される。
【００６８】
次に、図３９に示すように、第一行第２列が注目要素位置に設定される。第一行第２列の場合、一行前のデータが「空」であり、一行前のデータと一致することはない。従って、第一行第２列の符号「Ｂ」が辞書に登録されているか判断し、登録されているので、図４０に示すように、対応するデータ「１０：１３」が、第一行第２列に設定される。
【００６９】
次に、図４０に示すように、ハッチングが付された第二行第２列が注目要素位置に設定される。第二行第２列に設定されているデータは「空」であり、一行前の設定データが「１０：１３」である。従って、図４１に示すように、第二行第２列には「１０：１３」が設定される。
【００７０】
次に、図４１に示すように、ハッチングが付された第三行第２列が注目要素位置に設定される。第三行第２列に設定されているデータは「空」であり、一行前の設定データが「１０：１３」である。従って、図４２に示すように、第三行第２列には「１０：１３」が設定される。
【００７１】
次に、図４２に示すように、ハッチングが付された第四行第２列が注目要素位置に設定される。第四行第２列に設定されているデータは「１０：２２」であり、一行前の設定データ「１０：１３」とは異なっている。また、データ「１０：２２」は辞書にも登録されていない。従って、第四行第２列には「１０：２２」が設定される。
【００７２】
なお、商品ＩＤの列については、辞書にも登録されておらず、全ての行の値が異なるので、全て図４２に示す値が、そのまま対応する要素位置に設定される。従って、これらについての処理の説明は省略する。
【００７３】
次に、図４３に示すように、第一行第４列が注目要素位置に設定される。第一行第４列の場合、一行前のデータが「空」であり、一行前のデータと一致することはない。従って、第一行第４列のデータ「１」が辞書に登録されているか判断する。ここではデータ「１」は登録されていないので、図４４に示すように、読み出したデータ「１」が、第一行第４列にそのまま設定される。
【００７４】
次に、図４４に示すように、ハッチングが付された第二行第４列が注目要素位置に設定される。第二行第４列に設定されているデータは「空」であり、一行前の設定データが「１」である。従って、図４５に示すように、第二行第４列には「１」が設定される。
【００７５】
次に、図４５に示すように、ハッチングが付された第三行第４列が注目要素位置に設定される。第三行第４列に設定されているデータは「２」であり、一行前の設定データが「１」であるから、それらは一致しない。従って、第一行第４列のデータ「２」が辞書に登録されているか判断する。ここではデータ「２」は登録されていないので、図４６に示すように、読み出したデータ「２」が、第三行第４列にそのまま設定される。
【００７６】
次に、図４６に示すように、ハッチングが付された第四行第４列が注目要素位置に設定される。第四行第４列に設定されているデータは「空」であり、一行前の設定データが「２」である。従って、図４７に示すように、第四行第４列には「２」が設定される。
【００７７】
次に、図４７に示すように、第一行第５列が注目要素位置に設定される。第一行第５列の場合、一行前のデータが「空」であり、一行前のデータと一致することはない。従って、第一行第４列の符号「Ｄ」が何を表しているかを判断するか、又は辞書に登録されているか判断する。ここでは符号「Ｄ」は「空」を意味するので、図４８に示すように、「空」が、第一行第５列に設定される。
【００７８】
次に、図４８に示すように、ハッチングが付された第二行第５列が注目要素位置に設定される。第二行第５列に設定されているデータは「空」であり、一行前の設定データが「空」である。従って、図４８に示すように、第二行第５列には「空」が設定される。四行目まで以下同じである。
【００７９】
以上本技術の実施の形態を説明したが、本技術は上で述べた実施の形態に限定されるものではない。例えば、上で示したデータ圧縮装置及びデータ解凍装置の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成とは一致しない。
【００８０】
また、処理フローについても、処理結果が一致するならば、ステップの順番を入れ替えたり、並列実行するようにしても良い。特に、本実施の形態では、列毎に異なる属性を有するデータを前提に圧縮を行っているので、各列の処理は分離可能である。すなわち、列毎に複数のプロセッサで並列処理することが可能である。なお、行と列とは入れ替え可能であるが、同一データが連続して出現しやすい方向を列とするのが効率的である。
【００８１】
なお、上で述べたデータ圧縮装置及びデータ解凍装置は、コンピュータ装置であって、図４９に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８２】
以上述べた本実施の形態をまとめると、以下のようになる。
【００８３】
本圧縮方法は、行と列とが規定されている構造化データを圧縮する圧縮方法であり、記憶装置に格納されている構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納するステップと、構造化データにおける各列において、圧縮処理を実施するステップとを含む。そして、上で述べた圧縮処理が、現在処理中の行に設定されている第１のデータが直前の行に設定されている第２のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定するステップと、第１のデータが第２のデータと一致しない場合、現在処理中の行に空が設定されているか判断し、現在処理中の行に空が設定されている場合には圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、現在処理中の行に空が設定されていない場合には辞書格納部に格納されている辞書に応じて第１のデータ又は当該第１のデータに対応付けられている符号を圧縮データにおける同一要素位置におけるデータとして設定するステップとを含む。
【００８４】
行と列とが規定されている構造化データであることを有効活用して、圧縮後のデータ量を削減することができる。
【００８５】
なお、上で述べた構造化データが、リレーショナルデータベースのデータ又はＣＳＶ形式のデータである場合もある。近年よく用いられる、このようなデータ形式のデータを、効率的に圧縮することができる。
【００８６】
さらに、上で述べた圧縮データが、構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第１データと上記ポインタにより指し示され且つ構造化データに含まれるデータ又は当該データに対応する符号が設定された第２データとを含む第１データ構造と、ＣＳＶ形式のデータと、リレーショナルデータベースのデータとのいずれかであるようにしてもよい。どの形式のデータであっても、他の方式よりもデータ量が削減できる。
【００８７】
また、本解凍方法は、行と列とが規定されている構造化データを含む圧縮データを解凍する解凍方法であり、記憶装置に格納されている構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ圧縮データにおける構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定するステップと、現在処理中の行に空が設定されていない場合、現在処理中の行に空を表す符号が設定されているか判断し、現在処理中の行に空を表す符号が設定されている場合には、解凍データにおける同一要素位置に空を設定するステップと、現在処理中の行に空を表す符号が設定されていない場合には、データと当該データに対応する符号との対応付けデータであり且つ辞書データ格納部に格納されている辞書に応じて、現在処理中の行に設定されているデータ又は現在処理中の行に設定されている符号に対応付けられているデータを、解凍データにおける同一要素位置のデータとして設定するステップとを含む。
【００８８】
上で述べた圧縮方法によって圧縮されたデータを、適切に解凍することができる。
【００８９】
また、上で述べた圧縮データが、構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第１データと上記ポインタにより指し示され且つ構造化データに含まれるデータ又は当該データに対応する符号が設定された第２データとを含む第１データ構造と、ＣＳＶ形式のデータと、リレーショナルデータベースのデータとのいずれかである場合もある。
【００９０】
また、解凍データが、リレーショナルデータベースのデータ又はＣＳＶ形式のデータである場合もある。
【００９１】
第２の態様に係る圧縮方法は、行と列とが規定されている構造化データを圧縮する圧縮方法であり、同一列において同一のデータが設定された、連続する複数の行を特定するステップ（図５０：ステップＳ１００１）と、特定された複数の行において空以外のデータが設定されている場合、当該複数の行における２行目以降のデータとして、空を設定するステップ（図５０：ステップＳ１００３）と、特定された複数の行において空が設定されている場合、当該複数の行における１行目のデータとして、空に対応する符号を設定するステップ（図５０：ステップＳ１００５）とを含む。
【００９２】
また、第２の態様に係る解凍方法は、行と列とが規定されている構造化データを解凍する解凍方法であり、同一列において、空が設定された、連続する１以上の行を特定するステップ（図５１：ステップＳ１１０１）と、当該特定された１以上の行に対し、その直前の行に設定されたデータを設定するステップ（図５１：ステップＳ１１０３）と、空に対応する符号が設定された行に対し、空を設定するステップ（図５１：ステップＳ１１０５）とを含む。
【００９３】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【００９４】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９５】
（付記１）
行と列とが規定されている構造化データを圧縮する圧縮プログラムであって、
同一列において同一のデータが設定された、連続する複数の行を特定するステップと、
特定された前記複数の行において空以外のデータが設定されている場合、当該複数の行における２行目以降のデータとして、空を設定するステップと、
特定された前記複数の行において空が設定されている場合、当該複数の行における１行目のデータとして、空に対応する符号を設定するステップと、
を、コンピュータに実行させる圧縮プログラム。
【００９６】
（付記２）
行と列とが規定されている構造化データを解凍する解凍プログラムであって、
同一列において、空が設定された、連続する１以上の行を特定するステップと、
当該特定された１以上の行に対し、その直前の行に設定されたデータを設定するステップと、
空に対応する符号が設定された行に対し、空を設定するステップと、
を、コンピュータに実行させるための解凍プログラム。
【００９７】
（付記３）
行と列とが規定されている構造化データを圧縮する圧縮方法であって、
同一列において同一のデータが設定された、連続する複数の行を特定するステップと、
特定された前記複数の行において空以外のデータが設定されている場合、当該複数の行における２行目以降のデータとして、空を設定するステップと、
特定された前記複数の行において空が設定されている場合、当該複数の行における１行目のデータとして、空に対応する符号を設定するステップと、
を含み、コンピュータに実行される圧縮方法。
【００９８】
（付記４）
行と列とが規定されている構造化データを解凍する解凍方法であって、
同一列において、空が設定された、連続する１以上の行を特定するステップと、
当該特定された１以上の行に対し、その直前の行に設定されたデータを設定するステップと、
空に対応する符号が設定された行に対し、空を設定するステップと、
を含み、コンピュータに実行される解凍方法。
【００９９】
（付記５）
行と列とが規定されている構造化データを圧縮する圧縮装置であって、
同一列において同一のデータが設定された、連続する複数の行を特定する手段と、
特定された前記複数の行において空以外のデータが設定されている場合、当該複数の行における２行目以降のデータとして、空を設定する手段と、
特定された前記複数の行において空が設定されている場合、当該複数の行における１行目のデータとして、空に対応する符号を設定する手段と、
を有する圧縮装置。
【０１００】
（付記６）
行と列とが規定されている構造化データを解凍する解凍装置であって、
同一列において、空が設定された、連続する１以上の行を特定する手段と、
当該特定された１以上の行に対し、その直前の行に設定されたデータを設定する手段と、
空に対応する符号が設定された行に対し、空を設定する手段と、
を有する解凍装置。
【０１０１】
（付記７）
行と列とが規定されている構造化データを圧縮する圧縮プログラムであって、
記憶装置に格納されている前記構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納するステップと、
前記構造化データにおける各列において、圧縮処理を実施するステップと、
を、コンピュータに実行させ、
前記圧縮処理が、
現在処理中の行に設定されている第１のデータが直前の行に設定されている第２のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ前記構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定するステップと、
前記第１のデータが前記第２のデータと一致しない場合、前記現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には前記圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、前記現在処理中の行に空が設定されていない場合には前記辞書格納部に格納されている前記辞書に応じて前記第１のデータ又は当該第１のデータに対応付けられている符号を前記圧縮データにおける同一要素位置におけるデータとして設定するステップと、
を含む
圧縮プログラム。
【０１０２】
（付記８）
前記構造化データが、リレーショナルデータベースのデータ又はＣＳＶ形式のデータである
付記１記載の圧縮プログラム。
【０１０３】
（付記９）
前記圧縮データが、前記構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第１データと前記ポインタにより指し示され且つ前記構造化データに含まれるデータ又は当該データに対応する符号が設定された第２データとを含む第１データ構造と、ＣＳＶ形式のデータと、リレーショナルデータベースのデータとのいずれかである
付記１又は２記載の圧縮プログラム。
【０１０４】
（付記１０）
行と列とが規定されている構造化データを含む圧縮データを解凍する解凍プログラムであって、
記憶装置に格納されている前記構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ前記圧縮データにおける前記構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定するステップと、
前記現在処理中の行に空が設定されていない場合、前記現在処理中の行に空を表す符号が設定されているか判断し、前記現在処理中の行に空を表す符号が設定されている場合には、前記解凍データにおける同一要素位置に空を設定するステップと、
前記現在処理中の行に空を表す符号が設定されていない場合には、データと当該データに対応する符号との対応付けデータであり且つ辞書データ格納部に格納されている辞書に応じて、前記現在処理中の行に設定されているデータ又は前記現在処理中の行に設定されている符号に対応付けられているデータを、前記解凍データにおける同一要素位置のデータとして設定するステップと、
を、コンピュータに実行させるための解凍プログラム。
【０１０５】
（付記１１）
前記圧縮データが、前記構造化データと同一の構造を有し且つ空以外の場合ポインタが設定された第１データと前記ポインタにより指し示され且つ前記構造化データに含まれるデータ又は当該データに対応する符号が設定された第２データとを含む第１データ構造と、ＣＳＶ形式のデータと、リレーショナルデータベースのデータとのいずれかである
付記４記載の圧縮プログラム。
【０１０６】
（付記１２）
前記解凍データが、リレーショナルデータベースのデータ又はＣＳＶ形式のデータである
付記４又は５記載の圧縮プログラム。
【０１０７】
（付記１３）
行と列とが規定されている構造化データを圧縮する圧縮方法であって、
記憶装置に格納されている前記構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納するステップと、
前記構造化データにおける各列において、圧縮処理を実施するステップと、
を含み、コンピュータに実行され、
前記圧縮処理が、
現在処理中の行に設定されている第１のデータが直前の行に設定されている第２のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ前記構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定するステップと、
前記第１のデータが前記第２のデータと一致しない場合、前記現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には前記圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、前記現在処理中の行に空が設定されていない場合には前記辞書格納部に格納されている前記辞書に応じて前記第１のデータ又は当該第１のデータに対応付けられている符号を前記圧縮データにおける同一要素位置におけるデータとして設定するステップと、
を含む
圧縮方法。
【０１０８】
（付記１４）
行と列とが規定されている構造化データを含む圧縮データを解凍する解凍方法であって、
記憶装置に格納されている前記構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ前記圧縮データにおける前記構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定するステップと、
前記現在処理中の行に空が設定されていない場合、前記現在処理中の行に空を表す符号が設定されているか判断し、前記現在処理中の行に空を表す符号が設定されている場合には、前記解凍データにおける同一要素位置に空を設定するステップと、
前記現在処理中の行に空を表す符号が設定されていない場合には、データと当該データに対応する符号との対応付けデータであり且つ辞書データ格納部に格納されている辞書に応じて、前記現在処理中の行に設定されているデータ又は前記現在処理中の行に設定されている符号に対応付けられているデータを、前記解凍データにおける同一要素位置のデータとして設定するステップと、
を含み、コンピュータに実行される解凍方法。
【０１０９】
（付記１５）
行と列とが規定されている構造化データを圧縮するデータ圧縮装置であって、
記憶装置に格納されている前記構造化データにおける少なくとも一部の要素位置に設定されているデータと当該データに対応する符号とを対応付けたデータである辞書を生成し、辞書格納部に格納する辞書生成部と、
前記構造化データにおける各列において、圧縮処理を実施する圧縮処理部と、
を有し、
前記圧縮処理部が、
現在処理中の行に設定されている第１のデータが直前の行に設定されている第２のデータと一致するか判断し、一致する場合には圧縮データ格納部に格納され且つ前記構造化データと同一の構造を有するデータを含む圧縮データにおける同一要素位置のデータとして空を設定し、
前記第１のデータが前記第２のデータと一致しない場合、前記現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には前記圧縮データにおける同一要素位置のデータとして当該空を表す符号を設定し、前記現在処理中の行に空が設定されていない場合には前記辞書格納部に格納されている前記辞書に応じて前記第１のデータ又は当該第１のデータに対応付けられている符号を前記圧縮データにおける同一要素位置におけるデータとして設定する
データ圧縮装置。
【０１１０】
（付記１６）
行と列とが規定されている構造化データを含む圧縮データを解凍するデータ解凍装置であって、
記憶装置に格納されている前記構造化データにおけるデータと当該データに対応する符号との対応付けデータである辞書を格納する辞書データ格納部と、
前記構造化データにおける各列において、現在処理中の行に空が設定されているか判断し、前記現在処理中の行に空が設定されている場合には当該現在処理中の行の直前の行のデータとして設定されたデータと同一のデータを、解凍データ格納部に格納され且つ前記圧縮データにおける前記構造化データと同一の構造を有する解凍データにおける同一要素位置のデータとして設定し、前記現在処理中の行に空が設定されていない場合、前記現在処理中の行に空を表す符号が設定されているか判断し、前記現在処理中の行に空を表す符号が設定されている場合には、前記解凍データにおける同一要素位置に空を設定し、前記現在処理中の行に空を表す符号が設定されていない場合には、前記辞書データ格納部に格納されている前記辞書に応じて、前記現在処理中の行に設定されているデータ又は前記現在処理中の行に設定されている符号に対応付けられているデータを、前記解凍データにおける同一要素位置のデータとして設定する解凍処理部と、
を有するデータ解凍装置。
【符号の説明】
【０１１１】
１  第１構造化データ格納部    ２  圧縮処理部    ３  直前データ格納部
４  辞書生成部    ５  辞書格納部    ６  第２構造化データ格納部
１１  解凍処理部    １２  直前データ格納部
１３  第３構造化データ格納部    １４  第２構造化データ格納部
１５  辞書格納部
【図１】
0005549177.tif 000002
【図２】
0005549177.tif 000003
【図３】
0005549177.tif 000004
【図４】
0005549177.tif 000005
【図５】
0005549177.tif 000006
【図６】
0005549177.tif 000007
【図７】
0005549177.tif 000008
【図８】
0005549177.tif 000009
【図９】
0005549177.tif 000010
【図１０】
0005549177.tif 000011
【図１１】
0005549177.tif 000012
【図１２】
0005549177.tif 000013
【図１３】
0005549177.tif 000014
【図１４】
0005549177.tif 000015
【図１５】
0005549177.tif 000016
【図１６】
0005549177.tif 000017
【図１７】
0005549177.tif 000018
【図１８】
0005549177.tif 000019
【図１９】
0005549177.tif 000020
【図２０】
0005549177.tif 000021
【図２１】
0005549177.tif 000022
【図２２】
0005549177.tif 000023
【図２３】
0005549177.tif 000024
【図２４】
0005549177.tif 000025
【図２５】
0005549177.tif 000026
【図２６】
0005549177.tif 000027
【図２７】
0005549177.tif 000028
【図２８】
0005549177.tif 000029
【図２９】
0005549177.tif 000030
【図３０】
0005549177.tif 000031
【図３１】
0005549177.tif 000032
【図３２】
0005549177.tif 000033
【図３３】
0005549177.tif 000034
【図３４】
0005549177.tif 000035
【図３５】
0005549177.tif 000036
【図３６】
0005549177.tif 000037
【図３７】
0005549177.tif 000038
【図３８】
0005549177.tif 000039
【図３９】
0005549177.tif 000040
【図４０】
0005549177.tif 000041
【図４１】
0005549177.tif 000042
【図４２】
0005549177.tif 000043
【図４３】
0005549177.tif 000044
【図４４】
0005549177.tif 000045
【図４５】
0005549177.tif 000046
【図４６】
0005549177.tif 000047
【図４７】
0005549177.tif 000048
【図４８】
0005549177.tif 000049
【図４９】
0005549177.tif 000050
【図５０】
0005549177.tif 000051
【図５１】
0005549177.tif 000052