Views: 129
Introducing the XBRL GL Taxonomy Framework: Tuple and Dimension Models for Granular Accounting Data
2025-07-07
This article introduces the modular structure of the XBRL GL (Global Ledger) taxonomy framework and its capability to represent detailed accounting data—such as journal entries—using two approaches: the legacy tuple-based XML model and the modern dimension-based xBRL-CSV model. The structured CSV style, based on xBRL-CSV and designed for granular data representation, is currently under development.
Granular data in this context is not limited to general ledger–style accounting books. It also covers business transactions such as orders and invoices, as well as operational and environmental data required for auditing sustainability reports. We are currently discussing how to support structured CSV in a new project called the OIM Taxonomy, under development at XBRL International.
Recent specification updates tend to abandon the use of tuples, which are tightly coupled with complexType in XML Schema, and appear to move away from reliance on XML Schema and XLink.
The article further explains how extensions can be implemented in both models while preserving semantic consistency, modularity, and implementation flexibility.
1. The Two Representations: Tuple vs Dimension
The XBRL GL framework supports two interchangeable methods for expressing granular accounting information.
The uploaded XBRL21.zip
archive contains working examples of both approaches.
Taxonomy Structure in XBRL21.zip
Style | Syntax | Description |
---|---|---|
Tuple-based |
XML (xsd:complexType and xbrli:tuple) |
A hierarchical representation defined by nested structures in the XML Schema and reinforced by linkbases (e.g., presentation linkbase). |
Dimension-based |
xBRL-CSV and JSON metadata |
A flat, tabular representation using cubes and dimensions to represent the semantic hierarchy in structured CSV files and reinforced by linkbases (e.g., presentation linkbase). |
The archive contains four variants of journal entry taxonomies and instances, organized as follows:
Type | Taxonomy Schema | Instance File | Description |
---|---|---|---|
Ta |
plt-all-YYYY-MM-DD.xsd |
jnl-instance.xml |
Tuple-based base palette taxonomy |
Tb |
plt2-all-YYYY-MM-DD.xsd |
ext-instance.xml |
Tuple-based extended palette taxonomy |
Da |
plt-oim-YYYY-MM-DD.xsd |
plt.csv and plt.json |
Dimension-based (xBRL-CSV) base taxonomy |
Db |
plt2-oim-YYYY-MM-DD.xsd |
plt2.csv and plt2.json |
Dimension-based (xBRL-CSV) extended taxonomy |
2. Tuple-Based Model
XBRL21/
├── plt-all-YYYY-MM-DD.xsd ← Root schema for the tuple-based journal taxonomy
├── jnl-content-YYYY-MM-DD.xsd ← Aggregator schema (tuples and items)
└── jnl/ ← Journal module
├── jnl-YYYY-MM-DD.xsd ← Module schema for items
├── jnl-YYYY-MM-DD_tpl.xsd ← Module schema for tuples
├── jnl-YYYY-MM-DD_tpl_presentation.xml ← Presentation linkbase
└── lang/ ← Multilingual labels for the journal module
├── jnl-YYYY-MM-DD_label_en.xml ← English labels for items
├── jnl-YYYY-MM-DD_tpl_label_en.xml ← English labels for tuples
├── jnl-YYYY-MM-DD_label_ja.xml ← Japanese labels for items
└── jnl-YYYY-MM-DD_tpl_label_ja.xml ← japanese labels for tuples
The tuple model defines complex data structures using xsd:complexType
for container elements like entryHeader
and entryDetail
, and includes their relationships using XBRL linkbases.
plt-all-YYYY-MM-DD.xsd
→ This is the palette schema of the tuple-based taxonomy. It imports jnl-content-YYYY-MM-DD.xsd, which defines the journal entry structure and brings together the necessary module components. In this version, the palette schema does not declare any linkbaseRef elements; instead, each module schema—such as jnl-YYYY-MM-DD.xsd—is responsible for referencing its own label and presentation linkbases. This ensures a modular design where each part of the taxonomy remains self-contained.
In contrast, the original XBRL GL taxonomy (published both as a Recommendation and a Public Working Draft) placed label linkbaseRef declarations in the root schema. This design, which I originally implemented, aimed to support multilingual labels by allowing the user to choose from multiple label linkbases—such as selecting native-language labels. However, this centralized approach conflicted with modular design principles by binding linkbase selection to the root.
The updated structure resolves this by localizing linkbase declarations within each module, allowing XBRL-aware software to load language-specific labels automatically without compromising modularity.
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/plt/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:plt="http://www.xbrl.org/plt/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
<import namespace="http://www.xbrl.org/jnl/YYYY-MM-DD" schemaLocation="jnl-content-YYYY-MM-DD.xsd"/>
</schema>
jnl-content-YYYY-MM-DD.xsd
→ This intermediate schema acts as a content aggregator. It imports the item and tuple definitions from jnl/jnl-YYYY-MM-DD.xsd and defines the content model for tuples. For example, the entryHeader element contains multiple entryDetail tuples, expressing the journal entry structure in a hierarchical manner.
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/jnl/YYYY-MM-DD" elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xl="http://www.xbrl.org/2003/XLink"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:xbrldt="http://xbrl.org/2005/xbrldt">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<include schemaLocation="jnl/jnl-YYYY-MM-DD_tpl.xsd"/>
<!-- tuple data type -->
<!-- entryHeaders -->
<group name="entryHeadersGroup">
<sequence>
<element ref="jnl:entryNumber" minOccurs="0"/>
<element ref="jnl:effectiveDate"/>
<element ref="jnl:entryDescription" minOccurs="0"/>
<choice>
<group ref="jnl:entryDetailsGroup" minOccurs="0"/>
<element ref="jnl:entryDetails" maxOccurs="unbounded"/>
</choice>
</sequence>
</group>
<complexType name="entryHeadersComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<group ref="jnl:entryHeadersGroup"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>
<!-- entryDetails -->
<group name="entryDetailsGroup">
<sequence>
<element ref="jnl:lineNumber"/>
<element ref="jnl:accountNumber"/>
<element ref="jnl:accountName" minOccurs="0"/>
<choice>
<element ref="jnl:debitAmount"/>
<element ref="jnl:creditAmount"/>
</choice>
<element ref="jnl:lineDescription" minOccurs="0"/>
</sequence>
</group>
<complexType name="entryDetailsComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<group ref="jnl:entryDetailsGroup"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>
</schema>
jnl/jnl-YYYY-MM-DD.xml, jnl/jnl-YYYY-MM-DD_tpl.xml
→ These schemas define document-level and line-item elements using the xbrli:item and xbrli:tuple substitution groups. It acts as the anchor for the linkbase references via the id attributes of each element.
It also includes linkbaseRef elements that declare the associated presentation and label linkbases for the journal module.
Note: Tuple schema is not valid on its own, as it contains only the element declarations. The actual xs:complexType definitions for the tuples are provided by the importing content schema (jnl-content-YYYY-MM-DD.xsd).
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/jnl/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<annotation>
<appinfo>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_label_en.xml" xlink:title="Label Links, English" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_label_ja.xml" xlink:title="Label Links, Japanese" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
<!-- item elements -->
<element name="entryNumber" id="jnl_entryNumber" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="effectiveDate" id="jnl_effectiveDate" type="xbrli:dateTimeItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="entryDescription" id="jnl_entryDescription" type="xbrli:stringItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="lineNumber" id="jnl_lineNumber" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="accountNumber" id="jnl_accountNumber" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="accountName" id="jnl_accountName" type="xbrli:stringItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="debitAmount" id="jnl_debitAmount" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="creditAmount" id="jnl_creditAmount" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="lineDescription" id="jnl_lineDescription" type="xbrli:stringItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/jnl/YYYY-MM-DD" elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<include schemaLocation="jnl-YYYY-MM-DD.xsd"/>
<annotation>
<appinfo>
<!-- presentation linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="jnl-YYYY-MM-DD_tpl_presentation.xml" xlink:title="Presentation Links, all" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<!-- label linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_tpl_label_en.xml" xlink:title="Label Links, English" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_tpl_label_ja.xml" xlink:title="Label Links, Japanese" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
<!-- tuple elements -->
<element name="entryHeaders" id="jnl_entryHeaders" type="jnl:entryHeadersComplexType" substitutionGroup="xbrli:tuple" nillable="false"/>
<element name="entryDetails" id="jnl_entryDetails" type="jnl:entryDetailsComplexType" substitutionGroup="xbrli:tuple" nillable="false"/>
</schema>
In this taxonomy structure, linkbaseRef elements are used to associate schema files with their corresponding label and presentation linkbases. While both item and tuple concepts have multilingual labels defined, the presentation linkbase is referenced only in the tuple schema file (e.g., jnl-YYYY-MM-DD_tpl.xsd or ext-YYYY-MM-DD_tpl.xsd). This is because presentation relationships are primarily defined over tuples, which encapsulate structured groupings of item-level concepts.
The tuple schema imports the corresponding item schema (e.g., jnl-YYYY-MM-DD.xsd) to include its base definitions. This modular separation allows item definitions to be reused across different models—such as the tuple-based XML taxonomy and the dimension-based xBRL-CSV taxonomy—without redefining presentation relationships each time.
This design promotes semantic consistency and reuse while ensuring that structural relationships (presentation hierarchies) are only declared once at the tuple level, where they are most relevant. It also supports multilingual label extension without centralising linkbase declarations at the root level, in alignment with modern modular taxonomy design best practices.
jnl/jnl-YYYY-MM-DD_presentation.xml
→ A presentation linkbase that visually organizes the data elements defined in the schema into a human-readable tree structure. This structure supports intuitive navigation and display of the semantic content.
jnl/lang/jnl-YYYY-MM-DD_label_en.xml, jnl/lang/jnl-YYYY-MM-DD_label_ja.xml
→ A label linkbase that provides multilingual, human-readable labels and descriptions for the concepts defined in the schema. This enhances usability and comprehension across different locales and user communities.
Characteristics
-
This model expresses data hierarchically using tuples, allowing the structure to be explicitly defined in the XML Schema.
-
Schematron can be used to validate content rules, offering a simpler alternative to complex XBRL Formula validations.
-
Optimised for XML instance documents, making it suitable for systems that primarily operate in XML-based environments.
-
Supports modularity by defining journal elements in a separate jnl module, while sharing common presentation and label linkbases across modules.
-
Ensures a strong structural hierarchy enforced directly by the schema design, making it well-suited for traditional XML processing pipelines.
2.1. jnl-instance.xml
This is an XML instance document conforming to the tuple-based taxonomy using plt-all-YYYY-MM-DD.xsd
. It includes a hierarchical structure using XBRL tuples (<jnl:entryHeaders>
and nested <jnl:entryDetails>
), suitable for representing a journal entry.
Key Features
-
Uses
<xbrli:xbrl>
as the root. -
Tuples (
<jnl:entryHeaders>
,<jnl:entryDetails>
) represent repeated structures. -
Measures (e.g., USD) and contexts (
now
) are declared at the top level. -
All elements reference the same context (
contextRef="now"
).
Full Content
<?xml version="1.0" encoding="UTF-8"?>
<xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:xbrll="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:plt="http://www.xbrl.org/plt/YYYY-MM-DD"
xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
xmlns:iso639="http://www.xbrl.org/2005/iso639"
xsi:schemaLocation="http://www.xbrl.org/plt/YYYY-MM-DD plt-all-YYYY-MM-DD.xsd">
<xbrll:schemaRef xlink:type="simple" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="plt-all-YYYY-MM-DD.xsd"/>
<xbrli:context id="now">
<xbrli:entity>
<xbrli:identifier scheme="http://www.xbrl.org/xbrlgl/sample">SAMPLE</xbrli:identifier>
</xbrli:entity>
<!-- The XBRL GL WG recommends using the file creation data as the period. -->
<xbrli:period>
<xbrli:instant>2025-06-20</xbrli:instant>
</xbrli:period>
</xbrli:context>
<!-- Units of measure in XBRL GL are handled within the measurable or multicurrency elements.
Units are provided by convention and should not be relied upon in interpreting XBRL GL data. -->
<xbrli:unit id="usd">
<xbrli:measure>iso4217:USD</xbrli:measure>
</xbrli:unit>
<jnl:entryHeaders>
<jnl:entryNumber contextRef="now">2025-324</jnl:entryNumber>
<jnl:effectiveDate contextRef="now">2025-05-25</jnl:effectiveDate>
<jnl:entryDescription contextRef="now">Purchase of Office Supplies from PQR Store.</jnl:entryDescription>
<jnl:entryDetails>
<jnl:lineNumber contextRef="now">2025-324-1</jnl:lineNumber>
<jnl:accountNumber contextRef="now">6100</jnl:accountNumber>
<jnl:accountName contextRef="now">Office Supplies Expense</jnl:accountName>
<jnl:debitAmount contextRef="now" unitRef="usd" decimals="0">100</jnl:debitAmount>
<jnl:lineDescription contextRef="now">Purchase of printer ink from PQR</jnl:lineDescription>
</jnl:entryDetails>
<jnl:entryDetails>
<jnl:lineNumber contextRef="now">2025-324-2</jnl:lineNumber>
<jnl:accountNumber contextRef="now">1430</jnl:accountNumber>
<jnl:accountName contextRef="now">VAT Payable (Input Tax)</jnl:accountName>
<jnl:debitAmount contextRef="now" unitRef="usd" decimals="0">10</jnl:debitAmount>
<jnl:lineDescription contextRef="now">10% input VAT</jnl:lineDescription>
</jnl:entryDetails>
<jnl:entryDetails>
<jnl:lineNumber contextRef="now">2025-324-3</jnl:lineNumber>
<jnl:accountNumber contextRef="now">2010</jnl:accountNumber>
<jnl:accountName contextRef="now">Accounts Payable</jnl:accountName>
<jnl:debitAmount contextRef="now" unitRef="usd" decimals="0">110</jnl:debitAmount>
<jnl:lineDescription contextRef="now">Amount payable to PQR Store</jnl:lineDescription>
</jnl:entryDetails>
</jnl:entryHeaders>
</xbrli:xbrl>
3. Dimension based taxonomy
XBRL21/
├── plt-oim-YYYY-MM-DD.xsd ← Root schema for the dimension-based taxonomy
├── jnl-dimension-YYYY-MM-DD.xml ← Dimension definition for concepts
└── jnl/ ← Journal module
├── jnl-YYYY-MM-DD.xsd ← Module schema for items
├── jnl-YYYY-MM-DD_oim.xsd ← Module schema for dimensional items
├── jnl-YYYY-MM-DD_oim_presentation.xml ← Presentation linkbase
└── lang/ ← Multilingual labels
├── jnl-YYYY-MM-DD_label_en.xml ← English labels for items
├── jnl-YYYY-MM-DD_oim_label_en.xml ← English labels for dimensional items
├── jnl-YYYY-MM-DD_label_ja.xml ← Japanese labels for items
└── jnl-YYYY-MM-DD_oim_label_ja.xml ← Japanese labels for dimensional items
The Dimension-based version of XBRL GL represents data in cubes:
-
entryHeaders
cube for document-level facts -
entryDetails
cube for line-level facts -
Typed dimensions link facts from different cubes (e.g., linking details to headers, or accounts to details)
plt-oim-YYYY-MM-DD.xsd
→ The schema for xBRL-CSV format. It defines the top-level cubes (entryHeaders, entryDetails) and imports the concept definitions from jnl/jnl-YYYY-MM-DD.xsd.
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/plt/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:plt="http://www.xbrl.org/plt/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
<import namespace="http://www.xbrl.org/jnl/YYYY-MM-DD" schemaLocation="jnl/jnl-YYYY-MM-DD_oim.xsd"/>
<annotation>
<appinfo>
<!-- definition linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="jnl-dimension-YYYY-MM-DD.xml" xlink:title="Definition" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
</schema>
jnl/jnl-YYYY-MM-DD.xsd, jnl/jnl-YYYY-MM-DD_oim.xsd
→ jnl-YYYY-MM-DD.xsd defines the base data elements (items) shared across models. In contrast, jnl-YYYY-MM-DD_oim.xsd defines dimensional constructs such as hypercubes, dimensions, and primary items. Tuple elements are not used in this schema.
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/jnl/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<annotation>
<appinfo>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_label_en.xml" xlink:title="Label Links, English" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_label_ja.xml" xlink:title="Label Links, Japanese" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
<!-- item elements -->
<element name="entryNumber" id="jnl_entryNumber" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="effectiveDate" id="jnl_effectiveDate" type="xbrli:dateTimeItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="entryDescription" id="jnl_entryDescription" type="xbrli:stringItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="lineNumber" id="jnl_lineNumber" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="accountNumber" id="jnl_accountNumber" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="accountName" id="jnl_accountName" type="xbrli:stringItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="debitAmount" id="jnl_debitAmount" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="creditAmount" id="jnl_creditAmount" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="lineDescription" id="jnl_lineDescription" type="xbrli:stringItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/jnl/YYYY-MM-DD" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
<include schemaLocation="jnl-YYYY-MM-DD.xsd"/>
<annotation>
<appinfo>
<!-- presentation linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="jnl-YYYY-MM-DD_oim_presentation.xml" xlink:title="Presentation Links, all" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<!-- definition linkbase reference
<link:linkbaseRef xlink:type="simple" xlink:href="jnl-YYYY-MM-DD_definition.xml" xlink:title="Definition" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/> -->
<!-- label linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_oim_label_en.xml" xlink:title="Label Links, English" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/jnl-YYYY-MM-DD_oim_label_ja.xml" xlink:title="Label Links, Japanese" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<!-- role type -->
<link:roleType id="jnl-role" roleURI="http://www.xbrl.org/jnl/role">
<link:definition>link jnl</link:definition>
<link:usedOn>link:definitionLink</link:usedOn>
<link:usedOn>link:presentationLink</link:usedOn>
</link:roleType>
<link:roleType id="link_jnl_entryHeaders" roleURI="http://www.xbrl.org/jnl/role/link_jnl_entryHeaders">
<link:usedOn>link:definitionLink</link:usedOn>
</link:roleType>
<link:roleType id="link_jnl_entryDetails" roleURI="http://www.xbrl.org/jnl/role/link_jnl_entryDetails">
<link:usedOn>link:definitionLink</link:usedOn>
</link:roleType>
</appinfo>
</annotation>
<!-- typed dimension referenced element -->
<element name="_v" id="_v">
<simpleType>
<restriction base="string"/>
</simpleType>
</element>
<!-- Hypercube -->
<element name="h_jnl_entryHeaders" id="h_jnl_entryHeaders" substitutionGroup="xbrldt:hypercubeItem" type="xbrli:stringItemType" nillable="true" abstract="true" xbrli:periodType="instant"/>
<element name="h_jnl_entryDetails" id="h_jnl_entryDetails" substitutionGroup="xbrldt:hypercubeItem" type="xbrli:stringItemType" nillable="true" abstract="true" xbrli:periodType="instant"/>
<!-- Dimension -->
<element name="d_jnl_entryHeaders" id="d_jnl_entryHeaders" substitutionGroup="xbrldt:dimensionItem" type="xbrli:stringItemType" abstract="true" xbrli:periodType="instant" xbrldt:typedDomainRef="#_v"/>
<element name="d_jnl_entryDetails" id="d_jnl_entryDetails" substitutionGroup="xbrldt:dimensionItem" type="xbrli:stringItemType" abstract="true" xbrli:periodType="instant" xbrldt:typedDomainRef="#_v"/>
<!-- Primary item -->
<element name="p_jnl_entryHeaders" id="p_jnl_entryHeaders" substitutionGroup="xbrli:item" type="xbrli:stringItemType" nillable="true" xbrli:periodType="instant"/>
<element name="p_jnl_entryDetails" id="p_jnl_entryDetails" substitutionGroup="xbrli:item" type="xbrli:stringItemType" nillable="true" xbrli:periodType="instant"/>
</schema>
jnl-dimension-YYYY-MM-DD.xml
→ A definition linkbase that sets up the dimensional relationships—i.e., hypercubes, dimensions, domain, and members. It replaces the tuple structure with a multi-dimensional data model.
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<link:linkbase
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- roleRef -->
<link:roleRef roleURI="http://www.xbrl.org/jnl/role/link_jnl_entryHeaders" xlink:type="simple" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#link_jnl_entryHeaders"/>
<link:roleRef roleURI="http://www.xbrl.org/jnl/role/link_jnl_entryDetails" xlink:type="simple" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#link_jnl_entryDetails"/>
<!-- arcroleRef -->
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all"/>
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member"/>
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension"/>
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain"/>
<link:definitionLink xlink:type="extended" xlink:role="http://www.xbrl.org/jnl/role/link_jnl_entryHeaders">
<!-- p_jnl_entryHeaders all (has-hypercube) h_jnl_entryHeaders link_jnl_entryHeaders -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#p_jnl_entryHeaders" xlink:label="p_jnl_entryHeaders" xlink:title="p_jnl_entryHeaders"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#h_jnl_entryHeaders" xlink:label="h_jnl_entryHeaders" xlink:title="h_jnl_entryHeaders"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="p_jnl_entryHeaders" xlink:to="h_jnl_entryHeaders" xlink:title="all (has-hypercube): p_jnl_entryHeaders to h_jnl_entryHeaders" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
<!-- hypercube-dimension -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#d_jnl_entryHeaders" xlink:label="d_jnl_entryHeaders" xlink:title="d_jnl_entryHeaders"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="h_jnl_entryHeaders" xlink:to="d_jnl_entryHeaders" xlink:title="hypercube-dimension: h_jnl_entryHeaders to d_jnl_entryHeaders" order="1"/>
<!-- domain-member -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_entryNumber" xlink:label="jnl_entryNumber" xlink:title="jnl_entryNumber Entry Number"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryHeaders" xlink:to="jnl_entryNumber" xlink:title="domain-member: p_jnl_entryHeaders to jnl_entryNumber Entry Number" order="2"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_effectiveDate" xlink:label="jnl_effectiveDate" xlink:title="jnl_effectiveDate Effective Date"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryHeaders" xlink:to="jnl_effectiveDate" xlink:title="domain-member: p_jnl_entryHeaders to jnl_effectiveDate Effective Date" order="3"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_entryDescription" xlink:label="jnl_entryDescription" xlink:title="jnl_entryDescription Entry Description"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryHeaders" xlink:to="jnl_entryDescription" xlink:title="domain-member: p_jnl_entryHeaders to jnl_entryDescription Entry Description" order="4"/>
<!-- p_jnl_entryHeaders to targetRole link_jnl_entryDetails -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#p_jnl_entryDetails" xlink:label="p_jnl_entryDetails" xlink:title="p_jnl_entryDetails Entry Detail"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xbrldt:targetRole="http://www.xbrl.org/jnl/role/link_jnl_entryDetails" xlink:from="p_jnl_entryHeaders" xlink:to="p_jnl_entryDetails" xlink:title="domain-member: p_jnl_entryHeaders to p_jnl_entryDetails in link_jnl_entryDetails" order="5"/>
</link:definitionLink>
<link:definitionLink xlink:type="extended" xlink:role="http://www.xbrl.org/jnl/role/link_jnl_entryDetails">
<!-- p_jnl_entryDetails all (has-hypercube) h_jnl_entryDetails link_jnl_entryDetails -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#p_jnl_entryDetails" xlink:label="p_jnl_entryDetails" xlink:title="p_jnl_entryDetails"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#h_jnl_entryDetails" xlink:label="h_jnl_entryDetails" xlink:title="h_jnl_entryDetails"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="p_jnl_entryDetails" xlink:to="h_jnl_entryDetails" xlink:title="all (has-hypercube): p_jnl_entryDetails to h_jnl_entryDetails" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
<!-- hypercube-dimension -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#d_jnl_entryHeaders" xlink:label="d_jnl_entryHeaders" xlink:title="d_jnl_entryHeaders"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="h_jnl_entryDetails" xlink:to="d_jnl_entryHeaders" xlink:title="hypercube-dimension: h_jnl_entryDetails to d_jnl_entryHeaders" order="1"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#d_jnl_entryDetails" xlink:label="d_jnl_entryDetails" xlink:title="d_jnl_entryDetails"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="h_jnl_entryDetails" xlink:to="d_jnl_entryDetails" xlink:title="hypercube-dimension: h_jnl_entryDetails to d_jnl_entryDetails" order="2"/>
<!-- domain-member -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_lineNumber" xlink:label="jnl_lineNumber" xlink:title="jnl_lineNumber Line Number"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_lineNumber" xlink:title="domain-member: p_jnl_entryDetails to jnl_lineNumber Line Number" order="3"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountNumber" xlink:label="jnl_accountNumber" xlink:title="jnl_accountNumber Account Number"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_accountNumber" xlink:title="domain-member: p_jnl_entryDetails to jnl_accountNumber Account Number" order="4"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountName" xlink:label="jnl_accountName" xlink:title="jnl_accountName Account Name"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_accountName" xlink:title="domain-member: p_jnl_entryDetails to jnl_accountName Account Name" order="5"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_debitAmount" xlink:label="jnl_debitAmount" xlink:title="jnl_debitAmount Debit Amount"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_debitAmount" xlink:title="domain-member: p_jnl_entryDetails to jnl_debitAmount Debit Amount" order="6"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_creditAmount" xlink:label="jnl_creditAmount" xlink:title="jnl_creditAmount Credit Amount"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_creditAmount" xlink:title="domain-member: p_jnl_entryDetails to jnl_creditAmount Credit Amount" order="7"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_lineDescription" xlink:label="jnl_lineDescription" xlink:title="jnl_lineDescription Line Description"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_lineDescription" xlink:title="domain-member: p_jnl_entryDetails to jnl_lineDescription Line Description" order="8"/>
</link:definitionLink>
</link:linkbase>
jnl/jnl-YYYY-MM-DD_presentation.xml, lang/jnl-YYYY-MM-DD_label_en.xml, and lang/jnl-YYYY-MM-DD_label_ja.xml
→ Shared across tuple and dimension models, ensuring consistency in element structure and labeling.
-
This model expresses data using dimensional hypercubes.
-
Allows flattening of hierarchical data into a single CSV row using cube relationships.
-
Highly suitable for structured CSV processing, AI applications, and efficient data integration.
-
Shares concept and label modules with tuple model to maximise reuse and alignment.
3.1. Dimension-Based Framework (xBRL-CSV Syntax)
In the xBRL-CSV approach, repeated structures (multiplicity 0..n
) are handled by defining separate cubes (tables) and linking them via dimensions.
For example, entryHeaders
and entryDetails
are represented as separate cubes, and linked semantically using typed dimensions and xbrldt:targetRole
in a definition linkbase.
Using targetRole
for Hierarchical Linking
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<link:linkbase
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- roleRef -->
<link:roleRef roleURI="http://www.xbrl.org/jnl/role/link_jnl_entryHeaders" xlink:type="simple" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#link_jnl_entryHeaders"/>
<link:roleRef roleURI="http://www.xbrl.org/jnl/role/link_jnl_entryDetails" xlink:type="simple" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#link_jnl_entryDetails"/>
<!-- arcroleRef -->
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all"/>
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member"/>
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension"/>
<link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain"/>
<link:definitionLink xlink:type="extended" xlink:role="http://www.xbrl.org/jnl/role/link_jnl_entryHeaders">
<!-- p_jnl_entryHeaders all (has-hypercube) h_jnl_entryHeaders link_jnl_entryHeaders -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#p_jnl_entryHeaders" xlink:label="p_jnl_entryHeaders" xlink:title="p_jnl_entryHeaders"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#h_jnl_entryHeaders" xlink:label="h_jnl_entryHeaders" xlink:title="h_jnl_entryHeaders"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="p_jnl_entryHeaders" xlink:to="h_jnl_entryHeaders" xlink:title="all (has-hypercube): p_jnl_entryHeaders to h_jnl_entryHeaders" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
<!-- hypercube-dimension -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#d_jnl_entryHeaders" xlink:label="d_jnl_entryHeaders" xlink:title="d_jnl_entryHeaders"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="h_jnl_entryHeaders" xlink:to="d_jnl_entryHeaders" xlink:title="hypercube-dimension: h_jnl_entryHeaders to d_jnl_entryHeaders" order="1"/>
<!-- domain-member -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_entryNumber" xlink:label="jnl_entryNumber" xlink:title="jnl_entryNumber Entry Number"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryHeaders" xlink:to="jnl_entryNumber" xlink:title="domain-member: p_jnl_entryHeaders to jnl_entryNumber Entry Number" order="2"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_effectiveDate" xlink:label="jnl_effectiveDate" xlink:title="jnl_effectiveDate Effective Date"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryHeaders" xlink:to="jnl_effectiveDate" xlink:title="domain-member: p_jnl_entryHeaders to jnl_effectiveDate Effective Date" order="3"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_entryDescription" xlink:label="jnl_entryDescription" xlink:title="jnl_entryDescription Entry Description"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryHeaders" xlink:to="jnl_entryDescription" xlink:title="domain-member: p_jnl_entryHeaders to jnl_entryDescription Entry Description" order="4"/>
<!-- p_jnl_entryHeaders to targetRole link_jnl_entryDetails -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#p_jnl_entryDetails" xlink:label="p_jnl_entryDetails" xlink:title="p_jnl_entryDetails Entry Detail"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xbrldt:targetRole="http://www.xbrl.org/jnl/role/link_jnl_entryDetails" xlink:from="p_jnl_entryHeaders" xlink:to="p_jnl_entryDetails" xlink:title="domain-member: p_jnl_entryHeaders to p_jnl_entryDetails in link_jnl_entryDetails" order="5"/>
</link:definitionLink>
<link:definitionLink xlink:type="extended" xlink:role="http://www.xbrl.org/jnl/role/link_jnl_entryDetails">
<!-- p_jnl_entryDetails all (has-hypercube) h_jnl_entryDetails link_jnl_entryDetails -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#p_jnl_entryDetails" xlink:label="p_jnl_entryDetails" xlink:title="p_jnl_entryDetails"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#h_jnl_entryDetails" xlink:label="h_jnl_entryDetails" xlink:title="h_jnl_entryDetails"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="p_jnl_entryDetails" xlink:to="h_jnl_entryDetails" xlink:title="all (has-hypercube): p_jnl_entryDetails to h_jnl_entryDetails" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
<!-- hypercube-dimension -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#d_jnl_entryHeaders" xlink:label="d_jnl_entryHeaders" xlink:title="d_jnl_entryHeaders"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="h_jnl_entryDetails" xlink:to="d_jnl_entryHeaders" xlink:title="hypercube-dimension: h_jnl_entryDetails to d_jnl_entryHeaders" order="1"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_oim.xsd#d_jnl_entryDetails" xlink:label="d_jnl_entryDetails" xlink:title="d_jnl_entryDetails"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="h_jnl_entryDetails" xlink:to="d_jnl_entryDetails" xlink:title="hypercube-dimension: h_jnl_entryDetails to d_jnl_entryDetails" order="2"/>
<!-- domain-member -->
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_lineNumber" xlink:label="jnl_lineNumber" xlink:title="jnl_lineNumber Line Number"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_lineNumber" xlink:title="domain-member: p_jnl_entryDetails to jnl_lineNumber Line Number" order="3"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountNumber" xlink:label="jnl_accountNumber" xlink:title="jnl_accountNumber Account Number"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_accountNumber" xlink:title="domain-member: p_jnl_entryDetails to jnl_accountNumber Account Number" order="4"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountName" xlink:label="jnl_accountName" xlink:title="jnl_accountName Account Name"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_accountName" xlink:title="domain-member: p_jnl_entryDetails to jnl_accountName Account Name" order="5"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_debitAmount" xlink:label="jnl_debitAmount" xlink:title="jnl_debitAmount Debit Amount"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_debitAmount" xlink:title="domain-member: p_jnl_entryDetails to jnl_debitAmount Debit Amount" order="6"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_creditAmount" xlink:label="jnl_creditAmount" xlink:title="jnl_creditAmount Credit Amount"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_creditAmount" xlink:title="domain-member: p_jnl_entryDetails to jnl_creditAmount Credit Amount" order="7"/>
<link:loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_lineDescription" xlink:label="jnl_lineDescription" xlink:title="jnl_lineDescription Line Description"/>
<link:definitionArc xlink:type="arc" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="p_jnl_entryDetails" xlink:to="jnl_lineDescription" xlink:title="domain-member: p_jnl_entryDetails to jnl_lineDescription Line Description" order="8"/>
</link:definitionLink>
</link:linkbase>
-
p_jnl_entryHeaders
: primary item in theentryHeaders
cube -
p_jnl_entryDetails
: primary item in theentryDetails
cube -
targetRole
: indicates that this relationship points to a different link role, preserving cube modularity
This mechanism supports linking parent and child cubes (e.g., headers to lines) while maintaining flat row compatibility in structured CSV output.
Benefits of This Design
-
Clarity: Flat elements are easily accessed without needing hierarchical parsing.
-
Modularity: Repeating data is modeled cleanly in reusable structures (tuples or child cubes).
-
Extensibility: Supports jurisdictional or industry-specific extensions by overriding or extending tuple or dimension definitions.
3.2. xBRL-CSV instance of journal taxonomy
3.2.1. plt.json and plt.csv
This is the structured CSV representation of the same journal entry in tabular form, suitable for xBRL-CSV. It expresses header and detail rows using column grouping.
Key Features
-
Columns include
Header
,Detail
,EntryNumber
,LineNumber
,AccountNumber
, etc. -
Each row represents either a header or a line.
-
No nesting — relies on dimensional metadata for hierarchy.
Full Content
Header,Detail,EntryNumber,EffectiveDate,EntryDescription,LineNumber,AccountNumber,AccountName,DebitAmount,CreditAmount,LineDescription
1,,2025-324,2025-05-25,Purchase of Office Supplies from PQR Store.,,,,,,
1,1,,,,2025-324-1,6100,Office Supplies Expense,100,,Purchase of printer ink from PQR
1,2,,,,2025-324-2,1430,VAT Payable (Input Tax),10,,10% input VAT
1,3,,,,2025-324-3,2010,Accounts Payable,,110,Amount payable to PQR Store
Header |
Detail |
EntryNumber |
EffectiveDate |
EntryDescription |
LineNumber |
AccountNumber |
AccountName |
DebitAmount |
CreditAmount |
LineDescription |
1 |
2025-324 |
2025-05-25 |
Purchase of Office Supplies from PQR Store. |
|||||||
1 |
1 |
2025-324-1 |
6100 |
Office Supplies Expense |
100 |
Purchase of printer ink from PQR |
||||
1 |
2 |
2025-324-2 |
1430 |
VAT Payable (Input Tax) |
10 |
10% input VAT |
||||
1 |
3 |
2025-324-3 |
2010 |
Accounts Payable |
110 |
Amount payable to PQR Store |
plt.json
{
"documentInfo": {
"documentType": "https://xbrl.org/2021/xbrl-csv",
"namespaces": {
"ns0": "http://www.example.com",
"link": "http://www.xbrl.org/2003/linkbase",
"iso4217": "http://www.xbrl.org/2003/iso4217",
"xsi": "http://www.w3.org/2001/XMLSchema-instance",
"xbrli": "http://www.xbrl.org/2003/instance",
"xbrldi": "http://xbrl.org/2006/xbrldi",
"xlink": "http://www.w3.org/1999/xlink",
"jnl": "http://www.xbrl.org/jnl/YYYY-MM-DD",
"plt": "http://www.xbrl.org/plt/YYYY-MM-DD"
},
"taxonomy": [
"plt-oim-YYYY-MM-DD.xsd"
]
},
"tableTemplates": {
"plt_template": {
"dimensions": {
"period": "2025-05-17T00:00:00",
"entity": "ns0:Example Co.",
"jnl:d_jnl_entryHeaders": "$Header",
"jnl:d_jnl_entryDetails": "$Detail"
},
"columns": {
"Header": {},
"Detail": {},
"EntryNumber": {
"dimensions": {
"concept": "jnl:entryNumber"
}
},
"EffectiveDate": {
"dimensions": {
"concept": "jnl:effectiveDate"
}
},
"EntryDescription": {
"dimensions": {
"concept": "jnl:entryDescription"
}
},
"LineNumber": {
"dimensions": {
"concept": "jnl:lineNumber"
}
},
"AccountNumber": {
"dimensions": {
"concept": "jnl:accountNumber"
}
},
"AccountName": {
"dimensions": {
"concept": "jnl:accountName"
}
},
"DebitAmount": {
"dimensions": {
"concept": "jnl:debitAmount",
"unit": "iso4217:USD"
}
},
"CreditAmount": {
"dimensions": {
"concept": "jnl:creditAmount",
"unit": "iso4217:USD"
}
},
"LineDescription": {
"dimensions": {
"concept": "jnl:lineDescription"
}
}
}
}
},
"tables": {
"plt_table": {
"template": "plt_template",
"url": "plt.csv"
}
}
}
4. How Extensions Are Realized
Extensions in both models follow a clear and modular approach.
4.1. Extending the Tuple Taxonomy
4.1.1. Tuple-based taxonomy extension structure
The following directory structure defines an extended module built on top of the base jnl
module:
XBRL21/
├── plt2-all-YYYY-MM-DD.xsd ← Root schema for the tuple-based taxonomy
├── ext-content-YYYY-MM-DD.xsd ← Aggregator schema for concepts
├── ext-YYYY-MM-DD_tpl_presentation.xml ← Presentation linkbase
├── ext/ ← Extension module
│ ├── ext-YYYY-MM-DD.xsd ← Module schema for items
│ ├── ext-YYYY-MM-DD_tpl.xsd ← Module schema for tuples
│ └── lang/ ← Multilingual labels
│ ├── ext-YYYY-MM-DD_label_en.xml ← English labels for items
│ ├── ext-YYYY-MM-DD_tpl_label_en.xml ← English labels for tuples
│ ├── ext-YYYY-MM-DD_label_ja.xml ← Japanese labels for items
│ └── ext-YYYY-MM-DD_tpl_label_ja.xml ← japanese labels for tuples
└── jnl/ ← Journal module
├── jnl-YYYY-MM-DD.xsd ← Module schema for items
├── jnl-YYYY-MM-DD_tpl.xsd ← Module schema for tuples
└── lang/ ← Multilingual labels
├── jnl-YYYY-MM-DD_label_en.xml ← English labels for items
├── jnl-YYYY-MM-DD_tpl_label_en.xml ← English labels for tuples
├── jnl-YYYY-MM-DD_label_ja.xml ← Japanese labels for items
└── jnl-YYYY-MM-DD_tpl_label_ja.xml ← japanese labels for tuples
4.1.2. What is extended?
To support additional items such as:
-
totalDebit
-
totalCredit
-
accountType
These elements are defined in ext-YYYY-MM-DD.xsd.
To support additional tuples such as:
-
accounts
This element is defined in ext-YYYY-MM-DD.xsd.
To support extended versions of existing tuples such as:
-
entryHeaders
-
entryDetails
Revised <group> and <complexType> for these elements are defined in ext-content-YYYY-MM-DD.xsd.
4.1.3. Extension Process
Extending the schema performs the following actions:
-
Redefine the original tuple (e.g.,
entryHeaderType
) inext-content-YYYY-MM-DD.xsd
:-
The original tuple is redeclared using
substitutionGroup="xbrli:tuple"
under theext
namespace inext/ext-YYYY-MM-DD.xsd
. -
A new
complexType
is created that extends or replaces the original content model.
-
-
Insert new child elements:
-
Fields such as
ext:totalDebit
,ext:totalCredit
, andext:accountType
are inserted into the extended tuple (e.g.,<ext:entryHeadersGroup>
and<ext:accountsGroup>
). -
These elements are declared within the same
ext
namespace and integrated into the content sequence.
-
-
Update linkbases:
-
A new
ext-YYYY-MM-DD_presentation.xml
file defines the updated layout, including: -
New elements
-
Removed elements (using
use="prohibited"
inpresentationArc
to suppress inherited arcs) -
A new
ext-YYYY-MM-DD_label.xml
provides localized, human-readable labels for the extended concepts.
-
-
Palette and content schemas:
-
plt2-all-YYYY-MM-DD.xsd
acts as the root schema and importsext-content-YYYY-MM-DD.xsd
. -
ext-content-YYYY-MM-DD.xsd
imports the basejnl
module and includes theext
schema, enabling safe overrides while retaining access to original definitions.
-
4.1.4. Result
-
The extended instance (
ext-instance.xml
) integrates both the original structure (entryNumber
,effectiveDate
, etc.) and newly added elements liketotalDebit
andaccountType
. -
The newly introduced
accounts
tuple is defined as a child ofentryDetails
. It includes:
Predefined elements:
-
<jnl:accountNumber>
-
<jnl:accountName>
Newly defined:
-
<ext:accountType>
The extended presentation structure is seamlessly integrated through the use of XBRL 2.1 linkbase extension mechanisms.
4.2. Extended files for tuple-based taxonomy
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/plt2/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
<import namespace="http://www.xbrl.org/ext/YYYY-MM-DD" schemaLocation="ext-content-YYYY-MM-DD.xsd"/>
<annotation>
<appinfo>
<!-- presentation linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="ext-YYYY-MM-DD_oim_presentation.xml" xlink:title="Presentation Links, all" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/ext/YYYY-MM-DD" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD" xmlns:ext="http://www.xbrl.org/ext/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/jnl/YYYY-MM-DD" schemaLocation="jnl-content-YYYY-MM-DD.xsd"/>
<include schemaLocation="ext/ext-YYYY-MM-DD_tpl.xsd"/>
<!-- tuple data type -->
<!-- entryHeaders -->
<group name="entryHeadersGroup">
<sequence>
<element ref="jnl:entryNumber" minOccurs="0"/>
<element ref="jnl:effectiveDate"/>
<element ref="ext:totalDebit"/>
<element ref="ext:totalCredit"/>
<element ref="jnl:entryDescription" minOccurs="0"/>
<choice>
<group ref="ext:entryDetailsGroup" minOccurs="0"/>
<element ref="ext:entryDetails" maxOccurs="unbounded"/>
</choice>
</sequence>
</group>
<complexType name="entryHeadersComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<group ref="ext:entryHeadersGroup"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>
<!-- entryDetails -->
<group name="entryDetailsGroup">
<sequence>
<element ref="jnl:lineNumber"/>
<choice>
<group ref="ext:accountsGroup" minOccurs="0"/>
<element ref="ext:accounts" maxOccurs="unbounded"/>
</choice>
<choice>
<element ref="jnl:debitAmount"/>
<element ref="jnl:creditAmount"/>
</choice>
<element ref="jnl:lineDescription" minOccurs="0"/>
</sequence>
</group>
<complexType name="entryDetailsComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<group ref="ext:entryDetailsGroup"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>
<!-- accounts -->
<group name="accountsGroup">
<sequence>
<element ref="jnl:accountNumber"/>
<element ref="jnl:accountName" minOccurs="0"/>
<element ref="ext:accountType"/>
</sequence>
</group>
<complexType name="accountsComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<group ref="ext:accountsGroup"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/ext/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD" xmlns:ext="http://www.xbrl.org/ext/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
<annotation>
<appinfo>
<!-- label linkbase reference -->
<link:linkbaseRef xlink:type="simple" xlink:href="lang/ext-YYYY-MM-DD_label_en.xml" xlink:title="Label Links, English" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/ext-YYYY-MM-DD_label_ja.xml" xlink:title="Label Links, Japanese" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
<!-- item element -->
<element name="totalDebit" id="ext_totalDebit" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="totalCredit" id="ext_totalCredit" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
<element name="accountType" id="ext_accountType" type="xbrli:tokenItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:periodType="instant"/>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<schema targetNamespace="http://www.xbrl.org/ext/YYYY-MM-DD" attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:ext="http://www.xbrl.org/ext/YYYY-MM-DD">
<import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
<import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
<import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
<include schemaLocation="ext-YYYY-MM-DD.xsd"/>
<annotation>
<appinfo>
<!--<link:linkbaseRef xlink:type="simple" xlink:href="ext-YYYY-MM-DD_tpl_presentation.xml" xlink:title="Presentation Links, all" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>-->
<link:linkbaseRef xlink:type="simple" xlink:href="lang/ext-YYYY-MM-DD_label_en.xml" xlink:title="Label Links, English" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
<link:linkbaseRef xlink:type="simple" xlink:href="lang/ext-YYYY-MM-DD_label_ja.xml" xlink:title="Label Links, Japanese" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"/>
</appinfo>
</annotation>
<!-- tuple elements -->
<element name="entryHeaders" id="ext_entryHeaders" type="ext:entryHeadersComplexType" substitutionGroup="xbrli:tuple" nillable="false"/>
<element name="entryDetails" id="ext_entryDetails" type="ext:entryDetailsComplexType" substitutionGroup="xbrli:tuple" nillable="false"/>
<element name="accounts" id="ext_accounts" type="ext:accountsComplexType" substitutionGroup="xbrli:tuple" nillable="false"/>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<linkbase xmlns="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
<presentationLink xlink:type="extended" xlink:role="http://www.xbrl.org/2003/role/link">
<!-- Entry Header -->
<loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_tpl.xsd#jnl_entryHeaders" xlink:label="jnl_entryHeaders" xlink:title="loc: jnl_entryHeaders"/>
<loc xlink:type="locator" xlink:href="ext/ext-YYYY-MM-DD.xsd#ext_totalDebit" xlink:label="jnl_totalDebit" xlink:title="presentation: jnl_entryHeaders to jnl_totalDebit Total Debit"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="jnl_entryHeaders" xlink:to="jnl_totalDebit" xlink:title="presentation: jnl_entryHeaders to jnl_totalDebit" use="optional" order="21"/>
<loc xlink:type="locator" xlink:href="ext/ext-YYYY-MM-DD.xsd#ext_totalCredit" xlink:label="jnl_totalCredit" xlink:title="presentation: jnl_entryHeaders to jnl_totalCredit Total Debit"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="jnl_entryHeaders" xlink:to="jnl_totalCredit" xlink:title="presentation: jnl_entryHeaders to jnl_totalCredit" use="optional" order="21"/>
<!-- Entry Detail -->
<loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD_tpl.xsd#jnl_entryDetails" xlink:label="jnl_entryDetails" xlink:title="loc: jnl_entryDetails"/>
<loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountNumber" xlink:label="jnl_accountNumber" xlink:title="presentation: jnl_entryDetails to jnl_accountNumber Account Number"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="jnl_entryDetails" xlink:to="jnl_accountNumber" xlink:title="presentation: jnl_entryDetails to jnl_accountNumber" use="prohibited" order="20"/>
<loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountName" xlink:label="jnl_accountName" xlink:title="presentation: jnl_entryDetails to jnl_accountName Account Name"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="jnl_entryDetails" xlink:to="jnl_accountName" xlink:title="presentation: jnl_entryDetails to jnl_accountName" use="prohibited" order="30"/>
<loc xlink:type="locator" xlink:href="ext/ext-YYYY-MM-DD_tpl.xsd#ext_accounts" xlink:label="ext_accounts" xlink:title="presentation: jnl_entryDetails to ext_accounts Accounts"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="jnl_entryDetails" xlink:to="ext_accounts" xlink:title="presentation: jnl_entryDetails to ext_accounts" use="optional" order="31"/>
<!-- Accounts -->
<loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountNumber" xlink:label="jnl_accountNumber" xlink:title="presentation: jnl_entryDetails to jnl_accountNumber Account Number"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ext_accounts" xlink:to="jnl_accountNumber" xlink:title="presentation: ext_accounts to jnl_accountNumber" use="optional" order="10"/>
<loc xlink:type="locator" xlink:href="jnl/jnl-YYYY-MM-DD.xsd#jnl_accountName" xlink:label="jnl_accountName" xlink:title="presentation: jnl_entryDetails to jnl_accountName Account Name"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ext_accounts" xlink:to="jnl_accountName" xlink:title="presentation: ext_accounts to jnl_accountName" use="optional" order="20"/>
<loc xlink:type="locator" xlink:href="ext/ext-YYYY-MM-DD.xsd#ext_accountType" xlink:label="ext_accountType" xlink:title="presentation: jnl_entryDetails to ext_accountType Account Type"/>
<presentationArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ext_accounts" xlink:to="ext_accountType" xlink:title="presentation: ext_accounts to ext_accounttype" use="optional" order="360"/>
</presentationLink>
</linkbase>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<linkbase
xmlns="http://www.xbrl.org/2003/linkbase"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
<labelLink xlink:type="extended" xlink:role="http://www.xbrl.org/2003/role/link">
<!-- jnl:totalDebit Total Debit -->
<loc xlink:type="locator" xlink:href="../ext-YYYY-MM-DD.xsd#ext_totalDebit" xlink:label="totalDebit"/>
<label xlink:type="resource" xlink:label="totalDebit_lbl" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="ext_totalDebit_en" xml:lang="en">Total Debit </label>
<label xlink:type="resource" xlink:label="totalDebit_lbl" xlink:role="http://www.xbrl.org/2003/role/documentation" xml:lang="en">The aggregated amount of all debit entries in a single journal entry header.</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="totalDebit" xlink:to="totalDebit_lbl"/>
<!-- jnl:totalCredit Total Credit -->
<loc xlink:type="locator" xlink:href="../ext-YYYY-MM-DD.xsd#ext_totalCredit" xlink:label="totalCredit"/>
<label xlink:type="resource" xlink:label="totalCredit_lbl" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="ext_totalCredit_en" xml:lang="en">Total Credit</label>
<label xlink:type="resource" xlink:label="totalCredit_lbl" xlink:role="http://www.xbrl.org/2003/role/documentation" xml:lang="en">The aggregated amount of all credit entries in a single journal entry header.</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="totalCredit" xlink:to="totalCredit_lbl"/>
<!-- jnl:accountType Account Name -->
<loc xlink:type="locator" xlink:href="../ext-YYYY-MM-DD.xsd#ext_accountType" xlink:label="accountType"/>
<label xlink:type="resource" xlink:label="accountType_lbl" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="ext_accountType_en" xml:lang="en">Account Type</label>
<label xlink:type="resource" xlink:label="accountType_lbl" xlink:role="http://www.xbrl.org/2003/role/documentation" xml:lang="en">A classification that indicates the nature of the account being referenced.
Typical values include “Ledger” for standard general ledger accounts, and “Cost” for cost accounting accounts used in departmental or project-based allocation.</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="accountType" xlink:to="accountType_lbl"/>
</labelLink>
</linkbase>
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) XBRL International. See http://www.xbrl.org/legal -->
<linkbase
xmlns="http://www.xbrl.org/2003/linkbase"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
<labelLink xlink:type="extended" xlink:role="http://www.xbrl.org/2003/role/link">
<!-- jnl:totalDebit Total Debit -->
<loc xlink:type="locator" xlink:href="../ext-YYYY-MM-DD.xsd#ext_totalDebit" xlink:label="totalDebit"/>
<label xlink:type="resource" xlink:label="totalDebit_lbl" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="ext_totalDebit_en" xml:lang="en">Total Debit </label>
<label xlink:type="resource" xlink:label="totalDebit_lbl" xlink:role="http://www.xbrl.org/2003/role/documentation" xml:lang="en">The aggregated amount of all debit entries in a single journal entry header.</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="totalDebit" xlink:to="totalDebit_lbl"/>
<!-- jnl:totalCredit Total Credit -->
<loc xlink:type="locator" xlink:href="../ext-YYYY-MM-DD.xsd#ext_totalCredit" xlink:label="totalCredit"/>
<label xlink:type="resource" xlink:label="totalCredit_lbl" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="ext_totalCredit_en" xml:lang="en">Total Credit</label>
<label xlink:type="resource" xlink:label="totalCredit_lbl" xlink:role="http://www.xbrl.org/2003/role/documentation" xml:lang="en">The aggregated amount of all credit entries in a single journal entry header.</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="totalCredit" xlink:to="totalCredit_lbl"/>
<!-- jnl:accountType Account Name -->
<loc xlink:type="locator" xlink:href="../ext-YYYY-MM-DD.xsd#ext_accountType" xlink:label="accountType"/>
<label xlink:type="resource" xlink:label="accountType_lbl" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="ext_accountType_en" xml:lang="en">Account Type</label>
<label xlink:type="resource" xlink:label="accountType_lbl" xlink:role="http://www.xbrl.org/2003/role/documentation" xml:lang="en">A classification that indicates the nature of the account being referenced.
Typical values include “Ledger” for standard general ledger accounts, and “Cost” for cost accounting accounts used in departmental or project-based allocation.</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="accountType" xlink:to="accountType_lbl"/>
</labelLink>
</linkbase>
4.3. Varying Syntax by Multiplicity
The revised XBRL GL taxonomy framework is designed to support different encoding styles depending on whether a data element occurs once (singular) or multiple times (repeating). This improves both clarity and implementation efficiency, and supports both XML and xBRL-CSV serializations.
4.3.1. Tuple-Based Framework (XML Syntax)
For singular elements (multiplicity 0..1
or 1..1
), the framework uses flat attribute-style fields, directly declared at the parent level.
For repeating elements (multiplicity 0..n
or 1..n
), it switches to tuples, allowing structured repetition of sub-elements.
4.3.2. Example: Group and ComplexType Usage
In the content schema, you define groupings and complex types like so:
<!-- Define a reusable group of entry header elements -->
<group name="entryHeadersGroup">
<sequence>
<element ref="jnl:entryNumber" minOccurs="0"/>
<element ref="jnl:effectiveDate"/>
<element ref="jnl:entryDescription" minOccurs="0"/>
<choice>
<group ref="jnl:entryDetailsGroup" minOccurs="0"/>
<element ref="jnl:entryDetails" maxOccurs="unbounded"/>
</choice>
</sequence>
</group>
<!-- Attach this group to a tuple using complexType -->
<complexType name="entryHeadersComplexType">
<complexContent>
<restriction base="anyType">
<sequence>
<group ref="jnl:entryHeadersGroup"/>
</sequence>
<attribute name="id" type="ID"/>
</restriction>
</complexContent>
</complexType>
-
entryNumber
,effectiveDate
, andentryDescription
are flat attributes (0..1
or1..1
). -
entryDetails
is a tuple used for0..n
or1..n
, capturing multiple journal lines.
4.3.3. instance document
<?xml version="1.0" encoding="UTF-8"?>
<xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:xbrll="http://www.xbrl.org/2003/linkbase"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:ext="http://www.xbrl.org/ext/YYYY-MM-DD"
xmlns:plt2="http://www.xbrl.org/plt2/YYYY-MM-DD"
xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
xmlns:iso639="http://www.xbrl.org/2005/iso639" xsi:schemaLocation="http://www.xbrl.org/plt2/YYYY-MM-DD plt2-all-YYYY-MM-DD.xsd">
<xbrll:schemaRef xlink:type="simple" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="plt2-all-YYYY-MM-DD.xsd"/>
<xbrli:context id="now">
<xbrli:entity>
<xbrli:identifier scheme="http://www.xbrl.org/xbrlgl/sample">SAMPLE</xbrli:identifier>
</xbrli:entity>
<!-- The XBRL GL WG recommends using the file creation data as the period. -->
<xbrli:period>
<xbrli:instant>2005-09-01</xbrli:instant>
</xbrli:period>
</xbrli:context>
<!-- Units of measure in XBRL GL are handled within the measurable or multicurrency elements.
Units are provided by convention and should not be relied upon in interpreting XBRL GL data. -->
<xbrli:unit id="usd">
<xbrli:measure>iso4217:USD</xbrli:measure>
</xbrli:unit>
<ext:entryHeaders>
<jnl:entryNumber contextRef="now">2025-324</jnl:entryNumber>
<jnl:effectiveDate contextRef="now">2025-05-25</jnl:effectiveDate>
<ext:totalDebit contextRef="now" unitRef="usd" decimals="0">110</ext:totalDebit>
<ext:totalCredit contextRef="now" unitRef="usd" decimals="0">110</ext:totalCredit>
<jnl:entryDescription contextRef="now">Purchase of Office Supplies from PQR Store.</jnl:entryDescription>
<ext:entryDetails>
<jnl:lineNumber contextRef="now">2025-324-1</jnl:lineNumber>
<ext:accounts>
<jnl:accountNumber contextRef="now">6100</jnl:accountNumber>
<jnl:accountName contextRef="now">Office Supplies Expense</jnl:accountName>
<ext:accountType contextRef="now">Ledger</ext:accountType>
</ext:accounts>
<ext:accounts>
<jnl:accountNumber contextRef="now">300</jnl:accountNumber>
<jnl:accountName contextRef="now">Tokyo Branch</jnl:accountName>
<ext:accountType contextRef="now">Cost</ext:accountType>
</ext:accounts>
<jnl:debitAmount contextRef="now" unitRef="usd" decimals="0">100</jnl:debitAmount>
<jnl:lineDescription contextRef="now">Purchase of printer ink from PQR</jnl:lineDescription>
</ext:entryDetails>
<ext:entryDetails>
<jnl:lineNumber contextRef="now">2025-324-2</jnl:lineNumber>
<ext:accounts>
<jnl:accountNumber contextRef="now">1430</jnl:accountNumber>
<jnl:accountName contextRef="now">VAT Payable (Input Tax)</jnl:accountName>
<ext:accountType contextRef="now">Lewdger</ext:accountType>
</ext:accounts>
<jnl:debitAmount contextRef="now" unitRef="usd" decimals="0">10</jnl:debitAmount>
<jnl:lineDescription contextRef="now">10% input VAT</jnl:lineDescription>
</ext:entryDetails>
<ext:entryDetails>
<jnl:lineNumber contextRef="now">2025-324-3</jnl:lineNumber>
<jnl:accountNumber contextRef="now">2010</jnl:accountNumber>
<jnl:accountName contextRef="now">Accounts Payable</jnl:accountName>
<ext:accountType contextRef="now">Lewdger</ext:accountType>
<jnl:debitAmount contextRef="now" unitRef="usd" decimals="0">110</jnl:debitAmount>
<jnl:lineDescription contextRef="now">Amount payable to PQR Store</jnl:lineDescription>
</ext:entryDetails>
</ext:entryHeaders>
</xbrli:xbrl>
This instance file extends the base model using an additional namespace (ext
). It adds summarised totals and nested account classifications, using deeper tuple nesting.
Key Features
-
Introduces
<ext:entryHeaders>
and<ext:entryDetails>
. -
Adds
ext:totalDebit
,ext:totalCredit
to header. -
Introduces inner tuples for
ext:accounts
, supporting cost center, account type classification. -
Keeps compatibility with original
jnl
structure.
4.3.4. Simple XPath in XBRL GL
Since element names in the XBRL GL taxonomy are unique, XPath expressions are straightforward—for example, //jnl:debitAmount retrieves all debit amount elements under entry details. This uniqueness is required because each element must have a unique id in the taxonomy schema to support linkbase references. The id value is derived directly from the element name.
4.3.5. Advantages
-
Clean separation between base and extension
-
Module-specific label and presentation linkbases
-
Backward compatibility for software using only the base taxonomy
-
Enables jurisdiction- or domain-specific enrichment without altering core modules
5. Extending the Dimension-based Taxonomy
5.1. Dimensional taxonomy structure
The following directory structure defines the base and extended taxonomy using the dimension-based (OIM-compatible) approach:
XBRL21/
├── plt2-oim-YYYY-MM-DD.xsd ← Root schema for the dimension-based taxonomy
├── ext-dimension-YYYY-MM-DD.xsd ← Dimension definition for concepts
├── ext-YYYY-MM-DD_oim_presentation.xml ← Presentation linkbase
├── ext/ ← Extension module
│ ├── ext-YYYY-MM-DD.xsd ← Module schema for items
│ ├── ext-YYYY-MM-DD_oim.xsd ← Module schema for dimensional items
│ └── lang/ ← Multilingual labels
│ ├── ext-YYYY-MM-DD_label_en.xml ← English labels for items
│ ├── ext-YYYY-MM-DD_oim_label_en.xml ← English labels for dimensional items
│ ├── ext-YYYY-MM-DD_label_ja.xml ← Japanese labels for items
│ └── ext-YYYY-MM-DD_oim_label_ja.xml ← Japanese labels for dimensional items
└── jnl/ ← Journal module
├── jnl-YYYY-MM-DD.xsd ← Module schema for items
├── jnl-YYYY-MM-DD_oim.xsd ← Module schema for dimensional items
└── lang/ ← Multilingual labels
├── jnl-YYYY-MM-DD_label_en.xml ← English labels for items
├── jnl-YYYY-MM-DD_oim_label_en.xml ← English labels for dimensional items
├── jnl-YYYY-MM-DD_label_ja.xml ← Japanese labels for items
└── jnl-YYYY-MM-DD_oim_label_ja.xml ← Japanese labels for dimensional items
5.1.1. What is extended?
To support additional concepts such as:
-
totalDebit
-
totalCredit
-
accountType
To introduce additional cubes such as:
-
accounts
To support extended cube composition, such as:
-
Adding a typed dimension in entryDetails to refer to accounts (master data)
5.1.2. Extension Process
the extended taxonomy performs the following actions:
Create new cube definitions in ext-oim-YYYY-MM-DD.json:
A new accounts cube is defined, with properties such as:
-
accountNumber
-
accountName
-
accountType
(new concept)
The cube is declared as a source for a new typed dimension (accounts).
Extend the existing cube (entryDetails):
In the entryDetails cube, a typed dimension (accounts) is added to allow references to the newly introduced accounts cube.
This enables fact-level linkage between detail lines and their associated account master data.
Update label linkbases:
ext-oim-YYYY-MM-DD_label.xml provides human-readable labels for new properties (accountType, totalDebit, etc.) and new cubes (accounts).
Palette taxonomy entry point:
plt2-oim-YYYY-MM-DD.json acts as the new entry point for the extended taxonomy, importing both the base journal module and the new extension definitions.
5.1.3. Result
-
The extended instance (e.g., ext-journal.csv) now includes:
-
All original base facts (e.g., entryNumber, effectiveDate, debitAmount, etc.)
-
Extended facts like totalDebit, accountType
-
New cube data for accounts, referenced from entryDetails via typed dimension
-
Each CSV row contains flattened facts across multiple cubes, distinguished by dimension columns, while maintaining semantic clarity and cube membership.
5.1.4. Advantages
-
Clean modular extension using OIM principles
-
Flexible support for typed dimensions across master-detail relationships
-
Fully supports single-table CSV output with typed dimension disambiguation
-
No need to modify base definitions
-
Maintains compatibility with tools that understand OIM table templates
5.2. xBER-CSV instance
This is an extended structured CSV including dimensional data such as accounts, account type, and total debit/credit. It corresponds to the ext-instance.xml
.
Key Features
-
Adds
Account
,AccountType
,TotalDebit
,TotalCredit
. -
Grouped using
Header
,Detail
,Account
keys. -
Fully flattened view of deeply nested tuples.
Full Content
Header,Detail,Account,EntryNumber,EffectiveDate,TotalDebit,TotalCredit,EntryDescription,LineNumber,AccountNumber,AccountName,AccountType,DebitAmount,CreditAmount,LineDescription
1,,,2025-324,2025-05-25,110,110,Purchase of Office Supplies from PQR Store.,,,,,,,
1,1,,,,,,,2025-324-1,,,,100,,Purchase of printer ink from PQR
1,1,1,,,,,,,6100,Office Supplies Expense,Ledger,,,
1,1,2,,,,,,,300,Tokyo Branch,Cost,,,
1,2,,,,,,,2025-324-2,1430,VAT Payable (Input Tax),Ledger,10,,10% input VAT
1,3,,,,,,,2025-324-3,2010,Accounts Payable,Ledger,,110,Amount payable to PQR Store
Header |
Detail |
Account |
EntryNumber |
EffectiveDate |
TotalDebit |
TotalCredit |
EntryDescription |
LineNumber |
AccountNumber |
AccountName |
AccountType |
DebitAmount |
CreditAmount |
LineDescription |
1 |
2025-324 |
2025-05-25 |
110 |
110 |
Purchase of Office Supplies from PQR Store. |
|||||||||
1 |
1 |
2025-324-1 |
100 |
Purchase of printer ink from PQR |
||||||||||
1 |
1 |
1 |
6100 |
Office Supplies Expense |
Ledger |
|||||||||
1 |
1 |
2 |
300 |
Tokyo Branch |
Cost |
|||||||||
1 |
2 |
2025-324-2 |
1430 |
VAT Payable (Input Tax) |
Ledger |
10 |
10% input VAT |
|||||||
1 |
3 |
2025-324-3 |
2010 |
Accounts Payable |
Ledger |
110 |
Amount payable to PQR Store |
{
"documentInfo": {
"documentType": "https://xbrl.org/2021/xbrl-csv",
"namespaces": {
"ns0": "http://www.example.com",
"link": "http://www.xbrl.org/2003/linkbase",
"iso4217": "http://www.xbrl.org/2003/iso4217",
"xsi": "http://www.w3.org/2001/XMLSchema-instance",
"xbrli": "http://www.xbrl.org/2003/instance",
"xbrldi": "http://xbrl.org/2006/xbrldi",
"xlink": "http://www.w3.org/1999/xlink",
"jnl": "http://www.xbrl.org/jnl/YYYY-MM-DD",
"plt": "http://www.xbrl.org/plt/YYYY-MM-DD",
"ext": "http://www.xbrl.org/ext/YYYY-MM-DD",
"plt2": "http://www.xbrl.org/plt2/YYYY-MM-DD"
},
"taxonomy": [
"plt2-oim-YYYY-MM-DD.xsd"
]
},
"tableTemplates": {
"plt_template": {
"dimensions": {
"period": "2025-05-17T00:00:00",
"entity": "ns0:Example Co.",
"jnl:d_jnl_entryHeaders": "$Header",
"jnl:d_jnl_entryDetails": "$Detail",
"ext:d_ext_accounts": "$Account"
},
"columns": {
"Header": {},
"Detail": {},
"Account": {},
"EntryNumber": {
"dimensions": {
"concept": "jnl:entryNumber"
}
},
"EffectiveDate": {
"dimensions": {
"concept": "jnl:effectiveDate"
}
},
"TotalDebit": {
"dimensions": {
"concept": "ext:totalDebit",
"unit": "iso4217:USD"
}
},
"TotalCredit": {
"dimensions": {
"concept": "ext:totalCredit",
"unit": "iso4217:USD"
}
},
"EntryDescription": {
"dimensions": {
"concept": "jnl:entryDescription"
}
},
"LineNumber": {
"dimensions": {
"concept": "jnl:lineNumber"
}
},
"AccountNumber": {
"dimensions": {
"concept": "jnl:accountNumber"
}
},
"AccountName": {
"dimensions": {
"concept": "jnl:accountName"
}
},
"AccountType": {
"dimensions": {
"concept": "ext:accountType"
}
},
"DebitAmount": {
"dimensions": {
"concept": "jnl:debitAmount",
"unit": "iso4217:USD"
}
},
"CreditAmount": {
"dimensions": {
"concept": "jnl:creditAmount",
"unit": "iso4217:USD"
}
},
"LineDescription": {
"dimensions": {
"concept": "jnl:lineDescription"
}
}
}
}
},
"tables": {
"plt_table": {
"template": "plt_template",
"url": "plt2.csv"
}
}
}
5.3. Converted XBRL Instance by Arelle
The following is an XBRL instance document automatically converted and validated using Arelle, based on the modular XBRL GL taxonomy. This example demonstrates how data is structured according to the dimensional model.
<?xml version="1.0" encoding="utf-8"?>
<!--extracted from OIM plt2.json-->
<xbrli:xbrl xmlns:ext="http://www.xbrl.org/ext/YYYY-MM-DD"
xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
xmlns:jnl="http://www.xbrl.org/jnl/YYYY-MM-DD"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:ns0="http://www.example.com"
xmlns:plt="http://www.xbrl.org/plt/YYYY-MM-DD"
xmlns:plt2="http://www.xbrl.org/plt2/YYYY-MM-DD"
xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<link:schemaRef xlink:href="plt2-oim-YYYY-MM-DD.xsd" xlink:type="simple"/>
<xbrli:unit id="u-01">
<xbrli:measure>iso4217:USD</xbrli:measure>
</xbrli:unit>
<xbrli:context id="c-01">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com">Example Co.</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="jnl:d_jnl_entryHeaders">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2025-05-16</xbrli:instant>
</xbrli:period>
</xbrli:context>
<jnl:entryNumber contextRef="c-01" id="plt_table.r_1.EntryNumber">2025-324</jnl:entryNumber>
<jnl:effectiveDate contextRef="c-01" id="plt_table.r_1.EffectiveDate">2025-05-25</jnl:effectiveDate>
<ext:totalDebit contextRef="c-01" decimals="INF" id="plt_table.r_1.TotalDebit" unitRef="u-01">110</ext:totalDebit>
<ext:totalCredit contextRef="c-01" decimals="INF" id="plt_table.r_1.TotalCredit" unitRef="u-01">110</ext:totalCredit>
<jnl:entryDescription contextRef="c-01" id="plt_table.r_1.EntryDescription">Purchase of Office Supplies from PQR Store.</jnl:entryDescription>
<xbrli:context id="c-02">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com">Example Co.</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="jnl:d_jnl_entryHeaders">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="jnl:d_jnl_entryDetails">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2025-05-16</xbrli:instant>
</xbrli:period>
</xbrli:context>
<jnl:lineNumber contextRef="c-02" id="plt_table.r_2.LineNumber">2025-324-1</jnl:lineNumber>
<jnl:debitAmount contextRef="c-02" decimals="INF" id="plt_table.r_2.DebitAmount" unitRef="u-01">100</jnl:debitAmount>
<jnl:lineDescription contextRef="c-02" id="plt_table.r_2.LineDescription">Purchase of printer ink from PQR</jnl:lineDescription>
<xbrli:context id="c-03">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com">Example Co.</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="jnl:d_jnl_entryHeaders">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="jnl:d_jnl_entryDetails">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="ext:d_ext_accounts">
<ext:_v>1</ext:_v>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2025-05-16</xbrli:instant>
</xbrli:period>
</xbrli:context>
<jnl:accountNumber contextRef="c-03" id="plt_table.r_3.AccountNumber">6100</jnl:accountNumber>
<jnl:accountName contextRef="c-03" id="plt_table.r_3.AccountName">Office Supplies Expense</jnl:accountName>
<ext:accountType contextRef="c-03" id="plt_table.r_3.AccountType">Ledger</ext:accountType>
<xbrli:context id="c-04">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com">Example Co.</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="jnl:d_jnl_entryHeaders">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="jnl:d_jnl_entryDetails">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="ext:d_ext_accounts">
<ext:_v>2</ext:_v>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2025-05-16</xbrli:instant>
</xbrli:period>
</xbrli:context>
<jnl:accountNumber contextRef="c-04" id="plt_table.r_4.AccountNumber">300</jnl:accountNumber>
<jnl:accountName contextRef="c-04" id="plt_table.r_4.AccountName">Tokyo Branch</jnl:accountName>
<ext:accountType contextRef="c-04" id="plt_table.r_4.AccountType">Cost</ext:accountType>
<xbrli:context id="c-05">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com">Example Co.</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="jnl:d_jnl_entryHeaders">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="jnl:d_jnl_entryDetails">
<jnl:_v>2</jnl:_v>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2025-05-16</xbrli:instant>
</xbrli:period>
</xbrli:context>
<jnl:lineNumber contextRef="c-05" id="plt_table.r_5.LineNumber">2025-324-2</jnl:lineNumber>
<jnl:accountNumber contextRef="c-05" id="plt_table.r_5.AccountNumber">1430</jnl:accountNumber>
<jnl:accountName contextRef="c-05" id="plt_table.r_5.AccountName">VAT Payable (Input Tax)</jnl:accountName>
<ext:accountType contextRef="c-05" id="plt_table.r_5.AccountType">Ledger</ext:accountType>
<jnl:debitAmount contextRef="c-05" decimals="INF" id="plt_table.r_5.DebitAmount" unitRef="u-01">10</jnl:debitAmount>
<jnl:lineDescription contextRef="c-05" id="plt_table.r_5.LineDescription">10% input VAT</jnl:lineDescription>
<xbrli:context id="c-06">
<xbrli:entity>
<xbrli:identifier scheme="http://www.example.com">Example Co.</xbrli:identifier>
<xbrli:segment>
<xbrldi:typedMember dimension="jnl:d_jnl_entryHeaders">
<jnl:_v>1</jnl:_v>
</xbrldi:typedMember>
<xbrldi:typedMember dimension="jnl:d_jnl_entryDetails">
<jnl:_v>3</jnl:_v>
</xbrldi:typedMember>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2025-05-16</xbrli:instant>
</xbrli:period>
</xbrli:context>
<jnl:lineNumber contextRef="c-06" id="plt_table.r_6.LineNumber">2025-324-3</jnl:lineNumber>
<jnl:accountNumber contextRef="c-06" id="plt_table.r_6.AccountNumber">2010</jnl:accountNumber>
<jnl:accountName contextRef="c-06" id="plt_table.r_6.AccountName">Accounts Payable</jnl:accountName>
<ext:accountType contextRef="c-06" id="plt_table.r_6.AccountType">Ledger</ext:accountType>
<jnl:creditAmount contextRef="c-06" decimals="INF" id="plt_table.r_6.CreditAmount" unitRef="u-01">110</jnl:creditAmount>
<jnl:lineDescription contextRef="c-06" id="plt_table.r_6.LineDescription">Amount payable to PQR Store</jnl:lineDescription>
</xbrli:xbrl>
6. Summary: The Structured CSV
The XBRL GL taxonomy framework offers a robust and flexible method for expressing detailed accounting data using two models:
A tuple-based structure for strictly nested XML
A dimension-based structure for flat, structured CSV (xBRL-CSV)
Both models share the same unified semantic model, with syntax differences determined by the multiplicity of repeating elements. They also support modular extensions without altering the base taxonomy.
6.1. Advantages of Structured CSV
Structured CSV enables a compact and clear representation of hierarchical data within a single flat file.
6.1.1. Direct Representation of Hierarchical Accounting Data
The script processes a single structured CSV file containing both header-level and detail-level journal entry data. Dimensional keys (e.g., dHeader, dDetail) serve to distinguish and link layers of the hierarchy—analogous to parent-child relationships:
-
No need for multiple joined tables
-
Context is preserved within a single file
-
Data is easy to group, filter, and trace back to source records
6.1.2. Simplified Data Filtering
By checking the dHeader
and dDetail
columns, the script can easily isolate header-level or line-level records using simple filtering like:
df[df["dHeader"].notnull()] # Header records
df[df["dDetail"].notnull()] # Detail records
This makes querying and analysis much easier than traditional relational JOINs.
6.1.3. Improved Auditability and Traceability
Each entry detail is tied back to its header using the dimension keys. For example:
header_id = row["dHeader"]
related_headers = df[df["dHeader"] == header_id]
This enables full reconstruction of the hierarchical journal entry from a flat CSV.
6.1.4. CSV as a Portable, Human-Readable Format
Unlike XML or JSON, structured CSV:
-
Can be opened and understood using Excel or any text editor.
-
Is easy to version control.
-
Is lightweight for data exchange across systems.
6.1.5. Supports Validation and Consistency Checks
The script builds dictionaries of headers and details, allowing validation steps such as:
-
Checking that each detail line has a corresponding header.
-
Verifying balance per entry (e.g., debit = credit).
6.2. Summary
Structured CSV provides a single-sheet, human-readable, hierarchical representation of complex ledger data. It offers simplicity, portability, and queryability without sacrificing the ability to express nested relationships—making it a powerful approach for accounting, audit, and data exchange.
Leave a Reply