(57)【特許請求の範囲】
【請求項１】
タグノード（Ｔ）、属性ノード（ＡＴＴＲ）及び／又はテキストノード（ＣＤＡＴＡ）からなる複数種の構造化された文書構造体で各々が表される複数の文書集合を圧縮し、これを高速に検索するためのデータ構造をコンピュータ上で提供するための方法であって、
コンピュータとして文書を入力する入力部と、前記入力された文書を変換する変換部と、前記入力された文書又は前記変換部において変換された文書を格納する格納部とを備えるものを使用し、
前記変換部において、前記文書集合を構成する前記複数種の文書構造体を構成する各ノードタグ（Ｔ）に係属する属性ノード（ＡＴＴＲ）又はテキストノード（ＣＤＡＴＡ）を要素として識別するための要素識別子ノードを付与し、
前記要素識別子ノードに対して、既出の要素識別子ノードには同じＩＤが割り当てられるように整数連番として要素ＩＤを割り当て、
前記要素ＩＤが割り当てられた要素識別子ノードに対応する属性ノード又はテキストノードに格納された実データに対しては、既出の実データの値には、同じＩＤが割り当てられるように整数連番として実データノードＩＤを割り当て、
前記要素ＩＤと対応する実データノードＩＤの組を要素とする配列構造で格納される数値データの組のリストを形成し、かつ、前記リストを前記要素ＩＤの昇順にソートし、
前記複数の文書に文書ＩＤを割り当て、検索条件を指定しない場合の文書単位の検索、及び集計処理のために前記文書ＩＤごとに前記リストへのポインタを有する文書ＩＤ管理ファイルとして管理し、
前記複数の文書における要素ＩＤと実データノードＩＤとの各組について、前記要素ＩＤごとに、前記実データノードＩＤに係属する文書の文書ＩＤを、前記実データごとに、文書ＩＤリストファイルとして形成する
という一連の処理を行い、その結果得られたデータ構造を検索のために前記コンピュータの前記格納部に格納し、
検索条件を与えて前記文書集合を検索するときは、検索項目として１組の属性ノード又はテキストノード及び実データを与え、
前記検索項目として与えられた実データを、前記検索項目として与えられた属性ノード又はテキストノードに対応する要素ＩＤに係属する実データノードＩＤ集合に属する項目値をたどって一致するか否かを判定し、一致する場合に前記実データノードＩＤに対応する文書の文書ＩＤを抽出し、
検索条件を指定しない場合の文書ＩＤに対応する文書における検索、及び集計の際には、前記文書ＩＤ管理ファイルをたどって処理することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書データをデータベースに格納するための方法に関する。特に本発明は、拡張可能なマークアップ言語（XML）による文書の処理に適した格納方法に関する。
【背景技術】
【０００２】
XMLにより作成されたデータのデータベースへの格納については、従来から種々の方法が提案されている。その代表的な例としては、リレーショナルデータベースマッピング型がある。この方式は、XMLの階層構造をリレーショナルデータベースのリレーションで表現し、XML要素の値や属性をテーブルのフィールドにマッピングするものである。この方式は、データ構造が固定的な場合に向いている、といわれており、データ構造に変更があるときは、テーブルの再定義が必要になる。また、XML文書の階層構造が複雑になると、リレーショナルテーブルとの対応付けが困難になる。
【０００３】
他の方式としてオブジェクト指向データベース型と呼ばれる方式がある。この方式は、XML文書をDOMツリーとして管理するものであり、可変的な階層構造をもつXML文書に対する操作性に優れている。しかし、データアクセスのためにはDOMオブジェクトをメモリに展開しなければならず、特に大量のXML文書を扱う場合には、メモリに対する負荷が大きく、パフォーマンス及びメモリソース管理の面で問題がある。
【０００４】
この他に、階層データベース型と呼ばれる、XML文書の階層構造を階層構造型のデータベースで管理する方式がある。しかし、この方式は、XML文書の階層構造の変化に対応することが困難である、という問題を有する。すなわち、この方式は、リレーショナルデータベースマッピング型と同様に、XML文書集合の構造変化に伴ってデータベースへのデータ格納構造の変更を余儀なくされるために、多様な構造のデータを扱うには問題がある。
【０００５】
さらに、リレーショナルデータベースマッピング型以外の方式は、複雑な統計や分析のための処理が難しいという問題を有する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、XML文書のように多様性のある文書を扱うのに適しており、文書構造の変化にも柔軟に対応でき、比較的複雑な統計や分析処理の遂行も容易に可能となる文書の圧縮格納方法を提供することを解決すべき課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明による文書の圧縮格納方法においては、最初のステップとして、文書構造の実データノードから実データを削除し要素識別子ノードとした整形式スキーマを生成する。そして、整形式スキーマのそれぞれのノードに対応する文書構造の各部分に、ノード識別子及び独自の要素識別子を与え、該文書構造の上記部分の実データを、上記ノード識別子及び上記独自の要素識別子に対応させて文書識別子を付してメモリに格納する。また、整形式スキーマにおいては、文書構造の上記部分の各々についての情報を、実データを除いた形でノード識別子と独自の要素識別子によって表すデータ構造の形で格納する。さらに、要素識別子、ノード識別子及び文書識別子の関連を規定する圧縮結果インデックス（CRX）を生成してメモリに格納し、整形式スキーマの要素識別子と該圧縮結果インデックス（CRX）の対応する組の集合を圧縮結果セット（CRS）としてメモリに格納する。上記の過程において、文書構造の部分のうち、複数の文書に共通する部分について、要素識別子、ノード識別子、及び文書識別子の各々に関し共通の識別子を付与する。
【０００８】
本発明においては、文書構造の実データノードから実データを削除し、要素識別子ノードとした整形式スキーマを文書構造に対応して生成する。したがって、文書構造に変化があっても、変化した文書構造に対応した整形式スキーマを常時準備することができる。整形式スキーマのそれぞれのノードに対応する文書構造の各部分には、ノード識別子と独自の要素識別子を与え、文書構造の各部分の実データには文書識別子を付し、ノード識別子と独自の要素識別子に対応させてメモリに格納する。ノード識別子、独自の要素識別子及び文書識別子は、格納データの検索に際してのキーとなる。他の格納されるデータ構造は、文書構造の各部分についての情報を、実データを除いた形で、ノード識別子と同時の要素識別子によって表すデータ構造の形で格納する整形式スキーマと、要素識別子、ノード識別子及び文書識別子の関連を規定する圧縮結果インデックス（CRX）と、整形式スキーマの要素識別子と圧縮結果インデックス（CRX）の対応する組の集合を表す圧縮結果セット（CRS）である。これらの格納データ構造を使用して、文書の復元、データの検索、集計などを支障なく、高速に達成することができる。
【０００９】
文書が複数の文書単位を含む文書集合である場合における本発明の方法は、複数の文書を含む文書集合から単一文書を切り出して単位文書とし、該単位文書の実データノードから実データを削除し要素識別子ノードとした文書単位整形式スキーマを生成するステップを含む。そして、複数の単位文書についての文書単位整形式スキーマを併合して文書集合整形式スキーマを生成し、該文書集合整形式スキーマのそれぞれのノードに対応する文書構造の各部分に、ノードのオブジェクト識別子及び独自の要素識別子を与える。さらに、該文書構造の各部分の実データを、ノード識別子及び独自の要素識別子に対応させて文書識別子を付してメモリに格納する。また、文書集合整形式スキーマにおいては、文書構造の各部分についての情報を、実データを除いた形でノード識別子と独自の要素識別子によって表すデータ構造の形で格納する。さらに、要素識別子、ノード識別子及び文書識別子の関連を規定する圧縮結果インデックス（CRX）を生成してメモリに格納し、整形式スキーマの要素識別子と圧縮結果インデックス（CRX）の対応する組の集合を圧縮結果セット（CRS）としてメモリに格納する。この場合も、文書構造の各部分のうち、複数の文書に共通する部分については、要素識別子、ノード識別子及び文書識別子の各々に関し共通の識別子を付与する。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図について詳細に説明する。
【００１１】
図１は、本発明の方法を実施した文書の圧縮格納システムの全体を示すブロック図である。格納されるデータとして、該システムの入力部INには、複数の単位文書ｄを含む文書集合Dがある。本件例では、文書ｄはXMLランゲージによりデジタル化されたXML文書である。
【００１２】
図２に、２つの単位文書からなるXML文書集合の例を示す。この例は、文書１及び文書２からなる２通の発注書の例であり、それぞれの単位文書に発注書番号として、ID=1及びID=2の標識がつけられる。この標識が文書の開始タグとなる。また、文書の内容を示すものとして、発注書綴という見出しがあり、これがルートタグになる。
【００１３】
図２に示すXML文書集合は、図３に示すような文書集合DOMに変換される。この文書集合DOMは、タグノードT、属性ノードATTR、テキストノードCDATAを備え、図２に示す情報をすべて含む。図３に示す文書集合DOMから、単位文書DOMが切り出される。文書１についての単位文書DOMは図４(a)に示すものとなり、文書２についての単位文書DOMは図４(b)に示すものとなる。
【００１４】
図４に示す単位文書DOMに基づいて、単位文書整形式スキーマが生成される。文書１についての整形式スキーマは、図５(a)に示すものとなり、文書２についての整形式スキーマは、図５(b)に示すものとなる。ここで、IDは識別子の略称であり、EIDは要素識別子を表す。図５(a)及び図５(b)から分かるように、整形式スキーマは、図４(a)及び図４(b)に示す単位文書DOMの書くノードに対応するノードを備え、単位文書DOMから、社名、住所についての各データ、電話番号、発注日、担当者、発注内容などの実データを削除し、その位置に要素識別子のノードEIDを設けたものである。
【００１５】
このようにして作成された単位文書整形式スキーマは、XMLデータベースから読み出される文書集合整形式スキーマと併合される。文書集合整形式スキーマが最初の状態において空である場合には、文書１の整形式スキーマを併合した後の文書集合整形式スキーマは、文書１についての単位文書整形式スキーマと同じ構造になる。同様に、文書集合整形式スキーマが最初の状態において空である場合には、文書２の整形式スキーマを併合した後の文書集合整形式スキーマは、文書２についての単位文書整形式スキーマと同じ構造になる。相違点は、文書集合整形式スキーマにおいては、各要素識別子ノードに識別子として識別番号が付されることである。文書１の単位文書整形式スキーマを併合した後の文書集合整形式スキーマを図６(a)に、文書２の単位文書整形式スキーマを併合した後の文書集合整形式スキーマを図６(b)に、それぞれ示す。この処理は、図１に示す変換過程TRにおいて行われる。このようにして生成された文書集合整形式スキーマは、図１に示すようにXMLデータベースとしてメモリに格納される。
【００１６】
次に、単位文書整形式スキーマに参照識別子が記録される。この処理は、単位文書整形式スキーマのノードを順に参照し、対応する文書集合整形式スキーマのノードから要素識別子を取得し、単位文書整形式スキーマの該当するノードにその要素識別子を書き込むことにより行う。文書集合整形式スキーマが最初の状態において空である場合には、要素識別子が記録された後の単位文書整形式スキーマの構造は、文書１についても、文書２についても、文書集合整形式スキーマと同じ構造になる。したがって、この処理後における単位整形式スキーマの図示は省略する。
【００１７】
図１に示すように、本発明のシステムにおいては、XMLデータベースに、圧縮結果インデックスCRXが格納されている。圧縮結果インデックスCRXは、ノード識別子（ID）リストとノード構造体とで構成される。ノード識別子は、原則として単位文書ごとに付与されるが、複数の単位文書間で共通する部分については、後の単位文書においては先の単位文書において付与されたノード識別子が共通して使用される。圧縮結果インデックスCRXは、要素識別子ごとに生成される。すなわち、図６(a)の文書集合整形式スキーマに対応する単位整形式スキーマにおいては、要素識別子０が付与される発注書属性IDの区域に１つのインデックスCRXが、要素識別子１が付与される社名CDATAの区域に対して別の１つのインデックスCRXが、というように、作成される。
【００１８】
図７(a)は、文書１の登録後における要素識別子０の区域、すなわちEID=0の区域におけるインデックスCRXの例を示すものである。登録された文書は文書１のみであるから、登録件数は１であり、ノードへのポインタは〔０〕のみとなる。この場合におけるノード識別子は０のみであるから、ノード構造体にはノードID＝０が示されることになる。ノード構造体は、キー値へのポインタ、文書識別子へのポインタ、左ノードへのポインタ、及び右ノードへのポインタを含む。文書１のみが登録されているから、キー値へのポインタを操作することにより得られるキー値は「１」である。図７(b)は要素識別子１、すなわちEID=1の区域における圧縮結果インデックスCRXを示す。この区域では、キー値は発注者名を示すものとなる。同様に、図７(c)ないし図７(n)は、EID=２からEID=１３までの区域に対応するインデックスCRXを示す。
【００１９】
図８(a)は、文書１及び文書２の登録後における要素識別子０の区域、すなわちEID=0の区域におけるインデックスCRXの例を示すものである。登録された文書は文書１及び文書２であるから、登録件数は２であり、ノードへのポインタは、〔０〕及び〔１〕となる。この場合には、ノード識別子は０及び１であるから、ノード構造体としては、ノードID＝０の構造体とノードID=１の構造体の２つが生成されることになる。文書１のみの登録時と同様に、ノード構造体の各々は、キー値へのポインタ、文書識別子へのポインタ、左ノードへのポインタ、及び右ノードへのポインタを含む。文書１及び文書２が登録されているから、キー値へのポインタを操作することにより得られるキー値は、いずれのノード構造体からキー値を求めるかに応じて「１」又は「２」となる。
【００２０】
文書２においては、発注者名、郵便番号その他の発注者に関連するデータは文書１におけるものと共通であるから、EID=１からEID=６までに対応するインデックスCRXは、図７(b)から図７(g)に示すものと同一でよい。また、発注日も両文書において同一であるから、文書２におけるEID=７に対応するインデックスCRXも文書１のものと同一である。したがって、文書２については、図７(h)に対応するインデックスCRXは、文書１についてのものを共用できる。
【００２１】
図８(b)は、要素識別子EID=８に対応する担当者データを示す区域についてのインデックスCRXを示すものである。図８(c)ないし図８(e)は、それぞれ要素識別子EID=１０ないしEID=１２の区域におけるインデックスCRXを示す。EID=９の区域においては、文書２のインデックスCRXは、文書１のものと同一でよい。図８(f)ないし図８(j)は、文書２により追加されたデータの区域に対応するインデックスCRXを示す。
【００２２】
図８に示す例において、ノード構造体及びノードの成長の仕方は、２分木の手法に従っている。しかし、圧縮結果インデックスCRXを構成する手法は２分木に限定されるものではなく、その構成手法としては、Ｂ木、Ｂ＋木、PAT木、ハッシュテーブルなど、任意の探索アルゴリズムを使用することができる。
【００２３】
圧縮結果インデックスCRXを更新する場合には、文書DOMのノードと単位文書整形式スキーマのノードとを対応させながら順に参照し、文書DOMのノードに記録されたXML要素の属性値すなわちATTRの実データ若しくは要素値すなわちCDATAの実データを取得し、これをキー値としてCRXを検索する。検索の結果、キー値が存在しない場合には新たなノード識別子を付してノードを作成し、そのノードに該キー値を登録する。検索の結果、キー値が存在する場合には、そのキー値のノードを参照し、ノード識別子を取得する。このノード識別子は、そのキー値の参照識別子となる。このようにして、単位文書整形式スキーマの要素識別子EIDと圧縮結果インデックスCRXのノード識別子NIDの組（EID、NID）の集合が取得される。
【００２４】
図示例における要素識別子EIDとノード識別子NIDの組を要素識別子ごとに示すと図９、図１０のようになる。図９は、文書１が登録された段階での上述の組を示すものであり、図１０は、文書２が登録された段階での同様な組を示すものである。このようにして得られた要素識別子EIDとノード識別子NIDの組は、要素識別子EIDをソートキーとして昇順ソートした後、図１に示すメモリ内の圧縮結果セットCRSに格納する。図１１及び図１２に格納後の圧縮結果セットCRSの構成を示す。図１１は文書１が登録された段階における圧縮結果セットCRSを、図１２は文書２が登録された段階における圧縮結果セットCRSをそれぞれ示す。
【００２５】
要素識別子EIDとノード識別子NIDの組を上述のように圧縮結果セットCRSに格納する際に、この組に文書識別子DIDを割り当てる。割り当てられた文書識別子DIDは、文書識別子管理ファイルに収められる。図１１及び図１２に、文書識別子DIDを含む文書管理ファイルと圧縮結果セットCRSとの関係を示す。文書管理ファイルにおいて、文書識別子DIDを参照する要素には、圧縮結果セットCRSに格納した要素識別子EIDとノード識別子NIDの組（EID、NID）の集合領域の先頭アドレスを格納する。圧縮結果セットCRSにおけるデータの格納方法としては、要素識別子EIDとノード識別子NIDの組（EID、NID）ごとにファイルを垂直分割する方法とすべての組集合を一つのファイルに格納する方法とがある。前者は、要素識別子EIDとノード識別子NIDの特定の組（EID、NID）だけを高速に抽出する検索に適しており、応用面では多次元集計を高速化するのに効果的である。これに対して後者は、常に記録全体を参照するので、文書単位の処理に適している。本件例においては、文書単位の高速な登録と、更新、検索及び集計を行うトランザクション型データベース管理システムに重点を置くために、後者の手法を採用している。
【００２６】
上述した文書識別子DIDは、高速な検索を実現するために、文書識別子リストファイルに格納される。この格納は、要素識別子ごとに文書識別子リストとして文書識別子を文書識別子リストファイルに格納することによって行われる。圧縮結果インデックスCRXにおけるノード構造体には、図７及び図８に示すように、文書識別子へのポインタが設けられ、文書識別子リストの格納領域の先頭アドレスを該圧縮結果インデックスにおける文書識別子へのポインタにセットする。
【００２７】
図１３(a)に、文書２の登録された後の段階における発注者名に対応する要素識別子EID=１の区域の圧縮結果インデックスCRX格納データと文書識別子リストファイルとの関連を示す。ノード構造体の文書識別子へのポインタに文書識別子リストファイルがリンクされる。図１３(b)は、要素識別子EID=８の区域に対応する同様な図である。ここでは、圧縮結果インデックスCRXの格納データは、２人の発注者に対応するように、２つのノード構造体を有する。各ノード構造体の文書識別子へのポインタは、文書識別子リストファイルのそれぞれ対応する文書識別子リストにリンクされている。図１３(c)は、要素識別子EID=１１の区域に対応する図である。各ノード構造体のキー値へのポインタは、発注内容を示す実データの格納個所にリンクされている。図１３(d)及び図１３(e)は、それぞれ要素識別子EID=１５及びEID=１６の区域に対応する同様な図である。
【００２８】
以上述べた手順で格納されたデータを有するXML文書データベースからXML文書を検索し再現する手順を、種々の検索条件について以下に述べる。
(1) 検索条件なし（すべてのXML文書を出力する場合）
出力条件：発注書
意味：ルートノード（発注書以下のXML文書を出力する）
処理手順：
(a) 図６に示す文書集合整形式スキーマをメモリに取得し、その写像を生成する。
(b) 図１２に示す文書識別子管理ファイルにおける文書識別子DIDの組集合へのポインタを順に参照して、圧縮結果セットCRSから組み集合を順に取得する。
(c) 文書集合整形式スキーマのノードをルートノード（T:発注書）から順にたどり、各ノードの要素識別子EIDを取得する。
(d) 取得した要素識別子EIDを検索条件として、組集合を検索する。検索が成功した場合には、自分が所属するすべての親ノードを自分の位置から上位に戻りながら、文書整形式スキーマの写像のノードに該当マークとノード識別子NIDを付ける。この時、親ノードに既に該当マークがついている場合には、必然的にそれよりも上位の親ノードは該当マーク付きであるので、次の処理に移行する。検索が失敗した場合には何もしない。
(e) 上記(b)(c)の手順を、文書集合整形式スキーマのすべてのノードについて行う。
(f) 文書整形式スキーマのノードをルートノードから順にたどり、ノードに該当マークが付いている場合には、ノードの階層と種別に応じて該当するデータを出力する。例えば、Ｔの場合にはタグを、ATTRの場合には属性値を、CDATAの場合には文字データを出力する。ATTR及びCDATAに関しては、圧縮結果インデックスCRXの該当する要素識別子EIDの区域におけるノード識別子NIDからオリジナルのデータを取得して出力する。
(g) すべての文書識別子DIDについて同様の処理を行う。
文書１及び文書２の登録後の文書整形式スキーマの写像に対して文書構造を再現した状態を図１４(a)(b)に示す。この文書構造に対応して再現された文書集合を図１５に示す。
【００２９】
(2) CDATAに検索条件を指定して部分文書を出力する（単一条件の場合）
検索条件：／発注書／発注企業／社名="デジタル商店"
出力条件：／発注書／発注企業
意味：社名のCDATAが"デジタル商店"のXML文書を、〔T：発注企業〕をルートタグとして出力する。
【００３０】
処理手順：
(a) 文書集合整形式スキーマ（図８参照）をメモリに取得し、写像を作る。
(b) 文書集合整形式スキーマを検索し／発注書／発注企業／社名のノードのEID集合を取得する。ノードが存在しない場合は、EID集合={}（空集合）となり該当文書は無し。
(c) ノードのEID集合={1}なので、EID集合からEID=1を取得し、CRXのEID=1の区域のノードを"デジタル商店"を検索キーとして検索し、該当するノードが存在した場合はノードの文書IDへのポインタを参照し文書IDリストファイル内のアドレスを取得し、文書IDリストファイルから文書IDリストを取得する（図１７ EID=1の区域を参照のこと）。該当するノードが存在しない場合は文書IDリスト=空集合とする。EID集合の要素数が２以上の場合は、同様に繰り返して文書IDリストを取得し、全ての文書IDリストの論理和集合を求め、最終的なDID集合を得る。
(d) 文書集合整形式スキーマの写像の該当マーク=該当無し、NID=値無しに設定する。
(e) DID集合の各々について順に文書集合整形式スキーマの写像に該当マークとNIDの値を付加する。この処理は、上記(1)の(b)から(e)までにおける処理と同じである。
(f) 該当マークとNIDの値が付加された文書集合整形式スキーマの写像の／発注書／発注企業のノードに位置付ける。該ノードから下位のノードを順に辿り、ノードに該当マークが付いているなら階層とノード種別に応じて、Tならタグ、ATTRなら"属性名=属性値"、CDATAなら文字データを出力する。この時、ATTR とCDATAについてはCRXのEID区域のNIDからオリジナルデータ値を取得し出力する。
【００３１】
以上のように文書集合整形式スキーマの写像を／発注書／発注企業のノードから下位に順にノードをたどることでXML文書を復元できる。復元したXML文書集合を図１６に示す。
(3) CDATAに検索条件を指定して部分文書を出力する（複数条件の場合）
検索条件：／発注書／発注企業／社名="デジタル商店" AND ／発注書／発注／発注内容／@CLASS="1"
出力条件：／発注書／発注／発注内容
意味：社名のCDATAが"デジタル商店"で、かつ発注内容のATTR：CLASSが"1"のXML文書を、〔T：発注内容〕をルートタグとして出力する。
【００３２】
処理手順：
(a) (2)と同様の手順にて第１の検索条件のDID集合=S1={1, 2}を取得する（図１７ EID=1の区域を参照のこと）。
(b) (2)と同様の手順にて第２の検索条件のDID集合=S2={1, 2}を取得する（図１７ EID=10の区域を参照のこと）。
(c) S1とS2論理積を求め、最終的なDID集合={1, 2}を得る。
(d) ２個以上の検索条件式の場合も上記(a)から(c)までと同様の手順を繰り返し、最終的な文書識別子DID集合を得る。
(e) (2)と同様の手順で文書集合整形式スキーマの写像に該当マークとNIDの値を付加する。
(f) 該当マークとNIDの値が付加された文書集合整形式スキーマの写像の／発注書／発注／発注内容のノードに位置付ける。該ノードから下位のノードを順に辿り、ノードに該当マークが付いているなら階層とノード種別に応じて、Tならタグ、ATTRなら"属性名=属性値"、CDATAなら文字データを出力する。この時、ATTR とCDATAについてはCRXのEID区域のNIDからオリジナルデータ値を取得し出力する。
【００３３】
以上のように文書集合整形式スキーマの写像を／発注書／発注／発注内容のノードから下位に順にノードを辿ることでXML文書を復元できる。復元したXML文書集合を図１７に示す。
【００３４】
なお、論理演算子としては、論理積（AND）、論理和（OR）、論理差（NOT）および論理演算の優先順位を制御する括弧「（）「」」を適用することができる。上記の説明で明らかのように、如何なる複雑な検索条件であってもCRXと文書IDリストファイルの組合せによって高速にDID集合を取得することができる。一旦DID集合が取得できれば文書集合整形式スキーマ、CRS、CRXの組合せによって、任意の階層以下のXML文書を再現できる。
次に、XML文書データベースからXML文書を検索し集計する処理手順について述べる。
【００３５】
集計は、検索によるDID集合取得、該当文書集合の集約キー項目値の組集合及び集計対象項目値の組集合の取得、集計処理の３段階の処理によって最終結果を得る。以下の例では、検索処理の手順は省略し、後段の処理に絞って説明する。用いる記号は前述したものと同じである。
(1) 全てのXML文書を集計する場合
検索条件：なし
集約キー項目：／発注書／発注企業／社名
集計対象項目：／発注書／発注／数量
出力条件：一覧表形式
／発注書／発注企業／社名, ／発注書／発注／数量
意味：〔T：社名〕を集約キーとして〔T：数量〕を集計し、XML文書を出力する。
【００３６】
処理手順：
(a) 前述の手法と同様の手順により、文書識別子DID集合を取得する。今回の場合は、DID集合=全件={1, 2}となる。
(b) ／発注書／発注企業／社名と／発注書／発注／数量のEIDの集合を取得する。／発注書／発注企業／社名のEID={1}、／発注書／発注／数量のEID={13, 18}となる。
(c) 文書識別子DID集合の各々について、文書集合整形式スキーマの写像から(EID, NID)の組の集合を取得する。DID=1のとき、／発注書／発注企業／社名の組集合{(EID, NID)}={(1, 0)}、／発注書／発注／数量の組集合{(EID, NID)}={(13, 0)}となる。DID=2のときは、／発注書／発注企業／社名の組集合{(EID, NID)}={(1, 0)}、／発注書／発注／数量の組集合{(EID, NID)}={(13, 0), (18, 0)}となる。
(d) ／発注書／発注企業／社名の組集合のNIDを集約キー、／発注書／発注／数量の組集合{(EID, NID)}をCRXを用いてオリジナルデータに変換後バイナリ数値に変換する。多次元集計処理に入力するための{集約キー値の組, 集計対象項目値の組}が取得できた場合には、任意のアルゴリズムに基づく多次元集計処理によって{集約キー値の組, 加算値の組, データ件数の組, 最大値の組, 最小値の組}を計算することができる。多次元集計処理は、入力された{集約キー値の組, 集計対象項目値の組}において、集約キー値の組毎に集計対象項目値の組毎の加算、最大値の入替え、最小値の入替えを行い、加算値、トータル入力データ件数、最大値、最小値を集計対象項目値の組毎に記録する。DID=1の場合、{集約キー値の組, 集計対象項目値の組}={(0), (1)}となり、この結果、{集約キー値の組, 加算値の組, データ件数の組, 最大値の組, 最小値の組}={(0), (1), (1), (1), (1)}となる。DID=2の場合、{集約キー値の組, 集計対象項目値の組}={(0),({1, 1}) }となり、この結果、{集約キー値の組, 加算値の組, データ件数の組, 最大値の組, 最小値の組}={(0), (2), (2), (1), (1)}となる。
(e) 多次元集計処理によって記録されたデータ={集約キー値の組, 加算値の組, データ件数の組, 最大値の組, 最小値の組}={(0), (2), (2), (1), (1)}から集約キー値、加算値を順に取得し、集約キー値（未だNIDのままである）を、CRXを利用してオリジナルデータに復元し、加算値を十進数テキストデータに変換しXML文書集合として出力する。
【００３７】
以上のように任意のノードのデータを集約キーおよび集計対象項目に指定して多次元集計処理を効率的に実行できる。出力したXML文書集合のイメージを図１８に示す。
(2) CDATAに検索条件を指定して集計する場合
検索条件：／発注書／発注／発注内容／@CLASS="1"
集約キー項目：／発注書／発注企業／社名
集計対象項目：／発注書／発注／数量
出力条件：一覧表形式
／発注書／発注企業／社名, ／発注書／発注／数量
意味：T：発注内容のATTR：CLASS="2"を検索条件に該当したDID集合に対し、"T：社名を集約キーとしてT：数量を集計し、XML文書を出力する。
【００３８】
処理手順：
(a) 前述の手法と同様の手順にてDID集合を取得する。検索の処理手順は前述したものと全く同じである。今回の場合はDID集合={2}となる。
(b) 後の処理は、(1)と全く同じである。
出力したXML文書集合のイメージを図１９に示す。集約キーの組要素が２個以上の場合及び集計対象項目の組要素が２個以上の場合も全く同様に処理することができる。
次に、XML文書構造の変更の手順を説明する。
【００３９】
上述したことから明らかなように、XML文書構造は、文書集合整形式スキーマ構造に併合して写像され、要素毎に分解された要素値は、EIDとNIDがCRSに格納されるとともにオリジナルデータ値がCRXに格納され、文書IDによって索引される構造をもっている。
【００４０】
実体データは、圧縮結果セットCRSと圧縮結果インデックスCRXによって格納管理されるが、これら実体データ内にはXML文書の階層構造情報は持たず、XML文書の階層構造情報は、専ら文書集合整形式スキーマ構造によって保持される。
【００４１】
このような構造を使用すれば、XML文書データベースに格納されたXML文書集合に対するXML文書構造の変更は、文書集合整形式スキーマ構造の変更によって完了する。したがって、XML-DBに格納されたXML文書集合に対する構造の変更は、極めて容易になる。
【００４２】
以上述べたように、本発明により、構造が可変で不確定要素の多い、例えばXML文書のような文書を扱うに際し、その文書構造が変化するばあいでも、実データの格納構造を変更することなくXMLドキュメントを管理することができ、しかも、高速な検索や複雑な統計・分析を可能とするXMLデータベースを得ることが可能になる。
【図面の簡単な説明】
【００４３】
【図１】本発明の方法の具体例をブロックにより示す系統図である。
【図２ａ】本発明の方法を実施することができるXML文書集合の一例を示す発注書の図である。
【図２ｂ】本発明の方法を実施することができるXML文書集合の一例を示す発注書の図である。
【図３ａ】図２の文書集合から生成された文書集合DOMの例を示す概念図である。
【図３ｂ】図２の文書集合から生成された文書集合DOMの例を示す概念図である。
【図４ａ】図３に示す文書集合DOMから切り出された文書１に関する単位文書DOMの概念図である。
【図４ｂ】図３に示す文書集合DOMから切り出された文書２に関する単位文書DOMの概念図である。
【図５ａ】図４ａに示す文書集合DOMから生成された文書１に関する単位文書整形式スキーマの概念図である。
【図５ｂ】図４ｂに示す文書集合DOMから生成された文書２に関する単位文書整形式スキーマの概念図である。
【図６ａ】文書１の単位整形式スキーマを併合した状態における文書集合整形式スキーマの概念図である。
【図６ｂ】文書２の単位整形式スキーマを併合した状態における文書集合整形式スキーマの概念図である。
【図７ａ】文書１の登録後における要素識別子EID=０区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｂ】文書１の登録後における要素識別子EID=１区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｃ】文書１の登録後における要素識別子EID=２区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｄ】文書１の登録後における要素識別子EID=３区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｅ】文書１の登録後における要素識別子EID=４区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｆ】文書１の登録後における要素識別子EID=５区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｇ】文書１の登録後における要素識別子EID=６区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｈ】文書１の登録後における要素識別子EID=７区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｉ】文書１の登録後における要素識別子EID=８区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｊ】文書１の登録後における要素識別子EID=９区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｋ】文書１の登録後における要素識別子EID=１０区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｌ】文書１の登録後における要素識別子EID=１１区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｍ】文書１の登録後における要素識別子EID=１２区域に対応する圧縮結果インデックスCRXの概念図である。
【図７ｎ】文書１の登録後における要素識別子EID=１３区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ａ】文書２の登録後における要素識別子EID=０区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｂ】文書２の登録後における要素識別子EID=８区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｃ】文書２の登録後における要素識別子EID=１０区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｄ】文書２の登録後における要素識別子EID=１１区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｅ】文書２の登録後における要素識別子EID=１２区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｆ】文書２の登録後における要素識別子EID=１４区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｇ】文書２の登録後における要素識別子EID=１５区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｈ】文書２の登録後における要素識別子EID=１６区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｉ】文書２の登録後における要素識別子EID=１７区域に対応する圧縮結果インデックスCRXの概念図である。
【図８ｊ】文書２の登録後における要素識別子EID=１８区域に対応する圧縮結果インデックスCRXの概念図である。
【図９】文書１の登録後における要素識別子EIDとノード識別子NIDの組を各要素識別子EIDの区域について示す概念図である。
【図１０ａ】文書２の登録後における要素識別子EIDとノード識別子NIDの組を各要素識別子EIDの区域について示す概念図である。
【図１０ｂ】文書２の登録後における要素識別子EIDとノード識別子NIDの組を各要素識別子EIDの区域について示す概念図である。
【図１１】文書１の登録後における圧縮結果セットCRSを示す概念図である。
【図１２】文書１の登録後における圧縮結果セットCRSを示す概念図である。
【図１３ａ】文書２の登録後における圧縮結果インデックスCRXと文書識別子リストファイルを要素識別子EID=１の区域について示す概念図である。
【図１３ｂ】文書２の登録後における圧縮結果インデックスCRXと文書識別子リストファイルを要素識別子EID=８の区域について示す概念図である。
【図１３ｃ】文書２の登録後における圧縮結果インデックスCRXと文書識別子リストファイルを要素識別子EID=１１の区域について示す概念図である。
【図１３ｄ】文書２の登録後における圧縮結果インデックスCRXと文書識別子リストファイルを要素識別子EID=１５の区域について示す概念図である。
【図１３ｅ】文書２の登録後における圧縮結果インデックスCRXと文書識別子リストファイルを要素識別子EID=１６の区域について示す概念図である。
【図１４ａ】文書１について文書集合整形式スキーマの写像に対するXML文書の構造を再構成した状態を示す図である。
【図１４ｂ】文書２について文書集合整形式スキーマの写像に対するXML文書の構造を再構成した状態を示す図である。
【図１５ａ】再現したXML文書集合を示す図である。
【図１５ｂ】再現したXML文書集合を示す図である。
【図１６】部分的に復元したXML文書を示す図である。
【図１７】部分的に復元したXML文書の他の例を示す図である。
【図１８】項目指定して出力した文書の例を示す図である。
【図１９】条件指定して出力した文書の例を示す図である。
【図１】
0004562749.tif 000002
【図２ａ】
0004562749.tif 000003
【図２ｂ】
0004562749.tif 000004
【図３ａ】
0004562749.tif 000005
【図３ｂ】
0004562749.tif 000006
【図４ａ】
0004562749.tif 000007
【図４ｂ】
0004562749.tif 000008
【図５ａ】
0004562749.tif 000009
【図５ｂ】
0004562749.tif 000010
【図６ａ】
0004562749.tif 000011
【図６ｂ】
0004562749.tif 000012
【図７ａ】
0004562749.tif 000013
【図７ｂ】
0004562749.tif 000014
【図７ｃ】
0004562749.tif 000015
【図７ｄ】
0004562749.tif 000016
【図７ｅ】
0004562749.tif 000017
【図７ｆ】
0004562749.tif 000018
【図７ｇ】
0004562749.tif 000019
【図７ｈ】
0004562749.tif 000020
【図７ｉ】
0004562749.tif 000021
【図７ｊ】
0004562749.tif 000022
【図７ｋ】
0004562749.tif 000023
【図７ｌ】
0004562749.tif 000024
【図７ｍ】
0004562749.tif 000025
【図７ｎ】
0004562749.tif 000026
【図８ａ】
0004562749.tif 000027
【図８ｂ】
0004562749.tif 000028
【図８ｃ】
0004562749.tif 000029
【図８ｄ】
0004562749.tif 000030
【図８ｅ】
0004562749.tif 000031
【図８ｆ】
0004562749.tif 000032
【図８ｇ】
0004562749.tif 000033
【図８ｈ】
0004562749.tif 000034
【図８ｉ】
0004562749.tif 000035
【図８ｊ】
0004562749.tif 000036
【図９】
0004562749.tif 000037
【図１０ａ】
0004562749.tif 000038
【図１０ｂ】
0004562749.tif 000039
【図１１】
0004562749.tif 000040
【図１２】
0004562749.tif 000041
【図１３ａ】
0004562749.tif 000042
【図１３ｂ】
0004562749.tif 000043
【図１３ｃ】
0004562749.tif 000044
【図１３ｄ】
0004562749.tif 000045
【図１３ｅ】
0004562749.tif 000046
【図１４ａ】
0004562749.tif 000047
【図１４ｂ】
0004562749.tif 000048
【図１５ａ】
0004562749.tif 000049
【図１５ｂ】
0004562749.tif 000050
【図１６】
0004562749.tif 000051
【図１７】
0004562749.tif 000052
【図１８】
0004562749.tif 000053
【図１９】
0004562749.tif 000054