JPWO2018096686A1 - 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法 - Google Patents

検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法 Download PDF

Info

Publication number
JPWO2018096686A1
JPWO2018096686A1 JP2018552379A JP2018552379A JPWO2018096686A1 JP WO2018096686 A1 JPWO2018096686 A1 JP WO2018096686A1 JP 2018552379 A JP2018552379 A JP 2018552379A JP 2018552379 A JP2018552379 A JP 2018552379A JP WO2018096686 A1 JPWO2018096686 A1 JP WO2018096686A1
Authority
JP
Japan
Prior art keywords
item
value
data
index
property
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018552379A
Other languages
English (en)
Other versions
JP6900956B2 (ja
Inventor
奥村 仁
仁 奥村
貴英 村本
貴英 村本
片岡 正弘
正弘 片岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2018096686A1 publication Critical patent/JPWO2018096686A1/ja
Application granted granted Critical
Publication of JP6900956B2 publication Critical patent/JP6900956B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)

Abstract

検証装置200が、入力された検証ルール310を、項目および値により規定される変換検証条件に変換する。検証装置200は、入力データ300より生成された、入力データ300に含まれる項目および値それぞれについての出現位置に関するインデックス情報122を参照し、変換検証条件に対応する項目および値の検証を行うこととしたので、入力データ300から該当するデータを高速に抽出することができる。

Description

