株式銘柄紹介ブログ

主に日本の株式を紹介しています

PythonでEDINETのXBRLを分析する その8「XBRLインスタンスファイルから値を取得する」

はじめに

前回は要素の日本語名称を取得しました。結果、以下のように各要素が何かわかりやすくなりました。

(number)jppfs_cor_NetSales(売上高)
(number)jppfs_cor_CostOfSales(売上原価)
(number)jppfs_cor_GrossProfit(売上総利益)
(number)jppfs_cor_SellingGeneralAndAdministrativeExpenses(販売費及び一般管理費)
(number)jppfs_cor_OperatingIncome(営業利益)


今回は要素の値を取得するために、XBRLインスタンスファイルを読み込みます。
 

 

関連記事

EDINETのXBRLを分析する大まかな流れを説明しています。

開発環境

  • windows 10 home
  • python 3.7.4
  • K2Editor(テキストエディタ) + コマンドプロンプト

 

使用したpythonの外部ライブラリ

少なくとも以下の外部ライブラリを利用しているのでインストールしていなければpipコマンドでインストールしてください。

  • pysqlite3
  • requests
  • beautifulsoup4
  • lxml

 

XBRLインスタンスファイルの概要

XBRLインスタンスファイルとはXBRL中に存在する要素の値を保存しているファイルのことです。具体的には「jpcrp030000-asr-001_E31037-000_2015-12-31_01_2016-03-30.xbrl」のようにファイル名が「.xbrl」で終わるファイルです。


XBRLインスタンスファイルのおおよその構造は以下の通りです。

<context id='A'> ・・・コンテキストAの定義
    (省略)
</context>
<context id='B'> ・・・コンテキストBの定義
    (省略)
</context>
・・・

<NetSales contextRef="A">1000</NetSales>・・・コンテキストがAの時のNetSalesの値を定義
<NetSales contextRef="B">2000</NetSales>・・・コンテキストがBの時のNetSalesの値を定義
・・・

 
先頭にコンテキストの定義が並んでいて、その下に要素とコンテキスト毎の値が並んでいるといった感じになっています。

値を取得するためには、要素の名前(id)とコンテキストがわかってなければなりません。
 

context要素について

コンテキストとは値が「いつの時点、または期間のものなのか」「連結・単体のどちらに属しているのか」「列方向の奥行のどこに属しているのか」を表すためのものです。

また、コンテキストはXBRLの奥行構造を表すディメンション要素と深いかかわりがあります。ディメンション要素についてはこのページのディメンション要素についての説明で簡単に説明しています。


例えば、

  • 現会計期間
  • 単体決算
  • 株主資本等変動計算書の「資本金」列

を表すコンテキストの定義は以下のとおりです。

<xbrli:context id="CurrentYearDuration_NonConsolidatedMember_CapitalStockMember">
  <xbrli:entity>
    <xbrli:identifier scheme="http://disclosure.edinet-fsa.go.jp">E31037-000</xbrli:identifier>
  </xbrli:entity>
  <xbrli:period>
    <xbrli:startDate>2015-01-01</xbrli:startDate>
    <xbrli:endDate>2015-12-31</xbrli:endDate>
  </xbrli:period>
  <xbrli:scenario>
    <xbrldi:explicitMember dimension="jppfs_cor:ComponentsOfEquityAxis">jppfs_cor:CapitalStockMember</xbrldi:explicitMember>
    <xbrldi:explicitMember dimension="jppfs_cor:ConsolidatedOrNonConsolidatedAxis">jppfs_cor:NonConsolidatedMember</xbrldi:explicitMember>
  </xbrli:scenario>
</xbrli:context>

 

また、このコンテキストに関連する「単体決算の株主資本等変動計算書」のディメンション要素は以下のとおりです。

