(57)【要約】【課題】対象となる構造化文書が大量に存在する場合であっても、構造化文書が文書型定義に合致するか否かの検証を効率的に行うことのできる構造化文書検証装置を提供する。【解決手段】所定の文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段１１４と、構造化文書に含まれる要素と、当該要素の構造位置とを対応付けた構造索引を保持する構造索引保持手段１１８と、文書型定義に含まれる各要素の構造位置を示すパス式を生成するパス式生成手段１２０と、構造化文書が文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得手段１３０，１４０と、パス式に含まれる各要素の構造位置と、構造索引保持手段１１８が保持する構造索引に含まれる構造位置とを比較することにより、文書型検証を行う文書型検証手段１３４，１４２とを備えた。【選択図】        図１
2008083857.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書に含まれる要素の関係を定義する文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段と、
前記構造化文書保持手段が保持する前記構造化文書に含まれる要素と、当該要素の前記構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段と、
前記文書型定義を保持する文書型定義保持手段と、
前記文書型定義保持手段が保持する前記文書型定義に基づいて、前記文書型定義に含まれる各要素の前記構造位置を示すパス式を生成するパス式生成手段と、
前記構造化文書保持手段が保持する複数の前記構造化文書が、前記文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得手段と、
前記検証指示取得手段が前記検証指示を取得した場合に、前記パス式生成手段により生成された前記パス式に含まれる各要素の構造位置と、前記構造索引保持手段が保持する前記構造索引に含まれる構造位置とを比較することにより、前記文書型検証を行う文書型検証手段と
を備えたことを特徴とする構造化文書検証装置。
【請求項２】
前記パス式生成手段は、前記文書型定義に基づいて、各要素の出現順番および出現回数を示す前記パス式を生成することを特徴とする請求項１に記載の構造化文書検証装置。
【請求項３】
前記検証指示取得手段は、前記構造化文書保持手段が保持する複数の構造化文書の一部についての前記文書型検証を要求する前記検証指示を取得し、
前記文書型検証手段は、前記検証指示が指定する前記構造化文書の一部に対応する前記パス式に含まれる各要素の構造位置と、前記構造索引保持手段が保持する前記構造索引のうち前記構造文書の一部に対応する構造位置とを比較することにより、前記文書型検証を行うことを特徴とする請求項１または２に記載の構造化文書検証装置。
【請求項４】
前記パス式生成手段により生成された前記パス式を保持するパス式保持手段と、
前記検証指示取得手段が前記検証指示を取得したときに、前記パス式保持手段が前記パス式を保持しない場合に、前記パス式生成手段に対し前記パス式の生成を指示するパス式生成制御手段と
をさらに備え、
前記パス式生成手段は、前記パス式生成制御手段により前記パス式の生成を指示された場合に、前記パス式を生成することを特徴とする請求項１から３のいずれか一項に記載の構造化文書検証装置。
【請求項５】
構造化文書に含まれる要素の関係を定義する文書型定義を保持する文書型定義保持手段が保持する前記文書型定義に基づいて、前記文書型定義に含まれる各要素の前記構造位置を示すパス式を生成するパス式生成ステップと、
前記文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段が保持する複数の前記構造化文書が、前記文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得ステップと、
前記検証指示取得ステップにおいて前記検証指示を取得した場合に、前記パス式生成手段により生成された前記パス式に含まれる各要素の構造位置と、前記構造化文書保持手段が保持する前記構造化文書に含まれる要素と、当該要素の前記構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段が保持する前記構造索引に含まれる構造位置とを比較することにより、前記文書型検証を行う文書型検証ステップと
を有することを特徴とする構造化文書検証方法。
【請求項６】
構造化文書検証処理をコンピュータに実行させる構造化文書検証プログラムであって、
構造化文書に含まれる要素の関係を定義する文書型定義を保持する文書型定義保持手段が保持する前記文書型定義に基づいて、前記文書型定義に含まれる各要素の前記構造位置を示すパス式を生成するパス式生成ステップと、
前記文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段が保持する複数の前記構造化文書が、前記文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得ステップと、
前記検証指示取得ステップにおいて前記検証指示を取得した場合に、前記パス式生成手段により生成された前記パス式に含まれる各要素の構造位置と、前記構造化文書保持手段が保持する前記構造化文書に含まれる要素と、当該要素の前記構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段が保持する前記構造索引に含まれる構造位置とを比較することにより、前記文書型検証を行う文書型検証ステップと
を有することを特徴とする構造化文書検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書の検証を行う構造化文書検証装置、構造化文書検証方法および構造化文書検証プログラムに関するものである。
【背景技術】
【０００２】
構造化文書には、構造化文書に含まれる要素の関係を定義する文書型定義にしたがって記述されたものがある。文書型定義にしたがって記述された構造化文書を計算機プログラムで利用する場合には、文書型定義に合致することが確認された構造化文書のみを利用対象とすることが要求される場合がある。また、文書型定義にしたがって記述された構造化文書をデータベースに格納する場合も同様である。
【０００３】
これらの場合には、構造化文書が文書型定義に合致するか否かを検証する必要がある。検証方法としては、文書型定義中の型定義をオートマトン化し、それに対象文書のｎｏｄｅを順に入力していったときの状態遷移先が受理状態となるかどうかを調べる方法により検証を行う方法が知られている（例えば、「特許文献１」参照）。また、文書型定義を意味規則の集合として記述し、その規則を文書データに適用することで妥当性の検証を行う方法も知られている（例えば、「特許文献２」参照）。
【０００４】
【特許文献１】特開２００３−８４９８７号公報
【特許文献２】特開２００４−１１８８５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、すでにデータベースに構造化文書が格納された後の更新時や問い合わせ言語による検索時においても格納されている文書データ群が文書型定義に合致するかどうかの検証を行う必要がある。
【０００６】
また、データベースに格納されている構造化文書を対象に、所定の検索式によって取得した対象データ群をある関数に渡すとき、対象データ群がその関数の引数が意図する型に合致するかを検証を行う必要がある。
【０００７】
これらの場合においては、各構造化文書に対して、検証にかかる処理を行う必要があり、データベースに大量の構造化文書が格納されている場合には、処理量が増加するという問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、対象となる構造化文書が大量に存在する場合であっても、構造化文書が文書型定義に合致するか否かの検証を効率的に行うことのできる構造化文書検証装置、構造化文書検証方法および構造化文書検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、構造化文書検証装置であって、構造化文書に含まれる要素の関係を定義する文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段と、前記構造化文書保持手段が保持する前記構造化文書に含まれる要素と、当該要素の前記構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段と、前記文書型定義を保持する文書型定義保持手段と、前記文書型定義保持手段が保持する前記文書型定義に基づいて、前記文書型定義に含まれる各要素の前記構造位置を示すパス式を生成するパス式生成手段と、前記構造化文書保持手段が保持する複数の前記構造化文書が、前記文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得手段と、前記検証指示取得手段が前記検証指示を取得した場合に、前記パス式生成手段により生成された前記パス式に含まれる各要素の構造位置と、前記構造索引保持手段が保持する前記構造索引に含まれる構造位置とを比較することにより、前記文書型検証を行う文書型検証手段とを備えたことを特徴とする。
【００１０】
また、本発明の他の形態は、構造化文書検証方法であって、構造化文書に含まれる要素の関係を定義する文書型定義を保持する文書型定義保持手段が保持する前記文書型定義に基づいて、前記文書型定義に含まれる各要素の前記構造位置を示すパス式を生成するパス式生成ステップと、前記文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段が保持する複数の前記構造化文書が、前記文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得ステップと、前記検証指示取得ステップにおいて前記検証指示を取得した場合に、前記パス式生成手段により生成された前記パス式に含まれる各要素の構造位置と、前記構造化文書保持手段が保持する前記構造化文書に含まれる要素と、当該要素の前記構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段が保持する前記構造索引に含まれる構造位置とを比較することにより、前記文書型検証を行う文書型検証ステップとを有することを特徴とする。
【００１１】
また、本発明の他の形態は、構造化文書検証処理をコンピュータに実行させる構造化文書検証プログラムであって、構造化文書に含まれる要素の関係を定義する文書型定義を保持する文書型定義保持手段が保持する前記文書型定義に基づいて、前記文書型定義に含まれる各要素の前記構造位置を示すパス式を生成するパス式生成ステップと、前記文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段が保持する複数の前記構造化文書が、前記文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得する検証指示取得ステップと、前記検証指示取得ステップにおいて前記検証指示を取得した場合に、前記パス式生成手段により生成された前記パス式に含まれる各要素の構造位置と、前記構造化文書保持手段が保持する前記構造化文書に含まれる要素と、当該要素の前記構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段が保持する前記構造索引に含まれる構造位置とを比較することにより、前記文書型検証を行う文書型検証ステップとを有することを特徴とする。
【発明の効果】
【００１２】
本発明にかかる構造化文書検証装置によれば、構造化文書保持手段が、構造化文書に含まれる要素の関係を定義する文書型定義にしたがい記述された複数の構造化文書を保持し、構造索引保持手段が、構造化文書保持手段が保持する構造化文書に含まれる要素と、当該要素の構造化文書における構造位置とを対応付けた構造索引を保持し、文書型定義保持手段が、文書型定義を保持し、パス式生成手段が、文書型定義保持手段が保持する文書型定義に基づいて、文書型定義に含まれる各要素の構造位置を示すパス式を生成し、検証指示取得手段が、構造化文書保持手段が保持する複数の構造化文書が、文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得し、文書型検証手段が、検証指示取得手段が検証指示を取得した場合に、パス式生成手段により生成されたパス式に含まれる各要素の構造位置と、構造索引保持手段が保持する構造索引に含まれる構造位置とを比較することにより、文書型検証を行うので、対象となる構造化文書が大量に存在する場合であっても、効率的に構造化文書が文書型定義に合致するか否かの検証を効率的に行うことができるという効果を奏する。
【００１３】
また、本発明の他の形態にかかる構造化文書検証方法によれば、パス式生成ステップにおいて、構造化文書に含まれる要素の関係を定義する文書型定義を保持する文書型定義保持手段が保持する文書型定義に基づいて、文書型定義に含まれる各要素の構造位置を示すパス式を生成し、検証指示取得ステップにおいて、文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段が保持する複数の構造化文書が、文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得し、文書型検証ステップにおいて、検証指示取得ステップにおいて検証指示を取得した場合に、パス式生成手段により生成されたパス式に含まれる各要素の構造位置と、構造化文書保持手段が保持する構造化文書に含まれる要素と、当該要素の構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段が保持する構造索引に含まれる構造位置とを比較することにより、文書型検証を行うので、対象となる構造化文書が大量に存在する場合であっても、効率的に構造化文書が文書型定義に合致するか否かの検証を効率的に行うことができるという効果を奏する。
【００１４】
また、本発明の他の形態にかかる構造化文書検証プログラムによれば、パス式生成ステップにおいて、構造化文書に含まれる要素の関係を定義する文書型定義を保持する文書型定義保持手段が保持する文書型定義に基づいて、文書型定義に含まれる各要素の構造位置を示すパス式を生成し、検証指示取得ステップにおいて、文書型定義にしたがい記述された複数の構造化文書を保持する構造化文書保持手段が保持する複数の構造化文書が、文書型定義にしたがっているか否かの文書型検証を要求する検証指示を取得し、文書型検証ステップにおいて、検証指示取得ステップにおいて検証指示を取得した場合に、パス式生成手段により生成されたパス式に含まれる各要素の構造位置と、構造化文書保持手段が保持する構造化文書に含まれる要素と、当該要素の構造化文書における構造位置とを対応付けた構造索引を保持する構造索引保持手段が保持する構造索引に含まれる構造位置とを比較することにより、文書型検証を行うので、対象となる構造化文書が大量に存在する場合であっても、効率的に構造化文書が文書型定義に合致するか否かの検証を効率的に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明にかかる構造化文書検証装置、構造化文書検証方法および構造化文書検証プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１６】
図１は、実施の形態にかかる構造化文書検証装置１０の機能構成を示すブロック図である。構造化文書検証装置１０は、文書型定義取得部１００と、文書型定義データベース（ＤＢ）１０２と、構造化文書取得部１１０と、第１検証部１１２と、構造化文書ＤＢ１１４と、構造索引生成部１１６と、構造索引ＤＢ１１８と、パス式生成部１２０と、パス式ＤＢ１２２と、更新要求取得部１３０と、パス式抽出部１３２と、第２検証部１３４と、更新部１３６と、検索条件取得部１４０と、第３検証部１４２と、出力部１４４とを備えている。
【００１７】
文書型定義取得部１００は、文書型定義を取得する。ここで、文書型定義とは、構造化文書に含まれる要素の関係に関する定義である。構造化文書としては、例えばＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ Ｍａｒｋｕｐ Ｌａｎｇｕａｇｅ）が、それに対する文書型定義としては、例えばＸＭＬ  Ｓｃｈｅｍａによって記述されるものがある。
【００１８】
図２は、文書型定義の一例を示す図である。文書型定義２００のうち例えば記述２０２は、ｒｏｏｔの下にｎｏｄｅ１、ｎｏｄｅ２およびｎｏｄｅ３が存在することを示している。すなわち、この文書型定義２００にしたがう構造化文書においては、ｒｏｏｔの下にｎｏｄｅ１、ｎｏｄｅ２およびｎｏｄｅ３が存在すれば、この部分は記述２０２にしたがって記述されていることがわかる。
【００１９】
再び説明を図１に戻す。構造化文書取得部１１０は、構造化文書を取得する。さらに、構造化文書に対応する文書型定義を指定する情報を取得する。第１検証部１１２は、構造化文書取得部１１０が取得した構造化文書に対し文書型定義が指定されている場合には、構造化文書が対応する文書型定義に合致するか否かを検証する。具体的には、文書型定義ＤＢ１０２に格納されている文書型定義を利用して妥当性の検証を行う。なお、構造化文書に対する文書型定義が指定されていない場合には、妥当性検証は行わない。さらに、妥当でない場合には、第１検証部１１２は妥当でない旨を出力してもよい。
【００２０】
構造化文書ＤＢ１１４は、構造化文書取得部１１０が取得した構造化文書を保持する。なお、第１検証部１１２による検証が行われた構造化文書については、妥当であると判断された構造化文書のみが対象となる。
【００２１】
図３−１から図３−４は、構造化文書の一例を示す図である。なお、図３−１に示す構造化文書３０１、図３−２に示す構造化文書３０２および図３−３に示す構造化文書３０３は、文書型定義２００にしたがい記述された構造化文書である。すなわち、これらの構造化文書３０１〜３０３は、第１検証部１１２により文書型定義２００に合致すると判断されて構造化文書ＤＢ１１４に格納される。図３−４に示す構造化文書３０４は、文書型定義２００に合致せず構造化文書ＤＢ１１４には格納されない。
【００２２】
再び説明を図１に戻す。構造索引生成部１１６は、構造化文書取得部１１０が取得した構造化文書の構造索引を生成する。構造索引は、文書、数値、語彙など構造化文書の内容に対する索引である。第１検証部１１２による検証が行われた構造化文書については、妥当であると判断された構造化文書のみが構造索引の対象となる。
【００２３】
図４は、構造索引のデータ構成を示す図である。構造索引においては、ノード位置と、ノードの有無とが対応付けられている。ノードとは、構造化文書における要素である。図４に示すようにノードは階層構造を有している。ノード位置は、この階層構造における位置を示す情報である。ノード位置は、構造位置に相当する。具体的には、所定のノードのノード位置は、このノードの１つ下の層のノード、すなわち子ノードとの関係により指定される。さらに、同一のノードを上位の層のノード、すなわち親ノードとするノードが複数存在する場合、すなわちノード位置が同一である場合には、各ノードは、要素オーダーにより識別される。
【００２４】
例えば、図４に示す例においては、ノード位置は、ｎｏｄｅ１の要素オーダー１、ｃｈｉｌｄ１の要素オーダー１、要素オーダー２などノード名と、要素オーダーにより特定される。
【００２５】
さらに、所定のノード位置にノードが存在する場合には、構造索引において、ノードＩＤがノード位置に対応付けられている。ノードＩＤとは、各ノードを含む構造化文書を識別し、さらにこの構造化文書内におけるノードに対応する記述を識別する情報である。図４に示す例においては、例えば、ｃｈｉｌｄ３の要素オーダー５に対応付けられているノードＩＤにより、構造化文書１１４に格納されている所定の文書中の、ｃｈｉｌｄ３に関する記述を特定することができる。
【００２６】
図４に示す構造索引４００は、構造化文書３１１，３１２により生成されたものである。構造化文書３１１に含まれるノードのノードＩＤを白丸で示している。構造化文書３１２に含まれるノードＩＤを黒丸で示している。
【００２７】
構造化文書３１１，３１２は、ともにｎｏｄｅ１のノードを含んでいる。したがって、構造索引４００のｎｏｄｅ１のノードには、構造化文書３１１，３１２のｎｏｄｅ１に対するノードＩＤが格納されている。
【００２８】
また、構造化文書３１１には、要素オーダー１にｃｈｉｌｄ１のノードが存在する。したがって、構造索引４００のうち、ｃｈｉｌｄ１の要素オーダー１に対応付けて構造化文書３１１のｃｈｉｌｄ１のノードＩＤが格納されている。また、構造化文書３１１のｎｏｄｅ１の要素オーダー２には、ｃｈｉｌｄ２が存在する。したがって、構造索引４００において、ｃｈｉｌｄ２の要素オーダー２に対応付けて構造化文書３１１のｃｈｉｌｄ２のノードＩＤが格納されている。
【００２９】
このように、構造索引は、構造化文書ＤＢ１１４に格納されている複数の構造化文書中の各ノードに対するノードＩＤとノード位置とを対応付けている。したがって、構造索引を参照することにより、構造化文書を参照しなくとも、所定のノード位置にノードが存在する構造化文書の数を特定することができる。さらに、ｎｏｄｅ１のノードの下位にｃｈｉｌｄ１のノードが存在するような、所定の関係を有する複数のノードを有する構造化文書の数を特定することができる。同一のパスを有する要素の有無についても特定することができる。
【００３０】
再び説明を図１に戻す。パス式生成部１２０は、文書型定義取得部１００が取得した文書型定義に基づいて、パス式を生成する。ここで、パス式は、基本的には文書型定義を検索式のようにＸｐａｔｈなどで記述したものである。パス式においては、さらに文書型定義における出現回数に関する条件やパスのオーダーを指定することができる。
【００３１】
図５から図９は、パス式を生成する処理を説明するための図である。図５は、文書型定義に含まれる部分スキーマ２１０を示す図である。図６は、部分スキーマ２１０中のｃｈｉｌｄ２に付与された条件と、条件にしたがい生成されるパス式とを示す図である。パス式生成部１２０は、この条件にしたがいパス式を生成する。なお、属性に関する必須指定があるものはそれを先頭にし、その後にノードに関する内容を記述する。図６に示す例において属性は、「＠」以下に記述されている。
【００３２】
図７は、文書型定義に含まれる部分スキーマ２１２を示す図である。図８は、部分スキーマ２１２における（ｘ）部分における指定と、指定にしたがい生成されるパス式とを示す図である。パス式生成部１２０は、この指定にしたがいパス式を生成する。なお、｛ｏｒｄｅｒｄ｝とは、パス式の記述通りの順序でなければならないことを示している。
【００３３】
図９は、図２に示す文書型定義２００中のｎｏｄｅ２の定義２０４から生成されたパス式２１４を示す図である。パス式生成部１２０は、文書型定義２００中のすべての定義をパス式に変換する。なお、図９に示すパス式において、［  ］中最後の「．／ｅｘ：ｎｏｄｅ２」は、ｎｏｄｅ２が繰り返されることを示している。何回繰り返されるかは、対象とする構造化文書により異なる。このため、パス式生成部１２０は、「．／ｅｘ：ｎｏｄｅ２」はこれ以上は展開しない。パス式ＤＢ１２２は、パス式生成部１２０により生成されたパス式を格納する。各パス式はいずれの文書型定義に対応するかを識別する識別情報に対応付けて格納される。
【００３４】
再び説明を図１に戻す。更新要求取得部１３０は、更新要求を取得する。更新要求とは、構造化文書ＤＢ１１４に格納されている１または２以上の構造化文書の内容を一部変更する更新要求である。更新要求には、更新すべき構造化文書を識別する文書ＩＤが含まれている。さらに、一部を更新する場合には、更新する部分を指定する情報が含まれている。
【００３５】
パス式抽出部１３２は、更新要求取得部１３０が更新要求を取得すると、構造化文書全体の更新である場合には構造化文書に対応するパス式をすべてパス式ＤＢ１２２から抽出する。構造化文書の一部の更新である場合には、構造化文書の一部に対応するパス式のみをパス式ＤＢ１２２から抽出する。構造化文書の一部についての更新としては、例えば、図３−１に示す構造化文書３０１のうちｎｏｄｅ２の定義部分のみの更新がある。
【００３６】
第２検証部１３４は、パス式抽出部１３２からパス式を取得する。さらに、構造索引ＤＢ１１８に格納されている構造索引を更新要求に示される更新内容にしたがって更新する。そして、更新後の構造索引と、パス式抽出部１３２から取得したパス式とを比較することにより検証を行う。
【００３７】
更新部１３６は、第２検証部１３４による検証により妥当であると判断された場合、すなわち構造索引とパス式とが合致した場合には、更新後の文書を構造化文書ＤＢ１１４に、更新後の構造索引を構造索引ＤＢ１１８に登録する。
【００３８】
検索条件取得部１４０は、検索条件を取得する。例えば、検索を行うための関数から検索条件を取得する。検索条件は、検索対象となる構造化文書を特定する情報を含んでおり、加えて、検索対象となる構造化文書に対する文書型定義を特定する情報を含んでいる。検索条件取得部１４０は、さらに妥当性検証に必要なパス式の抽出をパス式抽出部１３２に指示する。
【００３９】
第３検証部１４２は、パス式抽出部１３２からパス式を取得する。さらに、構造索引ＤＢ１１８から、検索対象となっている構造化文書に対する構造索引を抽出する。そして、パス式と構造索引とを比較することにより検証を行う。出力部１４４は、第３検証部１４２による検証結果を出力する。例えば、所定の関数から検索条件を取得した場合には、この関数に対し検索結果を返す。
【００４０】
図１０は、構造化文書検証装置１０による検索時の妥当性検証処理を示すフローチャートである。なお、構造化文書検証処理は、一般的なＸＰａｔｈの評価と、構造索引中のオーダー区分を確認する操作とを含む処理である。
【００４１】
まず、検索条件取得部１４０は、検索条件を取得する（ステップＳ１００）。ここで、検索条件は、文書型検証、すなわち妥当性検証を指示する妥当性検証指示を含んでいる。検索条件により特定される文書型定義を特定する（ステップＳ１０２）。次に、この文書型定義に対応するパス式、すなわち検証対象となるパス式がパス式ＤＢ１２２に格納されている場合には（ステップＳ１０４，Ｙｅｓ）、ステップＳ１１０へ進む。
【００４２】
一方、検証対象となるパス式がパス式ＤＢ１２２に格納されていない場合には（ステップＳ１０４，Ｎｏ）、検索条件取得部１４０は、パス式生成部１２０にパス式生成を指示する。すなわち、検索条件取得部１４０は、パス式生成制御手段として機能する。
【００４３】
パス式生成部１２０は、検証対象となる文書型定義に基づいて、パス式を生成する（ステップＳ１０６）。次に、パス式生成部１２０は、パス式をパス式ＤＢ１２２に登録する（ステップＳ１０８）。次に、第３検証部１４２は、構造索引ＤＢ１１８から検証対象となる構造索引を抽出する（ステップＳ１１０）。さらに、第３検証部１４２は、パス式ＤＢ１２２から検証対象となるパス式を抽出する（ステップＳ１１２）。そして、第３検証部１４２は、パス式と構造索引とを比較することにより、文書型検証を行う（ステップＳ１１４）。
【００４４】
構造索引がパス式に合致した場合には（ステップＳ１１６，Ｙｅｓ）、構造索引に含まれるすべての構造化文書が妥当であるので、すべての構造化文書を検索に関する関数に返す（ステップＳ１２２）。一方、パス式に合致しない場合には（ステップＳ１１６，Ｎｏ）、さらに構造化文書ＤＢ１１４における構造化文書を調べることにより、パス式に合致しない構造化文書または合致する構造化文書を特定する（ステップＳ１２４）。そして、パス式に合致する構造化文書のみを検索に関する関数に返す（ステップＳ１２６）。以上で、構造化文書検証装置１０による検索時の妥当性検証処理が完了する。
【００４５】
このように、構造化文書ＤＢ１１４に格納されている構造化文書の数にかかわらず、構造索引とパス式とを比較するだけで妥当性検証を行うことができるので、処理の効率化を図ることができる。
【００４６】
図１１は、図３−１から図３−３に示される構造化文書３０１〜３０３により作成された構造索引４１０を示す図である。この構造索引のうち「ｎｏｄｅ２」の部分が対応する文書型定義に合致するか否かを検証する処理について図１０にしたがい具体的に説明する。
【００４７】
まず、検索条件を取得すると（ステップＳ１００）、検索対象となる文書型定義を特定する（ステップＳ１０２）。次に、文書型定義に対応するパス式がパス式ＤＢ１２２に格納されているか否かを確認する（ステップＳ１０４）。格納されている場合には（ステップＳ１０４，Ｙｅｓ）、ステップＳ１１０へ進む。格納されていない場合には、対象となる文書型定義からパス式を生成し（ステップＳ１０６）、パス式ＤＢ１２２に格納する（ステップＳ１０８）。
【００４８】
次に、検証対象となる構造索引、すなわち図１１に示す構造索引を構造索引ＤＢ１１８から抽出する（ステップＳ１１０）。次に、検証対象となるパス式をパス式ＤＢ１２２から抽出する（ステップＳ１１２）。例えば、図９に示すパス式２１４の繰り返し部分のように展開すべき部分を含む場合には、この部分を構造索引にあわせて展開する。具体的には、構造索引４１０が定まるとｎｏｄｅ２の子ノードとして存在するｎｏｄｅ２の数がわかる。そこで、この数だけｎｏｄｅ２をパス式に展開する。
【００４９】
図１１に示す構造索引４１０に対して展開されるパス式は、以下のようになる。
./node2[./n2child1 and ./n2child2｛2-3｝or ./n2child3 or ./node2[./n2child1 and ./n2child2｛2-3｝ or ./n2child3 or ./node2[./n2child1 and ./n2child2｛2-3｝or ./n2child3] ｛ordered｝]｛ordered｝]｛ordered｝
【００５０】
図１１に示す例においては、ノード４１２の下位にノード４１４が存在する。ノード４１４の下位には、ノード４１６が存在する。これに対応して、図１２に示すようにｎｏｄｅ２が３回現れるパス式が展開される。
【００５１】
次に、第２検証部１３４は、パス式にしたがい検証を行う（ステップＳ１１４）。なお、パス式の左側の記述から順に検証する。まず必須の「ａｔｔ１」属性存在を調べると、構造索引４１０に確かに存在する。
【００５２】
次に｛ｏｒｄｅｒｅｄ｝の指定に従いパス式の左から順に調べる。具体的には、「ｎ２ｃｈｉｌｄ１」の存在を調べる。「ｎ２ｃｈｉｌｄ１」のノード４２１を抽出する。ノード４２１の各ノードＩＤは、すべて要素オーダー１に対応付けられている。したがって、３つの構造化文書３０１〜３０３は、いずれもパス式の「ｎ２ｃｈｉｌｄ１」に合致する。
【００５３】
次に、「ｎ２ｃｈｉｌｄ２」について調べる。「ｎ２ｃｈｉｌｄ２」のノード４２２が抽出される。さらに、パス式の｛２−３｝からノード４２２におけるノードＩＤの出現回数が２−３個であるか否かを調べる。いずれの構造化文書においても先の「ｎ２ｃｈｉｌｄ１」にノードＩＤが必ず１つ存在する。したがって、「ｎ２ｃｈｉｌｄ２」に対応付けられているノードＩＤは、要素オーダー２以降に対応付けられているはずである。したがって、要素オーダー４までに２−３個のノードＩＤが対応付けられているはずである。構造化文書が３つあるので、「ｎ２ｃｈｉｌｄ２」のノード４２２には、最小で６個、最大で９個のノードＩＤが対応付けられているはずである。
【００５４】
実際には、ノード４２２においては、要素オーダー２〜４に７個のノードＩＤが対応付けられている。したがって、３つの構造化文書３０１〜３０３は、いずれもパス式の「ｎ２ｃｈｉｌｄ２｛２−３｝」に合致する。
【００５５】
次に、「ｎ２ｃｈｉｌｄ３」について調べる。「ｎ２ｃｈｉｌｄ３」に対応するノードＩＤは存在しなくてもよい。また、存在する場合には、要素オーダー４または５以降に対応付けられているはずである。「ｎ２ｃｈｉｌｄ２」に要素オーダー２以降が割り当てられ、かつ２〜３個のノードＩＤが対応付けられているためである。
【００５６】
実際には、「ｎ２ｃｈｉｌｄ３」のノード４２３においては、要素オーダー４に１つのノードＩＤのみが対応付けられている。したがって、残り２つの構造化文書においては、「ｎ２ｃｈｉｌｄ３」に対応するノードＩＤは存在しない。すなわち、３つの構造化文書３０１〜３０３は、いずれもパス式の「ｎ２ｃｈｉｌｄ３」に合致する。
【００５７】
次に、「ｎｏｄｅ２」について調べる。「ｎｏｄｅ２」に対応するノードＩＤは存在しなくてもよい。存在する場合には、要素オーダー４以降に対応付けられているはずである。
【００５８】
実際には、「ｎｏｄｅ２」のノード４１４においては、要素オーダー４と５にそれぞれ１つずつノードＩＤが対応付けられている。したがって、残り１つの構造化文書においては、「ｎｏｄｅ２」に対応するノードＩＤは存在しない。すなわち、３つの構造化文書３０１〜３０３は、いずれもパス式の「ｎｏｄｅ２」に合致する。以上の処理をパス式の最後まで行うことにより、構造索引４１０がパス式に合致しているか否かがわかる。
【００５９】
構造索引４１０においては、「／ｒｏｏｔ／ｎｏｄｅ２」以下のノードに対してパス式が成り立つことがわかる。したがって、「／ｒｏｏｔ／ｎｏｄｅ２」以下のデータ群は、ｎｏｄｅ２に対するパス式に合致し（ステップＳ１１６，Ｙｅｓ）、すべての構造化文書３０１〜３０３が関数に返される（ステップＳ１２２）。
【００６０】
図１２は、図３−１から図３−４に示される構造化文書３０１〜３０４により作成された構造索引４３０を示す図である。構造索引４３０に対し、図９に示すパス式２１４を適用する場合には、パス式抽出部１３２は、まずパス式２１４の「／ｅｘ．ｎｏｄｅ２」を展開する。これにより、構造索引４１０に対して得られるパス式と同様のパス式が得られる。
【００６１】
このパス式に対し検証を行うと（ステップＳ１１４）、属性のノード４３１、ｎｏｄｅ２のノード４３２、ｎ２ｃｈｉｌｄ１のノード４３３、ｎ２ｃｈｉｌｄ２のノード４３４、ｎ２ｃｈｉｌｄ３のノード４３５、ｎｏｄｅ２のノード４３６、ｎ２ｃｈｉｌｄ１のノード４３７、ｎ２ｃｈｉｌｄ２のノード４３８、ｎ２ｃｈｉｌｄ３のノード４３９までパス式に合致する。
【００６２】
ｎｏｄｅ２のノード４４０においては、要素オーダー４以降にノードＩＤが対応付けられているはずである。しかし、構造索引４３０においては、要素オーダー３にもノードＩＤが対応付けられている。したがって、パス式に合致ない。
すなわち、パス式に合致せず（ステップＳ１１６，Ｎｏ）、合致する構造化文書のみが関数に返される（ステップＳ１２６）。
【００６３】
以上のように、文書型定義に基づいて作成したパス式と構造索引のみを利用することにより、構造化文書ＤＢ１１４に格納されている複数の構造化文書に対する妥当性検証を行うことができる。
【００６４】
図１３は、構造化文書検証装置１０による更新時の妥当性検証処理を示すフローチャートである。更新時の構造化文書検証処理においては、まず、更新要求取得部１３０は、更新要求を取得する（ステップＳ１４０）。更新要求は、妥当性検証指示を含んでいる。次に、更新要求取得部１３０は、更新対象となる文書型定義を特定する（ステップＳ１４２）。次に、この文書型定義に対応するパス式、すなわち更新対象となるパス式がパス式ＤＢ１２２に格納されている場合には（ステップＳ１４４，Ｙｅｓ）、ステップＳ１５０へ進む。
【００６５】
一方、更新対象となるパス式がパス式ＤＢ１２２に格納されていない場合には（ステップＳ１４４，Ｎｏ）、更新要求取得部１３０は、パス式生成部１２０にパス式生成を指示する。パス式生成部１２０は、更新対象となる文書型定義に基づいて、パス式を生成する（ステップＳ１４６）。すなわち、更新要求取得部１３０は、パス式生成制御手段として機能する。
【００６６】
次に、パス式生成部１２０は、パス式をパス式ＤＢ１２２に登録する（ステップＳ１４８）。次に、第２検証部１３４は、構造索引ＤＢ１１８から更新対象となる構造索引を抽出する（ステップＳ１５０）。次に、更新部１３６は、抽出された構造索引を更新要求にしたがい更新する（ステップＳ１５２）。次に、パス式抽出部１３２は、パス式ＤＢ１２２から更新対象となるパス式を抽出する（ステップＳ１５４）。そして、第２検証部１３４は、パス式と更新後の構造索引とを比較することにより、文書型検証を行う（ステップＳ１５６）。
【００６７】
構造索引がパス式に合致した場合には（ステップＳ１５８，Ｙｅｓ）、構造索引に含まれるすべての構造化文書が妥当であるので、更新部１３６は、更新後の構造索引を構造索引ＤＢ１１８に登録する。すなわち、構造索引ＤＢ１１８を更新する（ステップＳ１６０）。次に、更新部１３６は、更新要求にしたがい、構造化文書ＤＢ１１４を更新する（ステップＳ１６２）。一方、パス式に合致しない場合には（ステップＳ１５８，Ｎｏ）、エラーを通知する（ステップＳ１６４）。以上で、構造化文書検証装置１０による更新時の妥当性検証処理が完了する。
【００６８】
このように、更新時においても、構造索引のみを参照することにより、更新後の構造化文書に対する妥当性検証を行うことができる。したがって、更新内容が複数の構造化文書にわたる場合であっても、構造索引のみを参照するだけで妥当性検証を行うことができるので、処理の効率化を図ることができる。
【００６９】
図１４は、実施の形態１にかかる構造化文書検証装置１０のハードウェア構成を示す図である。構造化文書検証装置１０は、ハードウェア構成として、構造化文書検証装置１０における構造化文書検証処理を実行する構造化文書検証プログラムなどが格納されているＲＯＭ５２と、ＲＯＭ５２内のプログラムに従って構造化文書検証装置１０の各部を制御するＣＰＵ５１と、構造化文書検証装置１０の制御に必要な種々のデータを記憶するＲＡＭ５３と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５７と、各部を接続するバス６２とを備えている。
【００７０】
先に述べた構造化文書検証装置１０における構造化文書検証プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
【００７１】
この場合には、構造化文書検証プログラムは、構造化文書検証装置１０において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
【００７２】
また、本実施の形態の構造化文書検証プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
【００７３】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００７４】
そうした変更例としては、本実施の形態においては、第１検証部１１２は、文書型定義に基づいて構造化文書の妥当性検証を行っていたが、これにかえて、第２検証部１３４や第３検証部１４２と同様に、構造索引を参照して構造化文書の妥当性検証を行ってもよい。
【図面の簡単な説明】
【００７５】
【図１】構造化文書検証装置１０の機能構成を示すブロック図である。
【図２】文書型定義の一例を示す図である。
【図３−１】構造化文書の一例を示す図である。
【図３−２】構造化文書の一例を示す図である。
【図３−３】構造化文書の一例を示す図である。
【図３−４】構造化文書の一例を示す図である。
【図４】構造索引のデータ構成を示す図である。
【図５】文書型定義に含まれる部分スキーマ２１０を示す図である。
【図６】部分スキーマ２１０中のｃｈｉｌｄ２に付与された条件と、条件にしたがい生成されるパス式とを示す図である。
【図７】文書型定義に含まれる部分スキーマ２１２を示す図である。
【図８】部分スキーマ２１２における（ｘ）部分における指定と、指定にしたがい生成されるパス式とを示す図である。
【図９】図２に示す文書型定義２００中のｎｏｄｅ２の定義２０４から生成されたパス式を示す図である。
【図１０】構造化文書検証装置１０による検索時の妥当性検証処理を示すフローチャートである。
【図１１】図３−１から図３−３に示される構造化文書３０１〜３０３により作成された構造索引４１０を示す図である。
【図１２】図３−１から図３−４に示される構造化文書３０１〜３０４により作成された構造索引４３０を示す図である。
【図１３】構造化文書検証装置１０による更新時の妥当性検証処理を示すフローチャートである。
【図１４】実施の形態１にかかる構造化文書検証装置１０のハードウェア構成を示す図である。
【符号の説明】
【００７６】
１０  構造化文書検証装置
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５７  通信Ｉ／Ｆ
６２  バス
１００  文書型定義取得部
１０２  文書型定義ＤＢ
１１０  構造化文書取得部
１１２  第１検証部
１１４  構造化文書ＤＢ
１１６  構造索引生成部
１１８  構造索引ＤＢ
１２０  パス式生成部
１２２  パス式ＤＢ
１３０  更新要求取得部
１３２  パス式抽出部
１３４  第２検証部
１３６  更新部
１４０  検索条件取得部
１４２  第３検証部
１４４  出力部
【図１】
2008083857.tif 000003
【図２】
2008083857.tif 000004
【図３−１】
2008083857.tif 000005
【図３−２】
2008083857.tif 000006
【図３−３】
2008083857.tif 000007
【図３−４】
2008083857.tif 000008
【図４】
2008083857.tif 000009
【図５】
2008083857.tif 000010
【図６】
2008083857.tif 000011
【図７】
2008083857.tif 000012
【図８】
2008083857.tif 000013
【図９】
2008083857.tif 000014
【図１０】
2008083857.tif 000015
【図１１】
2008083857.tif 000016
【図１２】
2008083857.tif 000017
【図１３】
2008083857.tif 000018
【図１４】
2008083857.tif 000019