本発明は、検証プログラムなどに関する。
世界各国で、XBRL(eXtensible Business Reporting Language)文書による財務情報の報告が行われている。XBRLとは、各種財務報告用の情報を作成、流通、利用できるように標準化されたXMLベースの言語である。XBRL文書とは、例えば財務会計報告に関して、XBRL等のXMLで記述された文書である。
XBRLで記述されたデータを抽出する抽出条件は、例えば、項目(プロパティ名)と値による個別条件を複数組み合わせた形で規定される。
XBRLで記述されたデータを抽出する方法の開示例について説明する(例えば、特許文献1参照)。抽出装置は、抽出条件における複数の個別条件それぞれについて、抽出データの該当数を予め取得しておき、取得した複数の個別条件それぞれについての該当数に基づき複数の個別条件の適用順序を決定する。そして、抽出装置は、決定した適用順序に応じて抽出条件を適用し、入力データからXBRLスキーマを参照し、該当するデータを抽出する。複数の個別条件の適用順序を決定するのは、適用する個別条件の順番が異なると、演算量が大きくなる場合があるからである。
また、個別条件が項目と値との組み合わせとなる開示では(例えば、特許文献2参照)、項目と値との組に対して、位置をインデックス化し、生成したインデックス情報を用いて複数の個別条件でデータを抽出することも考えられる。
国際公開第2016/132550号 特開2001−265773号公報
ところで、XBRLスキーマをもとに、該当データを抽出する場合、演算量が問題となる場合がある。例えば、XBRLスキーマを参照し、入力データを先頭から、XBRLタグで該当データを抽出する従来の方法では、複数の個別条件の関係によっては、適用順序の決定が適切でない。例えば、複数の個別条件それぞれについて、抽出データの該当数が全て大きい場合である。かかる場合には、該当数による適用順序の決定が適切でない場合に相当し、演算量が大きくなる。また、適用順序の決定のためには、そもそも、予め、該当数を取得する演算が必要となる。
一方、項目と値との組に対して、位置をインデックス化し、生成したインデックス情報を用いて複数の個別条件でデータを抽出する場合について、かかるインデックス情報の参考例を、図20を参照して説明する。
図20は、インデックス情報の参考例を示す図である。図20に示すように、インデックス情報900は、プロパティ名(項目名)と値との組に対するビット列であって組に対する入力データ内の各データ位置での存否を示すビットを連結したビット列である。インデックス情報900のX軸はデータ位置を表し、Y軸はプロパティ名および値の組を表す。プロパティ名および値が入力データ内のあるデータ位置に存在しない場合には、データ位置の存否としてOFF、すなわち2進数の「0」が設定される。プロパティ名および値が入力データ内のあるデータ位置に存在する場合には、データ位置の存否としてON、すなわち2進数の「1」が設定される。ここでは、一例として、プロパティ名が「P1」、値が「Val1」である場合に、データ1の存否として「1」が設定され、データ100000の存否として「0」が設定されている。
しかしながら、入力データ内の項目と値との組み合わせの数は非常に多くなるため、項目と値との組み合わせに対するインデックス情報を生成することが難しいという問題がある。また、項目と値との組み合わせに対するインデックス情報を用いて複数の個別条件でデータを抽出することが難しいという問題がある。
1つの側面では、XBRLで記述されたデータを抽出する際、項目と値に対するインデックス情報を用いて項目と値による複数の条件でデータを抽出することを目的とする。
第1の案では、コンピュータに、入力された検証条件を、項目および値により規定される変換検証条件に変換し、対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う、処理を実行させる。
一つの態様によれば、XBRLで記述されたデータを抽出する際、項目と値に対するインデックス情報を用いて項目と値による複数の条件でデータを抽出することができる。
図1は、実施例1に係るインデックス生成装置の構成を示す機能ブロック図である。 図2は、XBRLデータの一例を示す図である。 図3は、プロパティ定義情報の一例を示す図である。 図4は、実施例1に係るインデックス情報の一例を示す図である。 図5は、実施例1に係るコンテキスト位置情報の一例を示す図である。 図6は、実施例1に係るインデックス生成処理の一例を示す図である。 図7は、実施例1に係るインデックス情報の具体例を示す図である。 図8は、実施例1に係るインデックス生成処理のフローチャートを示す図である。 図9は、実施例1に係る検証装置の構成を示す機能ブロック図である。 図10は、検証ルールの構造の一例を示す図である。 図11は、実施例1に係る抽出条件変換処理の一例を示す図である。 図12は、実施例1に係るデータ抽出処理の一例を示す図である。 図13は、実施例1に係るデータ抽出処理の別の例を示す図である。 図14は、実施例1に係るデータ抽出処理のさらに別の例を示す図である。 図15は、実施例1に係る検証処理のフローチャートを示す図である。 図16は、実施例2に係るインデックス情報の一例を示す図である。 図17は、実施例2に係るインデックス生成処理の一例を示す図である。 図18は、実施例2に係るデータ抽出処理の一例を示す図である。 図19は、インデックス生成装置および検証装置のハードウェア構成の一例を示す図である。 図20は、インデックス情報の参考例を示す図である。
以下に、本願の開示する検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[実施例1に係るインデックス生成装置の構成]
図1は、実施例1に係るインデックス生成装置の構成を示す機能ブロック図である。インデックス生成装置100は、入力データ300を入力し、入力データ300に含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報を生成する。この生成されたインデックス情報を用いて、後述する検証装置200は、入力される後述する検証ルール310から得られる抽出条件に合致するXBRLデータを抽出する。
ここでいう「XBRLデータ」とは、XBRLで記述されたデータである。XBRLとは、各種財務報告用の情報を作成、流通、利用できるように標準化されたXMLベースの言語である。XBRLデータの一例として、財務データが挙げられる。XBRLデータはデータ値と、データ値を補足する付加情報とからなる。付加情報のことをアスペクトという場合がある。付加情報は、データ値を含む要素と関連付けられる、別の独立した要素で指定される情報であり、プロパティの項目名とプロパティの項目値とを1組とした複数のプロパティの情報から構成される。なお、実施例では、XBRLデータを単にデータという場合があったり、データ値という場合があったりする。また、実施例では、XBRLデータのデータ値に関連付けられる付加情報を含む要素である「コンテキスト(Context)」を主に説明する。
図2は、XBRLデータの一例を示す図である。図2に示すように、1つのXBRLデータは、データ値と、データ値を補足する付加情報からなる。付加情報は、名前がcontextとunitである要素に複数定義されるが、ここでは、それぞれを区別するための識別子として、「context_1」、「JPY」が付与されている。データ値を補足する付加情報として、「context_1」に対応する付加情報と、「JPY」に対応する付加情報が定義されている。そして、例えば、「context_1」に対応する付加情報には、プロパティの項目名として「dim:A1」、プロパティの項目値として「A:x1」を1組とするプロパティの情報が定義されている。プロパティの項目名として「dim:B1」、プロパティの項目値として「B:x1」を1組とするプロパティの情報が定義されている。プロパティの項目名として「dim:C1」、プロパティの項目値として「C:x2」を1組とするプロパティの情報が定義されている。
図1に示すように、インデックス生成装置100は、制御部110および記憶部120を有する。
記憶部120は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部120は、プロパティ定義情報121、インデックス情報122およびコンテキスト位置情報123を有する。
プロパティ定義情報121は、プロパティの項目名およびプロパティの項目値を定義する。なお、プロパティの項目名を「プロパティ名」という場合がある。プロパティの項目値を「プロパティ値」という場合がある。
ここで、プロパティ定義情報121の一例を、図3を参照して説明する。図3は、プロパティ定義情報の一例を示す図である。図3に示すように、プロパティ定義情報121には、プロパティ種の定義およびプロパティ値の定義が含まれる。プロパティ種とは、プロパティの項目に対応する。プロパティ値とは、プロパティの項目値に対応する。各プロパティ種は、値として該当するプロパティ値と対応付けられる。プロパティ定義情報121には、入力データ300に出現する可能性のあるプロパティ種およびプロパティ値が定義される。例えば、XBRLの付加情報には、「Dimension」と呼ばれるカテゴリに属するプロパティ種があり、ユーザが予め任意に定義できる。プロパティ種が「Dimension」である場合のプロパティ項目およびプロパティ値が定義されている。一例として、プロパティ項目が「dim:A1」である場合に、値として該当するプロパティ値が「m:m1」、「m:m2」・・・「m:m8」であることが示されている。
図1に戻って、インデックス情報122は、入力データ300に含まれるプロパティの項目名およびプロパティの項目値それぞれについて、プロパティの項目名およびプロパティの項目値それぞれの出現位置を表す情報である。すなわち、インデックス情報122とは、入力データ300に含まれるプロパティの項目名およびプロパティの項目値について、それぞれ、オフセット(出現位置)ごとの存否をインデックス化したビットマップのことをいう。
ここで、インデックス情報122の一例を、図4を参照して説明する。図4は、実施例1に係るインデックス情報の一例を示す図である。図4に示すように、インデックス情報122のX軸はコンテキストごとの出現位置を表し、Y軸はプロパティ名とプロパティ値とを表す。また、インデックス情報122は、プロパティ名のインデックス情報の領域と、プロパティ値のインデックス情報の領域を持つ。プロパティ名のインデックス情報は、それぞれのプロパティの項目名について、コンテキスト(Context)内の出現位置に関するインデックスの束の情報である。また、プロパティ値のインデックス情報は、それぞれのプロパティの項目値について、コンテキスト(Context)内の出現位置に関するインデックスの束の情報である。各プロパティ名および各プロパティ値について、コンテキスト内に出現する出現位置には、ONすなわち2進数の「1」が設定される。一例として、プロパティ名が「P1」である場合に、Context1内の1番目の出現位置に「1」が設定されている。プロパティ値が「Val1」である場合に、Context1内の2番目の出現位置に「1」が設定されている。
図1に戻って、コンテキスト位置情報123は、コンテキスト(Context)に関連付けられるXBRLデータの情報である。
ここで、コンテキスト位置情報123の一例を、図5を参照して説明する。図5は、実施例1に係るコンテキスト位置情報の一例を示す図である。図5に示すように、コンテキスト位置情報123は、コンテキスト(Context)ごとに、各コンテキストが関連付けられるXBRLデータを対応付ける情報である。ここでいう各XBRLデータは、図2で示した各データ値に対応する。一例として、コンテキストが「Context1」である場合に、このコンテキストが関連付けられるXBRLデータとして「データ3、データ10、データ18」が設定されている。すなわち、「Context1」は、「データ3」に関連付けられる。「Context1」は、「データ10」に関連付けられる。「Context1」は、「データ18」に関連付けられる。
図1に戻って、制御部110は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部110は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路の電子回路に対応する。または、制御部110は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。制御部110は、コンテキスト選択部111、コンテキスト解析部112およびインデックス情報生成部113を有する。
コンテキスト選択部111は、入力データ300を入力し、入力した入力データ300に含まれるXBRLデータファイルから当該XBRLデータファイルに含まれるコンテキストを順次選択する。
コンテキスト解析部112は、コンテキスト選択部111によって選択されたコンテキストを解析する。例えば、コンテキスト解析部112は、コンテキスト選択部111によって選択されたコンテキストを字句解析する。コンテキスト解析部112は、字句解析した結果、プロパティの項目名およびプロパティの項目値の組を出現順に一時領域に保持する。
インデックス情報生成部113は、入力データ300に含まれるプロパティの項目名およびプロパティの項目値それぞれについて、プロパティの項目名およびプロパティの項目値それぞれの出現位置に関するインデックス情報122を生成する。例えば、インデックス情報生成部113は、コンテキスト解析部112によって解析されたコンテキストについて、一時領域に保持された組ごとに、以下の生成処理を行う。すなわち、インデックス情報生成部113は、各組に含まれるプロパティの項目名に対して、当該プロパティの項目名の出現位置にビットを立てる。インデックス情報生成部113は、各組に含まれるプロパティの項目値に対して、当該プロパティの項目値の出現位置にビットを立てる。インデックス情報生成部113は、選択されたコンテキストと、対象のXBRLデータとを対応付けてコンテキスト位置情報123に設定する。インデックス情報生成部113は、コンテキスト解析部112によって解析された全てのコンテキストについて、インデックス情報生成処理を行うことで、インデックス情報122を生成する。なお、インデックス情報122のコンテキスト名、プロパティ名およびプロパティ値は、予め設定されるようにしても良い。あるいは、インデックス情報生成部113が、前処理として、プロパティ定義情報121を参照して、インデックス情報122のプロパティ名およびプロパティ値を設定しても良い。
これにより、インデックス情報生成部113は、プロパティの項目名およびプロパティ値それぞれの出現位置に関するインデックスを生成することで、プロパティの項目名およびプロパティ値の組み合わせのインデックスを生成する場合と比べて、インデックス情報122のサイズ爆発を抑制できる。また、インデックス情報生成部113は、プロパティの項目名およびプロパティ値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ300に新たなプロパティ値が有ったとしても、インデックス情報122のプロパティ値の領域に1行追加するだけで、インデックス情報122を更新することができる。インデックス情報生成部113は、プロパティの項目名およびプロパティ値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ300に新たなプロパティの項目名が有ったとしても、インデックス情報122のプロパティの項目名の領域に1行追加するだけで、インデックス情報122を更新することができる。
[インデックス生成処理の一例]
ここで、インデックス生成処理の一例を、図6を参照して説明する。図6は、実施例1に係るインデックス生成処理の一例を示す図である。
図6に示すように、入力データ300には、複数のXBRLデータファイルが含まれる。各XBRLデータファイルには、複数のコンテキスト(Context)が含まれる。コンテキスト選択部111は、入力データ300に含まれるXBRLデータファイルから当該XBRLデータファイルに含まれるコンテキストを順次選択する。ここでは、コンテキスト選択部111は、コンテキストとして「Context1」を選択したとする。
すると、コンテキスト解析部112は、コンテキストとして選択された「Context1」を字句解析する。一例として、コンテキスト解析部112は、特定の要素(xbrldi:explicitMember)の行に含まれるプロパティの項目名およびプロパティの項目値の組を検知する。ここでは、符号r1で示される行には、プロパティの項目名として「dim:B1」、プロパティの項目値として「m:m2」の組が検知される。また、符号r2で示される行には、プロパティの項目名として「dim:A1」、プロパティの項目値として「m:m1」の組が検知される。符号r3で示される行には、プロパティの項目名として「dim:C1」、プロパティの項目値として「m:m3」の組が検知される。
そして、コンテキスト解析部112は、プロパティの項目名およびプロパティの項目値の組を出現順に一時領域に保持する。ここでは、コンテキスト解析部112は、符号r1で示される行で検知した組の出現順に応じて、1番目の一時領域に「dim:B1」、2番目の一時領域に「m:m2」を保持する。コンテキスト解析部112は、符号r2で示される行で検知した組の出現順に応じて、3番目の一時領域に「dim:A1」、4番目の一時領域に「m:m1」を保持する。コンテキスト解析部112は、符号r3で示される行で検知した組の出現順に応じて、5番目の一時領域に「dim:C1」、6番目の一時領域に「m:m3」を保持する。
そして、インデックス情報生成部113は、「Context1」について、一時領域に保持された組に含まれるプロパティの項目名に対して、当該プロパティの項目名の出現位置にビットを立てる。インデックス情報生成部113は、「Context1」について、一時領域に保持された組に含まれるプロパティの項目値に対して、当該プロパティの項目値の出現位置にビットを立てる。ここでは、インデックス情報生成部113は、プロパティの項目名「dim:B1」に対して、1番目の出現位置にビット「1」を設定する(e1)。インデックス情報生成部113は、プロパティの項目値「m:m2」に対して、2番目の出現位置にビット「1」を設定する(e2)。インデックス情報生成部113は、プロパティの項目名「dim:A1」に対して、3番目の出現位置にビット「1」を設定する(e3)。インデックス情報生成部113は、プロパティの項目値「m:m1」に対して、4番目の出現位置にビット「1」を設定する(e4)。インデックス情報生成部113は、プロパティの項目名「dim:C1」に対して、5番目の出現位置にビット「1」を設定する(e5)。インデックス情報生成部113は、プロパティの項目値「m:m3」に対して、6番目の出現位置にビット「1」を設定する(e6)。
[インデックス情報の具体例]
ここで、Context1以外のContext10とContext100のインデックス生成処理が行われた後のインデックス情報122の具体例を、図7に表す。図7は、実施例1に係るインデックス情報の具体例を示す図である。
図7に示すように、Context1、Context10およびContext100が定義されている。Context1についてのインデックス生成処理が行われた後のインデックス情報122は、符号E1の範囲内に示される。各プロパティの項目名、各プロパティの項目値に対するビットの設定位置は、図6で説明したとおりであるので、その説明を省略する。
Context10についてのインデックス生成処理が行われた後のインデックス情報122は、符号E2の範囲内に示される。すなわち、プロパティの項目名「dim:C1」に対して、Context10の1番目の出現位置にビット「1」が設定される(e7)。プロパティの項目名「m:m1」に対して、Context10の2番目の出現位置にビット「1」が設定される(e8)。プロパティの項目名「dim:A1」に対して、Context10の3番目の出現位置にビット「1」が設定される(e9)。プロパティの項目名「m:m1」に対して、Context10の4番目の出現位置にビット「1」が設定される(e10)。
Context100についてのインデックス生成処理が行われた後のインデックス情報122は、符号E3の範囲内に示される。すなわち、プロパティの項目名「dim:A1」に対して、Context100の1番目の出現位置にビット「1」が設定される(e11)。プロパティの項目名「m:m3」に対して、Context100の2番目の出現位置にビット「1」が設定される(e12)。プロパティの項目名「dim:B1」に対して、Context100の3番目の出現位置にビット「1」が設定される(e13)。プロパティの項目名「m:m3」に対して、Context100の4番目の出現位置にビット「1」が設定される(e14)。プロパティの項目名「dim:C1」に対して、Context100の5番目の出現位置にビット「1」が設定される(e15)。プロパティの項目名「m:m1」に対して、Context100の6番目の出現位置にビット「1」が設定される(e16)。
このようにして、インデックス生成装置100は、入力データ300の中の未処理のコンテキストがなくなるまで、コンテキスト選択部111、コンテキスト解析部112およびインデックス情報生成部113によるインデックス生成処理を繰り返させる。この結果、入力データ300におけるインデックス情報122が完成する。
[インデックス生成処理のフローチャート]
図8は、実施例1に係るインデックス生成処理のフローチャートを示す図である。なお、図8では、XBRLデータを「データ」というものとする。
図8に示すように、コンテキスト選択部111は、入力データ300を受け取ったか否かを判定する(ステップS10)。入力データ300を受け取っていないと判定した場合には(ステップS10;No)、コンテキスト選択部111は、入力データ300を受け取るまで、判定処理を繰り返す。
一方、入力データ300を受け取ったと判定した場合には(ステップS10;Yes)、コンテキスト選択部111は、入力データ300から対象のファイルを読み出す(ステップS11)。そして、コンテキスト選択部111は、読み出した対象のファイルからコンテキストを選択する(ステップS12)。
続いて、コンテキスト解析部112は、選択したコンテキストを字句解析する(ステップS13)。そして、コンテキスト解析部112は、プロパティの項目名およびプロパティの項目値を出現順に一時領域に保持する(ステップS14)。
続いて、インデックス情報生成部113は、保持した各プロパティの項目名に対応するインデックスの、選択したコンテキスト内の出現位置に対するビットに「1」を書き込む(ステップS15)。インデックス情報生成部113は、保持した各プロパティの項目値に対応するインデックスの、選択したコンテキスト内の出現位置に対するビットに「1」を書き込む(ステップS16)。インデックス情報生成部113は、選択したコンテキストと対象のデータとを対応付けて、コンテキスト位置情報123に設定する(ステップS17)。
そして、インデックス情報生成部113は、未処理のコンテキストは有るか否かを判定する(ステップS18)。未処理のコンテキストが有ると判定した場合には(ステップS18;Yes)、コンテキスト選択部111は、次のコンテキストを選択する(ステップS19)。そして、コンテキスト選択部111は、コンテキスト解析部112に遷移すべく、ステップS13に移行する。
一方、未処理のコンテキストが無いと判定した場合には(ステップS18;No)、インデックス情報生成部113は、入力データ300に未処理の対象のファイルは有るか否かを判定する(ステップS20)。未処理の対象のファイルが有ると判定した場合には(ステップS20;Yes)、インデックス情報生成部113は、コンテキスト選択部111に遷移すべく、ステップS11に移行する。
一方、未処理の対象のファイルが無いと判定した場合には(ステップS20;No)、インデックス情報生成部113は、インデックス生成処理を終了する。
[実施例1に係る検証装置の構成]
図9は、実施例1に係る検証装置の構成を示す機能ブロック図である。検証装置200は、入力される検証ルール310を、項目および値により規定される変換抽出条件に変換し、入力データ300より生成されたインデックス情報122を参照し、変換抽出条件に対応する項目および値の検証を行う。すなわち、検証装置200は、インデックス情報122を用いて、入力される検証ルール310から得られる変換抽出条件に合致するXBRLデータを抽出する。
ここでいう「変換抽出条件」とは、項目および値により規定される抽出条件が1つである場合には、抽出条件と一致するが、項目および値により規定される抽出条件が複数である場合には、複数の抽出条件を論理演算子で結合した条件のことをいう。
ここでいう検証ルール310とは、XBRLデータの内容の検証や計算を行うためのルールである。検証ルール310は、XBRLフォーミュラを用いて記述される。XBRLフォーミュラとは、XBRLデータの内容の検証や計算を行うためのルールを定義する記述言語であり、検証ルール310を定義する。
図10は、検証ルールの構造の一例を示す図である。図10に示すように、検証ルール310には、一例として、「変数」と、「変数個別の抽出条件」と、「変数共通の抽出条件」と、「検証式」とが定義される。「変数共通の抽出条件」は、検証ルール310内の全ての「変数個別の抽出条件」で定義される「変数」の共通の抽出条件である。ここでは、「変数」は、a1、a2、a3に対応する。「変数個別の抽出条件」は、b1、b2、b3に対応する。「変数共通の抽出条件」は、c0に対応する。「検証式」は、d0に対応する。
「変数共通の抽出条件」c0により、入力データ300の全体から検証ルール310で検証されるXBRLデータが絞り込まれる。さらに、「変数」a1では、「変数個別の抽出条件」b1によりXBRLデータが絞り込まれ、「変数」a1に絞り込まれたXBRLデータが割り当てられる。「変数」a2では、同様に「変数個別の抽出条件」b2によりXBRLデータが絞り込まれ、「変数」a2に絞り込まれたXBRLデータが割り当てられる。「変数」a3では、同様に「変数個別の抽出条件」b3によりXBRLデータが絞り込まれ、「変数」a3に絞り込まれたXBRLデータが割り当てられる。そして、割り当てられたXBRLデータの組み合わせ毎に、「検証式」d0が検証される。図10の例では、「変数共通の抽出条件」c0における1つ目の条件指定であるプロパティの項目名は、Dimensionで定義されるプロパティである「dim:CS」であり、その項目値は、「m:x26」である。2つ目の条件指定であるプロパティの項目名は、Dimensionで定義されるプロパティである「dim:VS」であり、その項目値は、「m:x80」である。3つ目の条件指定であるプロパティの項目名は、Dimensionで定義されるプロパティである「dim:D0」であり、その項目値は、「m:x0」である。
図9に示すように、検証装置200は、制御部210および記憶部220を有する。
記憶部220は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部220は、インデックス情報122およびコンテキスト位置情報123を有する。
インデックス情報122は、入力データ300に含まれるプロパティの項目名およびプロパティ値それぞれについて、プロパティの項目名およびプロパティ値それぞれの出現位置を表す情報である。すなわち、インデックス情報122とは、入力データ300に含まれるプロパティの項目名およびプロパティ値について、それぞれ、オフセット(出現位置)ごとの存否をインデックス化したビットマップのことをいう。なお、インデックス情報122は、インデックス生成装置100によって生成される情報であり、例えば、ネットワークを介して取得され、記憶部220に記憶される。
コンテキスト位置情報123は、コンテキスト(Context)に関連付けられるXBRLデータの情報である。なお、コンテキスト位置情報123は、インデックス生成装置100によって生成される情報であり、例えば、ネットワークを介して取得され、記憶部220に記憶される。
制御部210は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部210は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路の電子回路に対応する。または、制御部210は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。制御部210は、抽出条件変換部211、データ抽出部212および抽出結果出力部213を有する。なお、抽出条件変換部211は、変換部の一例である。データ抽出部212は、検証部の一例である。
抽出条件変換部211は、検証ルール310を入力し、入力した検証ルール310をプロパティの項目名およびプロパティの項目値により規定される変換抽出条件に変換する。例えば、抽出条件変換部211は、検証ルール310の「変数共通の抽出条件」を解釈し、プロパティの項目およびプロパティの項目値を抽出する。抽出条件変換部211は、抽出した結果、1組のプロパティの項目およびプロパティの項目値を1個の抽出条件として、1個または複数個の抽出条件から変換抽出条件を生成する。
データ抽出部212は、インデックス情報122を参照し、抽出条件変換部211によって検証ルール310から変換された変換抽出条件に対応するXBRLデータを抽出する。
例えば、データ抽出部212は、変換抽出条件から1個の抽出条件を選択する。データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。また、データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するビットマップをインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。そして、データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。
抽出条件が1個である場合には、データ抽出部212は、AND結果のビットマップについて、各コンテキストに対応するビット区間に「1」が設定されたビット区間を検出する。データ抽出部212は、検出したビット区間に対応するコンテキストを検出する。そして、データ抽出部212は、コンテキスト位置情報123を参照し、検出したコンテキストに関連付けられるXBRLデータを絞り込む。
抽出条件が複数個である場合には、データ抽出部212は、それぞれの抽出条件に対して、AND結果を算出する。データ抽出部212は、複数の抽出条件に対するそれぞれのAND結果をOR演算する。データ抽出部212は、OR結果を参照し、変換抽出条件に含まれる複数の抽出条件を結合するために用いられる論理演算子に応じて該当するコンテキストを検出する。一例として、複数の抽出条件を結合する論理演算子がANDである場合には、データ抽出部212は、OR結果のビットマップについて、各コンテキストに対応するビット区間に「1」が抽出条件の数分設定されたビット区間を検出する。そして、データ抽出部212は、抽出したビット区間に対応するコンテキストを検出する。複数の抽出条件を結合する論理演算子がORである場合には、データ抽出部212は、OR結果のビットマップについて、各コンテキストに対応するビット区間に「1」が1つ以上設定されたビット区間を検出する。そして、データ抽出部212は、抽出したビット区間に対応するコンテキストを検出する。そして、データ検出部212は、コンテキスト位置情報123を参照し、検出したコンテキストに関連付けられるXBRLデータを絞り込む。
抽出結果出力部213は、データ抽出部212によって抽出されたXBRLデータを出力する。この後、検証装置200は、出力されたXBRLデータを用いて、検証ルール310の検証式d0を検証する。
[抽出条件変換処理の一例]
ここで、抽出条件変換処理の一例を、図11を参照して説明する。図11は、実施例1に係る抽出条件変換処理の一例を示す図である。
図11に示すように、検証ルール310の「変数共通の抽出条件」には、3種のプロパティの条件が含まれる。すなわち、「変数共通の抽出条件」には、対象のXBRLデータが満たすべき3種のプロパティの条件が含まれる。
抽出条件変換部211は、このような検証ルール310の「変数共通の抽出条件」を解釈し、プロパティの項目名およびプロパティの項目値をプロパティの条件(抽出条件)として抽出する。ここでは、プロパティの項目名として「dim:A1」、プロパティの項目値として「m:m1」が抽出され、[dim:A1、m:m1]が1つの抽出条件となる。プロパティの項目名として「dim:B1」、プロパティの項目値として「m:m2」が抽出され、[dim:B1、m:m2]が1つの抽出条件となる。プロパティの項目名として「dim:C1」、プロパティの項目値として「m:m3」が抽出され、[dim:C1、m:m3]が1つの抽出条件となる。
抽出条件変換部211は、複数の抽出条件から変換抽出条件を生成する。ここでは、SQL文で示されるコマンドを用いて変換抽出条件が生成されている。すなわち、変換抽出条件は、「(dim:A1=m:m1) and (dim:B1=m:m2) and (dim:C1=m:m3)」であり、抽出条件を結合する論理識別子がANDの場合である。
[データ抽出処理の一例]
ここで、データ抽出処理の一例を、図12を参照して説明する。図12は、実施例1に係るデータ抽出処理の一例を示す図である。なお、図12で示すデータ抽出処理は、1個のプロパティを持つXBRLデータを抽出する場合である。ここでは、変換抽出条件は、「dim:A1=m:m1」であるとする。
データ抽出部212は、変換抽出条件から1個の抽出条件を選択する。ここでは、抽出条件として「dim:A1=m:m1」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:A1」に対応するビットマップを抽出する(s1)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m1」に対応するビットマップを抽出し、1ビットだけ左シフトする(s2)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:A1」に対応するビットマップと「m:m1」に対応するシフトしたビットマップとをAND演算する(s3)。
抽出条件が1個である場合であるので、データ抽出部212は、AND結果のビットマップについて、各コンテキストに対応するビット区間に「1」が設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する(s4)。ここでは、コンテキスト1およびコンテキスト10が検出される。
データ抽出部212は、コンテキスト位置情報123を参照し、検出したコンテキストを含むXBRLデータを絞り込む(s5)。ここでは、コンテキスト位置情報123が図5に示される内容であるとすると、コンテキスト1は、データ3とデータ10に関連付けられる。コンテキスト10は、データ13に関連付けられる。したがって、データ3、データ10およびデータ13がXBRLデータとして絞り込まれる。
[データ抽出処理の別の例]
ここで、データ抽出処理の別の例を、図13を参照して説明する。図13は、実施例1に係るデータ抽出処理の別の例を示す図である。なお、図13で示すデータ抽出処理は、複数のプロパティのいずれも持つXBRLデータを抽出する場合である。ここでは、変換抽出条件は、「(dim:A1=m:m1) and (dim:B1=m:m2) and (dim:C1=m:m3)」であるとする。
データ抽出部212は、変換抽出条件から1個の抽出条件を選択する。ここでは、抽出条件として「dim:A1=m:m1」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:A1」に対応するビットマップを抽出する(s10)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m1」に対応するビットマップを抽出し、1ビットだけ左シフトする(s11)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:A1」に対応するビットマップと「m:m1」に対応するシフトしたビットマップとをAND演算する(s12)。
データ抽出部212は、変換抽出条件から次の1個の抽出条件を選択する。ここでは、抽出条件として「dim:B1=m:m2」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:B1」に対応するビットマップを抽出する(s13)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m2」に対応するビットマップを抽出し、1ビットだけ左シフトする(s14)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:B1」に対応するビットマップと「m:m2」に対応するシフトしたビットマップとをAND演算する(s15)。
データ抽出部212は、変換抽出条件から次の1個の抽出条件を選択する。ここでは、抽出条件として「dim:C1=m:m3」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:C1」に対応するビットマップを抽出する(s16)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m3」に対応するビットマップを抽出し、1ビットだけ左シフトする(s17)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:C1」に対応するビットマップと「m:m3」に対応するシフトしたビットマップとをAND演算する(s18)。
抽出条件が複数個である場合であるので、データ抽出部212は、複数の抽出条件に対するそれぞれのAND結果をOR演算する。ここでは、データ抽出部212は、「dim:A1」のプロパティのAND結果、「dim:B1」のプロパティのAND結果および「dim:C1」のプロパティのAND結果をOR演算する(s19)。
抽出条件を結合する論理識別子はANDの場合であるので、データ抽出部212は、以下の処理を行う。すなわち、データ抽出部212は、OR結果のビットマップについて、各コンテキストに対応するビット区間に「1」が抽出条件の数分設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。ここでは、抽出条件の数は3であるので、抽出条件の数分「1」が設定されたビット区間であるコンテキスト1が検出される(s20)。
この後、データ抽出部212は、コンテキスト位置情報123を参照し、検出したコンテキストに関連付けられるXBRLデータを絞り込む。
[データ抽出処理のさらに別の例]
ここで、データ抽出処理のさらに別の例を、図14を参照して説明する。図14は、実施例1に係るデータ抽出処理のさらに別の例を示す図である。なお、図14で示すデータ抽出処理は、複数のプロパティのうちいずれかを持つXBRLデータを抽出する場合である。ここでは、変換抽出条件は、「(dim:B1=m:m1) or (dim:B1=m:m2) or (dim:B1=m:m3)」であるとする。
データ抽出部212は、変換抽出条件から1個の抽出条件を選択する。ここでは、抽出条件として「dim:B1=m:m1」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:B1」に対応するビットマップを抽出する(s30)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m1」に対応するビットマップを抽出し、1ビットだけ左シフトする(s31)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:B1」に対応するビットマップと「m:m1」に対応するシフトしたビットマップとをAND演算する(s32)。
データ抽出部212は、変換抽出条件から次の1個の抽出条件を選択する。ここでは、抽出条件として「dim:B1=m:m2」が選択される。
データ抽出部212は、プロパティの項目名「dim:B1」に対応するビットマップを既に抽出したので(s30)、この処理を省略する。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m2」に対応するビットマップを抽出し、1ビットだけ左シフトする(s33)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:B1」に対応するビットマップと「m:m2」に対応するシフトしたビットマップとをAND演算する(s34)。
データ抽出部212は、変換抽出条件から次の1個の抽出条件を選択する。ここでは、抽出条件として「dim:B1=m:m3」が選択される。
データ抽出部212は、プロパティの項目名「dim:B1」に対応するビットマップを既に抽出したので(s30)、この処理を省略する。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出し、抽出したビットマップを1ビットだけ左シフトする。ここでは、データ抽出部212は、プロパティの項目値「m:m3」に対応するビットマップを抽出し、1ビットだけ左シフトする(s35)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するシフトした結果のビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:B1」に対応するビットマップと「m:m3」に対応するシフトしたビットマップとをAND演算する(s36)。
抽出条件が複数個である場合であるので、データ抽出部212は、複数の抽出条件に対するそれぞれのAND結果をOR演算する。ここでは、データ抽出部212は、3個の「dim:B1」のプロパティのAND結果をOR演算する(s37)。
抽出条件を結合する論理識別子がORの場合であるので、データ抽出部212は、以下の処理を行う。すなわち、データ抽出部212は、OR結果のビットマップについて、各コンテキストに対応するビット区間に「1」が1つ以上設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。ここでは、「1」が1つ以上設定されたビット区間であるコンテキスト1、コンテキスト100が検出される(s38)。
この後、データ抽出部212は、コンテキスト位置情報123を参照し、検出したコンテキストに関連付けられるXBRLデータを絞り込む。
[検証処理のフローチャート]
図15は、実施例1に係る検証処理のフローチャートを示す図である。なお、図15では、XBRLデータを「データ」というものとする。
図15に示すように、抽出条件変換部211は、検証ルール310を受け取ったか否かを判定する(ステップS21)。検証ルール310を受け取っていないと判定した場合には(ステップS21;No)、抽出条件変換部211は、検証ルール310を受け取るまで、判定処理を繰り返す。
一方、検証ルール310を受け取ったと判定した場合には(ステップS21;Yes)、抽出条件変換部211は、検証ルール310を1個又は複数の抽出条件を含む変換抽出条件に変換する(ステップS22)。例えば、抽出条件変換部211は、検証ルール310の「変数共通の抽出条件」を解釈し、プロパティの項目名およびプロパティの項目値を抽出する。抽出条件変換部211は、抽出した結果、1組のプロパティの項目名およびプロパティの項目値を1個の抽出条件として、1個または複数個の抽出条件から変換抽出条件を生成する。
続いて、データ抽出部212は、変換抽出条件から1個の抽出条件を選択する(ステップS23)。そして、データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名とプロパティの項目値に対応するそれぞれのインデックスを抽出する(ステップS24)。
データ抽出部212は、プロパティの項目値に対するインデックスを1ビットだけ左シフトする(ステップS25)。そして、データ抽出部212は、プロパティの項目名に対するインデックスとプロパティの項目値に対するインデックスとをAND演算する(ステップS26)。
そして、データ抽出部212は、変換抽出条件に、未処理の抽出条件が存在するか否かを判定する(ステップS27)。未処理の抽出条件が存在すると判定した場合には(ステップS27;Yes)、データ抽出部212は、次の抽出条件を選択すべく、ステップS23に移行する。
一方、未処理の抽出条件が存在しないと判定した場合には(ステップS27;No)、データ抽出部212は、変換抽出条件に含まれる抽出条件の数が複数であるか否かを判定する(ステップS28)。抽出条件の数が複数でないと判定した場合には(ステップS28;No)、データ抽出部212は、ステップS30に移行する。
一方、抽出条件の数が複数であると判定した場合には(ステップS28;Yes)、データ抽出部212は、プロパティごとにAND演算した複数のAND結果をOR演算する(ステップS29)。そして、データ抽出部212は、ステップS30に移行する。
ステップS30において、データ抽出部212は、演算結果に基づいて、変換抽出条件に合致するコンテキストを検出する(ステップS30)。例えば、データ抽出部212は、抽出条件が1個である場合には、AND結果のインデックスについて、各コンテキストに対応するビット区間に「1」が設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。データ抽出部212は、抽出条件が複数個である場合には、OR結果のインデックスについて、変換抽出条件に含まれる複数の抽出条件を結合するために用いられる論理演算子に応じて該当するコンテキストを検出する。
そして、データ抽出部212は、コンテキスト位置情報123を用いて、検出したコンテキストに関連付けられるデータを抽出する(ステップS31)。この後、検証装置200は、抽出されたデータを用いて、検証ルール310の検証式d0を検証する。そして、データ抽出部212は、検証処理を終了する。
[実施例1の効果]
上記実施例1によれば、検証装置200は、入力された検証ルール310を、項目および値により規定される変換抽出条件に変換する。検証装置200は、入力データ300より生成された、入力データ300に含まれる項目および値それぞれについての出現位置に関するインデックス情報122を参照し、変換抽出条件に対応する項目および値の検証を行う。かかる構成によれば、検証装置200は、項目および値それぞれについての出現位置に関するインデックス情報122を用いることで項目および値による複数の条件でデータを抽出することが可能となる。この結果、検証装置200は、項目および値による複数の条件であっても、データの抽出に関する演算量を抑制し、高速にデータを抽出することが可能となる。
また、上記実施例1によれば、検証装置200は、インデックス情報122を参照し、変換抽出条件に含まれる項目および値に対応するそれぞれのインデックスを取得する。検証装置200は、取得した値に対応するインデックスを1ビット分左シフトする。検証装置200は、項目に対応するインデックスと値に対応するシフトした結果のインデックスとの論理演算により、変換抽出条件に対応する項目および値の検証を行う。かかる構成によれば、検証装置200は、インデックス情報122について論理演算を用いることで、項目および値による変換抽出条件に合致するデータを抽出することができる。
また、上記実施例1によれば、検証装置200は、変換抽出条件に項目および値の組が複数存在する場合には、各組に含まれる項目に対応するインデックスと同一の組に含まれる値に対応するシフトした結果のインデックスとをAND演算する。検証装置200は、各組のAND演算結果をOR演算する。検証装置200は、OR演算結果を用いて変換抽出条件に対応する項目および値の検証を行う。かかる構成によれば、検証装置200は、インデックス情報122について論理演算を用いることで、項目および値による複数の条件に合致するデータを抽出することができる。
また、上記実施例1によれば、インデックス生成装置100は、項目および値の組み合わせにより記述された入力データ300を入力する。インデックス生成装置100は、入力データ300に含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報122を生成する。かかる構成によれば、インデックス生成装置100は、入力データ300に含まれる項目および値それぞれについてインデックス情報122を生成することで、効率的なインデックス情報122を生成することができる。また、インデックス生成装置100は、入力データ300に含まれる項目および値の組み合わせでなく、項目および値それぞれについてインデックス情報122を生成することで、インデックスのサイズ爆発を抑制できる。また、インデックス生成装置100は、項目および値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ300に新たな値が有ったとしても、インデックス情報122の値の領域に1行追加するだけで、同様に、インデックス情報122を生成することができる。インデックス生成装置100は、項目名および値それぞれの出現位置に関するインデックスを生成することで、仮に入力データ300に新たな項目名が有ったとしても、インデックス情報122の項目の領域に1行追加するだけで、同様に、インデックス情報122を生成することができる。
ところで、実施例1に係るインデックス生成装置100は、入力データ300に含まれる項目および値それぞれの出現位置に関するインデックス情報122を生成すると説明した。しかしながら、インデックス生成装置100は、これに限定されず、入力データ300に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成しても良い。
そこで、実施例2では、インデックス生成装置100が、入力データ300に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成する場合を説明する。
ここで、実施例2に係るインデックス情報122Aの一例を、図16を参照して説明する。図16は、実施例2に係るインデックス情報の一例を示す図である。図16に示すように、インデックス情報122AのX軸はコンテキストごとの出現位置を表し、Y軸はプロパティ名とプロパティ値とを表す。また、インデックス情報122Aは、プロパティ名のインデックス情報の領域と、プロパティ値のインデックス情報の領域を有する。プロパティ名のインデックス情報は、それぞれのプロパティの項目名について、コンテキスト(Context)内の出現位置に関するインデックスの束の情報である。また、プロパティ値のインデックス情報は、それぞれのプロパティの項目値について、コンテキスト(Context)内の出現位置に関するインデックスの束の情報である。プロパティの項目値についての出現位置は、当該プロパティの項目値と同一の組のプロパティの項目名と同じとする。各プロパティ名および各プロパティ値について、コンテキスト内に出現する出現位置には、ONすなわち2進数の「1」が設定される。一例として、プロパティ名として「dim:A1」、プロパティ値として「m:m1」が同一の組であるとする。このプロパティ名の出現位置がContext1内の2番目である場合に、Context1内の2番目に「1」が設定される。このプロパティ値の出現位置は、同じ組のプロパティ名と同じ出現位置であるContext1内の2番目に「1」が設定される。
[インデックス生成処理の一例]
ここで、インデックス生成処理の一例を、図17を参照して説明する。図17は、実施例2に係るインデックス生成処理の一例を示す図である。なお、図17では、コンテキスト選択部111が、コンテキストとして「Context1」を選択した場合について説明する。
すると、コンテキスト解析部112は、コンテキストとして選択された「Context1」を字句解析する。一例として、コンテキスト解析部112は、特定の要素(xbrldi:explicitMember)の行に含まれるプロパティの項目名およびプロパティの項目値の組を検知する。ここでは、符号r1で示される行には、プロパティの項目名として「dim:B1」、プロパティの項目値として「m:m2」の組が検知される。また、符号r2で示される行には、プロパティの項目名として「dim:A1」、プロパティの項目値として「m:m1」の組が検知される。符号r3で示される行には、プロパティの項目名として「dim:C1」、プロパティの項目値として「m:m3」の組が検知される。
そして、コンテキスト解析部112は、プロパティの項目名およびプロパティの項目値の組を出現順に一時領域に保持する。プロパティの項目値についての出現位置は、当該プロパティの項目値と同一の組のプロパティの項目名と同じとする。ここでは、コンテキスト解析部112は、符号r1で示される行で検知した組の出現順に応じて、1番目の一時領域に「dim:B1」および「m:m2」を保持する。コンテキスト解析部112は、符号r2で示される行で検知した組の出現順に応じて、2番目の一時領域に「dim:A1」および「m:m1」を保持する。コンテキスト解析部112は、符号r3で示される行で検知した組の出現順に応じて、3番目の一時領域に「dim:C1」および「m:m3」を保持する。
そして、インデックス情報生成部113は、「Context1」について、一時領域に保持された組に含まれるプロパティの項目名に対して、当該プロパティの項目名の出現位置にビットを立てる。インデックス情報生成部113は、「Context1」について、一時領域に保持された組に含まれるプロパティの項目値に対して、当該プロパティの項目値の出現位置にビットを立てる。ここでは、インデックス情報生成部113は、プロパティの項目名「dim:B1」に対して、1番目の出現位置にビット「1」を設定する(e1’)。インデックス情報生成部113は、プロパティの項目値「m:m2」に対して、1番目の出現位置にビット「1」を設定する(e2’)。インデックス情報生成部113は、プロパティの項目名「dim:A1」に対して、2番目の出現位置にビット「1」を設定する(e3’)。インデックス情報生成部113は、プロパティの項目値「m:m1」に対して、2番目の出現位置にビット「1」を設定する(e4’)。インデックス情報生成部113は、プロパティの項目名「dim:C1」に対して、3番目の出現位置にビット「1」を設定する(e5’)。インデックス情報生成部113は、プロパティの項目値「m:m3」に対して、3番目の出現位置にビット「1」を設定する(e6’)。
[データ抽出処理の一例]
ここで、データ抽出処理の一例を、図18を参照して説明する。図18は、実施例2に係るデータ抽出処理の一例を示す図である。なお、図18で示すデータ抽出処理は、複数のプロパティのいずれも持つXBRLデータを抽出する場合である。ここでは、変換抽出条件は、「(dim:A1=m:m1) and (dim:B1=m:m2) and (dim:C1=m:m3)」であるとする。
データ抽出部212は、変換抽出条件から1個の抽出条件を選択する。ここでは、抽出条件として「dim:A1=m:m1」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:A1」に対応するビットマップを抽出する(s40)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目値「m:m1」に対応するビットマップを抽出する(s41)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:A1」に対応するビットマップと「m:m1」に対応するビットマップとをAND演算する(s42)。
データ抽出部212は、変換抽出条件から次の1個の抽出条件を選択する。ここでは、抽出条件として「dim:B1=m:m2」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:B1」に対応するビットマップを抽出する(s43)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目値「m:m2」に対応するビットマップを抽出する(s44)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:B1」に対応するビットマップと「m:m2」に対応するビットマップとをAND演算する(s45)。
データ抽出部212は、変換抽出条件から次の1個の抽出条件を選択する。ここでは、抽出条件として「dim:C1=m:m3」が選択される。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目名に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目名「dim:C1」に対応するビットマップを抽出する(s46)。
データ抽出部212は、選択した抽出条件に含まれるプロパティの項目値に対応するインデックス(ビットマップ)をインデックス情報122から抽出する。ここでは、データ抽出部212は、プロパティの項目値「m:m3」に対応するビットマップを抽出する(s47)。
データ抽出部212は、プロパティの項目名に対応するビットマップと、プロパティの項目値に対応するビットマップとをAND演算する。ここでは、データ抽出部212は、「dim:C1」に対応するビットマップと「m:m3」に対応するビットマップとをAND演算する(s48)。
抽出条件が複数個である場合であるので、データ抽出部212は、複数の抽出条件に対するそれぞれのAND結果をOR演算する。ここでは、データ抽出部212は、「dim:A1」のプロパティのAND結果、「dim:B1」のプロパティのAND結果および「dim:C1」のプロパティのAND結果をOR演算する(s49)。
抽出条件を結合する論理識別子がANDの場合であるので、データ抽出部212は、以下の処理を行う。すなわち、データ抽出部212は、OR結果のビットマップについて、各コンテキストに対応するビット区間に「1」が抽出条件の数分設定されたビット区間を検出し、検出したビット区間に対応するコンテキストを検出する。ここでは、抽出条件の数は3であるので、抽出条件の数分「1」が設定されたビット区間であるコンテキスト1が検出される(s50)。
この後、データ抽出部212は、コンテキスト位置情報123を参照し、検出したコンテキストに関連付けられるXBRLデータを絞り込む。
[実施例2の効果]
上記実施例2によれば、検証装置200は、出現位置に関するインデックス情報122Aを参照し、変換抽出条件に含まれる項目および値に対応するそれぞれのインデックスを取得する。検証装置200は、取得した項目に対応するインデックスと取得した値に対応するインデックスとの論理演算により、変換抽出条件に対応する項目および値の検証を行う。インデックス情報122Aは、入力データ300に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とするインデックス情報である。かかる構成によれば、検証装置200は、項目および値それぞれについての出現位置に関するインデックス情報122Aを用いて項目および値による複数の条件でデータを抽出することが可能となる。
また、上記実施例2によれば、インデックス生成装置100は、入力データ300に含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報122Aを生成する。かかる構成によれば、インデックス生成装置100は、インデックス情報122Aを生成する際に、項目および値の組について、同一の組の値を項目と同じ出現位置とすることで、インデックスのサイズ爆発をさらに抑制することができる。
[その他]
なお、実施例では、インデックス生成処理をインデックス生成装置100により実現し、検証処理を検証装置200により実現すると説明した。しかしながら、1つの情報処理装置が、インデックス生成処理および検証処理を実現しても良い。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、インデックス情報生成部113を、プロパティ名およびプロパティ値をインデックス情報122に設定する設定部と、プロパティ名およびプロパティ値の出現位置に応じてインデックス情報122にビットを立てる生成部とに分離しても良い。また、データ抽出部212および抽出結果出力部213を併合しても良い。また、記憶部120をインデックス生成装置100の外部装置としてネットワーク経由で接続するようにしても良い。記憶部220を検証装置200の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1に示したインデックス生成装置100と同様の機能を実現するインデックス生成プログラムおよび図9に示した検証装置200と同様の機能を実現する検証プログラムを実行するコンピュータの一例を説明する。図19は、インデックス生成プログラムおよび検証プログラムを実行するコンピュータの一例を示す図である。
図19に示すように、コンピュータ500は、各種演算処理を実行するCPU503と、ユーザからのデータの入力を受け付ける入力装置515と、表示装置509を制御する表示制御部507とを有する。また、コンピュータ500は、記憶媒体からプログラムなどを読取るドライブ装置513と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部517とを有する。また、コンピュータ500は、各種情報を一時記憶するメモリ501と、HDD505を有する。そして、メモリ501、CPU503、HDD505、表示制御部507、ドライブ装置513、入力装置515、通信制御部517は、バス519で接続されている。
ドライブ装置513は、例えばリムーバブルディスク511用の装置である。HDD205は、検証プログラム505a、インデックス生成プログラム505bおよび処理関連情報505cを記憶する。
CPU503は、検証プログラム505aを読み出して、メモリ501に展開し、プロセスとして実行する。かかるプロセスは、検証装置200の各機能部に対応する。CPU503は、インデックス生成プログラム505bを読み出して、メモリ501に展開し、プロセスとして実行する。かかるプロセスは、インデックス生成装置100の各機能部に対応する。処理関連情報505cは、プロパティ定義情報121、インデックス情報122およびコンテキスト位置情報123に対応する。そして、例えばリムーバブルディスク511が、検証プログラム505a、インデックス生成プログラム505bなどの各情報を記憶する。
なお、検証プログラム505aおよびインデックス生成プログラム505bについては、必ずしも最初からHDD505に記憶させておかなくても良い。例えば、コンピュータ500に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ500がこれらから検証プログラム505aおよびインデックス生成プログラム505bを読み出して実行するようにしても良い。
100 インデックス生成装置
111 コンテキスト選択部
112 コンテキスト解析部
113 インデックス情報生成部
121 プロパティ定義情報
122 インデックス情報
123 コンテキスト位置情報
200 検証装置
210 制御部
211 抽出条件変換部
212 データ抽出部
213 抽出結果出力部
220 記憶部
300 入力データ
310 検証ルール