(table)jppfs_cor_StatementOfChangesInEquityTable(株主資本等変動計算書)
    (axis)jppfs_cor_ConsolidatedOrNonConsolidatedAxis(連結個別)
        (member)jppfs_cor_NonConsolidatedMember(非連結又は個別)
    (axis)jppfs_cor_ComponentsOfEquityAxis(純資産の内訳項目)
        (member)jppfs_cor_NetAssetsMember(純資産合計)
            (member)jppfs_cor_ShareholdersEquityMember(株主資本合計)
                (member)jppfs_cor_CapitalStockMember(資本金)
                (member)jppfs_cor_CapitalSurplusMember(資本剰余金合計)
                    (member)jppfs_cor_LegalCapitalSurplusMember(資本準備金)
                    (member)jppfs_cor_OtherCapitalSurplusMember(その他資本剰余金)
                (member)jppfs_cor_RetainedEarningsMember(利益剰余金合計)
                    (member)jppfs_cor_LegalRetainedEarningsMember(利益準備金)
                    (member)jppfs_cor_OtherRetainedEarningsMember(その他利益剰余金合計)
                        (member)jppfs_cor_ReserveForSpecialDepreciationMember(特別償却準備金)
                        (member)jppfs_cor_GeneralReserveMember(別途積立金)
                        (member)jppfs_cor_RetainedEarningsBroughtForwardMember(繰越利益剰余金)
                (member)jppfs_cor_TreasuryStockMember(自己株式)
            (member)jppfs_cor_ValuationAndTranslationAdjustmentsMember(評価・換算差額等合計)
                (member)jppfs_cor_ValuationDifferenceOnAvailableForSaleSecuritiesMember(その他有価証券評価差額金)

 

context要素のid属性がコンテキストの名称です。コンテキストの名称は「CurrentYearDuration_NonConsolidatedMember_CapitalStockMember」であることがわかります。

コンテキスト名称は'_'で区切られており、

  • 一つ目の文字列が「値がいつの時点、期間のものなのか」
  • 二つ目以降の文字列が「値がどのディメンションに属するのか」

を表しています。

これは命名規則によるものですが、名称からコンテキストがどのようなものであるかおおよそ判断できます。

上記の場合だとCurrentYearDurationなので「現年度の期間」、NonConsolidatedMemberなので「単体決算」、CapitalStockMemberなので「資本金の列」の値を示すコンテキストだとわかります。

以下はコンテキストの命名規則です。



EDINET 報告書インスタンス 作成ガイドライン p31~p32より引用


period要素に実際の期間または時点がいつかが定義されています。上記の場合だと2015-01-01から2015-12-31が現年度の期間であるとわかります。


scenario要素中のexplicitMember要素がディメンションを定義しています。explicitMember要素のdimension属性が軸、要素の値がメンバーを表しています。explicitMember要素が複数ある場合はAND条件でディメンションを定義します。

上記の場合だと「単体決算」かつ「資本金の列」となるディメンションを定義しています。ディメンションはコンテキスト単体でみてもわからないので、「単体決算の株主資本等変動計算書」のディメンション要素も併せて読んでください。
 

値を格納する要素について

以下は値を格納する要素の実例です(1つだけ抜粋)。

<jppfs_cor:NetSales
  contextRef="Prior1YearDuration"
  unitRef="JPY"
  decimals="-3">11062003000</jppfs_cor:NetSales>

 

要素名が表示リンクベースファイル名中の要素名にそのまま対応しています。XBRLインスタンスファイル中の要素名は「jppfs_cor:NetSales」のように名前空間付きの完全名称で記載されていますが、これは要素名の命名規則より「jppfs_cor_NetSales」と同じものです。

contextRef属性が値のコンテキストを定義しています。

unitRef属性が値の単位、demicals属性が表示単位を表しています。上記の場合、値は1000分の1(つまり千単位)に表示され、単位は日本円であるとわかります(日本の有価証券報告書であるにもかかわらずアメリカドル単位の値が存在する場合があるのでunitRef属性はきちんとチェックしたほうが良いです)。

jppfs_cor:NetSales要素の値がそのまま要素の値を定義しています。

XBRLインスタンスファイルから値を取得する方法

XBRLインスタンスファイル中の値は要素名とコンテキスト毎に格納されています。表示リンクベースファイルの構造がわかっているため、要素名は既に分かっています。したがって、あとはコンテキストがわかればXBRLインスタンスファイルから値を取得することが可能です。


