(57)【要約】【課題】データ蓄積の際に構造情報を少ない物理格納領域サイズで格納するとともに、検索の際の検索処理コストが低い情報処理装置、情報処理方法、および情報処理プログラムを提供する。【解決手段】情報処理システム１は、構造化データを蓄積するデータベースであるリレーショナルデータベース１００と、変換装置２００と、構造化データを処理するアプリケーション３００と、を備えている。変換装置２００は、蓄積時に構造化データを変換して複数のテーブル上のレコードに分解する蓄積変換装置２０１と、検索時に検索式を変換し検索を実行する検索装置２０２と、構造化データのスキーマ情報を保持するスキーマリポジトリ２０３と、を具備する構成である。そして、構造化データの格納時に単一整数値識別子としての構造情報を各レコードに格納するとともに、構造化データの検索時に構造情報列による整数演算でテーブル間を結合する。【選択図】図１
2005202850.tif 000002
【特許請求の範囲】
【請求項１】
構造化データをリレーショナルデータベースに格納するとともに、該リレーショナルデータベースから前記構造化データを検索する情報処理装置であって、
前記構造化データのスキーマ情報を記憶するスキーマ情報記憶手段と、
前記スキーマ情報の各クラスに対応させて前記リレーショナルデータベース上にテーブルをそれぞれ作成するとともに、前記各クラスの親子関係を対応するそれぞれのテーブル間に定義し、前記各クラスの属性を対応する前記テーブルのカラムとし、前記テーブルそれぞれに、前記構造化データの構造を表す構造情報を格納する構造情報カラムを追加するテーブル作成手段と、
前記スキーマ情報に基づいて、前記構造化データのインスタンス中の各オブジェクトを前記テーブル上のレコードにそれぞれ変換し、その際、変換されたレコードの前記構造情報カラムに前記構造情報を反映した一意の単一整数値を構造情報値として設定して、前記リレーショナルデータベースに登録する構造化データ登録手段と、
前記スキーマ情報に基づいて、前記構造化データを検索するための構造化データ検索式を、検索条件が指定されたテーブルと検索結果として取得するテーブルとを前記構造情報カラムに関する整数演算を用いて結合するデータベース検索式に変換し、該データベース検索式に従って前記リレーショナルデータベースを検索する構造化データ検索手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記レコードの前記構造情報カラムに設定される構造情報値は、前記レコードの親レコードの構造情報値に、前記レコードと前記レコードの親レコード間の倍率を乗じて計算した値に、さらに同一親レコードを有する兄弟レコード間で一意に決定されるレコード番号を加算した値であることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記構造情報カラムに関する整数演算は、前記検索条件が指定されたテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索条件が指定されたテーブルの前記倍率で、除した整数値としての第１の商と、検索結果として取得するテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索結果として取得するテーブルの前記倍率で、除した整数値としての第２の商と、を比較することを特徴とする請求項２記載の情報処理装置。
【請求項４】
構造化データをリレーショナルデータベースに格納するとともに、該リレーショナルデータベースから前記構造化データを検索する情報処理方法であって、
前記構造化データのスキーマ情報を所定の記憶手段に記憶するスキーマ情報記憶ステップと、
前記スキーマ情報の各クラスに対応させて前記リレーショナルデータベース上にテーブルをそれぞれ作成するとともに、前記各クラスの親子関係を対応するそれぞれのテーブル間に定義し、前記各クラスの属性を対応する前記テーブルのカラムとし、前記テーブルそれぞれに、前記構造化データの構造を表す構造情報を格納する構造情報カラムを追加するテーブル作成ステップと、
前記スキーマ情報に基づいて、前記構造化データのインスタンス中の各オブジェクトを前記テーブル上のレコードにそれぞれ変換し、その際、変換されたレコードの前記構造情報カラムに前記構造情報を反映した一意の単一整数値を構造情報値として設定して、前記リレーショナルデータベースに登録する構造化データ登録ステップと、
前記スキーマ情報に基づいて、前記構造化データを検索するための構造化データ検索式を、検索条件が指定されたテーブルと検索結果として取得するテーブルとを前記構造情報カラムに関する整数演算を用いて結合するデータベース検索式に変換し、該データベース検索式に従って前記リレーショナルデータベースを検索する構造化データ検索ステップと、
を有することを特徴とする情報処理方法。
【請求項５】
前記レコードの前記構造情報カラムに設定される構造情報値は、前記レコードの親レコードの構造情報値に、前記レコードと前記レコードの親レコード間の倍率を乗じて計算した値に、さらに同一親レコードを有する兄弟レコード間で一意に決定されるレコード番号を加算した値であることを特徴とする請求項４記載の情報処理方法。
【請求項６】
前記構造情報カラムに関する整数演算は、前記検索条件が指定されたテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索条件が指定されたテーブルの前記倍率で、除した整数値としての第１の商と、検索結果として取得するテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索結果として取得するテーブルの前記倍率で、除した整数値としての第２の商と、を比較することを特徴とする請求項５記載の情報処理方法。
【請求項７】
構造化データをリレーショナルデータベースに格納するとともに、該リレーショナルデータベースから前記構造化データを検索するためのコンピュータが読み取り可能な情報処理プログラムであって、
前記構造化データのスキーマ情報を所定の記憶手段に記憶するスキーマ情報記憶ステップと、
前記スキーマ情報の各クラスに対応させて前記リレーショナルデータベース上にテーブルをそれぞれ作成するとともに、前記各クラスの親子関係を対応するそれぞれのテーブル間に定義し、前記各クラスの属性を対応する前記テーブルのカラムとし、前記テーブルそれぞれに、前記構造化データの構造を表す構造情報を格納する構造情報カラムを追加するテーブル作成ステップと、
前記スキーマ情報に基づいて、前記構造化データのインスタンス中の各オブジェクトを前記テーブル上のレコードにそれぞれ変換し、その際、変換されたレコードの前記構造情報カラムに前記構造情報を反映した一意の単一整数値を構造情報値として設定して、前記リレーショナルデータベースに登録する構造化データ登録ステップと、
前記スキーマ情報に基づいて、前記構造化データを検索するための構造化データ検索式を、検索条件が指定されたテーブルと検索結果として取得するテーブルとを前記構造情報カラムに関する整数演算を用いて結合するデータベース検索式に変換し、該データベース検索式に従って前記リレーショナルデータベースを検索する構造化データ検索ステップと、
を前記コンピュータに実行させることを特徴とする情報処理プログラム。
【請求項８】
前記レコードの前記構造情報カラムに設定される構造情報値は、前記レコードの親レコードの構造情報値に、前記レコードと前記レコードの親レコード間の倍率を乗じて計算した値に、さらに同一親レコードを有する兄弟レコード間で一意に決定されるレコード番号を加算した値であることを特徴とする請求項７記載の情報処理プログラム。
【請求項９】
前記構造情報カラムに関する整数演算は、前記検索条件が指定されたテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索条件が指定されたテーブルの前記倍率で、除した整数値としての第１の商と、検索結果として取得するテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索結果として取得するテーブルの前記倍率で、除した整数値としての第２の商と、を比較することを特徴とする請求項８記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベースに対し、構造化データの蓄積および検索を行う情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
近年、情報処理の分野では、処理される情報が複雑になり、様々なシステムで、構造化データをデータベースに格納する必要性が高くなっている。そのため、構造化データの格納が可能なように拡張されたオブジェクト指向データベース（ＯＯＤＢ）や、オブジェクトリレーショナルデータベース（ＯＲＤＢ）も開発されているが、操作の複雑さや、導入コストの高さなどから普及が進んでいるわけではない。よって、構造化データを既存のリレーショナルデータベース（ＲＤＢ）に格納することが広く行われている。既存のリレーショナルデータベースでは、単一のカラムとして、単純型（単一の数値、文字列）を扱うことはできるが、複雑な構造を持つ型を格納することはできないため、入れ子構造を持つ構造化データを、親子関係のある複数のテーブル群に分解し、構造化データ中の値要素を各カラムに格納し、構造化データの構造を表す情報を何らかの手段で格納する必要がある。
【０００３】
従来、図２０で例示するようなクラス構成で定義された、図２１に例示する構造化データのインスタンスを、リレーショナルデータベースに格納する場合、図２２のＥＲ図に示すようなスキーマ（図中ＦＫは外部キー）でデータベースを構築し、構造化データを図２３に示すようにオブジェクトをレコードに変換し、その際、各レコードに個々のレコードを識別する識別子（ＩＤ）と、親レコードを識別する親ＩＤを設定する方法があった。この方法では、検索する際に、図２４の検索式（テーブルＤのカラムと、テーブルＥのカラムを条件として、構造化データのインスタンスを特定し、特定した構造化データのインスタンスにおける、テーブルＢの指定のカラムを返却することを意味する）に示すように、全ての検索経路中のテーブル（Ａ，Ｂ，Ｃ，Ｄ，Ｅ）を結合していた。
【０００４】
また、識別子として、図２５のＥＲ図に示すスキーマでデータベースを構築し、識別子として２つの整数値（先行順ＩＤ、後行順ＩＤ）に用いた方法（例えば、非特許文献１参照。）があった。この方法では、格納時には、図２６のデータベースへ格納するレコード群に示すように、木構造中のオブジェクトに対して、先行順巡回で付与した番号を先行順ＩＤカラムに格納し、後行順巡回で付与した番号を後行順ＩＤカラムに格納することで、２つの整数値のみで構造情報を表現でき、検索時には、図２７の検索式（図２４と同義）に示すように、階層構造中の祖先、子孫のテーブル間の結合を、途中のテーブルを飛ばして行うことが可能となるため、結合するテーブル数を低減することができた。（図２７の例ではテーブルＣを飛ばして、ＡとＤ、ＡとＥの結合が行えるため、結合するテーブル数はＡ，Ｂ，Ｄ，Ｅの４つに低減された）
さらに、識別子として、Ｄｅｗｅｙの１０進分類法（例えば、非特許文献２参照。）を用いた方法があった。この方法では、図２８のＥＲ図に示すスキーマでデータベースを構築し、図２９のデータベースへ格納するレコード群に示すように、各レコードの識別子として、親レコードの識別子に、自レコードの兄弟間における順番を表す数字を、ピリオド区切りで付加した可変長文字列（“１”“１．１”，“１．１．１”など）を用いるものである（図２９のDeweyOrderカラム）。この方法では、図３０の検索式（図２４と同義）に示すように、識別子文字列のピリオドで区切られた数字に対し、頭から指定個数の数字を比較し、一致していたら真を返す関数「ｍａｔｃｈ（文字列１，文字列２、比較個数）」を利用することで、検索時に結合するテーブル数をさらに低減させることができる（図３０では、Ｂ，Ｄ，Ｅの３つに低減された）。
【非特許文献１】Paul. F. Dietz,“Maintaining order in a linked list”, ACM Symposium on Theory of Computing, pages 122-127,1982.
【非特許文献２】Donald E. Knuth, “The Art of Computer Programming”, Addison-Wesley Publishing Company, 1973.邦訳：筧捷彦・米田信夫共訳、“基本算法−情報構造”、サイエンス社、１９８７年）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来、構造化データをリレーショナルデータベースに格納する際には、親ＩＤを用いてテーブルを結合する方法では、蓄積の際に、構造情報を格納する物理記憶領域が少なくて済む（ＩＤと親ＩＤの２つの整数値）という利点があるが、検索の際に、検索経路中の全てのテーブルを結合する必要があり、検索処理コストが高い、という問題があった。
【０００６】
また、先行順巡回と後行順巡回の２つの番号をＩＤに用いた方法では、同様に、蓄積の際に、構造情報を格納する物理記憶領域が少なくて済む（先行順ＩＤと後行順ＩＤの２つの整数値）という利点があるが、検索の際に、先祖子孫関係にあるテーブルを結合で途中のテーブルの結合をスキップすることができるが、共通の先祖テーブルを持つ子孫テーブル同士を結合するには、共通の先祖テーブルを挟んで結合する必要があり、子孫テーブル同士を直接結合することはできない、という問題があった。
【０００７】
また、Ｄｅｗｅｙの１０進分類法を用いる方法では、蓄積の際に、構造情報を格納のため、個々のテーブルに対し可変長文字列による識別子が必要であり、多くの物理記憶領域が必要となる、という問題、およびリレーショナルデータベースにおいて、検索の際に、条件となるテーブルと、検索対象となるテーブルの結合のみで検索結果を得ることができるが、その際、文字列を解析して比較する結合処理を行うため、総合的に見て検索処理コストが高い、という問題があった。
【０００８】
本発明は、上述した事情に鑑みてなされたものであり、データ蓄積の際に構造情報を少ない物理格納領域サイズで格納するとともに、検索の際の検索処理コストが低い情報処理装置、情報処理方法、および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係る情報処理装置は、次のように構成される。
【００１０】
本発明に係る情報処理装置は、構造化データをリレーショナルデータベースに格納するとともに、該リレーショナルデータベースから前記構造化データを検索する情報処理装置であって、前記構造化データのスキーマ情報を記憶するスキーマ情報記憶手段と、前記スキーマ情報の各クラスに対応させて前記リレーショナルデータベース上にテーブルをそれぞれ作成するとともに、前記各クラスの親子関係を対応するそれぞれのテーブル間に定義し、前記各クラスの属性を対応する前記テーブルのカラムとし、前記テーブルそれぞれに、前記構造化データの構造を表す構造情報を格納する構造情報カラムを追加するテーブル作成手段と、前記スキーマ情報に基づいて、前記構造化データのインスタンス中の各オブジェクトを前記テーブル上のレコードにそれぞれ変換し、その際、変換されたレコードの前記構造情報カラムに前記構造情報を反映した一意の単一整数値を構造情報値として設定して、前記リレーショナルデータベースに登録する構造化データ登録手段と、前記スキーマ情報に基づいて、前記構造化データを検索するための構造化データ検索式を、検索条件が指定されたテーブルと検索結果として取得するテーブルとを前記構造情報カラムに関する整数演算を用いて結合するデータベース検索式に変換し、該データベース検索式に従って前記リレーショナルデータベースを検索する構造化データ検索手段と、を有する。
【００１１】
また、本発明に係る情報処理方法は、次のように構成される。
【００１２】
本発明に係る情報処理方法は、構造化データをリレーショナルデータベースに格納するとともに、該リレーショナルデータベースから前記構造化データを検索する情報処理方法であって、前記構造化データのスキーマ情報を所定の記憶手段に記憶するスキーマ情報記憶ステップと、前記スキーマ情報の各クラスに対応させて前記リレーショナルデータベース上にテーブルをそれぞれ作成するとともに、前記各クラスの親子関係を対応するそれぞれのテーブル間に定義し、前記各クラスの属性を対応する前記テーブルのカラムとし、前記テーブルそれぞれに、前記構造化データの構造を表す構造情報を格納する構造情報カラムを追加するテーブル作成ステップと、前記スキーマ情報に基づいて、前記構造化データのインスタンス中の各オブジェクトを前記テーブル上のレコードにそれぞれ変換し、その際、変換されたレコードの前記構造情報カラムに前記構造情報を反映した一意の単一整数値を構造情報値として設定して、前記リレーショナルデータベースに登録する構造化データ登録ステップと、前記スキーマ情報に基づいて、前記構造化データを検索するための構造化データ検索式を、検索条件が指定されたテーブルと検索結果として取得するテーブルとを前記構造情報カラムに関する整数演算を用いて結合するデータベース検索式に変換し、該データベース検索式に従って前記リレーショナルデータベースを検索する構造化データ検索ステップと、を有する。
【００１３】
さらには、本発明に係る情報処理プログラムは、次のように構成される。
【００１４】
構造化データをリレーショナルデータベースに格納するとともに、該リレーショナルデータベースから前記構造化データを検索するためのコンピュータが読み取り可能な情報処理プログラムであって、前記コンピュータに実行させるステップとして、前記構造化データのスキーマ情報を所定の記憶手段に記憶するスキーマ情報記憶ステップと、前記スキーマ情報の各クラスに対応させて前記リレーショナルデータベース上にテーブルをそれぞれ作成するとともに、前記各クラスの親子関係を対応するそれぞれのテーブル間に定義し、前記各クラスの属性を対応する前記テーブルのカラムとし、前記テーブルそれぞれに、前記構造化データの構造を表す構造情報を格納する構造情報カラムを追加するテーブル作成ステップと、前記スキーマ情報に基づいて、前記構造化データのインスタンス中の各オブジェクトを前記テーブル上のレコードにそれぞれ変換し、その際、変換されたレコードの前記構造情報カラムに前記構造情報を反映した一意の単一整数値を構造情報値として設定して、前記リレーショナルデータベースに登録する構造化データ登録ステップと、前記スキーマ情報に基づいて、前記構造化データを検索するための構造化データ検索式を、検索条件が指定されたテーブルと検索結果として取得するテーブルとを前記構造情報カラムに関する整数演算を用いて結合するデータベース検索式に変換し、該データベース検索式に従って前記リレーショナルデータベースを検索する構造化データ検索ステップと、を有する。
【００１５】
好適には、前記レコードの前記構造情報カラムに設定される構造情報値は、前記レコードの親レコードの構造情報値に、前記レコードと前記レコードの親レコード間の倍率を乗じて計算した値に、さらに同一親レコードを有する兄弟レコード間で一意に決定されるレコード番号を加算した値であることを特徴とする。ここで、倍率とは、親テーブル内のレコードに対して子テーブル内のレコードがいくつ所属できるかを示す数値をいう。
【００１６】
また、好適には、前記構造情報カラムに関する整数演算は、前記検索条件が指定されたテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索条件が指定されたテーブルの前記倍率で、除した整数値としての第１の商と、検索結果として取得するテーブルの前記構造情報値を、検索条件により絞り込む対象のテーブルと前記検索結果として取得するテーブルの前記倍率で、除した整数値としての第２の商と、を比較することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、構造化データをリレーショナルデータベースに格納する際に、構造情報を単一整数値のみで表現でき必要な格納領域を縮小することができる。
【００１８】
また、検索する際に、従来必要であった、多くのテーブルの結合を不要とし、結合のための演算処理も整数演算で行えるため、検索が高速に処理可能となる。
【００１９】
これにより、現在様々な分野で広く利用されている構造化データの一種であるＸＭＬ（Extensible Markup Language）などを、リレーショナルデータベースへ格納し検索するシステムの検索パフォーマンスを大幅に向上することができるという効果を得ることができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態を図面を用いて説明する。
【００２１】
図１は、本発明の実施の形態に係る情報処理システム１の概略構成図である。図１に示す情報処理システム１は、構造化データを蓄積するデータベースであるリレーショナルデータベース１００と、変換装置２００と、構造化データを処理するアプリケーション３００と、を備えている。
【００２２】
さらに詳しくは、変換装置２００は、蓄積時に構造化データを変換し、複数のテーブル上のレコードに分解する蓄積変換装置２０１と、検索時に検索式を変換し検索を実行する検索装置２０２と、構造化データのスキーマ情報を保持するスキーマリポジトリ２０３と、を具備する構成である。
【００２３】
ここで、情報処理システム１は、少なくとも演算機能および制御機能を備えた中央演算装置（ＣＰＵ）、プログラムやデータを格納する機能を有するＲＡＭ等からなる主記憶装置（メモリ）を有する電子的な装置から構成されているものである。また、各装置は、主記憶装置の他、ハードディスクなどの補助記憶装置を具備していてもよい。
【００２４】
このうち、蓄積変換装置２０１および検索変換装置２０２は、上記ＣＰＵによる演算制御機能を具体的に示したものに他ならない。また、リレーショナルデータベース１００およびスキーマレポジトリ２０３は、上記主記憶装置及び補助記憶装置の機能を備えたものである。
【００２５】
また、本実施の形態に係る各種処理を実行するアプリケーション３００は、前述した主記憶装置またはハードディスクに格納されているプログラムである。そして、このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
【００２６】
尚、図１は情報処理システム１の論理的な機能構成を示しているものであるため、情報処理システム１が物理的に一つからなる装置の他、情報処理システム１の各部がネットワーク接続された構成であってもよく、物理的な構成は限定されないものである。
【００２７】
次に、本実施の形態に係る情報処理システム１の全体処理を図２を用いて説明する。図２に示すように、情報処理システム１においては、スキーマ情報の作成とリポジトリへの登録（ステップＳ１００）、構造化データの蓄積（ステップＳ２００）、および構造化データの検索（ステップＳ３００）の３段階の処理が行われる。
【００２８】
複数の構造化データを処理する場合、ステップＳ１００をはじめに一度だけ行い、以降は個々の構造化データについて任意の順序でステップＳ２００およびステップＳ３００を繰り返し行う。
【００２９】
ステップＳ１００の動作を図３を用いて詳しく説明する。図３に示すようにステップＳ１００は、以下の手順からなる。
【００３０】
（１−１）構造化データスキーマの設計（ステップＳ１０１）
ユーザは、データベースに蓄積したい構造化データのスキーマ（構造化データスキーマ）を設計し、スキーマリポジトリ２０３へ格納する。ここで、構造化データスキーマは「クラス」と呼ばれる構造を単位とし、複数のクラスにより構成されるものとする。図２０は構造化データのスキーマの例である。各クラスは、任意個の「属性」を持ち、各属性は単純型（数値、文字列などを示す。以下同じ）のデータを格納する。ここで、構造化データを構成するクラス間に親子関係を定義する。親子関係とは、図２０にて２つのクラスが直接に有向線分で結ばれる関係を言う。同図中の有向線分の菱形が付いている側を親子関係の親クラス、ない側を子クラスと称する。構造化データのインスタンスは、各クラスを実体化した「オブジェクト」と呼ばれる構造を単位とし、複数のオブジェクトの木構造により構成されるものとする。図２１は構造化データのインスタンスの例であり、クラスＸのオブジェクトをＸiと表記している。クラスと同様にオブジェクトにも親子関係が定義され、親子関係にあるオブジェクトＸi，Ｙjについて、ＸiをＹjの「親オブジェクト」とすると、ＹjはＸiの「子オブジェクト」である。ここで、親子関係にあるクラスＸ，Ｙに対して、親子間の「多重度」を定義する。多重度とは、親クラスＸのオブジェクトＸiに対し、包含される子クラスＹのオブジェクトＹ1，Ｙ2，…，Ｙｐが取りうる個数のことである。その最小の個数をｍ、最大の個数をｎとすると、多重度はｍ．．ｎと表される。当然、ｎ≦ｐ≦ｍという関係が成り立つ。例として、図２０における「２．．５」という多重度は、図２１において、親オブジェクトＡ1が、（ｍ＝）２個以上（ｎ＝）５個以下の子オブジェクトＢi（ｉ＝１〜ｐ）を取ることができることを意味している。
【００３１】
（１−２）データベーススキーマの作成（ステップＳ１０２）
ユーザは、前記ステップＳ１０１で設計した構造化データのスキーマを元に、リレーショナルデータベース１００上のスキーマ（データベーススキーマ）を設計し、リレーショナルデータベース１００にテーブルを作成する。この設計は、構造化データスキーマの各クラスをデータベーススキーマのテーブルとし、各クラスの属性を各テーブルのカラムに対応することで機械的に行う。また、各テーブルには、構造情報を格納するカラム（構造情報列）を追加する。以下では、構造情報列を「Ｓ」と表す。ここで、クラスの親子関係に対応して、テーブル間にも対応関係を定義する。クラスＸ，Ｙが親子関係にあって、各々テーブルＴx，ＴYが対応するときには、テーブルＴx，ＴYは親子関係を有する。また、クラス間の多重度に対応して親子関係を有するテーブルＴx，ＴY間の「倍率」を以下のように定義する。Ｔx，ＴY間の倍率Ｍ（Ｔx，ＴY）は、対応するクラス間の多重度をｍ．．ｎとするとき、Ｍ（Ｔx，ＴY）＝ｎである。倍率は、ある親テーブル内のレコード１つに対して、子テーブル内のレコードがいくつ所属できるかを表している。ここで、任意のテーブルＴ1と、その子孫テーブルＴNの間で倍率が定義でき、Ｔ1からＴNを辿る経路上のテーブルをＴ1，Ｔ2，‥，ＴN-1，ＴNとすると、
M(M1,MN)=M(T1,T2)×M(T2,T3)×‥×M(TN-2，TN-1) ×M(TN-1，TN)
と定義される。なお、Ｔ2，‥ＴN-1は、Ｔ1とＴNを結ぶ最短経路上のクラスとする。スキーマリポジトリ２０３は任意のテーブルＴ1とＴNを受け取り、Ｍ（Ｔ1，ＴN）を返却する機能を有する。
【００３２】
次に、ステップＳ２００の動作を図４を用いて詳しく説明する。ステップＳ２００は、以下の手順からなる。
【００３３】
（２−１）構造化データの生成（ステップＳ２０１）
アプリケーション３００は、任意の手段により、ステップＳ１０１で定義された形式の構造化データを生成する。
【００３４】
（２−２）構造化データの変換（ステップＳ２０２）
アプリケーション３００は、蓄積変換装置２０１にステップＳ２０１で生成した構造化データを渡す。蓄積変換装置２０１は、スキーマリポジトリ２０３にアクセスし、ステップＳ１０１で登録された構造化データスキーマを参照し、構造化データ中のオブジェクトを、データベースへ挿入するレコードに変換する。
【００３５】
次に、生成されたレコード群を、リレーショナルデータベース１００に引き渡す。なお、この変換は、構造化データのインスタンス中の全てのオブジェクトについて、それぞれを個別のレコードに１対１で変換することで行う。オブジェクト毎の変換については、個々のオブジェクト中の属性を、レコード中の属性に変換することで行う。オブジェクト間の変換手順としては、構造化データ最上位のオブジェクトをレコードに変換することから始め、親オブジェクトから子オブジェクトに向かって再帰的に行う。また、生成された各レコードに、構造情報列Ｓに対する構造化データの構造情報を表す「構造情報値」を格納する。ある親テーブルＴpと子テーブルＴcについて、Ｔcに挿入するレコードＲcの構造情報値「Ｓc」は、親レコードＲpの構造情報値「Ｓp」、レコード番号「Ｌ(Rc)」とすると、
Sc＝Sp×M(Tp，Tc)＋L(Rc)
である。なお、レコード番号Ｌ（Ｒc）は、同じ親レコードを持つ同じテーブルの子レコード（兄弟レコード）の間で一意の番号であり、あるレコードＲjのＬ（Ｒj）は、ＲjのテーブルＴcとその親テーブルＴpの倍率Ｍ（Ｔp，Ｔc）より、０≦Ｌ（Ｒj）＜Ｍ（Ｔp，Ｔc）となる任意の整数値（ただし他の兄弟レコードの番号と重複しない）である。本手順を表すフローチャートを図５に示す。なお、最上位のテーブルＴTのオブジェクトをレコードに変換する際の構造情報値「ＳT」は、テーブルＴTに対応するテーブルに既に存在するレコードが未使用の任意の値を用いる。
【００３６】
（２−３）データの挿入（ステップＳ２０３）
リレーショナルデータベース１００は、蓄積変換装置２０１から渡されたレコード群をデータベースに挿入する。
【００３７】
次に、ステップＳ３００の動作を図６を用いて詳しく説明する。ステップＳ３００は、以下の手順からなる。
【００３８】
（３−１）検索式の生成（ステップＳ３０１）
アプリケーション３００は、任意の手段により、ステップＳ１０１で定義された構造化データスキーマに基づく構造化データを検索するための「構造化データ検索式Ｑ」を生成する。ここで構造化データ検索式Ｑは構成要素として、返却対象のカラム名ＣR、ＣRが存在するテーブル名ＴR、および複数の検索条件Ｗ1〜Nからなる。ここで、検索条件Ｗnは構成要素として、条件により絞り込む対象のテーブル名Ｐn、検索条件式を構成するカラム名Ｃn、Ｃnが存在するテーブル名Ｔn、Ｃnに対する条件式ｆn（Ｃn）からなる。
【００３９】
（３−２）検索式の変換（ステップＳ３０２）
アプリケーション３００は、検索変換装置２０２に構造化データ検索式Ｑを渡し、検索変換装置２０２は、スキーマリポジトリ２０３にアクセスし、ステップＳ１０１で登録された構造化データスキーマを参照し、構造化データ検索式Ｑを「データベース検索式Ｑ’」に変換する。検索式の変換は、まず、全ての検索条件Ｗn（ｎ＝１〜Ｎ）をデータベース検索式の部分式Ｗｎ’（ｎ＝１〜Ｎ）に変換し、次に、Ｗｎ’を用いて、データベース検索式Ｑ’を生成する。
【００４０】
ＷnからＷｎ’への変換は、図７に示す検索式に、ＴRと検索条件Ｗnの要素（｛ｎ＝１〜Ｎ｜Ｐn，Ｃn，Ｔn，ｆn（Ｃn）｝）を代入することで行う。次の、ＱからＱ’への変換は、図８に示す検索式に前記検索式Ｑの要素（ＣR，ＣR，ＴR）とＷn’（ｎ＝１〜Ｎ）を代入することで行う。本手順を表すフローチャートを図９に示す。なお、Ｗｎ’は、他の表現でも記述できる。例として図３１を示す。図７と図３１は同じ検索を意味しておりどちらでも表現できる。また、式の意味が同じであれば、それ以外の表現であってもよい。
【００４１】
（３−３）データの検索（ステップＳ３０３）
リレーショナルデータベース１００は、検索変換装置２０２から渡されたデータベース検索式Ｑ’を実行し、検索結果を検索変換装置２０２を通してアプリケーション３００に引き渡す。
【００４２】
以上、説明した情報処理システム１の動作を具体例、例えば、構造化データのスキーマ記述言語とオブジェクト記述言語としてＵＭＬ(Unified Modeling Language)のクラス図とオブジェクト図を、リレーショナルデータベースの検索言語としてＳＱＬ(Structured Query Language)を用いた例、を挙げて説明する。
【００４３】
（１）スキーマの作成とリポジトリへの登録（ステップＳ１００）
（１−１）構造化データスキーマの設計（ステップＳ１０１）
ユーザは図１０のＵＭＬのクラス図に示す、構造化データスキーマを設計し、スキーマリポジトリ２０３へ格納する。
【００４４】
（１−２）データベーススキーマの作成（ステップＳ１０２）
ユーザは、ステップＳ１０１で設計した構造化データスキーマから、データベーススキーマを機械的に設計し、リレーショナルデータベース１００にスキーマを作成する。設計したデータベーススキーマを図１１に示す。なお、本実施例における倍率の例として、  
Ｍ（注文、配送）＝３０であり、Ｍ（配送、商品）＝１０であり、
Ｍ（注文、商品）＝Ｍ（注文、配送）×Ｍ（配送、商品）＝30×10＝300  である。
【００４５】
（２）構造化データの蓄積（ステップＳ２００）
（２−１）構造化データの生成（ステップＳ２０１）
アプリケーション３００は、ステップＳ１０１で定義された形式の構造化データｄ１、ｄ２、およびｄ３を生成する。構造化データｄ１を図１２に、構造化データｄ２を図１３に、構造化データｄ３を図１４に示す。
【００４６】
（２−２）構造化データの変換（ステップＳ２０２）
アプリケーション３００は、蓄積変換装置２０１に構造化データｄ１、ｄ２、およびｄ３を渡し、蓄積変換装置２０１は、スキーマリポジトリ２０３にアクセスし、ステップＳ１０１で登録された構造化データスキーマを参照し、構造化データを、リレーショナルデータベース１００へ挿入するレコード群に変換する。なお、最上位オブジェクトの構造情報値はオブジェクトの属するテーブル中で一意に決める必要があるが、本実施例では、注文テーブルが該当し、構造化データｄ１に対するレコードの構造情報値はＳT1＝１、構造化データｄ２はＳT2＝２、構造化データｄ３はＳT3＝３を用いることとする。最終的に構造化データｄ１により挿入するレコードを図１５に示す。図１２の（１）〜（１２）のオブジェクトは、それぞれ図１５のＲ1〜Ｒ12のレコードに変換される。ここで、オブジェクト（１）〜（１２）の構造情報値をＳ1〜Ｓ12とすると、注文レコードＲ1の構造情報値は、Ｓ1＝ＳT1＝１であり、連絡先レコードＲ2〜Ｒ3の構造情報値は、
S2＝S1×M(注文、連絡先)＋L(R2)=1×5＋0＝5
S3＝S1×M(注文、連絡先)＋L(R3)=1×5＋1＝6
であり、配送レコードＲ4〜Ｒ5の構造情報値は、
S4＝S1×M(注文、配送)＋L(R4)=1×30＋0＝30
S5＝S1×M(注文、配送)＋L(R5)=1×30＋1＝31
であり、商品レコードＲ6〜Ｒ8の構造情報値は、
S6＝S4×M(配送、商品)＋L(R6)=30×10＋0＝300
S7＝S4×M(配送、商品)＋L(R7)=30×10＋1＝301
S8＝S5×M(配送、商品)＋L(R8)=31×10＋0＝310
であり、希望時間レコードＲ9〜Ｒ12の構造情報値は、
S9＝S4×M(配送、希望時間)＋L(R9)=30×3＋0＝90
S10＝S4×M(配送、希望時間)＋L(R10)=30×3＋1＝91
S11＝S5×M(配送、希望時間)＋L(R11)=31×3＋0＝93
S12＝S5×M(配送、希望時間)＋L(R12)=31×3＋1＝94
である。同様に構造化データｄ２により挿入するレコードを図１６に、構造化データｄ３により挿入するレコードを図１７に示す。最後に蓄積変換装置２０１は生成されたレコードを、リレーショナルデータベース１００に引き渡す。
【００４７】
（２−３）データの挿入（ステップＳ２０３）
リレーショナルデータベース１００は、蓄積変換装置２０１から渡されたレコードをデータベースの各テーブルに挿入する。
【００４８】
（３）構造化データの検索（ステップＳ３００）
（３−１）検索式の生成（ステップＳ３０１）
アプリケーション３００は、構造化データ検索式Ｑを生成する。本実施例では、アプリケーション３００は、構造化データ検索式Ｑ1として“数量が３０以上の商品があり、希望時間に午前がある注文の、連絡先の番号を取得する”を生成する。ここで、構造化データ検索式Ｑ1は、構成要素として、検索対象として“連絡先の番号”と、検索条件１として“数量が３０以上の商品がある注文”と、検索条件２として“配送希望の時間が午前がある注文”からなる。従って、検索式Ｑの要素（ＣR，ＣR，ＴR，｛ｎ＝１〜Ｎ｜Ｐn，Ｃn，Ｔn，ｆn（Ｃn）｝）は、ＴR＝“連絡先”、ＣR＝“番号”であり、検索条件はＷ1とＷ2からなり、Ｗ1について、Ｐ1＝“注文”、Ｔ1＝“商品”、Ｃ1＝“数量”、ｆ1（Ｃ1）＝“数量＞＝３０”であり、Ｗ2について、Ｐ2＝“注文”、Ｔ2＝“希望時間”、Ｃ2＝“時間”、ｆ2（Ｃ2）＝“時間＝‘午前’”である。
【００４９】
（３−２）検索式の変換（ステップＳ３０２）
アプリケーション３００は、検索変換装置２０２に構造化データ検索式Ｑを渡し、検索変換装置２０２は、スキーマリポジトリ２０３にアクセスし、ステップＳ１０１で登録された構造化データスキーマを参照し、構造化データ検索式Ｑをデータベース検索式Ｑ’に変換する。この時、スキーマリポジトリ２０３へ問い合わされる倍率は、
M(P1,T1)=M(注文、商品)＝M（注文、配送）×M（配送、商品）＝30×10＝300
M(P1,TR)=M(注文、連絡先)＝５
M(P2,T2)=M(注文、希望時間)＝M（注文、配送）×M（配送、希望時間）＝30×３＝９０
M(P2,TR)=M(注文、連絡先)＝５
である。これらにより、データベース検索式Ｑ1’は、図１８に示す検索式となる。最後に検索変換装置２０２は、データベース検索式Ｑ1’をリレーショナルデータベース１００に引き渡す。
【００５０】
（３−３）データの検索（ステップＳ３０３）
リレーショナルデータベース１００は、検索変換装置２０２から渡されたデータベース検索式Ｑ1’を実行し、検索結果を検索変換装置２０２を通してアプリケーション３００に引き渡す。実行結果を図１９に示す。
【００５１】
以上、本実施の形態によれば、構造化データのスキーマ情報をスキーマリポジトリに格納し、システム構築時に、構造化データのスキーマ中のクラスに対応してリレーショナルデータベース上にテーブルを作成し、各テーブルに構造情報カラムを付加する。そして、構造化データの格納時には、構造化データのインスタンス中の各オブジェクトを複数のテーブル上のレコードに１対１で変換し、その際に、構造情報カラムに単一整数値で表現される構造情報値を格納することで、少ない物理格納領域サイズで構造情報を格納する。また、構造化データの検索時には、構造化データ検索式における検索条件カラムを持つテーブルと、検索対象カラムを持つテーブルのみを構造情報カラムを用いた単純な整数演算により結合する。
【００５２】
従って、本実施の形態においては、構造化データをリレーショナルデータベースに格納する際に、構造情報を単一整数値のみで表現でき必要な格納領域を縮小することができる。これは、図２９に示す従来方式に比べて、識別子に必要な領域サイズが縮小されることから明らかである。また、検索する際に、従来必要であった、多くのテーブルの結合を不要であり、結合のための演算処理も整数演算で行えるため、検索が高速に処理可能となる。これは、図２４と図２７に示す同等の構造の構造データに対する従来方式の検索式と比べて、図１８に示す本方式の検索式が、結合するテーブル数を低減していること、また、図３０に示す従来方式の複雑な文字列による結合演算に比べ、図１８に示す本方式の検索式で整数演算により行われていることから明らかである。
【００５３】
これにより、現在様々な分野で広く利用されている構造化データの一種であるＸＭＬ（Extensible Markup Language）などを、リレーショナルデータベースへ格納し検索するシステムの検索パフォーマンスを大幅に向上することができる。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施の形態に係る情報処理システムの概略構成図である。
【図２】本発明の実施の形態に係る情報処理システムの全体処理の動作を説明するフローチャートである。
【図３】本発明の実施の形態に係る情報処理システムのステップＳ１００の動作を説明するフローチャートである。
【図４】本発明の実施の形態に係る情報処理システムのステップＳ２００の動作を説明するフローチャートである。
【図５】本発明の実施の形態に係る情報処理システムのステップＳ２０２の動作を説明するフローチャートである。
【図６】本発明の実施の形態に係る情報処理システムのステップＳ３００の動作を説明するフローチャートである。
【図７】本発明の実施の形態に係る情報処理システムにおけるデータベース検索式の部分式Ｗｎ’を表す図である。
【図８】本発明の実施の形態に係る情報処理システムにおけるデータベース検索式Ｑｎ’を表す図である。
【図９】本発明の実施の形態に係る情報処理システムのステップＳ３０２の動作を説明するフローチャートである。
【図１０】本発明の実施の形態に係る情報処理システムにおける構造化データスキーマの具体例を表す図である。
【図１１】本発明の実施の形態に係る情報処理システムにおけるデータベーススキーマの具体例を表す図である。
【図１２】本発明の実施の形態に係る情報処理システムにおける構造化データｄ１を表す図である。
【図１３】本発明の実施の形態に係る情報処理システムにおける構造化データｄ２を表す図である。
【図１４】本発明の実施の形態に係る情報処理システムにおける構造化データｄ３を表す図である。
【図１５】本発明の実施の形態に係る情報処理システムにおいて、構造化データｄ１により挿入するレコード群を表す図である。
【図１６】本発明の実施の形態に係る情報処理システムにおいて、構造化データｄ２により挿入するレコード群を表す図である。
【図１７】本発明の実施の形態に係る情報処理システムにおいて、構造化データｄ３により挿入するレコード群を表す図である。
【図１８】本発明の実施の形態に係る情報処理システムにおけるデータベース検索式Ｑ1’の具体例を表す図である。
【図１９】本発明の実施の形態に係る情報処理システムにおける検索結果の具体例を表す図である。
【図２０】構造化データのスキーマを示す図である。
【図２１】構造化データのインスタンスを示す図である。
【図２２】従来の構造化データの格納方法１を示す図である。
【図２３】従来の構造化データの格納方法１のレコード群を示す図である。
【図２４】従来の構造化データの格納方法１における検索式を示す図である。
【図２５】従来の構造化データの格納方法を示す図である。
【図２６】従来の構造化データの格納方法２のレコード群を示す図である。
【図２７】従来の構造化データの格納方法２における検索式を示す図である。
【図２８】従来の構造化データの格納方法３を示す図である。
【図２９】従来の構造化データの格納方法３のレコード群を示す図である。
【図３０】従来の構造化データの格納方法３における検索式を示す図である。
【図３１】本発明の実施の形態に係る情報処理システムにおけるデータベース検索式の部分式Ｗｎ’を表す図である。
【符号の説明】
【００５５】
１  情報処理システム
１００  リレーショナルデータベース
２００  変換装置
２０１  蓄積変換装置
２０２  検索変換装置
２０３  スキーマレポジトリ
３００  アプリケーション
【図１】
2005202850.tif 000003
【図２】
2005202850.tif 000004
【図３】
2005202850.tif 000005
【図４】
2005202850.tif 000006
【図５】
2005202850.tif 000007
【図６】
2005202850.tif 000008
【図７】
2005202850.tif 000009
【図８】
2005202850.tif 000010
【図９】
2005202850.tif 000011
【図１０】
2005202850.tif 000012
【図１１】
2005202850.tif 000013
【図１２】
2005202850.tif 000014
【図１３】
2005202850.tif 000015
【図１４】
2005202850.tif 000016
【図１５】
2005202850.tif 000017
【図１６】
2005202850.tif 000018
【図１７】
2005202850.tif 000019
【図１８】
2005202850.tif 000020
【図１９】
2005202850.tif 000021
【図２０】
2005202850.tif 000022
【図２１】
2005202850.tif 000023
【図２２】
2005202850.tif 000024
【図２３】
2005202850.tif 000025
【図２４】
2005202850.tif 000026
【図２５】
2005202850.tif 000027
【図２６】
2005202850.tif 000028
【図２７】
2005202850.tif 000029
【図２８】
2005202850.tif 000030
【図２９】
2005202850.tif 000031
【図３０】
2005202850.tif 000032
【図３１】
2005202850.tif 000033