(57)【特許請求の範囲】
【請求項１】
構造化データを圧縮処理するデータ圧縮装置であって、
圧縮の対象となる複数の構造化データと該複数の構造化データの各々に対応する複数のスキーマファイルとを入力する入力手段と、
入力された複数のスキーマファイルの内、少なくとも２つのスキーマファイルが含まれるスキーマファイルの組に対して、該スキーマファイルの組に含まれるボキャブラリから共通のボキャブラリ集合を導出し、該共通のボキャブラリ集合に含まれるボキャブラリの各々に対し、異なるインデックスを関連付ける単一のインデックスデータを生成するインデックスデータ生成手段と、
前記生成された単一のインデックスデータに基づいて、前記スキーマファイルの組に対応する複数の構造化データの各々に含まれるボキャブラリを、対応するインデックスに置換する置換手段と、
を備え、
前記スキーマファイルは、対応する構造化データ内で使用されるボキャブラリを含み、
前記インデックスデータ生成手段は、入力された複数のスキーマファイルに含まれるスキーマファイル間の類似度を導出する類似度導出手段を備えており、
前記スキーマファイルの組は、前記類似度導出手段により導出された類似度が予め指定された値以上であるスキーマファイルの組である
ことを特徴とするデータ圧縮装置。
【請求項２】
前記類似度導出手段は、入力された複数のスキーマファイルの各々に対し当該スキーマファイルに含まれるボキャブラリの一覧表を生成し、該一覧表に基づいて前記複数のスキーマファイルに含まれるスキーマファイル間の類似度を導出する
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項３】
前記共通のボキャブラリ集合は、前記スキーマファイルの組に含まれるボキャブラリの和集合である
ことを特徴とする請求項１又は２に記載のデータ圧縮装置。
【請求項４】
前記類似度導出手段は、前記和集合に基づいて前記スキーマファイルの組に含まれるスキーマファイルの各々に対応するベクトルを生成し類似度を導出する
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項５】
前記類似度導出手段は、前記複数のスキーマファイルの各々で定義された名前空間の文字列に基づいて類似度を導出する
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項６】
請求項１乃至５の何れか一項に記載のデータ圧縮装置によって圧縮処理された圧縮構造化データを伸長処理するデータ伸長装置であって、
伸長の対象となる圧縮構造化データを入力する入力手段と、
入力された圧縮構造化データが圧縮された際に前記データ圧縮装置により生成されたインデックスデータを取得する取得手段と、
前記インデックスデータに基づいて圧縮構造化データに含まれるインデックスを対応するボキャブラリに置換する置換手段と、
を備えることを特徴とするデータ伸長装置。
【請求項７】
構造化データを圧縮処理するデータ圧縮装置におけるデータ圧縮方法であって、
前記データ圧縮装置の入力手段が、圧縮の対象となる複数の構造化データと該複数の構造化データの各々に対応する複数のスキーマファイルとを入力する入力工程と、
前記データ圧縮装置のインデックスデータ生成手段が、入力された複数のスキーマファイルの内、少なくとも２つのスキーマファイルが含まれるスキーマファイルの組に対して、該スキーマファイルの組に含まれるボキャブラリから共通のボキャブラリ集合を導出し、該共通のボキャブラリ集合に含まれるボキャブラリの各々に対し、異なるインデックスを関連付ける単一のインデックスデータを生成するインデックスデータ生成工程と、
前記データ圧縮装置の置換手段が、前記生成された単一のインデックスデータに基づいて、前記スキーマファイルの組に対応する複数の構造化データの各々に含まれるボキャブラリを、対応するインデックスに置換する置換工程と、
を含み、
前記スキーマファイルは、対応する構造化データ内で使用されるボキャブラリを含み、
前記インデックスデータ生成工程は、入力された複数のスキーマファイルに含まれるスキーマファイル間の類似度を導出する類似度導出工程を含んでおり、
前記スキーマファイルの組は、前記類似度導出工程により導出された類似度が予め指定された値以上であるスキーマファイルの組である
ことを特徴とするデータ圧縮方法。
【請求項８】
コンピュータを請求項１乃至５の何れか一項に記載のデータ圧縮装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化データの圧縮技術に関するものである。
【背景技術】
【０００２】
インターネット上で交換するデータを記述するための言語として、標準化団体であるワールドワイド・ウェブ・コンソーシアム（Ｗ３Ｃ）が仕様を策定しているＸＭＬ（eXtensive Markup Language）がある。ＸＭＬは、データ内容を要素や属性などの部品単位で記述し、データを構造化して表現することができる。そして、ＸＭＬで記述されるデータ内で使用される要素、属性の定義情報を表現するＸＭＬスキーマが用いられる。ＸＭＬスキーマを記述するための言語には、Ｗ３Ｃが仕様を策定しているＸＭＬ  Ｓｃｈｅｍａや、国際標準化機構（ＩＳＯ）が仕様を策定しているＲｅｌａｘ  ＮＧなどがある。
【０００３】
ＸＭＬで記述されたデータは、一般的にはタグと呼ばれる文字列を使って要素や属性を記述するテキスト形式である。しかし、バイナリＸＭＬと呼ばれる技術を使ってＸＭＬで記述されたデータのサイズを圧縮する方法も考えられている（例えば、特許文献１）。バイナリＸＭＬ技術では、構造化されたデータを構成する要素名、属性名などの文字列を、変換テーブルを用いて、より小さいサイズで表現可能な符号に置換して圧縮する手法が用いられる。
【特許文献１】特開２００５−２１５９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のデータ圧縮の際に、要素名、属性名をインデックス化する変換テーブルを作成する必要がある。そして、この変換テーブルは、個別の構造化データごと、もしくはＳＶＧ言語などＸＭＬスキーマで定義された言語ごとに変換テーブルを作成する必要があった。すなわち、複数の異なる構造化データを圧縮する場合、構造化データ分もしくは、構造化データを記述する言語種別数分変換テーブルが必要であった。
【０００５】
そのため、例えば、Ｗｅｂサービスを使ってネットワーク上の複数の機器から機器の設定情報などのＸＭＬデータを収集して一箇所に保存するような場合、メモリや記憶媒体などのリソースの浪費が発生する場合があった。つまり、機器の設定情報のスキーマが機器のバージョンごとにほとんど変わらない場合でも、ボキャブラリが重複する冗長な変換テーブルをバージョンごとに複数作成しなければならなかった。
【課題を解決するための手段】
【０００６】
上述の問題点を解決するために、本発明のデータ圧縮装置は以下の構成を備える。すなわち、構造化データを圧縮処理するデータ圧縮装置であって、圧縮の対象となる複数の構造化データと該複数の構造化データの各々に対応する複数のスキーマファイルとを入力する入力手段と、入力された複数のスキーマファイルの内、少なくとも２つのスキーマファイルが含まれるスキーマファイルの組に対して、該スキーマファイルの組に含まれるボキャブラリから共通のボキャブラリ集合を導出し、該共通のボキャブラリ集合に含まれるボキャブラリの各々に対し、異なるインデックスを関連付ける単一のインデックスデータを生成するインデックスデータ生成手段と、前記生成された単一のインデックスデータに基づいて、前記スキーマファイルの組に対応する複数の構造化データの各々に含まれるボキャブラリを、対応するインデックスに置換する置換手段と、を備え、前記スキーマファイルは、対応する構造化データ内で使用されるボキャブラリを含み、前記インデックスデータ生成手段は、入力された複数のスキーマファイルに含まれるスキーマファイル間の類似度を導出する類似度導出手段を備えており、前記スキーマファイルの組は、前記類似度導出手段により導出された類似度が予め指定された値以上であるスキーマファイルの組である。
【０００７】
上述の問題点を解決するために、本発明のデータ圧縮方法は以下の構成を備える。すなわち、構造化データを圧縮処理するデータ圧縮装置におけるデータ圧縮方法であって、前記データ圧縮装置の入力手段が、圧縮の対象となる複数の構造化データと該複数の構造化データの各々に対応する複数のスキーマファイルとを入力する入力工程と、前記データ圧縮装置のインデックスデータ生成手段が、入力された複数のスキーマファイルの内、少なくとも２つのスキーマファイルが含まれるスキーマファイルの組に対して、該スキーマファイルの組に含まれるボキャブラリから共通のボキャブラリ集合を導出し、該共通のボキャブラリ集合に含まれるボキャブラリの各々に対し、異なるインデックスを関連付ける単一のインデックスデータを生成するインデックスデータ生成工程と、前記データ圧縮装置の置換手段が、前記生成された単一のインデックスデータに基づいて、前記スキーマファイルの組に対応する複数の構造化データの各々に含まれるボキャブラリを、対応するインデックスに置換する置換工程と、を含み、前記スキーマファイルは、対応する構造化データ内で使用されるボキャブラリを含み、前記インデックスデータ生成工程は、入力された複数のスキーマファイルに含まれるスキーマファイル間の類似度を導出する類似度導出工程を含んでおり、前記スキーマファイルの組は、前記類似度導出工程により導出された類似度が予め指定された値以上であるスキーマファイルの組である。
【発明の効果】
【０００８】
本発明によれば、構造化データの圧縮処理をより効率的に実行可能とする技術を提供することができる。
【発明を実施するための最良の形態】
【０００９】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施形態は例示であり、本発明の範囲を限定する趣旨のものではない。
【００１０】
（第１実施形態）
本発明に係るデータ圧縮装置の第１実施形態として、ＸＭＬ形式で記述した構造化データを圧縮するデータ圧縮装置を例に挙げて以下に説明する。
【００１１】
＜装置構成＞
図１は、第１実施形態に係るデータ圧縮装置の内部構成を示す図である。なお、当該データ圧縮装置により圧縮された構造化データを元の構造化データに復元するデータ伸長装置も併せて示している。
【００１２】
データ圧縮装置１００は、ＲＡＭ１１０、記憶部１３０、ＣＰＵ１４０が含まれる。また、以下で詳細に説明するボキャブラリ抽出部１１１、スキーマ類似度算出部１１２、類似スキーマ選択部１１３、ボキャブラリ収集部１２０、インデックスデータ生成部１１４、データ圧縮処理部１１５が含まれる。
【００１３】
記憶部１３０は、例えばハードディスクドライブ（ＨＤＤ）などにより構成され、圧縮の対象となる構造化データ１３２と、構造化データ１３２に対応するスキーマ（スキーマファイル）１３１が格納される。また、圧縮処理の結果生成される、圧縮管理データ１３５、インデックスデータ１３３、圧縮データ（圧縮構造化データ）１３４が生成されて格納される。
【００１４】
ボキャブラリ抽出部１１１は、スキーマ１３１から要素名、属性名などのボキャブラリを抽出して、スキーマごとに後述するボキャブラリ一覧表１１７を生成する機能部である。
【００１５】
スキーマ類似度算出部１１２は、ボキャブラリ一覧表１１７に基づいて各スキーマ間の類似度を算出し、スキーマ類似度一覧表１１８に登録する機能部である。類似スキーマ選択部１１３は、後述するスキーマ類似度一覧表１１８を参照して、類似するスキーマをグループ分けし、スキーマグループ一覧表１１６に結果を登録する機能部である。インデックスデータ生成部１１４は、スキーマグループ一覧表１１６とボキャブラリ一覧表１１７とを参照して後述するスキーマグループごとにインデックスデータ１３３を生成する機能部である。
【００１６】
データ圧縮処理部１１５は、インデックスデータ１３３を参照して構造化データ１３２内のボキャブラリをインデックス値に置換する機能部である。なお、データ圧縮処理部１１５は、インデックスデータ１３３を特定し、圧縮管理データ１３５に書き出す機能も有する。
【００１７】
ボキャブラリ収集部１２０は、各スキーマに対応するボキャブラリ一覧表１１７を参照し、各スキーマに含まれるのボキャブラリの和集合を導出する機能部である。
【００１８】
データ伸長装置２００は、ＲＡＭ２１０、記憶部２３０、ＣＰＵ２４０が含まれる。また、以下で詳細に説明するデータ伸長処理部２１１、インデックスデータ選択部２１２が含まれる。
【００１９】
データ伸長処理部２１１は、インデックスデータ２３２を参照して圧縮データ２３３中のインデックス値をボキャブラリに置換して構造化データ２３４を復元する機能部である。
【００２０】
インデックスデータ選択部２１２は、圧縮データ２３３を伸長する際に、後述する圧縮管理データ２３１を参照してどのインデックスデータ２３２を使用するのかを特定する機能部である。
【００２１】
なお、以下の説明では、データ圧縮装置１００とデータ伸長装置２００とを別体の装置として説明するが、同一の装置内に組み込んでも良い。例えば、同一のＰＣ上で、本発明のデータ圧縮を実行するプログラムとデータ伸長を実行するプログラムとを動作させるよう構成してもよい。
【００２２】
また、ここでは、データ圧縮装置１００とデータ伸長装置２００とは、各種データをネットワークケーブル３００を介して送受信可能なよう構成されているとして説明する。ただし、ハードディスクやＣＤ−ＲＯＭなどの記録媒体などを介してデータの受け渡しを行ってもよい。
【００２３】
＜データの構造＞
図２は、ＩＳＯで仕様が策定されているスキーマ言語であるＲｅｌａｘ  ＮＧ（ｈｔｔｐ：／／ｗｗｗ．ｒｅｌａｘｎｇ．ｏｒｇ／ｓｐｅｃ−２００１１２０３．ｈｔｍｌ）で記述したスキーマの例を示す図である。ここでは、書籍リストに係る異なる２つのバージョンのスキーマである”booklist1.rng”（図２（ａ））および”booklist2.rng”（図２（ｂ））を示している。また、住所リストに係る異なる２つのバージョンのスキーマである”addresslist1.rng”（図２（ｃ））および”addresslist2.rng”（図２（ｄ））を示している。
【００２４】
図３は、Ｗ３Ｃで仕様が策定されているＸＭＬ形式で記述した構造化データの例を示す図である。なお、”booklist1.xml”（図３（ａ））および”booklist2.xml”（図３（ｂ））はそれぞれ、”booklist1.rng”および”booklist2.rng”をスキーマとした構造化データである。また、”addresslist1.xml”（図３（ｃ））および”addresslist2.xml”（図３（ｄ））はそれぞれ、”addresslist1.rng”および”addresslist2.rng”をスキーマとした構造化データである。
【００２５】
図７は、構造化データとスキーマとの関係を記述する構造化データ一覧表の例を示す図である。
【００２６】
構造化データ一覧表には、構造化データ名欄７０１に記述された構造化データが従うスキーマのファイル名がスキーマ名欄７０２に記述されている。なお、以下の説明では、データ圧縮処理の前に、予め操作者やアプリケーションによって構造化データ一覧表が登録されていることを想定している。しかし、構造化データ内に記述されたスキーマの場所に関する情報（例えば、Ｗ３Ｃ  ＸＭＬ  ＳｃｈｅｍａのｓｃｈｅｍａＬｏｃａｔｉｏｎ属性）や、名前空間ＵＲＩを参照して自動生成するよう構成してもよい。
【００２７】
＜装置の動作：データ圧縮処理＞
次に、第１実装形態であるデータ圧縮装置１００におけるデータ圧縮処理の流れについて説明する。
【００２８】
図１０は、データ圧縮装置におけるデータ圧縮処理の概略フローチャートである。なお以下のステップは、データ圧縮装置１００が上述した各機能部を制御することにより実現される。
【００２９】
ステップＳ１００１では、ボキャブラリと、当該ボキャブラリと置換するインデックス値との対応を定義するインデックスデータ１３３を生成する。
【００３０】
ステップＳ１００２では、ステップＳ１００１で生成したインデックスデータ１３３を参照し、構造化データ１３２内のボキャブラリ（要素名、属性名など）をインデックス値に置換することにより圧縮データ１３４を生成する。
【００３１】
以下では、図１０に示した各ステップの詳細について説明する。
【００３２】
図１３は、インデックスデータ生成処理（Ｓ１００１）の詳細フローチャートである。なお、以下のフローは例えばユーザによる操作の受付などにより開始される。
【００３３】
ステップＳ１３０１では、インデックスデータ生成部１１４はボキャブラリ抽出部１１１に、構造化データ１３２の文法を定義した各スキーマ１３１のボキャブラリ一覧表１１７を生成するよう要求する。つまり、ここでは図２に示した４つのスキーマのそれぞれに対してのボキャブラリの一覧表の生成を要求する。
【００３４】
ステップＳ１３０２では、ボキャブラリ抽出部１１１は、後述するボキャブラリ一覧生成処理を実行し、各スキーマに対応するボキャブラリ一覧表１１７を生成する。
【００３５】
図４は、スキーマに対応するボキャブラリ一覧表の例を示す図である。なお、図４（ａ）〜（ｄ）はそれぞれ、図２（ａ）〜（ｄ）に示したスキーマに対するボキャブラリ一覧表であり、スキーマで定義されたボキャブラリ（要素名、属性名）が登録されている。
【００３６】
ステップＳ１３０３では、インデックスデータ生成部１１４はスキーマ類似度算出部１１２に、スキーマ類似度一覧表１１８を生成するよう要求する。つまり、ここでは図２に示した４つのスキーマ間の類似度の一覧表の生成を要求する。
【００３７】
ステップＳ１３０４では、スキーマ類似度算出部１１２は、後述するスキーマ類似度一覧生成処理を実行し、各スキーマ間のボキャブラリの類似度を導出する。そして、スキーマ類似度一覧表１１８を生成する。
【００３８】
図６は、スキーマ類似度一覧表の例を示す図である。２つのスキーマの類似度は、それぞれのスキーマ名が記述された行と列で指定される項目に登録される。ここでは、類似度を０から１までの数字で表しており、数字が大きいほど類似度が高いことを示している。
【００３９】
ステップＳ１３０５では、インデックスデータ生成部１１４は類似スキーマ選択部１１３に、類似度が予め設定された値以上（ここでは０．５とする）であるか否かに基づいて類似したスキーマごとにグループ分けするよう要求する。
【００４０】
ステップＳ１３０６では、類似スキーマ選択部１１３は、スキーマ類似度一覧表１１８を参照し、スキーマをグループ分けする。例えば、スキーマ類似度一覧表１１８に図６の値が設定されていた場合、まず、閾値が０．５以上のスキーマの組み合わせをリストアップする。そして、スキーマの重複選択を行わないよう類似度が高い組み合わせから順番に選択して１グループにする。選択されなかったスキーマは、１スキーマを１グループとする。ここでは、類似度０．９３である（booklist1.rng，  booklist2.rng）の組み合わせと、類似度０．７１である（addresslist1.rng, addresslist2.rng）の組み合わせと、がそれぞれグループとして選択される。その後、類似スキーマ選択部１１３は、スキーマグループ一覧表１１６に、”00000001”から順番にグループ番号を付与し、スキーマ名と共にスキーマ名を登録する。
【００４１】
図１５は、スキーマグループ一覧表の例を示す図である。スキーマグループ一覧表は、グループごとに登録されるスキーマ名欄１５０２と、”00000001”から順番に付与されたグループ番号欄１５０１と、で構成される。
【００４２】
ステップＳ１３０７からステップＳ１３１１の処理は、ステップＳ１３０６で分けられたグループの各々に対して実行される。
【００４３】
ステップＳ１３０８では、ボキャブラリ収集部１２０は、スキーマグループ一覧表１１６のスキーマ名欄を参照し、グループに属するスキーマのファイル名一覧を取得する。
【００４４】
ステップＳ１３０９では、ボキャブラリ収集部１２０は、ステップＳ１３０８で取得したスキーマのファイル名に基づいて、当該スキーマに対応するボキャブラリ一覧表１１７をすべて参照し、ボキャブラリの和集合を生成する。例えば、グループ番号”00000001”に属するスキーマは、”booklist1.rng”および”booklist2.rng”であるため、対応するボキャブラリ一覧表に登録してあるボキャブラリの和集合をとると、
｛ｌｉｓｔ，  ｂｏｏｋ，  ｉｓｂｎ，  ｎａｍｅ，  ｐｒｉｃｅ，  ｓｔｏｃｋ，  ｗｒｉｔｅｒ｝
となる。
【００４５】
ステップＳ１３１０では、インデックスデータ生成部１１４は、ステップＳ１３０９で生成した和集合の要素に、インデックス値を関連付ける。インデックス値としては例えば、＃１、＃２・・・といった番号が使用できる。そして、この関連付けの対応表をインデックスデータ１３３として生成する。
【００４６】
図５は、インデックスデータの例を示す図である。スキーマグループ一覧表のグループ番号に対応するインデックスデータは、グループ番号＋拡張子（ここでは”idx”）で命名される。図５（ａ）および（ｂ）はそれぞれグループ番号”00000001”および”00000002”に対応するインデックスデータである。なお、ここでは、インデックス番号（＃１，＃２・・・）とボキャブラリとがコンマで区切られ記述されたＣＳＶ形式の例を示している。しかし、両者の対応を定義するものであれば、バイナリデータなど他の任意の形式で記述してかまわない。
【００４７】
図１１は、ボキャブラリ一覧生成処理（Ｓ１３０２）の詳細フローチャートである。
【００４８】
ボキャブラリ抽出部１１１は、ボキャブラリ一覧表生成要求をされると、以下の処理をスキーマ１３１の数だけ繰り返す。つまり、ここでは４つのスキーマについて計４回繰り返す。
【００４９】
ステップＳ１１０２では、ボキャブラリ抽出部１１１が空のボキャブラリ一覧表１１７を生成する。
【００５０】
ステップＳ１１０３では、スキーマ１３１を読み込み（入力手段）、スキーマ１３１の定義の最初から最後まで順番にたどる（Ｓ１１０４〜Ｓ１１０８）。そして、要素名、属性名が定義されていた場合は、ボキャブラリ一覧表１１７にボキャブラリとして追加する（Ｓ１１０５、Ｓ１１０６、Ｓ１１０７）。
【００５１】
例えば、図２（ａ）のスキーマの場合、要素の定義（ｅｌｅｍｅｎｔ要素）の名前（ｎａｍｅ属性）の値を順番に抽出し、抽出された要素名
｛ｌｉｓｔ，  ｂｏｏｋ，  ｉｓｂｎ，  ｎａｍｅ，  ｐｒｉｃｅ，  ｓｔｏｃｋ｝
がボキャブラリ（共通のボキャブラリ集合）として登録される。
【００５２】
図１２は、スキーマ類似度一覧生成処理（Ｓ１３０４）の詳細フローチャートである。
【００５３】
スキーマ類似度算出部１１２（類似度導出手段）は、スキーマ類似度一覧生成要求を受け取ると、空のスキーマ類似度一覧表１１８を生成し（Ｓ１２０１）、以下の処理を比較する２つのスキーマの組み合わせの数だけ繰り返す。つまり、各スキーマファイル間の類似度を導出する。
【００５４】
なおここでは、ベクトルの角度の余弦値でスキーマ間の類似度を導出に、文書検索などで使われるベクトル空間モデルを適用する。
【００５５】
例えば類似度を導出する関数は以下のように定義することができる。
【００５６】
ｓｉｍ（ｉ，ｊ）  ＝  ｃｏｓＴ  ＝  （Ｖｉ，Ｖｊの内積）／（Ｖｉの大きさ＊Ｖｊの大きさ）
＝  （Ｖｉ・Ｖｊ）／｜Ｖｉ｜｜Ｖｊ｜
ここで、
ｓｉｍ（ｉ，ｊ）：  スキーマｉとスキーマｊの類似度
Ｖｉ：  スキーマｉのボキャブラリを表すベクトル
Ｖｊ：  スキーマｊのボキャブラリを表すベクトル
Ｔ：  Ｖｉ，Ｖｊのなす角度
である。算出される値は０から１の間の値であり、０の場合は類似する部分が無いことを示し、１の場合は完全一致することを示す。
【００５７】
まず、スキーマ類似度算出部１１２は、ボキャブラリ一覧表１１７を参照して、選択した２つのスキーマのボキャブラリの和集合を生成する（Ｓ１２０３、Ｓ１２０４）。例えば、図２の”booklist1.rng”および”booklist2.rng”の組み合わせを選択した場合、それぞれのボキャブラリ一覧表１１７は、図４（ａ）および（ｂ）であるので、その和集合は、
｛ｌｉｓｔ，  ｂｏｏｋ，  ｉｓｂｎ，  ｎａｍｅ，  ｐｒｉｃｅ，  ｓｔｏｃｋ，  ｗｒｉｔｅｒ｝
となる。
【００５８】
次に、スキーマ類似度算出部１１２は、和集合内の各要素が各スキーマのボキャブラリ一覧表に存在するかどうかを１（存在する）または０（存在しない）で表現し、ベクトルの成分とする（Ｓ１２０５、Ｓ１２０６）。
【００５９】
例えば、図４（ａ）から以下の成分をもつベクトルが生成される。
【００６０】
（１，  １，  １，  １，  １，  １，  ０）
同様に、図４（ｂ）から以下の成分をもつベクトルが生成される。
【００６１】
（１，  １，  １，  １，  １，  １，  １）
ステップＳ１２０８では、スキーマ類似度算出部１１２は、上述の導出関数を用い、類似度を求め、スキーマ類似度一覧表１１８に値を登録する。例えば、”booklist1.rng”と”booklist2.rng”との類似度は以下のよう導出される。
【００６２】
ｓｉｍ（booklist1.rng, booklist2.rng）
＝  （Ｖbooklist1.rng・Ｖbooklist2.rng）／｜Ｖbooklist1.rng｜｜Ｖbooklist2.rng｜
＝  （１＊１）＋（１＊１）＋（１＊１）＋（１＊１）＋（１＊１）＋（１＊１）＋（０＊１）
／（１＋１＋１＋１＋１＋１＋０）１／２  ＊  （１＋１＋１＋１＋１＋１＋１）１／２
＝  ６／（４２）１／２  ＝  ０．９３
同様に、他のスキーマ間の類似度はそれぞれ以下のように算出される。
【００６３】
ｓｉｍ（booklist1.rng, addresslist1.rng）  ＝  ０．３３
ｓｉｍ（booklist1.rng, addresslist2.rng）  ＝  ０．３３
ｓｉｍ（booklist2.rng, addresslist1.rng）  ＝  ０．３１
ｓｉｍ（booklist2.rng, addresslist2.rng）  ＝  ０．３１
ｓｉｍ（addresslist1.rng, addresslist2.rng）  ＝  ０．７１
図１４は、ボキャブラリ置換処理（Ｓ１００２）の詳細フローチャートである。
【００６４】
データ圧縮処理部１１５は、構造化データ１３２のデータ圧縮要求を受けると、以下の処理を圧縮する構造化データの数だけ繰り返す。
【００６５】
ステップＳ１４０２では、データ圧縮処理部１１５は、構造化データ一覧表１１９を参照し、構造化データの文法定義を行うスキーマ名を取得する。
【００６６】
ステップＳ１４０２では、データ圧縮処理部１１５は、スキーマグループ一覧表１１６を参照してグループ番号を取得する。
【００６７】
ステップＳ１４０３では、圧縮に使用するインデックスデータ１３３を決定する。なお、ここでは、（スキーマグループのグループ番号）．ｉｄｘをスキーマインデックスデータのファイル名としている。
【００６８】
例えば、図３（ａ）の構造化データ”booklist1.xml”を圧縮する場合、構造化データ一覧表を参照するとスキーマ名”booklist1.rng”が登録されている。また、スキーマグループ一覧表を参照すると、スキーマ名”booklist1.rng”がグループ番号”00000001”のグループに登録されている。そのため、”00000001.idx”がインデックスデータであると決定される。
【００６９】
ステップＳ１４０４では、データ圧縮処理部１１５は、圧縮後の構造化データである圧縮データ１３４と決定したインデックス名とを記述した圧縮管理データ１３５を生成あるいは追記する。なお、ここでは、圧縮データ１３４の名前を、元の構造化データ１３２の名前の拡張子を”.comp”に変更した名前としている。
【００７０】
ステップＳ１４０６では、データ圧縮処理部１１５は、インデックスデータ１３３を読み込み、構造化データ１３２内の要素名、属性名をインデックスデータに記述されているインデックス値に逐次置換する。
【００７１】
ステップＳ１４０７では、ステップＳ１４０６の置換処理が終了したデータを圧縮データ１３４として生成する。
【００７２】
例えば、インデックスデータが”00000001.idx”、構造化データが”booklist1.xml”であった場合、置換により生成された圧縮データ１３４は、”booklist1.comp”として記憶部１３０に格納される。
【００７３】
図８は、圧縮データの例を示す図である。図８（ａ）〜（ｄ）は、それぞれ図３（ａ）〜（ｄ）の構造化データを圧縮した際の圧縮データを示している。図から分かるように、各タグのボキャブラリがインテックス番号に置換され、全体の文字数（つまりデータ容量）が小さくなっていることが分かる。上述したように、ここでは、圧縮データ名を構造化データ名の拡張子を”xml”から”comp”に変更したものを使用している。
【００７４】
図９は、圧縮管理データの例を示す図である。この例では、圧縮データ名とデータ伸長処理に必要なインデックスデータ名とがコンマで区切られたＣＳＶ形式で記述した例を示している。しかし、両者の対応が定義できればバイナリデータなど、どのような形式で記述してもよい。
【００７５】
＜データ伸長処理＞
次に、データ伸長装置２００におけるデータ伸長処理全体の流れについて説明する。なお、以下の説明では、圧縮データ２３３、インデックスデータ２３２、圧縮管理データ２３１は、データ伸長装置２００の記憶部２３０にコピーされているものとする。ただし、これらのデータをネットワークケーブル３００を介してデータ圧縮装置１００の記憶部１３０から読み取るよう構成してもよい。
【００７６】
図１６は、データ伸長装置におけるデータ伸長処理のフローチャートである。
【００７７】
データ伸長装置２００は、データ伸長処理要求を受け取ると、データ伸長処理部２１１は、対象となる圧縮データ２３３の数だけ以下の処理を繰り返す。
【００７８】
ステップＳ１６０２では、データ伸長処理部２１１は、インデックスデータ選択部２１２に、伸長する圧縮データ名を指定して対応するインデックスデータの名前を取得要求する。
【００７９】
ステップＳ１６０３では、インデックスデータ選択部２１２は、圧縮管理データ２３１を読み込み、圧縮データ名に対応するインデックスデータ名を取得し、データ伸長処理部２１１に渡す。
【００８０】
例えば、図８（ａ）の圧縮データ”booklist1.comp”を伸長する場合、圧縮管理データ（図９）を参照すると、インデックスデータ名は”00000001.idx”である。
【００８１】
ステップＳ１６０４では、データ伸長処理部２１１は、取得したインデックスデータ名のインデックスデータ２３２と圧縮データ２３３とを読み込む。
【００８２】
ステップＳ１６０５では、圧縮データ２３３内のインデックス値を、インデックスデータ２３２に記述されているボキャブラリ（要素名、属性名など）に逐次置換する。
【００８３】
ステップＳ１６０６では、ステップＳ１６０５の置換処理が終了したデータを構造化データ２３４として生成する。例えば、図８（ａ）の圧縮データ  ”booklist1.comp”内のインデックス値は、インデックスデータ”00000001.idx”に登録されているボキャブラリに置換される。そして、構造化データである図３（ａ）”booklist1.xml”が復元される。
【００８４】
以上説明したとおり第１実施形態によれば、類似度に基づいてグループ化された複数のスキーマに対して単一のインデックスデータを生成する。このように構成することにより、変換テーブルの数が減少し全体として変換テーブル群に要するサイズを縮小することが出来る。特に、同じ言語の異バージョンなど、ボキャブラリが似ている言語で記述された構造化データが複数混在する場合に特に効果がある。
【００８５】
そのため、データ圧縮装置は大容量の記憶部を搭載することなく効率的に構造化ファイルを圧縮することが可能となり、リソースを大きくすることが困難な家電機器や携帯機器などで有効である。
【００８６】
また、得られた圧縮データは、インデックスデータに基づいて容易に構造化データに復元可能である。
【００８７】
（変形例）
上述の第１実施形態において、スキーマ類似度一覧生成処理（Ｓ１３０４）においては、ボキャブラリのベクトル化によりスキーマ間の類似度を導出した。しかし、類似度の導出に他の手法を適用しても良い。
【００８８】
例えば、ＸＭＬデータでは、ボキャブラリが属するスキーマを名前空間ＵＲＩ定義で表現することが可能である。例えば、図３（ａ）および（ｂ）の構造化データでは、名前空間ＵＲＩとして以下の文字列が指定されている。
【００８９】
（ａ）  ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｏｒｇ／ｂｏｏｋｌｉｓｔ／１．０
（ｂ）  ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｏｒｇ／ｂｏｏｋｌｉｓｔ／２．０
このように、名前空間ＵＲＩの文字列を決める際、ＵＲＩの末尾に策定日付や数字でバージョン番号を指定するような運用を行うことにより、言語バージョン間で多くのボキャブラリが共有されていると仮定できる。その場合、名前空間ＵＲＩの文字列比較で行うことにより類似度の算出処理を高速化することができる。
【００９０】
例えば類似度を導出する関数は以下のように定義することができる。
【００９１】
ｓｉｍ（ｉ，ｊ）
＝  １  名前空間ＵＲＩのバージョン番号を除く文字列（部分文字列）が同一
＝  ０    （上記以外）
つまり、部分文字列が同一である場合を類似度が高いと判定する。
【００９２】
この導出式により、図２の各スキーマの類似度は以下のように算出される。
【００９３】
ｓｉｍ（booklist1.rng, booklist2.rng）  ＝  １
ｓｉｍ（booklist1.rng, addresslist1.rng）  ＝  ０
ｓｉｍ（booklist1.rng, addresslist2.rng）  ＝  ０
ｓｉｍ（booklist2.rng, addresslist1.rng）  ＝  ０
ｓｉｍ（booklist2.rng, addresslist2.rng）  ＝  ０
ｓｉｍ（addresslist1.rng, addresslist2.rng）  ＝  １
図１７は、変形例に係るスキーマ類似度一覧表を示す図である。
【００９４】
このように構成することにより、各スキーマ間の類似度の導出を高速に実行することができる。これにより、複数のスキーマに対するグループ化を高速に実行でき、圧縮処理全体に必要な時間を大幅に低減することが可能となる。
【００９５】
（他の実施形態）
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００９６】
なお、本発明は、前述した実施形態の機能を実現するプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置が、供給されたプログラムコードを読み出して実行することによっても達成される。従って、本発明の機能処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。
【００９７】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００９８】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭなどがある。
【００９９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１００】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１０１】
【図１】第１実施形態に係るデータ圧縮装置の内部構成を示す図である。
【図２】スキーマの例を示す図である。
【図３】構造化データの例を示す図である。
【図４】スキーマに対応するボキャブラリ一覧表の例を示す図である。
【図５】インデックスデータの例を示す図である。
【図６】スキーマ類似度一覧表の例を示す図である。
【図７】構造化データとスキーマとの関係を記述する構造化データ一覧表の例を示す図である。
【図８】圧縮データの例を示す図である。
【図９】圧縮管理データの例を示す図である。
【図１０】データ圧縮装置におけるデータ圧縮処理の概略フローチャートである。
【図１１】ボキャブラリ一覧生成処理の詳細フローチャートである。
【図１２】スキーマ類似度一覧生成処理の詳細フローチャートである。
【図１３】インデックスデータ生成処理の詳細フローチャートである。
【図１４】ボキャブラリ置換処理の詳細フローチャートである。
【図１５】スキーマグループ一覧表の例を示す図である。
【図１６】データ伸長装置におけるデータ伸長処理のフローチャートである。
【図１７】変形例に係るスキーマ類似度一覧表を示す図である。
【図１】
0005379372.tif 000002
【図２】
0005379372.tif 000003
【図３】
0005379372.tif 000004
【図４】
0005379372.tif 000005
【図５】
0005379372.tif 000006
【図６】
0005379372.tif 000007
【図７】
0005379372.tif 000008
【図８】
0005379372.tif 000009
【図９】
0005379372.tif 000010
【図１０】
0005379372.tif 000011
【図１１】
0005379372.tif 000012
【図１２】
0005379372.tif 000013
【図１３】
0005379372.tif 000014
【図１４】
0005379372.tif 000015
【図１５】
0005379372.tif 000016
【図１６】
0005379372.tif 000017
【図１７】
0005379372.tif 000018