コンテキストはディメンション要素から決定します。ここでは単体決算の株主資本等変動計算書を例に、要素のコンテキストを決定する手順を説明します。以下は単体決算の株主資本等変動計算書の構造です。

(None)rol_StatementOfChangesInEquity(None)
     (heading)jppfs_cor_StatementOfChangesInEquityHeading(株主資本等変動計算書)
          (table)jppfs_cor_StatementOfChangesInEquityTable(株主資本等変動計算書)
               (axis)jppfs_cor_ConsolidatedOrNonConsolidatedAxis(連結個別)
                    (member)jppfs_cor_NonConsolidatedMember(非連結又は個別)
               (axis)jppfs_cor_ComponentsOfEquityAxis(純資産の内訳項目)
                    (member)jppfs_cor_NetAssetsMember(純資産合計)[dimension-default]
                         (member)jppfs_cor_ShareholdersEquityMember(株主資本合計)
                              (member)jppfs_cor_CapitalStockMember(資本金)
                              (member)jppfs_cor_CapitalSurplusMember(資本剰余金合計)
                                   (member)jppfs_cor_LegalCapitalSurplusMember(資本準備金)
                                   (member)jppfs_cor_OtherCapitalSurplusMember(その他資本剰余金)
                              (member)jppfs_cor_RetainedEarningsMember(利益剰余金合計)
                                   (member)jppfs_cor_LegalRetainedEarningsMember(利益準備金)
                                   (member)jppfs_cor_OtherRetainedEarningsMember(その他利益剰余金合計)
                                        (member)jppfs_cor_ReserveForSpecialDepreciationMember(特別償却準備金)
                                        (member)jppfs_cor_GeneralReserveMember(別途積立金)
                                        (member)jppfs_cor_RetainedEarningsBroughtForwardMember(繰越利益剰余金)
                              (member)jppfs_cor_TreasuryStockMember(自己株式)
                         (member)jppfs_cor_ValuationAndTranslationAdjustmentsMember(評価・換算差額等合計)
                              (member)jppfs_cor_ValuationDifferenceOnAvailableForSaleSecuritiesMember(その他有価証券評価差額金)
          (line_items)jppfs_cor_StatementOfChangesInEquityLineItems(株主資本等変動計算書)
               (number)jppfs_cor_NetAssets(当期首残高)
               (number)jppfs_cor_CumulativeEffectsOfChangesInAccountingPolicies(会計方針の変更による累積的影響額)
               (number)jppfs_cor_RestatedBalance(会計方針の変更を反映した当期首残高)
               (title)jppfs_cor_ChangesOfItemsDuringThePeriodAbstract(当期変動額)
                    (number)jppfs_cor_IssuanceOfNewShares(新株の発行)
                    (number)jppfs_cor_ProvisionOfReserveForSpecialDepreciation(特別償却準備金の積立)
                    (number)jppfs_cor_ReversalOfReserveForSpecialDepreciation(特別償却準備金の取崩)
                    (number)jppfs_cor_DividendsFromSurplus(剰余金の配当)
                    (number)jppfs_cor_NetIncome(当期純利益)[http://www.xbrl.org/2003/role/positiveLabel]
                    (number)jppfs_cor_PurchaseOfTreasuryStock(自己株式の取得)
                    (number)jppfs_cor_NetChangesOfItemsOtherThanShareholdersEquity(株主資本以外の項目の当期変動額(純額))
                    (number)jppfs_cor_TotalChangesOfItemsDuringThePeriod(当期変動額合計)
               (number)jppfs_cor_NetAssets(当期末残高)

 


コンテキストを決定する手順は以下のとおりです。

  1. XBRLインスタンスファイルに存在するコンテキストすべてのリストを生成する
  2. 軸でコンテキストを選別する。具体的には上記リストからjppfs_cor_ConsolidatedOrNonConsolidatedAxisとjppfs_cor_ComponentsOfEquityAxis以外の軸の記載があるコンテキストを除外する。
  3. 連結個別軸のメンバーでコンテキストを選別する。具体的にはjppfs_cor_ConsolidatedOrNonConsolidatedAxis軸のjppfs_cor_NonConsolidatedMemberメンバーについて記載があるコンテキストのみを残す。
  4. 要素のperiodType(スキーマファイルから取得したもの)によってコンテキストを選別する。具体的にはperiodTypeがInstantならコンテキスト名中にInstantが含まれるものを残す。Durationでも同様。
  5. 列方向の奥行を表す軸の各メンバーについて、コンテキストを選別する。具体的には、jppfs_cor_ComponentsOfEquityAxis軸と各メンバーについて記載があるコンテキストをそれぞれ残す。


2の軸でのコンテキスト選別についてですが、軸が存在しない場合はディメンションに関する記載がないコンテキストのみを残します。

3と5のメンバーでのコンテキスト選別についてですが、メンバーがデフォルトメンバーである場合、メンバーが属する軸の記載があるコンテキストを除外します。デフォルトメンバーについては後で説明します。


連結個別軸が存在しないなら、3は不要です。列方向の奥行を表す軸が存在しないなら、5は不要です。


上記の処理を単体決算の株主資本等変動計算書に対して実施した結果は以下のとおり(当期首残高についてのみを抜粋、値も取得しています)。

要素:当期首残高,jppfs_cor_NetAssets
メンバー:純資産合計,jppfs_cor_NetAssetsMember
[Prior4YearInstant_NonConsolidatedMember][-]
[Prior3YearInstant_NonConsolidatedMember][-]
[Prior2YearInstant_NonConsolidatedMember][2332903000]
[Prior1YearInstant_NonConsolidatedMember][3091276000]
[CurrentYearInstant_NonConsolidatedMember][3396556000]
メンバー:株主資本合計,jppfs_cor_ShareholdersEquityMember
[Prior2YearInstant_NonConsolidatedMember_ShareholdersEquityMember][2321283000]
[Prior1YearInstant_NonConsolidatedMember_ShareholdersEquityMember][3089320000]
[CurrentYearInstant_NonConsolidatedMember_ShareholdersEquityMember][3394304000]
メンバー:資本金,jppfs_cor_CapitalStockMember
[Prior2YearInstant_NonConsolidatedMember_CapitalStockMember][100000000]
[Prior1YearInstant_NonConsolidatedMember_CapitalStockMember][332059000]
[CurrentYearInstant_NonConsolidatedMember_CapitalStockMember][332059000]
メンバー:資本剰余金合計,jppfs_cor_CapitalSurplusMember
[Prior2YearInstant_NonConsolidatedMember_CapitalSurplusMember][326801000]
[Prior1YearInstant_NonConsolidatedMember_CapitalSurplusMember][558860000]
[CurrentYearInstant_NonConsolidatedMember_CapitalSurplusMember][558860000]
メンバー:資本準備金,jppfs_cor_LegalCapitalSurplusMember
[Prior2YearInstant_NonConsolidatedMember_LegalCapitalSurplusMember][147058000]
[Prior1YearInstant_NonConsolidatedMember_LegalCapitalSurplusMember][379117000]
[CurrentYearInstant_NonConsolidatedMember_LegalCapitalSurplusMember][379117000]
メンバー:その他資本剰余金,jppfs_cor_OtherCapitalSurplusMember
[Prior1YearInstant_NonConsolidatedMember_OtherCapitalSurplusMember][179743000]
[Prior2YearInstant_NonConsolidatedMember_OtherCapitalSurplusMember][179743000]
[CurrentYearInstant_NonConsolidatedMember_OtherCapitalSurplusMember][179743000]
メンバー:利益剰余金合計,jppfs_cor_RetainedEarningsMember
[Prior1YearInstant_NonConsolidatedMember_RetainedEarningsMember][2198400000]
[Prior2YearInstant_NonConsolidatedMember_RetainedEarningsMember][1894482000]
[CurrentYearInstant_NonConsolidatedMember_RetainedEarningsMember][2503472000]
メンバー:利益準備金,jppfs_cor_LegalRetainedEarningsMember
[Prior1YearInstant_NonConsolidatedMember_LegalRetainedEarningsMember][10600000]
[Prior2YearInstant_NonConsolidatedMember_LegalRetainedEarningsMember][10600000]
[CurrentYearInstant_NonConsolidatedMember_LegalRetainedEarningsMember][10600000]
メンバー:その他利益剰余金合計,jppfs_cor_OtherRetainedEarningsMember
メンバー:特別償却準備金,jppfs_cor_ReserveForSpecialDepreciationMember
[Prior2YearInstant_NonConsolidatedMember_ReserveForSpecialDepreciationMember][72238000]
[Prior1YearInstant_NonConsolidatedMember_ReserveForSpecialDepreciationMember][82678000]
[CurrentYearInstant_NonConsolidatedMember_ReserveForSpecialDepreciationMember][60592000]
メンバー:別途積立金,jppfs_cor_GeneralReserveMember
[Prior1YearInstant_NonConsolidatedMember_GeneralReserveMember][118000000]
[Prior2YearInstant_NonConsolidatedMember_GeneralReserveMember][118000000]
[CurrentYearInstant_NonConsolidatedMember_GeneralReserveMember][118000000]
メンバー:繰越利益剰余金,jppfs_cor_RetainedEarningsBroughtForwardMember
[Prior1YearInstant_NonConsolidatedMember_RetainedEarningsBroughtForwardMember][1987122000]
[Prior2YearInstant_NonConsolidatedMember_RetainedEarningsBroughtForwardMember][1693643000]
[CurrentYearInstant_NonConsolidatedMember_RetainedEarningsBroughtForwardMember][2314279000]
メンバー:自己株式,jppfs_cor_TreasuryStockMember
[Prior1YearInstant_NonConsolidatedMember_TreasuryStockMember][-]
[Prior2YearInstant_NonConsolidatedMember_TreasuryStockMember][-]
[CurrentYearInstant_NonConsolidatedMember_TreasuryStockMember][-87000]
メンバー:評価・換算差額等合計,jppfs_cor_ValuationAndTranslationAdjustmentsMember
メンバー:その他有価証券評価差額金,jppfs_cor_ValuationDifferenceOnAvailableForSaleSecuritiesMember
[Prior2YearInstant_NonConsolidatedMember_ValuationDifferenceOnAvailableForSaleSecuritiesMember][11620000]
[Prior1YearInstant_NonConsolidatedMember_ValuationDifferenceOnAvailableForSaleSecuritiesMember][1955000]
[CurrentYearInstant_NonConsolidatedMember_ValuationDifferenceOnAvailableForSaleSecuritiesMember][2252000]

 

それぞれ複数のコンテキストが残っている点に注意してください。XBRLのディメンション要素にはいつのデータなのかを決定する要素は存在していません。したがって、結果には複数年分のコンテキストが存在してしまいます。どのコンテキストを残すのかはユーザが決めればいいです。今年のデータが欲しいならCurrentYear、去年のデータが欲しいならPrior1Yearから始まるコンテキストだけを残してください。

また、要素の優先ラベルが「http://www.xbrl.org/2003/role/periodStartLabel」、かつ、periodTypeが「Instant」である場合は更に1年さかのぼった年の値を取得する必要があります。当期首残高などが該当します。この場合は今年のデータが欲しい場合はPrior1Year、去年のデータが欲しい場合はPrior2Yearから始まるコンテキストを残します。
 

XBRLインスタンスファイルからの値取得結果

値の取得結果は以下のとおりです。

損益計算書

損益計算書 売上高,商品及び製品売上高,9051234000
損益計算書 売上高,その他の売上高,107359000
損益計算書 売上高,売上高合計,9158594000
損益計算書 売上原価 商品及び製品売上原価,商品及び製品期首たな卸高,453666000
損益計算書 売上原価 商品及び製品売上原価,当期商品及び製品仕入高,2915623000
損益計算書 売上原価 商品及び製品売上原価,当期製品製造原価,3343770000
損益計算書 売上原価 商品及び製品売上原価,合計,6713060000
損益計算書 売上原価 商品及び製品売上原価,商品及び製品期末たな卸高,560688000
損益計算書 売上原価 商品及び製品売上原価,商品及び製品売上原価,6152372000
損益計算書 売上原価,その他の原価,97836000
損益計算書 売上原価,売上原価合計,6250208000
損益計算書,売上総利益,2908386000
損益計算書,販売費及び一般管理費,2134128000
損益計算書,営業利益,774257000
損益計算書 営業外収益,受取利息,6912000
損益計算書 営業外収益,受取配当金,144000
損益計算書 営業外収益,仕入割引,233000
損益計算書 営業外収益,為替差益,302000
損益計算書 営業外収益,助成金収入,8632000
損益計算書 営業外収益,その他,10366000
損益計算書 営業外収益,営業外収益合計,26593000
損益計算書 営業外費用,支払利息,14875000
損益計算書 営業外費用,株式交付費,-
損益計算書 営業外費用,その他,1394000
損益計算書 営業外費用,営業外費用合計,16269000
損益計算書,経常利益,784580000
損益計算書 特別利益,固定資産売却益,214000
損益計算書 特別利益,投資有価証券売却益,-
損益計算書 特別利益,特別利益合計,214000
損益計算書 特別損失,固定資産除却損,10745000
損益計算書 特別損失,特別損失合計,10745000
損益計算書,税引前当期純利益,774049000
損益計算書,法人税、住民税及び事業税,337635000
損益計算書,法人税等調整額,-44805000
損益計算書,法人税等合計,292829000
損益計算書,当期純利益,481219000

 



竹本容器 第65期 有価証券報告書 p66~p67より引用

 


株主資本等変動計算書

要素の親,要素名,純資産合計,株主資本合計,資本金,資本剰余金合計,資本準備金,その他資本剰余金,利益剰余金合計,利益準備金,その他利益剰余金合計,特別償却準備金,別途積立金,繰越 利益剰余金,自己株式,評価・換算差額等合計,その他有価証券評価差額金
株主資本等変動計算書,当期首残高,3091276000,3089320000,332059000,558860000,379117000,179743000,2198400000,10600000,-,82678000,118000000,1987122000,-,-,1955000
株主資本等変動計算書,会計方針の変更による累積的影響額,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
株主資本等変動計算書,会計方針の変更を反映した当期首残高,3091276000,3089320000,332059000,558860000,379117000,179743000,2198400000,10600000,-,82678000,118000000,1987122000,-,-,1955000
株主資本等変動計算書 当期変動額,新株の発行,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
株主資本等変動計算書 当期変動額,特別償却準備金の積立,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-
株主資本等変動計算書 当期変動額,特別償却準備金の取崩,-,-,-,-,-,-,-,-,-,-22085000,-,22085000,-,-,-
株主資本等変動計算書 当期変動額,剰余金の配当,-176148000,-176148000,-,-,-,-,-176148000,-,-,-,-,-176148000,-,-,-
株主資本等変動計算書 当期変動額,当期純利益,481219000,481219000,-,-,-,-,481219000,-,-,-,-,481219000,-,-,-
株主資本等変動計算書 当期変動額,自己株式の取得,-87000,-87000,-,-,-,-,-,-,-,-,-,-,-87000,-,-
株主資本等変動計算書 当期変動額,株主資本以外の項目の当期変動額(純額),296000,-,-,-,-,-,-,-,-,-,-,-,-,-,296000
株主資本等変動計算書 当期変動額,当期変動額合計,305280000,304983000,-,-,-,-,305071000,-,-,-22085000,-,327157000,-87000,-,296000
株主資本等変動計算書,当期末残高,3396556000,3394304000,332059000,558860000,379117000,179743000,2503472000,10600000,-,60592000,118000000,2314279000,-87000,-,2252000

 



竹本容器 第65期 有価証券報告書 p70より引用

 

1次元データも2次元データも取得できています。また、値も実際の有価証券報告書と一致しています。
 

実装

ここのリポジトリにソースコードを置いています。

XBRLインスタンスファイルから値を取得してcsv形式で表示する処理自体はread_instance_data.pyに記載しています。

デフォルトメンバーとは

EDINETの仕様書ではディメンションデフォルトに設定されたメンバーのことをデフォルトメンバーと呼んでおり、デフォルトメンバーに対応するコンテキストは該当する軸の記載がないものを使用すると定められています。

以下はEDINETの仕様書の抜粋です(ディメンションデフォルト、デフォルトメンバーの記載があるところだけ)。



EDINET 報告書インスタンス 作成ガイドライン p30、p38より引用

 


EDINET 提出者別タクソノミ 作成ガイドライン p97より引用


EDINETの仕様書には他にデフォルトメンバーについての説明がないので(もしかしたらXBRLの普遍的な概念なのであえて説明していないのかもしれない)、これ以上はよくわかりません。
 

普通に考えるなら

  • コンテキストの数を削減する
  • XBRLインスタンスファイル内で値が重複する定義を減らす

ためにデフォルトメンバーが導入されているのでしょう。
 

デフォルトメンバーの判定

メンバーがデフォルトメンバーかどうかは定義リンクベースファイルに記載されています。定義リンクベースファイルはファイル名が「jpcrp030000-asr-001_E31037-000_2015-12-31_01_2016-03-30_def.xml」のように「def.xml」で終わるファイルのことです。


以下は定義リンクベースファイルの概要です。

<roleRef A>・・・有報に存在する大項目
<roleRef B>
・・・
<definitionLink A> ・・・Aという大項目の構造を定義
  <loc elm1> ・・・elm1が存在することを定義
  <loc elm2>
  <definitionArc>・・・ elm1とelm2の所属関係、順番を定義
  <definitionArc>・・・ elm2がデフォルトメンバーであることを定義
<\presentationLink>

<presentationLink B>
  <loc elm3>
  <loc elm4>
  <presentationArc>
<\presentationLink>


基本的な構造は表示リンクベースファイルと同じなので詳しくは説明しません。表示リンクベースファイルの構造についてはこのページで説明しています。


ファイル中で定義されている要素関係の種類が増えているのが大きな違いです。以下は定義リンクベースファイル中で用いられている要素関係の一覧です。


EDINET 提出者別タクソノミ 作成ガイドライン p95より引用


ここではdefinitionArc要素のうちarcrole属性がdimension-defaultであるものについて着目します。


以下は該当する要素の抜粋です。関係がある要素も併せて抜粋しています。

<link:definitionArc xlink:type="arc" 
  xlink:from="jppfs_cor_ConsolidatedOrNonConsolidatedAxis"
  xlink:to="jppfs_cor_ConsolidatedMember_2"
  xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" order="1" />

<link:loc xlink:type="locator"
  xlink:href="http://disclosure.edinet-fsa.go.jp/taxonomy/jppfs/2015-03-31/jppfs_cor_2015-03-31.xsd#jppfs_cor_ConsolidatedMember"
  xlink:label="jppfs_cor_ConsolidatedMember_2" />

 

まず、definitionArc要素のarcrole属性が「http://xbrl.org/int/dim/arcrole/dimension-default」であり、to属性の「jppfs_cor_ConsolidatedMember_2」がデフォルトメンバーだと定義されています。ただし、ここでの「jppfs_cor_ConsolidatedMember_2」は定義リンクベースファイル内だけで通用する名称であるため、これが何なのかを確かめる必要があります。


次にloc要素のlabel属性が「jppfs_cor_ConsolidatedMember_2」、href属性が「http://disclosure.edinet-fsa.go.jp/taxonomy/jppfs/2015-03-31/jppfs_cor_2015-03-31.xsd#jppfs_cor_ConsolidatedMember」となっており、「http://disclosure.edinet-fsa.go.jp/taxonomy/jppfs/2015-03-31/jppfs_cor_2015-03-31.xsd#jppfs_cor_ConsolidatedMember」のラベルとして「jppfs_cor_ConsolidatedMember_2」が定義されています。


以上から、jppfs_cor_ConsolidatedMemberがデフォルトメンバーであるとわかります。

 

 

おわりに

XBRLインスタンスファイルから値を取得することが出来ました。これで財務諸表の数値を表示構造付きで取得できるようになりました。経営状況などの文書データについても取得可能です。とりあえず、XBRLからデータを取得する流れについてはおおよそ説明できたのではないかと思っています。


コンテキストを選別するアルゴリズムは恐らくこうだろうという程度に作っているので誤りがあるかもしれません。そこら辺はご容赦いただけると幸いです。


今回はここまでです。