Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6841322B2 - インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 - Google Patents
[go: Go Back, main page]

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

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

Info

Publication number
JP6841322B2
JP6841322B2 JP2019511028A JP2019511028A JP6841322B2 JP 6841322 B2 JP6841322 B2 JP 6841322B2 JP 2019511028 A JP2019511028 A JP 2019511028A JP 2019511028 A JP2019511028 A JP 2019511028A JP 6841322 B2 JP6841322 B2 JP 6841322B2
Authority
JP
Japan
Prior art keywords
data
index
search
block
unit
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.)
Expired - Fee Related
Application number
JP2019511028A
Other languages
English (en)
Other versions
JPWO2018185921A1 (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 JPWO2018185921A1 publication Critical patent/JPWO2018185921A1/ja
Application granted granted Critical
Publication of JP6841322B2 publication Critical patent/JP6841322B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、インデックス生成プログラムなどに関する。
XBRL(eXtensible Business Reporting Language)文書による財務情報の報告は、日本を含む世界各国で行われている。XBRLとは、各種財務報告用の情報を作成、流通、利用できるように標準化されたXMLベースの言語である。XBRL文書とは、例えば財務会計報告に関して、XBRLで記述された構造化文書である。
XBRLで記述されたデータを検索する検索条件は、例えば、項目と値を組み合わせた形で規定される。
構造化文書の検索における検索条件に含まれる、要素指定の構造化検索と要素内容における文字列検索とを行う技術が開示されている(例えば、特許文献1参照)。かかる技術では、構造化文書における各要素の位置関係を格納する手段と、各要素に出現する文字列の位置情報を格納する手段を備え、これらの2つの情報を要素の位置情報で連結または結合し1つの索引情報として処理する。
特開2001−265773号公報
しかしながら、XBRLデータ等の構造化文書を項目と値とを組み合わせた検索条件で検索を行う場合には、演算量が問題となる。
例えば、構造化文書の検索を行う従来の技術では、項目に相当する要素と値に相当する要素内容の位置を索引(インデックス)化している。ところが、かかる技術では、特定の要素と特定の要素内容とを組み合わせた検索条件で検索を行う場合には、以下の処理を行う。すなわち、かかる技術では、特定の要素を各要素の位置関係を用いて検索して、検索できた特定の要素について文字列個別に格納された各要素に出現する文字列の位置情報を用いて特定の要素内容を参照する。したがって、構造化文書を要素と要素内容とを組み合わせた検索条件で検索を行う場合には、演算量が問題となる。
1つの側面では、構造化文書を項目と値とを組み合わせた検索条件で効率的に検索することを目的とする。
第1の案では、コンピュータに、項目および値の組み合わせにより記述されたデータを入力し、前記データに含まれる項目および値それぞれについて、前記項目および値それぞれの出現位置に関するインデックス情報を生成する、処理を実行させる。
一つの態様によれば、構造化文書を項目と値とを組み合わせた検索条件で効率的に検索することができる。
図1は、実施例1に係るインデックス生成装置の構成を示す機能ブロック図である。 図2は、実施例1に係るXBRLデータの一例を示す図である。 図3は、実施例1に係るブロックテーブルの一例を示す図である。 図4は、実施例1に係るインデックス情報の一例を示す図である。 図5Aは、実施例1に係る上位インデックスのインデックス生成処理の流れの一例を示す図である。 図5Bは、実施例1に係る下位インデックスのインデックス生成処理の流れの一例を示す図である。 図6は、実施例1に係る別の下位インデックスのインデックス生成処理の流れの一例を示す図である。 図7は、実施例1に係る別の下位インデックスのインデックス生成処理の流れの一例を示す図である。 図8は、下位インデックスのオフセットの割り振り方を説明する図である。 図9は、実施例1に係るインデックス生成処理のフローチャートの一例を示す図である。 図10は、実施例1に係る検索装置の構成を示す機能ブロック図である。 図11は、実施例1に係るオフセット検索処理の流れの一例を示す図である。 図12は、実施例1に係るオフセット検索処理の流れの一例を示す図である。 図13は、実施例1に係る検索対象抽出処理の流れの一例を示す図である。 図14は、実施例1に係る検索処理のフローチャートの一例を示す図である。 図15は、実施例1に係る検索フローの一例を示す図である。 図16は、実施例2に係るインデックス生成装置の機能構成を示すブロック図である。 図17は、実施例2に係る動的辞書の一例を示す図である。 図18は、実施例2に係るブロックテーブルの一例を示す図である。 図19Aは、実施例2に係る上位インデックスのインデックス生成処理の流れの一例を示す図である。 図19Bは、実施例2に係る下位インデックスのインデックス生成処理の流れの一例を示す図である。 図20Aは、実施例2に係るインデックス生成処理のフローチャートの一例を示す図である。 図20Bは、実施例2に係る符号化処理のフローチャートの一例を示す図である。 図21は、実施例2に係る検索装置の機能構成を示すブロック図である。 図22は、実施例2に係る検索対象伸長処理の流れの一例を示す図である。 図23は、実施例2に係る検索処理のフローチャートの一例を示す図である。 図24は、実施例2に係る検索フローの一例を示す図である。 図25は、インデックス生成装置および検索装置のハードウェア構成の一例を示す図である。 図26は、TDnetを利用した検索フローの参考例を示す図である。 図27は、XBRLデータの一例を示す図である。 図28は、検索処理の参考例を示す図である。
以下に、本願の開示するインデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
まず、企業ごとのXBRL文書による財務情報を検索するTDnet(Timely Disclosure network)というシステムがある。かかるTDnetでは、企業が提出するXBRL文書による財務情報を投資家に開示し、開示した財務情報を投資家が検索することができる。ここで、TDnetを利用した検索フローの参考例を、図26を参照して説明する。図26は、TDnetを利用した検索フローの参考例を示す図である。
図26に示すように、企業は、TDnetを利用して、財務情報のXBRLデータをZipにより圧縮したZipファイルを提出する(S901)。
審査官は、Zipファイルを解凍(伸長)し、伸長したXBRLデータをチェックする(S902)。審査官は、承認したXBRLデータのZipファイルをTDnetのDB(DataBase)に格納し(S903)、当該XBRLデータを開示する。ここでいう審査官とは、例えば、公的な監督機関であったり、証券取引所であったりする。
投資家は、TDnetを利用して、開示された企業のXBRLデータを検索するために、報告日の検索期間および検索対象の企業名を入力する(S904)。投資家は、TDnetを利用して、検索対象のXBRLデータを決定する(S905)。投資家は、TDnetを利用して、決定した検索対象のXBRLデータに対するZipファイルをローカルフォルダに保存する(S906)。そして、投資家は、保存したZipファイルを解凍(伸長)する(S907)。
続いて、投資家は、伸長したXBRLデータを専用ツールに入力する(S908)。専用ツールは、入力されたXBRLデータを字句解析し、データモデルのツリーを構築する(S909)。そして、専用ツールは、要素と値のペアを、表示定義に従って、一覧表示する(S910)。
そして、投資家は、検索対象である要素の検索ワードまたは検索対象である値の検索ワードを入力する(S911)。要素の検索ワードの一例として、勘定科目である「売上収益」が挙げられる。値の検索ワードの一例として、「社長」が挙げられる。すると、専用ツールは、データモデルのツリーを走査し、検索ワードと照合した結果を通知する(S912)。例えば、要素の検索ワードが「売上収益」である場合には、勘定科目「売上収益」に対する値が通知される。値の検索ワードが「社長」である場合には、「社長」を含む勘定科目の値が通知される。
ここで、XBRLデータの一例を、図27を参照して説明する。図27は、XBRLデータの一例を示す図である。
図27に示すように、1つのXBRLデータは、データ値と、データ値を補足する付加情報からなる。付加情報は、データ値を含む要素と関連付けられる、別の独立した要素で指定される情報である。付加情報は、名前がcontextとunitである要素に複数定義されるが、ここでは、contextを区別するためのコンテキスト名として、「CurrentQ1」、「PriorQ1」が付与されている。unitを区別するためのユニット名として、「JPY」、「Pure」が付与されている。そして、データ値には、名前がSalesである要素に対して、付加情報を参照する属性としてコンテキスト名である「CurrentQ1」、ユニット名である「JPY」が定義されている。そして、要素「Sales」の値として「10000」が定義されている。また、コンテキスト名である「CurrentQ1」に対応する付加情報には、報告日の日付を意味する、要素「period」の配下にある要素「instant」の値として「2016−06−30」が定義されている。
ここで、投資家が検索対象である要素の検索ワードとして「2016」年度の「売上収益」を入力した場合の、検索処理の参考例を、図28を参照して説明する。図28は、検索処理の参考例を示す図である。なお、図28では、専用ツールに入力されたXBRLデータについて、データモデルのツリーが構築されたとする。ツリーの中の<c>の「c」、<p>の「p」、<i>の「i」は、それぞれ「context」、「period」、「instant」を省略したものである。また、ツリーの中の<S>の「S」、「cr=」は、それぞれ「Sales」、「contextRef=」を省略したものである。また、ツリーの中の"Cur"、"Pri"は、それぞれ「CurrentQ1」、「PriorQ1」を省略したものである。また、ツリーの中の「2016」、「2015」は、それぞれ「2016−06−30」、「2015−06−30」を省略したものである。
図28に示すように、「2016」年度の「売上収益」という検索ワードを受け取った専用ツールは、ツリーのトップ(ルート)から末端にかけて、「2016」を値に含む要素を探索する(S920)。そして、専用ツールは、探索した結果、親要素が「instant」であることを確認し(S921)、祖先に遡って「context」要素を探索する(S922)。そして、専用ツールは、祖先要素が「context」要素であることを確認し、id属性を探索する(S923)。探索された結果、id属性値は、「CurrentQ1」であったとする。
続いて、専用ツールは、ツリーのトップ(ルート)から末端にかけて、「CurrentQ1」を値に持つ「contextRef」属性を探索する(S924)。そして、専用ツールは、探索した結果、「CurrentQ1」が「contextRef」属性の値であることを確認し、「contextRef」属性が「売上収益」であることを示す「Sales」要素の属性であることを確認する(S925)。そして、専用ツールは、「Sales」要素の値として「1000」を取得する(S926)。
このようにして、参考例に係る検索処理は、XBRL固有の仕様により、データ値と付加情報が分離されているため、何回も、XBRLデータのデータモデルのツリーの全データを走査しながら、検索ワードと照合するので、演算量の増大が見込まれ、効率的に検索することが難しい。
[実施例1に係るインデックス生成装置の構成]
図1は、実施例1に係るインデックス生成装置の構成を示す機能ブロック図である。インデックス生成装置100は、項目および値の組み合わせにより記述されたXBRLデータを入力し、入力したXBRLデータに含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報122を生成する。
ここでいうXBRLデータとは、圧縮データから伸長された、XBRLで記述されたデータである。XBRLとは、各種財務報告用の情報を作成、流通、利用できるように標準化されたXMLベースの言語である。そして、圧縮データの一例として、Zip形式のデータが挙げられる。XBRLデータの一例として、財務データが挙げられる。
ここで、実施例1に係るXBRLデータの一例を、図2を参照して説明する。図2は、実施例1に係るXBRLデータの一例を示す図である。なお、図2で示すXBRLデータは、図27で示したXBRLデータの内容と同じである。
図2に示すように、XBRLデータを、先頭より、付加情報およびデータ値を表す要素ごとにブロックで区切る。ここでは、3、4ブロックの要素が、図27で示したデータ値を補足する付加情報1に対応する。6、7ブロックの要素が、図27で示したデータ値を補足する付加情報2に対応する。9、11ブロックの要素が、図27で示したデータ値に対応する。なお、XBRLデータ内の付加情報およびデータ値を表す各要素の開始タグとブロックとの関係は、後述するブロックテーブル121により定義される。
図1に示すように、インデックス生成装置100は、制御部110および記憶部120を有する。
記憶部120は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部120は、ブロックテーブル121およびインデックス情報122を有する。
ブロックテーブル121は、XBRLデータ内の付加情報およびデータ値を表す各要素の開始タグのアドレスと、ブロックの番号とを対応付けて記憶する。
ここで、ブロックテーブル121の一例を、図3を参照して説明する。図3は、実施例1に係るブロックテーブルの一例を示す図である。図3に示すように、ブロックテーブル121は、ブロックNo121aとXBRLデータ内のアドレス121bとを対応付けて記憶する。ブロックNo121aは、ブロックの番号を示す。XBRLデータ内のアドレス121bは、圧縮データから伸長されたXBRLデータに含まれるブロックの先頭アドレスを示す。一例として、ブロックNo121aが「1」である場合に、XBRLデータ内のアドレス121bとして「0」を記憶している。ブロックNo121aが「2」である場合に、XBRLデータ内のアドレス121bとして「A000h」を記憶している。
図1に戻って、インデックス情報122は、上位インデックスのインデックス情報122と下位インデックスのインデックス情報122を含む。上位インデックスのインデックス情報122とは、XBRLデータ内の付加情報およびデータ値を表す各要素のブロック位置を表す情報である。すなわち、上位インデックスのインデックス情報122とは、XBRLデータにおける付加情報およびデータ値の開始タグについて、ブロック位置ごとの存否をインデックス化したビットマップのことをいう。下位インデックスのインデックス情報122は、ブロックごとに存在する。所定のブロックの下位インデックスのインデックス情報122とは、XBRLデータにおける付加情報およびデータ値を表す要素について、項目(開始タグ、属性、終了タグ)および値それぞれの出現位置を表す情報である。すなわち、下位インデックスのインデックス情報122とは、XBRLデータに含まれる所定のブロックにおける項目(開始タグ、属性、終了タグ)および値について、オフセット(出現位置)ごとの存否をインデックス化したビットマップのことをいう。
ここで、インデックス情報122の一例を、図4を参照して説明する。図4は、実施例1に係るインデックス情報の一例を示す図である。図4上図には、上位インデックスのインデックス情報122が表わされている。図4下図には、下位インデックスのインデックス情報122が表わされている。なお、図4上図のインデックス情報122は、図2で示したXBRLデータに対する上位インデックスのインデックス情報122である。図4下図のインデックス情報122は、図2で示したXBRLデータのうち3ブロック目の下位インデックスのインデックス情報122である。
図4上図に示すように、上位インデックスのインデックス情報122のX軸は、ブロックの番号を表し、Y軸はタグ層のタグ名(要素名)を表す。かかるインデックス情報122は、それぞれの要素名について、ブロックに関するインデックスの束の情報である。各要素名について、出現するブロックの番号には、ONすなわち2進数の「1」が設定される。一例として、<xrbl>は、ブロック番号の1番目の位置に「1」が設定されている。すなわち、<xrbl>要素は、1ブロック目に位置する。<context>は、ブロック番号の3番目の位置に「1」が設定されている。すなわち、<context>要素は、3ブロック目に位置する。
図4下図に示すように、下位インデックスのインデックス情報122のX軸は、ブロック単位のオフセット(出現位置)を表し、Y軸はタグ層に含まれるタグ名と属性層に含まれる属性名とデータ値層に含まれる要素値と属性値を表す。また、インデックス情報122は、タグ層の領域と属性層の領域とデータ値層の領域を持つ。タグ層の領域のインデックス情報は、それぞれの開始タグと終了タグのタグ名について、ブロック内の出現位置に関するインデックスの束の情報である。属性層の領域のインデックス情報122は、それぞれの属性名について、ブロック内の出現位置に関するインデックスの束の情報である。データ値層の領域のインデックス情報122は、それぞれの要素値と属性値について、ブロック内の出現位置に関するインデックスの束の情報である。各タグ名、各属性名、各要素値および各属性値について、ブロック内に出現する出現位置には、ONすなわち2進数の「1」が設定される。一例として、開始タグのタグ名が「<context>」である場合に、ブロック内の1番目の出現位置に「1」が設定されている。属性名が「id=」である場合に、ブロック内の2番目の出現位置に「1」が設定されている。identifier要素の値が「67020」である場合に、ブロック内の8番目の出現位置に「1」が設定されている。
図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は、入力部の一例である。軸解析部112およびインデックス生成部113は、生成部の一例である。
伸長部111は、圧縮されたXBRLデータを入力し、伸長する。ここでいう圧縮されたXBRLデータは、例えば企業によって提出されたXBRLデータをZip形式により圧縮されたものである。
字句解析部112は、伸長部111によって伸長されたXBRLデータを字句解析する。ここでいう字句解析とは、XBRLデータをマークアップと単語に分割することをいう。
インデックス生成部113は、XBRLデータに含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報122を生成する。例えば、インデックス生成部113は、XBRLデータの各ブロック先頭の開始タグのタグ名に対して、当該タグ名のブロックの出現位置にビットを立てる。すなわち、インデックス生成部113は、上位インデックスのインデックス情報122を生成する。そして、インデックス生成部113は、それぞれのブロックに対して、ブロックNo121aとXBRLデータ内のアドレス121bとを対応付けてブロックテーブル121に格納する。また、インデックス生成部113は、XBRLデータのブロックごとに、ブロックに含まれる開始タグと終了タグのタグ名に対して、当該タグ名のブロック内の出現位置にビットを立てる。インデックス生成部113は、XBRLデータのブロックごとに、ブロックに含まれる属性名に対して、当該属性名のブロック内の出現位置にビットを立てる。インデックス生成部113は、XBRLデータのブロックごとに、ブロックに含まれる要素値と属性値に対して、当該値のブロック内の出現位置にビットを立てる。すなわち、インデックス生成部113は、下位インデックスのインデックス情報122を生成する。なお、下位インデックスのインデックス情報122を、検索時に、インデックス情報122内のブロックが決定した後で、インデックス生成部113が、生成するようにしても良い。以降では、インデックス生成部113が、インデックス情報122を生成する際に、タグ層のタグ名等を登録する場合を説明する。
[インデックス生成処理の流れ]
ここで、実施例1に係るインデックス生成処理の流れの一例を、図5Aおよび図5Bを参照して説明する。
図5Aは、実施例1に係る上位インデックスのインデックス生成処理の流れの一例を示す図である。図5Aに示すように、インデックス生成部113は、XBRLデータの各ブロックの開始タグのタグ名に対して、当該タグ名のブロック出現位置にビットを立てる。ここでは、インデックス生成部113は、XBRLデータからブロックを選択する。そして、インデックス生成部113は、選択したブロックの開始タグを検出し、検出した開始タグのタグ名をタグ層に登録する。そして、インデックス生成部113は、開始タグのタグ名に対して、当該タグ名のブロックの出現位置のビットを「1」(ON)に設定する。
一例として、インデックス生成部113が、1ブロック目を選択した場合には、1ブロック目で検出された開始タグのタグ名「xbrl」をタグ層に登録する。そして、インデックス生成部113は、タグ名「xbrl」に対応するインデックス(ビットマップ)の、ブロックNo「1」に対するビットに「1」を書き込む。
一例として、インデックス生成部113は、3ブロック目を選択した場合には、3ブロック目で検出された開始タグのタグ名「<context>」をタグ層に登録する。そして、インデックス生成部113は、タグ名「<context>」に対応するインデックス(ビットマップ)の、ブロックNo「3」に対するビットに「1」を書き込む。
一例として、インデックス生成部113は、6ブロック目を選択した場合には、6ブロック目で検出された開始タグのタグ名「<unit>」をタグ層に登録する。そして、インデックス生成部113は、タグ名「<unit>」に対応するインデックス(ビットマップ)の、ブロックNo「6」に対するビットに「1」を書き込む。
一例として、インデックス生成部113は、9ブロック目を選択した場合には、9ブロック目で検出された開始タグのタグ名「<Sales>」をタグ層に登録する。そして、インデックス生成部113は、タグ名「<Sales>」に対応するインデックス(ビットマップ)の、ブロックNo「9」に対するビットに「1」を書き込む。
また、インデックス生成部113は、それぞれのブロックに対して、ブロックNo121aとXBRLデータ内のアドレス121bとを対応付けてブロックテーブル121に格納する。ここでは、インデックス生成部113は、ブロックNo「1」とXBRLデータ内のアドレス「0」とを対応付けてブロックテーブル121に格納する。インデックス生成部113は、ブロックNo「2」とXBRLデータ内のアドレス「A000h」とを対応付けてブロックテーブル121に格納する。インデックス生成部113は、ブロックNo「3」とXBRLデータ内のアドレス「A100h」とを対応付けてブロックテーブル121に格納する。インデックス生成部113は、ブロックNo「4」とXBRLデータ内のアドレス「A200h」とを対応付けてブロックテーブル121に格納する。
図5Bは、実施例1に係る下位インデックスのインデックス生成処理の流れの一例を示す図である。ここでは、XBRLデータ内の3ブロック目の下位インデックスの生成処理について説明する。この3ブロック目では、context要素の下位インデックスが生成される。
図5Bに示すように、3ブロック目について、インデックス生成部113は、開始タグを検出した場合には、開始タグのタグ名「<context>」をタグ層に登録する。タグ名は、要素名を意味する。そして、インデックス生成部113は、開始タグのタグ名「<context>」に対応するインデックス(ビットマップ)の、出現位置「1」に対するビットに「1」を書き込む。なお、インデックス生成部113は、タグ名を、以下のように検出すれば良い。すなわち、インデックス生成部113は、タグの開始記号「<」を検出すると、開始記号の直後の単語をタグ名として検出すれば良い。
インデックス生成部113は、属性名として「id=」を検出した場合には、属性名「id=」を属性層に登録する。そして、インデックス生成部113は、属性名「id=」に対応するインデックス(ビットマップ)の、出現位置「2」に対するビットに「1」を書き込む。なお、インデックス生成部113は、属性名を、以下のように検出すれば良い。すなわち、インデックス生成部113は、タグ名に後続する属性群であって「=」を持つ属性の左辺を属性名として検出すれば良い。
インデックス生成部113は、属性値として「CurrentQ1」を検出した場合には、属性値「CurrentQ1」をデータ値層に登録する。そして、インデックス生成部113は、属性値「CurrentQ1」に対応するインデックス(ビットマップ)の、出現位置「3」に対するビットに「1」を書き込む。なお、インデックス生成部113は、属性値を、以下のように検出すれば良い。すなわち、インデックス生成部113は、同じく「=」を持つ属性の右辺を属性値として検出すれば良い。
インデックス生成部113は、要素値として「67020」を検出した場合には、要素値「67020」をデータ値層に登録する。そして、インデックス生成部113は、要素値「67020」に対応するインデックス(ビットマップ)の、出現位置「8」に対するビットに「1」を書き込む。なお、インデックス生成部113は、要素値を、以下のように検出すれば良い。すなわち、インデックス生成部113は、開始タグの終了記号「>」と終了タグの開始記号「<」との間のテキストを要素値として検出すれば良い。
このようにして、インデックス生成部113は、3ブロック目に対して、開始タグのタグ名、属性名、属性値、要素値および終了タグのタグ名を順次検出し、下位インデックスを生成すれば良い。
図6は、実施例1に係る別の下位インデックスのインデックス生成処理の流れの一例を示す図である。ここでは、XBRLデータ内の6ブロック目の下位インデックスの生成処理について説明する。この6ブロック目では、unit要素の下位インデックスが生成される。
図6に示すように、6ブロック目について、インデックス生成部113は、開始タグを検出した場合には、開始タグのタグ名「<unit>」をタグ層に登録する。タグ名は、要素名を意味する。そして、インデックス生成部113は、開始タグのタグ名「<unit>」に対応するインデックス(ビットマップ)の、出現位置「1」に対するビットに「1」を書き込む。なお、インデックス生成部113によるタグ名の検出方法は、図5Bで説明した方法と同じであれば良い。
インデックス生成部113は、属性名として「id=」を検出した場合には、属性名「id=」を属性層に登録する。そして、インデックス生成部113は、属性名「id=」に対応するインデックス(ビットマップ)の、出現位置「2」に対するビットに「1」を書き込む。なお、インデックス生成部113による属性名の検出方法は、図5Bで説明した方法と同じであれば良い。
インデックス生成部113は、属性値として「JPY」を検出した場合には、属性値「JPY」をデータ値層に登録する。そして、インデックス生成部113は、属性値「JPY」に対応するインデックス(ビットマップ)の、出現位置「3」に対するビットに「1」を書き込む。なお、インデックス生成部113による属性値の検出方法は、図5Bで説明した方法と同じであれば良い。
インデックス生成部113は、開始タグを検出した場合には、タグのタグ名「<measure>」をタグ層に登録する。タグ名は、要素名を意味する。そして、インデックス生成部113は、開始タグのタグ名「<measure>」に対応するインデックス(ビットマップ)の、出現位置「4」に対するビットに「1」を書き込む。
インデックス生成部113は、要素値として「iso4217:JPY」を検出した場合には、要素値「iso4217:JPY」をデータ値層に登録する。そして、インデックス生成部113は、要素値「iso4217:JPY」に対応するインデックス(ビットマップ)の、出現位置「5」に対するビットに「1」を書き込む。なお、インデックス生成部113による要素値の検出方法は、図5Bで説明した方法と同じであれば良い。
このようにして、インデックス生成部113は、6ブロック目に対して、開始タグのタグ名、属性名、属性値、要素値および終了タグのタグ名を順次検出し、下位インデックスを生成すれば良い。
図7は、実施例1に係る別の下位インデックスのインデックス生成処理の流れの一例を示す図である。ここでは、XBRLデータ内の9ブロック目の下位インデックスの生成処理について説明する。この9ブロック目では、勘定科目の要素の下位インデックスが生成される。
図7に示すように、9ブロック目について、インデックス生成部113は、開始タグを検出した場合には、開始タグのタグ名「<Sales>」をタグ層に登録する。タグ名は、要素名を意味する。そして、インデックス生成部113は、タグ名「<Sales>」に対応するインデックス(ビットマップ)の、出現位置「1」に対するビットに「1」を書き込む。
インデックス生成部113は、属性名として「contextRef=」を検出した場合には、属性名「contextRef=」を属性層に登録する。そして、インデックス生成部113は、属性名「contextRef=」に対応するインデックス(ビットマップ)の、出現位置「2」に対するビットに「1」を書き込む。
インデックス生成部113は、属性値として「CurrentQ1」を検出した場合には、属性値「CurrentQ1」をデータ値層に登録する。そして、インデックス生成部113は、属性値「CurrentQ1」に対応するインデックス(ビットマップ)の、出現位置「3」に対するビットに「1」を書き込む。
インデックス生成部113は、要素値として「10000」を検出した場合には、要素値「10000」をデータ値層に登録する。そして、インデックス生成部113は、要素値「10000」に対応するインデックス(ビットマップ)の、出現位置「8」に対するビットに「1」を書き込む。
このようにして、インデックス生成部113は、9ブロック目に対して、開始タグのタグ名、属性名、属性値、要素値および終了タグのタグ名を順次検出し、下位インデックスを生成すれば良い。
[オフセットの割り振り方]
図8は、下位インデックスのオフセットの割り振り方を説明する図である。図8上図は、下位インデックスのオフセットを、開始タグの先頭位置、要素値の先頭位置および終了タグの先頭位置で割り振った場合である。開始タグの先頭位置は、「<Sales・・・>」の「S」の位置である。要素値の先頭位置は、「10000」の「1」の位置である。終了タグの先頭位置は、「</Sales>」の「S」の位置である。そして、開始タグの先頭位置、要素値の先頭位置および終了タグの先頭位置には、オフセットとしてそれぞれ「1」、「2」、「3」が割り振られている。
図8上図に示すように、下位インデックスから、開始タグ中に属性名が有るか否かは特定できるが、属性名に対応する属性値は特定できない。ここでは、属性名として「contextRef=」、「unitRef=」および「decimals=」がオフセット「1」に有ることは特定できる。ところが、属性名「contextRef=」に対応する属性値が「CurrentQ1」、「JPY」、「0」および「10000」のいずれかであるのかが特定できない。同様に、属性名「unitRef=」に対応する属性値が「CurrentQ1」、「JPY」、「0」および「10000」のいずれかであるのかが特定できない。属性名「decimals=」に対応する属性値が「CurrentQ1」、「JPY」、「0」および「10000」のいずれかであるのかが特定できない。
これに対して、図8下図は、下位インデックスのオフセットを、開始タグの先頭位置、属性名の先頭位置、属性値の先頭位置、要素値の先頭位置および終了タグの先頭位置で割り振った場合である。開始タグの先頭位置は、「<Sales」の「S」の位置である。属性値の先頭位置は、「contextRef=」の「c」の位置、「unitRef=」の「u」の位置、「decimals=」の「d」の位置である。属性値の先頭位置は、「CurrentQ1」の「C」の位置、「JPY」の「J」の位置、「0」の「0」の位置、要素値の先頭位置は、「10000」の「1」の位置である。終了タグの先頭位置は、「</Sales>」の「S」の位置である。そして、開始タグの先頭位置、属性名の先頭位置、属性値の先頭位置、要素値の先頭位置および終了タグの先頭位置には、それぞれオフセットが割り振られている。
図8下図に示すように、下位インデックスから、開始タグ中に属性名が有るか否かを特定できるだけでなく、属性名に対応する属性値も特定できる。すなわち、属性名が位置するオフセットの右側のオフセットに位置するデータ値が、当該属性名に対応する属性値であることがわかる。ここでは、属性名「contextRef=」に対応する属性値は、「CurrentQ1」である。属性名「unitRef=」に対応する属性値は、「JPY」であることがわかる。属性名「decimals=」に対応する属性値は、「0」であることがわかる。また、終了タグが位置するオフセットの左側のオフセットに位置するデータ値が、当該要素名に対応する要素値であることがわかる。ここでは、要素名「Sales」に対応する要素値は、「10000」である。
このように、図8下図で示したように、下位インデックスのオフセットは、開始タグ、属性名、属性値、要素値および終了タグで割り振られると良い。
[インデックス生成処理のフローチャート]
図9は、実施例1に係るインデックス生成処理のフローチャートの一例を示す図である。なお、圧縮されたXBRLデータをZipファイルとして説明する。
Zipファイルを受け付けた伸長部111は、当該Zipファイルを伸長する(ステップS11)。字句解析部112は、伸長データを字句解析する(ステップS12)。
続いて、インデックス生成部113は、伸長データのブロックを選択する(ステップS13)。インデックス生成部113は、選択したブロックの開始タグを検出する(ステップS14)。そして、インデックス生成部113は、検出した開始タグのタグ名を上位インデックスのインデックス情報122のタグ層に登録する(ステップS15)。インデックス生成部113は、上位インデックスのインデックス情報122において、検出した開始タグに対する、選択したブロックのブロックNoのビットをONに設定する(ステップS16)。
そして、インデックス生成部113は、伸長データ内のブロックの開始アドレスをブロックテーブル121に設定する(ステップS17)。
そして、インデックス生成部113は、伸長データの終点であるか否かを判定する(ステップS18)。伸長データの終点でないと判定した場合には(ステップS18;No)、インデックス生成部113は、次のブロックを選択すべく、ステップS13に移行する。
一方、伸長データの終点であると判定した場合には(ステップS18;Yes)、インデックス生成部113は、伸長データのブロックを選択する(ステップS19)。
そして、インデックス生成部113は、開始タグのタグ名を、選択したブロックに対する下位インデックスのインデックス情報122のタグ層に登録する(ステップS20)。インデックス生成部113は、選択したブロックに対する下位インデックスのインデックス情報122において、開始タグのタグ名に対するブロック内のオフセットのビットをONに設定する(ステップS21)。
そして、インデックス生成部113は、選択したブロックについて、属性名を検出したか否かを判定する(ステップS22)。属性名を検出したと判定した場合には(ステップS22;Yes)、インデックス生成部113は、検出した属性名を、選択したブロックに対する下位インデックスのインデックス情報122の属性層に登録する(ステップS23)。そして、インデックス生成部113は、選択したブロックに対する下位インデックスのインデックス情報122において、検出した属性名に対するブロック内のオフセットのビットをONに設定する(ステップS24)。
そして、インデックス生成部113は、属性値を、選択したブロックに対する下位インデックスのインデックス情報122のデータ値層に登録する(ステップS25)。そして、インデックス生成部113は、選択したブロックに対する下位インデックスのインデックス情報122において、属性値に対するブロック内のオフセットのビットをONに設定する(ステップS26)。そして、インデックス生成部113は、ステップS27に移行する。
一方、属性名を検出していないと判定した場合には(ステップS22;No)、インデックス生成部113は、開始タグの終了記号を検出したか否かを判定する(ステップS27)。開始タグの終了記号を検出していないと判定した場合には(ステップS27;No)、インデックス生成部113は、次の属性名を検出すべく、ステップS22に移行する。
一方、開始タグの終了記号を検出したと判定した場合には(ステップS27;Yes)、インデックス生成部113は、開始タグの開始記号を検出したか否かを判定する(ステップS28)。開始タグの開始記号を検出したと判定した場合には(ステップS28;Yes)、インデックス生成部113は、ステップS20に移行する。
一方、開始タグの開始記号を検出していないと判定した場合には(ステップS28;No)、インデックス生成部113は、要素値を、選択したブロックに対する下位インデックスのインデックス情報122のデータ値層に登録する(ステップS29)。そして、インデックス生成部113は、選択したブロックに対する下位インデックスのインデックス情報122において、要素値に対するブロック内のオフセットのビットをONに設定する(ステップS30)。
そして、インデックス生成部113は、終了タグのタグ名を、選択したブロックに対する下位インデックスのインデックス情報122のタグ層に登録する(ステップS31)。インデックス生成部113は、選択したブロックに対する下位インデックスのインデックス情報122において、終了タグのタグ名に対するブロック内のオフセットのビットをONに設定する(ステップS32)。そして、インデックス生成部113は、終了タグの終了記号を検出する(ステップS33)。
そして、インデックス生成部113は、開始タグの開始記号を検出したか否かを判定する(ステップS34)。開始タグの開始記号を検出したと判定した場合には(ステップS34;Yes)、インデックス生成部113は、ステップS20に移行する。
一方、開始タグの開始記号を検出していないと判定した場合には(ステップS34;No)、インデックス生成部113は、終了タグの開始記号を検出したか否かを判定する(ステップS35)。終了タグの開始記号を検出したと判定した場合には(ステップS35;Yes)、インデックス生成部113は、ステップS31に移行する。
一方、終了タグの開始記号を検出していないと判定した場合には(ステップS35;No)、インデックス生成部113は、ブロックの終点を検出する(ステップS36)。そして、インデックス生成部113は、伸長データの終点であるか否かを判定する(ステップS37)。伸長データの終点でないと判定した場合には(ステップS37;No)、インデックス生成部113は、次のブロックを選択すべく、ステップS19に移行する。
一方、伸長データの終点であると判定した場合には(ステップS37;Yes)、インデックス生成部113は、インデックス生成処理を終了する。
[実施例1に係る検索装置の構成]
図10は、実施例1に係る検索装置の構成を示す機能ブロック図である。検索装置200は、項目および値の組み合わせにより記述されたXBRLデータに対する特定の項目および値を含む検索条件を受け付け、インデックス情報122を参照し、受け付けた検索条件を検索する。
図10に示すように、検索装置200は、制御部210および記憶部220を有する。
記憶部220は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部220は、XBRLデータ(圧縮形式)221、ブロックテーブル121およびインデックス情報122を有する。なお、ブロックテーブル121およびインデックス情報122は、インデックス生成装置100によって生成される情報であり、例えば、ネットワークを介して取得され、記憶部220に記憶される。
XBRLデータ(圧縮形式)221は、圧縮形式のXBRLデータである。例えば、XBRLデータ(圧縮形式)221は、Zip形式により圧縮されたXBRLデータである。
制御部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、ブロック読出部214および検索対象抽出部215を有する。なお、検索クエリ解析部211は、受付部の一例である。オフセット検索部213、ブロック読出部214および検索対象抽出部215は、検索部の一例である。
検索クエリ解析部211は、検索クエリを入力し、入力した検索クエリを解析する。例えば、検索クエリ解析部211は、検索クエリを解析し、検索条件および検索対象を抽出する。検索条件には、要素名、タグ名、属性名並びに属性値または要素値を示すキーワードが挙げられる。検索対象には、値を検索したい属性名または要素名を示すキーワードが挙げられる。
伸長部212は、XBRLデータ(圧縮形式)221を入力し、入力したXBRLデータ(圧縮形式)221を伸長する。ここでいうXBRLデータ(圧縮形式)221は、例えば企業によって提出されたXBRLデータをZip形式により圧縮されたものである。
オフセット検索部213は、インデックス情報122を参照し、検索条件に合致する検索対象を検索する。例えば、オフセット検索部213は、上位インデックスのインデックス情報122を参照し、検索条件の要素名に対応するインデックス(ビットマップ)を抽出する。オフセット検索部213は、抽出したビットマップに「1」が設定されたブロックNoを取得する。オフセット検索部213は、検出したブロックNoに対応する下位インデックスのインデックス情報122を抽出する。オフセット検索部213は、抽出した下位インデックスのインデックス情報122を参照し、検索条件に合致する検索対象のオフセットを絞り込む。
ブロック読出部214は、伸長されたXBRLデータから、取得されたブロックNoに対応するブロックを読み出す。例えば、ブロック読出部214は、ブロックテーブル121から、取得されたブロックNoに対応するXBRLデータ内のアドレス121bを取得する。ブロック読出部214は、伸長部212によって伸長されたXBRLデータから、取得したアドレスに対応付けられるブロックを読み出す。
検索対象抽出部215は、対象のブロックから検索対象を抽出する。例えば、検索対象抽出部215は、ブロック読出部214によって読み出されたブロックから、オフセット検索部213によって絞り込まれたオフセットの検索対象を抽出する。
[オフセット検索処理の流れ]
ここで、実施例1に係るオフセット検索処理の流れの一例を、図11および図12を参照して説明する。図11および図12は、実施例1に係るオフセット検索処理の流れの一例を示す図である。
図11では、検索クエリが、日付が“2016年”であるcontext要素のid属性値を検索する場合である。検索クエリ解析部211は、検索クエリを解析し、検索条件および検索対象を抽出する。ここでは、検索条件として、context要素である「<context>」、日付を示すinstant要素である「<instant>」、日付を示すインスタント要素の要素値である「2016」が抽出される。検索対象として、値を検索したいid属性名である「id=」が抽出される。
そして、オフセット検索部213は、上位インデックスのインデックス情報122を参照し、検索条件の要素名に対応するインデックス(ビットマップ)を抽出し、抽出したビットマップに「1」が設定されたブロックNoを取得する。ここでは、検索条件の要素名は、「<context>」である。すると、オフセット検索部213は、上位インデックスのインデックス情報122を参照し、「<context>」に対応するビットマップを抽出する。そして、オフセット検索部213は、抽出したビットマップに「1」が設定されたブロックNoとして「3」を取得する(a1)。
そして、オフセット検索部213は、検出したブロックNo「3」に対応する下位インデックスのインデックス情報122を抽出する(a2)。
そして、オフセット検索部213は、抽出した下位インデックスのインデックス情報122を参照し、検索条件に合致する検索対象のオフセットを絞り込む。
ここでは、オフセット検索部213は、日付を示すinstant要素である「<instant>」の終了位置のオフセットを取得する。すなわち、オフセット検索部213は、instant要素の終了タグ「</instant>」に対応するビットマップを抽出し、抽出したビットマップに「1」が設定されたオフセット「14」を取得する(a3)。
そして、オフセット検索部213は、instant要素の値を検索すべく、instant要素の終了タグのオフセットの1つ前のオフセット「13」に「1」が設定されたデータ値を取得する(a4、a5)。取得されたデータ値は、「2016−06−30」である。そして、オフセット検索部213は、取得されたデータ値「2016−06−30」が検索条件に含まれる日付を示すinstant要素の要素値「2016」であることを確認する。
続いて、オフセット検索部213は、検索対象として抽出されたid属性名である「id=」の開始位置のオフセットを取得する。すなわち、オフセット検索部213は、「id=」に対応するビットマップを抽出し、抽出したビットマップに「1」が設定されたオフセット「2」を取得する(a6)。
そして、オフセット検索部213は、id属性の値のオフセットを検索すべく、id属性のオフセットの1つ後のオフセット「3」を検索する(a7、a8)。これにより、オフセット検索部213は、日付が“2016年”であるcontext要素のid属性値のオフセットとして「3」を検索することができる。
図12では、検索クエリが、コンテキストが“CurrentQ1”であるSales要素の値を検索する場合である。検索クエリ解析部211は、検索クエリを解析し、検索条件および検索対象を抽出する。ここでは、検索条件として、Sales要素である「<Sales>」、コンテキストの属性である「contextRef=」、コンテキストの属性値である「CurrentQ1」が抽出される。検索対象として、値を検索したいSales要素名である「<Sales>」が抽出される。
そして、オフセット検索部213は、上位インデックスのインデックス情報122を参照し、検索条件の要素名に対応するインデックス(ビットマップ)を抽出し、抽出したビットマップに「1」が設定されたブロックNoを取得する。ここでは、検索条件の要素名は、「<Sales>」である。すると、オフセット検索部213は、上位インデックスのインデックス情報122を参照し、「<Sales>」に対応するビットマップを抽出し、抽出したビットマップに「1」が設定されたブロックNoとして「9」を取得する(b1)。
そして、オフセット検索部213は、検出したブロックNo「9」に対応する下位インデックスのインデックス情報122を抽出する(b2)。
そして、オフセット検索部213は、抽出した下位インデックスのインデックス情報122を参照し、検索条件に合致する検索対象のオフセットを絞り込む。
ここでは、オフセット検索部213は、コンテキストの属性である「contextRef=」のオフセットを取得する。すなわち、オフセット検索部213は、「contextRef」に対応するビットマップを抽出し、抽出したビットマップに「1」が設定されたオフセット「2」を取得する(b3)。
そして、オフセット検索部213は、contextRef属性の値を検索すべく、contextRef属性のオフセットの1つ後のオフセット「3」に「1」が設定されたデータ値を取得する(b4、b5)。取得されたデータ値は、「CurrentQ1」である。そして、オフセット検索部213は、取得されたデータ値「CurrentQ1」が検索条件に含まれるコンテキストの属性値「CurrentQ1」であることを確認する。
続いて、オフセット検索部213は、検索対象として抽出されたSales要素である「<Sales>」の終了位置のオフセットを取得する。すなわち、オフセット検索部213は、Sales要素の終了タグ「</Sales>」に対応するビットマップを抽出し、抽出したビットマップに「1」が設定されたオフセット「9」を取得する(b6)。
そして、オフセット検索部213は、Sales要素の値を検索すべく、Sales要素の終了タグのオフセットの1つ前のオフセット「8」を検索する(b7、b8)。これにより、オフセット検索部213は、コンテキストが“CurrentQ1”であるSales要素の値のオフセットとして「8」を検索することができる。
[検索対象抽出処理の流れ]
ここで、実施例1に係る検索対象抽出処理の流れの一例を、図13を参照して説明する。図13は、実施例1に係る検索対象抽出処理の流れの一例を示す図である。なお、オフセット検索部213が、ブロックNoとして「9」を取得し、オフセットとして「8」を検索した場合とする。
ブロック読出部214は、ブロックテーブル121から、取得されたブロックNoに対応するXBRLデータ内のアドレス121bを取得する(c1)。ここでは、取得されたブロックNo「9」に対応するXBRLデータ内のアドレス121bとして「A700h」が取得される。
そして、ブロック読出部214は、伸長部212によって伸長されたXBRLデータから、取得したアドレス「A700h」に対応付けられるブロックを読み出す(c2)。
続いて、検索対象抽出部215は、ブロック読出部214によって読み出されたブロックから、検索されたオフセットの位置の検索対象を抽出する(c3)。ここでは、検索対象抽出部215は、読み出されたブロックから、オフセットとして検索された「8」の位置にある検索対象として「10000」を抽出する。そして、検索対象抽出部215は、抽出した「10000」を検索結果として出力する。
[検索処理のフローチャート]
図14は、実施例1に係る検索処理のフローチャートの一例を示す図である。なお、圧縮されたXBRLデータをZipファイルとして説明する。
検索クエリ解析部211は、検索クエリを受け付けたか否かを判定する(ステップS41)。検索クエリを受け付けていないと判定した場合には(ステップS41;No)、検索クエリ解析部211は、検索クエリを受け付けるまで、判定処理を繰り返す。
一方、検索クエリを受け付けたと判定した場合には(ステップS41;Yes)、検索クエリ解析部211は、検索クエリを解析し、検索条件および検索対象を抽出する(ステップS42)。
そして、伸長部212は、Zipファイルを伸長する(ステップS43)。
続いて、オフセット検索部213は、上位インデックスのインデックス情報122を参照し、検索条件の要素名に対応するブロックNoを取得する(ステップS44)。そして、オフセット検索部213は、取得したブロックNoの下位インデックスのインデックス情報122を参照し、検索条件に合致する検索対象のオフセットを絞り込む(ステップS45)。
続いて、ブロック読出部214は、伸長データから、取得ブロックNoに対応するブロックを読み出す(ステップS46)。そして、検索対象抽出部215は、読み出したブロックから、絞り込んだオフセットの位置にある値を抽出する(ステップS47)。そして、検索対象抽出部215は、抽出した値を検索結果として出力し、検索処理を終了する。
[実施例1に係る検索フローの一例]
図15は、実施例1に係る検索フローの一例を示す図である。なお、図15では、図26で示した参考例の検索フローと比較するために、TDnetを利用する場合を説明する。しかしながら、検索フローは、TDnetを利用する場合に限定されるものではない。
図15に示すように、企業は、TDnetを利用して、財務情報のXBRLデータをZipにより圧縮したZipファイルを提出する(S101)。
審査官側では、審査官が、Zipファイルを解凍(伸長)し、伸長したXBRLデータをチェックする(S102)。審査官が、承認したXBRLデータのZipファイルをTDnetのDBに格納し(S103)、当該XBRLデータを開示する。ここでいう審査官とは、例えば、金融機関であったり、証券取引所であったりする。
そして、インデックス生成装置100が、XBRLデータを字句解析し、ブロックテーブル121とインデックス情報122とを生成し、TDnetの内部メモリに格納する(S104)。なお、かかる処理は、例えば、字句解析部112およびインデックス生成部113に対応する。
クライアント(投資家)側では、投資家が、TDnetを利用して、企業を検索し(S105)、調査対象の企業を決定する(S106)。投資家は、TDnetを利用して、決定した企業のXBRLデータに対するZipファイルとブロックテーブル121とインデックス情報122とをローカルフォルダに保存する(S107)。
続いて、投資家は、Zipファイルとブロックテーブル121とインデックス情報122とを検索装置200の専用クライアントアプリに入力する(S108)。
さらに、投資家は、検索装置200の専用クライアントアプリに、検索対象である要素の検索ワードまたは検索対象である値の検索ワードを入力する(S109)。すなわち、投資家は、検索装置200に検索クエリを入力する。すると、専用クライアントアプリは、検索クエリを解析し、検索条件および検索対象を抽出する。なお、かかる処理は、例えば、検索クエリ解析部211に対応する。
そして、専用クライアントアプリは、インデックス情報122により検索条件に合致する検索対象のオフセットの位置を絞り込み、ブロックテーブル121を使って絞り込んだオフセットの位置をXBRLデータ上のオフセットの位置に変換する(S110)。そして、投資家は、保存したZipファイルを解凍(伸長)する(S111)。そして、専用クライアントアプリは、伸長したXBRLデータ上の、変換されたオフセットの位置の値を抽出して表示する(S112)。なお、かかる処理は、例えば、オフセット検索部213、伸長部212および検索対象抽出部215に対応する。
[実施例1の効果]
このようにして、上記実施例1では、インデックス生成装置100が、項目および値の組み合わせにより記述されたXBRLデータを入力する。インデックス生成装置100は、XBRLデータに含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報122を生成する。かかる構成によれば、インデックス生成装置100は、インデックス情報122を用いることで、XBRLデータについて、項目と値とを組み合わせた検索条件で効率的に検索対象を検索することが可能となる。すなわち、インデックス生成装置100は、インデックス情報122を用いることで、XBRLデータを走査しないで検索対象を絞り込むことができ、効率的に検索対象を検索できる。
また、上記実施例1では、検索装置200が、項目および値の組み合わせにより記述されたXBRLデータに対する特定の項目および値を含む検索条件を受け付ける。検索装置200は、XBRLデータに含まれる項目および値それぞれについての項目および値それぞれの出現位置に関するインデックス情報122を参照し、検索条件を検索する。かかる構成によれば、検索装置200は、インデックス情報122を用いることで、XBRLデータの解析を改めて行うことなく、項目および値を指定した検索を行うことができる。
ところで、実施例1に係るインデックス生成装置100は、XBRLデータに含まれる項目および値それぞれについて、項目および値それぞれの出現位置に関するインデックス情報122を生成すると説明した。しかしながら、インデックス生成装置100は、これに限定されず、XBRLデータを符号化する際に、XBRLデータに含まれる項目および値それぞれについて、符号化された項目および符号化された値それぞれの出現位置に関するインデックス情報122を生成しても良い。
そこで、実施例2に係るインデックス生成装置100が、XBRLデータを符号化する際に、XBRLデータに含まれる項目および値それぞれについて、符号化された項目および符号化された値それぞれの出現位置に関するインデックス情報122Aを生成する場合を説明する。
[実施例2に係るインデックス生成装置の構成]
図16は、実施例2に係るインデックス生成装置の機能構成を示すブロック図である。なお、図1に示すインデックス生成装置100と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、インデックス生成部113をインデックス生成部113Aに変更した点にある。また、実施例1と実施例2とが異なるところは、符号化部311を追加した点にある。また、実施例1と実施例2とが異なるところは、ブロックテーブル121およびインデックス情報122をそれぞれブロックテーブル121Aおよびインデックス情報122Aに変更した点にある。また、実施例1と実施例2とが異なるところは、静的辞書321および動的辞書322を追加した点にある。
静的辞書321とは、一般的な英語辞典、国語辞典や教科書などを基にして、様々な文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。静的辞書321には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。これに対して、動的辞書322とは、静的辞書321に登録されていない単語と、動的に付された動的コード(符号)とを対応付けた辞書である。静的辞書321に登録されていない単語には、一例として、出現頻度の低い単語(低頻度単語)、タグ、数値、日付などがある。動的辞書322には、静的辞書321に登録されていない単語の出現順に、動的コードに対応付けられた単語がバッファ部に登録される。
ここで、動的辞書322の一例を、図17を参照して説明する。図17は、実施例2に係る動的辞書の一例を示す図である。図17に示される動的辞書322は、バッファ部D1とアドレステーブルD2とを含む。バッファ部D1は、文字列を記憶する。アドレステーブルD2は、動的コードと、格納位置と、データ長とを対応付けて保持する。動的コードは、あらかじめ定められた固定長の符号であり、例えば圧縮符号である。そして、動的コードは、単語の文字列が登録された順に割り当てられる。ここでは、動的コードは、16進数「A」で始まる固定長2バイトのコードである。格納位置は、バッファ部D1に格納された文字列の位置を示す。データ長は、バッファ部D1に格納された文字列の長さ(バイト長)を示す。
一例として、属性値の文字列「CurrentQ1」に動的コードが割り当てられる場合について説明する。インデックス生成装置100は、文字列「CurrentQ1」をバッファ部D1に格納する。インデックス生成装置100は、文字列を格納した格納位置および格納したデータ長をアドレステーブルD2に登録する。ここでは、インデックス生成装置100は、格納位置として「21」、データ長として「10」をアドレステーブルD2に登録する。そして、インデックス生成装置100は、属性値の文字列「CurrentQ1」に動的コードとして「A003」を割り当てる。
ブロックテーブル121Aは、XBRLデータに含まれる各データに対する各符号について、XBRLデータを符号化した符号化データ内のアドレスとブロックの番号とを対応付けて記憶する。
ここで、ブロックテーブル121Aの一例を、図18を参照して説明する。図18は、実施例2に係るブロックテーブルの一例を示す図である。図18に示すように、ブロックテーブル121Aは、ブロックNo121aと符号化データ内のアドレス121cとを対応付けて記憶する。ブロックNo121aは、ブロックの番号を示す。符号化データ内のアドレス121cは、XBRLデータを符号化した符号化データに含まれるブロックの先頭アドレスを示す。一例として、ブロックNo121aが「1」である場合に、符号化データ内のアドレス121cとして「0」を記憶している。ブロックNo121aが「2」である場合に、符号化データ内のアドレス121cとして「201」を記憶している。
図16に戻って、符号化部311は、静的辞書321および動的辞書322に基づいて、XBRLデータを字句解析した結果得られるタグ名、属性名およびデータ値を順次符号化対象として符号化する。
例えば、符号化部311は、XBRLデータを字句解析した結果の各符号化対象を順次選択する。符号化部311は、選択された符号化対象が静的辞書321に登録されているか否かを判定する。符号化部311は、選択された符号化対象が静的辞書321に登録されている場合には、当該符号化対象を静的辞書321に登録されている静的コード(符号コード)に符号化する。
また、符号化部311は、選択された符号化対象が静的辞書321に登録されていない場合には、当該符号化対象を動的辞書322に基づいて符号化する。一例として、符号化部311は、符号化対象が動的辞書322のバッファ部D1に格納されているか否かを判定する。符号化部311は、符号化対象が動的辞書322のバッファ部D1に格納されていない場合には、当該符号化対象をバッファ部D1に格納するとともに、当該符号化対象を格納した格納位置およびデータ長をアドレステーブルD2に格納する。符号化部311は、符号化対象を、当該符号化対象に対応付けられた、アドレステーブルD2の動的コード(符号コード)に符号化する。また、符号化部311は、符号化対象が動的辞書322のバッファ部D1に格納されている場合には、当該符号化対象を、当該符号化対象に対応する動的コード(符号コード)に符号化する。
また、符号化部311は、符号コードを符号化データの記憶領域に書き込む。
インデックス生成部113Aは、XBRLデータに含まれる項目および値それぞれについて、符号化された項目および符号化された値それぞれの出現位置に関するインデックス情報122Aを生成する。例えば、インデックス生成部113Aは、XBRLデータの各ブロックの先頭の開始タグのタグ名に対して、当該タグ名に対する符号コードのブロック内の出現位置にビットを立てる。すなわち、インデックス生成部113Aは、上位インデックスのインデックス情報122Aを生成する。そして、インデックス生成部113Aは、XBRLデータのブロックごとに、ブロックに含まれる開始タグと終了タグのタグ名に対して、当該タグ名に対する符号コードのブロック内の出現位置にビットを立てる。インデックス生成部113Aは、XBRLデータのブロックごとに、ブロックに含まれる属性名に対して、当該属性名に対する符号コードのブロック内の出現位置にビットを立てる。インデックス生成部113Aは、XBRLデータのブロックごとに、ブロックに含まれる要素値と属性値に対して、当該値に対する符号コードのブロック内の出現位置にビットを立てる。すなわち、インデックス生成部113Aは、下位インデックスのインデックス情報122Aを生成する。そして、インデックス生成部113Aは、それぞれのブロックに対して、ブロックNoと符号化データ内のアドレスとを対応付けてブロックテーブル121Aに格納する。なお、下位インデックスのインデックス情報122Aのタグ層のタグ名に対する符号コード、属性層の属性名に対する符号コードおよびデータ値層のデータ値に対する符号コードは、予め登録されるようにしても良い。あるいは、インデックス生成部113Aが、符号化される、タグ名、属性名およびデータ値のそれぞれのインデックスを生成する際に、インデックス情報122A内のタグ層、属性層およびデータ値層のそれぞれの領域に登録するようにしても良い。以降では、インデックス生成部113Aが、インデックス情報122Aを生成する際に、タグ層のタグ名等を登録する場合を説明する。
[インデックス生成処理の流れ]
ここで、実施例2に係るインデックス生成処理の流れの一例を、図19Aおよび図19Bを参照して説明する。
図19Aは、実施例2に係る上位インデックスのインデックス生成処理の流れの一例を示す図である。図19Aに示すように、インデックス生成部113Aは、XBRLデータのブロックを選択する。ここでは、インデックス生成部113Aは、XBRLデータの3ブロック目を選択したとする。
すると、インデックス生成部113Aは、選択したブロックの開始タグのタグ名を符号化部311に符号化させる。例えば、符号化部311は、タグ名が静的辞書321に登録されている(符号あり)場合には、タグ名を登録されている静的コードに符号化する。符号化部311は、タグ名が静的辞書321に登録されていない(符号なし)場合には、当該タグ名を動的辞書322に基づいて符号化する。例えば、符号化部311は、タグ名が動的辞書322のバッファ部D1に格納されていない場合には、当該タグ名をバッファ部D1に格納するとともに、当該タグ名を格納した格納位置およびデータ長をアドレステーブルD2に格納する。符号化部311は、格納したタグ名を、当該タグ名に対応付けられた、アドレステーブルD2の動的コードに符号化する。符号化部311は、タグ名が動的辞書322のバッファ部D1に格納されている場合には、当該タグ名を、当該タグ名に対応する動的コードに符号化する。
ここでは、開始タグのタグ名「<context>」が静的辞書321に登録されているとする。すると、符号化部311は、タグ名「<context>」を静的辞書321に登録されている静的コード「xxx1」に符号化する。
そして、インデックス生成部113Aは、符号化された符号コード「xxx1」を符号化データのエリアに格納する。
そして、インデックス生成部113Aは、ブロックの開始タグのタグ名に対して、当該タグ名に対する符号コードのブロック出現位置にビットを立てる。ここでは、インデックス生成部113Aは、3ブロック目の開始タグのタグ名「<context>」に対する符号コード「xxx1」をタグ層に登録する。そして、インデックス生成部113Aは、開始タグのタグ名に対して、当該タグ名に対する符号コードのブロックの出現位置のビットを「1」(ON)に設定する。
そして、インデックス生成部113Aは、選択したブロックに対して、ブロックNoと符号化データ内のアドレスとを対応付けてブロックテーブル121Aに格納する。ここでは、インデックス生成部113Aは、ブロックNo「3」と符号化データ内のアドレス「355」とを対応付けてブロックテーブル121Aに格納する。
図19Bは、実施例2に係る下位インデックスのインデックス生成処理の流れの一例を示す図である。ここでは、XBRLデータ内の3ブロック目の下位インデックスの生成処理について説明する。この3ブロック目では、context要素の下位インデックスが生成される。
図19Bに示すように、インデックス生成部113Aは、タグを検出した場合には、タグのタグ名を符号化部311に符号化させる。ここでは、インデックス生成部113Aは、タグを検出した場合には、タグのタグ名「<context>」を符号化部311に符号化させる。タグ名「<context>」は、動的コード「xxx1」に符号化される。
そして、インデックス生成部113Aは、符号化された符号コードを符号化データのエリアに格納する。なお、タグがブロックの開始タグである場合には、インデックス生成部113Aは、開始タグに対する符号コードを符号化データのエリアに格納する処理を行わない。開始タグに対する符号コードは、既に上位インデックスの生成処理で符号化データのエリアに格納されているからである。
そして、インデックス生成部113Aは、タグのタグ名に対して、当該タグ名に対する符号コードのブロック出現位置にビットを立てる。
インデックス生成部113Aは、属性名を検出した場合には、属性名を符号化部311に符号化させる。ここでは、インデックス生成部113Aは、属性名として「id=」を検出した場合には、属性名「id=」を符号化部311に符号化させる。属性名「id=」は、静的辞書321に登録されているので、静的コード「xx20」に符号化される。
そして、インデックス生成部113Aは、符号化された符号コードを符号化データのエリアに格納する。
そして、インデックス生成部113Aは、属性名に対して、当該属性名に対する符号コードのブロック出現位置にビットを立てる。ここでは、インデックス生成部113Aは、属性名「id=」に対する符号コード「xx20」を属性層に登録する。そして、インデックス生成部113Aは、属性名「id=」に対して、当該属性名に対する符号コード「xx20h」のブロックの出現位置のビットを「1」(ON)に設定する。
また、インデックス生成部113Aは、属性値を検出した場合には、属性値を符号化部311に符号化させる。属性値「CurrentQ1」が、静的辞書321に登録されていないとする。そして、属性値「CurrentQ1」が、動的辞書322のバッファ部D1に格納されていないので、当該属性値を動的辞書322に登録し、アドレステーブルD2に基づいて、登録した属性値に対応する動的コードに符号化する。なお、符号化部311は、属性値「CurrentQ1」が動的辞書322に登録されている場合には、アドレステーブルD2に基づいて、当該属性値を対応する動的コードに符号化する。ここでは、属性値「CurrentQ1」は、動的コード「A000」に符号化される。
そして、インデックス生成部113Aは、符号化された符号コードを符号化データのエリアに格納する。
そして、インデックス生成部113Aは、属性値に対して、当該属性値に対する符号コードのブロック出現位置にビットを立てる。ここでは、インデックス生成部113Aは、属性値「CurrentQ1」に対する符号コード「A000」をデータ値層に登録する。そして、インデックス生成部113Aは、属性値「CurrentQ1」に対して、当該属性値に対する符号コード「A000h」のブロックの出現位置のビットを「1」(ON)に設定する。
また、インデックス生成部113Aは、要素値を検出した場合には、要素値を符号化部311に符号化させる。要素値「67020」が、静的辞書321に登録されていないとする。そして、要素値「67020」が、動的辞書322のバッファ部D1に格納されていないので、当該要素値を動的辞書322に登録し、アドレステーブルD2に基づいて、登録した要素値に対応する動的コードに符号化する。なお、符号化部311は、要素値「67020」が動的辞書322に登録されている場合には、アドレステーブルD2に基づいて、当該要素値を対応する動的コードに符号化する。ここでは、要素値「67020」は、動的コード「A002」に符号化される。
そして、インデックス生成部113Aは、符号化された符号コードを符号化データのエリアに格納する。
そして、インデックス生成部113Aは、要素値に対して、当該要素値に対する符号コードのブロック出現位置にビットを立てる。ここでは、インデックス生成部113Aは、要素値「67020」に対する符号コード「A002」をデータ値層に登録する。そして、インデックス生成部113Aは、属性値「67020」に対して、当該要素値に対する符号コード「A002h」のブロックの出現位置のビットを「1」(ON)に設定する。
[インデックス生成処理のフローチャート]
図20Aは、実施例2に係るインデックス生成処理のフローチャートの一例を示す図である。なお、圧縮されたXBRLデータをZipファイルとして説明する。
Zipファイルを受け付けた伸長部111は、当該Zipファイルを伸長する(ステップS51)。字句解析部112は、伸長データを字句解析する(ステップS52)。
続いて、インデックス生成部113Aは、伸長データのブロックを選択する(ステップS53)。インデックス生成部113Aは、選択したブロックの開始タグを検出する(ステップS54)。そして、インデックス生成部113Aは、検出した開始タグのタグ名を符号化する(ステップS55)。なお、符号化処理のフローチャートは、後述する。
そして、インデックス生成部113Aは、符号化された符号コードを上位インデックスのインデックス情報122Aのタグ層に登録する(ステップS56)。インデックス生成部113Aは、上位インデックスのインデックス情報122Aにおいて、検出した開始タグのタグ名の符号コードに対する、選択したブロックのブロックNoのビットをONに設定する(ステップS57)。
そして、インデックス生成部113Aは、符号化データ内のブロックの開始アドレスをブロックテーブル121Aに設定する(ステップS58)。
そして、インデックス生成部113Aは、選択したブロックについて、属性名を検出したか否かを判定する(ステップS59)。属性名を検出したと判定した場合には(ステップS59;Yes)、インデックス生成部113Aは、検出した属性名を符号化する(ステップS60)。なお、符号化処理のフローチャートは、後述する。
そして、インデックス生成部113Aは、符号化された符号コードを、選択したブロックに対する下位インデックスのインデックス情報122Aの属性層に登録する(ステップS61)。そして、インデックス生成部113Aは、選択したブロックに対する下位インデックスのインデックス情報122Aにおいて、検出した属性名の符号コードに対するブロック内のオフセットのビットをONに設定する(ステップS62)。
そして、インデックス生成部113Aは、属性値を符号化する(ステップS63)。なお、符号化処理のフローチャートは、後述する。そして、インデックス生成部113Aは、符号化された符号コードを、選択したブロックに対する下位インデックスのインデックス情報122Aのデータ値層に登録する(ステップS64)。そして、インデックス生成部113Aは、選択したブロックに対する下位インデックスのインデックス情報122Aにおいて、属性値の符号コードに対するブロック内のオフセットのビットをONに設定する(ステップS65)。そして、インデックス生成部113Aは、ステップS66に移行する。
一方、属性名を検出していないと判定した場合には(ステップS59;No)、インデックス生成部113Aは、開始タグの終了記号を検出したか否かを判定する(ステップS66)。開始タグの終了記号を検出していないと判定した場合には(ステップS66;No)、インデックス生成部113Aは、次の属性名を検出すべく、ステップS59に移行する。
一方、開始タグの終了記号を検出したと判定した場合には(ステップS66;Yes)、インデックス生成部113Aは、開始タグの開始記号を検出したか否かを判定する(ステップS67)。開始タグの開始記号を検出したと判定した場合には(ステップS67;Yes)、インデックス生成部113Aは、ステップS55に移行する。
一方、開始タグの開始記号を検出していないと判定した場合には(ステップS67;No)、インデックス生成部113Aは、要素値を符号化する(ステップS68)。なお、符号化処理のフローチャートは、後述する。そして、インデックス生成部113Aは、符号化された符号コードを、選択したブロックに対する下位インデックスのインデックス情報122Aのデータ値層に登録する(ステップS69)。そして、インデックス生成部113Aは、選択したブロックに対する下位インデックスのインデックス情報122Aにおいて、要素値の符号コードに対するブロック内のオフセットのビットをONに設定する(ステップS70)。
そして、インデックス生成部113Aは、終了タグのタグ名を符号化する(ステップS71)。なお、符号化処理のフローチャートは、後述する。そして、インデックス生成部113Aは、符号化された符号コードを、選択したブロックに対する下位インデックスのインデックス情報122Aのタグ層に登録する(ステップS72)。インデックス生成部113Aは、選択したブロックに対する下位インデックスのインデックス情報122Aにおいて、終了タグのタグ名の符号コードに対するブロック内のオフセットのビットをONに設定する(ステップS73)。そして、インデックス生成部113Aは、終了タグの終了記号を検出する(ステップS74)。
そして、インデックス生成部113Aは、開始タグの開始記号を検出したか否かを判定する(ステップS75)。開始タグの開始記号を検出したと判定した場合には(ステップS75;Yes)、インデックス生成部113Aは、ステップS55に移行する。
一方、開始タグの開始記号を検出していないと判定した場合には(ステップS75;No)、インデックス生成部113Aは、終了タグの開始記号を検出したか否かを判定する(ステップS76)。終了タグの開始記号を検出したと判定した場合には(ステップS76;Yes)、インデックス生成部113Aは、ステップS71に移行する。
一方、終了タグの開始記号を検出していないと判定した場合には(ステップS76;No)、インデックス生成部113Aは、ブロックの終点を検出する(ステップS77)。そして、インデックス生成部113Aは、伸長データの終点であるか否かを判定する(ステップS78)。伸長データの終点でないと判定した場合には(ステップS78;No)、インデックス生成部113Aは、次のブロックを選択すべく、ステップS53に移行する。
一方、伸長データの終点であると判定した場合には(ステップS78;Yes)、インデックス生成部113Aは、インデックス生成処理を終了する。
図20Bは、実施例2に係る符号化処理のフローチャートの一例を示す図である。
図20Bに示すように、符号化部311は、符号化対象を受け取ると(ステップS81)、静的辞書321に符号化対象が登録済みである否かを判定する(ステップS82)。静的辞書321に符号化対象が登録済みであると判定した場合には(ステップS82;Yes)、符号化部311は、静的辞書321に登録されている符号コードを符号化データに書き込む(ステップS83)。そして、符号化部311は、ステップS88に移行する。
一方、静的辞書321に符号化対象が登録済みでないと判定した場合には(ステップS82;No)、符号化部311は、動的辞書322を参照する(ステップS84)。そして、符号化部311は、動的辞書322に符号化対象が登録済みであるか否かを判定する(ステップS85)。
動的辞書322に符号化対象が登録済みであると判定した場合には(ステップS85;Yes)、符号化部311は、ステップS87に移行する。
一方、動的辞書322に符号化対象が登録済みでないと判定した場合には(ステップS85;No)、符号化部311は、符号化対象を動的辞書322に登録する(ステップS86)。そして、符号化部311は、ステップS87に移行する。
ステップS87において、符号化部311は、動的辞書322に登録されている符号コードを符号化データに書き込む(ステップS87)。そして、符号化部311は、ステップS88に移行する。
ステップS88において、符号化部311は、符号コードをインデックス生成処理に戻す(ステップS88)。そして、符号化部311は、符号化処理を終了する。
[実施例2に係る検索装置の構成]
図21は、実施例2に係る検索装置の機能構成を示すブロック図である。なお、図10に示す検索装置200と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、伸長部212を削除した点にある。また、実施例1と実施例2とが異なるところは、オフセット検索部213、ブロック読出部214および検索対象抽出部215を、それぞれオフセット検索部213A、ブロック読出部214Aおよび検索対象伸長部215Aに変更した点にある。また、実施例1と実施例2とが異なる点は、ブロックテーブル121およびインデックス情報122をそれぞれブロックテーブル121Aおよびインデックス情報122Aに変更した点にある。そして、実施例1と実施例2とが異なる点は、静的辞書321および動的辞書322を追加した点にある。なお、ブロックテーブル121A、インデックス情報122Aは、動的辞書322は、実施例2に係るインデックス生成装置100によって生成される情報であり、例えば、ネットワークを介して取得され、記憶部220に記憶される。
オフセット検索部213Aは、インデックス情報122Aを参照し、検索条件に合致する検索対象を検索する。例えば、オフセット検索部213Aは、上位インデックスのインデックス情報122Aを参照し、検索条件の要素名の符号コードに対応するインデックス(ビットマップ)を抽出する。オフセット検索部213Aは、抽出したビットマップに「1」が設定されたブロックNoを取得する。オフセット検索部213Aは、検出したブロックNoに対応する下位インデックスのインデックス情報122Aを抽出する。オフセット検索部213Aは、抽出した下位インデックスのインデックス情報122Aを参照し、検索条件に合致する検索対象のオフセットを絞り込む。
ブロック読出部214Aは、符号化データから、取得されたブロックNoに対応するブロックを読み出す。例えば、ブロック読出部214Aは、ブロックテーブル121Aを参照し、取得されたブロックNoに対応する符号化データ内のアドレス121cを取得する。ブロック読出部214Aは、符号化データから、取得したアドレスに対応付けられるブロックを読み出す。
検索対象伸長部215Aは、対象のブロックから検索対象を抽出し、抽出した検索対象を伸長する。例えば、検索対象伸長部215Aは、ブロック読出部214Aによって読み出されたブロックから、オフセット検索部213Aによって絞り込まれたオフセットの検索対象を抽出する。そして、検索対象伸長部215Aは、静的辞書321および動的辞書322に基づいて、抽出した検索対象を伸長する。
伸長処理の一例として、検索対象伸長部215Aは、抽出した検索対象が動的コードであるか否かを判定する。検索対象伸長部215Aは、抽出した検索対象が動的コードであると判定した場合には、動的辞書322を用いて当該検索対象を伸長する。すなわち、検索対象伸長部215Aは、動的辞書322のアドレステーブルD2から検索対象と合致する動的コードを特定し、特定した動的コードに対応する格納位置およびデータ長を取得する。そして、検索対象伸長部215Aは、バッファ部D1から、取得した格納位置およびデータ長を示す文字列を特定する。特定した文字列が、検索対象を伸長した検索結果である。
[検索対象伸長処理の流れ]
ここで、実施例2に係る検索対象伸長処理の流れの一例を、図22を参照して説明する。図22は、実施例2に係る検索対象伸長処理の流れの一例を示す図である。なお、オフセット検索部213Aが、ブロックNoとして「9」を取得し、オフセットとして「8」を検索した場合とする。
ブロック読出部214Aは、ブロックテーブル121Aから、取得されたブロックNoに対応する符号化データ内のアドレス121cを取得する(d1)。ここでは、取得されたブロックNo「9」に対応する符号化データ内のアドレス121cとして「1200」が取得される。
そして、ブロック読出部214Aは、符号化データから、取得したアドレス「1200」に対応付けられるブロックを読み出す(d2)。
続いて、検索対象伸長部215Aは、ブロック読出部214Aによって読み出されたブロックから、検索されたオフセットの検索対象を抽出する(d3)。ここでは、検索対象伸長部215Aは、読み出されたブロックから、オフセットとして検索された「8」の位置にある検索対象として符号コード「A083」を抽出するとする。「A083」は、動的辞書222において「10000」に割り当てられているとする。すると、検索対象伸長部215Aは、静的辞書321および動的辞書322に基づいて、抽出した符号コード「A083」を伸長する。ここでは、符号コード「A083」は、動的辞書322に登録されているので、検索対象伸長部215Aは、動的辞書322に基づいて「A083」を「10000」に伸長する。そして、検索対象伸長部215Aは、伸長した「10000」を検索結果として出力する(d4)。
[検索処理のフローチャート]
図23は、実施例2に係る検索処理のフローチャートの一例を示す図である。
検索クエリ解析部211は、検索クエリを受け付けたか否かを判定する(ステップS91)。検索クエリを受け付けていないと判定した場合には(ステップS91;No)、検索クエリ解析部211は、検索クエリを受け付けるまで、判定処理を繰り返す。
一方、検索クエリを受け付けたと判定した場合には(ステップS91;Yes)、検索クエリ解析部211は、検索クエリを解析し、検索条件および検索対象を抽出する(ステップS92)。
続いて、オフセット検索部213Aは、上位インデックスのインデックス情報122Aを参照し、検索条件の要素名に対応するブロックNoを取得する(ステップS93)。そして、オフセット検索部213Aは、取得したブロックNoの下位インデックスのインデックス情報122Aを参照し、検索条件に合致する検索対象のオフセットを絞り込む(ステップS94)。
続いて、ブロック読出部214Aは、符号化データから、取得ブロックNoに対応するブロックを読み出す(ステップS95)。例えば、ブロック読出部214Aは、ブロックテーブル121Aを参照し、取得されたブロックNoに対応する符号化データ内のアドレス121cを取得し、取得した符号化データ内のアドレス121cに対応するブロックを、符号化データから読み出す。そして、検索対象伸長部215Aは、読み出したブロックから、絞り込んだオフセットの位置にある符号コードを抽出する(ステップS96)。
そして、検索対象伸長部215Aは、静的辞書321および動的辞書322に基づいて、抽出した符号コードを伸長する(ステップS97)。そして、検索対象伸長部215Aは、伸長した値を検索結果として出力し、検索処理を終了する。
[実施例2に係る検索フローの一例]
図24は、実施例2に係る検索フローの一例を示す図である。なお、図24では、図26で示した参考例の検索フローと比較するために、TDnetを利用する場合を説明する。しかしながら、検索フローは、TDnetを利用する場合に限定されるものではない。
図24に示すように、企業は、TDnetを利用して、財務情報のXBRLデータをZipにより圧縮したZipファイルを提出する(S201)。
審査官側では、審査官が、Zipファイルを解凍(伸長)し、伸長したXBRLデータをチェックする(S202)。審査官が、承認したXBRLデータのZipファイルをTDnetのDBに格納し(S203)、当該XBRLデータを開示する。ここでいう審査官とは、例えば、金融機関であったり、証券取引所であったりする。
そして、インデックス生成装置100が、XBRLデータを字句解析し、符号化データとブロックテーブル121Aとインデックス情報122Aとを生成し、TDnetに格納する(S204)。なお、かかる処理は、例えば、字句解析部112、符号化部311およびインデックス生成部113Aに対応する。
クライアント(投資家)側では、投資家が、TDnetを利用して、企業を検索し(S205)、調査対象の企業を決定する(S206)。
続いて、投資家は、符号化データとブロックテーブル121Aとインデックス情報122Aとを検索装置200の専用クライアントアプリに入力する(S207)。
さらに、投資家は、検索装置200の専用クライアントアプリに、検索対象である要素の検索ワードまたは検索対象である値の検索ワードを入力する(S208)。すなわち、投資家は、検索装置200に検索クエリを入力する。すると、専用クライアントアプリは、検索クエリを解析し、検索条件および検索対象を抽出する。なお、かかる処理は、例えば、検索クエリ解析部211に対応する。
そして、専用クライアントアプリは、インデックス情報122Aにより検索条件に合致する検索対象のオフセットの位置を絞り込む(S209)。そして、専用クライアントアプリは、符号化データ上の、絞り込んだ位置の値を抽出し、抽出した値を伸長する(S210)。そして、専用クライアントアプリは、伸長した結果をクライアント側に通知する(S211)。なお、かかる処理は、例えば、オフセット検索部213A、ブロック読出部214Aおよび検索対象伸長部215Aに対応する。
[実施例2の効果]
このようにして、上記実施例2によれば、インデックス生成装置100は、XBRLデータを符号化する際に、XBRLデータに含まれる項目および値それぞれについて、符号化された項目および符号化された値それぞれの出現位置に関するインデックス情報122Aを生成する。かかる構成によれば、インデックス生成装置100は、インデックス情報122Aを用いることで、XBRLデータについて、XBRLデータを符号化したままで、項目と値とを組み合わせた検索条件で効率的に検索対象を検索することが可能となる。すなわち、インデックス生成装置100は、インデックス情報122Aを用いることで、符号化形式のまま検索対象を絞り込むことができるとともに、XBRLデータを走査しないで検索対象を絞り込むことができる。
また、上記実施例2では、検索装置200が、XBRLデータを符号化する際に生成されたインデックス情報122Aを参照し、検索条件に含まれる特定の項目および特定の値に対する出現位置を特定する。そして、検索装置200は、符号化データから、特定された出現位置に存在する部分データを検索し、検索した部分データを部分伸長する。かかる構成によれば、検証装置200は、符号化形式のままで検索対象を示す部分データを検索することができる。
[その他]
なお、実施例1、2では、インデックス情報122は、上位インデックスのインデックス情報122と下位インデックスのインデックス情報122とを含むと説明した。そして、上位インデックスのインデックス情報122のX軸は、ブロックの番号を表し、Y軸はタグ層のタグ名(要素名)を表す。下位インデックスのインデックス情報122のX軸は、ブロック単位のオフセット(出現位置)を表し、Y軸はタグ層に含まれるタグ名と属性層に含まれる属性名とデータ値層に含まれるデータ値とを表す。しかしながら、インデックス情報122は、これに限定されず、3次元で表わしても良い。すなわち、インデックス情報122は、X軸をブロックの番号、Y軸をタグ層に含まれるタグ名と属性層に含まれる属性名とデータ値層に含まれるデータ値、Z軸をブロック単位のオフセット(出現位置)で表わしても良い。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、インデックス生成部113は、上位インデックスのインデックス情報122の生成処理と下位インデックスのインデックス情報122の生成処理とを分離しても良い。また、オフセット検索部213は、上位インデックスのインデックス情報122から該当する該当するブロックNoを取得する処理と、下位インデックスのインデックス情報122から該当するオフセットを絞り込む処理とを分散しても良い。また、記憶部120をインデックス生成装置100の外部装置としてネットワーク経由で接続するようにしても良い。記憶部220を検索装置200の外部装置としてネットワーク経由で接続するようにしても良い。
図25は、インデックス生成装置および検索装置のハードウェア構成の一例を示す図である。図25に示すように、インデックス生成装置100および検索装置200を含むコンピュータ500は、各種演算処理を実行するCPU501と、ユーザからのデータ入力を受け付ける入力装置502と、モニタ503とを有する。また、コンピュータ500は、記憶媒体からプログラムなどを読み取る媒体読取装置504と、他の装置と接続するためのインターフェース装置505と、他の装置と無線により接続するための無線通信装置506とを有する。また、コンピュータ500は、各種情報を一時記憶するRAM(Random Access Memory)507と、ハードディスク装置508とを有する。また、各装置501〜508は、バス509に接続される。
ハードディスク装置508には、図1に示した制御部110と同様の機能を有するインデックス生成プログラム205bが記憶される。また、ハードディスク装置508には、インデックス生成プログラム205bを実現するための各種データが記憶される。各種データには、図1に示した記憶部120内のデータが含まれる。また、ハードディスク装置508には、図10に示した制御部210と同様の機能を有する検索プログラム205aが記憶される。また、ハードディスク装置508には、検索プログラム205aを実現するための各種データが記憶される。各種データには、図10に示した記憶部220内のデータが含まれる。
CPU501は、ハードディスク装置508に記憶された各プログラムを読み出して、RAM507に展開して実行することで、各種の処理を行う。これらのプログラムは、コンピュータ500を図1および図10に示した各機能部として機能させることができる。
なお、上記のインデックス生成プログラム205bおよび検索プログラム205aは、必ずしもハードディスク装置508に記憶されている必要はない。例えば、コンピュータ500が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ500が読み出して実行するようにしてもよい。コンピュータ500が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリなどの可搬型記録媒体、フラッシュメモリなどの半導体メモリ、ハードディスクドライブなどが対応する。また、公衆回線、インターネット、LAN(Local Area Network)などに接続された装置にこれらプログラムを記憶させておき、コンピュータ500がこれらプログラムを読み出して実行するようにしても良い。
100 インデックス生成装置
110 制御部
111 伸長部
112 字句解析部
113、113A インデックス生成部
120 記憶部
121、121A ブロックテーブル
122、122A インデックス情報
200 検索装置
210 制御部
211 検索クエリ解析部
212 伸長部
213、213A オフセット検索部
214、214A ブロック読出部
215 検索対象抽出部
215A 検索対象伸長部
220 記憶部
221 XBRLデータ(圧縮形式)
311 符号化部
321 静的辞書
322 動的辞書

Claims (11)

  1. コンピュータに、
    項目および値の組み合わせにより記述されたデータを入力し、
    前記データに含まれる項目および値それぞれについて、前記データに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関するインデックス情報を生成する
    処理を実行させるインデックス生成プログラム。
  2. 前記生成する処理は、前記データに含まれる項目、属性および値それぞれについて、前記項目、属性および値それぞれの出現位置に関するインデックス情報を生成する
    処理を実行させる請求項1に記載のインデックス生成プログラム。
  3. 前記生成する処理は、
    前記データに含まれる項目それぞれについて、前記データに含まれるそれぞれのブロックにビットを対応付けるビット列であってブロックの先頭を表す項目に対応するビットに出現ビットが設定されるビット列で表わした、第1のインデックス情報を生成する処理と、
    ブロックごとに、ブロックに含まれる項目および値それぞれについて、前記ブロックに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関する第2のインデックス情報を生成する処理と、を含む
    処理を実行させる請求項2に記載のインデックス生成プログラム。
  4. 前記生成する処理は、前記データを符号化する際に、前記データに含まれる項目および値それぞれについて、符号化された項目および符号化された値それぞれの出現位置に関するインデックス情報を生成する
    処理を実行させる請求項1に記載のインデックス生成プログラム。
  5. 項目および値の組み合わせにより記述されたデータを入力する入力部と、
    前記データに含まれる項目および値それぞれについて、前記データに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関するインデックス情報を生成する生成部と、
    を有することを特徴とするインデックス生成装置。
  6. コンピュータが、
    項目および値の組み合わせにより記述されたデータを入力し、
    前記データに含まれる項目および値それぞれについて、前記データに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関するインデックス情報を生成する
    各処理を実行するインデックス生成方法。
  7. コンピュータに、
    項目および値の組み合わせにより記述されたデータに対する特定の項目および値を含む検索条件を受け付け、
    前記データに含まれる項目および値それぞれについて、前記データに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関するインデックス情報を参照し、前記検索条件を検索する
    処理を実行させる検索プログラム。
  8. 前記検索する処理は、
    圧縮された前記データを伸長し、
    前記インデックス情報を参照し、前記検索条件に含まれる特定の項目および特定の値に対する出現位置を特定し、伸長データから、特定された出現位置に存在する部分データを検索する
    処理を実行させる請求項7に記載の検索プログラム。
  9. 前記検索する処理は、
    前記データを符号化する際に生成された前記インデックス情報を参照し、前記検索条件に含まれる特定の項目および特定の値に対する出現位置を特定し、符号化データから、特定された出現位置に存在する部分データを検索し、検索した部分データを部分伸長する
    処理を実行させる請求項7に記載の検索プログラム。
  10. 項目および値の組み合わせにより記述されたデータに対する特定の項目および値を含む検索条件を受け付ける受付部と、
    前記データに含まれる項目および値それぞれについて、前記データに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関するインデックス情報を参照し、前記検索条件を検索する検索部と、
    を有することを特徴とする検索装置。
  11. コンピュータが、
    項目および値の組み合わせにより記述されたデータに対する特定の項目および値を含む検索条件を受け付け、
    前記データに含まれる項目および値それぞれについて、前記データに出現する項目および値の順にビットを対応付けるビット列であって出現位置に対応するビットに出現ビットが設定されるビット列で表わした、出現位置に関するインデックス情報を参照し、前記検索条件を検索する
    各処理を実行する検索方法。
JP2019511028A 2017-04-06 2017-04-06 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 Expired - Fee Related JP6841322B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/014426 WO2018185921A1 (ja) 2017-04-06 2017-04-06 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法

Publications (2)

Publication Number Publication Date
JPWO2018185921A1 JPWO2018185921A1 (ja) 2019-12-26
JP6841322B2 true JP6841322B2 (ja) 2021-03-10

Family

ID=63712529

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019511028A Expired - Fee Related JP6841322B2 (ja) 2017-04-06 2017-04-06 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法

Country Status (4)

Country Link
US (1) US11520765B2 (ja)
EP (1) EP3608800A4 (ja)
JP (1) JP6841322B2 (ja)
WO (1) WO2018185921A1 (ja)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
JP3719089B2 (ja) 2000-03-16 2005-11-24 松下電器産業株式会社 文書処理装置
US20080147601A1 (en) 2004-09-27 2008-06-19 Ubmatrix, Inc. Method For Searching Data Elements on the Web Using a Conceptual Metadata and Contextual Metadata Search Engine
JP2006185408A (ja) 2004-11-30 2006-07-13 Matsushita Electric Ind Co Ltd データベース構築装置及びデータベース検索装置及びデータベース装置
US7797622B2 (en) * 2006-11-15 2010-09-14 Xerox Corporation Versatile page number detector
JP4839195B2 (ja) * 2006-12-12 2011-12-21 日本電信電話株式会社 Xml文書の適合度の算出方法およびそのプログラムと、情報処理装置
JP4445509B2 (ja) * 2007-03-20 2010-04-07 株式会社東芝 構造化文書検索システム及びプログラム
US9454597B2 (en) * 2007-11-15 2016-09-27 Nec Corporation Document management and retrieval system and document management and retrieval method
JP4688111B2 (ja) * 2008-11-28 2011-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、データベース・システム、情報処理方法、およびプログラム
JP2010267081A (ja) * 2009-05-14 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> 情報検索方法及び装置及びプログラム
US9183288B2 (en) * 2010-01-27 2015-11-10 Kinetx, Inc. System and method of structuring data for search using latent semantic analysis techniques
CN104380286A (zh) * 2012-05-31 2015-02-25 富士通株式会社 索引生成程序以及检索程序
JP2014089646A (ja) * 2012-10-31 2014-05-15 Hitachi Solutions Ltd 電子データ処理装置、及び電子データ処理方法
WO2015173870A1 (ja) * 2014-05-12 2015-11-19 楽天株式会社 情報処理システム、情報処理方法およびプログラム
JP6550765B2 (ja) * 2015-01-28 2019-07-31 富士通株式会社 文字データ変換プログラム、文字データ変換装置および文字データ変換方法
US9697194B2 (en) * 2015-06-08 2017-07-04 International Business Machines Corporation Contextual auto-correct dictionary
JP6536243B2 (ja) * 2015-07-16 2019-07-03 富士通株式会社 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法
WO2018096686A1 (ja) * 2016-11-28 2018-05-31 富士通株式会社 検証プログラム、検証装置、検証方法、インデックス生成プログラム、インデックス生成装置およびインデックス生成方法

Also Published As

Publication number Publication date
JPWO2018185921A1 (ja) 2019-12-26
EP3608800A1 (en) 2020-02-12
US20200034349A1 (en) 2020-01-30
US11520765B2 (en) 2022-12-06
WO2018185921A1 (ja) 2018-10-11
EP3608800A4 (en) 2020-04-01

Similar Documents

Publication Publication Date Title
CN110059320B (zh) 实体关系抽取方法、装置、计算机设备和存储介质
JP6621514B1 (ja) 要約作成装置、要約作成方法、及びプログラム
US8312041B2 (en) Resource description framework network construction device and method using an ontology schema having class dictionary and mining rule
CN113987125B (zh) 基于神经网络的文本结构化信息提取方法、及其相关设备
JP6107513B2 (ja) 情報処理システム、情報処理方法、および情報処理プログラム
US7680333B2 (en) System and method for binary persistence format for a recognition result lattice
WO2012176374A1 (ja) 数値範囲検索装置、数値範囲検索方法、および数値範囲検索プログラム
WO2007139039A1 (ja) 情報分類装置、情報分類方法、及び情報分類プログラム
US7359896B2 (en) Information retrieving system, information retrieving method, and information retrieving program
CN115130435A (zh) 文档处理方法、装置、电子设备和存储介质
CN117931858B (zh) 数据查询方法、装置、计算机设备和存储介质
JP3372532B2 (ja) 感情情報抽出方法および感情情報抽出プログラムの計算機読み取り可能な記録媒体
JP2018018174A (ja) 符号化プログラム、符号化装置、符号化方法、及び検索方法
EP2615565A1 (en) Full outer join processing apparatus and method
US20090049104A1 (en) Method and system for configuring a variety of medical information
JP2001067348A (ja) 構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体
CN107430504A (zh) 数据变换系统及方法
Xu et al. Using SVM to extract acronyms from text
EP2816491A1 (en) Dictionary generation device, dictionary generation method, dictionary generation program and computer-readable recording medium storing same program
JP7685921B2 (ja) 情報処理システム、情報処理方法、および情報処理プログラム
JP6841322B2 (ja) インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP2016018279A (ja) 文書ファイル検索プログラム、文書ファイル検索装置、文書ファイル検索方法、文書情報出力プログラム、文書情報出力装置及び文書情報出力方法
CN118093897B (zh) 一种数据元匹配方法、电子设备及计算机可读存储介质
JP2007279978A (ja) 文書検索装置及び文書検索方法
JP2010262332A (ja) 抽出規則作成システム、抽出規則作成方法及び抽出規則作成プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201217

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: 20210119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210201

R150 Certificate of patent or registration of utility model

Ref document number: 6841322

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees