Introducing the XBRL GL Taxonomy Framework: Tuple and Dimension Models for Granular Accounting Data

Views: 129

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

Tuple based taxonomy
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.

Diagram
Structure and Roles

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.

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" 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).

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/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>
jnl-YYYY-MM-DD_tpl.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" 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.

plt-all-YYYY-MM-DD.xsd

plt all

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

jnl instance

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
Diagram

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)

Structure and Roles

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.

plt-oim-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.

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/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>
jnl-YYYY-MM-DD_oim.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" 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.

jnl-dimension-YYYY-MM-DD.xml.xsd
<?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>
Diagram

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.

Characteristics
  • 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 the entryHeaders cube

  • p_jnl_entryDetails: primary item in the entryDetails 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.

plt oim

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

plt.csv
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

Arelle plt.json

plt json

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
Diagram

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:

  1. Redefine the original tuple (e.g., entryHeaderType) in ext-content-YYYY-MM-DD.xsd:

    • The original tuple is redeclared using substitutionGroup="xbrli:tuple" under the ext namespace in ext/ext-YYYY-MM-DD.xsd.

    • A new complexType is created that extends or replaces the original content model.

  2. Insert new child elements:

    • Fields such as ext:totalDebit, ext:totalCredit, and ext: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.

  3. Update linkbases:

    • A new ext-YYYY-MM-DD_presentation.xml file defines the updated layout, including:

    • New elements

    • Removed elements (using use="prohibited" in presentationArc to suppress inherited arcs)

    • A new ext-YYYY-MM-DD_label.xml provides localized, human-readable labels for the extended concepts.

  4. Palette and content schemas:

    • plt2-all-YYYY-MM-DD.xsd acts as the root schema and imports ext-content-YYYY-MM-DD.xsd.

    • ext-content-YYYY-MM-DD.xsd imports the base jnl module and includes the ext 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 like totalDebit and accountType.

  • The newly introduced accounts tuple is defined as a child of entryDetails. 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

root schema for the extended 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>
content aggregator for extended concepts
<?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>
extended module schema for items
<?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>
extended module schema for tuples
<?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>
presentation linkbase for extended module
<?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>
English labels for items in extended module
<?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>
English labels for tuples in extended module
<?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, and entryDescription are flat attributes (0..1 or 1..1).

  • entryDetails is a tuple used for 0..n or 1..n, capturing multiple journal lines.

plt2 allXMLSpy

4.3.3. instance document

ext instance

ext-instance.xml
<?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

debitAmountXPath 1

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
Diagram

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

plt2 oim

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

plt2.csv
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

plt2.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",
            "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.


Posted

in

, ,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *