(57)【要約】【課題】ユーザによって指定されたスキーマに準拠したXPath式から、当該指定されたスキーマに準拠しないＸＭＬデータをも検索することを可能とする。【解決手段】入力部１１は、ユーザによって指定されたパス構成要素を含むXPath式（第１の検索式）を入力する。XPath式解析生成部１２は、入力されたXPath式を解析し、当該XPath式に含まれるパス構成要素を抽出する。XPath式解析生成部１２は、抽出されたパス構成要素に基づいて、ＸＭＬデータ格納装置２０に格納されている、入力されたXPath式とは異なるスキーマのＸＭＬデータを検索するための定型XPath式（第２の検索式）を生成する。ＸＭＬデータ検索部１５は、生成された定型XPath式を用いて、当該定型XPath式に合致する構造化データをＸＭＬデータ格納装置２０から検索する。結果出力部１６は、ＸＭＬデータ検索部１５の結果を出力する。【選択図】      図１
2008171181.tif 000002
【特許請求の範囲】
【請求項１】
スキーマが異なる複数の構造化データが格納されている構造化データ格納手段から、データを検索する構造化データ検索装置において、
ユーザによって指定された構成要素を含む構造化データを検索するための第１の検索式を入力する入力手段と、
前記第１の検索式を解析し、当該第１の検索式に含まれる構成要素を抽出する抽出手段と、
前記抽出された構成要素に基づいて、前記構造化データ格納手段に格納されている前記第１の検索式とは異なるスキーマの構造化データを検索するための第２の検索式を生成する検索式生成手段と、
前記第２の検索式を用いて、当該第２の検索式に合致する構造化データを前記構造化データ格納手段から検索する検索手段と、
前記検索手段の結果を出力する検索結果出力手段と
を具備することを特徴とする構造化データ検索装置。
【請求項２】
スキーマが異なる複数の構造化データが格納されている構造化データ格納手段から、データを検索する構造化データ検索装置において、
ユーザによって指定されたスキーマの構造化データを検索するための当該ユーザによって指定された構成要素を含む第１の検索式を入力する入力手段と、
前記第１の検索式を解析し、当該第１の検索式に含まれる構成要素を抽出する抽出手段と、
前記抽出された構成要素に基づいて、前記指定されたスキーマ及び当該指定されたスキーマとは異なるスキーマの構造化データを検索するための第２の検索式を生成する検索式生成手段と、
前記第２の検索式を用いて、当該第２の検索式に合致する構造化データを前記構造化データ格納手段から検索する検索手段と、
前記検索手段の結果を出力する検索結果出力手段と
を具備することを特徴とする構造化データ検索装置。
【請求項３】
前記構造化データ格納手段に格納されている構造化データを検索するための検索式に含まれる構成要素に変数が埋め込まれた形式で表現される少なくとも１つのテンプレートを予め格納するテンプレート格納手段を更に具備し、
前記検索式生成手段は、前記テンプレート格納手段に格納されている少なくとも１つのテンプレートに基づいて、当該テンプレートに埋め込まれている変数を前記抽出された構成要素に置換することによって前記第２の検索式を生成する
ことを特徴とする請求項１または２記載の構造化データ検索装置。
【請求項４】
前記テンプレート格納手段は、前記少なくとも１つのテンプレートを含む前記変数の組み合わせがそれぞれ異なる複数のテンプレートを格納し、
前記複数のテンプレートの各々は、検索式の曖昧度を示すレベルに対応付けられており、
前記検索結果出力手段は、前記テンプレートに対応付けられているレベル毎に検索結果として出力する
ことを特徴とする請求項３記載の構造化データ検索装置。
【請求項５】
前記入力手段は、更に曖昧度を示す指定レベル情報を入力し、
前記検索式生成手段は、前記テンプレート格納手段に格納されている複数のテンプレートのうち、前記指定レベル情報によって示される曖昧度より低い曖昧度を示すレベルに対応付けられているテンプレートに基づいて、前記第２の検索式を生成する
ことを特徴とする請求項４記載の構造化データ検索装置。
【請求項６】
前記入力手段は、更に検索件数を示す指定件数情報を入力し、
前記検索式生成手段は、前記テンプレート格納手段に格納されている複数のテンプレートの各々に対応付けられている曖昧度が低い順に、当該テンプレートに基づいて前記第２の検索式を生成し、
前記検索手段は、検索された構造化データの数が前記指定件数情報によって示される検索件数を超えるまで、当該第２の検索式に合致する構造化データを順次検索する
ことを特徴とする請求項４記載の構造化データ検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、XMLデータベースに蓄積されたスキーマの異なる複数の種類のXMLデータに対して、ユーザによって指定されたXPath式に応じて検索を行う構造化データ検索装置に関する。
【背景技術】
【０００２】
一般に、論理構造を持つデータは構造化データと呼ばれる。構造化データにおいて、当該データの論理構造は、当該データ中に記述されたタグによって示される場合がある。このタグを用いて論理構造が表現された構造化データは、計算機で各種目的に合わせて解釈ないし加工して利用する処理に適している。構造化データの代表として、ＸＭＬ(Extensible Markup Language)形式で記述されたＸＭＬデータが知られている。
【０００３】
近年、非常に多くのアプリケーションでＸＭＬが用いられるようになり、様々なデータがＸＭＬ形式で記述されるようになってきている。これにより、ＸＭＬ形式で記述されたＸＭＬデータを検索する技術が、重要となっている。
【０００４】
上記したＸＭＬデータでは、複数の構成要素からなる階層化された論理構造を有し、例えば構成要素の要素名等の構造は必ずしも予め定められている必要はない。ＸＭＬデータには、例えば異なるスキーマ（データ構造）に準拠するデータが混在している。異なるスキーマとしては、例えばＸＨＴＭＬ（Extensible HyperText Markup Language）、ＮｅｗｓＭＬ、ＲＳＳ（Rich Site Summary）またはＡｔｏｍ等が挙げられる。
【０００５】
このような異なるスキーマに準拠するＸＭＬデータが混在するＸＭＬデータベースに対して、例えばユーザ（検索者）が所望するＸＭＬデータを検索する方法には、例えば以下に示す第１〜第４の方法を含む複数の方法がある。
【０００６】
まず、第１の方法として、ユーザが例えば異なるスキーマ毎にXPath式（問い合わせ言語）を指定する方法がある。これによれば、指定されたスキーマ毎のXPath式を用いて、検索を実行することにより、異なるスキーマに準拠するXMLデータであっても検索することができる。XPath式は、例えば構成要素を含むパス形式で示される。このXPath式によれば、当該XPath式に含まれる構成要素によりＸＭＬデータの構造を指定することによって、ＸＭＬデータを検索することができる。
【０００７】
第２の方法として、例えばユーザによって指定されたキーワードに基づいて、機械的に全文検索を行う方法がある。これによれば、異なるスキーマに準拠するＸＭＬデータであっても、指定されたキーワードを含むＸＭＬデータを検索することができる。
【０００８】
第３の方法として、異なるスキーマ毎のXPath式の対応表を作成しておく方法がある。これによれば、ユーザによって指定されたスキーマに準拠するXPath式が入力された場合であっても、当該指定されたスキーマとは異なるスキーマに準拠するＸＭＬデータを検索することができる。これに関連する技術として、例えばユーザがＸＭＬデータ等の構造を意識することなく検索でき、ユーザが所望するＸＭＬデータをユーザが指定した構造で取得することができる技術が開示されている（例えば、特許文献１を参照）。
【０００９】
また、第４の方法として、異なるスキーマの各々に合致するような抽象的スキーマを作成する方法がある。これによれば、異なるスキーマの各々の対応をとった中間形式としての抽象スキーマを作成し、当該抽象スキーマとの間でXPath式の変換を行うことで、異なるスキーマに準拠するＸＭＬデータを検索することができる。これに関連する技術として、例えば異なるデータ構造の複数の構造化データの中から、所望の構造化データを検索する際には、そのデータ構造に依存することなく、所望のＸＭＬデータを要素値として持つ構成要素を含む構造化データを容易に検索する技術が開示されている（例えば、特許文献２を参照）。
【特許文献１】特開２００３−３１６７８３号公報
【特許文献２】特開２００４−１６４１０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記したような第１〜第４の方法によれば、異なるスキーマに準拠するＸＭＬデータであっても検索することが可能である。
【００１１】
しかしながら、上記した第１の方法では、ユーザは、異なるスキーマ毎にXPath式を複数指定（入力）する必要があるため手間がかかる。また、ユーザは、異なるスキーマ毎のすべてのＸＭＬデータの構造を把握している必要がある。
【００１２】
また、第２の方法では、ＸＭＬデータの構造を意識した検索を行うことができないため、多くのノイズデータ（ユーザが必要としていないデータ）が検索結果に含まれる。
【００１３】
また、第３の方法では、ユーザにとって意図する検索を行うことは可能であるが、対応表を作成する手間やコストがかかってしまう。また、新規のスキーマに準拠するＸＭＬデータ追加された場合には、対応表に新規のスキーマのXPath式を追加する必要がある。これにより、更に手間やコストがかかるおそれがある。
【００１４】
また、第４の方法では、中間形式としての抽象スキーマを作成するコストが大きくなる。また、新規のスキーマに準拠するＸＭＬデータが追加された場合には、抽象スキーマに対する変更が発生する可能性がある。これにより、更にコストがかかるおそれがある。
【００１５】
本発明の目的は、ユーザによって指定されたスキーマに準拠したXPath式から、当該スキーマに準拠しないＸＭＬデータをも検索することができる構造化データ検索装置を提供することにある。
【課題を解決するための手段】
【００１６】
本発明の１つの態様によれば、スキーマが異なる複数の構造化データを格納する構造化データ格納手段から、データを検索する構造化データ検索装置が提供される。この構造化データ検索装置は、ユーザによって指定された構成要素を含む構造化データを検索するための第１の検索式を入力する入力手段と、前記第１の検索式を解析し、当該第１の検索式に含まれる構成要素を抽出する抽出手段と、前記抽出された構成要素に基づいて、前記前記構造化データ格納手段に格納されている第１の検索式とは異なるスキーマの構造化データを検索するための第２の検索式を生成する検索式生成手段と、前記第２の検索式を用いて、当該第２の検索式に合致する構造化データを前記構造化データ格納手段から検索する検索手段と、前記検索手段の結果を出力する検索結果出力手段とを具備する。
【発明の効果】
【００１７】
本発明によれば、ユーザによって指定されたスキーマに準拠したXPath式から、当該指定されたスキーマに準拠しないＸＭＬデータをも検索することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して、本発明の実施形態について説明する。
【００１９】
図１は、本実施形態に係る構造化データ検索装置の機能構成を示すブロック図である。図１に示すように、構造化データ検索装置１０は、入力部１１、XPath式解析生成部１２、XPath式生成テンプレート読取部１３、XPath式生成テンプレート格納部１４、ＸＭＬデータ検索部１５及び結果出力部１６を含む。
【００２０】
また、構造化データ検索装置１０の外部には、ＸＭＬデータ格納装置２０が設けられている。このＸＭＬデータ格納装置２０には、例えばスキーマ（データ構造）が異なる複数の構造化データ（以下、ＸＭＬデータと表記）が格納されている。ＸＭＬデータは、例えば当該ＸＭＬデータ中に記述されたタグによって階層化されたデータである。また、異なるスキーマには、例えばXHTML（Extensible HyperText Markup Language）、NewsML、RSS（Rich Site Summary）またはAtom等が含まれる。
【００２１】
入力部１１は、例えばユーザによって指定されたスキーマに準拠するＸＭＬデータを検索するための検索式（第１の検索式）を入力する。この検索式（以下、XPath式と表記）は、パス形式で示される。また、XPath式には、例えばユーザによって指定された構成要素（以下、パス構成要素と表記）が含まれる。XPath式は、当該XPath式に含まれる構成要素の配列により構造化データの構造が表されている。XPath式に含まれるパス構成要素は、例えばＸＭＬデータのタグに該当する要素（または属性）または当該要素に対する制限を示す述部を含む。この述部には、例えば該当する要素の内容に、ある文字列が含まれることを示す「contains」のような関数が含まれる。XPath式は、例えば「／第０要素［第０述部］／第１要素［第１述部］／…／最終要素または属性［最終述部］」のように示される。なお、第ｎ要素（または第ｎ述部）のｎ（ｎ＝０、１、…）は、XPath式に含まれる構成要素の階層を表す。また、［第ｎ述部］及び［最終述部］の部分は、省略することが可能である。
【００２２】
XPath式解析生成部１２は、入力部１１に入力されたXPath式（以下、入力XPath式と表記）を解析する。XPath式解析生成部１２は、解析結果に応じて、入力XPath式に含まれるパス構成要素を抽出する。また、XPath式解析生成部１２は、抽出されたパス構成要素及びXPath式生成テンプレート格納部１４に格納されているテンプレートに基づいて、定型XPath式を生成する。XPath式解析生成部１２は、ユーザによって指定されたスキーマ及び当該指定されたスキーマとは異なるスキーマに準拠する構造化データを検索するための定型XPath式（第２の検索式）を生成する。
【００２３】
XPath式生成テンプレート読取部１３は、例えばXPath式生成テンプレート格納部１４に予め格納されているXPath式生成テンプレート（以下、単にテンプレートと表記）を読み取る。XPath式生成テンプレート読取部１３は、読み取られたテンプレートをXPath式解析生成部１２に渡す。
【００２４】
XPath式生成テンプレート格納部１４には、複数のテンプレートが格納されている。この複数のテンプレートは、例えば定型XPath式を生成するために用いられるテンプレートファイルである。複数のテンプレートは、例えばXPath式に含まれるパス構成要素に変数が埋め込まれた形式で表現される。複数のテンプレートの各々は、変数の組み合わせがそれぞれ異なる。テンプレートに埋め込まれている変数は、例えばXPath式に含まれるパス構成要素の該当部分に対応し、機械的にXPath式を生成可能な形式であるものとする。変数は、XPath式に含まれる構成要素の階層を表すように予め定義されている。
【００２５】
また、テンプレートの各々は、例えば当該テンプレートを用いて生成されるXPath式の曖昧度を示すレベル（以下、曖昧レベルと表記）に対応付けてXPath式生成テンプレート格納部１４に格納されている。この曖昧レベルは、例えば１または複数の段階に設定されている。
【００２６】
ＸＭＬデータ検索部１５は、ＸＭＬデータ格納装置２０に格納されているＸＭＬデータのうち、入力XPath式またはXPath式解析生成部１２によって生成された定型XPath式を用いてＸＭＬデータを検索する。また、ＸＭＬデータ検索部１５は、検索された結果を記憶（保持）する記憶部（図示せず）を含む。
【００２７】
結果出力部１６は、ＸＭＬデータ検索部１５によって検索されたＸＭＬデータを検索結果として、例えばユーザに対して表示するために出力する。また、結果出力部１６は、例えば入力XPath式を用いて検索されたＸＭＬデータまたはXPath式解析生成部１２によって生成された定型XPath式を用いて検索されたＸＭＬデータを区別して出力する。また、結果出力部１６は、XPath式解析生成部１２によって生成された定型XPath式を用いて検索されたＸＭＬデータを、当該XPath式が生成される際に用いられたテンプレートのレベル毎に検索結果を出力（表示）する。
【００２８】
図２は、XPath式解析生成部１２の機能構成を示すブロック図である。XPath式解析生成部１２は、XPath式解析部１２１、テンプレート解析部１２２、変換部１２３及びXPath式生成部１２４を含む。
【００２９】
XPath式解析部１２１は、入力XPath式を解析する。XPath式解析部１２１は、解析結果に応じて、パス構成要素を抽出する。
【００３０】
テンプレート解析部１２２は、XPath式生成テンプレート読取部１３によって読み取られたテンプレートを解析する。テンプレート解析部１２２は、解析結果に応じて、テンプレートの変数（部分）を切り出す。
【００３１】
変換部１２３は、XPath式解析部１２１によって抽出されたパス構成要素及びテンプレート解析部１２２によって切り出された変数から対応付けを行い、対応するパス構成要素を変数に置換する処理を実行する。
【００３２】
XPath式生成部１２４は、変換部１２３によって置換処理されたテンプレートから、定型XPath式を生成する。
【００３３】
図３は、XPath式生成テンプレート格納部１４のデータ構造の一例を示す。図３の例では、XPath式生成テンプレート格納部１４には、テンプレートＡ〜Ｆが格納されている。テンプレートＡ〜Ｃは曖昧レベル１に、テンプレートＤ及びＥは曖昧レベル２に、また、テンプレートＦは曖昧レベル３に対応付けてXPath式生成テンプレート格納部１４に格納されている。
【００３４】
曖昧レベルは、各テンプレートに基づいて生成された定型XPath式の曖昧度を示す。この曖昧レベルは、例えば曖昧レベル０は曖昧性なし、曖昧レベル３は全文検索に近い曖昧性のように規定することができる。なお、本実施形態においては、入力XPathを曖昧レベル０（曖昧性なし）とし、曖昧レベルが高くなる程、曖昧性が高くなるものとする。
【００３５】
以下、XPath式生成テンプレート格納部１４に格納されているテンプレートの具体例について説明する。  
曖昧レベル１のテンプレート（例えばテンプレートＡ）の具体例としては、「/${Elem.FIRST}//*[${Predicate.LAST}]」が挙げられる。ここで、「${Elem.FIRST}」とは、例えばXPath式に含まれる構成要素の第０要素（階層が０である要素）を示す変数であり、入力XPath式に含まれるパス構成要素のうち、最初の要素を示す。また、「${Predicate.LAST}」とは、例えば最終述部（階層が最も低い述部）を示す変数であり、入力XPath式に含まれるパス構成要素のうち、最後の述部を示す。このテンプレートに含まれる「/」は、当該「/」の前後の例えば要素同士が親子関係であることを示し、「//」は、当該「//」の前後の例えば要素同士が子孫関係（親子関係を含む）であることを示す。なお、このテンプレートに基づいて生成されるXPath式によれば、例えば入力XPath式に含まれる第０要素より以下の階層（子孫関係）に当該入力XPath式に含まれる最終述部を含む（最終述部によって示される制限を満たす）ＸＭＬデータが検索される。
【００３６】
曖昧レベル２のテンプレート（例えばテンプレートＤ）の具体例としては、「//${Elem.LAST}[${Predicate.LAST}]」が挙げられる。「${Elem.LAST}」とは、最終要素を示す変数であり、入力XPath式に含まれるパス構成要素のうち、最後の要素を示す。なお、このテンプレートに基づいて生成されるXPath式によれば、例えば入力XPath式に含まれる最終要素の中（内容）に当該入力XPath式に含まれる最終述部が含まれているＸＭＬデータ検索される。
【００３７】
曖昧レベル３のテンプレート（例えばテンプレートＦ）の具体例としては、「//*[${Predicate.LAST}]」が挙げられる。なお、このテンプレートに基づいて生成されるXPath式によれば、例えば入力XPath式に含まれる最終述部が含まれるＸＭＬデータが検索される。
【００３８】
また、変数には、上記した以外にも、第ｎ要素を示す「${Elem.n}」、第０述部を示す「[${Predicate.FIRST}]」または第ｎ述部を示す「[${Predicate.n}]」等が含まれる。
【００３９】
次に、図４のフローチャートを参照して、構造化データ検索装置１０の処理手順について説明する。  
まず、入力部１１は、ユーザによって指定されたスキーマに準拠するＸＭＬデータを検索するためのXPath式が入力される（ステップＳ１）。
【００４０】
次に、ＸＭＬデータ検索部１５は、入力部１１に入力されたXPath式（入力XPath式）を用いて、当該入力XPath式に合致するＸＭＬデータをＸＭＬデータ格納部２０から検索する（ステップＳ２）。
【００４１】
ＸＭＬデータ検索部１５によって検索されたＸＭＬデータは、当該ＸＭＬデータ検索部１５に含まれる記憶部に保持される（ステップＳ３）。このとき、このＸＭＬデータは、曖昧レベル０の検索結果として保持される。
【００４２】
XPath式解析生成部１２は、入力XPath式の解析を行う。これにより、XPath式解析生成部１２は、入力XPath式に含まれるパス構成要素の各々を抽出する（ステップＳ４）。
【００４３】
次に、XPath式解析生成部１２は、XPath式生成テンプレート読取部１３に対して、曖昧レベルｎのテンプレートをXPath式生成テンプレート格納部１４から読み取る（読み出す）ための要求（読取要求）を出力する。XPath式生成解析生成部１２は、まず曖昧度が低いテンプレートを読み取るよう読取要求する。
【００４４】
XPath式生成テンプレート読取部１３は、XPath式解析生成部１２からの読取要求に応じて、XPath式生成テンプレート格納部１４に格納されているテンプレートを読み取る（ステップＳ５）。初めに、XPath式生成テンプレート格納部１４から、曖昧レベル１のテンプレートが読み取られる。このとき、上記した図３に示すXPath式生成テンプレート格納部１４のように、例えば曖昧レベル１に対応付けて複数のテンプレートが格納されている場合には、当該複数のテンプレートの全てを読み取るものとする。XPath式生成テンプレート読取部１３は、読み取ったテンプレートをXPath式解析生成部１２に出力する（渡す）。
【００４５】
XPath式解析生成部１２は、ステップＳ４において抽出されたパス構成要素及びXPath式生成テンプレート読取部１３によって読み出されたテンプレートに基づいて、定型XPath式を生成する（ステップＳ６）。このとき、例えばXPath式生成テンプレート読取部１３によって複数のテンプレートが読み出された場合には、当該複数のテンプレートの各々について、定型XPath式が生成される。
【００４６】
ＸＭＬデータ検索部１５は、XPath式解析生成部１２によって生成された定型XPath式を用いて、当該XPath式に合致するＸＭＬデータをＸＭＬデータ格納装置２０から検索する（ステップＳ７）。ＸＭＬデータ検索部１５によって検索されたＸＭＬデータは、当該ＸＭＬデータ検索部１５の記憶部に保持される（ステップＳ８）。この場合、検索されたＸＭＬデータは、曖昧レベル毎の検索結果として保持される。
【００４７】
次に、XPath式解析生成部１２は、XPath式生成テンプレート格納部１４に定型XPath式を生成する処理が実行されていないテンプレート（未処理テンプレート）が存在するか否かを判定する（ステップＳ９）。
【００４８】
XPath式生成テンプレート格納部１４に未処理テンプレートが存在すると判定された場合（ステップＳ９のＹＥＳ）、ステップＳ５に戻って処理が繰り返される。この場合、XPath式解析生成部１２は、XPath式生成テンプレート読取部１３に対して、曖昧レベル２のテンプレートを読み取るよう読取要求を出力する。これにより、ステップＳ５では、XPath式生成テンプレート読取部１３は、XPath式解析生成部１２からの読取要求に応じて、XPath式生成テンプレート格納部１４に格納されている曖昧レベル２のテンプレートを読み取る。つまり、ステップＳ５における曖昧レベルｎの値を１つ上げて処理が繰り返される。このように、XPath式生成テンプレート格納部１４に格納されているテンプレートは、当該テンプレートの曖昧レベル毎にステップ５〜８の処理がされる。
【００４９】
一方、XPath式生成テンプレート格納部１４に未処理テンプレートが存在しないと判定された場合（ステップＳ９のＮＯ）、結果出力部１６は、ＸＭＬデータ検索部１５の記憶部に保持されている検索結果を例えばユーザに対して表示するために出力する（ステップＳ１０）。結果出力部１６は、例えば曖昧レベル毎に検索結果を出力する。
【００５０】
なお、ここでは、上記したように入力XPath式及びXPath式解析生成部１２によって生成された定型XPath式を用いた検索処理（ステップＳ２及びステップＳ７）を分けて実行するものとして説明したが、これらの処理は、例えばステップＳ９及びＳ１０の間で、まとめて実行される構成であってもかまわない。
【００５１】
次に、図５のフローチャートを参照して、上記した図４に示すステップＳ４の処理の詳細な処理手順について説明する。  
まず、XPath式解析生成部１２のXPath式解析部１２１は、入力XPath式に含まれる文字列を例えば「／」で分離する（ステップＳ１１）。このとき、XPath式解析部１２１は、入力XPath式に含まれる文字列を「［］」内に含まれない「／」で分離する。つまり、これによって、１つの要素（または１組の要素及び述部）毎に分離される。
【００５２】
次に、XPath式解析部１２１は、ステップＳ１１において分離された文字列の各々に要素（名）及び述部が含まれる場合には、当該文字列に含まれる要素及び述部を分離する（ステップＳ１２）。ステップＳ１１において分離された文字列に「［］」が含まれる場合に、当該「［］」で囲まれた部分が述部であり、それ以外が要素（または属性）となる。
【００５３】
XPath式解析部１２１は、ステップＳ１１及びＳ１２において分離された要素または述部の各々を、パス構成要素として抽出する（ステップＳ１３）。
【００５４】
ここで、図６を参照して、上記したパス構成要素を抽出する処理について具体的に説明する。  
図６に示すように、入力XPath式は、「/html/head/title[contains(./text(),’耐震偽装’)]」であるものとする。以下に、この入力XPath式からパス構成要素を抽出する処理について説明する。
【００５５】
この場合、XPath式解析部１２１は、XPath式に含まれる文字列を「／」で分離する。すなわち、XPath式解析部１２１は、入力XPath式から「html」、「head」及び「title[contains(./text(),’耐震偽装’)]」を分離する。
【００５６】
次に、分離された「title[contains(./text(),’耐震偽装’)]」には、「［］」が含まれるため、要素及び述部が含まれている。このため、XPath式解析部１２１は、分離された「title[contains(./text(),’耐震偽装’)]」を、要素「title」及び述部「[contains(./text(),’耐震偽装’)]」を分離する。
【００５７】
これにより、XPath式解析部１２１は、パス構成要素として「html」、「head」、「title」及び「[contains(./text(),’耐震偽装’)]」を抽出する。
【００５８】
ここで、図６に示すように、XPath式解析部１２１によって抽出された「html」は入力XPath式の第０要素、「head」は第１要素、「title」は第２要素である。また、「[contains(./text(),’耐震偽装’)]」は、入力XPath式の第２述部である。なお、図６に示す「null」は空であることを示し、ここで説明した入力XPath式には、第０及び第１述部は存在しない。
【００５９】
次に、図７のフローチャートを参照して、上記した図４に示すステップＳ６の処理の詳細な処理手順について説明する。  
まず、XPath式解析生成部１２のテンプレート解析部１２２は、XPath式生成テンプレート読取部１３によって読み取られたテンプレートを解析する。これにより、テンプレート解析部１２２は、解析されたテンプレートから、当該テンプレートに含まれる変数（部分）を切り出す（ステップＳ２１）。
【００６０】
次に、変換部１２３は、テンプレート解析部１２２によって切り出された変数部分を、XPath式解析部１２１によって抽出されたパス構成要素のうち、当該変数部分に該当するパス構成要素に置換する（ステップＳ２２）。
【００６１】
図６に示したXPath式解析部１２１によって抽出されたパス構成要素の例を用いて具体的に説明する。曖昧レベル１のテンプレートＡを「/${Elem.FIRST}//*[${Predicate.LAST}]」とする。テンプレートＡの変数部分「${Elem.FIRST}」を、当該抽出されたパス構成要素のうち、第０要素である「html」に置換する。また、変数部分「${Predicate.LAST}」を、当該抽出されたパス構成要素のうち、第２述部（最終述部）である「contains(./text(),’耐震偽装’)」に置換する。
【００６２】
次に、XPath式生成部１２４は、変換部１２３によって置換されたものを定型XPath式として生成（確定）する（ステップＳ２３）。具体的には、テンプレートの中の変数ではない部分「//」または「[]」と、得られたパス構成要素とを連結する。上記した例では、定型XPath式として、「/html//*[contains(./text(),’耐震偽装’)]」が生成される。なお、この定型XPath式によれば、「html」要素より以下の階層に「耐震偽装」の文字列が含まれるＸＭＬデータが検索される。
【００６３】
ここで、図８〜図１２を参照して、XPath式生成テンプレート格納部１４に格納されている曖昧レベル毎のテンプレートに応じて、XPath式が生成された際の検索処理について具体的に説明する。
【００６４】
図８〜図１２は、それぞれＸＭＬデータ格納部２０に格納されているＸＭＬデータの一例を示す。なお、図８に示すＸＭＬデータ３１は、XHTMLに準拠するＸＭＬデータである。図９に示すＸＭＬデータ３２は、NewsMLに準拠するＸＭＬデータである。図１０に示すＸＭＬデータ３３は、RSSに準拠するＸＭＬデータである。図１１に示すＸＭＬデータ３４は、Atomに準拠するＸＭＬデータである。図１２に示すＸＭＬデータ３５は、図８のＸＭＬデータ３１と同様に、XHTMLに準拠するＸＭＬデータである。
【００６５】
ここで、入力XPath式が「/html/head/title[contains(./text(),’耐震偽装’)]」である場合を想定する。この入力XPath式は、例えばユーザによって指定されたスキーマ（ここでは、XHTML）に準拠したXPath式である。この場合、例えば図６で説明したように、パス構成要素として入力XPath式の第０要素である「html」、第１要素である「head」、第２要素（最終要素）である「title」及び第２述部（最終述部）である「[contains(./text(),’耐震偽装’)]」が抽出されたものとする。
【００６６】
また、曖昧レベル毎のテンプレートの例として、曖昧レベル１のテンプレートＡは、「/${Elem.FIRST}//*[${Predicate.LAST}]」であるものとする。曖昧レベル２のテンプレートＤは、「//${Elem.LAST}[${Predicate.LAST}]」であるものとする。また、曖昧レベル３のテンプレートＦは、「//*[${Predicate.LAST}]」であるものとする。
【００６７】
まず、入力XPath式を用いて検索処理が実行された場合、当該入力XPath式によれば、要素「html」より以下の階層に要素「head」があり、当該要素「head」より以下の階層に要素「title」があり、当該要素「title」の内容に「耐震偽装」の文字列が含まれるＸＭＬデータが検索される。入力XPath式に合致するＸＭＬデータとしては、ＸＭＬデータ３１〜３５のうち、ＸＭＬデータ３１の１件が該当する。つまり、XHTMLに準拠するＸＭＬデータが検索される。
【００６８】
次に、曖昧レベル１のテンプレートＡ及び抽出されたパス構成要素から、定型XPath式として「/html//*[contains(./text(),’耐震偽装’)]」が生成される。この定型XPath式を用いて検索処理が実行された場合、当該定型XPath式によれば、要素「html」より以下の階層に「耐震偽装」の文字列が含まれているＸＭＬデータが検索される。この定型XPath式に合致するＸＭＬデータとしては、ＸＭＬデータ３１〜３５のうち、ＸＭＬデータ３１及び３５の２件が該当する。つまり、上記した入力XPath式に合致するＸＭＬデータ（ＸＭＬデータ３１）を含むXHTMLに準拠するＸＭＬデータが検索される。
【００６９】
また、曖昧レベル２のテンプレートＤ及び抽出されたパス構成要素から、定型XPath式として「//title[contains(./text(),’耐震偽装’)]」が生成される。この定型XPath式を用いて検索処理が実行された場合、当該定型XPath式によれば、要素「title」の内容に「耐震偽装」の文字列が含まれるＸＭＬデータが検索される。この定型XPath式に合致するＸＭＬデータとしては、ＸＭＬデータ３１〜３５のうち、ＸＭＬデータ３１、３３及び３４の３件が該当する。つまり、ユーザによって指定されたスキーマ（XHTML）とは異なるスキーマ（RSS及びAtom）に準拠するＸＭＬデータ（ＸＭＬデータ３３及び３４）も検索される。
【００７０】
また、曖昧レベル３のテンプレートＦ及び抽出されたパス構成要素から、定型XPath式として「//*[contains(./text(),’耐震偽装’)]が生成される。この定型XPath式を用いて検索処理が実行された場合、当該定型XPath式によれば、「耐震偽装」の文字列が含まれるＸＭＬデータが検索される。換言すれば、「耐震偽装」の文字列（キーワード）で全文検索を実行した場合に相当する。この定型XPath式に合致するＸＭＬデータとしては、ＸＭＬデータ３１〜３５の全てが該当する。つまり、ユーザによって指定されたスキーマ（XHTML）とは異なるスキーマ（NewsML、RSS及びAtom）に準拠するＸＭＬデータ（ＸＭＬデータ３２、３３及び３４）も検索される。
【００７１】
このように、例えばXHTMLに準拠した入力XPath式のみを用いて検索処理が実行された場合には、XHTMLに準拠したＸＭＬデータ３１のみが検索される。しかしながら、XPath式生成テンプレート格納部１４に格納されているテンプレート及びXPath式から抽出されたパス構成要素に基づいて、定型XPath式を生成し検索することによって、スキーマが異なる（つまり、XHTMLに準拠していない）ＸＭＬデータ３２〜３４であっても検索することができる。
【００７２】
本実施形態においては、ユーザによって指定された入力XPath式からパス構成要素を抽出し、当該パス構成要素及びテンプレートを用いて定型XPath式が生成される。これにより、ユーザによって指定されたスキーマ以外のスキーマに準拠したＸＭＬデータであっても検索することが可能となる。
【００７３】
また、上記実施形態においては、階層構造を意識したテンプレートを作成することで、定型XPath式を用いて検索処理が実行された場合であっても、ノイズデータを少なくすることが可能である。
【００７４】
また、上記実施形態においては、XPath式生成テンプレート格納部１４に格納されているテンプレートは、スキーマに依存しないため、例えば新規のスキーマを持つＸＭＬデータが検索対象となった場合であっても、変更等の処理を行う必要がない。すなわち、スキーマに準拠した入力XPath式によらず、テンプレートからXPath式を作成することにより準拠しないスキーマをもつＸＭＬデータを検索することができる。これにより、新規のスキーマを持つＸＭＬデータが検索対象となった場合であっても、例えばテンプレートを変更する際の手間やコストを削減することが可能となる。
【００７５】
なお、上記した本実施形態においては、入力XPath式は例えばユーザによって指定されたスキーマに準拠するものとして説明したが、当該入力XPath式は、例えばユーザによって指定されたスキーマに準拠するものでなくとも、XPath式生成テンプレート格納部１４に格納されているテンプレートに基づいて、定型XPath式が生成可能なXPath式であればよい。
【００７６】
また、入力XPath式と同一の定型XPath式を生成可能なテンプレートが、XPath式生成テンプレート格納部１４に存在する場合には、当該入力XPath式を用いて検索処理を実行せず、当該テンプレートを用いて生成された（当該入力XPath式と同一の）定型XPath式のみを用いて検索処理を行う構成であっても構わない。
【００７７】
［第１の変形例］
本実施形態の第１の変形例について説明する。本変形例に係る構造化データ検索装置１０は、入力された指定件数情報によって示される検索件数を超えるまで検索処理を実行する。
【００７８】
図１３のフローチャートを参照して、構造化データ検索装置１０の処理手順について説明する。  
まず、入力部１１は、ユーザによって指定されたスキーマに準拠するＸＭＬデータを検索するためのXPath式及びユーザによって指定された検索件数（検索結果数）を示す指定件数情報が入力される（ステップＳ３１）。ここでは、ユーザによって指定された検索件数はｘ（ｘは、１以上の整数）件であるものとして説明する。
【００７９】
次に、ＸＭＬデータ検索部１５は、入力部１１に入力されたXPath式（入力XPath式）を用いて、当該入力XPath式に合致するＸＭＬデータをＸＭＬデータ格納部２０から検索する（ステップＳ３２）。
【００８０】
ＸＭＬデータ検索部１５によって検索されたＸＭＬデータは、当該ＸＭＬデータ検索部１５に含まれる記憶部に保持される（ステップＳ３３）。このとき、このＸＭＬデータは曖昧レベル０の検索結果として保持される。
【００８１】
次に、XPath式解析生成部１２は、ＸＭＬデータ検索部１５によって検索されたＸＭＬデータの検索件数がｘ件未満であるか否かを判定する（ステップＳ３４）。検索されたＸＭＬデータの検索件数がｘ件未満であると判定された場合（ステップＳ３４のＹＥＳ）、XPath式解析生成部１２は、入力XPath式の解析を行う。これにより、XPath式解析生成部１２は、入力XPath式に含まれるパス構成要素の各々を抽出する（ステップＳ３５）。
【００８２】
次に、XPath式解析生成部１２は、XPath式生成テンプレート読取部１３に対して、曖昧レベルｎのテンプレートをXPath式生成テンプレート格納部１４から読み取る（読み出す）ための要求（読取要求）をする。ここでは、XPath式解析生成部１２は、まず曖昧度が低いテンプレートから読み取るよう読取要求をする。
【００８３】
XPath式生成テンプレート読取部１３は、XPath式解析生成部１２からの読取要求に応じて、XPath式生成テンプレート格納部１４に格納されているテンプレートを読み取る（ステップＳ３６）。初めに、XPath式生成テンプレート格納部１４から、曖昧レベル１のテンプレートが読み取られる。XPath式生成テンプレート読取部１３は、読み取ったテンプレートをXPath式解析生成部１２に出力する。
【００８４】
XPath式解析生成部１２は、ステップＳ３５において抽出されたパス構成要素及びXPath式生成テンプレート読取部１３によって読み出されたテンプレートに基づいて、定型XPath式を生成する（ステップＳ３７）。
【００８５】
ＸＭＬデータ検索部１５は、XPath式解析生成部１２によって生成されたXPath式を用いて、当該XPath式に合致するＸＭＬデータをＸＭＬデータ格納装置２０から検索する（ステップＳ３８）。ＸＭＬデータ検索部１５によって検索されたＸＭＬデータは、当該ＸＭＬデータ検索部１５の記憶部に保持される（ステップＳ３９）。このＸＭＬデータは、曖昧レベル毎の検索結果として保持される。
【００８６】
次に、XPath式解析生成部１２は、これまでの総検索結果件数がｘ件未満であるか否かを判定する（ステップＳ４０）。総検索結果件数は、ここでは、曖昧レベル０及び１の検索結果件数の総数である。
【００８７】
総検索結果件数がｘ件未満であると判定された場合（ステップＳ４０のＹＥＳ）、ステップＳ３６に戻って処理が繰り返される。この場合、ステップＳ３６において曖昧レベル２のテンプレートについての処理が実行される。つまり、総検索結果件数がｘ件を越えるまで、曖昧レベルが低い順に処理が繰り返される。
【００８８】
一方、総検索結果件数がｘ件未満でないと判定された場合（ステップＳ４０のＮＯ）、結果出力部１６は、ＸＭＬデータ検索部１５の記憶部に保持されている検索結果を例えばユーザに対して表示するために出力する（ステップＳ４１）。結果出力部１６は、例えば曖昧レベル毎に検索結果を出力する。
【００８９】
一方、ステップＳ３４において、検索されたＸＭＬデータの検索件数がｘ件未満でないと判定された場合、ステップＳ４１の処理が実行される。
【００９０】
上記したように本変形例においては、ユーザによって指定された検索件数に限定されており、また、曖昧レベルが低いテンプレートの順に処理が実行されるため、例えばXPath式生成テンプレート格納部１４に格納されているすべてのテンプレートに基づいて生成された定型XPath式を用いて検索処理が実行された場合より、ノイズデータを少なくし、よりユーザにとって所望の検索結果を得ることが可能となる。
【００９１】
［第２の変形例］
本実施形態の第２の変形例について説明する。本変形例に係る構造化データ検索装置１０は、入力部１１に入力された指定レベル情報によって示される曖昧レベルに制限して検索処理を実行する。
【００９２】
次に、図１４のフローチャートを参照して、構造化データ検索装置１０の処理手順について説明する。  
まず、入力部１１は、ユーザによって指定されたスキーマに準拠するＸＭＬデータを検索するためのXPath式及びユーザによって指定された曖昧レベルを示す指定レベル情報が入力される（ステップＳ５１）。ここでは、ユーザによって指定された曖昧レベル（以下、指定曖昧レベルと表記）は、Ｎ（Ｎは、０以上の整数）であるものとして説明する。
【００９３】
次に、ＸＭＬデータ検索部１５は、入力部１１によって入力されたXPath式（入力XPath式）を用いて、当該入力XPath式に合致するＸＭＬデータをＸＭＬデータ格納部２０から検索する（ステップＳ５２）。ＸＭＬデータ検索部１５によって検索されたＸＭＬデータは、当該ＸＭＬデータ検索部１５に含まれる記憶部に保持される（ステップＳ５３）。このとき、このＸＭＬデータは曖昧レベル０の検索結果として保持される。
【００９４】
次に、XPath式解析生成部１２は、入力部１１に入力された指定レベル情報によって示される指定曖昧レベル（ここでは、Ｎ）が０であるか否かが判定される（ステップＳ５４）。  
指定曖昧レベルが０でないと判定された場合（ステップＳ５４のＮＯ）、XPath式解析生成部１２は、入力XPath式の解析を行う。これにより、XPath式解析生成部１２は、入力XPath式に含まれるパス構成要素の各々を抽出する（ステップＳ５５）。
【００９５】
次に、XPath式解析生成部１２は、XPath式生成テンプレート読取部１３に対して、曖昧レベルｎのテンプレートをXPath式生成テンプレート格納部１４から読み取る（読み出す）ための要求（読取要求）をする。ここでは、XPath式解析生成部１２は、まず曖昧度の低いテンプレートから読み取るよう読取要求をする。
【００９６】
XPath式生成テンプレート読取部１３は、XPath式解析生成部１２からの読取要求に応じて、XPath式生成テンプレート格納部１４に格納されているテンプレートを読み取る（ステップＳ５６）。初めに、XPath式生成テンプレート格納部１４から、曖昧レベル１のテンプレートが読み取られる。XPath式生成テンプレート読取部１３は、読み取ったテンプレートをXPath式解析生成部１２に出力する。
【００９７】
XPath式解析生成部１２は、ステップＳ５５において抽出されたパス構成要素及びXPath式生成テンプレート読取部１３によって読み出されたテンプレートに基づいて、定型XPath式を生成する（ステップＳ５７）。
【００９８】
ＸＭＬデータ検索部１５は、XPath式解析生成部１２によって生成されたXPath式を用いて、当該XPath式に合致するＸＭＬデータをＸＭＬデータ格納装置２０から検索する（ステップＳ５８）。ＸＭＬデータ検索部１５によって検索されたＸＭＬデータは、当該ＸＭＬデータ検索部１５の記憶部に保持される（ステップＳ５９）。このＸＭＬデータは、曖昧レベル毎の検索結果として保持される。
【００９９】
次に、XPath式解析生成部１２は、指定曖昧レベルがｎであるか否かを判定する（ステップＳ６０）。このとき、ｎの値は１である。つまり、指定曖昧レベルが１であるか否かが判定される。  
指定レベル情報によって示される曖昧レベルがｎ（ここでは１）でないと判定された場合（ステップＳ６０のＮＯ）、ステップＳ５６に戻って処理が繰り返される。この場合では、ステップＳ５６において曖昧レベル２のテンプレートについての処理が実行される。つまり、曖昧レベルがＮのテンプレートが処理されるまで、曖昧レベルが低い順に処理が繰り返される。換言すると、曖昧レベルがＮより低いレベルに対応付けられているテンプレートについてのみ処理が実行される。  
一方、指定曖昧レベルがｎであると判定された場合（ステップＳ６０のＹＥＳ）、結果出力部１６は、ＸＭＬデータ検索部１５の記憶部に保持されている検索結果を例えばユーザに対して表示するために出力する（ステップＳ６１）。結果出力部１６は、例えば曖昧レベル毎に検索結果を出力する。
【０１００】
一方、ステップＳ５４において、指定曖昧レベルが０であると判定された場合、ステップＳ６１の処理が実行される。
【０１０１】
上記したように本変形例においては、ユーザによって指定された曖昧レベルのテンプレートまでを用いて定型XPath式が生成され、検索処理が実行される。これによって、よりユーザにとって所望の検索結果を得ることが可能となる。
【０１０２】
なお、本願発明は、上記実施形態またはその各変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその各変形例に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態またはその各変形例に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態またはその各変形例に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施形態に係る構造化データ検索装置の機能構成を示すブロック図である。
【図２】図１に示すXPath式解析生成部１２の機能構成を示すブロック図。
【図３】XPath式生成テンプレート格納部１４のデータ構造の一例を示す図。
【図４】構造化データ検索装置１０の処理手順を示すフローチャート。
【図５】図４に示すステップＳ４の処理の詳細な処理手順を示すフローチャート。
【図６】パス構成要素を抽出する処理について具体的に説明するための図。
【図７】図４に示すステップＳ６の処理の詳細な処理手順を示すフローチャート。
【図８】ＸＭＬデータ格納部２０に格納されているＸＭＬデータの一例を示す図。
【図９】ＸＭＬデータ格納部２０に格納されているＸＭＬデータの一例を示す図。
【図１０】ＸＭＬデータ格納部２０に格納されているＸＭＬデータの一例を示す図。
【図１１】ＸＭＬデータ格納部２０に格納されているＸＭＬデータの一例を示す図。
【図１２】ＸＭＬデータ格納部２０に格納されているＸＭＬデータの一例を示す図。
【図１３】本実施形態の第１の変形例に係る構造化データ検索装置１０の処理手順を示すフローチャート。
【図１４】本実施形態の第２の変形例に係る構造化データ検索装置１０の処理手順を示すフローチャート。
【符号の説明】
【０１０４】
１０…構造化データ検索装置、１１…入力部、１２…XPath式解析生成部、１３…XPath式生成テンプレート読取部、１４…XPath式生成テンプレート格納部、１５…ＸＭＬデータ検索部、１６…結果出力部、２０…ＸＭＬデータ格納装置、１２１…XPath式解析部、１２２…テンプレート解析部、１２３…変換部、１２４…XPath式生成部。
【図１】
2008171181.tif 000003
【図２】
2008171181.tif 000004
【図３】
2008171181.tif 000005
【図４】
2008171181.tif 000006
【図５】
2008171181.tif 000007
【図６】
2008171181.tif 000008
【図７】
2008171181.tif 000009
【図８】
2008171181.tif 000010
【図９】
2008171181.tif 000011
【図１０】
2008171181.tif 000012
【図１１】
2008171181.tif 000013
【図１２】
2008171181.tif 000014
【図１３】
2008171181.tif 000015
【図１４】
2008171181.tif 000016