Claims (10)

  1. コンピュータに、
    入力された検証条件を、項目および値により規定される変換検証条件に変換し、
    対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う
    処理を実行させる検証プログラム。
  2. 前記検証を行う処理は、前記インデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記値に対応するインデックスを1ビット分左シフトし、前記項目に対応するインデックスと前記値に対応するシフトした結果のインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
    処理を実行させる請求項1に記載の検証プログラム。
  3. 前記検証を行う処理は、前記変換検証条件に項目および値の組が複数存在する場合には、各組に含まれる項目に対応するインデックスと同一の組に含まれる値に対応するシフトした結果のインデックスとをAND演算し、各組のAND演算結果をOR演算し、OR演算結果を用いて前記変換検証条件に対応する項目および値の検証を行う
    処理を実行させる請求項2に記載の検証プログラム。
  4. 前記インデックス情報は、前記対象データに含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報であり、
    前記検証を行う処理は、前記インデックス情報を参照し、前記変換検証条件に含まれる項目および値に対応するそれぞれのインデックスを取得し、取得した前記項目に対応するインデックスと取得した前記値に対応するインデックスとの論理演算により、前記変換検証条件に対応する項目および値の検証を行う
    処理を実行させる請求項1に記載の検証プログラム。
  5. 入力された検証条件を、項目および値により規定される変換検証条件に変換する変換部と、
    対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う検証部と、
    を有することを特徴とする検証装置。
  6. コンピュータが、
    入力された検証条件を、項目および値により規定される変換検証条件に変換し、
    対象データより生成された、前記対象データに含まれる項目および値それぞれについての出現位置に関するインデックス情報を参照し、前記変換検証条件に対応する項目および値の検証を行う
    各処理を実行することを特徴とする検証方法。
  7. コンピュータに、
    項目および値の組み合わせにより記述されたデータを入力し、
    前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する
    処理を実行させるインデックス生成プログラム。
  8. 前記生成する処理は、前記データに含まれる項目および値の組について、同一の組の値を項目と同じ出現位置とする、出現位置に関するインデックス情報を生成する
    処理を実行させる請求項7に記載のインデックス生成プログラム。
  9. 項目および値の組み合わせにより記述されたデータを入力する入力部と、
    前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する生成部と、
    を有することを特徴とするインデックス生成装置。
  10. コンピュータが、
    項目および値の組み合わせにより記述されたデータを入力し、
    前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する
    各処理を実行することを特徴とするインデックス生成方法。
