(57)【要約】【課題】リレーショナルデータベース用アプリケーションでオブジェクト指向構造化文書データベースに格納された構造化文書を検索することができる検索方法、検索装置、検索プログラムおよび検索プログラム記録媒体を提供する。【解決手段】検索システム１００は、リレーショナルデータベース用アプリケーション（以下、アプリケーション）１００、検索装置２００、およびオブジェクト指向構造化文書データベース（以下、データベース）３００を備えている。検索装置２００は、２つの変換機能を持つミドルウェアプログラムが記録され、実行される装置である。第１の変換機能は、アプリケーション１００から受け取った構造化文書検索式をデータベース３００に対する検索に必要なパス検索式に変換する機能であり、第２の変換機能は、その検索結果であるノード集合をアプリケーション１００に返却するための検索結果表に変換する機能である。【選択図】      図１
2004348479.tif 000002
【特許請求の範囲】
【請求項１】
リレーショナルデータベース用アプリケーションプログラムから受け付けた、構造化文書を検索する検索指示に基づいて、オブジェクト指向構造化文書データベースを検索し、検索結果を前記リレーショナルデータベース用アプリケーションプログラムに返却する検索装置であって、
前記検索指示である構造化文書検索式を、前記オブジェクト指向構造化文書データベースに検索可能な検索式であるパス検索式に変換する検索式変換手段と、
前記パス検索式により前記オブジェクト指向構造化文書データベースを検索した結果、前記オブジェクト指向構造化文書データベースから取得したノード集合を前記構造化文書検索式に従って二次元の表形式である検索結果表に変換する検索結果変換手段と、
を有することを特徴とする検索装置。
【請求項２】
前記構造化文書検索式は、
前記オブジェクト指向構造化文書データベースに格納されている前記構造化文書を絞り込む方法を記述している条件指定と、
前記二次元の表に変換する方法を記述している変換指定と、
を有し、
前記検索式変換手段は、
前記条件指定から前記パス検索式を生成することを特徴とする請求項１記載の検索装置。
【請求項３】
前記検索結果変換手段は、
前記ノード集合の各要素と、前記変換指定の返却パス集合の各要素との組み合わせすべてについて、前記オブジェクト指向構造化文書データベースより該当する検索結果を取得して、該検索結果の集合を前記検索結果表とすることを特徴とする請求項２記載の検索装置。
【請求項４】
リレーショナルデータベース用アプリケーションプログラムから構造化文書を検索する検索指示を受け付けた検索装置が、前記検索指示に基づいてオブジェクト指向構造化文書データベースを検索し、検索結果を前記リレーショナルデータベース用アプリケーションプログラムに返却する検索方法であって、
前記検索指示である構造化文書検索式を、前記オブジェクト指向構造化文書データベースに検索可能な検索式であるパス検索式に変換する検索式変換ステップと、
前記パス検索式により前記オブジェクト指向構造化文書データベースを検索した結果、前記オブジェクト指向構造化文書データベースから取得したノード集合を前記構造化文書検索式に従って二次元の表形式である検索結果表に変換する検索結果変換ステップと、
を有することを特徴とする検索方法。
【請求項５】
前記構造化文書検索式は、
前記オブジェクト指向構造化文書データベースに格納されている前記構造化文書を絞り込む方法を記述している条件指定と、
前記二次元の表に変換する方法を記述している変換指定と、
を有し、
前記検索式変換ステップは、
前記条件指定から前記パス検索式を生成することを特徴とする請求項４記載の検索方法。
【請求項６】
前記検索結果変換ステップは、
前記ノード集合の各要素と、前記変換指定の返却パス集合の各要素との組み合わせすべてについて、前記オブジェクト指向構造化文書データベースより該当する検索結果を取得して、該検索結果の集合を前記検索結果表とすることを特徴とする請求項５記載の検索方法。
【請求項７】
請求項４乃至６のいずれか１項に記載の検索装置に前記各ステップを実行させることを特徴とする検索プログラム。
【請求項８】
請求項７に記載された検索プログラムをコンピュータ読み取り可能な記録媒体に記録していることを特徴とする検索プログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、構造化文書を検索するコンピュータシステムに用いられるミドルウェアに関し、特に、構造化文書が格納されたオブジェクト指向データベースをリレーショナルデータベース用アプリケーションにより検索するためのミドルウェアに関する。
【０００２】
【従来の技術】
近年、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）をはじめとする構造化文書が、インターネット上の様々な情報共有のためのデータフォーマットとして、利用されるようになっている。ＸＭＬは、１９９７年１２月に、標準化団体Ｗ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｉｕｍ）により標準化された構造化文書の規格の一種であり、このＸＭＬ規格に沿って書かれたデータをＸＭＬ文書と呼ぶ。
【０００３】
ＸＭＬ文書は、人が解読・編集可能な文書である。しかし、同時に、ＸＭＬ文書は、タグを用いて構造化されており、コンピュータプログラムが、容易に処理することが可能なデータでもある。ＸＭＬ文書のタグは、見かけは文書中に埋めこまれた「＜」と「＞」で囲まれた文字列である。タグには、開始タグと終了タグがあり、開始タグと終了タグで囲まれた領域を要素と呼ぶ。要素は、複数の子要素を持ち、それぞれの子要素が複数の孫要素を持つというように、入れ子状に記述できる。そのため、ＸＭＬ文書は、多段階の木構造を表現することができる。
【０００４】
ＸＭＬ文書をコンピュータプログラムが処理する際には、ＸＭＬ文書が表現する木構造を、コンピュータメモリ上の木構造に変換した方が便利である。このように、ＸＭＬ文書をコンピュータメモリ上の木構造として表現したものを、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）と呼ぶ。ＤＯＭは、同じくＷ３Ｃにより標準化されている。ＤＯＭは、ノードとリンクよりなるノード・リンクモデルでＸＭＬ文書を表現する。ＸＭＬ文書の要素は、ＤＯＭのノードに相当する。
【０００５】
コンピュータメモリ上のＤＯＭデータを処理するシステムを作成する際に、ＤＯＭデータ中のノードを指し示す検索式が利用できれば便利である。そのために、同じくＷ３Ｃにより、ＸＰａｔｈ（ＸＭＬ  Ｐａｔｈ  Ｌａｎｇｕａｇｅ）という表記方法が標準化されている。ＸＰａｔｈのようなパス検索式を用いることで、ＤＯＭデータ中の条件に合うノードを指し示すことができる。
【０００６】
このようにＸＭＬに関する様々な技術の規格化が行われ、様々なコンピュータシステムがＸＭＬをベースとして開発されるようになったため、近年、ＸＭＬ文書を格納するためのデータベースの必要性も増している。ＸＭＬを格納するデータベースには、大きく分けて、リレーショナルデータベース、オブジェクト指向データベース、文書データベースの３種類がある。
【０００７】
リレーショナルデータベースにＸＭＬ文書を格納するには、ＸＭＬ文書をリレーショナルデータベースの格納モデルである二次元の表に変換する必要がある。現在、リレーショナルモデルに基づくリレーショナルデータベース管理システム（ＲＤＢＭＳ）は、データベース管理システム（ＤＢＭＳ）の主流として、顧客管理データベースや物品管理データベースなどに広く利用されている。従って、信頼性の高いリレーショナルデータベース管理システム（ＲＤＢＭＳ）が利用することは容易であるが、ＸＭＬ文書を二次元の表形式に変換するには、元となるＸＭＬ文書の形式や利用目的を分析し、最適な変換方法を検討し、リレーショナルスキーマを設計する必要がある。そのため、設計・構築コストが高く、大規模なシステム開発には向くが、中小規模のシステムには不向きである。
【０００８】
オブジェクト指向データベースにＸＭＬ文書を格納するには、ＸＭＬ文書をそのままデータベースに格納すればよい。これは、オブジェクト指向データベースは、ＸＭＬ文書の基本構造である木構造をオブジェクトの親子関係として、そのままの形で格納することができるからである。そのため、短期間の開発が求められる中小規模のシステム開発においては、複雑なスキーマ設計が必要でないという理由から、ＸＭＬ文書を木構造データとしてデータベースに格納し、パス検索式を用いて検索を行うことが可能であるオブジェクト指向データベースの利用が盛んに行われている。なお、以後の説明において、構造化文書を格納するオブジェクト指向データベースをオブジェクト指向構造化文書データベースと呼ぶ。
【０００９】
文書データベースにＸＭＬ文書を格納する際には、ＸＭＬ文書を文章として格納する。文書データベースは、構造化文書を文章として扱い、自然言語解析を施し、索引付けを行い、データベースに格納するので、文章の類似検索が可能なデータベースである。そのため、文書データベースは、ＸＭＬ文書のうち、文章データを格納する場合に特化して利用されるが、文章を扱うシステム開発以外には、用いられない。
【００１０】
アプリケーションソフトウェアは、データベースにアクセスしてデータを検索し、その検索結果を処理するプログラムである。現在、最も広く普及しているのは、リレーショナルデータベースであるため、リレーショナルデータベースにアクセスするアプリケーションソフトウェアはその他のデータベースにアクセスするものよりも広く普及しており安価である。またアプリケーションを開発する際にも、リレーショナルデータベース用インタフェースを扱う標準的なツールが広く普及しているため、これらのツールを用いることで、他のインタフェースに比べて、低コストで開発を行うことができる。
【００１１】
リレーショナルデータベースは、データを二次元の表として管理している。そのため、リレーショナルデータベース用アプリケーションは、データベースの管理方法に合わせて、二次元の表を操作することに適した設計になっている。また、リレーショナルデータベース用アプリケーションは、リレーショナルデータベースに対してリレーショナルデータベース用インタフェースを用いてアクセスするが、このリレーショナルデータベース用インタフェースのうち、データベースからアプリケーションに検索結果を返却する部分は、行と列より成る二次元の表を扱うように作られている。しかし、Ｃ言語やＪａｖａ（登録商標）言語など、手続き指向言語で書かれたアプリケーションプログラムに、二次元の表である検索結果を返却するために、データベースからアプリケーションに検索結果を返却するインタフェースは、以下の３つの手順を踏む必要がある。
【００１２】
（１）行を指定
“現在行”（カーソル）を指定する。
【００１３】
（２）列を指定
列名もしくは列番号を指定する。
【００１４】
（３）  値の取得
値を取り出す。
【００１５】
リレーショナルデータベース用アプリケーションは、このようなインタフェースにより、情報を取り出すよう最適化されて作られている。
【００１６】
尚、この出願に関連する先行技術文献情報としては、次のものがある。
【００１７】
【特許文献１】
特開２００１−３３１４７９
【００１８】
【発明が解決しようとする課題】
しかしながら、従来は、オブジェクト指向構造化文書データベースに格納された構造化文書をリレーショナルデータベース用インタフェースを通して、検索することはできなかった。これは、以下の２つの問題があるためである。
【００１９】
（１）オブジェクト指向構造化文書データベースが、構造化文書の木構造をパス検索式でノードを指し示し、値を取得するインタフェースを持つのに対し、リレーショナルデータベース用インタフェースが、行と列よりなる二次元の表を行と列を指定して値を取り出すインタフェースになっている。
【００２０】
（２）構造化文書に対する検索要求と、検索結果返却のための構造変換の指定が、リレーショナルデータベースの検索式では表現できない。
【００２１】
以上の問題のため、中小規模のシステム開発において構築の容易なオブジェクト指向構造化文書データベースと、種類が多く、安価なリレーショナルデータベース用アプリケーションを組み合わせて、システムを開発することができないという問題点があった。
【００２２】
本発明は、上記の事情を鑑みたものであり、リレーショナルデータベース用アプリケーションでオブジェクト指向構造化文書データベースに格納された構造化文書を検索することができる検索装置、検索方法、検索プログラム、および検索プログラム記録媒体を提供することを目的とする。
【００２３】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の本発明は、リレーショナルデータベース用アプリケーションプログラムから受け付けた、構造化文書を検索する検索指示に基づいて、オブジェクト指向構造化文書データベースを検索し、検索結果を前記リレーショナルデータベース用アプリケーションプログラムに返却する検索装置であって、前記検索指示である構造化文書検索式を、前記オブジェクト指向構造化文書データベースに検索可能な検索式であるパス検索式に変換する検索式変換手段と、前記パス検索式により前記オブジェクト指向構造化文書データベースを検索した結果、前記オブジェクト指向構造化文書データベースから取得したノード集合を前記構造化文書検索式に従って二次元の表形式である検索結果表に変換する検索結果変換手段と、を有することを要旨とする。
【００２４】
請求項２記載の本発明は、請求項１記載の発明において、前記構造化文書検索式は、前記オブジェクト指向構造化文書データベースに格納されている前記構造化文書を絞り込む方法を記述している条件指定と、前記二次元の表に変換する方法を記述している変換指定と、を有し、前記検索式変換手段は、前記条件指定から前記パス検索式を生成することを要旨とする。
【００２５】
請求項３記載の本発明は、請求項２記載の発明において、前記検索結果変換手段は、前記ノード集合の各要素と、前記変換指定の返却パス集合の各要素との組み合わせすべてについて、前記オブジェクト指向構造化文書データベースより該当する検索結果を取得して、該検索結果の集合を前記検索結果表とすることを要旨とする。
【００２６】
請求項４記載の本発明は、リレーショナルデータベース用アプリケーションプログラムから構造化文書を検索する検索指示を受け付けた検索装置が、前記検索指示に基づいてオブジェクト指向構造化文書データベースを検索し、検索結果を前記リレーショナルデータベース用アプリケーションプログラムに返却する検索方法であって、前記検索指示である構造化文書検索式を、前記オブジェクト指向構造化文書データベースに検索可能な検索式であるパス検索式に変換する検索式変換ステップと、前記パス検索式により前記オブジェクト指向構造化文書データベースを検索した結果、前記オブジェクト指向構造化文書データベースから取得したノード集合を前記構造化文書検索式に従って二次元の表形式である検索結果表に変換する検索結果変換ステップと、を有することを要旨とする。
【００２７】
請求項５記載の本発明は、請求項４記載の発明において、前記構造化文書検索式は、前記オブジェクト指向構造化文書データベースに格納されている前記構造化文書を絞り込む方法を記述している条件指定と、前記二次元の表に変換する方法を記述している変換指定と、を有し、前記検索式変換ステップは、前記条件指定から前記パス検索式を生成することを要旨とする。
【００２８】
請求項６記載の本発明は、請求項５記載の発明において、前記検索結果変換ステップは、前記ノード集合の各要素と、前記変換指定の返却パス集合の各要素との組み合わせすべてについて、前記オブジェクト指向構造化文書データベースより該当する検索結果を取得して、該検索結果の集合を前記検索結果表とすることを要旨とする。
【００２９】
請求項７記載の本発明は、請求項４乃至６のいずれか１項に記載の検索装置に前記各ステップを実行させる検索プログラムであることを要旨とする。
【００３０】
請求項８記載の本発明は、請求項７に記載された検索プログラムをコンピュータ読み取り可能な記録媒体に記録している検索プログラム記録媒体であることを要旨とする。
【００３１】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態について説明する。
【００３２】
図１は本発明の実施形態に係る検索システム１の概略構成図である。図１に示す検索システム１００は、リレーショナルデータベース用アプリケーション（以下、アプリケーションと呼ぶ）１００、検索装置２００、およびオブジェクト指向構造化文書データベース（以下、データベースと呼ぶ）３００を備えている。尚、検索システム１は、構成としては、一つからなる装置、各構成要素が分散されて複数の装置がネットワーク接続されたシステムなどのいずれの構成であっても良い。
【００３３】
アプリケーション１００は、検索装置２００を利用するアプリケーションプログラムであり、その処理の中で構造化文書をデータベース３００より検索することを必要とするアプリケーションプログラムである。ここで、アプリケーション１００が検索装置２００に検索の内容を指示するために用いる検索式を構造化文書検索式と呼ぶ。構造化文書検索式は、条件指定と変換指定からなり、構造化文書を条件指定により絞込み、変換指定により二次元の表に変換するようになっている。アプリケーション１００が検索結果として扱うことのできるデータ構造は、行と列よりなる二次元の表である。以下では、この検索結果である行と列よりなる二次元の表を検索結果表と呼ぶ。
【００３４】
データベース３００は、構造化文書が格納されているデータベースである。格納されている構造化文書は、木構造のノードとリンクとしてアクセスすることができる。例えば、図２に示す構造化文書は、図３（ａ）に示すノードとリンクとして格納される。図３（ｂ）は図３（ａ）の表記方法を説明している凡例であるが、これによれば、木構造には、必ずルートノードがあり、構造化文書の要素は要素ノード、属性は属性ノード、文字列はテキストノードとして格納される。
【００３５】
データベース３００の検索機能は、パス検索機能と部分構造化文書抽出機能とを有する。パス検索機能は、パス検索式により、該当するノード群を、ノード集合として取得する機能である。パスは、複数の要素名や属性名を“／”で区切った文字列であり、ＵＮＩＸ（登録商標）  ＯＳなどで用いられているディレクトリパスと似た概念であり、構造化文書の木構造を辿る順序を表している。パス検索式は、絶対パス検索式と相対パス検索式に分けられる。
【００３６】
図４は絶対パス検索式の一例を示している。絶対パス検索式はルートノードを基点として、木構造を辿り、最終的に到達したノードをノード集合として取得できる。例えば、図４に示す絶対パス検索式を図３（ａ）に示すデータに適用すると、ルートノードを基点とし、ノード集合Ｎ＝｛ｎ００５、ｎ００７｝が返却される。以下、このような検索を、絶対パス検索と呼ぶ。
【００３７】
図５は相対パス検索式の一例を示している。相対パス検索式は、基点となるノードを別途指定し、そこからの相対位置にあるノードをノード集合として取得できる。例えば、図５に示す相対パス検索式を図３に示すデータに、ノードｎ００２を基点とし、適用すると、ノード集合Ｎ＝｛ｎ０１１｝が返却される。以下、このような検索を、相対パス検索と呼ぶ。なお、基点となるノードを“＄ａ”のような変数記号で表し、図６に示すような記述も可能である。
【００３８】
部分構造化文書抽出機能は、基点となるノード（例えば、パス検索によって得られたノード）を指定することで、そのノードを頂点とする部分構造化文書を取り出す機能である。例えば、図３（ａ）に示すノードｎ００２を基点と指定すると、図７に示す部分構造化文書を取り出すことができる。これを部分構造化文書抽出と呼ぶ。
【００３９】
検索装置２００は、２つの変換機能を持つミドルウェアプログラムが記録され、実行される装置である。第１の変換機能は、アプリケーション１００から受け取った構造化文書検索式を、データベース３００に対する検索に必要なパス検索式に変換する機能である。また、第２の変換機能は、その検索結果であるノード集合を、アプリケーション１００に返却するための検索結果表に変換する機能である。
【００４０】
構造化文書検索式は、１個のバインドパスＰＢと、０個もしくは１個の条件式Ｃと、１個以上の返却パス集合Ｒ１−ｍで構成される検索式である。ここで、バインドパスＰＢおよび返却パス集合Ｒ１−ｍが、変換指定であり、バインドパスＰＢおよび条件式Ｃが、条件指定である。
【００４１】
バインドパスＰＢは、絶対パス検索式で表現され、以下の条件式Ｃおよび返却パス集合Ｒ１−ｍで指定される相対パス検索式の基点となるノードを指定する。ここで、このバインドパスＰＢを用いてデータベース３００を検索した結果得られる仮想的なノード集合を、基点ノード集合Ｎ１−ｎという。
【００４２】
条件式Ｃは、基点ノード集合Ｎ１−ｎを基点とする相対パス検索式で表現され、その値を評価する演算式である。条件式Ｃは、上述した基点ノード集合Ｎ１−ｎを条件により絞り込む働きを持つ。以後、この条件Ｃにより絞り込まれた、基点ノード集合Ｎ１−ｎを新たに基点ノード集合Ｎ１−ｎと呼ぶことにする。
【００４３】
返却パス集合Ｒ１−ｍは、基点ノード集合Ｎ１−ｎの中の、個々の基点ノードＮｉの子孫から、部分構造化文書として抽出するノードを指定する、相対パス検索式の組である。一つの基点ノードＮｉに対して返却パス集合Ｒ１−ｍに対応して、ｍ個の部分構造化文書が生成される。
【００４４】
検索結果表は、基点ノード集合Ｎ１−ｎ、返却パス集合Ｒ１−ｍに対応する、ｎ行ｍ列の二次元の表であり、個々の要素として、部分構造化文書Ｄｉｊを持つ。部分構造化文書Ｄｉｊは、任意のｉとｊについて、基点ノードＮｉと返却パスＲｊにより得られる部分構造化文書である。図８に、基点ノード集合Ｎ１−ｎ、返却パス集合Ｒ１−ｍと、返却結果である二次元の表への対応を示す。
【００４５】
さらに詳しくは、検索装置２００は、制御装置２０１、パス検索式生成装置２０２、データベース接続装置２０３、パス検索装置２０４、および部分構造化文書抽出装置２０５を具備するものである。
【００４６】
制御装置２０１は、アプリケーション１００から受け取った構造化文書検索式により、装置２０２乃至２０５を制御して検索結果表を生成し、アプリケーション１００に返却するようになっている。
【００４７】
パス検索式生成装置２０２は、制御装置２０１から受け取った構造化文書検索式を元にパス検索式を生成し、制御装置２０１に返却するようになっている。
【００４８】
データベース接続装置２０３は、データベース３００との接続に必要な情報である接続情報を制御装置２０１から受け取り、データベース３００との接続を確立し、以後のデータベース３００の全ての操作に必要となる接続ハンドルを制御装置２０１に返却するようになっている。
【００４９】
パス検索装置２０４は、制御装置２０１から受け取ったパス検索式により、データベース３００を検索し、格納されている構造化文書中の基点ノード集合Ｎ１−ｎを制御装置２０１に返却するようになっている。
【００５０】
部分構造化文書抽出装置２０５は、制御装置２０１から受け取った構造化文書の基点ノードＮｉと、返却パスＲｊにより、データベース３００より、部分構造化文書Ｄｉｊを取得し、制御装置２０１に返却するようになっている。
【００５１】
次に、本実施の形態に係る検索システム１の動作を図９乃至１３を用いて説明する。ここで、図９は、検索システム１の処理手順を示すフローチャート図である。図１０乃至１３は、図９の各ステップを詳細に説明するフローチャート図である。なお、前提として、検索システム１においては、任意数の構造化文書がデータベース３００に事前に格納されており、また、アプリケーション１００は、事前に起動されているものとする。
【００５２】
図９に示すように、検索システム１は、アプリケーション１００起動後、データベース３００に接続し、次に、アプリケーション１００の処理内容に応じて、検索実行および検索結果取得を必要回数繰り返し、最後にデータベース３００への接続を切断し、アプリケーション１００を終了する（ステップＳ１００〜Ｓ４００）。
【００５３】
ここで、上述の各ステップについて説明する。まず、図１０を用いて接続ステップＳ１００について説明する。
【００５４】
アプリケーション１００は、データベース３００に接続するための接続情報（ユーザ名、パスワードなど、データベース３００固有の情報）を制御装置２０１に入力する（ステップＳ１０１）。次に、制御装置２０１は、上記接続情報を、データベース接続装置２０３に入力し、接続を指示する（ステップＳ１０２）。
【００５５】
データベース接続装置２０３は、上記接続情報を用いて、データベース３００に接続する（ステップＳ１０３）。データベース３００は、データベース３００に対する以降の操作を行うために必要な情報である接続ハンドルＨＣを、データベース接続装置２０３を介して、制御装置２０１に返却すると、制御装置２０１は、該接続ハンドルＨＣをアプリケーション１００に返却する（ステップＳ１０４）。
【００５６】
次に、図１１を用いて検索実行ステップＳ２００について説明する。
【００５７】
アプリケーション１００は、処理に必要な構造化文書をデータベース３００より検索するため、その検索内容を記述した構造化文書検索式Ｑを生成する（ステップＳ２０１）。
【００５８】
アプリケーション１００は、ステップＳ１０４で取得した接続ハンドルＨＣとステップＳ２０１で生成した構造化文書検索式Ｑを、制御装置２０１に入力し、検索の実行を指示する（ステップＳ２０２）。
【００５９】
制御装置２０１は、ステップＳ２０２で入力された構造化文書検索式Ｑを、パス検索式生成装置２０２に入力し、パス検索式の生成を指示する（ステップＳ２０３）。
【００６０】
パス検索式生成装置２０２は、ステップＳ２０３で入力された構造化文書検索式Ｑより、バインドパスＰＢと条件式Ｃを取り出し、パス検索式Ｐを生成する（ステップＳ２０４）。パス検索式Ｐは、バインドパスＰＢと条件式Ｃを結合したものであり、条件式Ｃを満たすバインドパスＰＢを意味する絶対パス検索式である。パス検索式生成装置２０２は、生成したパス検索式Ｐを、制御装置２０１に返却する。
【００６１】
制御装置２０１は、接続ハンドルＨＣとステップＳ２０４で返却されたパス検索式Ｐを、パス検索装置２０４に入力し、検索実行を指示する（ステップＳ２０５）。
【００６２】
パス検索装置２０４は、接続ハンドルＨＣとパス検索式Ｐを、データベース３００に入力し、検索実行を指示すると、データベース３００は、入力されたパス検索式Ｐを用いて、絶対パス検索を行い、検索結果ノード集合である基点ノード集合Ｎ１−ｎを返却する（ステップＳ２０６）。
【００６３】
パス検索装置２０４は、ステップＳ２０６で返却された基点ノード集合Ｎ１−ｎを、制御装置２０１に返却する（ステップＳ２０７）。
【００６４】
制御装置２０１は、検索結果ハンドルＨＲを新たに生成し、アプリケーション１００に返却する（ステップＳ２０８）。ここで、検索結果ハンドルＨＲは、接続ハンドルＨＣ、基点ノード集合Ｎ１−ｎ、および構造化文書検索式Ｑより取り出した返却パス集合Ｒ１−ｍを持つ構造体である。
【００６５】
次に、図１２を用いて検索結果取得ステップＳ３００について説明する。
【００６６】
アプリケーション１００は、検索結果ハンドルＨＲと、現在行番号ｉと、返却パス番号ｊを制御装置２０１に入力し、検索結果の取得を指示する（ステップＳ３０１）。ここで、現在行番号ｉは、基点ノード集合Ｎ１−ｎの中の特定の基点ノードＮｉを識別する識別子である。返却パス番号ｊは、返却パス集合Ｒ１−ｍの中の特定の返却パスＲｊを識別する識別子である。アプリケーション１００は、現在行番号ｉを１からｎの間で、返却パス番号ｊを１からｍの間で変化させながら、繰り返し制御装置２０１を呼び出す。全てのｉとｊの組み合わせについて呼び出した場合、呼び出す回数はｎ×ｍ回である。制御装置２０１は、呼び出されるたびに、以降のステップＳ３０２〜Ｓ３０４を１度、処理する。
【００６７】
制御装置２０１は、ステップＳ３０１で入力された返却パス番号ｊより、返却パス集合Ｒ１−ｍから返却パスＲｊを特定し、現在行番号ｉより、基点ノード集合Ｎ１−ｎから基点ノードＮｉを特定する。次に、これら返却パスＲｊと基点ノードＮｉを、部分構造化文書抽出装置２０５に入力し、部分構造化文書抽出を指示する（ステップＳ３０２）。
【００６８】
これにより、部分構造化文書の抽出がデータベース３００から以下のように行われる（ステップＳ３０３）。
【００６９】
部分構造化文書抽出装置２０５は、ステップＳ３０２で入力された基点ノードＮｉを基点とし、返却パスＲｊを相対パス検索式とした相対パス検索をデータベース３００に指示する。
【００７０】
次に、データベース３００は、相対パス検索を実行する。
【００７１】
次に、データベース３００は、結果として得られたノード集合である返却ノード集合Ｍｉｊを、部分構造化文書抽出装置２０５に返却する。
【００７２】
次に、部分構造化文書抽出装置２０５は、データベース３００に対して、返却ノード集合Ｍｉｊ中の個々のノードを頂点とする部分構造化文書抽出を、全てのノードについて指示する。
【００７３】
次に、データベース３００は、部分構造化文書抽出を実行し、構造化文書集合である部分構造化文書集合Ｅｉｊを取り出して、部分構造化文書抽出装置２０５に返却する。
【００７４】
部分構造化文書抽出装置２０５は、部分構造化文書集合Ｅｉｊを連結し、返却パス番号ｊと現在行番号ｉに対応する、部分構造化文書Ｄｉｊとする（ステップＳ３０３）。
【００７５】
最後に、部分構造化文書抽出装置２０５は、部分構造化文書Ｄｉｊを、制御装置２０１に返却する。
【００７６】
制御装置２０１は、ステップＳ３０３で得た部分構造化文書Ｄｉｊを、アプリケーション１００に返却する（ステップＳ３０４）。
【００７７】
アプリケーション１００は、全ての部分構造化文書Ｄｉｊを取得した後、アプリケーション固有の処理を行う（ステップＳ３０５）。
【００７８】
構造化文書検索式Ｑに対する検索結果を全て取得した後、アプリケーション１００が、別の構造化文書検索式Ｑ’を続けて検索するには、構造化文書検索式Ｑを構造化文書検索式Ｑ’で置き換え、上述したステップＳ２００およびＳ３００を繰り返し実行する。
【００７９】
次に、図１３を用いて切断ステップ４００について説明する。
【００８０】
アプリケーション１００は、制御装置２０１に対して、接続ハンドルＨＣを入力し、検索の終了を指示する（ステップＳ４０１）。
【００８１】
制御装置２０１は、データベース接続装置２０３に対し、接続ハンドルＨＣを入力し、検索の終了を指示する（ステップＳ４０２）。
【００８２】
データベース接続装置２０３は、データベース３００に対し、接続ハンドルＨＣを入力し、接続を切断する（ステップＳ４０３）。
【００８３】
次に、具体的に、構造化文書として、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、データベース３００は、パス検索式としてＸＰａｔｈ（ＸＭＬ  Ｐａｔｈ  Ｌａｎｇｕａｇｅ）をサポートするデータベース（以下、ＸＭＬＤＢと呼ぶ）３００、リレーショナルデータベース用アプリケーションのためのインタフェースとして、ＪＤＢＣ（Ｊａｖａ  ＤａｔａＢａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）、構造化文書検索式として、ＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）、アプリケーション１００としては、架空のリレーショナルデータベース用アプリケーションである検索アプリケーション（以下、検索ＡＰと呼ぶ）１００を用いた実施例について説明する。尚、上記ＸＭＬ、ＤＯＭ、ＸＰａｔｈ、ＸＱｕｅｒｙは、標準化団体Ｗ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｉｕｍ）により規格化されている。
【００８４】
ここで、ＸＭＬＤＢ３００には事前に、図１４に示す３つのＸＭＬ文書が格納されているものとする。これらのＸＭＬ文書は、書籍の注文書をＸＭＬ文書で表現したものである。なお、ＸＭＬＤＢ３００中の該ＸＭＬ文書は、図１５に示すＤＯＭとしてそれぞれ格納されている。
【００８５】
また、ユーザは、あらかじめ図１６に示す検索ＡＰ１００を起動しておく。この検索ＡＰ１００は、あくまでリレーショナルデータベース用アプリケーションの一例であるが、その動作はユーザが構造化文書検索式を入力すると、リレーショナルデータベース用インタフェース（ＪＤＢＣ）を通じて、データベースに検索実行を指示し、返却された検索結果表を、ＧＵＩ画面に表示するアプリケーションである。
【００８６】
本実施例の検索システム１は、上述した図９のフローチャートに示す動作を行う。ここで、実際の処理においては、検索ＡＰの利用目的とユーザの操作に応じて、ステップＳ２００およびＳ３００を必要回数繰り返すが、説明上、ステップＳ１００乃至Ｓ４００を１度のみ行うものとする。
【００８７】
まず、図１０を用いて接続ステップＳ１００について説明する。
【００８８】
検索ＡＰ１００は、ＸＭＬＤＢ３００に接続するための図１７に示す接続情報（ユーザ名、パスワード）を制御装置２０１に入力する（ステップＳ１０１）。
【００８９】
制御装置２０１は、入力された接続情報をデータベース接続装置２０３に入力し、接続を指示する（ステップＳ１０２）。
【００９０】
これにより、データベース接続装置２０３は、接続情報を用いて、ＸＭＬＤＢ３００に接続する（ステップＳ１０３）。
【００９１】
一方、接続されたＸＭＬＤＢ３００は、ＸＭＬＤＢ３００に対する以降の操作を行うために必要な識別値である接続ハンドルＨＣをデータベース接続装置２０３に返却するので、データベース接続装置２０３は、この接続ハンドルＨＣを制御装置２０１を介し、検索ＡＰに返却する（ステップＳ１０４）。
【００９２】
次に、図１１を用いて検索実行ステップＳ２００について説明する。
【００９３】
検索ＡＰ１００は、処理に必要なＸＭＬ文書をＸＭＬＤＢ３００より検索するための、図１８に示す構造化文書検索式Ｑを生成する（ステップＳ２０１）。構造化文書検索式Ｑは、図１９に示すバインドパスＰＢ、図２０に示す条件式Ｃ、および図２１に示す返却パス集合Ｒ１−ｍ（ｍ＝２）から構成される。なお、構造化文書検索式Ｑ中の“＄ａ”は、条件式Ｃと返却パス集合Ｒ１−ｍが基準とするバインドパスを指定するための変数記号である。この具体例ではバインドパス“／ｏｒｄｅｒ／ｂｏｏｋ”が、変数記号“＄ａ”に関連付けられており、条件式“＄ａ／ｐｒｉｃｅ＞１０００”は上記バインドパスを基準にその子要素の内の“ｐｒｉｃｅ”という名前の要素が１０００より大きいというという条件を表している。
【００９４】
次に、検索ＡＰは、ステップＳ１０４で取得した接続ハンドルＨＣおよびステップＳ２０１で生成した構造化文書検索式Ｑを、制御装置２０１に入力し、検索の実行を指示する（ステップＳ２０２）。
【００９５】
制御装置２０１は、ステップＳ２０２で入力された構造化文書検索式Ｑを、パス検索式生成装置２０２に入力し、パス検索式の生成を指示する（ステップＳ２０３）。
【００９６】
パス検索式生成装置２０２は、ステップＳ２０３で入力された構造化文書検索式Ｑより、バインドパスＰＢと条件式Ｃを取り出し、図２２に示すパス検索式Ｐを生成する（ステップＳ２０４）。生成は、バインドパスＰＢに条件式Ｃを“［”と“］”で囲んだものを連結することで行う。そして、パス検索式生成装置２０２は、生成したパス検索式Ｐを制御装置２０１に返却する。
【００９７】
制御装置２０１は、接続ハンドルＨＣとステップＳ２０４で入力されたパス検索式Ｐを、パス検索装置２０４に入力し、検索実行を指示する（ステップＳ２０５）。
【００９８】
パス検索装置２０４は、接続ハンドルＨＣとパス検索式Ｐを、ＸＭＬＤＢ３００に入力し、検索実行を指示する（ステップＳ２０６）。
【００９９】
ＸＭＬＤＢ３００は、入力されたパス検索式Ｐを用いて、絶対パス検索を行い、検索結果ノード集合である基点ノード集合Ｎ１−ｎ（ｎ＝３）をパス検索装置２０４を介して、制御装置２０１に返却する（ステップＳ２０７）。この具体例における基点ノード集合Ｎ１−ｎを図２３に示す。
【０１００】
制御装置２０１は、検索結果ハンドルＨＲを新たに生成し、挨索ＡＰ１００に返却する（ステップＳ２０８）。ここで、検索結果ハンドルＨＲは、接続ハンドルＨＣ、図２３の基点ノード集合Ｎ１−ｎ、および構造化文書検索式Ｑより取り出した図２１の返却パス集合Ｒ１−ｍを有する構造体である。
【０１０１】
次に、図１２を用いて検索結果取得ステップＳ３００について説明する。
【０１０２】
検索ＡＰ１００は、検索結果ハンドルＨＲと、現在行番号ｉと、返却パス番号ｊを制御装置２０１に入力し、検索結果の取得を指示する（ステップＳ３０１）。この具体例では、現在行番号ｉをｉ＝１，２，３と割り当て、返却パス番号ｊをｊ＝１，２と割り当て、ｉとｊの全ての組み合わせについて、ステップＳ３０２乃至Ｓ３０４を実行する。実行回数は６（＝ｍ×ｎ）回である。
【０１０３】
制御装置２０１は、ステップＳ３０１で入力された返却パス番号ｊより、返却パス集合Ｒ１−ｍから返却パスＲｊを特定し、現在行番号ｉより、基点ノード集合Ｎ１−ｎから基点ノードＮｉを特定する。次に、これら返却パスＲｊと基点ノードＮｉを、部分構造化文書抽出装置２０５に入力し、部分構造化文書抽出を指示する（ステップＳ３０２）。
【０１０４】
これにより、部分化構造文書の抽出がＸＭＬＤＢ３００から以下のように行われる（ステップＳ３０３）。
【０１０５】
まず、部分構造化文書抽出装置２０５は、ステップＳ３０２で入力された、基点ノードＮｉを基点とし、返却パスＲｊを相対パス検索式とした相対パス検索をＸＭＬＤＢ３００に指示する。
【０１０６】
次に、ＸＭＬＤＢ３００は、相対パス検索を実行する。
【０１０７】
次に、ＸＭＬＤＢ３００は、結果として得られたノード集合である返却ノード集合Ｍｉｊを、部分構造化文書抽出装置２０５に返却する。各ノードＮｉと、返却パスＲｊの組み合わせにより返却される、返却ノード集合Ｍｉｊを図２４に示す。
【０１０８】
次に、部分構造化文書抽出装置２０５は、ＸＭＬＤＢ３００に対して、ノード集合である返却ノード集合Ｍｉｊ中の個々のノードを頂点とする部分構造化文書抽出を、全てのノードについて指示する。
【０１０９】
次に、ＸＭＬＤＢ３００は、部分構造化文書抽出を実行し、構造化文書集合である部分構造化文書集合Ｅｉｊを取り出して、部分構造化文書抽出装置２０５に返却する。図２５に、各ノードＮｉと、返却パスＲｊの組み合わせに対する部分構造化文書集合Ｅｉｊの例を示す。
【０１１０】
部分構造化文書抽出装置２０５は、部分構造化文書集合Ｅｉｊを連結し、返却パス番号ｊと現在行番号ｉに対応する部分構造化文書Ｄｉｊとする。各基点ノードＮｉと、返却パスＲｊの組み合わせより返却される部分構造化文書Ｄｉｊを図２６に示す。
【０１１１】
最後に、部分構造化文書抽出装置２０５は、部分構造化文書Ｄｉｊを制御装置２０１に返却する。
【０１１２】
制御装置２０１は、ステップＳ３０３で得た部分構造化文書Ｄｉｊを検索ＡＰ１００に返却する（ステップＳ３０４）。
【０１１３】
検索ＡＰ１００は、全ての部分構造化文書Ｄｉｊを取得した後、検索結果表のＧＵＩ表示を行う（ステップＳ３０５）。図２７に、返却される検索結果表を示す。また、検索ＡＰ１００のＧＵＩ表示例を図２８に示す。
【０１１４】
なお、構造化文書検索式Ｑに対する検索結果を全て取得した後、検索ＡＰ１００が、別の構造化文書検索式Ｑ’を続けて検索するには、構造化文書検索式Ｑを構造化文書検索式Ｑ’で置き換え、ステップＳ２００乃至Ｓ３００を繰り返し実行する。
【０１１５】
次に、図１３を用いて切断ステップＳ４００について説明する。
【０１１６】
検索ＡＰ１００は、制御装置２０１に対して、接続ハンドルＨＣを入力し、検索の終了を指示する（ステップＳ４０１）。
【０１１７】
制御装置２０１は、データベース接続装置２０３に対し、接続ハンドルＨＣを入力し、検索の終了を指示する（ステップＳ４０２）。
【０１１８】
データベース接続装置２０３は、ＸＭＬＤＢ３００に対し、接続ハンドルＨＣを入力し、接続を切断する（ステップＳ４０３）。
【０１１９】
従って、本実施の形態の検索システム１によれば、データベース３００とアプリケーション１００の間に、ミドルウェアとしての検索装置２００を用いることで、既存のリレーショナルデータベース用アプリケーションからオブジェクト指向構造化文書データベースに格納された構造化文書を検索することが可能となる。これにより、既存の豊富なリレーショナルデータベース用アプリケーションを、構造化文書検索システムの構築に流用することを可能とし、システム開発コストの低減を実現することができる。
【０１２０】
尚、上記実施の形態の検索装置２００に格納されたミドルウェアプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
【０１２１】
【発明の効果】
以上説明したように、本発明によれば、リレーショナルデータベース用アプリケーションでオブジェクト指向構造化文書データベースに格納された構造化文書を検索することができる。
【０１２２】
これにより、従来不可能であった既存のリレーショナルデータベース用アプリケーションをもって、オブジェクト指向構造化文書データベースにアクセスすることを可能とし、市場に既に数多く存在し、安価なリレーショナルデータベース用アプリケーションと、オブジェクト指向構造化文書データベースを組み合わせた構造化文書検索システムを開発でき、システム開発コストを大幅に削減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る検索システムの概略構成図である。
【図２】構造化文書の一例である。
【図３】オブジェクト指向構造化文書データベースに格納された構造化文書の一例である。
【図４】絶対パス検索式の一例である。
【図５】相対パス検索式の一例である。
【図６】基点を指定した相対パス検索式の一例である。
【図７】検索の結果取り出された部分構造化文書の一例である。
【図８】返却結果表の構造である。
【図９】本発明の実施の形態に係る検索システムの動作を示すフローチャートである。
【図１０】本発明の実施の形態に係る検索システムの接続動作を示すフローチャートである。
【図１１】本発明の実施の形態に係る検索システムの検索実行動作を示すフローチャートである。
【図１２】本発明の実施の形態に係る検索システムの検索結果取得動作を示すフローチャートである。
【図１３】本発明の実施の形態に係る検索システムの切断動作を示すフローチャートである。
【図１４】ＸＭＬ文書の一例を示す図である。
【図１５】オブジェクト指向構造化文書データベースに格納されたＸＭＬ文書の一例である。
【図１６】検索アプリケーションの起動後の画面を示す図である。
【図１７】接続情報の一例を示す図である。
【図１８】構造化文書検索式の一例を示す図である。
【図１９】バインドパスの一例を示す図である。
【図２０】条件式の一例を示す図である。
【図２１】返却パス集合の一例を示す図である。
【図２２】パス検索式の一例である。
【図２３】基点ノード集合の一例である。
【図２４】返却ノード集合の一例である。
【図２５】部分構造化文書集合の一例である。
【図２６】部分構造化文書の一例である。
【図２７】部分ＸＭＬ文書の一例である。
【図２８】検索アプリケーションの検索結果表示画面を示す図である。
【符号の説明】
１  検索システム
１００  リレーショナルデータベース用アプリケーション（検索アプリケーション）
２００  検索装置
２０１  制御装置
２０２  パス検索式生成装置
２０３  データベース接続装置
２０４  パス検索式
２０５  部分構造化文書抽出装置
３００  オブジェクト指向構造化データベース（ＸＭＬＤＢ）
【図１】
2004348479.tif 000003
【図２】
2004348479.tif 000004
【図３】
2004348479.tif 000005
【図４】
2004348479.tif 000006
【図５】
2004348479.tif 000007
【図６】
2004348479.tif 000008
【図７】
2004348479.tif 000009
【図８】
2004348479.tif 000010
【図９】
2004348479.tif 000011
【図１０】
2004348479.tif 000012
【図１１】
2004348479.tif 000013
【図１２】
2004348479.tif 000014
【図１３】
2004348479.tif 000015
【図１４】
2004348479.tif 000016
【図１５】
2004348479.tif 000017
【図１６】
2004348479.tif 000018
【図１７】
2004348479.tif 000019
【図１８】
2004348479.tif 000020
【図１９】
2004348479.tif 000021
【図２０】
2004348479.tif 000022
【図２１】
2004348479.tif 000023
【図２２】
2004348479.tif 000024
【図２３】
2004348479.tif 000025
【図２４】
2004348479.tif 000026
【図２５】
2004348479.tif 000027
【図２６】
2004348479.tif 000028
【図２７】
2004348479.tif 000029
【図２８】
2004348479.tif 000030