(57)【要約】  検証装置２００が、入力された検証ルール３１０を、項目および値により規定される変換検証条件に変換する。検証装置２００は、入力データ３００より生成された、入力データ３００に含まれる項目および値それぞれについての出現位置に関するインデックス情報１２２を参照し、変換検証条件に対応する項目および値の検証を行うこととしたので、入力データ３００から該当するデータを高速に抽出することができる。
2018096686.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
入力された検証条件を、項目および値により規定される変換検証条件に変換し、
対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる検証プログラム。
【請求項２】
前記検証を行う処理は、前記インデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記値に対応するインデックスを１ビット分左シフトし、前記項目に対応するインデックスと前記値に対応するシフトした結果のインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる請求項１に記載の検証プログラム。
【請求項３】
前記検証を行う処理は、前記変換検証条件に項目および値の組が複数存在する場合には、各組に含まれる項目に対応するインデックスと同一の組に含まれる値に対応するシフトした結果のインデックスとをＡＮＤ演算し、各組のＡＮＤ演算結果をＯＲ演算し、ＯＲ演算結果を用いて前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる請求項２に記載の検証プログラム。
【請求項４】
前記インデックス情報は、前記対象データに含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報であり、
前記検証を行う処理は、前記インデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記項目に対応するインデックスと取得した前記値に対応するインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる請求項１に記載の検証プログラム。
【請求項５】
入力された検証条件を、項目および値により規定される変換検証条件に変換する変換部と、
対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う検証部と、
を有することを特徴とする検証装置。
【請求項６】
コンピュータが、
入力された検証条件を、項目および値により規定される変換検証条件に変換し、
対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う
各処理を実行することを特徴とする検証方法。
【請求項７】
コンピュータに、
項目および値の組み合わせにより記述されたデータを入力し、
前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する
処理を実行させるインデックス生成プログラム。
【請求項８】
前記生成する処理は、前記データに含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成する
処理を実行させる請求項７に記載のインデックス生成プログラム。
【請求項９】
項目および値の組み合わせにより記述されたデータを入力する入力部と、
前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する生成部と、
を有することを特徴とするインデックス生成装置。
【請求項１０】
コンピュータが、
項目および値の組み合わせにより記述されたデータを入力し、
前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する
各処理を実行することを特徴とするインデックス生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証プログラムなどに関する。
【背景技術】
【０００２】
世界各国で、ＸＢＲＬ（eXtensible  Business  Reporting  Language）文書による財務情報の報告が行われている。ＸＢＲＬとは、各種財務報告用の情報を作成、流通、利用できるように標準化されたＸＭＬベースの言語である。ＸＢＲＬ文書とは、例えば財務会計報告に関して、ＸＢＲＬ等のＸＭＬで記述された文書である。【０００３】
ＸＢＲＬで記述されたデータを抽出する抽出条件は、例えば、項目（プロパティ名）と値による個別条件を複数組み合わせた形で規定される。【０００４】
ＸＢＲＬで記述されたデータを抽出する方法の開示例について説明する（例えば、特許文献１参照）。抽出装置は、抽出条件における複数の個別条件それぞれについて、抽出データの該当数を予め取得しておき、取得した複数の個別条件それぞれについての該当数に基づき複数の個別条件の適用順序を決定する。そして、抽出装置は、決定した適用順序に応じて抽出条件を適用し、入力データからＸＢＲＬスキーマを参照し、該当するデータを抽出する。複数の個別条件の適用順序を決定するのは、適用する個別条件の順番が異なると、演算量が大きくなる場合があるからである。
また、個別条件が項目と値との組み合わせとなる開示では（例えば、特許文献２参照）、項目と値との組に対して、位置をインデックス化し、生成したインデックス情報を用いて複数の個別条件でデータを抽出することも考えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１６／１３２５５０号
【特許文献２】特開２００１−２６５７７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ＸＢＲＬスキーマをもとに、該当データを抽出する場合、演算量が問題となる場合がある。例えば、ＸＢＲＬスキーマを参照し、入力データを先頭から、ＸＢＲＬタグで該当データを抽出する従来の方法では、複数の個別条件の関係によっては、適用順序の決定が適切でない。例えば、複数の個別条件それぞれについて、抽出データの該当数が全て大きい場合である。かかる場合には、該当数による適用順序の決定が適切でない場合に相当し、演算量が大きくなる。また、適用順序の決定のためには、そもそも、予め、該当数を取得する演算が必要となる。【０００７】
一方、項目と値との組に対して、位置をインデックス化し、生成したインデックス情報を用いて複数の個別条件でデータを抽出する場合について、かかるインデックス情報の参考例を、図２０を参照して説明する。【０００８】
図２０は、インデックス情報の参考例を示す図である。図２０に示すように、インデックス情報９００は、プロパティ名（項目名）と値との組に対するビット列であって組に対する入力データ内の各データ位置での存否を示すビットを連結したビット列である。インデックス情報９００のＸ軸はデータ位置を表し、Ｙ軸はプロパティ名および値の組を表す。プロパティ名および値が入力データ内のあるデータ位置に存在しない場合には、データ位置の存否としてＯＦＦ、すなわち２進数の「０」が設定される。プロパティ名および値が入力データ内のあるデータ位置に存在する場合には、データ位置の存否としてＯＮ、すなわち２進数の「１」が設定される。ここでは、一例として、プロパティ名が「Ｐ１」、値が「Ｖａｌ１」である場合に、データ１の存否として「１」が設定され、データ１０００００の存否として「０」が設定されている。【０００９】
しかしながら、入力データ内の項目と値との組み合わせの数は非常に多くなるため、項目と値との組み合わせに対するインデックス情報を生成することが難しいという問題がある。また、項目と値との組み合わせに対するインデックス情報を用いて複数の個別条件でデータを抽出することが難しいという問題がある。【００１０】
１つの側面では、ＸＢＲＬで記述されたデータを抽出する際、項目と値に対するインデックス情報を用いて項目と値による複数の条件でデータを抽出することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、コンピュータに、入力された検証条件を、項目および値により規定される変換検証条件に変換し、対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う、処理を実行させる。
【発明の効果】
【００１２】
一つの態様によれば、ＸＢＲＬで記述されたデータを抽出する際、項目と値に対するインデックス情報を用いて項目と値による複数の条件でデータを抽出することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係るインデックス生成装置の構成を示す機能ブロック図である。
【図２】図２は、ＸＢＲＬデータの一例を示す図である。
【図３】図３は、プロパティ定義情報の一例を示す図である。
【図４】図４は、実施例１に係るインデックス情報の一例を示す図である。
【図５】図５は、実施例１に係るコンテキスト位置情報の一例を示す図である。
【図６】図６は、実施例１に係るインデックス生成処理の一例を示す図である。
【図７】図７は、実施例１に係るインデックス情報の具体例を示す図である。
【図８】図８は、実施例１に係るインデックス生成処理のフローチャートを示す図である。
【図９】図９は、実施例１に係る検証装置の構成を示す機能ブロック図である。
【図１０】図１０は、検証ルールの構造の一例を示す図である。
【図１１】図１１は、実施例１に係る抽出条件変換処理の一例を示す図である。
【図１２】図１２は、実施例１に係るデータ抽出処理の一例を示す図である。
【図１３】図１３は、実施例１に係るデータ抽出処理の別の例を示す図である。
【図１４】図１４は、実施例１に係るデータ抽出処理のさらに別の例を示す図である。
【図１５】図１５は、実施例１に係る検証処理のフローチャートを示す図である。
【図１６】図１６は、実施例２に係るインデックス情報の一例を示す図である。
【図１７】図１７は、実施例２に係るインデックス生成処理の一例を示す図である。
【図１８】図１８は、実施例２に係るデータ抽出処理の一例を示す図である。
【図１９】図１９は、インデックス生成装置および検証装置のハードウェア構成の一例を示す図である。
【図２０】図２０は、インデックス情報の参考例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
［実施例１に係るインデックス生成装置の構成］
図１は、実施例１に係るインデックス生成装置の構成を示す機能ブロック図である。インデックス生成装置１００は、入力データ３００を入力し、入力データ３００に含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報を生成する。この生成されたインデックス情報を用いて、後述する検証装置２００は、入力される後述する検証ルール３１０から得られる抽出条件に合致するＸＢＲＬデータを抽出する。【００１６】
ここでいう「ＸＢＲＬデータ」とは、ＸＢＲＬで記述されたデータである。ＸＢＲＬとは、各種財務報告用の情報を作成、流通、利用できるように標準化されたＸＭＬベースの言語である。ＸＢＲＬデータの一例として、財務データが挙げられる。ＸＢＲＬデータはデータ値と、データ値を補足する付加情報とからなる。付加情報のことをアスペクトという場合がある。付加情報は、データ値を含む要素と関連付けられる、別の独立した要素で指定される情報であり、プロパティの項目名とプロパティの項目値とを１組とした複数のプロパティの情報から構成される。なお、実施例では、ＸＢＲＬデータを単にデータという場合があったり、データ値という場合があったりする。また、実施例では、ＸＢＲＬデータのデータ値に関連付けられる付加情報を含む要素である「コンテキスト（Ｃｏｎｔｅｘｔ）」を主に説明する。【００１７】
図２は、ＸＢＲＬデータの一例を示す図である。図２に示すように、１つのＸＢＲＬデータは、データ値と、データ値を補足する付加情報からなる。付加情報は、名前がｃｏｎｔｅｘｔとｕｎｉｔである要素に複数定義されるが、ここでは、それぞれを区別するための識別子として、「ｃｏｎｔｅｘｔ＿１」、「ＪＰＹ」が付与されている。データ値を補足する付加情報として、「ｃｏｎｔｅｘｔ＿１」に対応する付加情報と、「ＪＰＹ」に対応する付加情報が定義されている。そして、例えば、「ｃｏｎｔｅｘｔ＿１」に対応する付加情報には、プロパティの項目名として「ｄｉｍ：Ａ１」、プロパティの項目値として「Ａ：ｘ１」を１組とするプロパティの情報が定義されている。プロパティの項目名として「ｄｉｍ：Ｂ１」、プロパティの項目値として「Ｂ：ｘ１」を１組とするプロパティの情報が定義されている。プロパティの項目名として「ｄｉｍ：Ｃ１」、プロパティの項目値として「Ｃ：ｘ２」を１組とするプロパティの情報が定義されている。【００１８】
図１に示すように、インデックス生成装置１００は、制御部１１０および記憶部１２０を有する。【００１９】
記憶部１２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部１２０は、プロパティ定義情報１２１、インデックス情報１２２およびコンテキスト位置情報１２３を有する。【００２０】
プロパティ定義情報１２１は、プロパティの項目名およびプロパティの項目値を定義する。なお、プロパティの項目名を「プロパティ名」という場合がある。プロパティの項目値を「プロパティ値」という場合がある。【００２１】
ここで、プロパティ定義情報１２１の一例を、図３を参照して説明する。図３は、プロパティ定義情報の一例を示す図である。図３に示すように、プロパティ定義情報１２１には、プロパティ種の定義およびプロパティ値の定義が含まれる。プロパティ種とは、プロパティの項目に対応する。プロパティ値とは、プロパティの項目値に対応する。各プロパティ種は、値として該当するプロパティ値と対応付けられる。プロパティ定義情報１２１には、入力データ３００に出現する可能性のあるプロパティ種およびプロパティ値が定義される。例えば、ＸＢＲＬの付加情報には、「Ｄｉｍｅｎｓｉｏｎ」と呼ばれるカテゴリに属するプロパティ種があり、ユーザが予め任意に定義できる。プロパティ種が「Ｄｉｍｅｎｓｉｏｎ」である場合のプロパティ項目およびプロパティ値が定義されている。一例として、プロパティ項目が「ｄｉｍ：Ａ１」である場合に、値として該当するプロパティ値が「ｍ：ｍ１」、「ｍ：ｍ２」・・・「ｍ：ｍ８」であることが示されている。【００２２】
図１に戻って、インデックス情報１２２は、入力データ３００に含まれるプロパティの項目名およびプロパティの項目値それぞれについて、プロパティの項目名およびプロパティの項目値それぞれの出現位置を表す情報である。すなわち、インデックス情報１２２とは、入力データ３００に含まれるプロパティの項目名およびプロパティの項目値について、それぞれ、オフセット（出現位置）ごとの存否をインデックス化したビットマップのことをいう。【００２３】
ここで、インデックス情報１２２の一例を、図４を参照して説明する。図４は、実施例１に係るインデックス情報の一例を示す図である。図４に示すように、インデックス情報１２２のＸ軸はコンテキストごとの出現位置を表し、Ｙ軸はプロパティ名とプロパティ値とを表す。また、インデックス情報１２２は、プロパティ名のインデックス情報の領域と、プロパティ値のインデックス情報の領域を持つ。プロパティ名のインデックス情報は、それぞれのプロパティの項目名について、コンテキスト（Ｃｏｎｔｅｘｔ）内の出現位置に関するインデックスの束の情報である。また、プロパティ値のインデックス情報は、それぞれのプロパティの項目値について、コンテキスト（Ｃｏｎｔｅｘｔ）内の出現位置に関するインデックスの束の情報である。各プロパティ名および各プロパティ値について、コンテキスト内に出現する出現位置には、ＯＮすなわち２進数の「１」が設定される。一例として、プロパティ名が「Ｐ１」である場合に、Ｃｏｎｔｅｘｔ１内の１番目の出現位置に「１」が設定されている。プロパティ値が「Ｖａｌ１」である場合に、Ｃｏｎｔｅｘｔ１内の２番目の出現位置に「１」が設定されている。【００２４】
図１に戻って、コンテキスト位置情報１２３は、コンテキスト（Ｃｏｎｔｅｘｔ）に関連付けられるＸＢＲＬデータの情報である。【００２５】
ここで、コンテキスト位置情報１２３の一例を、図５を参照して説明する。図５は、実施例１に係るコンテキスト位置情報の一例を示す図である。図５に示すように、コンテキスト位置情報１２３は、コンテキスト（Ｃｏｎｔｅｘｔ）ごとに、各コンテキストが関連付けられるＸＢＲＬデータを対応付ける情報である。ここでいう各ＸＢＲＬデータは、図２で示した各データ値に対応する。一例として、コンテキストが「Ｃｏｎｔｅｘｔ１」である場合に、このコンテキストが関連付けられるＸＢＲＬデータとして「データ３、データ１０、データ１８」が設定されている。すなわち、「Ｃｏｎｔｅｘｔ１」は、「データ３」に関連付けられる。「Ｃｏｎｔｅｘｔ１」は、「データ１０」に関連付けられる。「Ｃｏｎｔｅｘｔ１」は、「データ１８」に関連付けられる。【００２６】
図１に戻って、制御部１１０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部１１０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路の電子回路に対応する。または、制御部１１０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。制御部１１０は、コンテキスト選択部１１１、コンテキスト解析部１１２およびインデックス情報生成部１１３を有する。【００２７】
コンテキスト選択部１１１は、入力データ３００を入力し、入力した入力データ３００に含まれるＸＢＲＬデータファイルから当該ＸＢＲＬデータファイルに含まれるコンテキストを順次選択する。【００２８】
コンテキスト解析部１１２は、コンテキスト選択部１１１によって選択されたコンテキストを解析する。例えば、コンテキスト解析部１１２は、コンテキスト選択部１１１によって選択されたコンテキストを字句解析する。コンテキスト解析部１１２は、字句解析した結果、プロパティの項目名およびプロパティの項目値の組を出現順に一時領域に保持する。【００２９】
インデックス情報生成部１１３は、入力データ３００に含まれるプロパティの項目名およびプロパティの項目値それぞれについて、プロパティの項目名およびプロパティの項目値それぞれの出現位置に関するインデックス情報１２２を生成する。例えば、インデックス情報生成部１１３は、コンテキスト解析部１１２によって解析されたコンテキストについて、一時領域に保持された組ごとに、以下の生成処理を行う。すなわち、インデックス情報生成部１１３は、各組に含まれるプロパティの項目名に対して、当該プロパティの項目名の出現位置にビットを立てる。インデックス情報生成部１１３は、各組に含まれるプロパティの項目値に対して、当該プロパティの項目値の出現位置にビットを立てる。インデックス情報生成部１１３は、選択されたコンテキストと、対象のＸＢＲＬデータとを対応付けてコンテキスト位置情報１２３に設定する。インデックス情報生成部１１３は、コンテキスト解析部１１２によって解析された全てのコンテキストについて、インデックス情報生成処理を行うことで、インデックス情報１２２を生成する。なお、インデックス情報１２２のコンテキスト名、プロパティ名およびプロパティ値は、予め設定されるようにしても良い。あるいは、インデックス情報生成部１１３が、前処理として、プロパティ定義情報１２１を参照して、インデックス情報１２２のプロパティ名およびプロパティ値を設定しても良い。【００３０】
これにより、インデックス情報生成部１１３は、プロパティの項目名およびプロパティ値それぞれの出現位置に関するインデックスを生成することで、プロパティの項目名およびプロパティ値の組み合わせのインデックスを生成する場合と比べて、インデックス情報１２２のサイズ爆発を抑制できる。また、インデックス情報生成部１１３は、プロパティの項目名およびプロパティ値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ３００に新たなプロパティ値が有ったとしても、インデックス情報１２２のプロパティ値の領域に１行追加するだけで、インデックス情報１２２を更新することができる。インデックス情報生成部１１３は、プロパティの項目名およびプロパティ値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ３００に新たなプロパティの項目名が有ったとしても、インデックス情報１２２のプロパティの項目名の領域に１行追加するだけで、インデックス情報１２２を更新することができる。【００３１】
［インデックス生成処理の一例］
ここで、インデックス生成処理の一例を、図６を参照して説明する。図６は、実施例１に係るインデックス生成処理の一例を示す図である。【００３２】
図６に示すように、入力データ３００には、複数のＸＢＲＬデータファイルが含まれる。各ＸＢＲＬデータファイルには、複数のコンテキスト（Ｃｏｎｔｅｘｔ）が含まれる。コンテキスト選択部１１１は、入力データ３００に含まれるＸＢＲＬデータファイルから当該ＸＢＲＬデータファイルに含まれるコンテキストを順次選択する。ここでは、コンテキスト選択部１１１は、コンテキストとして「Ｃｏｎｔｅｘｔ１」を選択したとする。【００３３】
すると、コンテキスト解析部１１２は、コンテキストとして選択された「Ｃｏｎｔｅｘｔ１」を字句解析する。一例として、コンテキスト解析部１１２は、特定の要素（xbrldi:explicitMember）の行に含まれるプロパティの項目名およびプロパティの項目値の組を検知する。ここでは、符号ｒ１で示される行には、プロパティの項目名として「ｄｉｍ：Ｂ１」、プロパティの項目値として「ｍ：ｍ２」の組が検知される。また、符号ｒ２で示される行には、プロパティの項目名として「ｄｉｍ：Ａ１」、プロパティの項目値として「ｍ：ｍ１」の組が検知される。符号ｒ３で示される行には、プロパティの項目名として「ｄｉｍ：Ｃ１」、プロパティの項目値として「ｍ：ｍ３」の組が検知される。【００３４】
そして、コンテキスト解析部１１２は、プロパティの項目名およびプロパティの項目値の組を出現順に一時領域に保持する。ここでは、コンテキスト解析部１１２は、符号ｒ１で示される行で検知した組の出現順に応じて、１番目の一時領域に「ｄｉｍ：Ｂ１」、２番目の一時領域に「ｍ：ｍ２」を保持する。コンテキスト解析部１１２は、符号ｒ２で示される行で検知した組の出現順に応じて、３番目の一時領域に「ｄｉｍ：Ａ１」、４番目の一時領域に「ｍ：ｍ１」を保持する。コンテキスト解析部１１２は、符号ｒ３で示される行で検知した組の出現順に応じて、５番目の一時領域に「ｄｉｍ：Ｃ１」、６番目の一時領域に「ｍ：ｍ３」を保持する。【００３５】
そして、インデックス情報生成部１１３は、「Ｃｏｎｔｅｘｔ１」について、一時領域に保持された組に含まれるプロパティの項目名に対して、当該プロパティの項目名の出現位置にビットを立てる。インデックス情報生成部１１３は、「Ｃｏｎｔｅｘｔ１」について、一時領域に保持された組に含まれるプロパティの項目値に対して、当該プロパティの項目値の出現位置にビットを立てる。ここでは、インデックス情報生成部１１３は、プロパティの項目名「ｄｉｍ：Ｂ１」に対して、１番目の出現位置にビット「１」を設定する（ｅ１）。インデックス情報生成部１１３は、プロパティの項目値「ｍ：ｍ２」に対して、２番目の出現位置にビット「１」を設定する（ｅ２）。インデックス情報生成部１１３は、プロパティの項目名「ｄｉｍ：Ａ１」に対して、３番目の出現位置にビット「１」を設定する（ｅ３）。インデックス情報生成部１１３は、プロパティの項目値「ｍ：ｍ１」に対して、４番目の出現位置にビット「１」を設定する（ｅ４）。インデックス情報生成部１１３は、プロパティの項目名「ｄｉｍ：Ｃ１」に対して、５番目の出現位置にビット「１」を設定する（ｅ５）。インデックス情報生成部１１３は、プロパティの項目値「ｍ：ｍ３」に対して、６番目の出現位置にビット「１」を設定する（ｅ６）。【００３６】
［インデックス情報の具体例］
ここで、Ｃｏｎｔｅｘｔ１以外のＣｏｎｔｅｘｔ１０とＣｏｎｔｅｘｔ１００のインデックス生成処理が行われた後のインデックス情報１２２の具体例を、図７に表す。図７は、実施例１に係るインデックス情報の具体例を示す図である。【００３７】
図７に示すように、Ｃｏｎｔｅｘｔ１、Ｃｏｎｔｅｘｔ１０およびＣｏｎｔｅｘｔ１００が定義されている。Ｃｏｎｔｅｘｔ１についてのインデックス生成処理が行われた後のインデックス情報１２２は、符号Ｅ１の範囲内に示される。各プロパティの項目名、各プロパティの項目値に対するビットの設定位置は、図６で説明したとおりであるので、その説明を省略する。【００３８】
Ｃｏｎｔｅｘｔ１０についてのインデックス生成処理が行われた後のインデックス情報１２２は、符号Ｅ２の範囲内に示される。すなわち、プロパティの項目名「ｄｉｍ：Ｃ１」に対して、Ｃｏｎｔｅｘｔ１０の１番目の出現位置にビット「１」が設定される（ｅ７）。プロパティの項目名「ｍ：ｍ１」に対して、Ｃｏｎｔｅｘｔ１０の２番目の出現位置にビット「１」が設定される（ｅ８）。プロパティの項目名「ｄｉｍ：Ａ１」に対して、Ｃｏｎｔｅｘｔ１０の３番目の出現位置にビット「１」が設定される（ｅ９）。プロパティの項目名「ｍ：ｍ１」に対して、Ｃｏｎｔｅｘｔ１０の４番目の出現位置にビット「１」が設定される（ｅ１０）。【００３９】
Ｃｏｎｔｅｘｔ１００についてのインデックス生成処理が行われた後のインデックス情報１２２は、符号Ｅ３の範囲内に示される。すなわち、プロパティの項目名「ｄｉｍ：Ａ１」に対して、Ｃｏｎｔｅｘｔ１００の１番目の出現位置にビット「１」が設定される（ｅ１１）。プロパティの項目名「ｍ：ｍ３」に対して、Ｃｏｎｔｅｘｔ１００の２番目の出現位置にビット「１」が設定される（ｅ１２）。プロパティの項目名「ｄｉｍ：Ｂ１」に対して、Ｃｏｎｔｅｘｔ１００の３番目の出現位置にビット「１」が設定される（ｅ１３）。プロパティの項目名「ｍ：ｍ３」に対して、Ｃｏｎｔｅｘｔ１００の４番目の出現位置にビット「１」が設定される（ｅ１４）。プロパティの項目名「ｄｉｍ：Ｃ１」に対して、Ｃｏｎｔｅｘｔ１００の５番目の出現位置にビット「１」が設定される（ｅ１５）。プロパティの項目名「ｍ：ｍ１」に対して、Ｃｏｎｔｅｘｔ１００の６番目の出現位置にビット「１」が設定される（ｅ１６）。【００４０】
このようにして、インデックス生成装置１００は、入力データ３００の中の未処理のコンテキストがなくなるまで、コンテキスト選択部１１１、コンテキスト解析部１１２およびインデックス情報生成部１１３によるインデックス生成処理を繰り返させる。この結果、入力データ３００におけるインデックス情報１２２が完成する。【００４１】
［インデックス生成処理のフローチャート］
図８は、実施例１に係るインデックス生成処理のフローチャートを示す図である。なお、図８では、ＸＢＲＬデータを「データ」というものとする。【００４２】
図８に示すように、コンテキスト選択部１１１は、入力データ３００を受け取ったか否かを判定する（ステップＳ１０）。入力データ３００を受け取っていないと判定した場合には（ステップＳ１０；Ｎｏ）、コンテキスト選択部１１１は、入力データ３００を受け取るまで、判定処理を繰り返す。【００４３】
一方、入力データ３００を受け取ったと判定した場合には（ステップＳ１０；Ｙｅｓ）、コンテキスト選択部１１１は、入力データ３００から対象のファイルを読み出す（ステップＳ１１）。そして、コンテキスト選択部１１１は、読み出した対象のファイルからコンテキストを選択する（ステップＳ１２）。【００４４】
続いて、コンテキスト解析部１１２は、選択したコンテキストを字句解析する（ステップＳ１３）。そして、コンテキスト解析部１１２は、プロパティの項目名およびプロパティの項目値を出現順に一時領域に保持する（ステップＳ１４）。【００４５】
続いて、インデックス情報生成部１１３は、保持した各プロパティの項目名に対応するインデックスの、選択したコンテキスト内の出現位置に対するビットに「１」を書き込む（ステップＳ１５）。インデックス情報生成部１１３は、保持した各プロパティの項目値に対応するインデックスの、選択したコンテキスト内の出現位置に対するビットに「１」を書き込む（ステップＳ１６）。インデックス情報生成部１１３は、選択したコンテキストと対象のデータとを対応付けて、コンテキスト位置情報１２３に設定する（ステップＳ１７）。【００４６】
そして、インデックス情報生成部１１３は、未処理のコンテキストは有るか否かを判定する（ステップＳ１８）。未処理のコンテキストが有ると判定した場合には（ステップＳ１８；Ｙｅｓ）、コンテキスト選択部１１１は、次のコンテキストを選択する（ステップＳ１９）。そして、コンテキスト選択部１１１は、コンテキスト解析部１１２に遷移すべく、ステップＳ１３に移行する。【００４７】
一方、未処理のコンテキストが無いと判定した場合には（ステップＳ１８；Ｎｏ）、インデックス情報生成部１１３は、入力データ３００に未処理の対象のファイルは有るか否かを判定する（ステップＳ２０）。未処理の対象のファイルが有ると判定した場合には（ステップＳ２０；Ｙｅｓ）、インデックス情報生成部１１３は、コンテキスト選択部１１１に遷移すべく、ステップＳ１１に移行する。【００４８】
一方、未処理の対象のファイルが無いと判定した場合には（ステップＳ２０；Ｎｏ）、インデックス情報生成部１１３は、インデックス生成処理を終了する。【００４９】
［実施例１に係る検証装置の構成］
図９は、実施例１に係る検証装置の構成を示す機能ブロック図である。検証装置２００は、入力される検証ルール３１０を、項目および値により規定される変換抽出条件に変換し、入力データ３００より生成されたインデックス情報１２２を参照し、変換抽出条件に対応する項目および値の検証を行う。すなわち、検証装置２００は、インデックス情報１２２を用いて、入力される検証ルール３１０から得られる変換抽出条件に合致するＸＢＲＬデータを抽出する。【００５０】
ここでいう「変換抽出条件」とは、項目および値により規定される抽出条件が１つである場合には、抽出条件と一致するが、項目および値により規定される抽出条件が複数である場合には、複数の抽出条件を論理演算子で結合した条件のことをいう。【００５１】
ここでいう検証ルール３１０とは、ＸＢＲＬデータの内容の検証や計算を行うためのルールである。検証ルール３１０は、ＸＢＲＬフォーミュラを用いて記述される。ＸＢＲＬフォーミュラとは、ＸＢＲＬデータの内容の検証や計算を行うためのルールを定義する記述言語であり、検証ルール３１０を定義する。【００５２】
図１０は、検証ルールの構造の一例を示す図である。図１０に示すように、検証ルール３１０には、一例として、「変数」と、「変数個別の抽出条件」と、「変数共通の抽出条件」と、「検証式」とが定義される。「変数共通の抽出条件」は、検証ルール３１０内の全ての「変数個別の抽出条件」で定義される「変数」の共通の抽出条件である。ここでは、「変数」は、ａ１、ａ２、ａ３に対応する。「変数個別の抽出条件」は、ｂ１、ｂ２、ｂ３に対応する。「変数共通の抽出条件」は、ｃ０に対応する。「検証式」は、ｄ０に対応する。【００５３】
「変数共通の抽出条件」ｃ０により、入力データ３００の全体から検証ルール３１０で検証されるＸＢＲＬデータが絞り込まれる。さらに、「変数」ａ１では、「変数個別の抽出条件」ｂ１によりＸＢＲＬデータが絞り込まれ、「変数」ａ１に絞り込まれたＸＢＲＬデータが割り当てられる。「変数」ａ２では、同様に「変数個別の抽出条件」ｂ２によりＸＢＲＬデータが絞り込まれ、「変数」ａ２に絞り込まれたＸＢＲＬデータが割り当てられる。「変数」ａ３では、同様に「変数個別の抽出条件」ｂ３によりＸＢＲＬデータが絞り込まれ、「変数」ａ３に絞り込まれたＸＢＲＬデータが割り当てられる。そして、割り当てられたＸＢＲＬデータの組み合わせ毎に、「検証式」ｄ０が検証される。図１０の例では、「変数共通の抽出条件」ｃ０における１つ目の条件指定であるプロパティの項目名は、Ｄｉｍｅｎｓｉｏｎで定義されるプロパティである「ｄｉｍ：ＣＳ」であり、その項目値は、「ｍ：ｘ２６」である。２つ目の条件指定であるプロパティの項目名は、Ｄｉｍｅｎｓｉｏｎで定義されるプロパティである「ｄｉｍ：ＶＳ」であり、その項目値は、「ｍ：ｘ８０」である。３つ目の条件指定であるプロパティの項目名は、Ｄｉｍｅｎｓｉｏｎで定義されるプロパティである「ｄｉｍ：Ｄ０」であり、その項目値は、「ｍ：ｘ０」である。【００５４】
図９に示すように、検証装置２００は、制御部２１０および記憶部２２０を有する。【００５５】
記憶部２２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部２２０は、インデックス情報１２２およびコンテキスト位置情報１２３を有する。【００５６】
インデックス情報１２２は、入力データ３００に含まれるプロパティの項目名およびプロパティ値それぞれについて、プロパティの項目名およびプロパティ値それぞれの出現位置を表す情報である。すなわち、インデックス情報１２２とは、入力データ３００に含まれるプロパティの項目名およびプロパティ値について、それぞれ、オフセット（出現位置）ごとの存否をインデックス化したビットマップのことをいう。なお、インデックス情報１２２は、インデックス生成装置１００によって生成される情報であり、例えば、ネットワークを介して取得され、記憶部２２０に記憶される。【００５７】
コンテキスト位置情報１２３は、コンテキスト（Ｃｏｎｔｅｘｔ）に関連付けられるＸＢＲＬデータの情報である。なお、コンテキスト位置情報１２３は、インデックス生成装置１００によって生成される情報であり、例えば、ネットワークを介して取得され、記憶部２２０に記憶される。【００５８】
制御部２１０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部２１０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路の電子回路に対応する。または、制御部２１０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。制御部２１０は、抽出条件変換部２１１、データ抽出部２１２および抽出結果出力部２１３を有する。なお、抽出条件変換部２１１は、変換部の一例である。データ抽出部２１２は、検証部の一例である。【００５９】
抽出条件変換部２１１は、検証ルール３１０を入力し、入力した検証ルール３１０をプロパティの項目名およびプロパティの項目値により規定される変換抽出条件に変換する。例えば、抽出条件変換部２１１は、検証ルール３１０の「変数共通の抽出条件」を解釈し、プロパティの項目およびプロパティの項目値を抽出する。抽出条件変換部２１１は、抽出した結果、１組のプロパティの項目およびプロパティの項目値を１個の抽出条件として、１個または複数個の抽出条件から変換抽出条件を生成する。【００６０】
データ抽出部２１２は、インデックス情報１２２を参照し、抽出条件変換部２１１によって検証ルール３１０から変換された変換抽出条件に対応するＸＢＲＬデータを抽出する。【００６１】
例えば、データ抽出部２１２は、変換抽出条件から１個の抽出条件を選択する。データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。また、データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するビットマップをインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。そして、データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。【００６２】
抽出条件が１個である場合には、データ抽出部２１２は、ＡＮＤ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が設定されたビット区間を検出する。データ抽出部２１２は、検出したビット区間に対応するコンテキストを検出する。そして、データ抽出部２１２は、コンテキスト位置情報１２３を参照し、検出したコンテキストに関連付けられるＸＢＲＬデータを絞り込む。【００６３】
抽出条件が複数個である場合には、データ抽出部２１２は、それぞれの抽出条件に対して、ＡＮＤ結果を算出する。データ抽出部２１２は、複数の抽出条件に対するそれぞれのＡＮＤ結果をＯＲ演算する。データ抽出部２１２は、ＯＲ結果を参照し、変換抽出条件に含まれる複数の抽出条件を結合するために用いられる論理演算子に応じて該当するコンテキストを検出する。一例として、複数の抽出条件を結合する論理演算子がＡＮＤである場合には、データ抽出部２１２は、ＯＲ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が抽出条件の数分設定されたビット区間を検出する。そして、データ抽出部２１２は、抽出したビット区間に対応するコンテキストを検出する。複数の抽出条件を結合する論理演算子がＯＲである場合には、データ抽出部２１２は、ＯＲ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が１つ以上設定されたビット区間を検出する。そして、データ抽出部２１２は、抽出したビット区間に対応するコンテキストを検出する。そして、データ検出部２１２は、コンテキスト位置情報１２３を参照し、検出したコンテキストに関連付けられるＸＢＲＬデータを絞り込む。【００６４】
抽出結果出力部２１３は、データ抽出部２１２によって抽出されたＸＢＲＬデータを出力する。この後、検証装置２００は、出力されたＸＢＲＬデータを用いて、検証ルール３１０の検証式ｄ０を検証する。【００６５】
［抽出条件変換処理の一例］
ここで、抽出条件変換処理の一例を、図１１を参照して説明する。図１１は、実施例１に係る抽出条件変換処理の一例を示す図である。【００６６】
図１１に示すように、検証ルール３１０の「変数共通の抽出条件」には、３種のプロパティの条件が含まれる。すなわち、「変数共通の抽出条件」には、対象のＸＢＲＬデータが満たすべき３種のプロパティの条件が含まれる。【００６７】
抽出条件変換部２１１は、このような検証ルール３１０の「変数共通の抽出条件」を解釈し、プロパティの項目名およびプロパティの項目値をプロパティの条件（抽出条件）として抽出する。ここでは、プロパティの項目名として「ｄｉｍ：Ａ１」、プロパティの項目値として「ｍ：ｍ１」が抽出され、［ｄｉｍ：Ａ１、ｍ：ｍ１］が１つの抽出条件となる。プロパティの項目名として「ｄｉｍ：Ｂ１」、プロパティの項目値として「ｍ：ｍ２」が抽出され、［ｄｉｍ：Ｂ１、ｍ：ｍ２］が１つの抽出条件となる。プロパティの項目名として「ｄｉｍ：Ｃ１」、プロパティの項目値として「ｍ：ｍ３」が抽出され、［ｄｉｍ：Ｃ１、ｍ：ｍ３］が１つの抽出条件となる。【００６８】
抽出条件変換部２１１は、複数の抽出条件から変換抽出条件を生成する。ここでは、ＳＱＬ文で示されるコマンドを用いて変換抽出条件が生成されている。すなわち、変換抽出条件は、「（ｄｉｍ：Ａ１＝ｍ：ｍ１）  ａｎｄ  （ｄｉｍ：Ｂ１＝ｍ：ｍ２）  ａｎｄ  （ｄｉｍ：Ｃ１＝ｍ：ｍ３）」であり、抽出条件を結合する論理識別子がＡＮＤの場合である。【００６９】
［データ抽出処理の一例］
ここで、データ抽出処理の一例を、図１２を参照して説明する。図１２は、実施例１に係るデータ抽出処理の一例を示す図である。なお、図１２で示すデータ抽出処理は、１個のプロパティを持つＸＢＲＬデータを抽出する場合である。ここでは、変換抽出条件は、「ｄｉｍ：Ａ１＝ｍ：ｍ１」であるとする。【００７０】
データ抽出部２１２は、変換抽出条件から１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ａ１＝ｍ：ｍ１」が選択される。【００７１】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ａ１」に対応するビットマップを抽出する（ｓ１）。【００７２】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ１」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ２）。【００７３】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ａ１」に対応するビットマップと「ｍ：ｍ１」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ３）。【００７４】
抽出条件が１個である場合であるので、データ抽出部２１２は、ＡＮＤ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する（ｓ４）。ここでは、コンテキスト１およびコンテキスト１０が検出される。【００７５】
データ抽出部２１２は、コンテキスト位置情報１２３を参照し、検出したコンテキストを含むＸＢＲＬデータを絞り込む（ｓ５）。ここでは、コンテキスト位置情報１２３が図５に示される内容であるとすると、コンテキスト１は、データ３とデータ１０に関連付けられる。コンテキスト１０は、データ１３に関連付けられる。したがって、データ３、データ１０およびデータ１３がＸＢＲＬデータとして絞り込まれる。【００７６】
［データ抽出処理の別の例］
ここで、データ抽出処理の別の例を、図１３を参照して説明する。図１３は、実施例１に係るデータ抽出処理の別の例を示す図である。なお、図１３で示すデータ抽出処理は、複数のプロパティのいずれも持つＸＢＲＬデータを抽出する場合である。ここでは、変換抽出条件は、「（ｄｉｍ：Ａ１＝ｍ：ｍ１）  ａｎｄ  （ｄｉｍ：Ｂ１＝ｍ：ｍ２）  ａｎｄ  （ｄｉｍ：Ｃ１＝ｍ：ｍ３）」であるとする。【００７７】
データ抽出部２１２は、変換抽出条件から１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ａ１＝ｍ：ｍ１」が選択される。【００７８】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ａ１」に対応するビットマップを抽出する（ｓ１０）。【００７９】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ１」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ１１）。【００８０】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ａ１」に対応するビットマップと「ｍ：ｍ１」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ１２）。【００８１】
データ抽出部２１２は、変換抽出条件から次の１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｂ１＝ｍ：ｍ２」が選択される。【００８２】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｂ１」に対応するビットマップを抽出する（ｓ１３）。【００８３】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ２」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ１４）。【００８４】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｂ１」に対応するビットマップと「ｍ：ｍ２」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ１５）。【００８５】
データ抽出部２１２は、変換抽出条件から次の１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｃ１＝ｍ：ｍ３」が選択される。【００８６】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｃ１」に対応するビットマップを抽出する（ｓ１６）。【００８７】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ３」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ１７）。【００８８】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｃ１」に対応するビットマップと「ｍ：ｍ３」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ１８）。【００８９】
抽出条件が複数個である場合であるので、データ抽出部２１２は、複数の抽出条件に対するそれぞれのＡＮＤ結果をＯＲ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ａ１」のプロパティのＡＮＤ結果、「ｄｉｍ：Ｂ１」のプロパティのＡＮＤ結果および「ｄｉｍ：Ｃ１」のプロパティのＡＮＤ結果をＯＲ演算する（ｓ１９）。【００９０】
抽出条件を結合する論理識別子はＡＮＤの場合であるので、データ抽出部２１２は、以下の処理を行う。すなわち、データ抽出部２１２は、ＯＲ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が抽出条件の数分設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。ここでは、抽出条件の数は３であるので、抽出条件の数分「１」が設定されたビット区間であるコンテキスト１が検出される（ｓ２０）。【００９１】
この後、データ抽出部２１２は、コンテキスト位置情報１２３を参照し、検出したコンテキストに関連付けられるＸＢＲＬデータを絞り込む。【００９２】
［データ抽出処理のさらに別の例］
ここで、データ抽出処理のさらに別の例を、図１４を参照して説明する。図１４は、実施例１に係るデータ抽出処理のさらに別の例を示す図である。なお、図１４で示すデータ抽出処理は、複数のプロパティのうちいずれかを持つＸＢＲＬデータを抽出する場合である。ここでは、変換抽出条件は、「（ｄｉｍ：Ｂ１＝ｍ：ｍ１）  ｏｒ  （ｄｉｍ：Ｂ１＝ｍ：ｍ２）  ｏｒ  （ｄｉｍ：Ｂ１＝ｍ：ｍ３）」であるとする。【００９３】
データ抽出部２１２は、変換抽出条件から１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｂ１＝ｍ：ｍ１」が選択される。【００９４】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｂ１」に対応するビットマップを抽出する（ｓ３０）。【００９５】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ１」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ３１）。【００９６】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｂ１」に対応するビットマップと「ｍ：ｍ１」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ３２）。【００９７】
データ抽出部２１２は、変換抽出条件から次の１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｂ１＝ｍ：ｍ２」が選択される。【００９８】
データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｂ１」に対応するビットマップを既に抽出したので（ｓ３０）、この処理を省略する。【００９９】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ２」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ３３）。【０１００】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｂ１」に対応するビットマップと「ｍ：ｍ２」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ３４）。【０１０１】
データ抽出部２１２は、変換抽出条件から次の１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｂ１＝ｍ：ｍ３」が選択される。【０１０２】
データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｂ１」に対応するビットマップを既に抽出したので（ｓ３０）、この処理を省略する。【０１０３】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出し、抽出したビットマップを１ビットだけ左シフトする。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ３」に対応するビットマップを抽出し、１ビットだけ左シフトする（ｓ３５）。【０１０４】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｂ１」に対応するビットマップと「ｍ：ｍ３」に対応するシフトしたビットマップとをＡＮＤ演算する（ｓ３６）。【０１０５】
抽出条件が複数個である場合であるので、データ抽出部２１２は、複数の抽出条件に対するそれぞれのＡＮＤ結果をＯＲ演算する。ここでは、データ抽出部２１２は、３個の「ｄｉｍ：Ｂ１」のプロパティのＡＮＤ結果をＯＲ演算する（ｓ３７）。【０１０６】
抽出条件を結合する論理識別子がＯＲの場合であるので、データ抽出部２１２は、以下の処理を行う。すなわち、データ抽出部２１２は、ＯＲ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が１つ以上設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。ここでは、「１」が１つ以上設定されたビット区間であるコンテキスト１、コンテキスト１００が検出される（ｓ３８）。【０１０７】
この後、データ抽出部２１２は、コンテキスト位置情報１２３を参照し、検出したコンテキストに関連付けられるＸＢＲＬデータを絞り込む。【０１０８】
［検証処理のフローチャート］
図１５は、実施例１に係る検証処理のフローチャートを示す図である。なお、図１５では、ＸＢＲＬデータを「データ」というものとする。【０１０９】
図１５に示すように、抽出条件変換部２１１は、検証ルール３１０を受け取ったか否かを判定する（ステップＳ２１）。検証ルール３１０を受け取っていないと判定した場合には（ステップＳ２１；Ｎｏ）、抽出条件変換部２１１は、検証ルール３１０を受け取るまで、判定処理を繰り返す。【０１１０】
一方、検証ルール３１０を受け取ったと判定した場合には（ステップＳ２１；Ｙｅｓ）、抽出条件変換部２１１は、検証ルール３１０を１個又は複数の抽出条件を含む変換抽出条件に変換する（ステップＳ２２）。例えば、抽出条件変換部２１１は、検証ルール３１０の「変数共通の抽出条件」を解釈し、プロパティの項目名およびプロパティの項目値を抽出する。抽出条件変換部２１１は、抽出した結果、１組のプロパティの項目名およびプロパティの項目値を１個の抽出条件として、１個または複数個の抽出条件から変換抽出条件を生成する。【０１１１】
続いて、データ抽出部２１２は、変換抽出条件から１個の抽出条件を選択する（ステップＳ２３）。そして、データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名とプロパティの項目値に対応するそれぞれのインデックスを抽出する（ステップＳ２４）。【０１１２】
データ抽出部２１２は、プロパティの項目値に対するインデックスを１ビットだけ左シフトする（ステップＳ２５）。そして、データ抽出部２１２は、プロパティの項目名に対するインデックスとプロパティの項目値に対するインデックスとをＡＮＤ演算する（ステップＳ２６）。【０１１３】
そして、データ抽出部２１２は、変換抽出条件に、未処理の抽出条件が存在するか否かを判定する（ステップＳ２７）。未処理の抽出条件が存在すると判定した場合には（ステップＳ２７；Ｙｅｓ）、データ抽出部２１２は、次の抽出条件を選択すべく、ステップＳ２３に移行する。【０１１４】
一方、未処理の抽出条件が存在しないと判定した場合には（ステップＳ２７；Ｎｏ）、データ抽出部２１２は、変換抽出条件に含まれる抽出条件の数が複数であるか否かを判定する（ステップＳ２８）。抽出条件の数が複数でないと判定した場合には（ステップＳ２８；Ｎｏ）、データ抽出部２１２は、ステップＳ３０に移行する。【０１１５】
一方、抽出条件の数が複数であると判定した場合には（ステップＳ２８；Ｙｅｓ）、データ抽出部２１２は、プロパティごとにＡＮＤ演算した複数のＡＮＤ結果をＯＲ演算する（ステップＳ２９）。そして、データ抽出部２１２は、ステップＳ３０に移行する。【０１１６】
ステップＳ３０において、データ抽出部２１２は、演算結果に基づいて、変換抽出条件に合致するコンテキストを検出する（ステップＳ３０）。例えば、データ抽出部２１２は、抽出条件が１個である場合には、ＡＮＤ結果のインデックスについて、各コンテキストに対応するビット区間に「１」が設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。データ抽出部２１２は、抽出条件が複数個である場合には、ＯＲ結果のインデックスについて、変換抽出条件に含まれる複数の抽出条件を結合するために用いられる論理演算子に応じて該当するコンテキストを検出する。【０１１７】
そして、データ抽出部２１２は、コンテキスト位置情報１２３を用いて、検出したコンテキストに関連付けられるデータを抽出する（ステップＳ３１）。この後、検証装置２００は、抽出されたデータを用いて、検証ルール３１０の検証式ｄ０を検証する。そして、データ抽出部２１２は、検証処理を終了する。【０１１８】
［実施例１の効果］
上記実施例１によれば、検証装置２００は、入力された検証ルール３１０を、項目および値により規定される変換抽出条件に変換する。検証装置２００は、入力データ３００より生成された、入力データ３００に含まれる項目および値それぞれについての出現位置に関するインデックス情報１２２を参照し、変換抽出条件に対応する項目および値の検証を行う。かかる構成によれば、検証装置２００は、項目および値それぞれについての出現位置に関するインデックス情報１２２を用いることで項目および値による複数の条件でデータを抽出することが可能となる。この結果、検証装置２００は、項目および値による複数の条件であっても、データの抽出に関する演算量を抑制し、高速にデータを抽出することが可能となる。【０１１９】
また、上記実施例１によれば、検証装置２００は、インデックス情報１２２を参照し、変換抽出条件に含まれる項目および値に対応するそれぞれのインデックスを取得する。検証装置２００は、取得した値に対応するインデックスを１ビット分左シフトする。検証装置２００は、項目に対応するインデックスと値に対応するシフトした結果のインデックスとの論理演算により、変換抽出条件に対応する項目および値の検証を行う。かかる構成によれば、検証装置２００は、インデックス情報１２２について論理演算を用いることで、項目および値による変換抽出条件に合致するデータを抽出することができる。【０１２０】
また、上記実施例１によれば、検証装置２００は、変換抽出条件に項目および値の組が複数存在する場合には、各組に含まれる項目に対応するインデックスと同一の組に含まれる値に対応するシフトした結果のインデックスとをＡＮＤ演算する。検証装置２００は、各組のＡＮＤ演算結果をＯＲ演算する。検証装置２００は、ＯＲ演算結果を用いて変換抽出条件に対応する項目および値の検証を行う。かかる構成によれば、検証装置２００は、インデックス情報１２２について論理演算を用いることで、項目および値による複数の条件に合致するデータを抽出することができる。【０１２１】
また、上記実施例１によれば、インデックス生成装置１００は、項目および値の組み合わせにより記述された入力データ３００を入力する。インデックス生成装置１００は、入力データ３００に含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報１２２を生成する。かかる構成によれば、インデックス生成装置１００は、入力データ３００に含まれる項目および値それぞれについてインデックス情報１２２を生成することで、効率的なインデックス情報１２２を生成することができる。また、インデックス生成装置１００は、入力データ３００に含まれる項目および値の組み合わせでなく、項目および値それぞれについてインデックス情報１２２を生成することで、インデックスのサイズ爆発を抑制できる。また、インデックス生成装置１００は、項目および値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ３００に新たな値が有ったとしても、インデックス情報１２２の値の領域に１行追加するだけで、同様に、インデックス情報１２２を生成することができる。インデックス生成装置１００は、項目名および値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ３００に新たな項目名が有ったとしても、インデックス情報１２２の項目の領域に１行追加するだけで、同様に、インデックス情報１２２を生成することができる。
【実施例２】
【０１２２】
ところで、実施例１に係るインデックス生成装置１００は、入力データ３００に含まれる項目および値それぞれの出現位置に関するインデックス情報１２２を生成すると説明した。しかしながら、インデックス生成装置１００は、これに限定されず、入力データ３００に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成しても良い。【０１２３】
そこで、実施例２では、インデックス生成装置１００が、入力データ３００に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成する場合を説明する。【０１２４】
ここで、実施例２に係るインデックス情報１２２Ａの一例を、図１６を参照して説明する。図１６は、実施例２に係るインデックス情報の一例を示す図である。図１６に示すように、インデックス情報１２２ＡのＸ軸はコンテキストごとの出現位置を表し、Ｙ軸はプロパティ名とプロパティ値とを表す。また、インデックス情報１２２Ａは、プロパティ名のインデックス情報の領域と、プロパティ値のインデックス情報の領域を有する。プロパティ名のインデックス情報は、それぞれのプロパティの項目名について、コンテキスト（Ｃｏｎｔｅｘｔ）内の出現位置に関するインデックスの束の情報である。また、プロパティ値のインデックス情報は、それぞれのプロパティの項目値について、コンテキスト（Ｃｏｎｔｅｘｔ）内の出現位置に関するインデックスの束の情報である。プロパティの項目値についての出現位置は、当該プロパティの項目値と同一の組のプロパティの項目名と同じとする。各プロパティ名および各プロパティ値について、コンテキスト内に出現する出現位置には、ＯＮすなわち２進数の「１」が設定される。一例として、プロパティ名として「ｄｉｍ：Ａ１」、プロパティ値として「ｍ：ｍ１」が同一の組であるとする。このプロパティ名の出現位置がＣｏｎｔｅｘｔ１内の２番目である場合に、Ｃｏｎｔｅｘｔ１内の２番目に「１」が設定される。このプロパティ値の出現位置は、同じ組のプロパティ名と同じ出現位置であるＣｏｎｔｅｘｔ１内の２番目に「１」が設定される。【０１２５】
［インデックス生成処理の一例］
ここで、インデックス生成処理の一例を、図１７を参照して説明する。図１７は、実施例２に係るインデックス生成処理の一例を示す図である。なお、図１７では、コンテキスト選択部１１１が、コンテキストとして「Ｃｏｎｔｅｘｔ１」を選択した場合について説明する。【０１２６】
すると、コンテキスト解析部１１２は、コンテキストとして選択された「Ｃｏｎｔｅｘｔ１」を字句解析する。一例として、コンテキスト解析部１１２は、特定の要素（xbrldi:explicitMember）の行に含まれるプロパティの項目名およびプロパティの項目値の組を検知する。ここでは、符号ｒ１で示される行には、プロパティの項目名として「ｄｉｍ：Ｂ１」、プロパティの項目値として「ｍ：ｍ２」の組が検知される。また、符号ｒ２で示される行には、プロパティの項目名として「ｄｉｍ：Ａ１」、プロパティの項目値として「ｍ：ｍ１」の組が検知される。符号ｒ３で示される行には、プロパティの項目名として「ｄｉｍ：Ｃ１」、プロパティの項目値として「ｍ：ｍ３」の組が検知される。【０１２７】
そして、コンテキスト解析部１１２は、プロパティの項目名およびプロパティの項目値の組を出現順に一時領域に保持する。プロパティの項目値についての出現位置は、当該プロパティの項目値と同一の組のプロパティの項目名と同じとする。ここでは、コンテキスト解析部１１２は、符号ｒ１で示される行で検知した組の出現順に応じて、１番目の一時領域に「ｄｉｍ：Ｂ１」および「ｍ：ｍ２」を保持する。コンテキスト解析部１１２は、符号ｒ２で示される行で検知した組の出現順に応じて、２番目の一時領域に「ｄｉｍ：Ａ１」および「ｍ：ｍ１」を保持する。コンテキスト解析部１１２は、符号ｒ３で示される行で検知した組の出現順に応じて、３番目の一時領域に「ｄｉｍ：Ｃ１」および「ｍ：ｍ３」を保持する。【０１２８】
そして、インデックス情報生成部１１３は、「Ｃｏｎｔｅｘｔ１」について、一時領域に保持された組に含まれるプロパティの項目名に対して、当該プロパティの項目名の出現位置にビットを立てる。インデックス情報生成部１１３は、「Ｃｏｎｔｅｘｔ１」について、一時領域に保持された組に含まれるプロパティの項目値に対して、当該プロパティの項目値の出現位置にビットを立てる。ここでは、インデックス情報生成部１１３は、プロパティの項目名「ｄｉｍ：Ｂ１」に対して、１番目の出現位置にビット「１」を設定する（ｅ１’）。インデックス情報生成部１１３は、プロパティの項目値「ｍ：ｍ２」に対して、１番目の出現位置にビット「１」を設定する（ｅ２’）。インデックス情報生成部１１３は、プロパティの項目名「ｄｉｍ：Ａ１」に対して、２番目の出現位置にビット「１」を設定する（ｅ３’）。インデックス情報生成部１１３は、プロパティの項目値「ｍ：ｍ１」に対して、２番目の出現位置にビット「１」を設定する（ｅ４’）。インデックス情報生成部１１３は、プロパティの項目名「ｄｉｍ：Ｃ１」に対して、３番目の出現位置にビット「１」を設定する（ｅ５’）。インデックス情報生成部１１３は、プロパティの項目値「ｍ：ｍ３」に対して、３番目の出現位置にビット「１」を設定する（ｅ６’）。【０１２９】
［データ抽出処理の一例］
ここで、データ抽出処理の一例を、図１８を参照して説明する。図１８は、実施例２に係るデータ抽出処理の一例を示す図である。なお、図１８で示すデータ抽出処理は、複数のプロパティのいずれも持つＸＢＲＬデータを抽出する場合である。ここでは、変換抽出条件は、「（ｄｉｍ：Ａ１＝ｍ：ｍ１）  ａｎｄ  （ｄｉｍ：Ｂ１＝ｍ：ｍ２）  ａｎｄ  （ｄｉｍ：Ｃ１＝ｍ：ｍ３）」であるとする。【０１３０】
データ抽出部２１２は、変換抽出条件から１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ａ１＝ｍ：ｍ１」が選択される。【０１３１】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ａ１」に対応するビットマップを抽出する（ｓ４０）。【０１３２】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ１」に対応するビットマップを抽出する（ｓ４１）。【０１３３】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ａ１」に対応するビットマップと「ｍ：ｍ１」に対応するビットマップとをＡＮＤ演算する（ｓ４２）。【０１３４】
データ抽出部２１２は、変換抽出条件から次の１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｂ１＝ｍ：ｍ２」が選択される。【０１３５】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｂ１」に対応するビットマップを抽出する（ｓ４３）。【０１３６】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ２」に対応するビットマップを抽出する（ｓ４４）。【０１３７】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｂ１」に対応するビットマップと「ｍ：ｍ２」に対応するビットマップとをＡＮＤ演算する（ｓ４５）。【０１３８】
データ抽出部２１２は、変換抽出条件から次の１個の抽出条件を選択する。ここでは、抽出条件として「ｄｉｍ：Ｃ１＝ｍ：ｍ３」が選択される。【０１３９】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目名「ｄｉｍ：Ｃ１」に対応するビットマップを抽出する（ｓ４６）。【０１４０】
データ抽出部２１２は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス（ビットマップ）をインデックス情報１２２から抽出する。ここでは、データ抽出部２１２は、プロパティの項目値「ｍ：ｍ３」に対応するビットマップを抽出する（ｓ４７）。【０１４１】
データ抽出部２１２は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するビットマップとをＡＮＤ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ｃ１」に対応するビットマップと「ｍ：ｍ３」に対応するビットマップとをＡＮＤ演算する（ｓ４８）。【０１４２】
抽出条件が複数個である場合であるので、データ抽出部２１２は、複数の抽出条件に対するそれぞれのＡＮＤ結果をＯＲ演算する。ここでは、データ抽出部２１２は、「ｄｉｍ：Ａ１」のプロパティのＡＮＤ結果、「ｄｉｍ：Ｂ１」のプロパティのＡＮＤ結果および「ｄｉｍ：Ｃ１」のプロパティのＡＮＤ結果をＯＲ演算する（ｓ４９）。【０１４３】
抽出条件を結合する論理識別子がＡＮＤの場合であるので、データ抽出部２１２は、以下の処理を行う。すなわち、データ抽出部２１２は、ＯＲ結果のビットマップについて、各コンテキストに対応するビット区間に「１」が抽出条件の数分設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。ここでは、抽出条件の数は３であるので、抽出条件の数分「１」が設定されたビット区間であるコンテキスト１が検出される（ｓ５０）。【０１４４】
この後、データ抽出部２１２は、コンテキスト位置情報１２３を参照し、検出したコンテキストに関連付けられるＸＢＲＬデータを絞り込む。【０１４５】
［実施例２の効果］
上記実施例２によれば、検証装置２００は、出現位置に関するインデックス情報１２２Ａを参照し、変換抽出条件に含まれる項目および値に対応するそれぞれのインデックスを取得する。検証装置２００は、取得した項目に対応するインデックスと取得した値に対応するインデックスとの論理演算により、変換抽出条件に対応する項目および値の検証を行う。インデックス情報１２２Ａは、入力データ３００に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とするインデックス情報である。かかる構成によれば、検証装置２００は、項目および値それぞれについての出現位置に関するインデックス情報１２２Ａを用いて項目および値による複数の条件でデータを抽出することが可能となる。【０１４６】
また、上記実施例２によれば、インデックス生成装置１００は、入力データ３００に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報１２２Ａを生成する。かかる構成によれば、インデックス生成装置１００は、インデックス情報１２２Ａを生成する際に、項目および値の組について、同一の組の値を項目と同じ出現位置とすることで、インデックスのサイズ爆発をさらに抑制することができる。【０１４７】
［その他］
なお、実施例では、インデックス生成処理をインデックス生成装置１００により実現し、検証処理を検証装置２００により実現すると説明した。しかしながら、１つの情報処理装置が、インデックス生成処理および検証処理を実現しても良い。【０１４８】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、インデックス情報生成部１１３を、プロパティ名およびプロパティ値をインデックス情報１２２に設定する設定部と、プロパティ名およびプロパティ値の出現位置に応じてインデックス情報１２２にビットを立てる生成部とに分離しても良い。また、データ抽出部２１２および抽出結果出力部２１３を併合しても良い。また、記憶部１２０をインデックス生成装置１００の外部装置としてネットワーク経由で接続するようにしても良い。記憶部２２０を検証装置２００の外部装置としてネットワーク経由で接続するようにしても良い。【０１４９】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１に示したインデックス生成装置１００と同様の機能を実現するインデックス生成プログラムおよび図９に示した検証装置２００と同様の機能を実現する検証プログラムを実行するコンピュータの一例を説明する。図１９は、インデックス生成プログラムおよび検証プログラムを実行するコンピュータの一例を示す図である。【０１５０】
図１９に示すように、コンピュータ５００は、各種演算処理を実行するＣＰＵ５０３と、ユーザからのデータの入力を受け付ける入力装置５１５と、表示装置５０９を制御する表示制御部５０７とを有する。また、コンピュータ５００は、記憶媒体からプログラムなどを読取るドライブ装置５１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部５１７とを有する。また、コンピュータ５００は、各種情報を一時記憶するメモリ５０１と、ＨＤＤ５０５を有する。そして、メモリ５０１、ＣＰＵ５０３、ＨＤＤ５０５、表示制御部５０７、ドライブ装置５１３、入力装置５１５、通信制御部５１７は、バス５１９で接続されている。【０１５１】
ドライブ装置５１３は、例えばリムーバブルディスク５１１用の装置である。ＨＤＤ２０５は、検証プログラム５０５ａ、インデックス生成プログラム５０５ｂおよび処理関連情報５０５ｃを記憶する。【０１５２】
ＣＰＵ５０３は、検証プログラム５０５ａを読み出して、メモリ５０１に展開し、プロセスとして実行する。かかるプロセスは、検証装置２００の各機能部に対応する。ＣＰＵ５０３は、インデックス生成プログラム５０５ｂを読み出して、メモリ５０１に展開し、プロセスとして実行する。かかるプロセスは、インデックス生成装置１００の各機能部に対応する。処理関連情報５０５ｃは、プロパティ定義情報１２１、インデックス情報１２２およびコンテキスト位置情報１２３に対応する。そして、例えばリムーバブルディスク５１１が、検証プログラム５０５ａ、インデックス生成プログラム５０５ｂなどの各情報を記憶する。【０１５３】
なお、検証プログラム５０５ａおよびインデックス生成プログラム５０５ｂについては、必ずしも最初からＨＤＤ５０５に記憶させておかなくても良い。例えば、コンピュータ５００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ５００がこれらから検証プログラム５０５ａおよびインデックス生成プログラム５０５ｂを読み出して実行するようにしても良い。
【符号の説明】
【０１５４】
１００  インデックス生成装置
１１１  コンテキスト選択部
１１２  コンテキスト解析部
１１３  インデックス情報生成部
１２１  プロパティ定義情報
１２２  インデックス情報
１２３  コンテキスト位置情報
２００  検証装置
２１０  制御部
２１１  抽出条件変換部
２１２  データ抽出部
２１３  抽出結果出力部
２２０  記憶部
３００  入力データ
３１０  検証ルール
【図１】
2018096686.tif 000003
【図２】
2018096686.tif 000004
【図３】
2018096686.tif 000005
【図４】
2018096686.tif 000006
【図５】
2018096686.tif 000007
【図６】
2018096686.tif 000008
【図７】
2018096686.tif 000009
【図８】
2018096686.tif 000010
【図９】
2018096686.tif 000011
【図１０】
2018096686.tif 000012
【図１１】
2018096686.tif 000013
【図１２】
2018096686.tif 000014
【図１３】
2018096686.tif 000015
【図１４】
2018096686.tif 000016
【図１５】
2018096686.tif 000017
【図１６】
2018096686.tif 000018
【図１７】
2018096686.tif 000019
【図１８】
2018096686.tif 000020
【図１９】
2018096686.tif 000021
【図２０】
2018096686.tif 000022
【手続補正書】
【提出日】平成31年3月28日(2019.3.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
入力された検証条件を、項目および値により規定される変換検証条件に変換し、
対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記値に対応するインデックスを１ビット分左シフトし、前記項目に対応するインデックスと前記値に対応するシフトした結果のインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる検証プログラム。
【請求項２】
前記検証を行う処理は、前記変換検証条件に項目および値の組が複数存在する場合には、各組に含まれる項目に対応するインデックスと同一の組に含まれる値に対応するシフトした結果のインデックスとをＡＮＤ演算し、各組のＡＮＤ演算結果をＯＲ演算し、ＯＲ演算結果を用いて前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる請求項１に記載の検証プログラム。
【請求項３】
前記インデックス情報は、前記対象データに含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報であり、
前記検証を行う処理は、前記インデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記項目に対応するインデックスと取得した前記値に対応するインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
処理を実行させる請求項１に記載の検証プログラム。
【請求項４】
入力された検証条件を、項目および値により規定される変換検証条件に変換する変換部と、
対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記値に対応するインデックスを１ビット分左シフトし、前記項目に対応するインデックスと前記値に対応するシフトした結果のインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う検証部と、
を有することを特徴とする検証装置。
【請求項５】
コンピュータが、
入力された検証条件を、項目および値により規定される変換検証条件に変換し、
対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記値に対応するインデックスを１ビット分左シフトし、前記項目に対応するインデックスと前記値に対応するシフトした結果のインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
各処理を実行することを特徴とする検証方法。
【請求項６】
コンピュータに、
項目および値の組み合わせにより記述されたデータを入力し、
前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する
処理を実行させるインデックス生成プログラム。
【請求項７】
前記生成する処理は、前記データに含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成する
処理を実行させる請求項６に記載のインデックス生成プログラム。
【請求項８】
項目および値の組み合わせにより記述されたデータを入力する入力部と、
前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する生成部と、
を有することを特徴とするインデックス生成装置。
【請求項９】
コンピュータが、
項目および値の組み合わせにより記述されたデータを入力し、
前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する
各処理を実行することを特徴とするインデックス生成方法。
【国際調査報告】
2018096686.tif 000023
2018096686.tif 000024