JP2018552379A 2016-11-28 2016-11-28 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法 Active JP6900956B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/085228 WO2018096686A1 (ja) 2016-11-28 2016-11-28 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法

Publications (2)

Publication Number Publication Date
JPWO2018096686A1 true JPWO2018096686A1 (ja) 2019-08-08
JP6900956B2 JP6900956B2 (ja) 2021-07-14

Family

ID=62194963

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018552379A Active JP6900956B2 (ja) 2016-11-28 2016-11-28 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法

Country Status (2)

Country Link
JP (1) JP6900956B2 (ja)
WO (1) WO2018096686A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3608800A4 (en) * 2017-04-06 2020-04-01 Fujitsu Limited INDEX GENERATION PROGRAM, INDEX GENERATION DEVICE, INDEX GENERATION METHOD, SEARCH PROGRAM, SEARCH DEVICE, AND SEARCH METHOD
EP3979177A4 (en) * 2019-05-31 2022-06-15 Fujitsu Limited VERIFICATION PROCESS, INFORMATION PROCESSING SYSTEM AND VERIFICATION PROGRAM

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008090403A (ja) * 2006-09-29 2008-04-17 Just Syst Corp 文書検索装置、文書検索方法および文書検索プログラム
JP2009048351A (ja) * 2007-08-17 2009-03-05 Nippon Telegr & Teleph Corp <Ntt> 情報検索装置、情報検索方法および情報検索プログラム
WO2009063925A1 (ja) * 2007-11-15 2009-05-22 Nec Corporation 文書管理・検索システムおよび文書の管理・検索方法
WO2009066501A1 (ja) * 2007-11-19 2009-05-28 Nippon Telegraph And Telephone Corporation 情報検索方法及び装置及びプログラム及びコンピュータ読取可能な記録媒体
JP2014089646A (ja) * 2012-10-31 2014-05-15 Hitachi Solutions Ltd 電子データ処理装置、及び電子データ処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008090403A (ja) * 2006-09-29 2008-04-17 Just Syst Corp 文書検索装置、文書検索方法および文書検索プログラム
JP2009048351A (ja) * 2007-08-17 2009-03-05 Nippon Telegr & Teleph Corp <Ntt> 情報検索装置、情報検索方法および情報検索プログラム
WO2009063925A1 (ja) * 2007-11-15 2009-05-22 Nec Corporation 文書管理・検索システムおよび文書の管理・検索方法
WO2009066501A1 (ja) * 2007-11-19 2009-05-28 Nippon Telegraph And Telephone Corporation 情報検索方法及び装置及びプログラム及びコンピュータ読取可能な記録媒体
JP2014089646A (ja) * 2012-10-31 2014-05-15 Hitachi Solutions Ltd 電子データ処理装置、及び電子データ処理方法

Also Published As

Publication number Publication date
WO2018096686A1 (ja) 2018-05-31
JP6900956B2 (ja) 2021-07-14

Similar Documents

Publication Publication Date Title
AU2018253478B2 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
JP6870421B2 (ja) 判定プログラム、判定装置および判定方法
CN108090198A (zh) 图数据库创建及数据加载方法、设备及介质
US10614312B2 (en) Method and apparatus for determining signature actor and identifying video based on probability of appearance of signature actor
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
KR102367859B1 (ko) 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법
JP6528841B2 (ja) 抽出プログラム、抽出装置および抽出方法
JP2019204246A (ja) 学習データ作成方法及び学習データ作成装置
WO2018096686A1 (ja) 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法
JP6331756B2 (ja) テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置
JP5780036B2 (ja) 抽出プログラム、抽出方法及び抽出装置
JP6079780B2 (ja) プログラム、マッピング装置およびマッピング方法
JP5439235B2 (ja) 文書分類方法、文書分類装置、およびプログラム
US20220035791A1 (en) Verification method, information processing apparatus, and non-transitory computer-readable storage medium for storing verification program
US11113314B2 (en) Similarity calculating device and method, and recording medium
JP6790905B2 (ja) 検出方法、検出装置および検出プログラム
JP4558369B2 (ja) 情報抽出システム、情報抽出方法、コンピュータプログラム
JP2017156916A (ja) 類似文書検索装置
JP2016042263A (ja) 文書管理装置、文書管理プログラム及び文書管理方法
WO2020003451A1 (ja) 検索装置、検索方法および機械学習装置
RU2794162C1 (ru) Способ верификации, устройство обработки информации и долговременный считываемый компьютером носитель хранения для хранения программы верификации
JP6563549B1 (ja) データ傾向分析方法、データ傾向分析システム及び絞り込み及び復元装置
JP6623040B2 (ja) 突合処理装置及び突合処理方法並びに突合処理プログラム
JP6354501B2 (ja) 比較プログラム、比較方法および情報処理装置
US20140200920A1 (en) Method and apparatus for associating patient identifiers utilizing principal component analysis

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190328

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200730

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20201215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210312

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210312

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210323

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210531

R150 Certificate of patent or registration of utility model

Ref document number: 6900956

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150