This Public Working Draft has been approved for publication by the XBRL Standards Board for the purpose of obtaining feedback. It is not recommended for use in production systems, and may change significantly prior to finalisation.
This initial Public Working Draft is intended to communicate the strategic direction for the XBRL specification. The specification is still under development and is subject to change. The content of this document is not final and sections of the document may be updated, replaced, or removed as it moves to a recommended status. This document is provided for review and comment only. It is not a formal specification and does not represent the final position of XBRL International Inc. or its members.
Sections of the document appear in blue boxes (such as this) that indicate a placeholder for future drafts of the specification.
"Project Tavi" a is working title, and will be updated prior to finalisation. This project was previously referred to as "OIM Taxonomy", but has been renamed as this did not accurately describe its scope or content.
Reviewers of the document should read the document from the perspective of the following:
To assist in the review of the document, example models and applications are provided so the intended functionality can be assessed.
The XBRL v2.1 specification and XBRL Dimensions v1.0 specifications define an XML-based syntax for business reporting, along with accompanying metadata definitions known as taxonomies. While XML is the original format for XBRL, there is increasing demand to work with XBRL data in alternative formats.
This specification introduces a syntax-independent model for representing XBRL objects. The model captures the full range of semantic information encoded in the XML syntax of XBRL v2.1, and removes format-specific constructs. This enables consistent interpretation and use of XBRL models across multiple syntactic representations, supporting simpler, more portable implementations and greater accessibility for a broader range of users and technologies.
This document defines an XBRL model that encapsulates both the traditional XBRL taxonomy and OIM Report Model.
The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, in this specification, are to be interpreted as described in IETF RFC 2119.
The keywords expanded name, NCName and QName are to be interpreted as described in the XML Names specification.
An XBRL model is a collection of XBRL objects that can be represented as a collection of XBRL modules or a single Compiled Model. An XBRL model is the complete set of objects that define a taxonomy or instance. An XBRL model can be represented as a single file or as a collection of files. An XBRL model can be extended by importing other models.
A XBRL module is the primary building block used to define models. A module defines XBRL objects within a single namespace. XBRL modules can refer to objects in different namespaces, using an import taxonomy object. All objects defined using the name property in a XBRL module are defined using the same namespace. A XBRL module can be imported by other modules or compiled into a compiled model. A module is identified with a documentType of https://xbrl.org/PWD/2026-09-01/module. A module is required to define a documentNamespacePrefix property in the documentInfo object, and all objects defined in the module are in the namespace defined by the documentNamespacePrefix.
A resolved model is a XBRL model in which all import taxonomy objects and extending objects have been processed and all references to external objects have been resolved. A resolved model is complete in the sense that it contains all objects necessary to fully interpret the model. A resolved model is not a compiled model as a compiled model is a serialisation format.
A compiled model is a fully resolved model that includes all objects defined in the entry module and all imported models. A compiled model is the result of processing an entry module and all its imports. The compiled model includes all objects that are discovered by processing all import taxonomy objects and extending objects defined in XBRL modules. A compiled model cannot include an import taxonomy object, an extending object or a documentNamespacePrefix property. An XBRL compiled model can be imported and extended by an XBRL module. A compiled model when serialized is identified with a documentType of https://xbrl.org/PWD/2026-09-01/compiled.
A label bundle module is a XBRL module that is used to provide an additional layer of presentational and annotational information to an existing XBRL model. Its primary purpose is to allow defining labels in different languages that can be layered on existing XBRL models. A label bundle module is restricted to defining label objects and indicates the XBRL model that it can be associated with. A label bundle module has a documentType of https://xbrl.org/PWD/2026-09-01/labelBundle.
A reference bundle module is a XBRL module that is used to provide an additional layer of reference information to an existing XBRL model. Its primary purpose is to allow defining references that can be layered on existing XBRL models. A reference bundle module is restricted to defining reference objects and indicates the XBRL model that it can be associated with. A reference bundle module has a documentType of https://xbrl.org/PWD/2026-09-01/referenceBundle.
A structurally valid document is a document that does not contain an object structure error. In the case of a JSON document the document must conform to the constraints defined in Section 3.2.
Green text denotes a definition of the term in bold font. For example:
Text in a blue box denotes a non-normative explanatory note:
This is non-normative commentary.
QNames in parenthetical red text after a "MUST" or "MUST NOT" statement prescribe standardised error codes to be used if the preceding condition is violated. For example,
The
exampleproperty MUST be defined (eg:exampleErrorCode).
"MUST" or "MUST NOT" statements that do not have a prescribed error code are not automatically enforceable, and processors are not required to detect violations.
Text in a dark blue box denotes a non-normative editorial note with information for reviewers of this draft specification.
This is a draft note.
This specification makes use of QName notation to refer to XML expanded names (the combination of a namespace URI and a local name) make use of abbreviated forms for these identifiers. This specification defines a number of prefixes as being reserved prefixes.
A reserved prefix is any prefix defined in the table below:
| Prefix | Namespace URI |
|---|---|
| xbrl | https://xbrl.org/PWD/2026-09-01 |
| xbrlr | https://xbrl.org/PWD/2026-09-01/report |
| xbrla | https://xbrl.org/PWD/2026-09-01/accounting |
| xbrli-2003 | https://xbrl.org/2003/instance |
| xs | https://www.w3.org/2001/XMLSchema |
| enum2 | https://xbrl.org/2020/extensible-enumerations-2.0 |
| oimce | https://xbrl.org/2021/oim-common/error |
| oime | http://www.xbrl.org/2021/oim/error |
| oimte | https://xbrl.org/PWD/2026-09-01/oimtaxonomy/error |
| iso4217 | http://www.xbrl.org/2003/iso4217 |
| lei | http://standards.iso.org/iso/17442 |
| utr | https://xbrl.org/PWD/2026-09-01/utr |
| ref | https://xbrl.org/PWD/2026-09-01/ref |
| xbrltt | https://xbrl.org/PWD/2026-09-01/transform-types |
Namespace URIs are the authoritative identity for all objects in an XBRL model. Every QName value (such as exp:Concept1) is resolved to its expanded name — the combination of its namespace URI and local name — using the namespaces map declared in the documentInfo object of each document. Once resolved, the prefix plays no further role: two documents that use different prefixes (exp:Concept1 and acme:Concept1) are referring to the same object if both prefixes map to the same namespace URI.
Prefixes are a serialisation convenience. They are declared per-document in the namespaces object and are scoped to that document only. The same prefix may map to different URIs in different documents, and different prefixes may map to the same URI. When modules are compiled into a single compiled model, the compiler resolves all prefix mappings to their underlying URIs, tracks objects by their expanded names, and produces a single canonical namespaces map for the output. Any prefix conflicts between imported modules are resolved at compile time and do not affect the identity or semantics of the objects.
This specification defines a set of object types. Each object type has a set of named properties. The type of each property is specified in the format "(Model type / JSON type)".
Where a collection type is stated as being non-empty, the collection MUST contain at least one item (oimte:invalidEmptySet). The evaluation of an empty set occurs when validating the XBRL module or compiled model. The evaluation of an empty set is performed at the document level and not the XBRL model level.
At the model level an empty set in a module may have items at the model level set when combined with other modules where the set is not empty such as domain class objects in the domain classes set that are included in the built-in model.
The JSON type is one or more JSON primitive types: string, array, object, or number.
The description of each named property indicates if the property is optional or required. For extensible objects additional usage constraints are defined in the definition. The definition identifies if the base object or extending object is optional, required or prohibited.
Where the specification defines an object structure error the processor raises the corresponding syntax error, dependent on the syntactic format that the model is expressed in. For example if the syntax is JSON then an invalid JSON Structure error is raised.
The XBRL Model has a standard serialisation in JSON format. Files in this format MUST conform to the constraints in this section.
JSON documents MUST be valid JSON as defined in [RFC 8259] (oime:invalidJSON).
To ensure interoperability, all objects in JSON documents conforming to this specification MUST have unique keys (oime:invalidJSON).
JSON documents MUST use UTF-8 character encoding (oime:invalidJSON). Although a Unicode Byte Order Mark (BOM) MAY be included, it is neither required nor recommended.
This specification defines a model type and JSON type for each object property.
Values in a JSON document MUST conform to the specified JSON type (oimte:invalidJSONStructure)
Properties marked as "required" MUST be present whenever the containing object is present (oimte:invalidJSONStructureMissingRequiredProperty).
Objects cannot contain properties that are not defined for the object type (oimte:invalidJSONStructure).
All namespace prefixes used in a XBRL module MUST be defined in the namespaces property of the document info object of the module (oimce:unboundPrefix).
All referenceable objects within an XBRL model MUST have a unique name property value within the XBRL model (oimte:duplicateObjects).
All referenceable objects objects defined in an XBRL Model with a documentType property of https://xbrl.org/PWD/2026-09-01/module MUST be in the namespace defined by the documentNamespacePrefix property of the document info object of the module (oimte:objectNamespaceMismatch).
XBRL modules MUST NOT have a documentNamespacePrefix that is a reserved prefix, or which maps to a namespace URI with a host component in the xbrl.org domain unless it is published by XBRL International.
Objects in an XBRL model may refer to other objects in the model using a QName value that refers to the name property of another object.
The term reference means that the value, or values in the case of collection types, of the specified property correspond to the name property of model objects of the specified object type.
The term referenced object means a referenceable object that is the subject of a reference.
Where a value is specified as being a reference:
name or be defined as an implied object (oimte:invalidQNameReference); andObjects defined in an XBRL module with a reserved prefix (such as 'xbrl', 'xs', 'xbrlr') MUST only be bound to the namespace URI prescribed for that alias in the reserved prefix section of the specification, and MUST NOT be used as the namespace prefix for non specification defined object names in an XBRL Model (oimce:invalidURIForReservedAlias).
Items included in a set or ordered set must have no repeating items. (oimte:duplicateItemsInSet)
Objects in an XBRL model are defined explicitly within a XBRL module or imported from another model. For externally defined identifiers it is impractical or impossible to enumerate these as specific objects. The population of objects may be very large, may change too rapidly to be captured in a static model, or may be authoritatively defined at an external location that is not represented as an importable XBRL model. For example the Legal Entity Identifier (LEI) system maintained under ISO 17442, where millions of globally unique entity identifiers are registered continuously.
For such identifiers, a XBRL module or compiled model MAY reference member objects or entity object that are not explicitly defined in an imported XBRL module. A QName whose namespace URI is registered as an implied object namespace that resolves to an implied object whose domain class is determined by the namespace binding. An implied object is treated as a fully valid object of the appropriate domain class. A processor MUST raise oimte:invalidObjectType for a QName whose prefix maps to an implied object namespace and the object does not match the expected object type defined by the implied object.
An implied object namespace MUST still be declared in the namespaces map of the document info object. The implied object mechanism exempts the requirement to define the object explicitly, but does not exempt the requirement to declare the prefix (oimce:unboundPrefix).
The prefix for an implied object namespace becomes a reserved prefix and MUST NOT be used to define objects in an XBRL module (oimce:invalidURIForReservedAlias).
The implied object defines the mapping of implied object namespaces to their domain classes.
An XBRL document consists of the following two objects:
documentInfo (documentInfo object / object)documentInfo is a document-level envelope that is not part of the compiled XBRL model.xbrlModel (xbrl:xbrlModelObject / object)In JSON documents, the documentInfo object MUST appear before the xbrlModel object (oimte:invalidJSONStructure). Processors MUST validate document structure before processing model content, and the documentInfo object provides the namespace prefix map and other metadata required to interpret QName values in the xbrlModel. Placing documentInfo first ensures that a processor can resolve prefixes in document order without backtracking.
The document info object provides document-level information about the document. The document info object is a document-level envelope that is not part of the XBRL model. Every document (whether a module, a compiled model or a label bundle module) comprises a documentInfo object. The document info object is not semantic content that comprises the XBRL Model. The document info object is required to resolve the QName prefix to the namespace URI defined in the namespace map.
The object has the following properties:
documentType (xs:anyURI / string)(required) A URI that represents the type of model document. This indicates if the model is a compiled model, a XBRL module, a label bundle module or a reference bundle module. A compiled model is indicated by the URI https://xbrl.org/PWD/2026-09-01/compiled, aXBRL module is indicated by the URI https://xbrl.org/PWD/2026-09-01/module, a label bundle module is indicated by the URI https://xbrl.org/PWD/2026-09-01/labelBundle, and a reference bundle module is indicated by the URI https://xbrl.org/PWD/2026-09-01/referenceBundle. The documentType property is not part of the XBRL model, but is a document level construct that indicates the type of document being processed. The value of documentType MUST be one of the four specified URIs, and processors MUST raise an error if an unrecognized URI is encountered (oimte:invalidDocumentType).
compiled : Indicates a single model where all objects are defined within a single model and no external modules or models are imported. A compiled model cannot import and/or define a property of extends. A documentNamespacePrefix property is not permitted for a compiled model.
module : Indicates a modular format where model objects can be defined in external models that are imported using the import taxonomy object. All objects defined must be in the namespace of the documentNamespacePrefix. A documentNamespacePrefix property is required for an XBRL module.
labelBundle : Indicates a label bundle format comprising only label objects.
referenceBundle : Indicates a reference bundle format comprising only reference objects.
namespaces (xbrl:namespaceObject / object)documentNamespacePrefix (xs:NCName / string)importMapping (xbrl:importMappingObject / object)sourceMappings (non-empty set of xbrl:factSourceMappingObject objects / array)sourceMappings is excluded from the model (see Excluded properties), it is not removed from the document. A compiled model MUST retain the sourceMappings property in its documentInfo whenever the model contains fact value source objects or fact value anchor objects that reference an external source file via a source QName (oimte:missingSourceMapping). description (xs:string / string)
The documentNamespacePrefix property is required if the model type is an XBRL module.
If a documentNamespacePrefix property is defined in the document info object, the value of documentNamespacePrefix MUST be a prefix string that is defined as a key in the namespaces property of the document info object (oimte:documentNamespacePrefixNotDefined).
If the documentType property is https://xbrl.org/PWD/2026-09-01/module or https://xbrl.org/PWD/2026-09-01/labelBundle then the documentNamespacePrefix property MUST be defined (oimte:documentNamespaceNotDefined).
If the documentType property is https://xbrl.org/PWD/2026-09-01/compiled then:
documentNamespacePrefix property MUST NOT be defined (oimte:documentNamespaceDefinedForCompiledModel); andimportMapping property MUST NOT be defined (oimte:importMappingDefinedForCompiledTaxonomy).The namespaces object is a prefix map object that resolves the prefix component of a QName or SQName to a URI. The object has a QName of xbrl:namespaceObject.
The namespaces object consists of a set of prefix URI pairs.
{prefix} (xs:anyURI / string)The prefix map is a URI map that MUST conform to the constraints defined for the URI map object.
An example namespace map is shown below:
"namespaces": {
"exp": "http://example.com/taxonomy",
"lei": "http://standards.iso.org/iso/17442",
"xbrl": "https://xbrl.org/PWD/2026-09-01",
"iso4217": "http://www.xbrl.org/2003/iso4217",
"utr": "https://xbrl.org/PWD/2026-09-01/utr",
"xbrlr":"https://xbrl.org/PWD/2026-09-01/report",
"xs": "http://www.w3.org/2001/XMLSchema",
"ref":"https://xbrl.org/PWD/2026-09-01/ref"
}
Tools that produce compiled models should remove unused prefix declarations from the `namespaces` map, but processors don't raise an error for unused prefix declarations that remain in the map.
The import mapping object is a JSON object where each key is the QName of an XBRL Model object and each value is a single URL string identifying the location of the document that defines that model. The importMapping provides the processor with the file locations needed to resolve xbrlModelName references in import taxonomy objects.
The import mapping object has a QName of xbrl:importMappingObject.
Import mappings MUST NOT be defined for built-in models (oimte:illegalImportMappingForBuiltInTaxonomy).
The import mapping object consists of a set of model QName to URL pairs.
"importMapping": {
"exp:SampleTaxonomy": "../examples/exampleTaxonomy.json",
"xbrla:accountingModule": "../spec-taxonomies/xbrla.json"
}
When a processor resolves an xbrlModelName reference that appears in importedTaxonomies, it must look up the QName in the import mapping object to obtain the URL, and retrieve and process the model at that URL.
If no importMapping key exists in the XBRL module for a xbrlModelName QName defined in an import taxonomy object that is not a built-in model, the processor MUST raise an error (oimte:taxonomyNotFound).
The import mapping objects defined in all the XBRL modules comprising a model MUST have the same URL corresponding to each xbrlModelName (oimte:inconsistentTaxonomyURL).
The mapping file location defined in the import mapping object must be defined in the same module as the import statement. The location is scoped to the module. An error is raised if the module file location URL differs from the xbrlModelName across modules that comprise the model. A file location URL can be associated with one or more xbrlModelName QNames.
The document retrieved from the URL MUST be a structurally valid document.
Processors are not required to load or validate importMapping entries for model QNames that are not referenced in an import taxonomy object.
The fact source mapping Object identifies a data source document and the fact source object QName reference. The object provides a sourceName (the fact source object) and a url (the location of the source document). The object enables processors to locate the actual data files (such as CSV files, HTML files, or other data formats) associated with each fact source object. The object has a QName of xbrl:factSourceMappingObject.
The fact source mapping object has the following properties:
sourceName (xs:QName / string)sourceName QName MUST appear at most once in the array (oimte:duplicateSourceNameProperty).url (xs:anyURI / string)sourceMappings array that maps two fact source mapping objects to their respective source documents:
"sourceMappings": [
{
"sourceName": "exp:QuarterlyFinancials",
"url": "https://example.com/data/q4-2025.csv"
},
{
"sourceName": "aapl:annualReport",
"url": "https://example.com/reports/aapl-20240928.htm"
}
]
exp:QuarterlyFinancials factSource references a single CSV file containing quarterly financial data.aapl:annualReport factSource references an HTML annual report.A document is considered to have the XBRL model document type if it is a valid JSON document and the JSON Pointer /documentInfo/documentType resolves to one of the following strings:
https://xbrl.org/PWD/2026-09-01/module
https://xbrl.org/PWD/2026-09-01/compiled
https://xbrl.org/PWD/2026-09-01/labelBundle
https://xbrl.org/PWD/2026-09-01/referenceBundle
If a document does not have this document type, it MUST be processed according to the rules defined in the OIM Common specification. In such cases, the errors defined in this specification MUST NOT be raised—with the exception of (oime:invalidJSON), which MUST still be enforced.
A label bundle module or reference bundle module MUST define the documentNamespacePrefix property of the document info object (oimte:documentNamespacePrefixNotDefined).
A label bundle module MUST only contain label objects in the model object (oimte:invalidBundleModuleContent).
A reference bundle module MUST only contain reference objects in the model object (oimte:invalidBundleModuleContent).
A label bundle module or reference bundle module MUST define the referenceModel property of the model object (oimte:missingBundleModuleReferenceModel).
A label bundle module used as an entry module MUST validate that the QName value of the forObject property of all label objects references an object defined in the referenceModel (oimte:invalidQNameReference). The referencedModel is resolved to a resolved model and the forObject property of all label objects in the label bundle module must reference an object defined in that resolved model.
A reference bundle module used as an entry module MUST validate that the QName value of the forObject or forObjects property of all reference objects references an object defined in the referenceModel (oimte:invalidQNameReference). The referencedModel is resolved to a resolved model and the forObject or forObjects property of all reference objects in the reference bundle module must reference an object defined in that resolved model.
A label bundle module or reference bundle module imported by an importing model ignores the referenceModel of the bundle module and removes objects in the bundle module that do not reference objects defined in the importing model. See forObject removal for details.
A referenceModel MUST NOT be defined for a documentType that does not represent a label bundle module or reference bundle module (oimte:invalidReferenceModelDocumentType).
An XBRL model consists of a set of model objects.
A model object is an object used to define an XBRL model.
All model objects in the model have an object type.
An object type is identified by an object type QName.
| Object Type | Object Type QName | Referenceable | Parent Object Type | |
|---|---|---|---|---|
| XBRLModel | XBRLModel | xbrl:xbrlModelObject | true | Defines all objects and properties of a XBRL Model. |
| Heading | xbrl:headingObject | true | XBRLModel | |
| Concept | xbrl:conceptObject | true | XBRLModel | |
| Domain Class | xbrl:domainClassObject | true | XBRLModel | |
| Dimension | xbrl:dimensionObject | true | XBRLModel | |
| Domain Network | xbrl:domainNetworkObject | true | XBRLModel | |
| Member | xbrl:memberObject | true | Domain Network | |
| Property | xbrl:propertyObject | false | XBRLModel | |
| Reference | xbrl:referenceObject | true | XBRLModel | |
| Label | xbrl:labelObject | false | XBRLModel | |
| Cube | xbrl:cubeObject | true | XBRLModel | |
| Cube Dimension | xbrl:cubeDimensionObject | false | Cube | |
| Period Constraint | xbrl:periodConstraintObject | false | CubeDimension | |
| Date Resolution | xbrl:dateResolutionObject | false | PeriodConstraint | |
| Entity | xbrl:entityObject | true | XBRLModel | |
| Unit | xbrl:unitObject | true | XBRLModel | |
| Fact | xbrl:factObject | true | XBRLModel | |
| Footnote | xbrl:footnoteObject | true | XBRLModel | |
| Transform | xbrl:transformObject | true | XBRLModel | |
| Fact Source | xbrl:factSourceObject | true | XBRLModel | |
| Fact Map | xbrl:factMapObject | true | XBRLModel | |
| Table Template | xbrl:tableTemplateObject | true | XBRLModel | |
| JSON Template Map | xbrl:jsonTemplateMapObject | true | XBRLModel | |
| XML Template Map | xbrl:XMLTemplateMapObject | true | XBRLModel | |
| Group | xbrl:groupObject | true | XBRLModel | |
| Group Content | xbrl:groupContentObject | false | XBRLModel | |
| Group Tree | xbrl:groupTreeObject | true | XBRLModel | |
| Network | xbrl:networkObject | true | XBRLModel | |
| Relationship | xbrl:relationshipObject | false | Network and Domain Network | |
| Relationship Constraint | xbrl:relationshipConstraintObject | false | Relationship Type | |
| Datatype | xbrl:dataTypeObject | true | XBRLModel | |
| Unit Type | xbrl:unitTypeObject | false | DataType | |
| Collection Type | xbrl:collectionTypeObject | true | XBRLModel | |
| Fact Locator Type | xbrl:factLocatorTypeObject | true | XBRLModel | |
| Relationship Type | xbrl:relationshipTypeObject | true | XBRLModel | |
| Property Type | xbrl:propertyTypeObject | true | XBRLModel | |
| XBRL Model Type | xbrl:modelTypeObject | true | XBRLModel | |
| Label Type | xbrl:labelTypeObject | true | XBRLModel | |
| Reference Type | xbrl:referenceTypeObject | true | XBRLModel | |
| Cube Type | xbrl:cubeTypeObject | true | XBRLModel | |
| Dimensions Allowed | xbrl:dimensionsAllowedObject | false | CubeType | |
| Cube Relationship | xbrl:cubeRelationshipObject | false | CubeType | |
| Layout | xbrl:layoutObject | true | XBRLModel | |
| Data Table | xbrl:dataTableObject | true | Layout | |
| Axis | xbrl:axisObject | false | DataTable | |
| Grid Axis | xbrl:gridAxisObject | false | Axis | |
| Axis Item | xbrl:axisItemObject | false | GridAxis | |
| Axis Group | xbrl:axisGroupObject | false | GridAxis | |
| Table Point | xbrl:tablePointObject | false | DataTable | |
| Import Taxonomy | xbrl:importTaxonomyObject | false | XBRLModel | |
| Final Taxonomy | xbrl:finalTaxonomyObject | true | XBRLModel | |
| Namespace Prefix | xbrl:namespacePrefixObject | false | XBRLModel | |
| Implied Object | xbrl:impliedObjectObject | false | XBRLModel |
A referenceable object type is an object type that has a QName name property. Referenceable object types are indicated by "true" in the "referenceable" column in the above table.
A referenceable object is an object of a referenceable object type.
A model-defined property is an additional property associated with a model object. Model-defined properties are defined by the property type object, and instantiated using the property object.
Model-defined properties are specified using the properties property on the relevant model object and are supported on most object types.
The XBRL model object is the container object that includes all other model objects that comprise a model. This includes what the XBRL 2.1 specification called taxonomy and instance components.
The XBRL model object has an object type QName of xbrl:xbrlModelObject.
An XBRL Model object represents an entire model. It is a container for all the components of the model.
The properties of the XBRL Model object are as follows:
name (xs:QName / string)name is a QName that uniquely identifies the XBRL Model object.frameworkName (xs:string / string)version (xs:string / string)major.minor.patch (e.g., "2024.1.0"). Where:For simple annual releases, a year value may be used (e.g., "2024"). The version string MAY include additional metadata such as release candidate or build identifiers (e.g., "2024.1.0-rc1" or "2024.1.0+build.123").
modelType (xbrl:modelTypeObject reference / string)xbrl:report and xbrl:taxonomy.
duplicateFactsInModel (xs:string / string)no duplicates, complete duplicates,consistent duplicates, or inconsistent duplicates. If no string value is provided the default value is inconsistent duplicates. The value of duplicateFactsInModel sets the default value of duplicateFactsInCube. The value of duplicateFactsInCube has precedence over duplicateFactsInModel (see Section 8.10.2)
headings (non-empty set of xbrl:headingObject objects / array)concepts (non-empty set of xbrl:conceptObject objects / array)domainClasses (non-empty set of xbrl:domainClassObject objects / array)dimensions (non-empty set of xbrl:dimensionObject objects / array)domainNetworks (non-empty set of xbrl:domainNetworkObject objects / array)members (non-empty set of xbrl:memberObject objects / array)properties (non-empty set of xbrl:propertyObject objects / array)labels (non-empty set of xbrl:labelObject objects / array)references (non-empty set of xbrl:referenceObject objects / array)cubes (non-empty set of xbrl:cubeObject objects / array)entities (non-empty set of xbrl:entityObject objects / array)units (non-empty set of xbrl:unitObject objects / array)facts (non-empty set of xbrl:factObject objects / array)footnotes (non-empty set of xbrl:footnoteObject objects / array)factSources (non-empty set of xbrl:factSourceObject objects / array)factMaps (non-empty set of xbrl:factMapObject objects / array)JSONTemplateMaps (non-empty set of xbrl:JSONTemplateMapObject objects / array)XMLTemplateMaps (non-empty set of xbrl:XMLTemplateMapObject objects / array)
groups (non-empty set of xbrl:groupObject objects / array)groupContents (non-empty set of xbrl:groupContentObject objects / array)groupTree (xbrl:groupTreeObject / object)xbrl:rootSource, which acts as a virtual root (not rendered as a node) whose targets are the top-level groups. Only one group tree object is allowed per model.networks (non-empty set of xbrl:networkObject objects / array)dataTypes (non-empty set of xbrl:dataTypeObject objects / array)collectionTypes (non-empty set of xbrl:collectionTypeObject objects / array)factLocatorTypes (non-empty set of xbrl:factLocatorTypeObject objects / array)propertyTypes (non-empty set of xbrl:propertyTypeObject objects / array)labelTypes (non-empty set of xbrl:labelTypeObject objects / array)referenceTypes (non-empty set of xbrl:referenceTypeObject objects / array)relationshipTypes (non-empty set of xbrl:relationshipTypeObject objects / array)modelTypes (non-empty set of xbrl:modelTypeObject objects / array)cubeTypes (non-empty set of xbrl:cubeTypeObject objects / array)tableTemplates (non-empty set of xbrl:tableTemplateObject objects / array)layouts (xbrl:layoutObject / object)transforms (non-empty set of xbrl:transformObject objects / array)importedTaxonomies (non-empty set of xbrl:importTaxonomyObject objects / array)referenceModel (xbrl:xbrlModelObject reference / string)referenceModel property is only used with a module that has a documentType of https://xbrl.org/PWD/2026-09-01/labelBundle or https://xbrl.org/PWD/2026-09-01/referenceBundle. The referenceModel property uses the import mapping object to locate the referenced taxonomy for validating label bundle module label objects or reference bundle module reference objects.finalTaxonomy (xbrl:finalTaxonomyObject / object)namespacePrefixes (non-empty set of xbrl:namespacePrefixObject objects / array)impliedObjects (non-empty set of xbrl:impliedObject objects / array)A heading object defines objects that have no reportable value, but are components of the concept dimension. Heading objects are used to define headers and to organize concepts into hierarchies on the concept core dimension.
The heading object has an object type QName of xbrl:headingObject.
The heading object has the following explicit properties:
name (xs:QName / string)name is a QName that uniquely identifies the heading object.properties (non-empty set of xbrl:propertyObject objects / array)An heading object MUST NOT be defined as a dimension member on a fact (oimte:invalidFactDimensionMember).
A concept object defines objects that can appear on the concept core dimension. All concept objects have an associated datatype that indicates the type of the value property of a fact value object defined by the concept object. The datatype property of the concept object defines the type of fact value associated with the concept. The concept object must have a periodType property that defines the date types of the period type dimension that can be used with a fact.
The concept object has an object type QName of xbrl:conceptObject.
The concept object has the following explicit properties:
name (xs:QName / string)name is a QName that uniquely identifies the concept object.dataType (xbrl:dataTypeObject reference / string)
The QName MUST resolve to a datatype object or collection type object present in the taxonomy model, or to a built-in XML Schema datatype. (see Section 11.1)
If the referenced QName is not a datatype object or collection type object, processors MUST raise an error (oimte:invalidObjectType).
periodType (xbrl:periodType / string)instant, duration or none. An instant represents values that are measured at a point in time. (This is equivalent to a measurement at a point in time) A duration represents values measured over a period in time. none represents values that do not change with the passage of time. A value of none prohibits facts being reported with a xbrl:period dimension.
nillable (xs:boolean / boolean)enumerationDomain (xbrl:domainNetworkObject reference / string)properties (non-empty set of xbrl:propertyObject objects / array)An example concept definition for Revenues:
{
"name": "exp:Revenue",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"nillable": true,
"properties": [
{ "property": "xbrla:balance", "value": "credit"}
]
},
A member object is an extensible object that adds dimensional context to a fact object. Its meaning and use is defined by its domain classes and property objects. A member object can be used on taxonomy defined dimensions where the domainClass property of the dimension is included in the member's domainClasses property. The domainClasses of a member object are used to define the meaning of the member within the context of the taxonomy, allowing it to be grouped with members of the same class and to restrict the use of properties to classes of members.
The member object has an object type QName of xbrl:memberObject.
The properties of the member object are:
name (xs:QName / string)name is a QName that uniquely identifies the member object.domainClasses (non-empty set of xbrl:domainClassObject references / array)domainClasses property of the member, an error MUST be raised (oimte:invalidDomainClassReference).extends (xbrl:memberObject reference / string)extends property adds additional domainClasses and properties to the member object by extension. isExtensible (xs:boolean / boolean)false, the member is non-extensible and no importing model may augment it using extends. If set to true or omitted, the member may be extended. The default value is true.properties (non-empty set of xbrl:propertyObject objects / array)By associating a member object with the class it belongs to allows the member to be used in multiple dimensions that reference that domain class. For example, if the member exp:England is associated with the domain class exp:CountryDomainClass it can be used in any dimension that references the exp:CountryDomainClass such as country of manufacture dimension or country of sale dimension.
{
"name": "exp:England",
"domainClasses": ["exp:CountryDomainClass"]
}
The domainClasses set of the member object MUST NOT contain a domainClass of xbrl:conceptDomain, xbrl:entityDomain, xbrl:periodDomain, xbrl:languageDomain or xbrl:unitDomain (oimte:invalidDomainClassReference).
The domain class object is an extensible object that identifies the domain networks and members that are used with a dimension.
A dimension can be associated with different domain network objects in different cubes, but all such domain network objects must have the same domain class as the dimension. Member objects can belong to one or more domain classes. A member object's domain classes restrict the domain network objects that a member can be associated with.
The domain class object has an object type QName of xbrl:domainClassObject.
Multiple domain network objects may use the same domain class object. When defining a dimension object, the associated domain class object specifies which domain network objects are compatible with that <<
The core dimensions have pre-defined domain class objects:
xbrl:concept has a domain class object of xbrl:conceptDomain.xbrl:entity has a domain class object of xbrl:entityDomain.xbrl:unit has a domain class object of xbrl:unitDomain.xbrl:language has a domain class object of xbrl:languageDomain. The language domain is a typed domain — its values are BCP 47 language tag strings (e.g. "en", "fr-CA") rather than named model objects.The built-in domain class objects of xbrl:conceptDomain and xbrl:languageDomain are only used with the concept core dimension, and language
The xbrl:entityDomain can be associated with a taxonomy defined dimension that represents a domain of legal entities such as a business acquisition dimension or business combination dimension. This allows the definition of domain networks that are specific to legal entities.
The xbrl:unitDomain can be associated with a taxonomy defined dimension that represents a domain of units such as debt denominated in different currency units. This allows the definition of domain networks that are specific to units.
A domain class object MAY be used as the root of multiple domain network objects.
The domain class defines the domain network used for countries.
{
"name": "exp:CountryDomainClass",
"allowedDomainItem": "xbrl:memberObject"
}
The properties of the domain class object are:
name (xs:QName / string)baseDomainClass (xbrl:domainClassObject reference / string)allowedDomainItem (object type or datatype object reference / string)xbrl:entityObject, xbrl:unitObject, xbrl:memberObject, xbrl:conceptObject or a datatype object QName. In the case of an object type QName, the objects defined in a domain network object with this domain class object as a root must be of this object type QName (see Section 5.8). In the case of a datatype object QName, this constrains the domain class values to this datatype object (see Section 5.10).
properties (non-empty set of xbrl:propertyObject objects / array)A domainClass representing debt securities with a baseDomainClass of securitiesDomainClass allows members that have a debt securities domainClass to be used in a securities domain network. A member that is a securityDomainClass cannot be used on a debt securities domain network. In the case below exp:USTBillsDue2027 can be used in a debt securities and securities domain network. It can be used with a fact with a securities and a debt securities dimension.
"domainClasses" : [
{
"name": "exp:debtSecuritiesDomainClass",
"baseDomainClass" : "exp:securitiesDomainClass",
"allowedDomainItem": "xbrl:memberObject"
}
],
"members" : [
{
"name":"exp:USTBillsDue2027",
"domainClasses" : ["debtSecuritiesDomainClass"]
}
]
If an importing model defines a baseDomainClass of exp:securitiesDomainClass and the imported model has a exp:debtSecuritiesDomainClass domain class, then a class subClass relationship can be defined to support the inheritance of domain classes using an imported model.
A domain class object MUST NOT be used as a relationship object target property in a domain network object.(oimte:invalidDomainRelationshipTarget).
If the allowedDomainItem property of a domain class object defines a datatype (e.g., xs:string, xs:decimal), then the domain class object is considered a typed domain, and domain network objects MUST NOT be defined that use this domain class object. (oimte:domainClassMismatchWithDomain).
The allowedDomainItem property of a domain class object MUST have a value of either xbrl:entityObject, xbrl:unitObject, xbrl:memberObject, xbrl:conceptObject or a datatype object (oimte:invalidObjectType).
The built-in domain class objects of xbrl:conceptDomain MUST only be used with the concept core dimension (oimte:invalidConceptDomainClass).
The built-in domain class objects of xbrl:languageDomain MUST only be used with the language core dimension (oimte:invalidLanguageDomainClass).
If the baseDomainClass property is defined the allowedDomainItem value for the domain class object MUST be the same as the allowedDomainItem value for the base domain class object if an object type QName is referenced (oimte:inconsistentBaseDomainClass).
If the baseDomainClass property is defined the allowedDomainItem value for the domain class object MUST be the same or a subtype of the allowedDomainItem value for the base domain class object if an datatype object is referenced (oimte:inconsistentBaseDomainClass).
A domain class object can have a baseDomainClass property. When defined the domain class object will inherit the properties of the base domain class object. This includes the values of any model-defined properties of the base domain class object. The allowedDomainItem property of the domain class object must match the value of the base domain class object if a object type QName is defined. If the allowedDomainItem property is a datatype the datatpe must match or be derived from the base datatype object.
Any member objects associated with a domain class object using the domainClasses property of the member object are also implicitly included in the base domain class object.
All definitional model-defined properties on the baseDomainClass are inherited by the domain class object. The properties array of the domain class object are merged with that of the baseDomainClass, so that the domain class object inherits all base definitional model-defined properties and may declare additional definitional model-defined properties of its own. Where a definitional model-defined properties appears on both the baseDomainClass and the domainClass, the domainClass's property value MUST match the baseDomainClass. Non-definitional properties are not inherited.
A dimension object defines a taxonomy defined dimension or a core dimension. Taxonomy defined dimensions and core dimensions have an associated domain class object that defines the values that may be reported against the dimension.
The dimension object has an object type QName of xbrl:dimensionObject.
A taxonomy defined dimension is a dimension that is defined in the model. Taxonomy defined dimensions are explicitly declared in the model and can be referenced by cubes and facts. They are distinct from core dimensions which are defined in the xbrl namespace.
name (xs:QName / string)domainClass (xbrl:domainClassObject reference / string)cubeTypes (non-empty set of cube type object references / array)xbrla:eventCube, xbrla:referenceCube. If not defined the dimension can be applied to any cube type.
properties (non-empty set of xbrl:propertyObject objects / array)The dimension defines the dimensions used for countries.
{
"name": "exp:CountryDimension",
"domainClass": "exp:CountryDomainClass"
},
The dimension MUST only be used on cubes where the cubeType of the cube object matches one of the cube types defined in the cubeTypes set (oimte:dimensionCubeTypeMismatch). If the cube object has no cubeType value defined it defaults to an open cube.
The xbrl:conceptDomain MUST only be used as the domainClass property on the concept dimension xbrl:concept (oimte:invalidConceptDomainClass).
The xbrl:languageDomain MUST only be used as the domainClass property on the language dimension xbrl:language (oimte:invalidLanguageDomainClass).
The domain network object is an extensible object that defines a hierarchical network of concept objects, entity objects, unit objects or member objects. A domain network consists of relationship objects that determine the hierachy of the domain network. The domain network object can be referenced by the cube dimension object to define the untyped dimension values of a fact object or to define enumeration domains.
The domain network object has an object type QName of xbrl:domainNetworkObject.
An enumeration domain is a domain network object that is referenced by a concept object or property object to restrict a fact object value or a model-defined property value to a specific set of allowable QName values.
The domain network object has a root property that associates a domain class object with the domain network object. If no root is defined, the root is derived from resolving the relationship objects to determine the single root.
The relationshipTypeName property is not defined for a domain network object as the property of xbrl:domain-member is inherent to the domain network object versus a network object where it would have to be defined.
The root property in a domain network object identifies the domain class. A taxonomy might define several separate geographic domain networks (each with a different name) that all share exp:GeographyDomainClass as their root, allowing each domain network to be associated with a different dimension while using the same class definition. (e.g. Country of manufacture dimension and country of sale dimension)
Importing models cannot remove the objects defined in the relationship objects of the domain network object. Model objects may be imported and reassembled in a domain network object defined in an importing model.
Importing models can add relationship objects to an existing domain network object by referencing the name of the domain network object with the extends property to add relationship objects to the target domain network object.
The properties of the domain network object are:
name (xs:QName / string)
root (xbrl:domainClassObject reference / string)relationships (non-empty set of xbrl:relationshipObject objects / array)
extends (xbrl:domainNetworkObject reference / string)name property or the root property. (see Section 5.8) The QName MUST resolve to an existing domain network object; if the QName resolves to an object of a different type, processors MUST raise an error (oimte:invalidObjectType). Domain extension scope: multi file import example
A regulator (taxonomy C) extends a domain network from a standard-setter (taxonomy A) that another party (taxonomy B) has already imported.
exp:ProductDomain with two members (exp:ProductA, exp:ProductB) and isExtensible: true.exp:ProductDomain — B's resolved model contains only the two base members.exp3:ProductC to exp:ProductDomain via extends. The import of A is handled by the DAG rule (A is not processed twice). C's resolved model contains all three members. B's resolved model remains unaffected.isExtensible (xs:boolean / boolean)false, the domain network is considered complete and non-extensible, meaning that no importing model may add further relationships or members. If set to true or omitted, the domain network may be extended by an importing model. The default value is true.properties (non-empty set of xbrl:propertyObject objects / array)The domain network defines the countries in the specific domain network.
{
"name": "exp:DomainOfCommonwealthCountries",
"root": "exp:CountryDomainClass",
"relationships": [
{
"source": "exp:CountryDomainClass",
"target": "exp:Australia"
},
{
"source": "exp:CountryDomainClass",
"target": "exp:Canada"
},
{
"source": "exp:CountryDomainClass",
"target": "exp:England"
}
]
}
Domain network objects include the QName of a domain class object for the root property. Multiple domain networks can be defined with the same domain class object and the same root QName.
A domain class object QName MUST NOT be defined as a target in any relationship object contained in a domain network object (oimte:invalidDomainRelationshipTarget).
A domain network object's set of relationships MUST include a domain class object as a source in the domain network (oimte:missingDomainClassSource).
A domain network object's set of relationships MUST resolve to a single root in the domain network. (oimte:multipleDomainClasses)
If the root property has a QName of xbrl:conceptDomain then the objects used as a source in the relationships of the domain network object MUST be either a concept object, a heading object or be xbrl:conceptDomain (oimte:invalidDomainNetworkObject).
If the root property has a QName of xbrl:conceptDomain then the objects used as a target in the relationships of the domain network object MUST be either a concept object or an heading object (oimte:invalidDomainNetworkObject).
A domain network object with a root property of xbrl:entityDomain MUST only have a relationship object source property that is either an entity object or a domain class object. (oimte:invalidDomainNetworkObject)
A domain network object with a root property of xbrl:entityDomain MUST only have a relationship object target property that is an entity object. (oimte:invalidDomainNetworkObject)
A domain network object with a root property of xbrl:unitDomain MUST only have a relationship object source property that is either a unit object or a domain class object. (oimte:invalidDomainNetworkObject)
A domain network object with a root property of xbrl:unitDomain MUST only have a relationship object target property that is a unit object. (oimte:invalidDomainNetworkObject)
If the root property is NOT xbrl:conceptDomain, xbrl:entityDomain, xbrl:unitDomain or xbrl:languageDomain then the objects used as a target in the relationships of the domain network object MUST NOT be concept objects or unit objects unless expressly permitted by the allowedDomainItem of the domain class object represented by the root property (oimte:invalidDomainTarget).
The root property MUST contain a QName of a domain class object. (oimte:invalidDomainClass)
A domain network objects relationship objects MUST only include target objects that are defined in the allowedDomainItem of the domain class object>, except for heading objects that are always permitted in a domain network whose root is xbrl:conceptDomain, irrespective of the value of allowedDomainItem (oimte:invalidDomainNetworkObject).
A domain network objects relationship objects MUST only include domain source objects that are defined in the allowedDomainItem property, are a domain class object, or are a heading object in a domain network object whose root is xbrl:conceptDomain (oimte:invalidDomainNetworkObject).
The name and extends properties MUST NOT both appear in a domain network object (oimte:invalidJSONStructure).
Relationships in the domain network object MUST have a target object of either a concept object, a member object, an entity object, a heading object or a unit object. (oimte:invalidDomainRelationshipTarget)
A domain network object with the property isExtensible:false indicates the domain network object cannot be extended. If the domain network object is imported, the entire resolved domain network object is sealed and no further extensions are permitted. This is the mechanism for a model author to declare "this is the final extension and the domain network object is now closed".
A model author can create an extension of an extension of a domain network object. There is no limit on the degree of extension, and extends always targets the original base domain network object QName. It does not chain through previous extensions. The resolved domain network object is assembled at import time by collecting all extends domain network objects that reference the same base QName across the full import and merging their relationships in import order.
If a model's documentType is defined as https://xbrl.org/PWD/2026-09-01/compiled then the extends MUST NOT be defined (oimte:extendedTargetNameDefinedForCompiledTaxonomy).
When a taxonomy's documentType is defined as compiled all extensible objects cease to exist and are subsumed into the new extended definition, and the component parts are no longer accessible.
A cube object is an extensible object that defines a multidimensional framework to contain facts. A cube specifies which dimensions and members are included, and which can be constrained to exclude specific facts. The multidimensional spaces defined by a cube can be empty, sparsely or densely packed with facts. A fact can exist in one or more cubes. A cube defines all dimensions (including core dimensions) to accurately identify all facts associated with the cube. A cube can contain facts with fewer dimensions than those defined by the cube. Facts with dimensions not defined in the cube are not included within the cube. Cubes can be used to identify collections of facts that are grouped together such as facts in a Statement of Operating Activity or a listing of inventory held.
The cube object has an object type QName of xbrl:cubeObject.
A cube defines all dimensions (e.g. incl period, entity, units) to accurately identify all facts associated with the cube.
A cube object may include an optional cubeType property that identifies the type of cube object being represented. This value must match either a defined cube type object or specification-defined cube object. Depending on the cubeType core dimensions may or may not be included. For example, a report cube will always include the period, concept, entity and unit dimensions, whereas an event cube will only include the concept core dimension.
A cube object includes all facts that match the dimensions and member objects defined in the taxonomy, as well as the concept core dimension and concept objects, the unit core dimension and unit objects, entity core dimension and entity objects and period core dimension with matching typed values.
A cube can contain facts that have fewer dimensions than those defined in the cube. A fact can appear in the cube without one or more dimensions as long as each of the cube dimension objects has the property optional set to true for the dimensions missing from the fact. Valid facts in a cube without all the dimensions defined in the cube are called an optional dimension value.
A fact cannot appear in a cube object if it includes a dimension that is not defined within the cube object.
An exclude cube is a cube object used to remove facts from another cube. It is defined in the taxonomy and specified using the excludeCubes property. The intersection of facts in the exclude cube object and the defined cube object are removed from the resulting cube. This intersection may include all, some, or none of the facts.
A cube object can define zero or more excludeCubes. When multiple exclude cubes are specified, the facts removed are the union of all intersections between the defined cube and each exclude cube.
The cube object has the following properties:
name (xs:QName / string)
cubeType (xbrl:cubeTypeObject reference / string)
cubeDimensions (non-empty set of xbrl:cubeDimensionObject objects / array)cubeNetworks (non-empty set of xbrl:networkObject references / array)excludeCubes (non-empty set of xbrl:cubeObject references / array)cubeType of xbrl:negativeCube. Exclude cubes cannot be used to exclude facts from another exclude cube.requiredCubes (non-empty set of xbrl:cubeObject references / array)extends property can be used to add requiredCubes to an existing cube. A cube which has a type of xbrl:negativeCube cannot be included in the requiredCubes property. The requiredCubes property can reference itself, which means all facts in the cube are required to be present, except those facts that are excluded by the excludeCubes property. If facts defined by requiredCubes are absent from the cube, then no error is raised.
duplicateFactsInCube (xs:string / string)no duplicates, complete duplicates,consistent duplicates, or inconsistent duplicates. If no string value is provided the default value is the value defined for duplicateFactsInModel. If no value is defined for duplicateFactsInModel, the default value is inconsistent duplicates. If an inconsistent duplicate fact exists in a model it must match the dimension values of at least one cube in the model that allows inconsistent duplicates. If a consistent duplicate fact exists in a model it must match the dimension values of at least one cube in the model that allows consistent duplicates or inconsistent duplicates (see Section 8.10.2)properties (non-empty set of xbrl:propertyObject objects / array)extends (xbrl:cubeObject reference / string)name, cubeType and cubeDimensions properties. The ability to extend a cube can be used to add cubeNetworks, properties and requiredCubes (see Section 5.9).isExtensible (xs:boolean / boolean)true.The following example defines a cube for an income statement with concept, period, entity and unit dimensions. Setting isExtensible to false prevents importing taxonomies from adding dimensions:
{
"name": "exp:IncomeStatementCube",
"cubeType": "xbrl:reportCube",
"cubeDimensions": [
{ "dimension": "xbrl:concept", "domainNetwork": "exp:IncomeStatementConcepts" },
{ "dimension": "xbrl:period" },
{ "dimension": "xbrl:entity" },
{ "dimension": "xbrl:unit" }
],
"isExtensible": false
}
The name property is required unless the extends property references an existing cube object. If neither name nor extends is provided, processors MUST raise an object structure error. If both name and extends are provided, processors MUST raise an object structure error.
The cubeDimensions property is required unless the extends property references an existing cube object. If neither cubeDimensions nor extends is provided, processors MUST raise an object structure error. If both cubeDimensions and extends are provided, processors MUST raise an object structure error.
The cubeType property MUST be a QName of a cube type object. (oimte:invalidObjectType)
The requiredCubes set and excludeCubes set MUST contain cube type objects. (oimte:invalidObjectType)
The cubeDimensions property MUST NOT include more than one cube dimension object with the same dimension property. (oimte:duplicateDimensionsInCube)
The defined cube MUST NOT be defined in the set of excludeCubes within the same cube object. (oimte:excludeCubeSelfReference)
The cubeNetworks property MUST only reference the QNames of network objects (oimte:invalidObjectType).
The cubeNetworks property MUST reference network objects that exist in the XBRL Model. (oimte:invalidQNameReference)
The excludeCubes property MUST reference cube objects that exists in the XBRL Model that have a cube type of xbrl:negativeCube. (oimte:invalidNegativeCubeReference)
If the model type object includes fact objects the processor MUST report an error if the dimensional value defined by a requiredCube does not include a fact in the cube object (oimte:factMissingFromCube).
If a cube is included in the requiredCubes property of another cube object, an error MUST be raised if any dimensional space in the required cube object is not a dimensional space in the base cube object. (oimte:requiredCubeDimensionalSpaceMissingFromCube)
If the same cube appears in both the excludeCubes and requiredCubes properties, an error MUST be raised (oimte:excludeCubeCannotBeRequiredCube).
A cube with cubeType of xbrl:negativeCube MUST NOT specify the excludeCubes property. (oimte:excludeCubesOnNegativeCube)
A processor should use an "inclusive base space + subtractive holes" pattern rather than additive set-union. This is simpler to validate and understand than requiring processors to correctly evaluate arbitrary Boolean combinations of cube spaces.
If the same dimensional space appears in both the excludeCubes and requiredCubes properties, an error MUST be raised. ()
The extends property of a cube object MUST reference the QName of an existing cube object. If the QName does not resolve to a cube object, processors MUST raise an error (oimte:invalidObjectType).
The cube dimension object associates a dimension with a specific cube object. Each cube object must contain at least one or more cube dimension objects. Specific cube types defined by the cubeType property restrict what dimension objects can appear in the cube. The cube dimension object can optionally define the QName of a specific domain network object to constrain which members are allowed in the cube. Whether a dimension is typed or explicit is determined by whether the associated domain has a domainDataType property. The cube dimension object defines if fact values without a dimensional qualifier (optional dimension value) are included in the cube. The cube dimension object may define period dimension properties that constrain the facts accordingly.
The cube dimension object has an object type QName of xbrl:cubeDimensionObject.
The facts contained in a cube are those facts that match the dimensions and members defined in the cube object. The fact dimension values must match the members of the cube dimension.
Where a taxonomy defined dimension is defined with NO domainNetwork property, then a fact with any member and that dimension, will appear in the cube with that dimension.
Where a concept dimension is defined with NO domainNetwork property then a fact with any concept will appear in the cube.
An error MUST be raised if the domainDataType property is used with the concept dimension (oimte:invalidDataTypeForDomainClass).
Where a period dimension is defined with the domainNetwork property then an error MUST be raised. (oimte:domainNetworkUsedOnPeriodDimension)
Where a unit dimension is defined with NO domainNetwork and NO domainDataType properties then a fact with any unit will appear in the cube.
Where an entity dimension is defined with NO domainNetwork and NO domainDataType properties then a fact with any entity will appear in the cube.
The cube dimension object has the following properties:
dimension (xbrl:dimensionObject reference / string)xbrl:concept, xbrl:period, xbrl:entity, xbrl:unit and xbrl:language are used. (see Section 5.7)domainNetwork (xbrl:domainNetworkObject reference / string)domainNetwork property can only be used to define an explicit domain. Only one explicit domain can be associated with a dimension. The domain referenced MUST have the same root as the dimension's domainClass. (oimte:invalidCubeDimensionDomainName)(see Section 5.8).
domainDataType (xbrl:dataTypeObject reference / string)allowedDomainItem property value or be derived from the base datatype of the datatype object. (oimte:invalidDataTypeForDomainClass).
typedSort (xs:string / string)asc or desc. This indicates the viewing order of the values using a typed domain. The typedSort property MUST NOT be used with an explicit domain (domains without domainDataType). (oimte:invalidTypedSortOnExplicitDomain) The typedSort can be used with the period domain. The sort order is applied to each period constraint defined in periodConstraints. If there are two period constraints the first for instant and the second for duration and a typedSort of asc then all instant dates appear first ascending, then all duration dates appear second in ascending order.optional (xs:boolean / boolean)false. When set to true, facts that omit this dimension are included in the cube. For the period core dimension, this includes forever facts and facts with no period dimension. For the unit dimension, this includes facts with no unit, such as strings or dates. For the entity core dimension, this includes facts with no entity value. This property cannot be used on the concept core dimension. The property value is ignored for the concept core dimension.periodConstraints (non-empty ordered set of xbrl:periodConstraintObject objects / array)The following example defines two cube dimensions: the concept dimension tied to a specific domain, and the period core dimension with a reporting-window constraint:
[
{
"dimension": "xbrl:concept",
"domainNetwork": "exp:IncomeStatementConcepts"
},
{
"dimension": "xbrl:period",
"periodConstraints": [
{
"onOrAfter": { "context": "exp:PeriodStart" },
"onOrBefore": { "context": "exp:PeriodEnd" }
}
]
}
]
If a typedSort property is provided and a domainDataType property is not provided, processors MUST raise an object structure error.
The periodConstraints property MUST only be used where the dimension property has a QName value of xbrl:period. (oimte:invalidPeriodConstraintDimension)
The optional property MUST NOT be used with a dimension of xbrl:concept (oimte:invalidOptionalPropertyOnConceptDimension)
A dimension with a QName of xbrl:concept MUST be defined in a cube object. (oimte:cubeMissingConceptDimension)
The dimension property must reference a dimension object. (oimte:invalidObjectType)
The domainNetwork property MUST NOT be used when the dimension property is xbrl:period. (oimte:domainNetworkUsedOnPeriodDimension)
The domainDataType property MUST NOT be used when the dimension property is xbrl:period. (oimte:domainUsedOnPeriodDimension)
If the domainNetwork property is specified, the referenced domain's root MUST match the dimension's domainClass. (oimte:invalidCubeDimensionDomainName)
The domainNetwork property must be a valid domain network object QName defined in the taxonomy model. (oimte:invalidObjectType)
If the dimension property is xbrl:entity and the domainDataType property is specified, it MUST be xs:QName. (oimte:invalidDataTypeForDomainClass)
A cube MUST NOT include multiple cube dimension objects with the same dimension attribute. (oimte:duplicateDimensionsInCube)
A cube dimension object MUST comply with the dimension restrictions defined by the cubeType property (oimte:invalidTaxonomyDefinedDimension).
The period constraint object has an object type QName of xbrl:periodConstraintObject.
The period constraint object has the following properties:
periodType (xbrl:periodType / string)instant or a duration.timeSpan (xs:duration / string)periodPattern (string / string)To indicate the end of month use the wildcard eom. For example, to select all durations that end on the last day of February use the pattern YYYY-MM-DD/YYYY-02-eom. For any duration period that starts at the start of a month and ends at the end of month use YYYY-MM-01/YYYY-MM-eom.
endDate (xbrl:dateResolutionObject / object)startDate (xbrl:dateResolutionObject / object)onOrAfter (xbrl:dateResolutionObject / object)onOrBefore (xbrl:dateResolutionObject / object)The following example constrains cube facts to a reporting window defined by context concepts:
{
"onOrAfter": { "context": "exp:ReportingPeriodStart" },
"onOrBefore": { "context": "exp:ReportingPeriodEnd" }
}
A constraint using a fixed end date with a one-year duration:
{
"endDate": { "value": "2024-12-31" },
"timeSpan": "P1Y"
}
The timeSpan property MUST NOT be used with both the endDate and startDate properties (oimte:redundantTimeSpanProperty).
The periodPattern property MUST NOT be used with the timeSpan, endDate or startDate properties if it represents a duration. (oimte:redundantPeriodPatternProperty).
If the periodType property is instant then the timeSpan and startDate properties MUST NOT be defined (oimte:instantWithDurationProperties).
All period constraints in the object are considered to be an AND.
Separate period constraint objects are defined as OR.
The date resolution object has an object type QName of xbrl:dateResolutionObject.
The date resolution object has the following properties:
conceptName (xbrl:conceptObject reference / string)xs:date or xs:dateTime datatype or derived from xs:date or xs:dateTime datatype. The fact values of the concept object in a report resolves to a set of dates used to determine the date resolution value. If no fact value exists for the concept object in the report then the property is ignored, and no date constraint is enforced on the cube.context (xs:string / string)@start or @end. Facts in a report resolve to a set of dates or durations associated with the period dimension of the resolved facts. The context string indicates if the end date or start date of the facts period dimension values (context) is used as the date resolution object value. The @ symbol following the QName identifies if the end date or start date of the context or contexts is used. The context end or start dates of the fact values can resolve to a single date or a set of dates. If no value exists in the report then the property is ignored. The context suffix following the QName must be either @end or @start. If an @ value is not provided then the suffix defaults to @end. For a fact that is an instant the @start and @end suffix will return the same value. If the fact has no period dimension then the property is ignored.dateProperty (object reference / string)@start or @end suffix if a duration i.e. exp:myExtTaxonomy.xbrl:reportPeriod@end. The dateProperty can only reference a model-defined property of the object. If the value of the property is a date then the @end or@start suffix is ignored. If the property value cannot be resolved to a date or duration then the property is ignored. If both the context property and the dateProperty property are provided the dateProperty property takes precedence unless the value of the property cannot be resolved to a date.value (xs:dateTime / string)timeShift (xs:duration / string)value, context or conceptName properties. The duration of the time shift is defined using the XML duration type to define a duration of time. A negative operator deducts the timeShift from the resolved date. If the context or conceptName resolves to a set of dates the time shift is applied to all dates in the set. A value of P1Y will shift the date forward by one year, -P1M will shift the date back by one month, P1D will shift the date by one day. The timeShift property can be used with any of the other properties to shift the date value returned by the property. The timeShift property cannot be the only property defined.A date resolution can reference a concept value, a literal date, or a context concept. The following examples show the three forms:
Resolve to the value of a concept in the report:
{ "conceptName": "exp:FiscalYearEnd" }
Resolve to a literal date:
{ "value": "2024-12-31" }
Resolve to a context concept shifted forward by one day:
{ "context": "exp:ReportingPeriodEnd", "timeShift": "P1D" }
The conceptName property is required if no context or value property is provided. If not provided, processors MUST raise an object structure error. If both conceptName and context or value properties are provided, processors MUST raise an object structure error.
The context property is required if no conceptName or value property is provided. If not provided, processors MUST raise an object structure error. If both context and value properties are provided, processors MUST raise an object structure error.
The value property is required if no conceptName or context property is provided. If not provided, processors MUST raise an object structure error.
The datatype of the concept object referenced by the conceptName property MUST be xs:date or xs:dateTime or derived from xs:date or xs:dateTime. (oimte:invalidConceptDataType)
The concept object referenced by the conceptName property MUST be a concept Object. (oimte:invalidObjectType )
The context property MUST reference a concept object. (oimte:invalidObjectType )
Only one of the properties conceptName or context or value or dateProperty MUST be present. (oimte:mutuallyExclusiveDateResolutionProperty)
The timeShift property MUST be used with either conceptName or context or value or dateProperty (oimte:redundantTimeShiftProperty).
If a date is resolved using a concept name the value of all unique fact date values are returned. If there is more than one date then each unique date fact MUST create iterations of allowable date constraints on the cube.
If the conceptName property is used in conjunction with the timeShift property and multiple unique date facts are present then the value of the timeShift is applied to each fact to return a set of dates.
If the context property is used in conjunction with the timeShift property and multiple unique date contexts are present then the value of the timeShift is applied to each context to return a set of dates.
The property object instantiates a model-defined property.
The property object has an object type QName of xbrl:propertyObject.
The property value is constrained by the datatype of the property type object, which may be a scalar type or a collection type object. The property type object may also restrict the object types that a property can be used with.
The following object types support model-defined properties:
property (xbrl:propertyTypeObject reference / string)name of the property type object that defines the property.valueThe following examples shows a property object associating a balance type with a concept:
{
"name": "exp:Assets",
"dataType": "xbrlr:monetary",
"periodType": "instant",
"nillable": true,
"properties": [
{ "property": "xbrla:balance", "value": "debit"}
]
},
An object that adds a property that is not included in the allowedObjects set of the property type object MUST raise an error (oimte:disallowedObjectProperty).
If a property value does not conform to its expected datatype the processor MUST raise an error (oimte:propertyValueDataTypeMismatch).
The label object has an object type QName of xbrl:labelObject.
A label is associated with one object by defining the QName of the object. Labels can be of different types. Standard label types are defined in the XBRL specification and in the label defined in a taxonomy. Label types can be defined in a taxonomy using the label type object.
forObject (xs:QName / string)labelType (xbrl:labelTypeObject reference / string)language (xs:string / string)value (xs:string / string)The following examples associate a standard label and a verbose label with a concept:
{
"forObject": "exp:Revenue",
"labelType": "xbrl:label",
"language": "en",
"value": "Revenue"
}
{
"forObject": "exp:Revenue",
"labelType": "xbrl:verboseLabel",
"language": "en",
"value": "Total Revenue from Continuing Operations"
}
The value for language MUST be a valid BCP 47 language code (oimte:invalidLanguage).
A label's forObject property MUST resolve to an model object QName or object type QName defined in the XBRL Model (oimte:invalidQNameReference).
A label object MUST NOT be defined for an object if the labelType property of the label object references a label type object whose allowedObjects property value does not include that object's type (oimte:disallowedObjectLabelType). The label type object defines a non-empty set of allowable objects using the allowedObjects property. If the allowedObjects property is not defined, then the label type object allows labels for all objects.
The value of the label MUST conform to the contentConstraints object defined by its labelType (oimte:invalidLabelValue).
Duplicate labels MUST NOT be defined in the XBRL Model. Duplicate labels are labels with the same forObject, labelType and language properties. (oimte:duplicateLabelObject)..
The reference object is an extensible object that defines a reference that can be associated with one or more objects. A reference is associated with a QName of the object. Multiple references can be associated with an object and multiple objects can be associated with a reference. References are distinguished by their QName.
The reference object has an object type QName of xbrl:referenceObject.
A reference can be associated with one or more objects by defining the QNames of the objects it is associated with in the forObjects property. References can be of different types. Standard reference types are defined in the XBRL specification. Reference types can also be defined in a taxonomy using the reference type object.
name (xs:QName / string)name is a QName that uniquely identifies the reference object.extends (xbrl:referenceObject reference / string)forObjects set should be appended to. The forObjects set in the reference with this property are appended to the forObjects set defined in the target reference object. This property cannot be used in conjunction with the name, referenceType and language properties. The QName MUST resolve to an existing reference object; if the QName resolves to an object of a different type, processors MUST raise an error (oimte:invalidObjectType). If the extends is defined either a QName value MUST be provided in the forObjects set or a property object value for the properties set. oimte:invalidJSONStructureMissingRequiredPropertyisExtensible (xs:boolean / boolean)false, the reference is non-extensible and no importing model may augment it using extends. If set to true or omitted, the reference may be extended. The default value is true.forObjects (non-empty set of model object QName references / array)
referenceType (xbrl:referenceTypeObject reference / string)language (xs:string / string)properties (non-empty set of xbrl:propertyObject objects / array)The following example defines a reference linking a concept to an accounting standard, with publisher, name and paragraph as reference parts:
{
"name": "exp:RevenueIAS18Ref",
"forObjects": ["exp:Revenue"],
"referenceType": "ref:StandardReference",
"properties": [
{ "property": "ref:Publisher", "value": "IASB" },
{ "property": "ref:Name", "value": "IAS 18" },
{ "property": "ref:Paragraph", "value": "7" },
{ "property": "ref:IssueDate", "value": "2003-12-01" }
]
}
The name property is required unless the extends property references an existing reference object. If neither name nor extends is provided, processors MUST raise an object structure error. If both name and extends are provided, processors MUST raise an object structure error.
The referenceType property is required unless the extends property references an existing reference object. If neither referenceType nor extends is provided, processors MUST raise an object structure error. If both referenceType and extends are provided, processors MUST raise an object structure error.
The forObjects property is required if the extends property is defined and the properties property is not defined. If neither forObjects nor properties is provided when extends is defined, processors MUST raise an object structure error.
The properties property is required if the extends property is defined and the forObjects property is not defined, processors MUST raise an object structure error.
The language property cannot be defined if the extends property is defined, processors MUST raise an object structure error.
The extends property of a reference object MUST reference the QName of an existing reference object. If the QName does not resolve to a reference object, processors MUST raise an error (oimte:invalidObjectType).
If the extends property is used the language property MUST NOT be defined. (oimte:invalidJSONStructureInvalidPropertyDefined)
A reference MUST NOT be defined for an object that is not allowed by its referenceType (oimte:disallowedObjectReferenceType).
The reference object MUST include all properties defined by the requiredProperties property of the reference type object in the properties array (oimte:missingRequiredProperty).
The language property of the reference must be a valid BCP 47 language code (oimte:invalidLanguage).
Certain object types support extension, meaning that they can be modified by another model object.
An extensible object is an object of an object type that supports extensibility via the extends property. The following object types are extensible:
A base object is an extensible object that has been defined with a name property or has had all extends properties resolved.
An extending object is an extensible object that has an extends property.
The term extends refers to the relationship between an extending object and the base object that it references using the extends property.
An extending object expands a base object by contributing additional relationships, set components or properties to the base object. An extensible object with isExtensible: false, cannot be extended. The content of the extending object is merged into the base object during compilation, resulting in a single combined definition that includes all contributions from both the base and extending objects. An XBRL module may define multiple extending objects referencing the same base object, and their contributions are all merged. A compiled model does not contain any extends properties, as all extending objects are resolved during the compilation process.
The following constraints apply to extensible objects:
The base object referenced by the extends property of an extending object MUST NOT have a value of false for its isExtensible property (oimte:illegalExtensionOfNonExtensibleObject).
A built-in model is an XBRL model defined by this specification.
The built-in models are:
xbrl:core - the core model (see Appendix E)xbrlr:dataTypes — the built-in datatypes model (see Section 11.1.2).xs:XMLSchemaTypes — the built-in XML schema types model.utr:units — the built-in units model.xbrltt:transforms — the built-in transforms model.ref:referenceProperties — the built-in reference properties model.iso4217:currencyUnits — the built-in ISO 4217 currency units model.xbrla:accounting - the built-in accounting properties model.xbrlm:base - the built-in model that collates the core XBRL data models.The built-in models MAY be imported into other models using the import taxonomy object, but MUST NOT be included in an import mapping object (see Section 4.2.3).
The entity object defines entities in the taxonomy that represent a legal or reporting entity. Entities are defined using an SQName that includes the scheme and the identifier.
The entity object has an object type QName of xbrl:entityObject.
Entity objects can restrict the fact values of a cube or to indicate relationships between entities in a network object.
To include facts with entities, not defined as entity objects, in a cube the xbrl:entity cube dimension object must not have a domainNetwork property defined.
Entities defined in an OIM report with the same SQName as entities defined in the taxonomy, are considered to be the same entity.
Entities are defined as an entity object. Entities cannot be defined as members.
The entity object has the following properties:
name (xbrl:SQName / string)properties (non-empty set of xbrl:propertyObject objects / array)The following example defines an entity:
{
"name": "exp:ExampleCorp"
}
The entity object MUST NOT be included in any domain network object relationship that does not have a domain root of xbrl:entityDomain. (oimte:invalidFactDimensionMember)
The unit object has an object type QName of xbrl:unitObject.
Information about the unit such as the description, the label, the symbol and the measurement standard is defined using labels or references.
The unit definition defines a composite unit definition that supports comparing units defined as a QName and units defined using a unit string representation. A fact with a unit dimension using a unit string representation resolves to the corresponding unit object defined in the taxonomy.
The unit object has the following properties:
name (xs:QName / string)dataType (xbrl:dataTypeObject reference / string)The QName MUST resolve to a datatype object present in the taxonomy model, or to a built-in XML Schema datatype. (see Section 11.1)
compositeUnitRepresentation (non-empty set of xs:string / array)utr:ft*utr:ft*utr:ft and utr:ft*utr:sqft.The following example shows a unit object with multiple compositeUnitRepresentation values. The unit for cubic feet is defined with two equivalent string representations: one expressed as a product of three linear-foot units, and another as a product of a linear-foot and a square-foot unit. A processor matching reported unit string representations against taxonomy-defined units will accept either form as equivalent to exp:cubicFoot.
{
"unitObjects": [
{
"name": "exp:cubicFoot",
"dataType": "xbrlr:decimal",
"compositeUnitRepresentation": [
"utr:ft*utr:ft*utr:ft",
"utr:ft*utr:sqft"
]
},
{
"name": "exp:kilometresPerHour",
"dataType": "xbrlr:decimal",
"compositeUnitRepresentation": [
"utr:km/utr:h"
]
}
]
}
A unit object MUST have a dataType property that references a datatype that is a numeric datatype (oimte:invalidUnitDataType)
The unit object compositeUnitRepresentation MUST NOT reference the unit defined in the name property of the same unit object. (oimte:unitDataTypeUsedInDefinition)
The following unit definition should raise the error oimte:unitDataTypeUsedInDefinition
{
"name": "exp:USD",
"dataType": "xbrlr:monetary",
"compositeUnitRepresentation": ["exp:USD"]
}
A unit must not use its own datatype as one of its compositeUnitRepresentation. A unit's string representation is typically a simpler, already-defined unit that provides a human-readable form; using the same unit's datatype creates a circular string representation definition. The constraint ensures that unit string representation references form a directed acyclic structure.
The unit object compositeUnitRepresentation MUST resolve each unit string representation to valid unit object QNames (oimce:invalidUnitStringRepresentation) as defined in Open Information Model Common Definitions 1.0
The fact object is an extensible object that defines a fact. A fact represents the value associated with the intersection of dimensions in a multidimensional space. A fact object can exist without a value, or a reference to a value, but represents the definition of the fact and its associated dimensions. The dimensions include core dimensions and taxonomy defined dimensions. A fact object can be referenced by labels, references, and relationships. Properties can be added to facts using the property object.
The fact object has an object type QName of xbrl:factObject.
A fact's datatype is the datatype of the concept object identified by the fact's xbrl:concept dimension.
A fact's base datatype is the XML Schema primitive type from which the fact's datatype is derived.
A fact is nillable if the concept object identified by the fact's xbrl:concept dimension has a value of true for the nillable property.
A numeric fact is a fact object with a datatype that is derived from the XML Schema types of xs:decimal, xs:double or xs:float.
A non-numeric fact is any fact object that is not a numeric fact.
A text fact is a fact object with a datatype that is derived from the XML Schema type of xs:string, but which is not one of, or a type derived from one of, the following types:
A non-text fact is any fact object that is not a text fact.
The text fact definition identifies those fact objects to which the xbrl:language dimension is applicable.
A fact's period type is the value of the periodType attribute of the concept object identified by the fact's concept dimension, and is either duration, instant or none.
The fact object has the following properties:
name (xbrl:SQName / string)factValues (non-empty set of xbrl:factValueObject objects / array)factDimensions (xbrl:factDimensionObject / object)factQualifier (xbrl:factQualifierObject / object)properties (non-empty set of xbrl:propertyObject objects / array)extends (xbrl:factObject reference / string)name and factDimensions properties. The ability to extend a fact can be used to add factValues and properties to an existing fact. The SQName MUST resolve to an existing fact object; if the SQName resolves to an object of a different type, processors MUST raise an error (oimte:invalidObjectType).isExtensible (xs:boolean / boolean)false, the fact is non-extensible and no importing model may augment it using extends. If set to true or omitted, the fact may be extended. The default value is true.The following example defines a named monetary fact for annual revenue, with concept, period, entity and unit dimensions:
{
"name": "exp:RevenueAnnual2024",
"factDimensions": {
"xbrl:concept": "exp:Revenue",
"xbrl:period": "2024-01-01/2024-12-31",
"xbrl:entity": "exp:ExampleCorp",
"xbrl:unit": "iso4217:GBP"
},
"factValues": [
{ "value": "1500000", "decimals": -3 }
]
}
The fact value object has the following properties:
name (xbrl:SQName / string)value (xs:anyType / any)decimals (xs:integer / number)decimals property, or absent if the value is infinitely precise or not applicable (for nil or non-numeric facts)
language (xs:language / string)reportSource (xbrl:factSourceObject reference/ string)reportSource property is provided the document file encapsulating the model object is implied as the fact source. If no reportSource property is provided and the model is external to the source file then the fact source mapping object in the sourceMappings array of the document info object determines the location of the value.
transformation (xbrl:transformObject reference / string)value is defined. If both the transformation property and value property are defined, the processor MUST raise an object structure error.
scale (xs:integer / number)scale property MUST NOT be defined if the property value is defined. If a scale property and value property is defined the processors MUST raise an object structure error. If a value property is not defined and the scale property is not defined the value of scale defaults to zero.sign ( xs:string / string)sign property MUST NOT be defined if value is defined.
escape ( xs:boolean / boolean)
valueSources (non-empty ordered set of xbrl:factValueSourceObject objects / array)value or valueSources MUST be defined.valueAnchors (non-empty ordered set of xbrl:factValueAnchorObject objects / array)value property instead of obtained from the content of the document file. For example, non-transformable values, such as a QName value, may correspond to prose text in the document file. Used by tools to highlight and detect mouse-over correspondence between fact values and document text. If both the valueSources and valueAnchors properties are provided, processors MUST raise an object structure error.
There are three alternative ways to identify the source file for a fact value. The method used will depend on the nature of the data being represented.
If all the facts are in a single document format such as html, the model can be included in the document itself. This negates the need to point to an external source for the facts. The fact source mapping object must point to the current file, by having an empty value for the required url property shown below.
"sourceMappings": [
{
"sourceName": "aapl:aapl-20250927Source",
"url": ""
}
]
If the facts are spread across multiple documents, each document must be referenced using fact value source object in the valueSources property.
The location of the source document is identified using the fact source mapping object in the document info object. The sourceName property of this object must reference fact source object. This fact source object must includes a fact map object that defines a factLocatorType property, which specifies the type of locator to be used to identify the fact in the document.
"sourceMappings": [
{
"sourceName": "aapl:aapl-20250927Source",
"url": "../examples/aapl-20250927.htm"
}
]
In the model the fact source object and fact map object define the fact source and the mapping method.
"factSources": [
{
"name": "exp:aapl-20250927Source",
"factMapName": "exp:htmlElementFactMap"
}
],
"factMaps": [
{
"name": "exp:htmlElementFactMap",
"factLocatorType": "xbrl:htmlElementLocatorType"
}
],
If no reportSource is defined in the fact value object, the processor must look for the source in the document info object. This can only contain one source object if reportSource is not defined in fact values.
{
"name": "aapl:fs_f-9",
"factDimensions": {...},
"factValues": [
{
"name": "aapl:f-9_val",
"valueSources": [
{"properties": [{"property": "xbrl:htmlElementId", "value": [ "f-9"]}]}
]
}
]
}
If facts are incorporated into the model from more than one location the reportSource property must be identified on the fact value object. This can also be used for a single data source. The example below shows the use of the optional reportSource property.
{
"name": "aapl:fs_f-9",
"factDimensions": {...},
"factValues": [
{
"name": "aapl:f-9_val",
"reportSource": "aapl:aapl-20250927Source",
"valueSources": [
{"properties": [{"property": "xbrl:htmlElementId", "value": [ "f-9"]}]}
]
}
]
}
The fact value source object is defined in an array to support facts that may be spread over multiple components of a document, performing the same function as continuations in inline XBRL.
The fact value objects property value MUST be provided if the property valueSources is not provided. Processors must raise an object structure error.
If the value property is provided, it MUST be valid according to the datatype of the concept associated with the fact (oimte:factValueDataTypeMismatch).
If a value is provided for valueSources or valueAnchors then a value MUST be provided for factLocatorType as a property of the factMap associated with the factSource referenced in the sourceMappings of the document info object (oimte:factValueLocatorRequiredForValueSources).
The factDimensions object represents the dimensions associated with a fact. Each property of the object corresponds to a dimension. For core dimensions, the name of the property is either xbrl:concept, xbrl:period, xbrl:unit, or xbrl:entity. For taxonomy defined dimensions the property name is a dimension object QName. The object has a QName of xbrl:factDimensionObject.
The factDimensions object is a set of name/value pairs:
Any dimension QName (xbrl:dimensionObject reference / string)xbrl:concept, an xbrl:period, an xbrl:unit, an xbrl:entity SQName, or a value conforming to the datatype of the dimension. (see Section 5.7)
A cube that defines a unit dimension with optional set to false will not include facts with unit values of xbrlr:pure, or numeric values with no unit.
The following example shows a factDimensions object specifying the four core XBRL dimensions plus an explicit reporting segment dimension:
{
"xbrl:concept": "exp:Revenue",
"xbrl:period": "2024-01-01/2024-12-31",
"xbrl:entity": "exp:ExampleCorp",
"xbrl:unit": "iso4217:GBP",
"exp:SegmentDimension": "exp:NorthAmerica"
}
The factDimensions object MUST include a key value of xbrl:concept (oime:missingConceptDimension).
The xbrl:concept dimension MUST have a value that is a QName referencing a concept object defined in the model (oimte:invalidObjectType).
The xbrl:period is a time interval as defined in ISO 8601. The time interval MAY be zero-length (i.e. start and end at the same instant), denoting an instant in time. The time interval MAY be defined in local time (i.e. without a time zone designator) in which case processors MUST NOT assume a particular time zone, but MUST preserve the information that the time interval is in local time.
The factDimensions object MUST include a name of xbrl:period if the fact's period type is duration or instant (oime:missingPeriodDimension)
If a fact's period type is duration then the xbrl:period value MUST be a non-zero length time interval (oime:invalidPeriodDimension).
If a fact's period type is instant then the xbrl:period value MUST be a zero length time interval (oime:invalidPeriodDimension).
When resolving a duration interval, a date-only *start* value (without a time component) defaults to T00:00:00 and a date-only *end* value defaults to T00:00:00 of the following day. A period of 2023-01-01/2023-01-01 resolves to a 24-hour interval (from 2023-01-01T00:00:00 to 2023-01-02T00:00:00).
When resolving an instant interval, a date-only value (without a time component) defaults to T00:00:00 of the following day. A period of 2024-12-31 resolves to an instant of 2025-01-01T00:00:00.
If a fact's period type is duration then the xbrl:period value MUST NOT have an end date that is before the start date. (oime:invalidPeriodDimension)
If a fact's period type is none then the xbrl:period MUST NOT be defined. (oime:invalidPeriodDimension)
Fact values without the period dimension defined MUST have use a concept object with a periodType value of none (oime:invalidPeriodDimension).
The factDimensions object MUST include a name of xbrl:unit if the fact's datatype has a defined unit (see section Section 8.10.1 (oimte:factMissingUnitDimension)
The xbrl:unit dimension MUST NOT be present on a non-numeric facts (oime:misplacedUnitDimension).
| Description | Datatype * | Example | Error |
|---|---|---|---|
| Numeric fact with matching unit | With unit | xbrlr:length with utr:feet | No error |
| Numeric fact with matching unit | With no unit | xs:decimal with no unit | No error |
| Numeric fact with non-matching unit | With unit | xbrlr:length with iso4217:USD | oimte:factUnitDatatypeMismatch |
| Numeric fact with non-matching unit | With no unit | xs:decimal with utr:acre | oimte:factUnitDatatypeMismatch |
| Numeric fact with no unit | With unit | xbrlr:length with no unit | oimte:factMissingUnitDimension |
| Numeric fact with no unit | With no unit | xs:decimal with no unit | No error |
| Non-numeric fact with a unit | With no unit | xs:string with iso4217:USD | oime:misplacedUnitDimension |
A unit of xbrlr:pure which is the domain value of xbrl:unit is equivalent to no unit.
If a xbrl:concept has a numeric datatype and no xbrl:unit is defined the unit dimension is treated as having a unit of xbrlr:pure.
Datatypes defined in the xs namespace MUST NOT be used as the datatype of a unit (oimte:invalidUnitDataType).
A fact's dimension member MUST NOT be the domain class object for that dimension (oimte:invalidFactDimensionMember).
A taxonomy defined dimension value of a fact object MUST match the taxonomy defined dimensions domainClass with at least one of the domainClasses of the member object (for explicit dimensions) or MUST conform to the taxonomy defined dimensions datatype (for typed dimensions) (oimte:invalidFactDimensionMember). The match must include inferred domain classes of the member object that are inherited using the base domain class object see Section 5.6.3.
The set of dimensions defined for a fact MUST match the dimensions of at least one or more positive cubes (cubes that are not a negative cube) defined in the model (oimte:noFactSpaceForFact).
Facts whose dimensions match only an exclude cube MUST raise the error (oimte:noFactSpaceForFact).
The error oimte:noFactSpaceForFact is raised for a fact defined in a cube if an exclude cube also includes that fact. An exclude cube applied to a positive cube can thus make a fact invalid in the model.
The factQualifier object represents the dimension properties associated with a fact that do not represent dimensions comprising a cube space for the fact. Each property of the object corresponds to a taxonomy defined dimension. The dimension properties of a fact qualifier cannot define core properties of xbrl:concept, xbrl:period, xbrl:unit, or xbrl:entity. This object can only define taxonomy defined dimensions where the property name is a dimension object QName. The object has a QName of xbrl:factQualifierObject.
The factQualifier object is a set of name value pairs:
Any dimension QName (xbrl:dimensionObject reference / string)A fact qualifier's dimension property member MUST NOT be the domain class object for that dimension. (oimte:invalidFactDimensionMember)
The dimension property member of a fact MUST be part of the dimension's domain (for explicit dimensions) or must conform to the dimension's datatype (for typed dimensions)(oimte:invalidFactDimensionMember).
A named pair in a fact qualifier object MUST NOT be defined as a pair in the fact dimension object for that fact (oimte:invalidFactQualifierDimensionMember).
The set of dimensions defined for a fact qualifier object does not need to be expressed in a cube, but if the combination of pairs in both the fact dimension object and fact qualifier object exist in a cube, then a fact value for a fact matching the combination of pairs MUST be the same (oimte:factInconsistentWithFactQualifier).
In the example below Company 1 has total sales of $500,000 USD in 2025. The $500,000 also represents the following:
The fact qualifiers enable unambiguous reporting of this granularity without the need to build sparse cubes, and define the same fact value 8 times.
"facts": [
{
"name": "exp:RevenueForWidgetSalesInUSFact",
"factDimensions": {
"xbrl:concept": "exp:Revenue",
"xbrl:period": "2025-01-01T00:00:00/2026-01-01T00:00:00",
"xbrl:entity": "exp:Company1",
"xbrl:unit1": "iso4217:USD"
},
"factValues": [
{
"name": "exp:fv1",
"value": "500000"
}
],
"factQualifiers": {
"exp:RegionSoldAxis": "exp:US",
"exp:ProductAxis": "exp:Widget",
"exp:RegionManufacturedAxis":"exp:CN"
}
}
]
The fact value source object has an object type QName of xbrl:factValueSourceObject.
Each fact value source object in the valueSources property array may identify source text in an information store. The properties of a fact value source object depend on the storage format. (e.g. html, pdf, spreadsheet).
There may be multiple fact value source objects in any valueSources array, to identify multiple regions of source text in the information store, such as text split among paragraphs, pages, cells, form fields, etc. They aggregate by concatenation when present.
properties (non-empty set of xbrl:propertyObject objects / array)The following example demonstrates a value source that is in the span of an html document with an id of "f-73". The property name of xbrl:htmlElementId is defined in the locatorType for html content, and the value is the id of the element in the html document that contains the value for the fact. Tools can use this information to extract the content of the span element as the value for the fact, and to highlight that span element in the document when displaying the fact.
"valueSources": [
{
"properties": [
{
"property": "xbrl:htmlElementId",
"value": ["f-73"]
}
]
}
],
The fact value anchor object has an object type QName of xbrl:factValueAnchorObject.
Each fact value anchor object in the valueAnchors property array may identify source text in a document file. The properties of a fact value anchor object depend on the document file media (e.g. html, pdf, XLSX, ODS, Google Sheets etc.).
This property may be used by tools which highlight text in a document file corresponding to a fact, and may be used for mouse-over behavior to identify fact values which correspond to document file contents.
There may be multiple fact value anchor objects in any valueAnchors array, to identify multiple regions of source text in the document file, such as text split among paragraphs, pages, cells, form fields, etc. They identify non-contiguous text for purposes of highlighting text or discovering mouse-over to corresponding fact value objects.
properties (non-empty set of xbrl:propertyObject objects / array)When a fact value source object or fact value anchor object is defined a fact source object MUST be defined. The following steps describe how a processor MUST determine the source document from model properties:
If a reportSource property (QName) is specified in the fact value object, that QName is used to look up the corresponding QName in the sourceMappings array of the document info object.
If no reportSource property is specified:
sourceMappings array contains exactly one entry, that entry's url is used as the source object.sourceMappings array contains more than one entry, an error MUST be raised (oimte:factSourceResolutionFailed), as the processor cannot distinguish the relevant file.sourceMappings is defined and no reportSource is specified, the report file encapsulating the XBRL module is used as the source.
If the processor fails to resolve a source document the processor MUST raise an error (oimte:factSourceResolutionFailed).
Future drafts of this specification will include functionality that provides a replacement for and enhancement to that provided by Units Registry - Structure 1.0. This functionality allows a fact's units to be validated for consistency with the datatype of the fact's concept.
Planned enhancements include:
The proposed functionality would allow the definition of an entry as a combination of any other number of other entries, and a fact's unit dimension would be considered valid if the reported sets of numerator and denominator measures match those permitted for by the combined sets of unit entries.
The model defines if duplicate facts are permitted. The validity of duplicate facts can be defined at the xbrl model object level or the cube object level. The xbrl model object property duplicateFactsInModel indicates if the model validates duplicate facts. A string value of no duplicates, <<oim:complete duplicates>>, <<oim:consistent duplicates>>, or <<oim:inconsistent duplicates>> defines the duplicates permitted. If no string value is provided the default value is inconsistent duplicates. The value of duplicateFactsInModel sets the default value of the cube object property duplicateFactsInCube. The allowable values for duplicateFactsInCube is the same as the allowable values for duplicateFactsInModel. The value of duplicateFactsInCube has precedence over the duplicateFactsInModel value of the xbrl model object.
The cube object defines if duplicate facts are valid or invalid for facts in that cube. If a cube does not specify a value for the property duplicateFactsInCube then the default value is taken from the duplicateFactsInModel property of the xbrl model object.
If duplicate facts exist in a model they must match the dimension values of at least one cube in the model that allows duplicate facts. If duplicate facts do not match at least one cube in the model that allows duplicate facts then the fact MUST be identified as invalid.(oime:disallowedDuplicateFacts)
The footnote object defines footnotes that can be associated with facts in a report. Footnotes provide additional context or information about the fact objects they are associated with.
The footnote object has an object type QName of xbrl:footnoteObject.
Relationships between facts are expressed using relationship objects between two facts. (see Section 11.4)
name (xs:SQName / string)
forObjects (non-empty set of xbrl:factObject references / array)forObjects property allows a footnote to be associated with one or more facts. A fact can be associated with multiple footnotes by including its QName in multiple forObjects sets across different footnote objects.content (xs:string / string)language (xs:language / string)xbrl:defaultLanguage property of the enclosing XBRL model object, if that property is defined.annotationType (xs:QName / string)annotationType property are not defined by the OIM specification and are left to tool implementations and user conventions.
The following example defines a footnote that annotates a revenue fact with a plain-text explanation:
{
"name": "exp:RevenueNote1",
"forObjects": ["exp:RevenueAnnual2024"],
"language": "en",
"content": "Revenue is recognised at the point of transfer of control of goods or services to the customer.",
"annotationType": "xbrl:footnote"
}
Facts can be defined in the model as an individual fact object or as a collection of facts called a fact source object. The model allows facts to be defined as either object. A fact object can be derived from a fact source and a fact source can be expressed as a collection of facts. The fact source object defines a collection of facts that are derived from a common data source, such as a CSV file, an Excel sheet, a JSON file, an XML file, or an XBRL instance. The fact source object references a fact map object that defines the structure and template for representing the data as fact objects. The fact source object also references the specific data source from which the facts are derived. This allows for efficient representation of large sets of facts without having to define each fact individually in the model.
A fact source object is a binding between a fact map object (which defines the structure and template to represent data as fact objects) and a specific data source from which the data representing fact objects is defined. A single fact map object can be reused across multiple fact source objects that reference different data sources.
The fact source object has an object type QName of xbrl:factSourceObject.
name (xs:QName / string)name is a QName that uniquely identifies the fact source object.factMapName (xbrl:factMapQName reference / string)cubeName (xbrl:cubeQName / string)cubeName is a QName that references a cube object. When provided, only facts that fall within the dimensional space of the cube are included in the result; facts with no dimensional membership in the cube are excluded. Constraints defined on the cube are applied to the generated facts. When omitted, facts are generated for the entire model without cube filtering. Multiple fact source objects can reference the same factMapName with different cubeName values, allowing the same template to define fact objects from the same data file, based on a different referenced cube. Multiple fact source objects can also reference the same cube, allowing facts from different data files to define different facts that are included in a single cube. The cube definition can be used to control how facts are validated based on the native format.namespaceMaps (non-empty set of xbrl:namespaceMapObject / object)namespaceMaps property is used for namespace migration: when importing facts from an older XBRL report where concepts used a different namespace (e.g., old:Revenue) into a model where those concepts have been updated to a new namespace (e.g., new:Revenue), the namespaceMaps entry tells the processor how to translate the old namespace to the new one during fact loading (see Section 9.2).
factIdentifierNamespacePrefix (xs:NCName / string)factIdentifierNamespacePrefix is the namespace prefix assigned to the fact objects defined in the fact source object. The factIdentifierNamespacePrefix defines the prefix of the fact object QName and fact value object QName generated from the fact source object. If the factIdentifierNamespacePrefix is not defined, the processor MUST use the namespace prefix of the model for the fact object and fact value object QName. This property is used when multiple fact sources are used to prevent fact QName duplicates. If the prefix is not defined in the document namespace object, the error oimce:unboundPrefix is raised.
properties (non-empty set of xbrl:propertyObject objects / array)The following example defines a fact source binding a CSV data format to a specific report file:
{
"name": "exp:AnnualReport2024Facts",
"factMapName": "xbrl:csvFactMap",
"properties": [
{ "property": "exp:documentTitle", "value": "Annual Report 2024" }
]
}
The namespace prefix defined for factIdentifierNamespacePrefix MUST be defined in the document namespace object (oimce:unboundPrefix).
The namespaceMap object has an object type QName of xbrl:namespaceMapObject.
When a reporting authority changes a taxonomy namespace URI (a breaking change), previously filed reports reference the old namespace. The namespace map object allows processors to treat facts in the fromNamespacePrefix as if they were in the toNamespacePrefix, enabling backward-compatible validation of legacy reports. This is analogous to XML catalog-based URI rewriting.
fromNamespacePrefix (xs:NCName / string)fromNamespacePrefix property is the original namespace prefix that is being redirected.toNamespacePrefix (xs:NCName / string)toNamespacePrefix property is the new namespace prefix that the fromNamespacePrefix is being redirected to. If no fromNamespacePrefix is specified, the toNamespacePrefix is used as the namespace for the fact source object irrespective of the namespace in the source.The following example maps a legacy namespace to the current taxonomy namespace, enabling validation of reports filed against the old namespace using the current model:
{
"fromNamespacePrefix": "expOld",
"toNamespacePrefix": "expCurrent"
}
The namespace prefixes defined for fromNamespacePrefix and toNamespacePrefix MUST be defined in the document namespace object. (oimce:unboundPrefix)
The data source MUST be defined in an XBRL format.
The fact map object defines the mapping between data available in underlying data format and how that format can be translated to fact objects. Maps can be defined for different data formats such as CSV, JSON, XML or other formats. The fact map object defines the mapping for a specific data format.
The fact map object has an object type QName of xbrl:factMapObject.
The result of applying a fact map to a fact source object in the specified format results in a set of fact objects.
This specification defines two built-in fact maps that processors MUST support without any explicit factMap definition in the taxonomy model:
xbrl:xBRL-XML — maps facts and footnotes from an XBRL 2.1 XML instance document to fact objects and footnote objects. See xBRL-XML fact map.xbrl:xBRL-JSON — maps facts from an xBRL-JSON document to fact objects. See xBRL-JSON fact map.Processors MAY support the following built-in fact map without explicit factMap definition in the taxonomy model:
xbrl:inline-XBRL-1.1 — maps facts from an [Inline XBRL 1.1] document to fact objects including fact value source object properties for the source document. See Inline XBRL 1.1 fact map.Model authors may define additional fact map objects for custom data formats using the templateName property to reference a table template object, jsonTemplateMap object, or xmlTemplateMap object.
A fact map object is a supplementary derivation mechanism for facts sourced from external documents. A fact map object is used when fact values are extracted from an external data source (CSV, XML, JSON) using the structure of the data source to determine the mapping. A taxonomy/report that provides all its facts as fact objects has no need for a fact map object.
name (xs:QName / string)name is a QName that uniquely identifies the fact map object.templateName (xs:QName / string)templateName is a QName that references a table template object, a JSON template map object or an XML template map object defined in the taxonomy model. The type of template object referenced by the templateName property determines the data format of the fact map. (see Section 9.4, Section 9.5 and Section 9.6)factLocatorType (xbrl:factLocatorTypeObject reference / string)locatorType for all fact value objects that reference this fact map via a fact source object. When present on the factMap entry, it overrides the need to specify locatorType on each individual factValue.The specification defines specification-defined fact maps where the format of the XBRL facts is known. This includes XBRL facts defined using the XBRL 2.1 specification and facts defined using the xBRL-JSON specification. (see Section 16)
The XBRL-xml fact map is referenced by a fact source. In the example below the fact source object ext:getInstance represents the collection of facts.
"factSources": [
{
"name": "ext:getInstance",
"factMapName": "xbrl:xBRL-XML"
}
],
The following example defines a custom fact map that references a table template for OIM-CSV data:
{
"name": "exp:QuarterlyCSVMap",
"templateName": "exp:QuarterlyReportTemplate"
}
A table template object is an extensible object that defines a table structure that maps facts in a CSV format into an XBRL fact object. The table template model mirrors that defined in the XBRL-csv specification.
The table template object has an object type QName of xbrl:tableTemplateObject.
The tableTemplate object does not replace the XBRL-CSV specification which is designed to work with the XBRL 2.1 specification but provides an equivalent mechanism to map CSV data to XBRL facts using the OIM model.
This table template object maps facts defined in a two dimensional format to an XBRL fact object.
name (xs:QName / string)name is a QName that uniquely identifies the table template object. This property cannot be used in conjunction with the extends property.rowIdColumn (xs:string / string)columns (non-empty ordered set of xbrl:columnObject objects / array)xbrl:columnObjects that define the columns of the table. (see Section 9.4.2)factDimensions (xbrl:factDimensionObject / object)decimals (xs:decimal / number)extends (xbrl:tableTemplateObject reference / string)name, rowIdColumn and decimals property. The QName MUST resolve to an existing table template object; if the QName resolves to an object of a different type, processors MUST raise an error (oimte:invalidObjectType).isExtensible (xs:boolean / boolean)false, the table template is non-extensible and no importing model may augment it using extends. If set to true or omitted, the table template may be extended. The default value is true.The following example defines a table template for a quarterly CSV report with a period column and a value column for revenue:
{
"name": "exp:QuarterlyReportTemplate",
"rowIdColumn": "rowId",
"columns": [
{
"columnName": "period",
"factDimensions": { "xbrl:period": { "transform": "xbrl:datePeriod" } }
},
{
"columnName": "value",
"decimals": -3,
"factDimensions": { "xbrl:concept": "exp:Revenue" }
}
]
}
columnName (xs:string / string)decimals (xs:decimal / number)factDimensions (xbrl:factDimensionObject / object)
transformation: (xbrl:transformObject reference / string)order (xs:decimal / number)The columnName MUST be a valid NCName and MUST NOT contain the . character. (oimte:invalidColumnName)
The mapping of a table template object to fact objects is defined in the xbrl-csv specification.
The following lists components of this specification are not supported or are changed:
The SQName of the fact is the concatenation of the fact source object QName (including the prefix), the row identifier for the current row and the column identifier for the current column, separated by ., i.e.:
{factSource QName}.{row-identifier}.{column-identifier}
A row identifier provides a unique identifier for a row that is used, in combination with the fact source object QName and column identifier to produce fact identifiers. The row identifier for the current row is:
If the template for the current table has a rowIDColumn, and the data table includes that column, then the value in the current row of that column, prefixed with the string r_.
Otherwise, a value in the form r_N where N is the row number of the current row.
Where a data table includes a row ID column the values in the column have the constraints defined in the xbrl-csv specification.
The fact dimensions property of a fact object from a tableTemplate is defined in the xbrl-csv specification
The decimals property of a fact object from a tableTemplate is defined in the xbrl-csv specification
This object maps facts defined in any JSON format to an XBRL fact object.
name (xs:QName / string)name is a QName that uniquely identifies the JSON template map object.factDimensions (xbrl:factDimensionObject / object)valuePath (xs:string / string)decimals (xs:decimal / number)
This object maps facts defined in any XML format to an XBRL fact object.
name (xs:QName / string)name is a QName that uniquely identifies the XML template map object.factDimensions (xbrl:factDimensionObject / object)valuePath (xs:string / string)decimals (xs:decimal / number)namespaceMap (xbrl:namespaceMapObject / object)
The transform object has an object type QName of xbrl:transformObject.
A transform object defines how data is transformed from one datatype to another datatype. A corresponding implementation is to be supplied at run-time either as a standard function or via some extension mechanism. The definition of the transform functions is out of scope for this specification.
name (xs:QName / string)name is a QName that uniquely identifies the transform object.inputDataType (xbrl:dataTypeObject reference / string)outputDataType (xbrl:dataTypeObject reference / string)The following example defines a transform that converts a date string in D/M/Y format to a canonical xs:date value:
{
"name": "exp:dateDMY",
"inputDataType": "xs:string",
"outputDataType": "xs:date"
}
The group object has an object type QName of xbrl:groupObject.
Multiple network objects with the same relationship type can exist in the same group object. This allows separate networks with the same relationship type to be defined for the same group object such as an income statement and the associated parenthetical disclosure for the income statement.
A group object can contain multiple cubes. A cube can be associated with multiple group objects.
A group content object may also include table template object QNames in the forObject property to indicate the data source associated with the group's facts.
The group object has three properties:
name (xs:QName / string)groupURI (xs:anyURI / string)properties (non-empty set of xbrl:propertyObject objects / array)The following example defines a group representing the financial statements section of a report:
{
"name": "exp:BalanceSheetGroup",
"groupURI": "http://example.com/role/BalanceSheet"
}
The group content object links group objects to network objects, cube objects, domain network objects and table template objects. Group content objects are defined in the groupContents set of the XBRL model object. Duplicate group content objects with the same groupName and forObject are removed.
The group content object has three properties:
groupName (xbrl:groupObject reference / string)forObject (xbrl:networkObject or xbrl:domainNetworkObject or xbrl:cubeObject or xbrl:tableTemplateObject reference / array)
order (xs:decimal / number)groupName in the groupContents set of the XBRL model object. If no order attribute is provided the default order value is zero. If two or more group content objects have the same order property the processor decides the order.
The following example associates a group with a cube and a presentation network:
"groupContents": [
{
"groupName": "exp:BalanceSheetGroup",
"forObject": "exp:BalanceSheetCube",
"order": 1
},
{
"groupName": "exp:BalanceSheetGroup",
"forObject": "exp:BalanceSheetPresentation",
"order": 2
}
]
The forObject property MUST only include QNames associated with network objects, cube objects, domain network objects or table template objects. (oimte:invalidGroupContentForObject)
To add additional objects to a group, a group content object can be defined with the groupName in the importing taxonomy. The order property can be used to determine the order of the additional object in the group.
An importing model cannot remove an object from a group object.
A network object is an extensible object that defines a collection of relationship objects.
A compiled network object is a resolved model object that defines a collection of relationship objects. A compiled network object is the result of merging all the relationship objects from a network object and any network objects that it extends.
Each network object specifies the relationships for a single relationship type.
The network object has an object type QName of xbrl:networkObject.
Properties of the network object are:
name (xs:QName / string)name is a QName that uniquely identifies the network object.relationshipTypeName (xbrl:relationshipTypeObject reference / string)xbrl:parent-childrelationships (non-empty set of xbrl:relationshipObject objects / array)extends (xbrl:networkObject reference / string)relationshipTypeName and name property. The ability to extend a network can be used to add relationship objects, roots and properties to an existing network. The QName MUST resolve to an existing network object; if the QName resolves to an object of a different type, processors MUST raise an error (oimte:invalidObjectType).isExtensible (xs:boolean / boolean)false, the network is non-extensible and no importing model may augment it using extends. If set to true or omitted, the network may be extended. The default value is true.properties (non-empty set of xbrl:propertyObject objects / array)The following example defines a presentation network for an income statement with a parent-child hierarchy:
{
"name": "exp:IncomeStatementPresentation",
"relationshipTypeName": "xbrl:parent-child",
"relationships": [
{ "source": "xbrl:rootSource", "target": "exp:IncomeStatementAbstract", "order": 1 },
{ "source": "exp:IncomeStatementAbstract", "target": "exp:Revenue", "order": 1 },
{ "source": "exp:IncomeStatementAbstract", "target": "exp:CostOfSales", "order": 2 },
{ "source": "exp:IncomeStatementAbstract", "target": "exp:GrossProfit", "order": 3 }
]
}
An extension that adds a new concept to an existing network:
{
"extends": "exp:IncomeStatementPresentation",
"relationships": [
{ "source": "exp:IncomeStatementAbstract", "target": "exp:OtherIncome", "order": 4 }
]
}
Specifying the extends property results in all the relationship objects being merged into their respective sets. In the case of multiple extends on the same object the order of the sets is determined based on the order property of the relationship objects relative to each other. If no order is defined the ordering is processor specific.
The root source identifies a single point for network roots and group tree object roots to be anchored by a relationship object. This allows multiple network roots to be defined and ordered in a network hierarchy. The root source QName need not be visible by tools and is defined using the same QName across all network objects and group tree objects. The QName xbrl:rootSource is used to define the root source.
A network root is an object that is the target of a relationship object with a source of xbrl:rootSource.
If a relationship object defines the xbrl:rootSource as the source, a processor should only recognize the order property of the relationship object. If the relationship type of the network object requires a property, and that property is not defined where the source of the relationship object is xbrl:rootSource then processor should not raise an error.
Constraints on source objects defined in the relationship type object do not apply to the root source QName.
The following exampleshows the root source used in a set of relationships:
"relationships": [
{ "source": "xbrl:rootSource", "target": "exp:IncomeStatementAbstract", "order": 1 },
{ "source": "exp:IncomeStatementAbstract", "target": "exp:Revenue", "order": 1 },
{ "source": "exp:IncomeStatementAbstract", "target": "exp:CostOfSales", "order": 2 },
{ "source": "exp:IncomeStatementAbstract", "target": "exp:GrossProfit", "order": 3 }
]
The relationships set MUST NOT contain duplicate relationships (oimte:duplicateItemsInSet). A relationship object is considered a duplicate of another if all of its properties (source, target, relationshipTypeName, order, and any additional properties) have identical values to those of the other relationship object.
The root source QName MUST NOT be referenced by any object other than a relationship object source (oimte:invalidRootSourceReference).
Every compiled network object MUST define a root source if a set of relationship objects is defined (oimte:missingRootSource)
The order of the relationships in a network object is determined by the order property on the relationship object. If no order is defined then it defaults to the order of the relationship objects as they appear in the list. See Section 10.4 for the full definition of the order property.
The relationship object has an object type QName of xbrl:relationshipObject.
The source and target of a relationship object can reference any object with a QName.
The relationship object can be used in an importing model to extend relationships defined in a base taxonomy.
When the cube object, domain network object, or network object has the extends property that references a QName of a base object the defined relationship objects are merged with the relationship objects in the extending object.
source (model object reference / string)target (model object reference / string)order (xs:decimal / number)order property can be used on any relationship type. If no order attribute is provided the order of their appearance in the set is used as the default. If no order attribute is provided the default order value is zero. This value is used to sort relationships relative to objects that do have an order attribute.
properties (non-empty set of xbrl:propertyObject objects / array)Relationship object constraints are dependent on the relationship type object used in the relationship. The relationship type object defines the constraints on the relationship object.
The source of a relationship (which is not xbrl:rootSource) MUST be an object type that matches one of the objects in the sourceObjects property of the relationship type object. If the sourceObjects property is not defined then any source QName is allowed. (oimte:invalidRelationshipSourceObject)
The target of a relationship (which does not have a source of xbrl:rootSource) MUST be an object type that matches one of the objects in the targetObjects property of the relationship type object. If the targetObjects property is not defined then any target QName is allowed. (oimte:invalidRelationshipTargetObject)
The relationship properties MUST be a set of property QNames that are defined in the allowedLinkProperties property of the relationship type object. If the allowedLinkProperties property is not defined then any relationship property is allowed. (oimte:disallowedObjectProperty)
The relationship properties MUST include the QName property of any property defined for the requiredLinkProperties property of the relationship type object. (oimte:missingRequiredRelationshipProperty)
The constraints on domain relationships are defined as part of the domain network object. The relationship type object is not used in domain relationships.
The relationship objects in a network object MUST define directed acyclic graph(s) (DAG). Cycles in the relationship graph MUST raise an error. (oimte:networkCyclic)
The cycles property of the relationship type object overrides the default DAG requirement: if cycles: any, cycles are permitted; if cycles: undirected, undirected cycles are allowed; if cycles: none, any cycle (directed or undirected) raises oimte:networkCyclic
The cycles: any setting on a relationship type permits genuine multi-node cycles, not self-loops; self-loops are prohibited regardless of the cycles value.
The datatype object defines custom datatypes.
The datatype object has an object type QName of xbrl:datatypeObject.
The taxonomy model uses the XML Schema datatypes system for defining the datatype of values. The built-in XML Schema datatypes are used directly by referencing the QName of the datatype such as xs:string or xs:decimal.
A numeric datatype is a datatype that is derived from xs:decimal, xs:double, or xs:float.
A non-numeric datatype is a datatype that is not a numeric datatype.
Built-in datatypes are datatypes defined by this specification that processors MUST recognise without those types being explicitly declared as a datatype object in the resolved model. Built-in datatypes are identified by QNames in the xbrlr: namespace.
The complete normative list of built-in datatypes defined by this specification — including each type's QName, base datatype, and value space constraints — is defined in Built-in datatypes model.
A value MUST conform to the lexical and value space of the built-in datatype referenced by the dataType property of the associated object. If a value does not conform to the referenced built-in datatype, a processor MUST raise an error (oimte:factValueDataTypeMismatch).
The taxonomy object includes a datatype object that allows for defining of datatypes.
name (xs:QName / string)name is a QName that uniquely identifies the datatype object.baseType (xbrl:dataTypeObject reference / string)
enumeration (non-empty set of simple types / array)
openEnumeration (xs:boolean / boolean)enumeration property are allowed. If false, only values defined in the enumeration property are allowed. Defaults to false if not provided. The enumeration set can be empty even when this is true meaning all values of the base datatype are allowed.
minInclusive : (xs:decimal / number)
maxInclusive : (xs:decimal / number)minExclusive : (xs:decimal / number)maxExclusive: (xs:decimal / number)totalDigits : (xs:nonNegativeInteger, number)xs:float, xs:double and xs:decimal.fractionDigits : (xs:nonNegativeInteger, number)length : (xs:nonNegativeInteger, number)minLength : (xs:nonNegativeInteger, number)maxLength : (xs:nonNegativeInteger, number)whiteSpace : (xs:string / string)preserve, replace or collapse.
patterns : (non-empty set of xs:string / array)xs:pattern elements.unitType: (xbrl:unitTypeObject reference / object)xbrlr:flow is comprised of datatypes of xbrlr:volume and xbrlr:time.
checksumAlgorithm (xbrl:memberObject reference / string)dataType property, the algorithm is applied to the local-name portion of any QName that resolves to that implied object.
allowedObjects (non-empty set of object type QName references with a datatype property / array)dataType property. If this property is omitted, the datatype can be used with any object that has a dataType property. The allowed objects are limited to xbrl:conceptObject, xbrl:domainClassObject, xbrl:cubeDimension, xbrl:unitObject, xbrl:transformObject, xbrl:collectionTypeObject, xbrl:propertyTypeObject, xbrl:dimensionConstraintObject, xbrl:impliedObject, or xbrl:cubeNetworkConstraintObject. If the allowedObjects property includes an object other than these the error oimte:objectHasNoDatatype MUST be raised.
The enumeration, patterns, length, minLength, minInclusive, maxInclusive, minExclusive, maxExclusive, totalDigits and fractionDigits properties are referred to as XML Schema facet properties. XML Schema facet properties map to XML Schema facets as follows:
patterns maps to the XML Schema pattern facet, with values in the set being treated as equivalent to multiple 'pattern' elements within a 'simpleType' ;
The following example defines a custom numeric datatype restricting values to positive decimals with at most 18 digits and 2 decimal places:
{
"name": "exp:PositiveMonetary",
"baseType": "xs:decimal",
"minExclusive": 0,
"totalDigits": 18,
"fractionDigits": 2
}
A string datatype with a closed enumeration of reporting basis values:
{
"name": "exp:ReportingBasis",
"baseType": "xs:string",
"enumeration": ["IFRS", "US-GAAP", "Local-GAAP"],
"openEnumeration": false
}
In financial reporting checksums are commonly used to support the correct entry of data for identifiers such as a Legal Entity Identifier (LEI), an International Securities Identification Number (ISIN), or a Bank Identifier Code (IBAN). The specification defines a model defined domain class object that allows different checksum algorithms to be identified in a standard way. This checksum class is called xbrl:checksumAlgorithmDomainClass. Any members in this class are a checksum.
An implied object can be defined that uses a checksum to validate that the local name of the implied object is valid against a checksum.
The following example defines an implied object that uses a checksum to validate the local name of the implied object. The implied object in this case is defined as a Legal Entity Identifier (LEI) defined by the ISO 17442 standard for the LEI.
"impliedObjects": [
{
"name": "xbrl:LegalEntityIdentifier",
"namespace" : "http://standards.iso.org/iso/17442",
"domainClass": "xbrl:entityDomain",
"objectType": "xbrl:entityObject",
"localNameConstraint": "xbrl:LEICdataType"
}
]
The implied object has a localNameConstraint that must reference a datatype object that is used to validate the local name of the implied object. In this case the datatype is xbrl:LEICdataType.
The datatype below includes the checksumAlgorithm property that references a member object that represents the algorithm that is used to validate the local name of the implied object.
"dataTypes": [
{
"name": "xbrl:LEICdataType",
"baseType": "xs:string",
"checksumAlgorithm": "xbrl:iso7064-Mod-97-10"
}
]
The algorithm xbrl:iso7064-Mod-97-10 is a member belonging to the xbrl:checksumAlgorithmDomainClass domain class.
"members" : [
{
"name": "xbrl:iso7064-Mod-97-10",
"domainClasses": ["xbrl:checksumAlgorithmDomainClass"]
}
]
The xbrl:checksumAlgorithmDomainClass domain class is defined in the base model.
"domainClasses" :[
{
"name": "xbrl:checksumAlgorithmDomainClass",
"allowedDomainItem": "xbrl:memberObject"
}
]
Any facets specified by XML Schema facet properties MUST satisfy the relevant Schema Component Constraints specified for the facet including the Valid Restriction constraints, defined in XML Schema Part 2 §4.3 Constraining Facets (oimte:illegalConstraint).
If the allowedObjects property is present then the datatype can only be used with the specified object types. If a datatype is used with an object that is not included in the allowedObjects set then the processor MUST raise an error (oimte:disallowedObjectDataType).
The collection type object has an object type QName of xbrl:collectionTypeObject.
Collection types MUST not reference other collection types in dataType property, preventing nested collections (oimte:nestedCollection).
name (xs:QName / string)dataType (xbrl:datatypeObject reference / string)uniqueValues (xs:boolean / boolean)orderedValues (xs:boolean / boolean)maxItems (xs:nonNegativeInteger / number)minItems (xs:nonNegativeInteger / number)For JSON formatted models the collection delimiter is a , (comma). For XML formatted models the collection delimiter is a whitespace character.
The example shows a collection type object definition for a QName set type that is a collection of unique unordered QName values.
"collectionTypes": [
{
"name": "exp:myCollection",
"dataType" :"xs:QName",
"uniqueValues":true,
"orderedValues":false,
"minItems":1
}
]
The maxItems property MUST be greater than or equal to the minItems property if both are provided. If this constraint is violated processors MUST raise an error (oimte:invalidCollectionType).
If the number of items in a collection is not within the range defined by the minItems and maxItems properties the processor MUST raise an error (oimte:invalidNumberOfItemsInCollection).
If the uniqueValues property of the collection type object is true and the collection contains duplicate values the processor MUST raise an error (oimte:duplicateItemsInCollection).
The unit type object has an object type QName of xbrl:unitTypeObject.
dataTypeNumerator: (xbrl:dataTypeObject reference / string)dataTypeDenominator: (xbrl:dataTypeObject reference / string)dataTypeMultiplier: (xbrl:dataTypeObject reference / string)
The following shows using multiplication datatypes comprising the volume and area unit types. The volume datatype is defined as having a numerator of length datatype and a multiplier of area datatype, which means that a fact with a datatype of volume could have a unit of meters * square meters or a unit of area could have a unit of feet * feet.
"dataTypes": [
{
"name": "xbrlr:volume",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:length",
"dataTypeMultiplier": "xbrlr:area"
}
},
{
"name": "xbrlr:area",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:length",
"dataTypeMultiplier": "xbrlr:length"
}
},
{
"name": "xbrlr:length",
"baseType": "xs:decimal"
}
]
For units represented using division the possible units of a datatype can be derived, using the Unit type object. For example, the speed datatype is defined as having a numerator of length and a denominator of time, which means that a fact with a datatype of speed could have a unit of meters per second or feet per hour.
"dataTypes": [
{
"name": "xbrlr:speed",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:length",
"dataTypeDenominator": "xbrlr:time",
"dataTypeMultiplier": null
}
},
{
"name": "xbrlr:length",
"baseType": "xs:decimal"
},
{
"name": "xbrlr:time",
"baseType": "xs:decimal"
}
]
The relationship type object has an object type QName of xbrl:relationshipTypeObject.
The relationship type object has the following properties:
name (xs:QName / string)name is a QName that uniquely identifies the relationship type object.uri (xs:anyURI / string)cycles (xs:string / string)any, none, and undirected. Any means cycles are allowed in the relationships, undirected means cycles are allowed, but they must be undirected, and none means cycles are not allowed in the relationships. The default value is none if not provided.allowedLinkProperties (non-empty set of xbrl:propertyTypeObject objects / array)properties array of relationship objects of this type. Each property is represented as the QName defined in the property type object. Only properties defined in this list can be added to the specific relationship type.requiredLinkProperties (non-empty set of xbrl:propertyTypeObject objects / array)sourceObjects (non-empty set of object type QName references / array)
targetObjects (non-empty set of object type QName references / array)constraints (non-empty set of xbrl:relationshipConstraintObject objects / array)The following example defines a parent-child relationship type that permits the xbrl:preferredLabel property on relationship links and disallows cycles:
{
"name": "xbrl:parent-child",
"cycles": "none",
"sourceObjects": ["xbrl:conceptObject", "xbrl:headingObject"],
"targetObjects": ["xbrl:conceptObject", "xbrl:headingObject"],
"allowedLinkProperties": ["xbrl:preferredLabel"]
}
A QName defined in the requiredLinkProperties set MUST be included in the allowedLinkProperties set of the relationship type objects (oimte:requiredPropertyNotAllowed). If the allowedLinkProperties set is not defined this error is not raised.
A relationship constraint expression is a boolean logic statement expressed as a formula expression that specifies the conditions under which a relationship between two objects (the source and the target) is considered valid.
The relationshipConstraint object has the following properties:
constraint (xs:string / string)
The property type object has an object type QName of xbrl:propertyTypeObject.
A property type object defines a property as either definitional or non-definitional, controlled by the definitional property (default: false).
A definitional model-defined property is a model-defined property thats definitional property is defined as true.
Definitional properties are intrinsic to an object's semantic identity. If the value of a definitional property changes, the object has a different meaning — it is not merely a revision of the same object. For this reason:
definitional: true), not of the relationship type or the objects involved.
Examples of definitional properties: xbrla:balance (a concept's balance type), dataType (the datatype of a concept). Changing either of these changes the semantic meaning of the concept.
Non-definitional properties are contextual metadata about an object. They provide additional information without changing the object's identity, and may be extended or overridden by an importing model.
Examples of non-definitional properties: deprecation date, creation date. These describe operational facts about the object's lifecycle and do not affect what the object means.
The balance property of a concept object has been defined as a core property type of the specification. This property should only be used with concept objects.
The xbrl:defaultLanguage property has been defined as a core property type of the specification. This property can only be used with the XBRL model object. It specifies the default BCP 47 language applied to text-valued objects within the model when no explicit language is provided. See Default Language property for details.
Properties defined should not reproduce or conflict with the properties of the object. The property object can be used to extend the properties of a concept defined in an imported taxonomy.
The property type object has the following properties:
name (xs:QName / string)name is a QName that uniquely identifies the property type object.dataType (xbrl:dataTypeObject or xbrl:collectionTypeObject reference / string)
dataType property.The QName MUST resolve to a datatype object or collection type object present in the taxonomy model. (see Section 11.1)
If the referenced QName is not a dataType or collection type object, processors MUST raise an error (oimte:invalidObjectType).
enumerationDomain (xbrl:domainNetworkObject reference / string)
definitional (xs:boolean / boolean)true, the property is part of the object's semantic identity: its value cannot be changed by an extending taxonomy (oimte:conflictingPropertyValues), and the property is inherited by subclass objects through all inheritance mechanisms (see Property inheritance). An extending taxonomy may supply a value for a definitional property that has no value in the base taxonomy, but cannot subsequently change that value. When false (the default), the property is contextual metadata that may be extended or overridden by an importing model without affecting the object's identity. Defaults to false if absent.allowedObjects (non-empty set of object type and domain class QName references / array)xbrl:conceptObject.allowedAsLinkProperty (xs:boolean / boolean)false if absent.The following example defines the xbrla:balance property type, which may only be applied to concept objects:
{
"name": "xbrla:balance",
"dataType": "xbrlr:balanceType",
"allowedObjects": ["xbrl:conceptObject"],
"definitional": true,
"allowedAsLinkProperty": false
}
An object that adds a property that is not included in the allowedObjects set MUST raise an error (oimte:disallowedObjectProperty).
The allowedObjects property MUST only include referenceable object types (oimte:invalidAllowedObject).
The same property MUST NOT be included on an object with conflicting values. A property must have consistent values when assigned to an object. (oimte:conflictingPropertyValues).
The model type object has an object type QName of xbrl:modelTypeObject.
The model type object constraints only apply to the objects defined in the module. Model type constraints do not apply to imported taxonomies.
Model type constraints must be applied during XBRL module validation and during compilation. They MUST NOT be applied to objects included from imported taxonomies (importTaxonomy), which are validated at their point of definition.
name (xs:QName / string)name is a QName that uniquely identifies the model type object.allowedObjects (non-empty set of object type QName references / array)allowedObjects property is defined then the XBRL Model can only include objects that are defined in the set. All descendant objects of the defined object type are also allowed. For example if a xbrl:cubeTypeObject is allowed then the xbrl:cubeDimensionObject is also allowed.allowedProperties (non-empty set of xbrl:propertyTypeObject objects / array)requiredProperties (non-empty set of xbrl:propertyTypeObject objects / array)The following example defines a model type that restricts a model to only concept and domain objects, and requires a exp:regulatorCode property on the model:
{
"name": "exp:RegulatoryModelType",
"allowedObjects": ["xbrl:conceptObject", "xbrl:domainNetworkObject"],
"requiredProperties": ["exp:regulatorCode"]
}
If a model includes an object type that is not included in the allowedObjects set then the processor MUST raise an error. The error is only raised if the objectType is defined in the same namespace of the xbrlModel that has a documentType of https://xbrl.org/PWD/2026-09-01/module. The allowedObjects constraint does not apply to any objects included in the model using the import taxonomy object. (oimte:disallowedObjectModelType).
If a xbrl:xbrlModelObject does not define a required property defined in the requiredProperties set then the processor MUST raise an error (oimte:missingRequiredModelTypeProperty).
A QName defined in the requiredProperties set MUST be included in the allowedProperties set of the model type object, if allowedProperties are defined (oimte:requiredPropertyNotAllowed). If the allowedProperties set is not defined this error is not raised.
The label type object defines a label type in an XBRL model.
The label type object has an object type QName of xbrl:labelTypeObject.
The label type object defines a QName and URI of the label type. The QName associates labels objects with the label type.
name (xs:QName / string)name is a QName that uniquely identifies the label type object.uri (xs:anyURI / string)formatType (xs:string / string)text — Plain text content.html — HTML content.markdown — Markdown content.xhtml — XHTML content (as used by XBRL 2.1).
The formatType property is informational metadata that indicates the expected format of label content to consuming applications. Processors are not expected to validate that label values conform to the specified format (e.g., a processor is not expected to validate that an html label contains well-formed HTML, or that a markdown label conforms to any particular Markdown specification). The format type serves as a guide for rendering and processing labels appropriately.
If the value is not one of the above, processors MUST raise (oimte:invalidFormatType).
contentConstraints (object)maxLength (xs:integer) — The maximum length of the label value.minLength (xs:integer) — The minimum length of the label value.pattern (xs:string) — A regular expression pattern that the label value MUST match.allowedObjects (non-empty set of object type QName references / array)For human-readable display labels, text is usually the preferred formatType. Machine-readable label types may use other format types such as html or markdown.
The following example defines a verbose label type applicable to concept and heading objects:
{
"name": "xbrl:verboseLabel",
"formatType": "text",
"contentConstraints": {
"maxLength": 20
},
"allowedObjects": ["xbrl:conceptObject", "xbrl:headingObject"]
}
The allowedObjects set in the label type object MUST contain only object type QNames for referenceable object types (oimte:invalidModelObjectType).
If the same URI is used on more than one label type object the processor MUST raise oimte:duplicateLabelURI.
The reference type object has an object type QName of xbrl:referenceTypeObject.
The reference type object defines a QName of the reference type and an optional URI for backward compatibility. The QName associates reference objects with the reference type.
name (xs:QName / string)name is a QName that uniquely identifies the reference type object.uri (xs:anyURI / string)allowedObjects (non-empty set of object type QName references / array)orderedProperties (non-empty ordered set of xbrl:propertyTypeObject references/ array)requiredProperties (non-empty set of xbrl:propertyTypeObject references / array)The following example defines a standard reference type for accounting standard citations, requiring publisher and name on every reference:
{
"name": "ref:StandardReference",
"allowedObjects": ["xbrl:conceptObject"],
"allowedProperties": [
"ref:Publisher", "ref:Name", "ref:Number",
"ref:IssueDate", "ref:Chapter", "ref:Paragraph"
],
"requiredProperties": ["ref:Publisher", "ref:Name"]
}
The set of allowedObjects property in the reference type object MUST only include referenceable object types. oimte:invalidAllowedObject
The requiredProperties properties MUST NOT include properties whose property type cannot be used on a reference object (oimte:invalidRequiredProperty).
The orderedProperties property MUST NOT include properties whose property types cannot be used on a reference object (oimte:invalidOrderedProperty).
The fact locator type object has an object type QName of xbrl:factLocatorTypeObject.
The fact locator type object defines a distinct addressing strategy as a first-class named object whose required and allowed properties are declared explicitly. Adding support for a new document format or addressing mechanism requires defining a new fact locator type object; no changes are needed to the fact value object, fact value source object, or fact value anchor object.
The fact locator type object has the following properties:
name (xs:QName / string)sourceMediaType (xs:string / string)text/html, application/pdf, text/csv). Informational only; does not restrict which source documents a locator of this type may reference.requiredProperties (non-empty set of xbrl:propertyTypeObject references / array)allowedProperties (non-empty set of xbrl:propertyTypeObject references / array)The following example defines a locator type for identifying cells in a spreadsheet, requiring sheet name and cell reference:
{
"name": "exp:SpreadsheetRef",
"sourceMediaType": "application/vnd.ms-excel",
"allowedProperties": [
"exp:workbookPath", "exp:sheetName", "exp:cellReference"
],
"requiredProperties": ["exp:sheetName", "exp:cellReference"]
}
The requiredProperties set MUST be a subset of the allowedProperties set when both are defined. (oimte:requiredPropertyNotAllowed)
The requiredProperties and allowedProperties sets MUST only contain QNames of property type objects defined in the XBRL Model. (oimte:invalidObjectType)
A cube type object defines a cube type. A cube type defines constraints on the dimensions, relationships and properties that can be included in a cube object of that type.
The cube type object has an object type QName of xbrl:cubeTypeObject.
A cube type object can be used to define a template for cubes that share the same structure. A cube type object can also be used to define a base cube type that other cube types can be based on using the baseCubeType property. This basetype can be used to identify the meaning and purpose of the cube. A cube may for example be used to model transaction details, or event details. The cube type ensures that cubes that collect transactional data, report data or time series data are modeled in a consistent manner across models.
The diagram below shows the object structure of the cube type object:
name (xs:QName / string)name is a QName that uniquely identifies the cube type object.baseCubeType (xbrl:cubeTypeObject reference / string)
coreDimensions (non-empty set of xbrl:dimensionObject references / array)xbrl:concept, xbrl:period, xbrl:entity, xbrl:unit, and xbrl:language. If not specified, all core dimensions are allowed. The xbrl:concept dimension is always included and does not need to be listed.
coreDomainClasses (non-empty set of xbrl:domainClassObject references / array)domainNetwork property is required or is optional in the definition of the cube dimension object of a cube object. This property is defined as optional in the cube dimension object. The core domainClasses are: xbrl:conceptDomain, xbrl:entityDomain, and xbrl:unitDomain. If coreDomainClasses are not specified, the domainNetwork property remains optional. If coreDomainClasses are specified, then the domainNetwork property in the cube dimension object becomes required for the dimension associated with the domain classes listed. The domainNetwork property MUST specify domain networks of the domainClass if the related dimension property is defined in the cube dimension object. (oimte:missingCoreDomainNameFromCubeDimension).cubeDimensionConstraints (xbrl:dimensionsAllowedObject / object)cubeNetworkConstraints (xbrl:cubeNetworkObject / object)cubeNetworks property. If not defined then any network can be associated with the cube.
cubeProperties (xbrl:propertiesConstraintObject / object)
The example cube type object below represents a cube that:
"cubeTypes": [
{
"name": "exp:myCubeType",
"cubeDimensionConstraints": {
"allowed": [
{
"type": "typed",
"dataType": "xs:token"
},
{
"type": "explicit",
"minDimensions": 1
}
],
"closed": true
},
"cubeNetworkConstraints": {
"closed": false,
"cubeNetworks": [
{
"relationshipType": "exp:madeUpRelationship",
"minNetworks": 1
}
]
},
"cubeProperties": {
"requiredProperties": [
"exp:secondMadeUpProperty"
]
}
}
]
If a cube is defined with a cubeType of exp:myCubeType (the cube type above) then the cube must conform to the constraints defined in exp:myCubeType.
The coreDimensions set MUST only contain QNames of core dimensions: xbrl:concept, xbrl:period, xbrl:entity, xbrl:unit, or xbrl:language (oimte:invalidCoreDimension).
The coreDimensions set MUST NOT contain duplicate dimension QNames. oimte:duplicateItemsInSet
The coreDomainClasses set MUST only contain QNames of core domain classes: xbrl:conceptDomain, xbrl:entityDomain, and xbrl:unitDomain (oimte:invalidCoreDomainClass).
When baseCubeType is specified and the base cube type defines coreDimensions, the derived cube type coreDimensions MUST be a subset of the base cube type's coreDimensions (oimte:coreDimensionsExpansion).
This object defines the taxonomy defined dimensions that are allowed in the cube type using the dimension constraint object. This object is defined with the QName xbrl:dimensionsAllowedObject.
allowed (non-empty set of xbrl:dimensionConstraintObject objects / array)baseCubeType is specified and allowed is not defined in the derived cubeType, the derived type inherits the base type's dimension constraints unchanged. Only when allowed is explicitly defined does the derived type override the base type's dimension constraints.closed (xs:boolean / boolean)allowed is absent) If true, only dimensions listed in allowed can be used. If false, other taxonomy defined dimensions are permitted. Defaults to the value of the baseType cube if defined otherwise it is false.
When baseCubeType is specified and the base cube type has cubeDimensionConstraints.closed set to true, the derived cube type MUST NOT set it to false. oimte:invalidDimensionClosedExpansion
When baseCubeType is specified, the derived cube type MUST NOT add dimensions to cubeDimensionConstraints.allowed that would violate the base cube type's closed constraint. oimte:invalidDimensionAddition
A dimension constraint object in the cubeDimensionConstraints.allowed array can specify constraints on dimensions without referencing a specific dimension. This allows defining rules like "any typed dimension with dataType xs:token" or "any explicit dimension with a minimum count of 1". This object is defined with the QName xbrl:dimensionConstraintObject.
The dimension constraint object has the following properties:
dimensionName (xbrl:dimensionObject reference / string):type (xs:string / string)dataType (xbrl:dataTypeObject reference / string)type property is absent or the type property has a value of "typed".maxDimensions (xs:nonNegativeInteger / number)minDimensions (xs:nonNegativeInteger / number)0 if not defined.domainClassProperties (xbrl:propertiesConstraintObject / object)When multiple dimension constraints are present, each dimension in the cube must satisfy at least one allowed criterion. A criterion with minDimensions greater than zero requires that at least that many dimensions match it. minDimensions and maxDimensions constrain how many dimensions may match a given criterion. When closed is false (the default), dimensions that match no criterion are still permitted; when closed is true, every dimension must match at least one criterion.
When a dimension constraint object includes a dimensionName property, it MUST resolve to a valid taxonomy defined dimension object. (oimte:invalidDimensionConstraintDimensionName)
The value of minDimensions cannot be greater than the value of maxDimensions (oimte:invalidCubeConstraints)
When a dimension constraint object includes a dimensionName property, it MUST NOT include another dimensionName property with the same dimension QName value. oimte:duplicateDimension
When a dimension constraint object includes a dataType property, the type property MUST be set to "typed". oimte:invalidDimensionDataTypeProperty
When baseCubeType is specified and a dimension constraint in the base specifies a minDimensions value, the derived cube type MUST NOT reduce that value for the same dimension constraint. oimte:invalidDimensionRequirementRelaxation
When baseCubeType is specified and a dimension constraint in the base specifies a maxDimensions value, the derived cube type MUST NOT increase that value for the same dimension constraint. oimte:invalidDimensionRequirementRelaxation
When baseCubeType is specified and a dimension constraint in the base specifies a dataType, the derived cube type MUST use the same or a more restrictive dataType for that dimension. oimte:invalidDataTypeExpansion
The propertiesConstraint object defines the properties that are allowed or required on objects. This object is defined with the QName xbrl:propertiesConstraintObject. The structure of this object is as follows:
requiredProperties (non-empty set of xbrl:propertyTypeObject references / array)allowedProperties (non-empty set of xbrl:propertyTypeObject references / array)allowedProperties property is defined, all properties listed in the requiredProperties property MUST be included in the allowedProperties set. The allowedProperties set can include additional properties that are not listed in requiredProperties. If the allowedProperties property is not defined, any property defined in the taxonomy can be used, including those listed in requiredProperties.A QName defined in the requiredProperties set MUST be included in the allowedProperties set of the propertiesConstraint object, if allowedProperties are defined. (oimte:requiredPropertyNotAllowed). If the allowedProperties set is not defined this error is not raised.
Property type QNames in requiredProperties and allowedProperties MUST resolve to valid property type objects. oimte:invalidObjectType
When baseCubeType is specified and the base cube type restricts cubeProperties.allowedProperties, the derived cube type MUST NOT add property types not permitted by the base. oimte:invalidPropertyExpansion
When baseCubeType is specified and the base cube type requires properties in cubeProperties.requiredProperties, the derived cube type MUST NOT exclude those required properties. oimte:invalidPropertyRequirementRelaxation (This can be achieved by reducing the allowed properties on the derived cube to exclude required properties.)
{
"name": "test:BaseCubeType",
"cubeProperties": {
"allowedProperties": [
"test:TestPropertyType1", "test:TestPropertyType2", "test:TestPropertyType3"
],
"requiredProperties": [
"test:TestPropertyType1", "test:TestPropertyType2"
]
}
},
{
"name": "test:DerivedCubeType",
"baseCubeType": "test:BaseCubeType",
"cubeProperties": {
"allowedProperties": [
"test:TestPropertyType1", "test:TestPropertyType3"
]
}
}
The cube network object defines the relationships that are allowed or required in a cube. This object allows a model author to restrict the use of cubeNetworks on a specific cube by setting the closed property to false. Only the networks defined in cubeNetworks set can then be defined on cubes of this type. If no cubeNetworks are defined then networks cannot be added to the cube.
The cube network object has an object type QName of xbrl:cubeNetworkObject.
cubeNetworks (non-empty set of xbrl:cubeNetworkConstraintObject objects / array)baseCubeType is specified and cubeNetworks is not defined in the derived cubeType, the derived type inherits the base type's network constraints unchanged. Only when cubeNetworks is explicitly defined does the derived type override the base type's network constraints.closed (xs:boolean / boolean)cubeNetworks can be used. If false, other cube networks are permitted. Defaults to false.When baseCubeType is specified and the base cube type has cubeNetworkConstraints.closed set to true, the derived cube type MUST NOT set it to false. oimte:invalidNetworkClosedExpansion
When baseCubeType is specified, the derived cube type MUST NOT add networks to cubeNetworkConstraints.cubeNetworks that would violate the base cube type's closed constraint. oimte:invalidRelationshipExpansion
A cubetype allows the networks that can be associated with a cube to be restricted or certain networks to be defined. Cubes without the appropriate networks may not convey the anticipated meaning. If the cubeNetworks property is not defined in the cube type object then any networks can be associated with the cube. If the cube network constraint object is defined then only networks that satisfy the constraints defined in the object can be associated with the cube, unless the closed attribute is set to false.
A cube network constraint object defines specific requirements for networks. The constraint can specify: - The relationship type that must be present - Constraints on the source (by QName, object type, or datatype) - Constraints on the target (by QName, object type, or datatype)
This object is defined with the QName xbrl:cubeNetworkConstraintObject.
relationshipType (xbrl:relationshipTypeObject reference / string)minNetworks (xs:nonNegativeInteger / number)0 if not defined.maxNetworks (xs:nonNegativeInteger / number)0, no networks of the specified relationship type can be associated with the cube.closed (xs:boolean / boolean)true, only networks that satisfy the specified constraints can be associated with the cube. If false, other networks are permitted. Defaults to the value of the baseType cube if defined otherwise it is false.source (xbrl:endpointConstraintObject / object)xbrl:endpointConstraintObject to define the constraints on the source of the relationship.target (xbrl:endpointConstraintObject / object)xbrl:endpointConstraintObject to define the constraints on the target of the relationship.The xbrl:endpointConstraintObject defines the constraints on the source or target of a relationship. This object is defined with the QName xbrl:endpointConstraintObject. This object has the following properties:
qname (xs:QName / string)objectType (xs:QName / string)xbrl:conceptObject)dataType (xbrl:dataTypeObject reference / string)For example, if defining a transaction type cube, a concept is required that indicates the date of the transaction. All transaction cubes must have this date. Because a transaction could have multiple dates, the model author defining the transaction cube type, specifies that the date of the transaction when aggregated and grouped, the group dimension is the period dimension. A user using a transaction type cube would then have to identify the date in the cube which represents the transaction date and relates it to the period dimension. See below.
{
"relationshipType": "xbrl:concept-refDimension",
"minNetworks":1,
"maxNetworks":1,
"source": { "dataType": "xs:dateTime" },
"target": { "qname": "xbrl:period" }
}
The same approach may be used for a product identifier concept in a transaction record. The model author may be required to link the product concept to a product dimension.
{
"relationshipType": "xbrl:concept-refDimension",
"minNetworks":1,
"maxNetworks":1,
"source": { "qname": "exp:ProductId" },
"target": { "qname": "exp:ProductDimension" }
}
If two or more cubeNetwork objects are defined with the same relationship type, only one of the endpoint constraints have to be met by the relationships defined. For example, if two cubeNetwork objects are defined with the same relationship type but different source and target constraints, a relationship of that type only has to satisfy one of the source and target constraint pairs to satisfy the cubeNetwork constraints.
When a cubeNetwork constraint object includes a relationshipType property, it MUST resolve to a valid relationship type object. oimte:invalidObjectType
When baseCubeType is specified and the base cube type restricts cubeNetworks, using the closed property of the xbrl:cubeNetworkObject, the derived cube type MUST NOT add allowed relationship types. oimte:invalidRelationshipExpansion
The cubeType 'test:DerivedCubeType' extends 'test:BaseCubeType' and adds relationship type 'test:TestRelationshipType2' to cubeNetworkConstraints.cubeNetworks, but this relationship was not in the base type's closed allowed list (minNetworks equal to 0). Derived cube types cannot expand the set of allowed networks.
{
"name": "test:BaseCubeType",
"cubeNetworkConstraints": {
"closed": true,
"cubeNetworks": [
{
"relationshipType": "test:TestRelationshipType1",
"minNetworks": 0,
"source": {
"qname": "xbrl:concept"
},
"target": {
"qname": "xbrl:entity"
}
}
]
}
},
{
"name": "test:DerivedCubeType",
"baseCubeType": "test:BaseCubeType",
"cubeNetworkConstraints": {
"cubeNetworks": [
{
"relationshipType": "test:TestRelationshipType2",
"source": {
"qname": "xbrl:concept"
},
"target": {
"qname": "xbrl:period"
}
}
]
}
}
When baseCubeType is specified and a network constraint in the base specifies source or target constraints, the derived cube type MUST use the same or more restrictive constraints. oimte:invalidRelationshipConstraintRelaxation
Restrictive constraints allow additional required relationships to be defined but restrict networks to the same or a narrower set. If no cubeNetwork objects are defined, this is not considered a relaxation of the constraints.
The cubeType 'test:DerivedCubeType' extends 'test:BaseCubeType' and reduces minNetworks for relationship type 'test:TestRelationshipType' from 1 to 0. Derived cube types cannot relax required network constraints.
{
"name": "test:BaseCubeType",
"cubeNetworkConstraints": {
"closed" :true,
"cubeNetworks": [
{
"relationshipType": "test:TestRelationshipType",
"minNetworks": 1,
"source": {
"qname": "xbrl:concept"
},
"target": {
"qname": "xbrl:entity"
}
}
]
}
},
{
"name": "test:DerivedCubeType",
"baseCubeType": "test:BaseCubeType",
"cubeNetworkConstraints": {
"closed" :true,
"cubeNetworks": [
{
"relationshipType": "test:TestRelationshipType",
"minNetworks": 0,
"source": {
"qname": "xbrl:concept"
},
"target": {
"qname": "xbrl:entity"
}
}
]
}
}
If the derived cube further restricts the base cube by making minNetworks with a value greater than 1, then no error is raised. The source and target must remain the same.
{
"name": "test:DerivedCubeType",
"baseCubeType": "test:BaseCubeType",
"cubeNetworkConstraints": {
"closed" :true,
"cubeNetworks": [
{
"relationshipType": "test:TestRelationshipType",
"minNetworks": 2,
"source": {
"qname": "xbrl:concept"
},
"target": {
"qname": "xbrl:entity"
}
}
]
}
}
When baseCubeType is specified, the derived cube type MAY add required relationship types to the xbrl:cubeNetworkConstraintObject but MUST NOT remove relationship types required by the base cube type (oimte:missingRequiredRelationship).
The value of minNetworks cannot be greater than the value of maxNetworks (oimte:invalidCubeConstraints).
In endpoint constraint objects, if qname is specified, it MUST resolve to a QName that exists in the model. oimte:invalidQNameReference
In endpoint constraint objects, if objectType is specified, it MUST resolve to a type of model objects. oimte:invalidObjectType
A cube object with a cubeType property, that specifies a cube type object which requires a specific property object, then that property must be defined for the cube object. If the property object is not defined the processor must raise an error ( oimte:missingRequiredCubeProperty).
If the cubeType property of a cube object defines domain class properties as requiredProperties, the domain class used for matching dimensions of the xbrl:dimensionConstraintObject on the cube object must have all the required domain class properties defined that are associated with the matching dimensions (oimte:missingRequiredDimensionProperty).
If the cubeDimensions set of a cube object contains a core dimension that is not included in the coreDimensions set of the cubeType defined for the cube, then the processor MUST raise an error (oimte:invalidCubeCoreDimension).
If the cubeDimensions set of a cube object contains a taxonomy defined dimension dimension that does not match the dimension, or (type and datatype) of at least one of the xbrl:dimensionConstraintObject objects in the allowed set of dimensions, for the matching cube type object, then the processor MUST raise an error (oimte:invalidTaxonomyDefinedDimension).
If the cubeNetworks array of a cube object references a relationship where the source.dataType or target.dataType of any of the relationships in the network do not match that of the xbrl:endpointConstraintObject, then the processor MUST raise an error (oimte:invalidCubeNetworkRelationship).
If the cubeNetworks array of a cube object references a relationship where the source.QName or target.QName of any of the relationships in the network do not match that of the xbrl:endpointConstraintObject, then the processor MUST raise an error (oimte:invalidCubeNetworkRelationship).
If the cubeNetworks array of a cube object references a relationship where the source.ObjectType or target.ObjectType of any of the relationships in the network do not match that of the xbrl:endpointConstraintObject, then the processor MUST raise an error (oimte:invalidCubeNetworkRelationship).
The group tree object defines a hierarchical structure of groups within a model. Unlike group content objects that link groups to networks and cubes, the group tree object organizes the groups themselves into a hierarchical tree structure.
A model can only have one group tree object. The root of the group tree MUST be xbrl:rootSource (oimte:invalidTaxonomyGroupSource).
When a model is imported using an import taxonomy object, the group tree object is imported, unless explicitly excluded using the excludeGroupTree property.
The group tree object has the following properties:
name (xs:QName / string)exp:SampleModelGroupTree).relationships (non-empty set of xbrl:relationshipObject objects / array)source can be either xbrl:rootSource (for top-level groups) or a group object QName. The target MUST always be a group object QName. The order of relationships is determined using the order property of the relationship object.The following example organises groups into a two-level hierarchy with the model as root:
{
"name": "exp:SampleTaxonomyGroupTree",
"relationships": [
{ "source": "xbrl:rootSource", "target": "exp:FinancialStatementsGroup", "order": 1 },
{ "source": "xbrl:rootSource", "target": "exp:NotesGroup", "order": 2 },
{ "source": "exp:FinancialStatementsGroup", "target": "exp:BalanceSheetGroup", "order": 1 },
{ "source": "exp:FinancialStatementsGroup", "target": "exp:IncomeStatementGroup", "order": 2 }
]
}
The relationship source property can be either a xbrl:rootSource QName or a group object QName. (oimte:invalidTaxonomyGroupSource)
All relationship target properties MUST reference group objects only. (oimte:invalidTaxonomyGroupTarget)
The group tree object uses the underlying relationship type xbrl:taxonomy-group which is implied and does not need to be explicitly specified in each relationship.
The group tree object is imported when a taxonomy is imported using an import taxonomy object. When the importObjects property is specified, the group tree object is included.
All relationships comprising the group tree object of a resolved model merge together all group tree objects defined in imported modules including the entry module, unless the group tree object is excluded on import. Ordering of the groups is based on the order property of the relationship object.
The layout section of the document addresses the requirements of the table linkbase functionality defined in the existing XBRL specification. This section of the document attempts to simplify aspects of the specification and keep the underlying functionality.
Reviewers of the document should read the section to identify functionality that exists in current specifications and is currently in use by XBRL users. If reviewers identify any discrepancies or areas for improvement, they should provide feedback accordingly.
The layout object has an object type QName of xbrl:layoutObject.
Layout component objects are the objects used to define a model.
The layout component objects are identified in the table below that shows all the possible layout objects that can be used and their associated QNames, and if they are referenceable.
| Object Type | Object QName | Referenceable | Description |
|---|---|---|---|
| Layout | xbrl:layoutObject | true | Defines all objects and properties of a layout. (see Section 12.2) |
| DataTable | xbrl:dataTableObject | true | Defines a two-dimensional structure based on the structure of a cube. (see Section 12.3) |
| Axis | xbrl:axisObject | false | Defines the dimensions associated with an axis and the labels and order that items appear on the axis. (see Section 12.4) |
| AxisHeader | xbrl:axisHeaderObject | false | Defines how headers for the table are defined using dimension domains and types. (see Section 12.5) |
| GridHeader | xbrl:gridHeaderObject | false | Defines how headers are defined in grid layouts (Does not use dimensions and domains). (see Section 12.6) |
| GridAxis | xbrl:gridAxisObject | false | Defines how dimension pairs are aligned with rows and columns in grid layouts. (see Section 12.7) |
| AxisItem | xbrl:axisItemObject | false | Defines a single dimension member pair for grid positioning. (see Section 12.8) |
| AxisGroup | xbrl:axisGroupObject | false | Groups multiple axis items together for organizational purposes in grid layouts. (see Section 12.9) |
| TablePoint | xbrl:tablePointObject | false | Maps dimension member pairs to specific grid cell coordinates in gridLayout tables. (see Section 12.10) |
A layout object represents all layout objects.
The properties of the layout object are as follows:
name (xs:QName / string)name is a QName that uniquely identifies the layout object.tableConstruction (xs:string / string)topDown.
dataTables (non-empty ordered set of xbrl:dataTableObject objects / array)The data table can be one of two types. The first is a gridLayout type that uses explicit grid positioning with tablePoints to define the layout of facts in the table. The second is a cubeLayout type that uses traditional cube-based rendering with axes to define how dimensions are mapped to the X, Y and Z axes of the table. The tableType property of the dataTable object defines which type of table is being defined and how the structure of the table is defined.
In a gridLayout format the values appearing in a column do not have to have consistent dimensions for that column. In a cubeLayout the dimensions associated with a column or a row have to be consistent across the entire row or column. In a cubeLayout all the values in a selected column (or row)will have the same number of dimension members, and the dimensions used will be the same across the entire column (or row). In a gridLayout there is no requirement for the dimensions of values in a column or row to be consistent. The dimensions of values in a column or row can vary across the column or row.
In a gridLayout the specification includes objects to associate dimension pairs to specific grid cells. In a cubeLayout the specification includes objects to associate dimensions to specific axes and to define the order of dimensions on the axes.
The data table structure flattens one or more dimensions onto the axis of a table. The data table object defines how each cube dimension is related to the data table axis, the order that dimensions appear and where subtotals appear. The facts that appear in the data table are dictated by the constraints defined on the cube.
For cubes with typed dimensions the order of the typed dimension values is determined based on the typedSort attribute of the cube dimension object. If a typed dimension has no typedSort attribute defined the order is processor specific.
name (xs:QName / string)name is a QName that uniquely identifies the data table object.tableType (xs:string / string)cubeName (xbrl:cubeObject reference / string)cubeName is a QName that identifies the cube associated with the data table. The cube is to used to filter the data available in the dataTable. If no cubeName is provided then all facts that match the dimensions on the xAxis, yAxis and zAxis are included in the dataTable. (see Section 5.9)xAxis (xbrl:axisObject / object)yAxis (xbrl:axisObject / object)zAxis (xbrl:axisObject / object)tablePoints (non-empty ordered set of xbrl:tablePointObject objects / array)gridLayout tableType to define explicit positioning of facts in the table grid. Each tablePoint specifies a row, column, and the dimension-member pairs for that cell. (see Section 12.10)
The following example defines a cube-layout table for a balance sheet with concept on the y-axis (using a presentation network) and period on the x-axis:
{
"name": "exp:BalanceSheetTable",
"tableType": "cubeLayout",
"cubeName": "exp:BalanceSheetCube",
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"axisNetwork": "exp:BalanceSheetPresentation",
"labelType": "xbrl:label",
"language": "en"
}
]
},
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:period",
"totalLocation": "end"
}
]
}
}
At least one axis MUST be specified (xAxis, yAxis, or zAxis). A data table can have any combination of these axes.
The same dimension MUST not be defined more than once on a given axis.
The same dimension MUST not be defined on more than one axis.
axisHeaders (non-empty ordered set of xbrl:axisHeaderObject objects / array)gridAxis is not specified) An ordered set of axisHeader objects that define the dimensions and labels for the axis. Each axisHeader object specifies a dimension, its members, and how they are displayed. (see Section 12.5)gridHeaders (non-empty ordered set of xbrl:gridHeaderObject objects / array)axisLabelsGroup (object)gridAxis (object)axisHeaders is not specified) Grid axis configuration for aligning dimension pairs with rows and columns in grid layouts. This object is used in gridLayout tables to define how dimensions map to specific grid positions. (see Section 12.7)
valueArray (array)range (object)interval (string): (required) The interval between range valuesstartValue (string): (required) The starting value of the rangestopValue (string): (optional) The ending value of the rangeprefix (string): (optional) A string prefix to prepend to each generated labelsuffix (string): (optional) A string suffix to append to each generated labelorder (string): (required) The order of the range values ("ascending" or "descending")
A cube-layout axis using a presentation network to determine the concept dimension members displayed on the axis:
{
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"axisNetwork": "exp:IncomeStatementPresentation",
"labelType": "xbrl:label",
"language": "en"
}
]
}
A grid axis with two explicit period items:
{
"gridAxis": {
"axisItems": [
{ "axisId": "C0010", "dimensions": { "xbrl:period": "2024-01-01/2024-12-31" } },
{ "axisId": "C0020", "dimensions": { "xbrl:period": "2023-01-01/2023-12-31" } }
]
}
}
Either axisHeaders or gridAxis must be specified. Both properties may be present, but at least one is required.
When axisHeaders is specified, the array must contain at least one axisHeader object.
When axisLabelsGroup is specified with a range, all range properties (dataType, interval, startValue, stopValue, and order) should be provided for proper label generation.
The axis header object defines the dimensions and labels for a specific header on an axis. An axisHeader object specifies a dimension, its members, and how they should be displayed. If a label cannot be found or does not exist for a member the member's QName local name is used as the label.
dimensionName : (xs:QName / qname)labelType : (xs:QName / qname)xbrl:label.language : (xs:string / string)xbrl:label language found.
axisMembers : (ordered set / array)axisNetwork or typedLabel) Ordered set of member QNames to display on this axis.axisNetwork : (xs:QName / qname)axisMembers or typedLabel) The QName that defines the hierarchy of axis members. The value can be the QName of a network object or a domain network object.dimensionOptional : (xs:boolean / boolean)totalLocation : (xs:string / string)groupDuplicateLabels : (xs:boolean / boolean)
typedLabel : (object)axisNetwork or axisMembers) Configuration for typed dimension labels with the following properties:use (string): (optional) Indicates the method for generating typed labels. Valid values are "value" (to use the typed value directly) or "formattedValue" (to use the formatted representation of the typed value).transform (QName): (optional) The transform to apply to typed values if the value of the use property is "formattedValue".range (object): (optional) The range object generates a label for the typed dimension. The range property cannot be used if the use or transform properties are defined. The range object for typed label values is the same as the structure as axisLabelsGroup range.
The language property of the axis header must be a valid BCP 47 language code, if specified. oimte:invalidLanguage.
Either AxisMembers or AxisNetwork are specified to define the members to display on the axis, unless using a typed dimension with typedLabel.
The grid header object defines the label for each column or row on a grid. A gridHeader object specifies the label for a specific column or row in a grid layout table.
label (xs:string / string)span (xs:integer / integer)rollUpLocation (xs:string / string)span value is defined.labelLevel (xs:integer / integer)The following example defines a spanning header that groups three quarterly columns under a "Current Year" label, with individual quarter sub-headers:
[
{ "label": "Current Year", "span": 3, "rollUpLocation": "start", "labelLevel": 2 },
{ "label": "Q1", "labelLevel": 1 },
{ "label": "Q2", "labelLevel": 1 },
{ "label": "Q3", "labelLevel": 1 }
]
The gridHeader object MUST only be used with a gridLayout tableType. oimte:invalidGridAxisTableType
The span of a grid header MUST be a positive integer. oimte:invalidGridHeaderSpan
The span MUST NOT be defined where the labelLevel has a value of 1. oimte:invalidGridHeaderSpanLevel
The gridHeader object MUST NOT be defined if the AxisHeader object has been defined, in the same Axis object.
The grid axis object defines how dimension pairs are aligned with rows and columns in grid layout tables. This object is used with gridLayout tableType to provide explicit control over dimension positioning in the grid.
axisItems (non-empty ordered set of xbrl:axisItemObject objects / array)axisGroups (non-empty ordered set of xbrl:axisGroupObject objects / array)
axisId (xs:string / string)
dimensions (object) "dimensions": {
"exp:TA": "exp:x112",
"exp:VG": "exp:x95"
}
dimensionName (xs:QName / string)axisNetwork (xs:QName / string)axisIds (ordered set / array)axisStart (xs:integer / integer)
The table point object maps dimension member pairs to specific grid cell coordinates in gridLayout tables. Each table point specifies a location in the grid and the dimension-member combinations that should appear in that cell.
gridCoordinates (object)xAxis (xs:string / string): (required) The x-axis (column) coordinate in the grid.yAxis (xs:string / string): (required) The y-axis (row) coordinate in the grid.zAxis (xs:string / string): (optional) The z-axis coordinate in the grid.dimensions (object)The gridCoordinates must specify at least xAxis and yAxis. oimte:missingGridCoordinates.
Each dimension QName in the dimensions map must correspond to a valid dimension defined in the model. oimte:invalidDimensionInTablePoint.
The following example shows how the dimension pair "exp:TB": "exp:x109" is added to the cell at coordinates (2, 8, 1) in a data table object.
"tablePoints": [
{
"gridCoordinates" :
{
"xAxis": 2,
"yAxis": 8,
"zAxis": 1
},
"dimensions" :
{
"exp:TB": "exp:x109"
}
}
],
If the xAxis is not defined the dimension member pair is applicable to all cells in row 8.
This section defines the mechanisms for modularising and extending models, including importing components from other models and defining final model objects that cannot be further extended.
A entry module serves as the entry point for processing. An entry module is the XBRL module that is not imported by any other XBRL module in the model.
An imported model is a model that is imported by another model using the import taxonomy object.
An importing model is a model that imports another model using the import taxonomy object.
The import taxonomy object defines the XBRL modules and objects that are included in the XBRL Model. The import taxonomy object is the mechanism for importing models and their components to create a XBRL Model. Only XBRL models or modules may be imported if they resolve to a valid XBRL Model. The import taxonomy object allows for the importation of entire XBRL models, sets of objects within models, or sets of objects grouped by their object type.
The import taxonomy object has the following properties:
xbrlModelName (xbrl:xbrlModelObject reference / string)importMapping property of the document info object of the importing module. The processor MUST retrieve and process the XBRL module at the specified URL to import the objects defined in the import taxonomy object.selections (non-empty set of xbrl:structuredSelectStatementObject objects / array)importObjects (non-empty set of model object references / array)xbrlModelName location property. Only the objects defined in the importObjects set and any referenced objects will be added to the XBRL Model. If the reference object is imported the object QNames defined in the forObjects property are not imported as a dependent objects.importObjectTypes (non-empty set of object type QName references / array)xbrlModelName location property. Examples include xbrl:conceptObject and xbrl:memberObject. All objects of the specified object types from the xbrlModelName and any referenced objects will be imported. This property can only reference object types that are a child of xbrl:xbrlModelObject. The importObjectTypes cannot include xbrl:importTaxonomyObject, xbrl:finalTaxonomyObject, xbrl:groupTreeObject, and xbrl:xbrlModelObject. If the label object is imported the object QName defined in the forObject property is not imported as a dependent object. If the group content object is imported the object QName defined in the forObject property is not imported as a dependent object. If the reference object is imported the object QNames defined in the forObjects property are not imported as a dependent objects.excludeLabels (xs:boolean / boolean)true, any labels attached to the objects comprising the XBRL Model deriving from the xbrlModelName property will be excluded from the XBRL Model. The default value is false.excludeGroupContents (xs:boolean / boolean)true, all group content objects defined in the imported model will be excluded from the XBRL Model. This does NOT exclude the reference objects themselves, only their grouping. The default value is false.excludeGroupTree (xs:boolean / boolean)true, the group tree defined in the imported model will be excluded from the XBRL Model. This does NOT exclude the group content objects themselves, only the hierarchical structure. The default value is false.bundleManifest (xbrl:bundleManifestObject / object)documentType of https://xbrl.org/PWD/2026-09-01/labelBundle) or a reference bundle module (a document with documentType of https://xbrl.org/PWD/2026-09-01/referenceBundle). The bundleManifest is inactive for the purpose of assembling a model — it is used only for informational purposes.
The importObjects property MUST include a referenceable object defined in the model (oimte:invalidQNameReference).
The importObjectTypes property MUST include a valid model object type. (oimte:invalidObjectType).
If the selection object defines an objectType property of xbrl:labelObject then the excludeLabels property of the import taxonomy object MUST NOT be true (oimte:conflictingImportProperties).
The select statement is defined as a structured select statement object. The selection property is a set of objects that define the selection criteria. Each object in the set represents a selection condition.
The property name is treated as an attribute of the object being tested. When the property value is an unprefixed name (e.g. periodType, dataType, nillable), it refers to a native attribute of the object. When the property value is a QName (i.e. it contains a namespace prefix, e.g. xbrla:balance), it refers to an entry in the object's properties array — specifically the value of the entry whose property key equals that QName. In both cases the resolved value is compared against the filter value using the specified operator.
"selections": [
{
"objectType": "xbrl:conceptObject",
"where": [
{ "property": "periodType", "operator": "==", "value": "instant" },
{ "property": "dataType", "operator": "==", "value": "xs:decimal" }
]
}
]
This statement supports importing labels for specific taxonomies, such as xbrl:labelObject, by including the xbrl:labelObject in the objectType property of the selection object.
{
"objectType": "xbrl:labelObject",
"where": [
{ "property": "language", "operator": "==", "value": "fr" }
]
}
In the structured select statement the logical AND is supported implicitly by listing multiple filter conditions in the where array. All conditions in the array must be satisfied for an object to match (i.e., they are combined with logical AND).
{
"objectType": "xbrl:conceptObject",
"where": [
{ "property": "periodType", "operator": "==", "value": "instant" },
{ "property": "xbrla:balance", "operator": "==", "value": "credit" }
]
}
Multiple select statements in the selections set are combined with logical OR. An object that matches any of the select statements will be included in the import. For example, the following selection statement would select all concept objects that have a periodType of "instant" and a balance of "credit", as well as any label objects with a language of "fr":
"selections": [
{ "objectType": "xbrl:conceptObject",
"where": [
{ "property": "periodType", "operator": "==", "value": "instant" },
{ "property": "xbrla:balance", "operator": "==", "value": "credit" }
]
},
{
"objectType": "xbrl:labelObject",
"where": [
{ "property": "language", "operator": "==", "value": "fr" }
]
}
]
The structured select statement has the following properties:
objectType (xs:QName / string)xbrl:conceptObject, xbrl:dimensionObject, etc.where (non-empty set of filter condition objects / array)property, operator, and value to be used for filtering the objects.The where property is a set of objects, where each object represents a filter condition. Each filter condition object has the following properties:
property (xbrl:propertyTypeObject reference or named object property / string)periodType) or a QName property that identifies the property, such as xbrla:balance. An unprefixed property name refers to the attributes of the object, while prefixed property names (QNames) refer to entries in the object's properties array.
operator (xs:string / string)==, !=, in, not in, contains, not contains, >, <, >=, <=. The operator is used to compare the property value with the specified value. The permitted operators depend on the property value type; see Appendix D for normative type-compatibility rules.
value (xs:anyType / string)If a selection entry references an unrecognized objectType processors MUST raise an error (oimte:invalidSelectionExpression).
If a selection entry specifies a property name not associated with the objectType processors MUST raise an error (oimte:invalidSelectionExpression).
If a selection entry specifies an unrecognized operator processors MUST raise an error (oimte:invalidSelectionExpression).
If a selection entry specifies an operator incompatible with the property value type (see Appendix D), processors MUST raise an error (oimte:invalidSelectionExpression).
The objectType property in the selection object MUST NOT be xbrl:importTaxonomyObject (oimte:invalidReferenceToImportTaxonomyObject).
Ordering operators (>, <, >=, <=) have no defined semantics for QNames and MUST NOT be used to compare properties that resolve to QNames (oimte:invalidSelectionExpression).
Substring operators (contains, not contains) have no meaningful semantics for QNames and MUST NOT be used be used to compare properties that resolve to QNames(oimte:invalidSelectionExpression).
The following table describes the available operators for structured select statements and how they operate against different property value types:
| Operator | String Behavior / Example | Number Behavior / Example | Boolean Behavior / Example | Date Behavior / Example | QName Behavior / Example | Notes |
|---|---|---|---|---|---|---|
| == | "name" == "Cash" (exact match) |
"value" == 100 |
"active" == true |
"date" == "2024-01-01" |
"dataType" == "xs:decimal" (semantic match) |
Equality; matches if property equals value. QName equality is semantic (namespace URI + local name), not string equality. |
| != | "name" != "Cash" |
"value" != 100 |
"active" != false |
"date" != "2024-01-01" |
"dataType" != "xs:decimal" |
Inequality; matches if property does not equal value. QName inequality is also semantic. |
| in | "name" in ["Cash","Inventory"] |
"value" in [100,150,175, 200] |
N/A | "date" in ["2024-01-01","2025-01-01","2024-06-30"] |
"dataType" in ["xs:decimal","xs:integer"] |
Matches if property is in the provided set. QName membership uses semantic equality. |
| not in | "name" not in ["Cash","Inventory"] |
"value" not in [100,200] |
N/A | "date" not in ["2024-01-01","2025-01-01","2024-06-30"] |
"dataType" not in ["xs:decimal","xs:integer"] |
Matches if property is not in the provided set. QName membership uses semantic equality. |
| contains | "name" contains "Cash" (substring) |
N/A | N/A | N/A | N/A | String contains substring; only for strings. |
| not contains | "name" not contains "Cash" |
N/A | N/A | N/A | N/A | String does not contain substring; only for strings. |
| > | "name" > "A" (lexical order) |
"value" > 100 |
N/A | "date" > "2024-01-01" |
N/A | Greater than; lexical for strings, numeric for numbers, chronological for dates. |
| < | "name" < "Z" (lexical order) |
"value" < 100 |
N/A | "date" < "2024-01-01" |
N/A | Less than; lexical for strings, numeric for numbers, chronological for dates. |
| >= | "name" >= "A" (lexical order) |
"value" >= 100 |
N/A | "date" >= "2024-01-01" |
N/A | Greater than or equal; as above. |
| <= | "name" <= "Z" (lexical order) |
"value" <= 100 |
N/A | "date" <= "2024-01-01" |
N/A | Less than or equal; as above. |
Notes:
>, <, >=, <= use lexical (alphabetical) comparison.xs:date value compared against a non-timezoned xs:date value yields an indeterminate result.contains/not contains are only meaningful for string properties.in/not in expects a set of possible values (a set, not a range).== and !=.==, !=, in, and not in. Comparison is semantic: two QNames are equal if they resolve to the same {namespace URI, local name} pair via the model's namespaces map. Ordering and substring operators MUST NOT be applied to QName properties (oimte:invalidSelectionExpression).See Appendix D for the normative formal grammar, type-compatibility table, and full list of constraints. If a selection expression violates any of these constraints, processors MUST raise (oimte:invalidSelectionExpression).
QName equality is to be evaluated semantically. Two QNames are equal if and only if they resolve to the same {namespace URI, local name} pair after expanding the prefix using the model's namespaces map. String equality of the serialised prefix:localName representation is insufficient.
Dependency resolution is the process of obtaining all objects that are referenced by QName in an XBRL module. Dependencies MAY be defined in the same XBRL module or a different XBRL module. Where dependencies are defined in a different XBRL module, they MUST be imported by an importTaxonomy object.
The importTaxonomy object defines objects to import into the XBRL Model. When the importObjects or importObjectTypes properties are not defined, all model objects identified by the xbrlModelName property are imported into the XBRL Model. The values of the properties name, frameworkName, version, and modelType are not imported. If the XBRL module identified by xbrlModelName property location contains importTaxonomy objects, the objects in the down stream XBRL modules are included in the XBRL Model. This identifies a "chain" of documents containing objects that are included in the XBRL Model.
The objects included in the model are scoped to each import taxonomy object.
Given an import of two modules where "B" imports "C". "C" defines two concepts "x" and "y", and the "importObjects" property specifies that only "x" is imported. An extension taxonomy "A" is defined that only imports "B". Only the concept "x" is available to the model "A".
If a relationship between "x" and "y" is defined in "A" a reference validation error will occur as "y" is scoped out of the model available to "A".
If "C" defined a relationship object between "x" and "y" called "r" and "B" imported "C" and the "importObjects" property specifies that only "r" is imported, then "y" is available to the model "A" as a referenced object and no validation error will occur.
When the importObjects or importObjectTypes properties are present, the processor MUST fully resolve (scope) the importTaxonomy at each level in the chain of the XBRL module found at the xbrlModelName property. All scoped objects at each level in the chain are available for dependency resolution. Objects not included in an importTaxonomy scope are not available in higher level imports if referenced by objects at a higher level.
A processor MUST fully resolve an imported model — following its own importTaxonomy chain and locating all referenced objects — before the importing model can validate QName references against it. This is because the importing model may depend on objects (e.g., a concept's datatype) that only exist after the imported module's own import chain has been traversed, as illustrated in the diagram below.
Example: selective import with transitive dependency resolution
The following three-file example illustrates depth-first import chain resolution. The entry-point model requests only n:con1 from concepts.json. That concept references a datatype defined in a separate file (types.json) that is imported by concepts.json, not directly by the entry point. The processor must fully resolve the entire chain before the filter is applied, so my:FinancialType is included as a referenced object even though it was never explicitly requested.
entry.json — the entry-point module that selectively imports one concept:
{
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": { "ext": "http://example.com/entry", "n": "http://example.com/concepts" },
"importMapping": { "n:Concepts": "./concepts.json" },
"documentNamespacePrefix": "ext"
},
"xbrlModel": {
"name": "ext:EntryModel",
"importedTaxonomies": [
{
"xbrlModelName": "n:Concepts",
"importObjects": ["n:Revenue"]
}
]
}
}
concepts.json — defines several concepts and imports its own type library:
{
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": { "n": "http://example.com/concepts", "my": "http://example.com/types" },
"importMapping": { "my:Types": "./types.json" },
"documentNamespacePrefix": "n"
},
"xbrlModel": {
"name": "n:Concepts",
"importedTaxonomies": [{ "xbrlModelName": "my:Types" }],
"concepts": [
{ "name": "n:Revenue", "dataType": "my:FinancialType", "periodType": "duration" },
{ "name": "n:Headcount","dataType": "xs:integer", "periodType": "duration" }
]
}
}
types.json — defines custom datatypes used by the concepts:
{
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": { "my": "http://example.com/types" },
"documentNamespacePrefix": "my"
},
"xbrlModel": {
"name": "my:Types",
"dataTypes": [
{ "name": "my:FinancialType", "baseType": "xs:decimal" },
{ "name": "my:RatioType", "baseType": "xs:decimal" }
]
}
}
The diagrams below show each level of resolution, followed by the final resolved model.
Resolve imported module and apply selection
Resolve nested import from selected module
Resolve dependencies of selected objects
Resolution synthetically restricts imported objects from types
"importMapping": {
"my:TypesModule": "types.json"
},
"importedTaxonomies":[
{
"xbrlModelName": "my:TypesModule",
"importObjects": ["my:FinancialType"]
}
]
"concepts": [
{
"name": "n:Revenue",
"dataType": "my:FinancialType"
}
]
Final Model
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/compiled",
"namespaces": { "ext": "http://example.com/entry",
"n": "http://example.com/concepts",
"my": "http://example.com/types"
}
},
"xbrlModel": {
"name": "ext:EntryModel",
"concepts": [
{
"name": "n:Revenue",
"dataType": "my:FinancialType"
}
],
"datatypes": [
{
"name": "my:FinancialType"
}
]
}
Resolution steps in order:
importObjects: ["n:Revenue"] and begins loading concepts.json (mapped from QName n:Concepts).concepts.json and applies the importObjects filter: n:Revenue is selected and n:Headcount is excluded.concepts.json, loading types.json.n:Revenue, the processor resolves its dataType dependency my:FinancialType; my:RatioType is excluded because it is not in scope.ext:EntryModel includes exactly n:Revenue and my:FinancialType.Label objects associated with an imported object are always included with the imported object (unless excludeLabels is set to true). Label objects can be defined in a model with a forObject QName that does not exist in the XBRL Model. The documentType of the model must be defined as a module when forObject QNames in the label object do not exist in the model. For an XBRL model where the documentType of the model is compiled the processor MUST return the error oimte:invalidQNameReference for any labels where the forObject does not exist in the model. The importObjectTypes property, can be used to import label objects. This may be done in those cases to side load labels in different languages into the XBRL Model.
Labels associated with objects in a model are excluded from being imported into the XBRL Model if the excludeLabels property is set to true. Labels not associated with any object are also excluded and do not bubble up the resolution chain.
Label objects not associated with any object in the XBRL Model MUST result in the error (oimte:invalidQNameReference).
There is no constraint prohibiting a model from importing another model that creates a cycle of imports. If during XBRL Model discovery a XBRL module imports a XBRL module that has already been imported the import statement is ignored if its properties of the import statement are the same. If it has different importObjects then the additional include objects are included in the XBRL Model.
Unresolved QName references associated with the forObject or forObjects property of label objects, reference objects and group content objects in imported modules do not raise an error or prevent the XBRL module from being imported.
A module of label objects can be defined in French to explain the meaning of concept objects defined in a base model. This "French label module" does not import the base model. It is a standalone bundle of French labels. The base model defining these concepts includes English labels. A French user defining their own model using the base model could import the base model and exclude the base English labels and separately import the French label module. When combined with the base model the French labels would bind with the base model objects.
During |dependency resolution|, processors MUST automatically remove orphaned QName references for labels, references, and groupContents after import processing has completed. If a label's forObject cannot be resolved, the label object is removed. If a group content object's forObject cannot be resolved, the group content object is removed. If a reference object has no remaining forObjects values in the set after removing missing QNames, that reference object is removed.
Label objects associated with an imported object are always included with the imported object (unless excludeLabels is set to true).
Importing a specific group object does not include any group content object associated with that groupName.
The group tree object is imported when a taxonomy is imported using an import taxonomy object. When the importObjects property is specified, the group tree object is included.
The QNames defined in the importObjects property MUST be defined in the resolved model identified using the xbrlModelName property (oimte:invalidQNameReference).
The importObjectTypes property MUST only contain QNames of top-level, array-valued model objects that are importable. The following categories of object type MUST NOT appear in importObjectTypes:
xbrl:cubeDimensionObject (nested inside a xbrl:cubeObject), xbrl:propertyObject (inline on any object).xbrl:finalTaxonomyObject, xbrl:groupTreeObject, xbrl:xbrlModelObject. xbrl:importTaxonomyObject (oimte:invalidReferenceToImportTaxonomyObject).Using any of these types in importObjectTypes MUST cause processors to raise (oimte:invalidImportObjectType), except for xbrl:importTaxonomyObject which MUST raise (oimte:invalidReferenceToImportTaxonomyObject).
The xbrlModelName QName looks up the corresponding entry in the importMapping property of the documentInfo object of the importing module, and retrieves the model from that URL. If no importMapping entry exists for the xbrlModelName, or if the model cannot be retrieved from the mapped URL, then an error MUST be raised (oimte:taxonomyNotFound).
If a model's documentType is defined as a https://xbrl.org/PWD/2026-09-01/compiled then the import taxonomy object MUST NOT be defined (oimte:importedTaxonomyDefinedForCompiledTaxonomy).
Implicit prefix resolution is the process of resolving prefix mismatches between an imported model and the importing model's namespaces map. The resolution process re-prefixes all objects from the imported model to use the importing model's alias.
When an imported model uses a prefix that is inconsistent with a prefix already declared in the importing model's namespaces map, the processor first attempts implicit prefix resolution: if the URI bound to the imported prefix is already declared under a different prefix in the importing model's namespaces map, the processor automatically re-prefixes all objects from the imported model to use the importing model's alias. No action by the model author is required in this case.
If the colliding URI is not declared under any prefix in the importing model's namespaces map, the processor MUST raise an error (oimce:multipleURIsForAlias). The model author resolves this by adding the imported URI under a chosen prefix to their namespaces map — implicit resolution then applies automatically on the next compilation.
If the colliding URI is declared under more than one prefix alias in the importing model's namespaces map, making the implicit lookup ambiguous, the processor MUST raise an error (oimce:multipleAliasesForURI). The model author resolves this by removing the duplicate prefix alias from their namespaces map.
The following diagrams illustrate the three prefix mismatch situations.
Situation 1 — Implicit resolution (no error required):
The imported prefix fin: collides with an existing fin: entry in the importing model's namespaces map, but the imported URI (finance.com/finance) is already declared under a different alias (finance:). The processor automatically re-prefixes all objects from the imported model using the existing finance: alias.
Situation 2 — Unresolved collision (oimce:multipleURIsForAlias):
The imported prefix fin: collides with an existing entry, and the imported URI (finance.com/finance) is not declared under any alias in the importing model's namespaces map. The processor cannot resolve the collision and raises an error. The model author must add the URI under a chosen prefix to their namespaces map.
Situation 3 — Ambiguous alias (oimce:multipleAliasesForURI):
The imported prefix fin: collides with an existing entry, and the imported URI (finance.com/finance) is declared under more than one alias (finance1: and finance2:) in the importing model's namespaces map. The implicit lookup is ambiguous and the processor raises an error. The model author must remove the duplicate alias.
The bundle manifest object provides metadata about a label bundle module or reference bundle module being imported. This object is defined in the bundleManifest property of an import taxonomy object and is used to describe the content of a bundle without affecting model assembly. The bundle manifest is inactive for the purpose of assembling a model — it is used only for informational purposes.
The bundle manifest object has the following properties:
language (non-empty set of xs:language / array)bundleTypes (non-empty set of xbrl:labelTypeObject or xbrl:referenceTypeObject references / array)The following example shows a bundleManifest object in an import taxonomy object:
{
"xbrlModelName": "fr:FrenchLabels",
"bundleManifest": {
"language": ["fr"],
"bundleTypes": ["xbrl:label", "xbrl:documentation"]
}
}
In this example, the import declares that the French label bundle provides labels in French for both the standard xbrl:label and xbrl:documentation label types.
The bundleManifest property MUST only be used when importing a model with a documentType of https://xbrl.org/PWD/2026-09-01/labelBundle or https://xbrl.org/PWD/2026-09-01/referenceBundle (oimte:invalidBundleManifestUsage).
The language property MUST contain at least one language code (oimte:invalidEmptySet).
The bundleTypes property MUST contain at least one label type QName (oimte:invalidEmptySet).
The final taxonomy object defines a set of object types that cannot be added to by an importing XBRL Model. The final taxonomy object is used to define model objects that are considered to be model final. A final model object indicates that the model objects defined in the final taxonomy object are not to be extended by any importing model. This is used for defining models that are not to be modified by other models.
The final taxonomy object has the following explicit properties:
finalTaxonomyFlag (xs:boolean / boolean)true, indicates that the model is final and cannot be extended by importing taxonomies. The default value is false. No objects can be added to the model except fact objects, footnote objects, and entity objects.finalObjectTypes (non-empty set of object type QName references / array)finalObjectTypes property are considered final. Object types not included in the set can be added by an importing model. (Assuming finalTaxonomyFlag is false). An importing model cannot include object types that are defined in the finalObjectTypes property. Examples of object types include xbrl:conceptObject, xbrl:domainNetworkObject and xbrl:networkObject. Networks used for footnotes are excluded from this restriction.finalObjects (non-empty set of model object references / array)finalObjects property are considered final. Objects not included in the set can be added to by an importing model. (Assuming finalTaxonomyFlag is false). Extensible objects are those objects that can be extended using the extends property such as domain network objects, network objects and reference objects. Networks used for footnotes are excluded from this restriction.selections (non-empty set of xbrl:structuredSelectStatementObject objects / array)The following example locks the entire model so no importing model can add or extend any taxonomy objects:
{
"finalTaxonomyFlag": true
}
The following example selectively locks only concept and member objects while allowing other objects to be extended:
{
"finalObjectTypes": [
"xbrl:conceptObject",
"xbrl:memberObject"
]
}
If the finalTaxonomyFlag property is set to true, no objects can be added to the model except fact objects, footnote objects and entity objects. (oimte:invalidFinalTaxonomyModification).
If the finalTaxonomyFlag is true, then only one importTaxonomy object is allowed, which cannot have any of the properties that allow for selective importing (i.e., importObjects, importObjectTypes, selections), the entire imported model must be included without modification. A final taxonomy can only import a single, complete model, and cannot be used to aggregate multiple models or selectively import components. (oimte:invalidFinalTaxonomyImport).
If an importing model adds an object of a type defined in the finalObjectTypes property, an error MUST be raised (oimte:invalidFinalTaxonomyObjectType).
If an importing model extends an object defined in the finalObjects property using an extends property, an error MUST be raised (oimte:invalidFinalTaxonomyObject).
When finalTaxonomyFlag is true, the finalObjectTypes, finalObjects, and selections properties are redundant and MUST NOT be present. The flag locks down all object types without qualification. If any of those properties are present alongside finalTaxonomyFlag: true, processors MUST raise the error (oimte:conflictingFinalTaxonomyProperties).
Conversely, when finalTaxonomyFlag is false or absent, then finalObjectTypes, finalObjects, and selections are the operative mechanism for specifying which objects or types are locked.
Definitional model-defined properties can be inherited between objects when one object is defined as a class and another object is defined as its subclass.
Model-defined properties can be added to an object using the property object. Model-defined properties of a class object are only inherited by a subclass object when the property type objects definitional property is true. These properties are referrred to as definitional model-defined properties.
.
Inheritance between two objects representing a class and a subclass can be defined in two ways:
xbrl:class-subclass relationship type (see Class subclass relationship) between two objects of the same object type. This relationship type is defined as a component of the specification and its sourceObjects and targetObjects are restricted to concept objects and domain class objects.baseType for a datatype object, baseCubeType for a cube object, and baseDomainClass for a domain class object.
The values of definitional model-defined properties of a subclass object MUST match the values of definitional model-defined properties of the class object. Definitional model-defined properties of the subclass will be inherited from the class object if not defined on the subclass object. A subclass object can have additional properties that are not defined by the class object, but it cannot have definitional model-defined properties values that are different than the definitional model-defined properties values of the class object.
Model-defined properties can also be added to an object using the xbrl:propertyValue-object relationship type. This supports adding model-defined properties to objects that are already defined. These properties cannot change an existing property or conflict with inherited properties from a class or conflict with the properties defined for a subclass of the object. Properties added using xbrl:propertyValue-object relationship type are inherited by subclasses of the object.
A xbrl:class-subclass relationship cannot be defined between two objects with conflicting values for the same property. (oimte:conflictingPropertyValues) For dataType objects, conflicting facet values are those that constitute an invalid restriction under XML Schema Part 2 §4.3 Constraining Facets. For example, a derived type MUST NOT specify a maxInclusive value that is greater than the maxInclusive of its base type. See Section 11.1 for the full list of XML Schema facet properties defined by this specification.
The namespace prefix object has an object type QName of xbrl:namespacePrefixObject.
When compiling a model from multiple modules that contain namespace prefix objects, only the namespace prefix object defined as a component of the entry module is retained in the model.
namespace (xs:anyURI / string)preferredPrefixes (non-empty ordered set of xs:NCName / array)xs:NCName for the namespace. The first item is the preferred prefix.The following example declares preferred prefixes for two namespaces:
"namespacePrefixes": [
{
"namespace": "https://xbrl.org/PWD/2026-09-01",
"preferredPrefixes": ["xbrl"]
},
{
"namespace": "https://example.com/taxonomy/PWD/2026-09-01",
"preferredPrefixes": ["exp", "example"]
}
]
Each namespace prefix object associates a namespace URI with an ordered set of preferred prefix strings. The first item in the preferredPrefixes collection is the preferred prefix. Entries in the namespacePrefixes array of the entry module MUST have unique namespace values (oimte:repeatedNamespaceDeclaration).
An implied object defines objects that are not explicitly declared in any imported XBRL module but are implicitly available in the model by virtue of their namespace. This allows for the inclusion of objects that are defined outside of the XBRL model.
An implied object can be used to define entities identified by a Legal Entity Identifier (LEI), without requiring explicit declarations of LEI entity objects in the model.
Implied objects can be used to define security identifiers such as ISIN, CUSIP, SEDOL, VALERON, Japanese Security Code (JSE), these can be represented using the appropriate member objects. The table below shows how different identifiers can be defined.
| namespace | Identifier | ObjectType | Domain Class |
|---|---|---|---|
| http://standards.iso.org/iso/17442 | Legal Entity Identifier (LEI) | xbrl:entityObject | xbrl:entityDomain |
| http://standards.iso.org/iso/6166 | ISIN | xbrl:memberObject | xbrlio:isinDomain |
| http://www.sec.gov/cik | CIK | xbrl:entityObject | xbrlio:cikDomain |
name (xs:QName / string)namespace (xs:anyURI / string)domainClass (xbrl:domainClassObject reference / string)objectType (object type QName reference / string)xbrl:memberObject orxbrl:entityObject.localNameConstraint (xbrl:dataTypeObject reference / string)The following example declares implied objects for Legal Entity Identifiers (LEI) using the ISO 17442 namespace. The localNameConstraint property references a datatype that defines the valid format for LEI codes.
"impliedObjects": [
{
"name": "xbrl:LegalEntityIdentifier",
"namespace" : "http://standards.iso.org/iso/17442",
"domainClass": "xbrl:entityDomain",
"objectType": "xbrl:entityObject",
"localNameConstraint": "xbrl:LEICdataType"
}
]
The objectType property of the implied object must be either xbrl:memberObject or xbrl:entityObject (oimte:invalidObjectTypeForImpliedObject).
Specification defined objects use object types to define types of model objects. The model objects defined in this section are defined in built-in models.
A complete summary table of specification defined relationship type objects is provided in the appendix: see Relationship types.
The parent-child relationship type is intended to describe presentational relationships between objects in models.
The relationship type object representing parent-child relationships is shown below.
{
"name": "xbrl:parent-child",
"uri": "http://www.xbrl.org/2003/arcrole/parent-child",
"cycles" : "none",
"allowedLinkProperties" : ["xbrl:preferredLabel"]
}
Fully conformant XBRL processors MUST report directed cycles in networks of parent-child relationships. (oimte:networkCyclic)
If a xbrl:preferredLabel property is provided, its value MUST match the QName value of a labelType property on a label object that is associated with the target object of the relationship. oimte:invalidObjectType
XBRL processors MAY use the value of the xbrl:preferredLabel property to select among multiple labels associated with the object. This capability is particularly useful when a concept appears in multiple locations of a XBRL Model. For example, the concept Cash may appear in the balance sheet and as the starting and ending balances in a cash flow statement. Each occurrence of the concept in a set of parent-child relationships MAY use this feature to indicate a different preferred label.
Future drafts of this specification will include functionality that provides similar functionality to that provided by Calculations v1.1.
Planned enhancements beyond Calculations v1.1 include:
xbrla:reconciliation property that explicitly indicates that a relationship is a reconciliation and thus does not follow the standard constraints between calculation weight and balance (xbrla:balance) attributes.The relationship type object representing xbrl:class-subclass relationship is shown below.
"relationshipTypes": [
{
"name": "xbrl:class-subclass",
"uri": "http://www.xbrl.org/2003/arcrole/class-subclass",
"cycles" : "none",
"sourceObjects" : ["xbrl:conceptObject", "xbrl:domainClassObject"],
"targetObjects" : ["xbrl:conceptObject", "xbrl:domainClassObject"]
}
]
The properties inherited by the subclass include the specification defined properties, properties added using the property object and properties assigned using the trait-concept relationship.
There are two mechanisms to associate a property with an object. A property can be added directly to objects using the property object or by assigning a property to a concept object using the trait-concept relationship.
When a property is added to a model object using the property object, the property is inherited by a subclass only when the definitional property of the property type is set to true.
When a property is assigned to a concept object using the trait-concept relationship, the property is inherited by all subclasses of that concept.
The definitional property allows properties to be added to an object that are not inherited by subclasses, while properties assigned using trait-concept relationships are always inherited by subclasses.
An importing model can add new property value assignments (new network relationships) to base objects using the property object and trait-concept relationships, but cannot change or remove existing property value assignments. This allows an importing model to add properties to a base object without modifying the base object, while ensuring that the properties of the base object are not removed by the importing model.
The values of concept object properties for the subclass MUST be a subset of the properties for the superclass (oimte:conflictingPropertyValues).
The defined properties of the subclass MUST be a subset of the class concept (oimte:conflictingPropertyValues).
The xbrl:class-subclass relationship MUST only be defined between objects of the same model component object type (oimte:invalidClassSubclassRelationshipObjectTypes).
The sourceObjects and targetObjects on the xbrl:class-subclass relationship type are constrained to xbrl:conceptObject and xbrl:domainClassObject.
"relationshipTypes": [
{
"name": "xbrl:general-special",
"uri": "http://www.xbrl.org/2003/arcrole/general-special",
"cycles" : "none",
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:conceptObject"]
}
]
No cycles are allowed in networks of general-special relationships. Fully conformant XBRL processors MUST detect and signal cycles in networks of general-special relationships.
The taxonomy-group relationship is used exclusively by the group tree object to organise groups into a hierarchical structure within a taxonomy. This relationship type allows groups to be arranged in a tree with the taxonomy itself as the root. A taxonomy that does not need a prescribed section ordering omits the groupTree.
The relationship type object representing taxonomy-group relationships is shown below.
"relationshipTypes": [
{
"name": "xbrl:taxonomy-group",
"uri": "https://xbrl.org/PWD/2026-09-01/arcrole/taxonomy-group",
"cycles" : "none",
"sourceObjects" : ["xbrl:xbrlModelObject", "xbrl:groupObject"],
"targetObjects" : ["xbrl:groupObject"]
}
]
Cycles are not allowed in taxonomy-group relationships. Fully conformant XBRL processors MUST detect and signal cycles in group tree object structures.
The taxonomy-group relationship type is only used within the group tree object and MUST NOT be used in network objects (oimte:taxonomyGroupInNetwork).
The source of a taxonomy-group relationship can be either a XBRL Model object or a group object. oimte:invalidTaxonomyGroupSource
The target of a taxonomy-group relationship MUST be a group object (oimte:invalidTaxonomyGroupTarget).
The xbrl:property-requiredProperty relationship type expresses a conditional co-requirement between two property type objects. When this relationship exists from a source property type to a target property type, any object that carries the source property MUST also carry the target property.
This allows model authors to declare, within a network, that the presence of one property implies the mandatory presence of another — without requiring both properties to be unconditionally required for all objects of that type.
The relationship type is defined as:
{
"name": "xbrl:property-requiredProperty",
"cycles": "none",
"sourceObjects": ["xbrl:propertyTypeObject"],
"targetObjects": ["xbrl:propertyTypeObject"]
}
If an object carries a property whose property type is the source of a xbrl:property-requiredProperty relationship, that object MUST also carry a property whose property type is the target of that relationship (oimte:missingRequiredProperty).
The following example shows a taxonomy that defines two custom property types — exp:deprecatedDate and exp:replacementConcept — and uses xbrl:property-requiredProperty to declare that any object carrying exp:deprecatedDate must also carry exp:replacementConcept. A concept exp:Revenues that sets exp:deprecatedDate without also setting exp:replacementConcept would raise oimte:missingRequiredProperty.
{
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": {
"exp": "http://example.com/taxonomy",
"xbrl": "https://xbrl.org/PWD/2026-09-01",
"xbrlr": "https://xbrl.org/PWD/2026-09-01/report",
"xs": "http://www.w3.org/2001/XMLSchema"
},
"documentNamespacePrefix": "exp"
},
"xbrlModel": {
"name": "exp:ExampleTaxonomy",
"version": "2026",
"propertyTypes": [
{
"name": "exp:deprecatedDate",
"dataType": "xs:date",
"allowedObjects": ["xbrl:conceptObject"]
},
{
"name": "exp:replacementConcept",
"dataType": "xs:string",
"allowedObjects": ["xbrl:conceptObject"]
}
],
"networks": [
{
"name": "exp:DeprecationCoRequirements",
"relationshipTypeName": "xbrl:property-requiredProperty",
"relationships": [
{
"source": "exp:deprecatedDate",
"target": "exp:replacementConcept"
}
]
}
],
"concepts": [
{
"name": "exp:Revenues",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"properties": [
{
"property": "exp:deprecatedDate",
"value": "2025-01-01"
}
]
}
]
}
}
In this example, exp:Revenues carries exp:deprecatedDate but not exp:replacementConcept. Because of the xbrl:property-requiredProperty relationship, this MUST raise oimte:missingRequiredProperty.
"relationshipTypes": [
{
"name": "xbrl:propertyValue-object",
"uri": "http://xbrl.org/oim/propertyValue-object",
"cycles" : "undirected",
"allowedLinkProperties" : ["xbrl:traitLinkType"],
"requiredLinkProperties" : ["xbrl:traitLinkType"],
"sourceObjects" : ["xbrl:memberObject"],
"targetObjects" : [
"xbrl:xbrlModelObject",
"xbrl:conceptObject",
"xbrl:headingObject",
"xbrl:memberObject",
"xbrl:dimensionObject",
"xbrl:entityObject",
"xbrl:networkObject",
"xbrl:groupObject",
"xbrl:cubeObject",
"xbrl:domainNetworkObject",
"xbrl:domainClassObject",
"xbrl:relationshipObject",
"xbrl:labelObject",
"xbrl:referenceObject",
"xbrl:entityObject",
"xbrl:factObject",
"xbrl:factSourceObject"
]
}
]
The propertyValue-object relationship properties for a subclass MUST NOT conflict with the domain specified by the enumerationDomain property of the property type object.
The following example shows the definition of a property type ActivityTypeTrait, the definition of a domain of possible QName values and the network object defining the relationship that assigns the property to the concept object ProceedsFromSaleOfProductiveAssets.
{
"propertyTypes": [
{
"name": "us-gaap-meta:ActivityTypeTrait",
"dataType": "xs:QName",
"enumerationDomain":"us-gaap-meta:ActivityTypeDomain",
"allowedObjects": [
"xbrl:conceptObject"
]
}
],
"domainNetworks": [
{
"name": "us-gaap-meta:ActivityTypeDomain",
"root": "xbrl:traitDomain",
"relationships": [
{
"source": "xbrl:traitDomain",
"target": "us-gaap-meta:InvestingActivity"
},
{
"source": "xbrl:traitDomain",
"target": "us-gaap-meta:FinancingActivity"
},
{
"source": "uxbrl:traitDomain",
"target": "us-gaap-meta:OperatingActivity"
}
]
}
],
"networks": [
{
"name": "exp:propertyConceptNetwork",
"relationshipTypeName": "xbrl:propertyValue-object",
"relationships": [
{
"source": "us-gaap-meta:InvestingActivity",
"target": "us-gaap:ProceedsFromSaleOfProductiveAssets",
"properties": [
{
"property" : "xbrl:traitLinkType",
"value" : "us-gaap-meta:ActivityTypeTrait"
}
]
}
]
}
]
}
The example shows the definition of the property of activity type, the definition of the domain of possible QName values and the network object defining the relationship.
The relationship xbrl:propertyValue-object is equivalent to the following:
{
"concepts": [
{
"name": "us-gaap:ProceedsFromSaleOfProductiveAssets",
"properties": [
{
"name": "us-gaap-meta:ActivityTypeTrait",
"value": "us-gaap-meta:InvestingActivity"
}
]
}
]
}
"relationshipTypes": [
{
"name": "xbrl:concept-refDimension",
"uri": "http://xbrl.org/oim/concept-refDimension",
"cycles" : "undirected",
"allowedLinkProperties" : ["xbrl:referenceCubeName"],
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:dimensionObject"]
}
]
The concept-refDimension relationship MUST be defined in a network that is referenced by at least one cube object.
The concept source property of the relationship (excluding xbrl:rootSource) MUST be defined in the concept domain used by the cube that is associated with the network object that the relationship is in. i.e. You cannot define this relationship and not have the concept in a cube that uses this relationship. (oimte:missingSourceForForeignKey)
The xbrl:referenceCubeName property can be added to the concept-refDimension relationship to indicate the cube of the reference dimension. When this is provided the processor MUST validate that the reference dimension exists on the cube (oimte:missingRefDimension). If the dimension exists the processor must validate that all fact values using the source concept in the cube exist either as object domain members on the reference dimension or if a typed dimension that at least one fact in the cube is defined with the typed dimension value. (oimte:missingForeignKey). If the xbrl:referenceCubeName is not provided no validation is performed and the relationship is used only for documentation purposes.
When the concept-refDimension relationship references the xbrl:period dimension, the relationship indicates that the value of the concept is a reference to a period duration and the processor MUST validate that all fact values using the source concept in the cube are contained within a period duration defined by facts in the cube. (oimte:invalidPeriodFactValue)
The concept-aggDimension relationship associates a concept object with a dimension object. The relationship describes the aggregation method associated with a dimension if the dimension is not present and how the values associated with the dimension members are aggregated or grouped. For numeric fact values this will be some form of aggregation such as a sum, count, first, average etc. The aggregation that is performed is defined as a property of the relationship.
"relationshipTypes": [
{
"name": "xbrl:concept-aggDimension",
"uri": "http://xbrl.org/oim/concept-aggDimension",
"cycles" : "none",
"allowedLinkProperties" : ["xbrl:aggregation"],
"requiredLinkProperties" : ["xbrl:aggregation"],
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:dimensionObject"]
}
]
The aggregation property and the datatype limiting the aggregation options is described as follows:
{
"propertyTypes": [
{
"name": "xbrl:aggregation",
"dataType": "xbrlr:aggregationType",
"allowedObjects": [
"xbrl:relationshipObject",
"xbrl:conceptObject",
"xbrl:dimensionObject"
]
}
],
"dataTypes": [
{
"name": "xbrlr:aggregationType",
"baseType": "xs:string",
"enumeration": ["sum", "count", "max", "min", "avg", "concat", "median", "first", "last", "stdev"]
}
]
}
The aggregation types are defined in the aggregation type section (see Section 14.2.2):
"relationshipTypes": [
{
"name": "xbrl:fact-inFact",
"uri": "http://xbrl.org/oim/fact-inFact",
"cycles" : "undirected",
"sourceObjects" : ["xbrl:factObject"],
"targetObjects" : ["xbrl:factObject"]
}
]
"relationshipTypes": [
{
"name": "xbrl:fact-inFootnote",
"uri": "http://xbrl.org/oim/fact-inFootnote",
"cycles" : "undirected",
"sourceObjects" : ["xbrl:factObject"],
"targetObjects" : ["xbrl:footnoteObject"]
}
]
"relationshipTypes": [
{
"name": "xbrl:fact-explanatoryFact",
"uri": "http://xbrl.org/oim/fact-explanatoryFact",
"cycles" : "undirected",
"sourceObjects" : ["xbrl:factObject"],
"targetObjects" : ["xbrl:factObject"]
}
]
The xbrl:property-dependentProperty relationship type defines a dependency between two property type objects. The source and target of the relationship MUST both be property type objects.
When an object reports the source property, that same object MUST also report the target property. The scope of this requirement is limited to the individual object on which the source property is defined; it does not apply globally to other objects.
This relationship type MAY allow the link property xbrl:propertyValue via allowedLinkProperties. When xbrl:propertyValue is present on a relationship, the target property is required only when the reported value of the source property on that object matches the xbrl:propertyValue specified on the relationship.
If an object violates this dependency, processors MUST raise oimte:missingDependentPropertyType.
"relationshipTypes": [
{
"name": "xbrl:property-dependentProperty",
"uri": "http://xbrl.org/oim/property-dependentProperty",
"cycles": "none",
"allowedLinkProperties": ["xbrl:propertyValue"],
"sourceObjects": ["xbrl:propertyTypeObject"],
"targetObjects": ["xbrl:propertyTypeObject"]
}
]
The specification uses XML base item simple types to constrain fact values and object property values. XBRL datatypes based on the 2003 XBRL v2.1 specification item types are not used.
Datatypes defined in the dtr-type registry have been moved to the base specification. These types are documented in the xbrlr:TypesTaxonomyModule model (see types.json).
Simple datatypes defined in the XML schema definitions [https://www.w3.org/TR/xmlschema-2/] are documented in the xs:XMLSchemaTypes model (see xs-types.json)
The nil reason domain defines the nil reason as a domain of members, that can have different labels depending on the language. The domain is defined in the xbrl namespace. The nil reason domain is defined below:
"domainNetworks" : [
{
"name": "xbrl:nilReasonType",
"root": "xbrl:nilReasonDomainClass",
"relationships": [
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:unknownNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:unavailableNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:withheldNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:immaterialNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:confidentialNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:redactedNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:notApplicableNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:pendingNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:notRequiredNilReason"},
{"source": "xbrl:nilReasonDomainClass", "target": "xbrl:otherNilReason"}
]
}
]
The domain can be extended so additional reasons for having a nil can be added using the extends property by referencing the domain.
The aggregation datatype defines the type of aggregation that is being represented. Possible values are sum, count, max, min, avg, concat, median, first, last, stdev. The aggregation datatype is defined below:
The values represented indicate what type of aggregation was performed rather than specific instructions on how to aggregate a number. For example the aggregation type may be used to indicate that a number of measurements were taken over an hour and the average value was reported for the hour.
"dataTypes": [
{
"name": "xbrlr:aggregationType",
"baseType": "xs:string",
"enumeration": ["sum", "count", "max", "min", "avg", "concat", "median", "first", "last", "stdev"]
}
]
The report attribute type defines the type of report attribute that is being represented. Possible values are reportDate, reportFilingDate, reportName, reportingEntity, reportingPeriod, reportIdentifier. THis datatype is used by the reportAttributeProperty to identify concepts that represent these common attributes associated with a report. This allows the concept to be linked to these common attributes without defining the concept that needs to be reported. This flexibility is desirable as the taxonomy creator may want to constrain the values that the concept can have, such as the report name must follow a specific pattern. The report attribute type is defined below:
"dataTypes": [
{
"name": "xbrlr:reportAttributeType",
"baseType": "xs:string",
"enumeration": ["reportDate", "reportFilingDate", "reportName", "reportingEntity", "reportingPeriod", "reportIdentifier"],
"openEnumeration": true
}
]
A core property type is a model-defined property type that is defined as part of the built-in model (see Appendix E). Core property types are common across models.
xbrl:weight is an xbrlr:weightType link property that specifies the multiplier of 1 or -1 applied to a contributing concept when computing an aggregate in a calculation relationship. It is required on xbrl:summation-item relationships and indicates how the source concept value contributes to the target. A weight of 1 indicates a positive contribution; a weight of -1 indicates a negative (subtracted) contribution.
The xbrl:weight property definition in the base taxonomy is:
{
"name": "xbrl:weight",
"dataType": "xbrlr:weightType",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
}
The xbrl:weight property is required on xbrl:summation-item relationships. See the Summation item relationship section for the full validation rules governing how xbrl:weight interacts with xbrla:balance and xbrl:reconciliation.
xbrl:reconciliation is a xs:boolean link property that specifies whether a contributing concept is included in the reconciliation of an aggregate in a calculation relationship.
The xbrl:reconciliation property definition in the base taxonomy is:
{
"name": "xbrl:reconciliation",
"dataType": "xs:boolean",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
}
The xbrl:reconciliation property is required on xbrl:summation-item relationships. See the Summation item relationship section for the full validation rules governing how xbrl:reconciliation interacts with xbrla:balance and xbrl:weight.
xbrl:preferredLabel is an xs:QName link property that specifies the preferred label for a network or relationship. It determines which label is displayed when multiple labels are available.
The xbrl:preferredLabel property definition in the base taxonomy is:
{
"name": "xbrl:preferredLabel",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject", "xbrl:networkObject"
]
}
The xbrl:preferredLabel property can be used on the xbrl:parent-child relationships. See the Parent-child relationship section. The xbrl:preferredLabel property can be used on a network object to indicate the preferred label that is applied to the entire network including root items. The xbrl:preferredLabel property defined on relationship objects overrides the xbrl:preferredLabel property used for the network object.
Defines the nil property on a fact object. The property identifies if a fact is nil. The nil property indicates a fact is nil and the reason why it is nil. The nil property defines a fact object value is not disclosed, and the reason why. This can be due to the fact being immaterial, confidential, unknown, or not yet available. A fact with a property of nil does not imply it is zero, however for calculation relationships it is excluded from the calculation. The nil property can only be used with concepts that have a nillable property that is not false. An error MUST be raised if a nil property is added to a fact with a nillable property of false oimte:factWithInvalidNilValue.
{
"name": "xbrl:nil",
"dataType": "xs:QName",
"enumerationDomain": "xbrl:nilReasonType",
"definitional": false,
"allowedObjects": [
"xbrl:factObject"
]
}
This property identifies the report date of a model, usually a xbrl:report model type. The property is a date value that indicates the report date.
{
"name": "xbrl:reportDate",
"dataType": "xs:dateTime",
"allowedObjects": ["xbrl:xbrlModelObject"]
}
This property identifies the report filing date of a model usually a xbrl:report model type. The property is a date value that indicates the report filing date.
{
"name": "xbrl:reportFilingDate",
"dataType": "xs:dateTime",
"allowedObjects": ["xbrl:xbrlModelObject"]
}
This property identifies the logical location of facts within the definition of the report. This allows a report creator to define where a fact is located in the report. The value of the property MUST be the QName of a group object.
{
"name": "xbrl:factLocation",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:factObject"
]
}
This property identifies the concepts in the model that represent common report meta-data. The datatype uses the xbrlr:reportAttributeType datatype to identify the type of report attribute that the concept represents. This is used if report attributes are captured as facts rather than as properties of the model object.
{
"name": "xbrl:reportAttribute",
"dataType": "xbrlr:reportAttributeType",
"definitional": false,
"allowedObjects": [
"xbrl:conceptObject"
]
}
Defines the semantic link property that can be used as a reference property.
{
"name": "xbrl:semanticLink",
"dataType": "xs:anyURI",
"definitional": true,
"allowedObjects": [
"xbrl:referenceObject"
]
}
Defines the default language for text-valued objects (such as footnotes and text-typed facts) within a model. When a text-valued object does not declare an explicit language, processors MAY inherit the language from the xbrl:defaultLanguage property of the enclosing XBRL model object. This property can only be used with model objects (xbrl:xbrlModelObject). The value MUST conform to the xbrl:languageType datatype, which accepts BCP 47 language tags such as "en" or "zh-Hans". Inherited values are not included in the canonicalized output of a model, but may be used by processors to determine the language of text-valued objects that lack an explicit language property.
{
"name": "xbrl:defaultLanguage",
"dataType": "xbrl:languageType",
"allowedObjects": [
"xbrl:xbrlModelObject"
]
}
The following locator-specific property types are pre-defined by this specification and are valid only within properties sets on fact value source objects and fact value anchor objects:
| Property QName | Datatype | Description |
|---|---|---|
xbrl:htmlElementId |
xs:string |
The HTML id attribute value of the element whose inner text content contributes to the fact value. |
xbrl:htmlEscape |
xs:boolean |
If true, the value is the escaped representation of markup; otherwise the concatenated descendant text content is used. Defaults to false. |
xbrl:htmlDataAttribute |
xs:string |
The name of a data-* HTML attribute on an element whose value contributes to the fact value (e.g. data-xbrl-ref). |
xbrl:pdfFormField |
xs:string |
The field name of a PDF form field whose content contributes to the fact value. |
xbrl:pdfPage |
xs:integer |
The 1-based page number within the PDF document. |
xbrl:pdfMcid |
xs:string |
The Marked Content Identifier (MCID) of a PDF content item. |
xbrl:pdfElementId |
xs:string |
The structure element identifier within the PDF document's logical structure tree. |
xbrl:pdfBBox |
xs:string |
A page bounding box given as four space-separated numbers x0 y0 x1 y1 in PDF user-space points (origin lower-left), identifying a rectangular region — typically an embedded image such as a chart or graph — that the fact value corresponds to. Used together with xbrl:pdfPage when the content is an image (or otherwise untagged) and therefore has no xbrl:pdfMcid. |
xbrl:pdfImageHash |
xs:string |
A content hash of an embedded PDF image (e.g. md5:<hex>) identifying the image independently of its placement. Used with, or in place of, xbrl:pdfBBox to locate an image robustly when bounding-box coordinates are unavailable or unstable across PDF regenerations. |
xbrl:pdfEscape |
xs:boolean |
If true, the value is the escaped representation of PDF content. Defaults to false. |
xbrl:tabularPath |
xs:string |
A tabular path expression identifying a row, column, or cell in a tabular source (CSV, spreadsheet). |
The following factLocatorType objects are defined by this specification. Model authors and implementers MAY define additional types for formats not listed here.
| QName | sourceMediaType |
Required properties | Optional properties |
|---|---|---|---|
xbrl:htmlElementLocatorType |
text/html |
xbrl:htmlElementId |
xbrl:htmlEscape |
xbrl:pdfFormFieldLocatorType |
application/pdf |
xbrl:pdfFormField |
— |
xbrl:pdfContentLocatorType |
application/pdf |
xbrl:pdfPage |
xbrl:pdfMcid, xbrl:pdfElementId, xbrl:pdfEscape |
xbrl:pdfImageLocatorType |
application/pdf |
xbrl:pdfPage, xbrl:pdfBBox |
xbrl:pdfImageHash |
xbrl:tabularLocatorType |
text/csv |
xbrl:tabularPath |
— |
This specification defines three standard cube types. These types enable clear identification of the nature of the reported data, facilitate closer alignment with tabular formats such as CSV, and allow XBRL processors to handle data appropriately based on its type.
The standard XBRL cube types are listed in the table below.
| dataset | CubeType | Concept Domain Required | Period Dimension Allowed | Unit Dimension Allowed | Entity Dimension Allowed | Taxonomy Defined Dimension |
|---|---|---|---|---|---|---|
| Report Data * | xbrl:reportCube | yes | yes | yes | yes | yes |
| Non permitted Data | xbrl:negativeCube | yes | yes | yes | yes | yes |
| Open | Open Cube | no | yes | yes | yes | yes |
The cube type object below defines the report cube.
{
"name": "xbrl:reportCube",
"coreDimensions": ["xbrl:concept", "xbrl:period", "xbrl:unit", "xbrl:entity","xbrl:language"],
"coreDomainClasses": ["xbrl:conceptDomain"]
}
A negative cube excludes facts from another cube using the excludeCube property of a cube object . Facts defined by a negative cube are not considered valid facts of a report. A negative cube excludes facts that would otherwise be included in a cube. A negative cube is identified with a cube type of xbrl:negativeCube.
To exclude facts from a cube object using the negative cube the facts must match the dimensional space.
The cube type object below defines the negative cube.
{
"name": "xbrl:negativeCube"
}
Facts in an open cube can be queried or referenced by referencing the QName of the open cube.
The concept dimension on an open cube does not have to define a concept domain. The absence of a concept domain will include all concepts within the cube.
The following shows the definition of an open cube in a taxonomy.
"cubes":[
{
"name": "exp:MyOpenCube",
"cubeDimensions": [
{
"dimension": "xbrl:concept"
},
{
"dimension": "xbrl:period",
"optional": true
},
{
"dimension": "xbrl:entity",
"optional": true
},
{
"dimension": "xbrl:unit",
"optional": true
}
]
}
]
Facts defined in a report that have a taxonomy defined dimension will not be included in the cube defined above.
The label types defined in the 2003 XBRL v2.1 specification labels continue to be supported and referenced using QNames rather than a URI.
The xbrl:core model defines all label types included in the XBRL v2.1 specification and label types defined in the link role registry. (See Appendix A.6)
The XBRL v2.1 specification references are supported and referenced using QNames. References can be used on any object with a QName. The allowedObjects property can be used to constrain a reference type to a particular object type.
The xbrl:core model defines all reference types included in the XBRL v2.1 specification. (See Appendix A.7)
The xbrl:core model includes all core reference types.
The semantic reference is added to link to semantic definitions defined as an IRI. The semantic reference can be used on any object, and requires that a semanticLink property identifies the IRI of the object being defined.
"referenceTypes" : [
{
"name": "xbrl:semanticRef",
"requiredProperties" : [
"xbrl:semanticLink"
]
}
]
To identify that a concept is a birthday the semanticLink value could be https://schema.org/birthDate
"references" : [
{
"name" : "exp:BirthDateRef",
"forObjects": ["exp:DirectorBirthDate", "exp:CEOBirthDate"],
"referenceType": "xbrl:semanticRef",
"language": "en",
"properties": [
{
"property" : "xbrl:semanticLink",
"value" : "https://schema.org/birthDate"
}
]
}
]
The lei namespace (http://standards.iso.org/iso/17442) is an implied object namespace. A QName of the form lei:_localname_ resolves to an entity object identified by the Legal Entity Identifier equal to localname. No explicit entity object definition is required in any imported XBRL module.
The implied object definition is as follows:
"impliedObjects": [
{
"name": "xbrl:LegalEntityIdentifier",
"namespace" : "http://standards.iso.org/iso/17442",
"domainClass": "xbrl:entityDomain",
"localNameConstraint": "xbrl:LuhnMod-97-10-Checksum"
}
]
The local name of a lei: QName MUST conform to the syntax and checksum rules defined in ISO 17442. Specifically, it MUST be a 20-character string consisting of exactly 18 alphanumeric characters followed by 2 decimal check digits computed using the Luhn mod-97-10 algorithm. If the local name fails the ISO 17442 checksum, a processor MUST raise oimte:invalidLEILocalName (oimte:invalidLEILocalName).
529900VVQ4470YJ67K26 is valid because its numeric expansion passes this check. Tools and libraries for LEI validation are widely available.
The instant-inflow relationship type is intended to describe the concepts that are durational inflows to instant concepts.
The relationship type object representing instant-inflow relationships is shown below.
"relationshipTypes": [
{
"name": "xbrla:instant-inflow",
"uri": "http://xbrl.org/oim/instant-inflow",
"cycles" : "undirected",
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:conceptObject"]
}
]
Only undirected cycles are allowed in networks of instant-inflow relationships. Fully conformant XBRL processors MUST detect and signal directed cycles in networks of instant-inflow relationships.
The source concept object MUST have a periodType property with a value of instant (oimte:conceptPropertiesInconsistentWithRelationship).
The target concept object MUST have a periodType property with a value of duration (oimte:conceptPropertiesInconsistentWithRelationship).
The target and source concept objects MUST have a xbrla:balance property with the same value if both concepts report a xbrla:balance property (oimte:conceptPropertiesInconsistentWithRelationship).
The instant-outflow relationship type is intended to describe the concepts that are durational outflows from instant concepts.
The relationship type object representing instant-outflow relationships is shown below.
"relationshipTypes": [
{
"name": "xbrla:instant-outflow",
"uri": "http://xbrl.org/oim/instant-outflow",
"cycles" : "none",
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:conceptObject"]
}
]
Only undirected cycles are allowed in networks of instant-outflow relationships. Fully conformant XBRL processors MUST detect and signal directed cycles in networks of instant-outflow relationships.
The source concept object MUST have a periodType property with a value of instant (oimte:conceptPropertiesInconsistentWithRelationship).
The target concept object MUST have a periodType property with a value of duration (oimte:conceptPropertiesInconsistentWithRelationship).
The target and source concept objects MUST have a xbrla:balance property with different values if both concepts report a xbrla:balance property (oimte:conceptPropertiesInconsistentWithRelationship).
"relationshipTypes": [
{
"name": "xbrla:instant-accrual",
"uri": "http://xbrl.org/oim/instant-accrual",
"cycles" : "undirected",
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:conceptObject"]
}
]
Only undirected cycles are allowed in networks of instant-accrual relationships. Fully conformant XBRL processors MUST detect and signal directed cycles in networks of instant-accrual relationships.
The source concept object MUST have a periodType property with a value of instant (oimte:conceptPropertiesInconsistentWithRelationship).
The target concept object MUST have a periodType property with a value of duration (oimte:conceptPropertiesInconsistentWithRelationship).
The target and source concept objects MUST have a balance property (oimte:conceptPropertiesInconsistentWithRelationship).
"relationshipTypes": [
{
"name": "xbrla:instant-contra",
"uri": "http://xbrl.org/oim/instant-contra",
"cycles" : "undirected",
"sourceObjects" : ["xbrl:conceptObject"],
"targetObjects" : ["xbrl:conceptObject"]
}
]
The target and source concept objects MUST have a balance property (oimte:conceptPropertiesInconsistentWithRelationship).
The value of the balance attribute of each concept MUST NOT be the same (oimte:conceptPropertiesInconsistentWithRelationship).
The source concept object and target concept object MUST have a periodType property with a value of instant (oimte:conceptPropertiesInconsistentWithRelationship).
The balance datatype defines the type for a balance as a string with a value of credit or debit. The balance datatype is defined below:
"dataTypes" : [
{
"name": "xbrla:balanceType",
"baseType": "xs:string",
"enumeration": ["debit", "credit"]
}
]
Defines the balance property that can be used to identify the balance of a concept. The balance property indicates if the concept is a debit or credit balance.
{
"propertyTypes": [
{
"name": "xbrla:balance",
"dataType": "xbrla:balanceType",
"definitional": true,
"allowedObjects": [
"xbrl:conceptObject"
]
}
]
}
Indicates the sampling or measurement interval for a time-series domain. The value MUST conform to the xs:duration datatype (e.g. ISO 8601 durations such as PT1H, P1D) The property MAY be added to a domain class object to describe the frequency at which observations are measured or aggregated.
{
"propertyTypes": [
{
"name": "xbrla:intervalOfMeasurement",
"dataType": "xs:duration",
"definitional": false,
"allowedObjects": [
"xbrl:domainClassObject"
]
}
]
}
xbrla:timeSeriesCube)xbrla:timeSeriesType — indicates whether the series is Raw or Aggregated.xbrl:aggregation - indicates the type of aggregation performed if the value of xbrla:timeSeriesTypeis Aggregated.xbrla:intervalConvention — indicates whether an interval value refers to the StartTime, EndTime, or other convention; used to interpret the timestamp associated with a sampled value.timeSeriesCube the intervalOfMeasurement property is required. This is enforced by the cube type object for a timeSeriesCube. Non-normative example
{
"domainClasses": [
{
"name": "exp:TimeSeriesPeakDemandRoot",
"allowedDomainItem" : "xs:dateTime",
"properties": [
{"property": "xbrla:intervalOfMeasurement","value" : "PT1H"},
{"property": "xbrla:timeSeriesType","value" : "Aggregated"},
{"property": "xbrl:aggregation","value" : "max"},
{"property": "xbrla:intervalConvention","value" : "StartTime"},
{"property": "xbrla:completeTimeSeries","value" : true }
]
}
]
}
xbrla:timeSeriesType and xbrla:intervalOfMeasurement together so consumers can determine whether facts represent raw samples or aggregated summaries and how to roll-up or downsample data.Indicates whether a typed time-series dimension represents raw samples or aggregated values. Allowed values are Raw and Aggregated. The property MUST be included as a property of a typed dimension object when used on a xbrla:timeSeriesCube.
{
"propertyTypes": [
{
"name": "xbrla:timeSeriesType",
"dataType": "xbrla:timeSeriesDataType",
"definitional": false,
"allowedObjects": [
"xbrl:domainClassObject"
]
}
]
}
Raw indicates the facts are individual samples taken at the declared intervalOfMeasurement.
Aggregated indicates the facts are aggregation results computed over the declared interval (for example hourly maxima or daily sums).
Consumers use this flag to decide whether to treat facts as observations or pre-computed aggregates.
If the property is not defined on a time series dimension the default value is Aggregated.
xbrla:timeSeriesCube).xbrla:timeSeriesType is has a value of Aggregated without an accompanying xbrl:aggregation property, processors MUST raise an error oimte:missingDependentPropertyType.Non-normative example (based on exampleTaxonomy.json):
{
"domainClasses": [
{
"name": "exp:TimeSeriesPeakDemandRoot",
"allowedDomainItem" : "xs:dateTime",
"properties": [
{"property": "xbrla:intervalOfMeasurement", "value": "PT1H"},
{"property": "xbrla:timeSeriesType", "value": "Aggregated"},
{"property": "xbrl:aggregation", "value": "max"}
]
}
]
}
Indicates how a timestamp associated with a sampled or aggregated time-series value is to be interpreted relative to the declared measurement interval. Possible values are StartTime or EndTime. The property MAY be added to a dimension object used as the typed dimension of a xbrla:timeSeriesCube. If no value is provided the default value is StartTime.
{
"propertyTypes": [
{
"name": "xbrla:intervalConvention",
"dataType": "xbrla:intervalConventionType",
"definitional": false,
"allowedObjects": [
"xbrl:domainClassObject"
]
}
]
}
2025-09-01T00:00Z with StartTime and an interval PT1H denotes the hour beginning at midnight).xbrla:timeSeriesCube.xbrla:intervalOfMeasurement — the sampling or aggregation interval (e.g., PT1H).xbrla:timeSeriesType — indicates whether facts are Raw samples or Aggregated values.xbrla:intervalConvention appears on a non-time-series or on a non-date/time typed dimension, processors MUST raise an error. oimte:intervalConventionOnNonTimeSeriesDimensionxbrla:intervalConvention is present without an accompanying xbrla:intervalOfMeasurement, processors MUST raise an error oimte:missingDependentPropertyType.intervalConvention values, processors MUST apply the stated convention to interpret timestamps before alignment; mismatches SHOULD be signalled to the user.{
"domainClasses": [
{
"name": "exp:TimeSeriesPeakDemandRoot",
"allowedDomainItem" : "xs:dateTime",
"properties": [
{"property": "xbrla:intervalOfMeasurement", "value": "PT1H"},
{"property": "xbrla:timeSeriesType", "value": "Aggregated"},
{"property": "xbrl:aggregation", "value": "max"},
{"property": "xbrla:intervalConvention", "value": "StartTime"}
]
}
]
}
intervalConvention together with intervalOfMeasurement and timeSeriesType to determine correct interpretation for alignment, roll-up and downsampling operations.A boolean property that indicates whether a time-series typed dimension MUST contain a fact for every interval defined by xbrla:intervalOfMeasurement across the applicable reporting span. Defaults to false.
{
"propertyTypes": [
{
"name": "xbrl:completeTimeSeries",
"dataType": "xs:boolean",
"definitional": false,
"allowedObjects": [
"xbrl:domainClassObject"
]
}
]
}
true, declares the series as complete so consumers can expect a value for every measurement interval (as defined by xbrla:intervalOfMeasurement) across the declared time span.allowPartialIntervals setiing on the dimension.xbrla:timeSeriesCube.xbrl:completeTimeSeries appears on a domain class object> that does not have an allowedDomainItem value that is date/time type, processors MUST raise an error. oimte:completeTimeSeriesOnNonTimeSeriesDimensionxbrl:completeTimeSeries is true and xbrla:intervalOfMeasurement is not present or not parseable, processors MUST raise an error. oimte:missingDependentPropertyTypexbrl:completeTimeSeries is true, processors MUST validate that for the covered time span (as implied by the cube's period constraints or the facts present) there exists a fact for every interval boundary (startTime unless otherwise specified by xbrl:intervalConvention) when interpreted using xbrl:intervalConvention. Missing facts for expected intervals MUST be reported as an error. oimte:incompleteTimeSeries.xbrla:intervalOfMeasurement, applying xbrla:intervalConvention, and comparing expected timestamps to reported facts (account for time zones and DST where relevant).Model authors may need to declare intervals that are intentionally excluded from completeness requirements (for example weekends or public holidays).
The string property xbrl:excludedIntervals excludes intervals from completeness and alignment checks. Recurrence rules based on RFC 5545 RRULE and EXDATE are used to exclude intervals from a time series.
- To exclude weekends use: "RRULE:FREQ=WEEKLY;BYDAY=SA,SU";
- T0 exclude holidays use EXDATE;VALUE=DATE:20241225,20251225,20261225,20271225,20281225;
{
"propertyTypes": [
{
"name": "xbrla:excludedIntervals",
"dataType": "xbrlr:excludedIntervalsSet",
"definitional": false,
"allowedObjects": [
"xbrl:domainClassObject"
]
}
]
}
Non-normative example:
{
"domainClasses": [
{
"name": "exp:TimeSeriesPeakDemandRoot",
"allowedDomainItem" : "xs:dateTime",
"properties": [
{"property": "xbrla:intervalOfMeasurement", "value": "PT1H"},
{"property": "xbrla:timeSeriesType", "value": "Aggregated"},
{"property": "xbrl:aggregation", "value": "max"},
{"property": "xbrla:completeTimeSeries", "value": true},
{"property": "xbrla:excludedIntervals", "value": ["RRULE:FREQ=WEEKLY;BYDAY=SA,SU", "EXDATE;VALUE=DATE:20241225,20251225,20261225"]}
]
}
]
}
xbrl:excludedIntervals is present, processors MUST treat intervals matching the rules as excluded from any completeness checks: missing facts inside those intervals MUST NOT be reported as errors for xbrl:completeTimeSeries. (oimte:missingIntervalExcluded)xbrla:intervalOfMeasurement when deciding excluded measurement boundaries.
This specification defines eight standard cube types. These types enable clear identification of the nature of the reported data, facilitate closer alignment with tabular formats such as CSV, and allow XBRL processors to handle data appropriately based on its type.
The standard cube types are listed in the table below.
| dataset | CubeType | Concept Domain Required | Period Dimension Allowed | Unit Dimension Allowed | Entity Dimension Allowed | Taxonomy Defined Dimension |
|---|---|---|---|---|---|---|
| Event | xbrla:eventCube | yes | no | no | no | One event dimension only |
| Journal entry | xbrla:journalCube | yes | no | no | no | One journal Dimension Only |
| Event Details | xbrla:eventDetailsCube | yes | no | no | no | Event Details Dimension Only |
| Reference Data | xbrla:referenceCube | yes | no | no | no | Reference Dimension Only |
| Time Series Data | xbrla:timeSeriesCube | yes | no | yes | yes | Must have a Timeseries dimension |
| Position Listing Data | xbrla:positionCube | yes | Instant Only | yes | yes | Must have a Reference Dimension |
The cube type object below defines the event cube.
{
"name": "xbrla:eventCube",
"coreDimensions": ["xbrl:concept"],
"cubeDimensionConstraints" : {
"allowed": [
{
"type": "typed",
"dataType": "xs:token",
"minDimensions" : 1,
"maxDimensions" : 1
}
],
"closed" : true
},
"cubeNetworkConstraints": {
"closed": false,
"cubeNetworks": [
{
"relationshipType": "xbrl:concept-refDimension",
"minNetworks" : 1,
"source": {
"dataType": "xs:dateTime"
},
"target": {
"qname": "xbrl:period"
}
}
]
}
}
The cubeType definition for an event cube specifies that an event cube must not have a period, entity or unit dimension and must have only one typed taxonomy defined dimension. The typed dimension represents the event key. The typed dimension is defined as a token to enure a unique event key. A dateTime type as multiple events can happen at the same time.
.
.
The event cube must define a network object that defines a date concept as the source and the period dimension as the target using the xbrl:concept-refDimension relationship. This relationship identifies which field in the event cube represents the dateTime of the event.
An event details cube allows the capturing of additional one to many details about an event.
The cube type object below defines the eventDetails cube.
{
"name": "xbrla:eventDetailsCube",
"coreDimensions": ["xbrl:concept"],
"cubeDimensionConstraints": {
"allowed": [
{
"type": "typed",
"minDimensions": 1
}
],
"closed": true
},
"cubeNetworkConstraints": {
"required": [
{
"type": "xbrl:concept-refDimension",
"source": {
"objectType": "xbrl:conceptObject"
},
"target": {
"objectType": "xbrl:dimensionObject"
}
}
]
}
}
An event details cube must contain a field that relates the event detail to the actual event dimension using the xbrl:concept-refDimension relationship.
An event details cube must include a typed dimension to uniquely identify the event details.
The journal cube is a specific type of event detail cube and the rules that apply to an event details cube also apply to a journal cube.
The cube type object below defines the journal cube.
{
"name": "xbrla:journalCube",
"baseCubeType": "xbrl:eventDetailsCube"
}
The journal entry cube has the same constraints as the event details cube.
In addition, the following constraints apply:
Each journal entry line item must be associated with only one concept object with a monetary datatype. The monetary value that is the journal value is identified using the concept-aggDimension relationship using the sum property. The value of aggregating the values of the dimension should always be zero. The aggDimension will always be the typed dimension of the cube.
The journal cube must contain a concept that is associated with the entity dimension using the xbrl:concept-refDimension relationship.
The journal cube must contain a concept that is associated with the concept dimension using the xbrl:concept-refDimension relationship.
A journal cube can only include the journal dimension and the concept core dimension.
The example below shows the networks that could be associated with a journal cube to identifiy which fields relate to the dimensions used in a report cube.
"networks":[
{
"name": "exp:conceptToDimensionNetwork",
"relationshipTypeName": "xbrl:concept-refDimension",
"roots": ["exp:JnlEntity","exp:JnlId","exp:Account"],
"relationships": [
{
"source": "exp:JnlEntity",
"target": "xbrl:entity",
},
{
"source": "exp:JnlId",
"target": "exp:EventDimension"
},
{
"source": "exp:Account",
"target": "xbrl:concept"
}
]
},
{
"name": "exp:conceptToAggNetwork",
"relationshipTypeName": "xbrl:concept-aggDimension",
"roots": ["exp:JnlAmount"],
"relationships": [
{
"source": "exp:JnlAmount",
"target": "exp:journalLineItemDimension",
"aggregation" : "sum"
}
]
}
]
The cube type object below defines the reference cube.
{
"name": "xbrla:referenceCube",
"coreDimensions": ["xbrl:concept"],
"cubeDimensionConstraints": {
"allowed": [
{
"type": "typed",
"minDimensions": 1,
"maxDimensions":1
}
],
"closed": true
},
"cubeNetworkConstraints": {
"closed": false,
"cubeNetworks": [
{
"relationshipType": "`xbrl:concept-refDimension",
"maxNetworks": 0,
"target": {
"qname" : "xbrl:period"
}
}
]
}
}
A reference cube MUST NOT have a period, entity or unit dimension. oimte:invalidCubeCoreDimension
A reference cube MUST have only one typed taxonomy defined dimension. oimte:invalidTaxonomyDefinedDimension
A reference cube MUST NOT have a xbrl:concept-refDimension relationship with a target of xbrl:period oimte:invalidCubeRelationship
The cube type object below defines the time series cube.
{
"name": "xbrla:timeSeriesCube",
"coreDimensions": ["xbrl:concept", "xbrl:unit", "xbrl:entity"],
"cubeDimensionConstraints" : {
"allowed": [
{
"type": "typed",
"dataType": "xs:dateTime",
"minDimensions" : 1,
"maxDimensions": 1,
"domainClassProperties": {
"allowedProperties" : [
"xbrla:intervalOfMeasurement",
"xbrla:timeSeriesType",
"xbrl:aggregation",
"xbrla:intervalConvention",
"xbrla:completeTimeSeries",
"xbrla:excludedIntervals"
],
"requiredProperties": [
"xbrla:intervalOfMeasurement",
"xbrla:timeSeriesType"
]
}
}
],
"closed": true
}
}
A time series cube MUST have only one typed taxonomy defined dimension. oimte:invalidTaxonomyDefinedDimension
The taxonomy defined dimension defined on a time series cube MUST be a typed dimension of type xs:dateTime (oimte:invalidTaxonomyDefinedDimension).
The time series dimension MUST NOT include the period, entity and unit dimension. oimte:invalidCubeCoreDimension
The cube type object below defines the position cube:
{
"name": "xbrla:positionCube",
"coreDimensions": ["xbrl:period", "xbrl:entity", "xbrl:unit"],
"cubeDimensionConstraints": {
"allowed": [
{
"type": "typed",
"minDimensions": 1
}
],
"closed": false
}
}
The taxonomy defined dimension defined on a position cube MUST be a typed dimension. oimte:invalidTaxonomyDefinedDimension
Data source maps are defined as fact map objects referenced using a QName.
This fact map object is represented using the QName xbrl:xBRL-JSON. This fact map object defines the mapping of facts defined in an xBRL-JSON report to fact objects. The fact map object uses the standard xBRL-JSON fact objects and maps these objects to fact objects.
The xBRL-JSON fact map is referenced by a fact source. In the example below the fact source object ext:xBRLJsonInstance represents the collection of facts.
"factSources": [
{
"name": "ext:xBRLJsonInstance",
"factMapName": "xbrl:xBRL-JSON"
}
],
The SQName of the fact value object is mapped from the name (xs:NCName) of the xBRL-JSON fact object.
The dimensions of a fact defined in the xBRL-JSON specification correspond to the factDimensions object in the model as follows:
xbrl:conceptxbrl:periodxbrl:unitxbrl:entityxbrl:languageAll facts in an xBRL-JSON report with a dimensions.concept value of xbrl:note are mapped to footnote objects in the XBRL model. The value of dimensions.noteId is used as the name of the footnote object. The value of dimensions.language is used as the language of the footnote object. The value of the fact object in the xBRL-JSON document is used as the content of the footnote object.
The allowedDuplicates feature of xBRL-JSON values are mapped as follows:
none maps to duplicateFactsInModel with a value of no duplicatescomplete maps to duplicateFactsInModel with a value of complete duplicatesconsistent maps to duplicateFactsInModel with a value of consistent duplicatesall maps to duplicateFactsInModel with a value of inconsistent duplicatesThe SQName of the fact value object uses the SQName of its fact object with a _fv suffix appended to the local part provided that no fact value object in the model has the same SQName or QName, otherwise, a SQName should be used with a suffix of "_fvN" where N is the smallest positive integer that results in a value that is not the value of a SQName or QName in the model.
For example, if the fact SQName is ext:f1 the factValue SQName is ext:f1_fv.
A nil-valued fact with a value of null does not generate a fact value object in the model. A property of nilReasonType is added to the fact object with a value of unknownNilReason.
{
"name": "ext:f-49",
"factDimensions": {
"xbrl:concept": "ferc:AccruedAmortizationCarrierProperty",
"xbrl:entity": "cid:C000758",
"xbrl:period": "2025-01-01T00:00:00",
"xbrl:unit": "iso4217:USD"
},
"properties": [
{
"property": "xbrl:nil",
"value": "xbrl:unknownNilReason"
}
]
}
This map is represented using the QName xbrl:xBRL-XML. This fact map defines the mapping of facts defined in an xBRL-XML report to fact objects.
The xBRL-XML fact map is referenced by a fact source. In the example below the fact source object ext:getInstance represents the collection of facts.
"factSources": [
{
"name": "ext:getInstance",
"factMapName": "xbrl:xBRL-XML"
}
]
When mapping an XBRL 2.1 report a processor MUST report an error for facts or footnotes that do not meet the constraints defined in XML Mappings for the Open Information Model 1.0.
An XBRL 2.1 report is mapped to an xBRL-JSON report based on the mapping defined in XML Mappings for the Open Information Model 1.0. The xBRL-JSON format is mapped to the XBRL Model using the xBRL-JSON fact map.
This map is represented using the QName xbrl:inline-XBRL-1.1. This fact map defines the mapping of facts defined in an Inline XBRL 1.1 report to fact objects. The fact map uses the standard Inline XBRL 1.1 fact markups and maps these objects to fact objects with value source references to document sources when visible.
The fact map defines the mapping of footnotes defined in an Inline XBRL 1.1 report to footnote objects.
The SQName of the fact value object is generated based on id (xs:NCName) of the inline XBRL document element, if available, else a synthetic ID may be generated.
The dimensions and properties of the fact are as noted above for xBRL-XML fact map with the addition of value source properties as appropriate.
The diagram shows the relationships between XBRL Model objects.
The dotted lines in the diagram below indicate that it is optional for the source object to appear in the target object.
The following diagram shows which objects can carry property objects. The green (thicker) lines indicate containment — the source object defines properties within itself. The dotted blue lines show QName references — the property object references a PropertyType by QName, and PropertyType references a DataType by QName.
The following details specification defined object types.
| QName | Object Type | Description |
|---|---|---|
| xbrl:headingObject | Object | Defines headings within the taxonomy. |
| xbrl:conceptObject | Object | Defines concepts within the taxonomy. |
| xbrl:cubeDimensionObject | Object | Defines dimensions within the cube object. (Component of a Cube) |
| xbrl:cubeObject | Object | Defines a multidimensional structure to organize facts. |
| xbrl:cubeTypeObject | Object | Used to define the allowable dimensions associated with different cube types. |
| xbrl:dataTypeObject | Object | Defines datatypes within the taxonomy. |
| xbrl:dateResolutionObject | Object | Defines dates that are used by the period constraint object. (Component of a Cube) |
| xbrl:dimensionObject | Object | Defines dimensions within the taxonomy. |
| xbrl:domainNetworkObject | Object | Defines domains within the taxonomy. |
| xbrl:entityObject | Object | Defines an entity object in the taxonomy. |
| xbrl:groupContentObject | Object | Links groups within the taxonomy to taxonomy objects. |
| xbrl:groupObject | Object | Defines groups within the taxonomy. |
| xbrl:importTaxonomyObject | Object | Defines external taxonomy objects that can be imported into the taxonomy. |
| xbrl:labelObject | Object | Defines labels within the taxonomy. |
| xbrl:labelTypeObject | Object | Used to define a label type in the taxonomy. |
| xbrl:memberObject | Object | Defines members within the taxonomy. |
| xbrl:networkObject | Object | Defines networks within the taxonomy. |
| xbrl:periodConstraintObject | Object | Defines periods that can be used on the period dimension. (Component of a Cube) |
| xbrl:propertyObject | Object | Defines property values for objects in the taxonomy. |
| xbrl:propertyTypeObject | Object | Used to define properties that can be used on other taxonomy objects such as concepts and relationships. |
| xbrl:referenceObject | Object | Defines references within the taxonomy. |
| xbrl:referenceTypeObject | Object | Used to define a reference type in the taxonomy. |
| xbrl:relationshipObject | Object | Defines relationships within the taxonomy. |
| xbrl:relationshipTypeObject | Object | Used to define a relationship type in the taxonomy. |
| xbrl:tableTemplateObject | Object | Defines a two-dimensional structure where facts can be allocated for presentation purposes. |
| xbrl:xbrlModelObject | Object | Defines the taxonomy, including all logical aspects and entry points. |
| xbrl:transformObject | Object | Defines a transform object in the taxonomy. |
| xbrl:unitObject | Object | Defines a unit object in the taxonomy. |
| xbrl:unitTypeObject | Object | Used to associate the datatypes used by a unit that are associated with a base datatype (Component of a DataType) |
| xbrl:collectionTypeObject | Object | Defines constraints for collection-based datatypes. (Component of a DataType) |
The following details built-in dimensions
| QName | Object Type | Description |
|---|---|---|
| xbrl:concept | Dimension | Defines the concepts dimension. |
| xbrl:entity | Dimension | Defines the entity dimension. |
| xbrl:language | Dimension | Defines the language dimension. |
| xbrl:period | Dimension | Defines the period dimension. |
| xbrl:unit | Dimension | Defines the units dimension. |
The following details built-in cube types
| QName | Object Type | Description |
|---|---|---|
| xbrla:eventCube | CubeType | A cube type representing events. Requires a concept dimension and one event dimension only. |
| xbrla:journalCube | CubeType | A cube type representing journal entries. Requires a concept dimension and one journal dimension only. |
| xbrla:eventDetailsCube | CubeType | A cube type representing event details. Requires a concept dimension and one event details dimension only. |
| xbrla:referenceCube | CubeType | A cube type representing reference data. Requires a concept dimension and one reference dimension only. |
| xbrla:timeSeriesCube | CubeType | A cube type representing time series data. Requires a concept dimension and a timeseries dimension only. |
| xbrla:positionCube | CubeType | A cube type representing position listing data. Requires a concept dimension, instant period dimension, and must have a reference dimension. |
| xbrl:reportCube | CubeType | A cube type representing report data. Requires concept, period, unit, entity, and taxonomy defined dimensions. |
Cubes without a cubeType property are considered open cubes. Open cubes identify valid facts without defining a concept dimension.
The following details built-in relationship types.
| QName | Description |
|---|---|
| xbrl:concept-aggDimension | Represents a relationship between a concept and an aggregated dimension. |
| xbrl:concept-refDimension | Represents a relationship between a concept and a reference dimension. |
| xbrl:class-subclass | Represents a class-subclass relationship between concepts. |
| xbrl:fact-explanatoryFact | Associates a fact object with another fact object when a fact describes another fact. |
| xbrl:general-special | Represents a general-special relationship between concepts. |
| xbrl:instant-contra | Represents an instant contra relationship for a concept. |
| xbrl:instant-inflow | Represents an instant inflow relationship for a concept. |
| xbrl:instant-outflow | Represents an instant outflow relationship for a concept. |
| xbrl:parent-child | Represents a parent-child relationship between concepts. |
| xbrl:propertyValue-object | Represents a relationship between a property value (Member) and an object. |
| xbrl:summation-item | Represents a summation-item relationship between concepts. |
| xbrl:taxonomy-group | Represents a hierarchical relationship between groups within a taxonomy. Used exclusively in group tree objects. |
| xbrl:unit-factConcept | Associates a unit object with a specific concept when that concept can only be reported with that unit in a cube. |
| xbrl:unitFact-factConcept | Represents a relationship between a concept used to represent a unit and the concept for the fact with that unit in a cube. |
The following details built-in property types
| QName | Object Type | Description |
|---|---|---|
| xbrl:aggregation | PropertyType | Represents an aggregation property used to identify the aggregation method used. |
| xbrla:balance | PropertyType | Represents the balance property of a concept, such as "debit" or "credit". |
| xbrl:defaultLanguage | PropertyType | Represents the default BCP 47 language for text-valued objects within a model. Can only be applied to the xbrl:xbrlModelObject. |
| xbrl:preferredLabel | PropertyType | Represents a property that specifies the preferred label for a concept in a specific context. |
| xbrl:semanticLink | PropertyType | Represents a semantic link property that defines relationships between taxonomy objects. |
| xbrl:weight | PropertyType | Represents a property that specifies the weight of a concept in a calculation relationship. |
The following is a non-normative list of core label types. The built-in model defines normative label types.
| QName | XBRL 2.1 URI | Description |
|---|---|---|
| xbrl:commentaryGuidance | http://www.xbrl.org/2003/role/commentaryGuidance | Represents a label providing general commentary on a concept or object. |
| xbrl:commonPracticeRef | http://www.xbrl.org/2009/role/commonPracticeRef | Represents a reference to common practices related to a concept or object. |
| xbrl:definitionGuidance | http://www.xbrl.org/2003/role/definitionGuidance | Represents a label providing guidance on the definition of a concept or object. |
| xbrl:deprecatedDateLabel | http://www.xbrl.org/2009/role/deprecatedDateLabel | Represents a label indicating the deprecated date of a concept or object. |
| xbrl:deprecatedLabel | http://www.xbrl.org/2009/role/deprecatedLabel | Represents a label indicating that a concept or object is deprecated. |
| xbrl:disclosureGuidance | http://www.xbrl.org/2003/role/disclosureGuidance | Represents a label providing guidance on the disclosure of a concept or object. |
| xbrl:documentation | http://www.xbrl.org/2003/role/documentation | Represents a documentation label providing additional information about a concept or object. |
| xbrl:exampleGuidance | http://www.xbrl.org/2003/role/exampleGuidance | Represents a label providing examples for the usage of a concept or object. |
| xbrl:label | http://www.xbrl.org/2003/role/label | Represents a general label for a concept or object. |
| xbrl:measurementGuidance | http://www.xbrl.org/2003/role/measurementGuidance | Represents a label providing guidance on the measurement of a concept or object. |
| xbrl:negated | http://xbrl.us/us-gaap/role/label/negated | Represents a negated label for a concept. |
| xbrl:negatedLabel | http://www.xbrl.org/2009/role/negatedLabel | Represents a general negated label for a concept. |
| xbrl:negatedNetLabel | http://www.xbrl.org/2009/role/negatedNetLabel | Represents a negated net label for a concept. |
| xbrl:negatedPeriodEnd | http://xbrl.us/us-gaap/role/label/negatedPeriodEnd | Represents a negated label for the end of a period. |
| xbrl:negatedPeriodEndLabel | http://www.xbrl.org/2009/role/negatedPeriodEndLabel | Represents a general negated label for the end of a period. |
| xbrl:negatedPeriodStart | http://xbrl.us/us-gaap/role/label/negatedPeriodStart | Represents a negated label for the start of a period. |
| xbrl:negatedPeriodStartLabel | http://www.xbrl.org/2009/role/negatedPeriodStartLabel | Represents a general negated label for the start of a period. |
| xbrl:negatedTerseLabel | http://www.xbrl.org/2009/role/negatedTerseLabel | Represents a terse negated label for a concept. |
| xbrl:negatedTotal | http://xbrl.us/us-gaap/role/label/negatedTotal | Represents a negated label for total values of a concept. |
| xbrl:negatedTotalLabel | http://www.xbrl.org/2009/role/negatedTotalLabel | Represents a general negated label for total values of a concept. |
| xbrl:negativeLabel | http://www.xbrl.org/2009/role/negativeLabel | Represents a label for negative values of a concept. |
| xbrl:negativePeriodEndLabel | http://www.xbrl.org/2009/role/negativePeriodEndLabel | Represents a label for negative values at the end of a period. |
| xbrl:negativePeriodEndTotalLabel | http://www.xbrl.org/2009/role/negativePeriodEndTotalLabel | Represents a label for negative total values at the end of a period. |
| xbrl:negativePeriodStartLabel | http://www.xbrl.org/2003/role/negativePeriodStartLabel | Represents a label for negative values at the start of a period. |
| xbrl:negativePeriodStartTotalLabel | http://www.xbrl.org/2009/role/negativePeriodStartTotalLabel | Represents a label for negative total values at the start of a period. |
| xbrl:negativeTerseLabel | http://www.xbrl.org/2009/role/negativeTerseLabel | Represents a terse label for negative values of a concept. |
| xbrl:negativeVerboseLabel | http://www.xbrl.org/2009/role/negativeVerboseLabel | Represents a verbose label for negative values of a concept. |
| xbrl:netLabel | http://www.xbrl.org/2009/role/netLabel | Represents a label for net values of a concept. |
| xbrl:periodEndLabel | http://www.xbrl.org/2003/role/periodEndLabel | Represents a label for the end of a period. |
| xbrl:periodStartLabel | http://www.xbrl.org/2003/role/periodStartLabel | Represents a label for the start of a period. |
| xbrl:presentationGuidance | http://www.xbrl.org/2003/role/presentationGuidance | Represents a label providing guidance on the presentation of a concept or object. |
| xbrl:positiveLabel | http://www.xbrl.org/2003/role/positiveLabel | Represents a label for positive values of a concept. |
| xbrl:positivePeriodEndLabel | http://www.xbrl.org/2009/role/positivePeriodEndLabel | Represents a label for positive values at the end of a period. |
| xbrl:positivePeriodEndTotalLabel | http://www.xbrl.org/2009/role/positivePeriodEndTotalLabel | Represents a label for positive total values at the end of a period. |
| xbrl:positivePeriodStartLabel | http://www.xbrl.org/2009/role/positivePeriodStartLabel | Represents a label for positive values at the start of a period. |
| xbrl:positivePeriodStartTotalLabel | http://www.xbrl.org/2009/role/positivePeriodStartTotalLabel | Represents a label for positive total values at the start of a period. |
| xbrl:positiveTerseLabel | http://www.xbrl.org/2003/role/positiveTerseLabel | Represents a terse label for positive values of a concept. |
| xbrl:positiveVerboseLabel | http://www.xbrl.org/2003/role/positiveVerboseLabel | Represents a verbose label for positive values of a concept. |
| xbrl:restatedLabel | http://www.xbrl.org/2006/role/restatedLabel | Represents a label indicating that a concept or object has been restated. |
| xbrl:symbolLabel | http://www.xbrl.org/PWD/2026-09-01/role/symbolLabel | Represents a label for symbols associated with a unit. |
| xbrl:terseLabel | http://www.xbrl.org/2003/role/terseLabel | Represents a terse (short) label for a concept or object. |
| xbrl:totalLabel | http://www.xbrl.org/2003/role/totalLabel | Represents a label for total values of a concept. |
| xbrl:verboseLabel | http://www.xbrl.org/2003/role/verboseLabel | Represents a verbose (detailed) label for a concept or object. |
| xbrl:zeroLabel | http://www.xbrl.org/2003/role/zeroLabel | Represents a label for zero values of a concept. |
| xbrl:zeroTerseLabel | http://www.xbrl.org/2003/role/zeroTerseLabel | Represents a terse label for zero values of a concept. |
| xbrl:zeroVerboseLabel | http://www.xbrl.org/2003/role/zeroVerboseLabel | Represents a verbose label for zero values of a concept. |
The following details built-in reference types:
| QName | Object Type | Description |
|---|---|---|
| xbrl:commentaryRef | ReferenceType | Represents a reference providing commentary on a concept or object. |
| xbrl:definitionRef | ReferenceType | Represents a reference providing a definition for a concept or object. |
| xbrl:disclosureRef | ReferenceType | Represents a reference providing disclosure information for a concept or object. |
| xbrl:exampleRef | ReferenceType | Represents a reference providing examples for the usage of a concept or object. |
| xbrl:mandatoryDisclosureRef | ReferenceType | Represents a reference for mandatory disclosure information related to a concept or object. |
| xbrl:measurementRef | ReferenceType | Represents a reference providing measurement information for a concept or object. |
| xbrl:presentationRef | ReferenceType | Represents a reference providing presentation information for a concept or object. |
| xbrl:recommendedDisclosureRef | ReferenceType | Represents a reference for recommended disclosure information related to a concept or object. |
| xbrl:reference | ReferenceType | Represents a general reference for a concept or object. |
| xbrl:semanticRef | ReferenceType | Represents a reference providing semantic information for a concept or object. |
| xbrl:unspecifiedDisclosureRef | ReferenceType | Represents a reference for unspecified disclosure information related to a concept or object. |
| Taxonomy Object | QName of Object | Object Properties (explicit) | References (by property) | Parent Object | Child Objects | Property Object | QName Ref | Extensible |
|---|---|---|---|---|---|---|---|---|
| XBRLModel | xbrl:xbrlModelObject | name, frameworkName, version, importedTaxonomies, finalTaxonomy, headings, concepts, cubes, cubeTypes, dataTypes, dimensions, domains, domainClasses, entities, facts, footnotes, groups, groupContents, labels, layouts, members, modelTypes, networks, propertyTypes, references, referenceTypes, relationshipTypes, units, properties, transforms | importedTaxonomies (importTaxonomy), concepts, cubes, etc. | (root) | All component objects | Yes | Yes | no |
| ImportTaxonomy | xbrl:importTaxonomyObject | xbrlModelName, profiles, importObjects, importObjectTypes, excludeLabels, properties | xbrlModelName (xbrlModel) | XBRLModel | — | No | No | no |
| FinalTaxonomy | xbrl:finalTaxonomyObject | name, finalTaxonomyFlag, finalObjects, finalObjectTypes | — | XBRLModel | — | No | Yes | no |
| Concept | xbrl:conceptObject | name, dataType, periodType, nillable, enumerationDomain, properties | dataType (dataType or collection), enumerationDomain (domain) | XBRLModel | — | Yes | Yes | no |
| Heading | xbrl:headingObject | name, properties | — | XBRLModel | — | Yes | Yes | no |
| Cube | xbrl:cubeObject | name, cubeType, cubeDimensions, cubeNetworks, excludeCubes, requiredCubes, properties, extends, isExtensible | cubeType (cubeType), cubeDimensions (cubeDimension), cubeNetworks (network), excludeCubes (cube) | XBRLModel | cubeDimension | Yes | Yes | cubeNetworks, properties, requiredCubes |
| CubeDimension | xbrl:cubeDimensionObject | dimension, domain, typedSort, optional, periodConstraints | dimension (dimension), domain (domain), periodConstraints (periodConstraint) | Cube | periodConstraint | No | No | no |
| PeriodConstraint | xbrl:periodConstraintObject | periodType, timeSpan, periodPattern, endDate, startDate, onOrAfter, onOrBefore | endDate, startDate, onOrAfter, onOrBefore (dateResolution) | CubeDimension | dateResolution | No | No | no |
| DateResolution | xbrl:dateResolutionObject | conceptName, context, value, timeShift | conceptName (concept) | PeriodConstraint | — | No | No | no |
| Dimension | xbrl:dimensionObject | name, domainClass, cubeTypes, properties | domainClass (domainClass), cubeTypes (cubeType) | XBRLModel | — | Yes | Yes | no |
| Domain | xbrl:domainNetworkObject | name, root, domainDataType, relationships, extends, isExtensible, properties | root (domainClass), domainDataType (dataType), extends (domain), relationships (relationship) | XBRLModel | relationship | Yes | Yes | relationships, properties |
| DomainClass | xbrl:domainClassObject | name, properties | — | XBRLModel | — | Yes | Yes | no |
| Entity | xbrl:entityObject | name, properties | — | XBRLModel | — | Yes | Yes | no |
| Group | xbrl:groupObject | name, groupURI, properties | — | XBRLModel | — | Yes | Yes | no |
| GroupContent | xbrl:groupContentObject | groupName, forObject | groupName (group), forObject (network/cube/tableTemplate) | XBRLModel | — | No | No | no |
| GroupTree | xbrl:groupTreeObject | name, relationships | name (groupTree QName), relationships (relationship with taxonomy/group source, group target) | XBRLModel | relationship | No | Yes | no |
| Network | xbrl:networkObject | name, relationshipTypeName, roots, relationships, extends, isExtensible, properties | relationshipTypeName (relationshipType), roots, relationships (relationship), extends (network) | XBRLModel | relationship | Yes | Yes | relationships, roots, properties |
| Relationship | xbrl:relationshipObject | source, target, order, properties | source (any), target (any), properties (property) | Network/Domain | — | Yes | No | no |
| RelationshipType | xbrl:relationshipTypeObject | name, uri, cycles, allowedLinkProperties, requiredLinkProperties, sourceObjects, targetObjects | allowedLinkProperties, requiredLinkProperties (propertyType), sourceObjects, targetObjects | XBRLModel | — | No | Yes | no |
| Label | xbrl:labelObject | forObject, labelType, language, value, properties | forObject (any), labelType (labelType) | XBRLModel | — | No | No | no |
| Member | xbrl:memberObject | name, domainClasses, extends, isExtensible,properties | domainClasses (domainClass) | XBRLModel | — | Yes | Yes | domainClasses, properties |
| Property | xbrl:propertyObject | property, value | property (propertyType) | (see Col 7) | — | No | No | no |
| Reference | xbrl:referenceObject | name, extends, forObjects, referenceType, language, isExtensible, properties | referenceType (referenceType), forObjects (any) | XBRLModel | — | Yes | Yes | forObjects, properties |
| DataType | xbrl:dataTypeObject | name, baseType, enumeration, minInclusive, maxInclusive, minExclusive, maxExclusive, totalDigits, fractionDigits, length, minLength, maxLength, whiteSpace, patterns, unitType, setType | baseType (dataType), unitType (unitType), setType (setType) | XBRLModel | unitType, setType | No | Yes | no |
| UnitType | xbrl:unitTypeObject | dataTypeNumerator, dataTypeDenominator, dataTypeMultiplier | — | DataType | — | No | No | no |
| CollectionType | xbrl:collectionTypeObject | dataType, uniqueValues, orderedValues, maxItems , minItems | dataType (dataType) | DataType | — | No | No | no |
| PropertyType | xbrl:propertyTypeObject | name, dataType, enumerationDomain, definitional, allowedObjects, allowedAsLinkProperty | dataType (dataType or collection), enumerationDomain (domain), allowedObjects (object type QNames) | XBRLModel | — | No | Yes | no |
| LabelType | xbrl:labelTypeObject | name, uri, formatType, contentConstraints, allowedObjects | formatType (string), contentConstraints (object), allowedObjects (object type QNames) | XBRLModel | — | No | Yes | no |
| ReferenceType | xbrl:referenceTypeObject | name, uri, allowedObjects, orderedProperties, requiredProperties | allowedObjects (object type QNames), orderedProperties, requiredProperties (propertyType) | XBRLModel | — | No | Yes | no |
| CubeType | xbrl:cubeTypeObject | name, baseCubeType, coreDimensions, cubeDimensionConstraints, cubeRelationships, cubeProperties, required, allowed | baseCubeType (cubeType), dimensions.allowed (dimension or constraint), relationships.required/allowed (relationshipType or constraint), properties.required/allowed (propertyType) | XBRLModel | — | No | Yes | no |
| Transform | xbrl:transformObject | name, inputDataType, outputDataType | inputDataType (dataType), outputDataType (dataType) | XBRLModel | — | No | Yes | no |
| Unit | xbrl:unitObject | name, dataType, compositeUnitRepresentation | dataType (dataType) | XBRLModel | — | No | Yes | no |
| Layout | xbrl:layoutObject | name, tableConstruction, dataTables, properties | — | XBRLModel | dataTable | Yes | Yes | no |
| DataTable | xbrl:dataTableObject | name, tableType, cubeName, xAxis, yAxis, zAxis, tablePoints | cubeName (cube) | Layout | axis, tablePoint | No | Yes | no |
| Axis | xbrl:axisObject | axisHeaders, gridHeaders, axisLabelsGroup, gridAxis | — | DataTable | axisHeader, gridHeader, gridAxis | No | No | no |
| AxisHeader | xbrl:axisHeaderObject | dimensionName, labelType, language, axisMembers, axisNetwork, dimensionOptional, totalLocation, groupDuplicateLabels, typedLabel | dimensionName (dimension), axisNetwork (network/domain) | Axis | — | No | No | no |
| GridHeader | xbrl:gridHeaderObject | label, span, rollUpLocation, labelLevel | — | Axis | — | No | No | no |
| GridAxis | xbrl:gridAxisObject | axisItems, axisGroups | — | Axis | axisItem, axisGroup | No | No | no |
| AxisItem | xbrl:axisItemObject | axisId, dimensions | — | GridAxis | — | No | No | no |
| AxisGroup | xbrl:axisGroupObject | dimensionName, axisNetwork, axisIds, axisStart | dimensionName (dimension), axisNetwork (network/domain) | GridAxis | — | No | No | no |
| TablePoint | xbrl:tablePointObject | gridCoordinates, dimensions | dimensions (dimension/member) | DataTable | — | No | No | no |
| Fact | xbrl:factObject | name, factValues, factDimensions, properties, extends, isExtensible | factDimensions (factDimension) | XBRLModel | factValue, factDimension | Yes | Yes | factValues, properties |
| FactValue | xbrl:factValueObject | name, value, decimals, language, valueSources, valueAnchors | valueSources (factValueSource), valueAnchors (factAnchor) | Fact | — | No | Yes | no |
| FactDimension | xbrl:factDimensionObject | (dynamic properties: dimension QNames) | dimension values (concept/member/unit/entity or typed value) | Fact | — | No | No | no |
| FactValueSource | xbrl:factValueSourceObject | source, medium, id, formField, page, mcid, elementId, bbox, imageHash, tabularPath, transformation | — | FactValue | — | No | No | no |
| FactValueAnchor | xbrl:factValueAnchorObject | source, medium, id, formField, page, mcid, elementId, bbox, imageHash, tabularPath | — | FactValue | — | No | No | no |
| FactSource | xbrl:factSourceObject | name, factMapName, namespaceMaps, factIdentifierNamespacePrefix, properties | factMapName (factMap), namespaceMaps (namespaceMap) | XBRLModel | namespaceMap | Yes | Yes | no |
| FactMap | xbrl:factMapObject | name, tableTemplate, jsonTemplateMap, xmlTemplateMap | tableTemplate (tableTemplate), jsonTemplateMap, xmlTemplateMap | XBRLModel | — | No | Yes | no |
| NamespaceMap | xbrl:namespaceMapObject | fromNamespacePrefix, toNamespacePrefix | — | FactSource | — | No | No | no |
| ModelType | xbrl:modelTypeObject | name, allowedObjects, allowedProperties, requiredProperties | allowedObjects, allowedProperties, requiredProperties (object/property type QNames) | XBRLModel | — | No | Yes | no |
| Footnote | xbrl:footnoteObject | name, content, language | - | XBRLModel | — | No | Yes | no |
Legend:
Property Object: "Yes" if the object allows a properties array of property objects.
QName Ref: "Yes" if the object is referenceable by QName (can be referenced by other objects using its QName).
References: Properties that reference other objects by QName or as objects.
Parent Object: The object that contains this object (or "Taxonomy" if top-level).
Child Objects: Objects that are contained within this object (if any).
Extensible: "no" if the object does not support extension via extends. Otherwise, lists the specific properties that an importing model may append to an existing object of this type using extends.
This section is normative. The datatypes defined in this section MUST be recognised by all conformant processors as built-in datatypes of this specification, as required by Built-in datatypes.
.
The JSON file inclusion is the machine-readable form of the normative type definitions.
{
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": {
"xbrl": "https://xbrl.org/PWD/2026-09-01",
"xbrlr": "https://xbrl.org/PWD/2026-09-01/report",
"xs": "http://www.w3.org/2001/XMLSchema",
"ref": "https://xbrl.org/PWD/2026-09-01/ref",
"utr": "https://xbrl.org/PWD/2026-09-01/utr",
"xbrlm": "https://xbrl.org/PWD/2026-09-01/model"
},
"documentNamespacePrefix": "xbrlr"
},
"xbrlModel": {
"name": "xbrlr:dataTypes",
"frameworkName": "types",
"version": "2025",
"importedTaxonomies": [
{
"xbrlModelName": "xbrlm:base"
}
],
"dataTypes": [
{
"name": "xbrlr:aggregationType",
"baseType": "xs:string",
"enumeration": [
"sum",
"count",
"max",
"min",
"avg",
"concat",
"median",
"first",
"last",
"stdev"
]
},
{
"name": "xbrlr:weightType",
"baseType": "xs:decimal",
"enumeration": [
"1",
"-1"
],
"allowedObjects": [
"xbrl:propertyTypeObject"
]
},
{
"name": "xbrlr:duration",
"baseType": "xs:duration"
},
{
"name": "xbrlr:monetary",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:pureType",
"baseType": "xs:decimal"
},
{
"name": "xbrlr:enumeration",
"baseType": "xbrl:noLangToken",
"patterns": [
"[A-Za-z][-A-Za-z0-9+-.]*:\\S+#[\\i-[:]][\\c-[:]]*"
]
},
{
"name": "xbrlr:escaped",
"baseType": "xs:string"
},
{
"name": "xbrlr:xmlNodes",
"baseType": "xbrlr:escaped"
},
{
"name": "xbrlr:xml",
"baseType": "xbrlr:xmlNodes"
},
{
"name": "xbrlr:textBlock",
"baseType": "xbrlr:xmlNodes",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrlr:percent",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrlr:perShare",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:area",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:volume",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:mass",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:weight",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:energy",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:power",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:length",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:memory",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:noDecimalsMonetary",
"baseType": "xbrlr:monetary",
"fractionDigits": 0,
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:nonNegativeMonetary",
"baseType": "xbrlr:monetary",
"minInclusive": 0,
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:nonNegativeNoDecimalsMonetary",
"baseType": "xbrlr:monetary",
"fractionDigits": 0,
"minInclusive": 0,
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:insolation",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:temperature",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:pressure",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:mass",
"dataTypeDenominator": "xbrlr:area"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:frequency",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:irradiance",
"baseType": "xs:decimal"
},
{
"name": "xbrlr:speed",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:length",
"dataTypeDenominator": "xbrlr:time"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:planeAngle",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:voltage",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:electricCurrent",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:force",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:electricCharge",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:time",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:guidance",
"baseType": "xs:string"
},
{
"name": "xbrlr:flow",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:volume",
"dataTypeDenominator": "xbrlr:time"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:massFlow",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerLength",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:length"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:Monetary_per_Monetary",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:monetary"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerArea",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:area"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerDecimal",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xs:decimal"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerVolume",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:volume"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerDuration",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:time"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerEnergy",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:energy"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:monetaryPerMass",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:monetary",
"dataTypeDenominator": "xbrlr:mass"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:dateTime",
"baseType": "xs:dateTime",
"patterns": [
".*T.*"
]
},
{
"name": "xbrlr:partialDate",
"baseType": "xs:string",
"allowedObjects": [
"xbrl:conceptObject"
],
"patterns": [
"-?[0-9]{4,}(-[0-9]{2}(-[0-9]{2}(T[0-9]{2}(:[0-9]{2}(:[0-9]{2})?)?)?)?)?"
]
},
{
"name": "xbrlr:ghgEmissions",
"baseType": "xs:decimal",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:energyPerMonetary",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:energy",
"dataTypeDenominator": "xbrlr:monetary"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:ghgEmissionsPerMonetary",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:ghgEmissions",
"dataTypeDenominator": "xbrlr:monetary"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:volumePerMonetary",
"baseType": "xs:decimal",
"unitType": {
"dataTypeNumerator": "xbrlr:volume",
"dataTypeDenominator": "xbrlr:monetary"
},
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:unitObject"
]
},
{
"name": "xbrlr:perUnit",
"baseType": "xs:decimal"
},
{
"name": "xbrlr:reportAttributeType",
"baseType": "xs:string",
"enumeration": [
"reportDate",
"reportFilingDate",
"reportName",
"reportingEntity",
"reportingPeriod",
"reportIdentifier"
]
},
{
"name": "xbrlr:emoji",
"baseType": "xs:string"
},
{
"name": "xbrlr:periodString",
"baseType": "xs:string"
},
{
"name": "xbrlr:startEndDates",
"baseType": "xs:anySimpleType"
},
{
"name": "xbrlr:unitString",
"baseType": "xs:string"
},
{
"name": "xbrlr:realURL",
"baseType": "xs:anyURI"
},
{
"name": "xbrlr:linkToMarkdownFormat",
"baseType": "xbrlr:realURL"
}
],
"units": [
{
"dataType": "xbrlr:pureType",
"name": "xbrlr:pure"
}
],
"collectionTypes": [
{
"name": "xbrlr:QNameSet",
"dataType": "xs:QName",
"uniqueValues": true,
"orderedValues": true
},
{
"name": "xbrlr:excludedIntervalsSet",
"dataType": "xs:string",
"uniqueValues": true,
"orderedValues": false
},
{
"name": "xbrlr:stringCollection",
"dataType": "xs:string",
"minItems": 1,
"orderedValues": true
},
{
"name": "xbrlr:gYearList",
"dataType": "xs:gYear",
"uniqueValues": true,
"orderedValues": false
}
],
"labels": [
{
"forObject": "xbrlr:periodString",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The period dimension takes a value that is a time interval, which may be zero-length (i.e. an instant). This type defines a standard period string representation which can be used to express such values.The period string representation is obtained as follows: If the value is a non-zero length interval, then the representation is a pair of ISO 8601 date-time values, separated by the / character; Otherwise, the value is a single ISO 8601 date-time value. The date-time values used in this representation MUST be valid according to the xs:dateTime datatype and MUST be in the canonical lexical representation. The error code oimce:invalidPeriodRepresentation MUST be raised for values that are required to be a period string representation and which do not conform to the above format. It should be noted that unlike the xbrli:dateUnion type used in xBRL-XML, the xs:dateTime datatype used here does not allow the time component to be omitted."
},
{
"forObject": "xbrlr:startEndDates",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The start and end dates of a period defined as a single type."
},
{
"forObject": "xbrlr:unitString",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The unit dimension defines units in terms of the combination of QNames by defining an unordered collection of numerators and an unordered collection of denominators. This type defines a standardised unit string representation, allowing units to be captured using a unique string value. This has the property that, provided that a consistent set of namespace prefixes are used, a given unit will have a single representation meaning that equivalence of units can be determined by string comparison. The unit string representation is obtained as follows: If {denominators} is not present, the QNames representing the {numerators} are combined in lexicographic order, separated by the * character. Otherwise, lists of {numerators} and {denominators} are created by combining QNames in lexicographic order and separating with the * character, as above. If a list contains more than one item, the list is enclosed in parentheses. The final string is then obtained by concatenating the list of numerators, the / character, and the list of denominators. Whitespace is not permitted anywhere in the string representation, and the use of QNames ensures that a 1:1 mapping between prefixes and namespaces is available thus ensuring that equivalent units appearing within the same document are represented with the same string. Lexicographic order means ordered based on comparison of Unicode code point values of each character. If any QNames in the unit string representation use a prefix that is not defined in the prefix map then oimce:unboundPrefix MUST be raised."
},
{
"forObject": "xbrlr:aggregationType",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The aggregation data type is used to uniquely identify the method of aggregation used to generate a single value from a population."
},
{
"forObject": "xbrlr:monetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary type serves as the data type for those financial concepts in a taxonomy which denote units in a currency. Instance items with this type must have a unit of measure from the ISO 4217 namespace of currencies."
},
{
"forObject": "xbrlr:pureType",
"language": "en",
"labelType": "xbrl:documentation",
"value": "This data type serves as the type for dimensionless numbers such as percentage change, growth rates, and other ratios where the numerator and denominator have the same units."
},
{
"forObject": "xbrlr:enumeration",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The enumeration type defines an XBRL item type which takes an XML Name in the format 'namespace-uri#localname' as a value."
},
{
"forObject": "xbrlr:escaped",
"language": "en",
"labelType": "xbrl:documentation",
"value": "escaped specializes string. There is no constraint on whether the resulting unescaped content is well-formed or not; this base type exists so that processors know what to do with the content. It is a suitable base type for a data type whose unescaped content must be valid HTML 4.0 (which is not XML)."
},
{
"forObject": "xbrlr:xmlNodes",
"language": "en",
"labelType": "xbrl:documentation",
"value": "xmlNodes specializes escaped. The unescaped content MUST be a sequence of XML text and well-formed XML nodes. This content constraint cannot be captured by a finite length regular expression."
},
{
"forObject": "xbrlr:xml",
"language": "en",
"labelType": "xbrl:documentation",
"value": "xml specializes xmlNodes. The unescaped content MUST be well-formed XML. This is a suitable base type for elements whose content must conform to a specific XML Schema or DTD. "
},
{
"forObject": "xbrlr:textBlock",
"language": "en",
"labelType": "xbrl:documentation",
"value": "textBlock specializes xmlNodes. The unescaped content MUST have mixed content containing a simple string, or a fragment of XHTML or a mixture of both."
},
{
"forObject": "xbrlr:percent",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The percent item type is used to indicate that the value of the element is intended to be presented as a percentage. This does not contravene Specification section 4.8.2, which requires that percentages not be multiplied by 100."
},
{
"forObject": "xbrlr:perShare",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The per share item type indicates a monetary amount divided by a number of shares. The per share item type has a Decimal base."
},
{
"forObject": "xbrlr:area",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The area item type is used to indicate that an element represents an area."
},
{
"forObject": "xbrlr:volume",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The Volume item type is used to indicate that an element represents a volume and can be used to express the volume of any substance, whether solid, liquid, or gas."
},
{
"forObject": "xbrlr:mass",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The mass item type represents the mass of an object which can be measured."
},
{
"forObject": "xbrlr:weight",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The weight item type represents the weight of an object which can be measured."
},
{
"forObject": "xbrlr:energy",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The energy item type represents a unit of energy."
},
{
"forObject": "xbrlr:power",
"language": "en",
"labelType": "xbrl:documentation",
"value": "Measures a rate of energy use or energy production and is equivalent to the use or production of energy during a period of time. I.e. a watt is the equal to one joule of energy per second."
},
{
"forObject": "xbrlr:length",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The length item type is a measure of distance."
},
{
"forObject": "xbrlr:memory",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The memory item type is a measure of memory typically used in the IT industry."
},
{
"forObject": "xbrlr:noDecimalsMonetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The NoDecimalsMonetary is a restriction on the xbrlr:monetary in that it does not allow cents on the monetary value. Facts using this type MUST have an (inferred) decimals attribute value that is less than or equal to zero, or 'INF'."
},
{
"forObject": "xbrlr:nonNegativeMonetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The nonNegativeMonetary is a restriction on the xbrlr:monetary in that it does not allow negative values on the monetary value."
},
{
"forObject": "xbrlr:nonNegativeNoDecimalsMonetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The nonNegativeNoDecimalsMonetary is a restriction on the xbrlr:monetary in that it does not allow cents or negative values on the monetary value. Facts using this type MUST have an (inferred) decimals attribute value that is less than or equal to zero, or 'INF'."
},
{
"forObject": "xbrlr:insolation",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The insolation item type is used to represent a measure of energy per area over a period of time. "
},
{
"forObject": "xbrlr:temperature",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The temperature item type is used to represent a measure of temperature either in absolute terms or as a difference between two temperatures."
},
{
"forObject": "xbrlr:pressure",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The pressure item type is used to represent a measure of the force applied perpendicular to the surface of an object per unit area over which that force is distributed. Units include Pascal, PSI and Bar. "
},
{
"forObject": "xbrlr:frequency",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The frequency item type is used to represent a measure of the number of occurrences of a repeating event per unit time. "
},
{
"forObject": "xbrlr:irradiance",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The irradiance item type is used to represent a measure irradiance (power per unit area)"
},
{
"forObject": "xbrlr:speed",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The speed item type is used to represent a measure of speed (distance traveled by an object per unit time). Units include knots, mach, and metres per second."
},
{
"forObject": "xbrlr:planeAngle",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The angle item type is used to represent the measurement of an angle. Units include radians, degrees and gradians."
},
{
"forObject": "xbrlr:voltage",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The voltage item type is used to represent a measure of voltage (the difference in electric potential energy between two points per unit electric charge)."
},
{
"forObject": "xbrlr:electricCurrent",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The electric current item type is used to represent a measure of electric current (the flow of electric charge over a circuit)."
},
{
"forObject": "xbrlr:force",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The force item type is used to represent a measure of a physical force. Units include newtons. "
},
{
"forObject": "xbrlr:electricCharge",
"language": "en",
"labelType": "xbrl:documentation",
"value": " The electric charge item is used to represent a measure of electric charge (the physical property of matter that causes it to experience a force when placed in an electromagnetic field) "
},
{
"forObject": "xbrlr:guidance",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The purpose of the guidance type is to identify 'guidance items' which provide general guidance for users of a taxonomy, particularly preparers of XBRL reports. Guidance is defined as a property value of the xbrl:abstractDataType property defined ona a heading object. This property allows guidance to be positioned in appropriate locations in the parent-child relationship network, and is intended to help users who view the taxonomy through displays based on the parent-child relationship network. Guidance items provide general guidance which is not limited to the application of a specific tag to an individual item of data. This remains as a datatype but can only be used as a property value, to support backward compatability to XBRL 2.1 taxonomies."
},
{
"forObject": "xbrlr:gYearList",
"language": "en",
"labelType": "xbrl:documentation",
"value": "This data type allows the reporting of a list of xsd:gYear values as a single value"
},
{
"forObject": "xbrlr:flow",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The flow item type is used to represent a measure of volumetric flow rate."
},
{
"forObject": "xbrlr:massFlow",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The mass flow item type is used to represent a measure of mass flow rate."
},
{
"forObject": "xbrlr:monetaryPerLength",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary per length item type is used to represent a measure of price or cost per unit length"
},
{
"forObject": "xbrlr:monetaryPerArea",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary per area item type is used to represent a measure of price or cost per unit area"
},
{
"forObject": "xbrlr:monetaryPerVolume",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary per volume item type is used to represent a measure of price or cost per unit volume"
},
{
"forObject": "xbrlr:monetaryPerDuration",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary per duration item type is used to represent a measure of price or cost per unit duration"
},
{
"forObject": "xbrlr:monetaryPerEnergy",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary per energy item type is used to represent a measure of price or cost per unit energy"
},
{
"forObject": "xbrlr:monetaryPerMass",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The monetary per mass item type is used to represent a measure of price or cost per unit mass"
},
{
"forObject": "xbrlr:dateTime",
"language": "en",
"labelType": "xbrl:documentation",
"value": "A subtype of xs:dateTime that requires a time component (as xs:dateTime does)."
},
{
"forObject": "xbrlr:partialDate",
"language": "en",
"labelType": "xbrl:label",
"value": "Partial Date"
},
{
"forObject": "xbrlr:partialDate",
"language": "en",
"labelType": "xbrl:documentation",
"value": "An ISO 8601 truncated date/time value that may represent a year (YYYY), year-month (YYYY-MM), full date (YYYY-MM-DD), or date with hours, minutes or seconds. Used where the precision of a date or time value is not known in advance."
},
{
"forObject": "xbrlr:ghgEmissions",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The greenhouse gas emissions item type is used in preference to mass to measure Global Warming Potential, which is often expressed in terms of tonnes of CO2 equivalent."
},
{
"forObject": "xbrlr:energyPerMonetary",
"language": "en",
"labelType": "xbrl:label",
"value": "Energy/Monetary"
},
{
"forObject": "xbrlr:energyPerMonetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The energy per monetary item type is used to represent a measure of energy per monetary unit."
},
{
"forObject": "xbrlr:ghgEmissionsPerMonetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The emissions per monetary item type is used to represent a measure of GHG emissions per monetary unit."
},
{
"forObject": "xbrlr:volumePerMonetary",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The volume per monetary item type is used to represent a measure of volume per monetary unit."
},
{
"forObject": "xbrlr:volumePerMonetary",
"language": "en",
"labelType": "xbrl:label",
"value": "Volume/Monetary"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrlr:Monetary_per_Monetary",
"value": "Monetary/Monetary"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrlr:Monetary_per_Monetary",
"value": "Exchange Rate Expressed as: Monetary Unit / Monetary Unit"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrlr:emoji",
"value": "Image or Emoji Icon"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrlr:emoji",
"value": "A datatype for associating images or emoji icons with taxonomy objects. Values can be emoji characters, image URLs, or data URIs representing icons for visual representation of taxonomy objects."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrlr:realURL",
"value": "A URL that references a real link to a resource. If used the URL must be valid."
}
],
"references": [
{
"name": "xbrlr:ITARequirementReference",
"forObjects": [
"xbrlr:escaped",
"xbrlr:xmlNodes",
"xbrlr:xml",
"xbrlr:textBlock",
"xbrlr:percent",
"xbrlr:perShare",
"xbrlr:area",
"xbrlr:volume",
"xbrlr:mass",
"xbrlr:weight",
"xbrlr:energy",
"xbrlr:power",
"xbrlr:length",
"xbrlr:memory"
],
"referenceType": "xbrl:dataTypeRequirement",
"properties": [
{
"property": "ref:Requirement",
"value": "Interoperable Taxonomy Architecture (ITA) initiative requirement for alignment of the EDINET, IFRS and US GAAP taxonomies."
}
]
},
{
"name": "xbrlr:PartialDateRequirementReference",
"forObjects": [
"xbrlr:partialDate"
],
"referenceType": "xbrl:dataTypeRequirement",
"properties": [
{
"property": "ref:Requirement",
"value": "This data type is required to represent dates at varying levels of temporal precision, from year only through to full date-time. This is needed for financial reporting scenarios where the exact date of a transaction or contract event is not known with full precision — for example, an investment schedule where the maturity year and month of a bond are known but not the exact day. Fabricating a full date in such cases would misrepresent the precision of the data. The type accepts values conforming to ISO 8601 truncated date representations: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DDTHH, YYYY-MM-DDTHH:MM, or YYYY-MM-DDTHH:MM:SS."
}
]
},
{
"name": "xbrlr:PerUnitReference",
"forObjects": [
"xbrlr:monetaryPerLength",
"xbrlr:monetaryPerArea",
"xbrlr:monetaryPerVolume",
"xbrlr:monetaryPerDuration",
"xbrlr:monetaryPerEnergy",
"xbrlr:monetaryPerMass",
"xbrlr:Monetary_per_Monetary"
],
"referenceType": "xbrl:dataTypeRequirement",
"properties": [
{
"property": "ref:Requirement",
"value": "These types are required in order to enable validation and conversion of units (via the Unit Types Registry) for values that are expressed as a price per unit for various physical measures, and reflect industry-specific common practice."
}
]
},
{
"name": "xbrlr:RecStatusReference",
"forObjects": [
"xbrlr:escaped",
"xbrlr:xmlNodes",
"xbrlr:xml",
"xbrlr:textBlock",
"xbrlr:percent",
"xbrlr:perShare",
"xbrlr:area",
"xbrlr:volume",
"xbrlr:mass",
"xbrlr:weight",
"xbrlr:energy",
"xbrlr:power",
"xbrlr:length",
"xbrlr:memory",
"xbrlr:noDecimalsMonetary",
"xbrlr:nonNegativeMonetary",
"xbrlr:nonNegativeNoDecimalsMonetary",
"xbrlr:insolation",
"xbrlr:temperature",
"xbrlr:pressure",
"xbrlr:frequency",
"xbrlr:irradiance",
"xbrlr:speed",
"xbrlr:planeAngle",
"xbrlr:voltage",
"xbrlr:electricCurrent",
"xbrlr:force",
"xbrlr:electricCharge",
"xbrlr:guidance",
"xbrlr:flow",
"xbrlr:massFlow",
"xbrlr:monetaryPerLength",
"xbrlr:monetaryPerArea",
"xbrlr:monetaryPerVolume",
"xbrlr:monetaryPerDuration",
"xbrlr:monetaryPerEnergy",
"xbrlr:monetaryPerMass",
"xbrlr:dateTime",
"xbrlr:partialDate",
"xbrlr:ghgEmissions",
"xbrlr:energyPerMonetary",
"xbrlr:ghgEmissionsPerMonetary",
"xbrlr:volumePerMonetary",
"xbrlr:enumeration",
"xbrlr:pure",
"xbrlr:monetary"
],
"referenceType": "xbrl:specStatus",
"properties": [
{
"property": "ref:Status",
"value": "REC"
}
]
}
]
}
}
This appendix provides the normative formal specification of the structured select statement used in the selections property of the import taxonomy object and the final taxonomy object. The grammar below is defined using JSON Schema fragments and explicit type-compatibility constraints.
The following JSON Schema fragment normatively defines the structure of a single entry in the selections array:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://xbrl.org/PWD/2026-09-01/selection-expression",
"title": "Structured Select Statement",
"type": "object",
"required": ["objectType"],
"additionalProperties": false,
"properties": {
"objectType": {
"type": "string",
"description": "A QName identifying the model component object type to be selected."
},
"where": {
"type": "array",
"description": "An array of filter conditions combined with logical AND.",
"items": {
"type": "object",
"required": ["property", "operator", "value"],
"additionalProperties": false,
"properties": {
"property": {
"type": "string",
"description": "The name or QName of the property on the selected objects to filter by."
},
"operator": {
"type": "string",
"enum": ["==", "!=", "in", "not in", "contains", "not contains", ">", "<", ">=", "<="],
"description": "The comparison operator."
},
"value": {
"description": "The value to compare against. Type must be compatible with the operator and property type.",
"oneOf": [
{ "type": "string" },
{ "type": "number" },
{ "type": "boolean" },
{ "type": "array", "items": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }
]
}
}
}
}
}
}
The following table normatively defines which operators are permitted for each property value type. Use of an operator against an incompatible property type MUST raise oimte:invalidSelectionExpression.
| Operator | String | Number | Boolean | Date (xs:date / xs:dateTime) | QName | Notes |
|---|---|---|---|---|---|---|
== |
✅ | ✅ | ✅ | ✅ | ✅ | Exact equality. QName equality is semantic (see QName Operators below). |
!= |
✅ | ✅ | ✅ | ✅ | ✅ | Inequality. QName inequality is also semantic. |
in |
✅ | ✅ | ❌ | ✅ | ✅ | value MUST be an array. QName membership uses semantic equality. |
not in |
✅ | ✅ | ❌ | ✅ | ✅ | value MUST be an array. QName membership uses semantic equality. |
contains |
✅ | ❌ | ❌ | ❌ | ❌ | Substring match; strings only. |
not contains |
✅ | ❌ | ❌ | ❌ | ❌ | Negative substring match; strings only. |
> |
✅ | ✅ | ❌ | ✅ | ❌ | Lexical / numeric / chronological ordering. |
< |
✅ | ✅ | ❌ | ✅ | ❌ | Lexical / numeric / chronological ordering. |
>= |
✅ | ✅ | ❌ | ✅ | ❌ | Lexical / numeric / chronological ordering. |
<= |
✅ | ✅ | ❌ | ✅ | ❌ | Lexical / numeric / chronological ordering. |
Property resolution rules:
property name in a where condition is an unprefixed name, the effective value is the value of the corresponding native attribute on the object.property name is a QName (contains a namespace prefix), the effective value MUST be resolved from the object's properties array: the entry whose property key equals the QName supplies the effective value. If no matching entry exists, the property value is considered absent and the condition evaluates to false.Type determination rules:
dataType of the underlying property definition in the resolved model. If the property type cannot be determined, processors MUST treat it as string.
dataType resolves to xs:date or xs:dateTime.
dataType resolves to xs:QName or any QName-derived type. Native object properties declared as QName-typed in this specification (e.g. dataType, modelType) are always treated as QName.For in and not in, the value MUST be a JSON array. Each element of the array must be compatible with the property type.
For all other operators, the value MUST be a JSON primitive (string, number, or boolean) compatible with the property type.
String operators: Comparisons use Unicode code point order (equivalent to lexicographic ordering per Unicode Standard Annex #10, unless an implementation provides explicit locale-sensitive override).
Number operators: Comparisons use IEEE 754 double-precision numeric ordering.
Date operators: Comparisons use chronological order as defined by ISO 8601. Date-only values (xs:date) are compared as if at midnight UTC. When one operand is timezoned and the other is not, and no implicit timezone is available from the processing context, processors MUST raise oimte:incomparableValues.
QName operators: Two QNames are equal if and only if they resolve to the same {namespace URI, local name} pair after expanding each prefix via the model's namespaces map. String equality of the serialised prefix:localName representation MUST NOT be used. Ordering operators (>, <, >=, <=) and substring operators (contains, not contains) have no defined semantics for QName values and MUST raise oimte:invalidSelectionExpression if applied to a QName property.
Logical combination: Multiple where conditions on a single select statement are combined with logical AND — all conditions must be satisfied. Multiple entries in the selections array are combined with logical OR — an object matching any entry is included.
The following constraints apply to each entry in the selections array. Violation of any constraint MUST cause processors to raise oimte:invalidSelectionExpression:
objectType property MUST be present and MUST be a syntactically valid QName. objectType QName MUST by an object type QName (see Section 5.2). objectType property MUST NOT be xbrl:importTaxonomyObject (oimte:invalidReferenceToImportTaxonomyObject).where entry MUST include a property, operator, and value. property name is a QName (i.e. it contains a namespace prefix), the effective value MUST be resolved from the object's properties array as described in the Property Resolution Rules above. property must be a valid property of the objectType. operator MUST be one of the ten values enumerated in the JSON Schema above. operator MUST be compatible with the effective type of the property as defined in the Operator Type Compatibility table.in and not in, the value MUST be a non-empty set. value MUST be compatible with the effective type of the property. value MUST be a JSON primitive.where set MAY be empty or absent; in that case all objects of the specified objectType are matched.
[[ PW: [P2] The "spec-taxonomies" directory currently contains the following files:
Case convention seems inconsistent. "sec-transform-types" clearly shouldn't be a "spec" taxononomy. I think we need to differentiate between the genuinely static files that are part of the spec, and ones that will change over time (e.g. iso4217). ]]
{
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": {
"xbrl": "https://xbrl.org/PWD/2026-09-01",
"xbrlr": "https://xbrl.org/PWD/2026-09-01/report",
"xs": "http://www.w3.org/2001/XMLSchema",
"utr": "https://xbrl.org/PWD/2026-09-01/utr",
"lei": "http://standards.iso.org/iso/17442",
"ref": "https://xbrl.org/PWD/2026-09-01/ref"
},
"documentNamespacePrefix": "xbrl"
},
"xbrlModel": {
"name": "xbrl:core",
"frameworkName": "Core",
"version": "2026",
"importedTaxonomies": [
{
"xbrlModelName": "xs:XMLSchemaTypes"
},
{
"xbrlModelName": "xbrlr:dataTypes"
},
{
"xbrlModelName": "ref:referenceProperties"
}
],
"cubeTypes": [
{
"name": "xbrl:reportCube",
"coreDimensions": [
"xbrl:concept",
"xbrl:period",
"xbrl:unit",
"xbrl:entity",
"xbrl:language"
],
"coreDomainClasses": [
"xbrl:conceptDomain"
]
},
{
"name": "xbrl:negativeCube",
"baseCubeType": "xbrl:reportCube"
}
],
"modelTypes": [
{
"name": "xbrl:taxonomy",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:headingObject",
"xbrl:memberObject",
"xbrl:cubeObject",
"xbrl:dimensionObject",
"xbrl:domainNetworkObject",
"xbrl:domainClassObject",
"xbrl:networkObject",
"xbrl:relationshipObject",
"xbrl:groupObject",
"xbrl:groupContentObject",
"xbrl:groupTreeObject",
"xbrl:labelObject",
"xbrl:referenceObject",
"xbrl:propertyTypeObject",
"xbrl:relationshipTypeObject",
"xbrl:cubeTypeObject",
"xbrl:dataTypeObject",
"xbrl:labelTypeObject",
"xbrl:referenceTypeObject",
"xbrl:importTaxonomyObject",
"xbrl:finalTaxonomyObject",
"xbrl:layoutObject"
]
},
{
"name": "xbrl:report",
"allowedObjects": [
"xbrl:factObject",
"xbrl:footnoteObject",
"xbrl:entityObject",
"xbrl:unitObject",
"xbrl:importTaxonomyObject",
"xbrl:networkObject"
],
"requiredProperties": [
"xbrl:reportDate"
]
}
],
"dimensions": [
{
"name": "xbrl:concept",
"domainClass": "xbrl:conceptDomain"
},
{
"name": "xbrl:unit",
"domainClass": "xbrl:unitDomain"
},
{
"name": "xbrl:period",
"domainClass": "xbrl:periodDomain"
},
{
"name": "xbrl:entity",
"domainClass": "xbrl:entityDomain"
},
{
"name": "xbrl:language",
"domainClass": "xbrl:languageDomain"
}
],
"domainClasses": [
{
"name": "xbrl:conceptDomain",
"allowedDomainItem": "xbrl:conceptObject"
},
{
"name": "xbrl:periodDomain",
"allowedDomainItem": "xs:dateTime"
},
{
"name": "xbrl:unitDomain",
"allowedDomainItem": "xbrl:unitObject"
},
{
"name": "xbrl:entityDomain",
"allowedDomainItem": "xbrl:entityObject"
},
{
"name": "xbrl:languageDomain",
"allowedDomainItem": "xbrl:languageType"
},
{
"name": "xbrl:traitDomain",
"allowedDomainItem": "xbrl:memberObject"
},
{
"name": "xbrl:nilReasonDomainClass",
"allowedDomainItem": "xbrl:memberObject"
},
{
"name": "xbrl:checksumAlgorithmDomainClass",
"allowedDomainItem": "xbrl:memberObject"
}
],
"labelTypes": [
{
"name": "xbrl:label",
"uri": "http://www.xbrl.org/2003/role/label",
"formatType": "text"
},
{
"name": "xbrl:terseLabel",
"uri": "http://www.xbrl.org/2003/role/terseLabel",
"formatType": "text"
},
{
"name": "xbrl:verboseLabel",
"uri": "http://www.xbrl.org/2003/role/verboseLabel",
"formatType": "text"
},
{
"name": "xbrl:positiveLabel",
"uri": "http://www.xbrl.org/2003/role/positiveLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:positiveTerseLabel",
"uri": "http://www.xbrl.org/2003/role/positiveTerseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:positiveVerboseLabel",
"uri": "http://www.xbrl.org/2003/role/positiveVerboseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativeLabel",
"uri": "http://www.xbrl.org/2003/role/negativeLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativeTerseLabel",
"uri": "http://www.xbrl.org/2003/role/negativeTerseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativeVerboseLabel",
"uri": "http://www.xbrl.org/2003/role/negativeVerboseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:zeroLabel",
"uri": "http://www.xbrl.org/2003/role/zeroLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:zeroTerseLabel",
"uri": "http://www.xbrl.org/2003/role/zeroTerseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:zeroVerboseLabel",
"uri": "http://www.xbrl.org/2003/role/zeroVerboseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:totalLabel",
"uri": "http://www.xbrl.org/2003/role/totalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:periodStartLabel",
"uri": "http://www.xbrl.org/2003/role/periodStartLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:periodEndLabel",
"uri": "http://www.xbrl.org/2003/role/periodEndLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:documentation",
"uri": "http://www.xbrl.org/2003/role/documentation",
"formatType": "text"
},
{
"name": "xbrl:definitionGuidance",
"uri": "http://www.xbrl.org/2003/role/definitionGuidance",
"formatType": "text"
},
{
"name": "xbrl:disclosureGuidance",
"uri": "http://www.xbrl.org/2003/role/disclosureGuidance",
"formatType": "text"
},
{
"name": "xbrl:presentationGuidance",
"uri": "http://www.xbrl.org/2003/role/presentationGuidance",
"formatType": "text"
},
{
"name": "xbrl:measurementGuidance",
"uri": "http://www.xbrl.org/2003/role/measurementGuidance",
"formatType": "text"
},
{
"name": "xbrl:commentaryGuidance",
"uri": "http://www.xbrl.org/2003/role/commentaryGuidance",
"formatType": "text"
},
{
"name": "xbrl:exampleGuidance",
"uri": "http://www.xbrl.org/2003/role/exampleGuidance",
"formatType": "text"
},
{
"name": "xbrl:deprecatedDateLabel",
"uri": "http://www.xbrl.org/2009/role/deprecatedDateLabel",
"formatType": "text"
},
{
"name": "xbrl:deprecatedLabel",
"uri": "http://www.xbrl.org/2009/role/deprecatedLabel",
"formatType": "text"
},
{
"name": "xbrl:negated",
"uri": "http://xbrl.us/us-gaap/role/label/negated",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedLabel",
"uri": "http://www.xbrl.org/2009/role/negatedLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedNetLabel",
"uri": "http://www.xbrl.org/2009/role/negatedNetLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedPeriodEnd",
"uri": "http://xbrl.us/us-gaap/role/label/negatedPeriodEnd",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedPeriodEndLabel",
"uri": "http://www.xbrl.org/2009/role/negatedPeriodEndLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedPeriodStart",
"uri": "http://xbrl.us/us-gaap/role/label/negatedPeriodStart",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedPeriodStartLabel",
"uri": "http://www.xbrl.org/2009/role/negatedPeriodStartLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedTerseLabel",
"uri": "http://www.xbrl.org/2009/role/negatedTerseLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedTotal",
"uri": "http://xbrl.us/us-gaap/role/label/negatedTotal",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negatedTotalLabel",
"uri": "http://www.xbrl.org/2009/role/negatedTotalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativePeriodEndLabel",
"uri": "http://www.xbrl.org/2009/role/negativePeriodEndTotalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativePeriodEndTotalLabel",
"uri": "http://www.xbrl.org/2009/role/negativePeriodEndTotalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativePeriodStartLabel",
"uri": "http://www.xbrl.org/2009/role/negativePeriodStartLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:negativePeriodStartTotalLabel",
"uri": "http://www.xbrl.org/2009/role/negativePeriodStartTotalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:netLabel",
"uri": "http://www.xbrl.org/2009/role/netLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:positivePeriodEndLabel",
"uri": "http://www.xbrl.org/2009/role/positivePeriodEndLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:positivePeriodEndTotalLabel",
"uri": "http://www.xbrl.org/2009/role/positivePeriodStartTotalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:positivePeriodStartLabel",
"uri": "http://www.xbrl.org/2009/role/positivePeriodStartLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:positivePeriodStartTotalLabel",
"uri": "http://www.xbrl.org/2009/role/positivePeriodStartTotalLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:restatedLabel",
"uri": "http://www.xbrl.org/2006/role/restatedLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:symbolLabel",
"formatType": "text",
"allowedObjects": [
"xbrl:unitObject"
]
},
{
"name": "xbrl:iconLabel",
"formatType": "text"
},
{
"name": "xbrl:errorMessage",
"formatType": "text"
}
],
"labels": [
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:label",
"value": "Standard Label"
},
{
"labelType": "xbrl:iconLabel",
"language": "en",
"forObject": "xbrl:nilReasonDomainClass",
"value": "∅"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:label",
"value": "Standard label for an object."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:terseLabel",
"value": "Short label for an object, often omitting text that should be inferable when the object is reported in the context of other related objects."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:verboseLabel",
"value": "Extended label for an object, making sure not to omit text that is required to enable the label to be understood on a stand alone basis."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positiveLabel",
"value": "Label for a concept, when the value being presented is positive. For example, the standard and standard positive labels might be 'profit after tax' and the standard negative labels 'loss after tax', the terse label and terse positive labels might both be 'profit', while the negative terse label might be 'loss'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positiveTerseLabel",
"value": "Label for a concept, when the value being presented is positive. For example, the standard and standard positive labels might be 'profit after tax' and the standard negative labels 'loss after tax', the terse label and terse positive labels might both be 'profit', while the negative terse label might be 'loss'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positiveVerboseLabel",
"value": "Label for a concept, when the value being presented is positive. For example, the standard and standard positive labels might be 'profit after tax' and the standard negative labels 'loss after tax', the terse label and terse positive labels might both be 'profit', while the negative terse label might be 'loss'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativeLabel",
"value": "Label for a concept, when the value being presented is negative. For example, the standard and standard positive labels might be 'profit after tax' and the standard negative labels 'loss after tax', the terse label and terse positive labels might both be 'profit', while the negative terse label might be 'loss'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativeTerseLabel",
"value": "Label for a concept, when the value being presented is negative. For example, the standard and standard positive labels might be 'profit after tax' and the standard negative labels 'loss after tax', the terse label and terse positive labels might both be 'profit', while the negative terse label might be 'loss'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativeVerboseLabel",
"value": "Label for a concept, when the value being presented is negative. For example, the standard and standard positive labels might be 'profit after tax' and the standard negative labels 'loss after tax', the terse label and terse positive labels might both be 'profit', while the negative terse label might be 'loss'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:zeroLabel",
"value": "Label for a concept, when the value being presented is zero."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:zeroTerseLabel",
"value": "Label for a concept, when the value being presented is zero."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:zeroVerboseLabel",
"value": "Label for a concept, when the value being presented is zero."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:totalLabel",
"value": "The label for a concept for use in presenting values associated with the concept when it is being reported as the total of a set of other values."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:periodStartLabel",
"value": "The label for a concept with periodType='instant' for use in presenting values associated with the concept when it is being reported as a start (end) of period value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:periodEndLabel",
"value": "The label for a concept with periodType='instant' for use in presenting values associated with the object when it is being reported as a start (end) of period value."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:documentation",
"value": "Documentation"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:documentation",
"value": "Documentation of an object, providing an explanation of its meaning and its appropriate usage and any other documentation deemed necessary."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:definitionGuidance",
"value": "A precise definition of an object, providing an explanation of its meaning and its appropriate usage."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:disclosureGuidance",
"value": "An explanation of the disclosure requirements relating to the object. Indicates whether the disclosure is mandatory (i.e. prescribed by authoritative literature); recommended (i.e. encouraged by authoritative literature); common practice (i.e. not prescribed by authoritative literature, but disclosure is common); structural completeness (i.e., included to complete the structure of the taxonomy)."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:presentationGuidance",
"value": "An explanation of the rules guiding presentation (placement and/or labelling) of this object in the context of other objects in one or more specific types of business reports. For example, 'Net Surplus should be disclosed on the face of the Profit and Loss statement'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:measurementGuidance",
"value": "An explanation of the method(s) required to be used when measuring values associated with this object in business reports."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:commentaryGuidance",
"value": "Any other general commentary on the object that assists in determining definition, disclosure, measurement, presentation or usage."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:exampleGuidance",
"value": "An example of the type of information intended to be captured by the object."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:commonPracticeRef",
"value": "Reference to documentation that details common practice."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:deprecatedDateLabel",
"value": "Label indicating the date when the concept was deprecated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:deprecatedLabel",
"value": "Label indicating that the concept is deprecated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negated",
"value": "When this label is the preferred label on a presentation arc whose target is an element having a numeric type, a conforming processor will not only present the fact using the specified label but will also present the its fact values negated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedLabel",
"value": "Label for a concept, when the value being presented should be negated (sign of the value should be 'flipped'). For example, the standard and standard positive labels might be 'profit (loss) after tax' and the negated labels 'loss (profit) after tax'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedNetLabel",
"value": "Label indicating that the net value is negated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedPeriodEnd",
"value": "Indicates that the period end value is negated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedPeriodEndLabel",
"value": "Label for a concept, when the value being presented should be negated (sign of the value should be 'flipped'). For example, the standard and standard positive labels might be 'profit (loss) after tax' and the negated labels 'loss (profit) after tax'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedPeriodStart",
"value": "Indicates that the period start value is negated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedPeriodStartLabel",
"value": "Label for a concept, when the value being presented should be negated (sign of the value should be 'flipped'). For example, the standard and standard positive labels might be 'profit (loss) after tax' and the negated labels 'loss (profit) after tax'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedTerseLabel",
"value": "Short label indicating that the value is negated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedTotal",
"value": "Indicates that the total value is negated."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negatedTotalLabel",
"value": "Label for a concept, when the value being presented should be negated (sign of the value should be 'flipped'). For example, the standard and standard positive labels might be 'profit (loss) after tax' and the negated labels 'loss (profit) after tax'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativePeriodEndLabel",
"value": "Label for a concept with periodType='instant' for use in presenting values associated with the concept when it is being reported as a negative period end value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativePeriodEndTotalLabel",
"value": "Label for a concept with periodType='instant' for use in presenting values associated with the concept when it is being reported as a negative period end total value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativePeriodStartLabel",
"value": "Label for a concept with periodType='instant' for use in presenting values associated with the concept when it is being reported as a negative period start value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativePeriodStartTotalLabel",
"value": "Label for a concept, when the value being presented is negative."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:netLabel",
"value": "The label for a concept for use in presenting values associated with the concept when it is being reported as the net of a set of other values. Net labels allows for expressing different labels than the one which would be used as total label if the presentation tree represents gross/net calculation instead of traditional calculation roll-up. For example standard label for 'Property, plant and equipment' can have total label 'Total property, plant and equipment' and net label 'Net property, plant and equipment'."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positivePeriodEndLabel",
"value": "Label for a concept, when the value being presented is positive."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positivePeriodEndTotalLabel",
"value": "Label for a concept, when the value being presented is positive."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positivePeriodStartLabel",
"value": "Label for a concept with periodType='instant' for use in presenting values associated with the concept when it is being reported as a positive period start value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:positivePeriodStartTotalLabel",
"value": "Label for a concept, when the value being presented is positive."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:restatedLabel",
"value": "At times an entity may restate certain account balances for financial reporting purposes. This may only occur according to specific reporting rules. For example, an entity may restate an equity account balance, say 'Reserves', due to an accounting change or fundamental error under International Financial Reporting Standards (IFRS). A separate label role is provided for such reporting of restated amounts, should they occur. The restated amount within a financial statement might provide a label such as 'Reserves, Restated Balance' to which this label role would be assigned to identify this type of label. Taxonomy creators would use this label role and provide a label which could be used on concepts that could be restated. Typically, these would be used on equity accounts."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:symbolLabel",
"value": "Label for a unit, when the unit is represented by a symbol."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:iconLabel",
"value": "Icon Label"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:iconLabel",
"value": "Label that can be used to associate images or emoji icons with different defined objects in the taxonomy. This label type uses the emoji datatype and can be applied to any model object to provide visual representation through icons, emoji, or image references."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:reference",
"value": "Standard reference for a Concept"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:definitionRef",
"value": "Reference to documentation that details a precise definition of the object."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:disclosureRef",
"value": "Reference to documentation that details an explanation of the disclosure requirements relating to the object. Specified categories include: mandatory, recommended"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:mandatoryDisclosureRef",
"value": "Reference to documentation that details an explanation of the disclosure requirements relating to the object. Specified categories include: mandatory"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:recommendedDisclosureRef",
"value": "Reference to documentation that details an explanation of the disclosure requirements relating to the object. Specified categories include: recommended"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:unspecifiedDisclosureRef",
"value": "Reference to documentation that details an explanation of the disclosure requirements relating to the object. Unspecified categories include, but are not limited to: common practice, structural completeness. The latter categories do not reference documentation but are indicated in the link role to indicate why the Concept has been included in the taxonomy."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:presentationRef",
"value": "Reference to documentation which details an explanation of the presentation, placement or labelling of this object in the context of other objects in one or more specific types of business reports"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:measurementRef",
"value": "Reference concerning the method(s) required to be used when measuring values associated with this object in business reports"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:commentaryRef",
"value": "Any other general commentary on the object that assists in determining appropriate usage"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:exampleRef",
"value": "Reference to documentation that illustrates by example the application of the object that assists in determining appropriate usage."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:dep-concept-deprecatedConcept",
"value": "Deprecated: concept - deprecated concept."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:dep-aggregateConcept-deprecatedPartConcept",
"value": "Deprecated: aggreate concept - deprecated part concept."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:dep-dimensionallyQualifiedConcept-deprecatedConcept",
"value": "Deprecated: dimensionally qualified concept - deprecated concept."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:dep-mutuallyExclusiveConcept-deprecatedConcept",
"value": "Deprecated: mutually exclusive concept - deprecated concept."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:dep-partConcept-deprecatedAggregateConcept",
"value": "Deprecated: part concept - deprecated aggregate concept."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:aggregation",
"value": "Population Aggregation Method (sum, avg, min, max, etc.)"
},
{
"forObject": "xbrl:concept",
"labelType": "xbrl:documentation",
"language": "en",
"value": "Represents the concept core dimension in a taxonomy. The concept dimension is used to identify concepts that have measurable facts (for example, a numeric or textual fact). Concepts have data types, period types and may have properties and labels."
},
{
"forObject": "xbrl:unit",
"labelType": "xbrl:documentation",
"language": "en",
"value": "Represents the unit core dimension in a taxonomy. Only unit objects can be added to the unit dimension. Each unit object defines the unit of measure associated with numeric facts, for example 'USD' or 'ug/m3'. Units may be simple or composed with numerators and denominators."
},
{
"forObject": "xbrl:period",
"labelType": "xbrl:documentation",
"language": "en",
"value": "The period core dimension identifies the reporting period associated with a fact. Period values may be instants, durations, or open intervals, depending on the taxonomy."
},
{
"forObject": "xbrl:entity",
"labelType": "xbrl:documentation",
"language": "en",
"value": "The entity core dimension identifies the reporting entity or subject of the fact. Entity identifiers used on this dimension may be expressed as LEIs, names or other identifiers as defined by the taxonomy."
},
{
"forObject": "xbrl:traitDomain",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A domain used to express trait values or annotations that can be applied to objects. Trait domains are typically used to model property-like annotations in the taxonomy."
},
{
"forObject": "xbrl:conceptDomain",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A concept domain groups concept members that can be referenced by cubes and dimensions. It is the domain used when a cube restricts the concept dimension to a subset of concepts."
},
{
"forObject": "xbrl:unitDomain",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A unit domain groups unit definitions for use by concepts and facts. It allows taxonomies to declare a set of preferred or allowed units."
},
{
"forObject": "xbrl:semanticLink",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A semantic link is a relationship type used to express semantic associations between objects, for example to indicate equivalence, suggested mappings or explanatory links."
},
{
"forObject": "xbrl:weight",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A weight link property is used on certain relationship types (for example summation-item) to indicate the multiplier applied to the source when computing aggregates."
},
{
"forObject": "xbrl:reconciliation",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A reconciliation link property is a boolean value used on a summation-item relationship types to indicate that the source and target xbrla:balance can be the same and have a -1 weight or be different and have a +1 weight."
},
{
"forObject": "xbrl:preferredLabel",
"labelType": "xbrl:documentation",
"language": "en",
"value": "The preferredLabel link property indicates which label role should be used as the preferred human-readable label for presentation."
},
{
"forObject": "xbrl:reportAttribute",
"labelType": "xbrl:documentation",
"language": "en",
"value": "Report attributes are properties attached to concepts objects to indicate how a concept in a taxonomy maps to standard report attributes such as reporting period end, or report type."
},
{
"forObject": "xbrl:traitLinkType",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A traitLinkType is a custom link property used to express typed property relationships between objects and trait domains."
},
{
"forObject": "xbrl:parent-child",
"labelType": "xbrl:documentation",
"language": "en",
"value": "The parent-child relationship type is used to build hierarchical structures (trees) between model objects such as concepts, members, and domains."
},
{
"forObject": "xbrl:class-subclass",
"labelType": "xbrl:documentation",
"language": "en",
"value": "The class-subclass relationship type expresses a subclassing relationship between concepts indicating a tighter or more specific definition."
},
{
"forObject": "xbrl:propertyValue-object",
"labelType": "xbrl:documentation",
"language": "en",
"value": "A propertyValue-object link expresses the assignment of a property value to a target model object, used to model custom properties in the taxonomy."
},
{
"forObject": "xbrl:concept-refDimension",
"labelType": "xbrl:documentation",
"language": "en",
"value": "The concept-refDimension relationship links a concept to a dimension indicating that the value of the concept in a detailed cube may be the key of a dimension is a summarized cube."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:reportCube",
"value": "Cube type representing a report or statement where period and entity core dimensions are expected."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:negativeCube",
"value": "Negative Cube Type"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:negativeCube",
"value": "Cube type used for negative assertions and exclusions in validation rules. Based on xbrl:reportCube, it specifies dimensional combinations that should NOT appear in a report or are prohibited in certain contexts. Negative cubes are commonly used in taxonomy validation to define forbidden fact patterns or to express constraints on what dimensional combinations are invalid."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:language",
"value": "Core dimension used to indicate the language of a fact where applicable."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:summation-item",
"value": "Relationship type that indicates the source contributes to the target as part of a summation (aggregation) with an associated weight."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:general-special",
"value": "Relationship type used to indicate a general-to-special relationship between concepts (a refinement or more specific version)."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:concept-aggDimension",
"value": "Relationship type that links a concept to a dimension when the concept represents an aggregation over that dimension (aggregation specified on the relationship)."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:unit-factConcept",
"value": "Relationship type indicating a unit applies to a fact concept or group of concepts."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:unitFact-factConcept",
"value": "Relationship type used for mapping unit-fact constructs between concept objects when unit-specific facts are modelled."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:conceptObject",
"value": "Concept Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:relationshipObject",
"value": "Relationship Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:referenceObject",
"value": "Reference Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:dimensionObject",
"value": "Dimension Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:domainClassObject",
"value": "Domain Class Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:headingObject",
"value": "Abstract Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:factObject",
"value": "Fact Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:factObject",
"value": "Represents a fact or data point in an XBRL report. Facts contain one or more fact values along with their dimensional context (concept, period, entity, unit, and other dimensions)."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:cubeObject",
"value": "Cube Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:unitObject",
"value": "Unit Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:networkObject",
"value": "Network"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:entityObject",
"value": "Entity Object"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:taxonomy",
"value": "Taxonomy Model Type"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:taxonomy",
"value": "The taxonomy model type defines the structure and metadata for an XBRL taxonomy. Taxonomies contain concepts, dimensions, cubes, relationships, networks, labels, references, and other objects that define the reporting framework. A taxonomy provides the semantic framework that defines what can be reported and how it should be structured."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:report",
"value": "Report Model Type"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:report",
"value": "The report model type represents an XBRL instance document or report containing actual fact data. Reports contain facts, footnotes, entities, and units that provide the actual reported information according to the rules defined in one or more taxonomies. Each report must specify a report date and typically references one or more taxonomies that define the valid reporting structures and concepts."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:specificationErrorURI",
"value": "Spec Error URI"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:xBRL-JSON",
"value": "OIM JSON Fact Map"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:xBRL-JSON",
"value": "Standard fact map for mapping facts from OIM JSON format to the XBRL model format. This map handles the transformation of JSON-based XBRL data into the Open Information Model structure."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:xBRL-XML",
"value": "xBRL-XML Fact Map"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:xBRL-XML",
"value": "Standard fact map for mapping facts from traditional XBRL 2.1 XML format to the XBRL model format. This map handles the transformation of XML-based XBRL v2.1 instance documents into the Open Information Model structure."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:cubeDimensionObject",
"value": "Cube Dimension Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:cubeDimensionObject",
"value": "Defines the association between a cube and a dimension, specifying which dimensions are used in a particular cube structure and any constraints on those dimensions."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:cubeTypeObject",
"value": "Cube Type Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:cubeTypeObject",
"value": "Defines a type of cube structure that specifies core dimensions and constraints. Cube types provide templates for creating cubes with predefined dimensional structures."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:dataTypeObject",
"value": "Data Type Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:dataTypeObject",
"value": "Defines a data type that can be used for concept values, extending or restricting XML Schema data types with XBRL-specific semantics and validation rules."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:domainNetworkObject",
"value": "Domain Network Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:domainNetworkObject",
"value": "Represents a domain member that can be used as a valid value on a dimension. Domains organize the members that categorize facts along a particular dimension."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:factMapObject",
"value": "Fact Map Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:factMapObject",
"value": "Defines a mapping template for transforming facts from external formats (XBRL 2.1 XML, OIM JSON, CSV, etc.) into the XBRL model format. Fact maps specify how to extract dimensions, values, and metadata from source data."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:factSourceObject",
"value": "Fact Source Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:factSourceObject",
"value": "Links a fact map to a specific data source, enabling the import of facts from external files or systems. Fact sources specify the location and format of external fact data."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:finalTaxonomyObject",
"value": "Final Taxonomy Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:finalTaxonomyObject",
"value": "Marks a taxonomy as final, preventing further imports or extensions. Final taxonomies are sealed and cannot be modified or extended by importing models."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:footnoteObject",
"value": "Footnote Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:footnoteObject",
"value": "Represents a footnote or explanatory note that provides additional context, explanations, or disclosures related to facts in the report."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:groupContentObject",
"value": "Group Content Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:groupContentObject",
"value": "Defines the content model for a group, specifying which objects or patterns can appear within the group structure."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:groupObject",
"value": "Group Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:groupObject",
"value": "Defines a reusable group of model objects that can be referenced by multiple networks or structures, promoting modularity and reuse in taxonomy design."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:groupTreeObject",
"value": "Group Tree Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:groupTreeObject",
"value": "Represents a specific instantiation of a group with its hierarchical tree structure, including any local modifications or extensions to the base group definition."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:importTaxonomyObject",
"value": "Import Taxonomy Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:importTaxonomyObject",
"value": "Declares the import of another taxonomy, making its objects and definitions available for use. Imports support modular taxonomy development and selective object inclusion."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:labelObject",
"value": "Label Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:labelObject",
"value": "Provides human-readable text labels for model objects in different languages and label types (standard, terse, verbose, documentation, etc.)."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:labelTypeObject",
"value": "Label Type Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:labelTypeObject",
"value": "Defines a type of label that can be associated with model objects, such as standard labels, terse labels, documentation, or custom label types for specific purposes."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:memberObject",
"value": "Member Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:memberObject",
"value": "Represents a member that can be used as a valid value for dimensions. Members provide the enumeration values for typed or explicit dimensions."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:modelTypeObject",
"value": "Model Type Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:modelTypeObject",
"value": "Defines constraints on XBRL models by specifying allowed object types, allowed properties, and required properties. Model types enable regulatory authorities to define specific report profiles."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:propertyObject",
"value": "Property Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:propertyObject",
"value": "Associates a property value with a model object, allowing the attachment of additional metadata and characteristics to concepts, dimensions, and other taxonomy elements."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:propertyTypeObject",
"value": "Property Type Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:propertyTypeObject",
"value": "Defines a type of property that can be attached to model objects, specifying the property's data type, allowed objects, and whether it is definitional."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:referenceTypeObject",
"value": "Reference Type Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:referenceTypeObject",
"value": "Defines a type of reference that can link model objects to authoritative literature, standards, or documentation sources."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:xbrlModelObject",
"value": "XBRL Model Object"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:xbrlModelObject",
"value": "The root model object representing an entire XBRL taxonomy or report. Contains all objects, relationships, and metadata that comprise a complete XBRL model."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:defaultLanguage",
"value": "A built-in property type that specifies the default BCP 47 language for text-valued objects (such as footnotes and text-typed facts) within the model. When a text-valued object does not declare an explicit language, processors MAY use the value of this property on the enclosing XBRL model object as the inherited language. This property may only be applied to the xbrl:xbrlModelObject."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:htmlElementId",
"value": "The HTML id attribute value of the span element whose inner text content contributes to the fact value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:htmlEscape",
"value": "If true, the value is the escaped markup representation; otherwise the concatenated descendant text content is used. Defaults to false."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:htmlDataAttribute",
"value": "The name of a data-* HTML attribute on an element whose value contributes to the fact value (e.g. data-xbrl-ref)."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:pdfFormField",
"value": "The field name of a PDF form field whose content contributes to the fact value."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:pdfPage",
"value": "The 1-based page number within the PDF document."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:pdfMcid",
"value": "The Marked Content Identifier (MCID) of a PDF content item."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:pdfElementId",
"value": "The structure element identifier within the PDF document's logical structure tree."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:pdfEscape",
"value": "If true, the value is the escaped representation of PDF content. Defaults to false."
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:tabularPath",
"value": "A tabularPath expression identifying a row, column, or cell in a tabular data source (CSV, spreadsheet). See the tabular path grammar appendix."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:errorMessage",
"value": "Error Message"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:conformanceErrorsProduced",
"value": "Errors Produced"
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:unknownNilReason",
"value": "Unknown"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:unknownNilReason",
"value": "The value is nil for an unknown reason."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:unavailableNilReason",
"value": "Unavailable"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:unavailableNilReason",
"value": "The value is nil because the information is unavailable, for example because it has not yet been collected or computed."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:withheldNilReason",
"value": "Withheld"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:withheldNilReason",
"value": "The value is nil because the reporting entity has chosen not to disclose it, even though it is known."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:immaterialNilReason",
"value": "Immaterial"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:immaterialNilReason",
"value": "The value is nil because it is considered immaterial or insignificant in the context of the report."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:confidentialNilReason",
"value": "Confidential"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:confidentialNilReason",
"value": "The value is nil because it is confidential and cannot be disclosed in this report."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:redactedNilReason",
"value": "Redacted"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:redactedNilReason",
"value": "The value has been intentionally removed or obscured from the report, for example for legal or regulatory reasons."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:notApplicableNilReason",
"value": "Not Applicable"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:notApplicableNilReason",
"value": "The concept does not apply to the reporting entity or reporting period, so no value exists."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:pendingNilReason",
"value": "Pending"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:pendingNilReason",
"value": "The value is nil because it is not yet finalised and is expected to be provided in a future report."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:notRequiredNilReason",
"value": "Not Required"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:notRequiredNilReason",
"value": "The value is nil because the applicable reporting rules do not require it to be disclosed in this context."
},
{
"labelType": "xbrl:label",
"language": "en",
"forObject": "xbrl:otherNilReason",
"value": "Other"
},
{
"labelType": "xbrl:documentation",
"language": "en",
"forObject": "xbrl:otherNilReason",
"value": "The value is nil for a reason not covered by the other nil reason members."
},
{
"forObject": "xbrl:SQName",
"language": "en",
"labelType": "xbrl:documentation",
"value": "SQName provides a simple type. This can be used to define typed dimensions domains that take SQName values. The prefix used in an SQName MUST correspond to a namespace prefix that is in scope at the point of use."
},
{
"forObject": "xbrl:prefixedContent",
"language": "en",
"labelType": "xbrl:documentation",
"value": "prefixedContent denotes values that rely for correct interpretation on namespace-prefix bindings in scope at the point of use. All item types that involve prefixed content should derive (directly or indirectly) from QName or prefixedContent Processors MUST raise an error if they encounter a fact with a type that is a subtype of prefixedContent that they do not recognise (unless that subtype is itself derived from a subtype that is recognised) as knowledge of the structure of the prefixed content is required to correctly preserve and present such content."
},
{
"forObject": "xbrl:noLangToken",
"language": "en",
"labelType": "xbrl:documentation",
"value": "noLangToken is a derivation of token and is used to denote values that should not have an associated language. This is typically used for values that are unique identifiers, rather than human-readable strings."
},
{
"forObject": "xbrl:noLangString",
"language": "en",
"labelType": "xbrl:documentation",
"value": "noLangString is a derivation of string and is used to denote values that should not have an associated language. This is typically used for values that are unique identifiers, rather than human-readable strings."
},
{
"forObject": "xbrl:rootSource",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The root source identifies a single point for network roots and group tree object roots to be anchored by a relationship object. This allows multiple network roots to be defined and ordered in a network hierarchy. The root source QName need not be visible by tools and is defined using the same QName across all network objects and group tree objects. The QName xbrl:rootSource is used to define the root source."
},
{
"forObject": "xbrl:rootSource",
"language": "en",
"labelType": "xbrl:label",
"value": "Root Source QName"
},
{
"forObject": "xbrl:nil",
"language": "en",
"labelType": "xbrl:documentation",
"value": "The nil property indicates a fact is nil and the reason why it is nil. The nil property defines a fact object value is not disclosed, and the reason why. This can be due to the fact being immaterial, confidential, unknown, or not yet available. A fact with a property of nil does not imply it is zero, however for calculation relationships it is excluded from the calculation. The nil property can only be used with concepts that have a nillable property that is not false."
}
],
"namespacePrefixes": [
{
"namespace": "https://xbrl.org/PWD/2026-09-01",
"preferredPrefixes": [
"xbrl"
]
},
{
"namespace": "https://xbrl.org/PWD/2026-09-01/report",
"preferredPrefixes": [
"xbrlr"
]
},
{
"namespace": "http://www.w3.org/2001/XMLSchema",
"preferredPrefixes": [
"xs"
]
},
{
"namespace": "https://xbrl.org/PWD/2026-09-01/utr",
"preferredPrefixes": [
"utr"
]
}
],
"propertyTypes": [
{
"name": "xbrl:semanticLink",
"dataType": "xs:anyURI",
"definitional": false,
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "xbrl:weight",
"dataType": "xbrlr:weightType",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
},
{
"name": "xbrl:usable",
"dataType": "xs:boolean",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
},
{
"name": "xbrl:reconciliation",
"dataType": "xs:boolean",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
},
{
"name": "xbrl:aggregation",
"dataType": "xbrlr:aggregationType",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject",
"xbrl:conceptObject",
"xbrl:dimensionObject",
"xbrl:domainClassObject"
]
},
{
"name": "xbrl:referenceCubeName",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
},
{
"name": "xbrl:preferredLabel",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject",
"xbrl:networkObject"
]
},
{
"name": "xbrl:reportAttribute",
"dataType": "xbrlr:reportAttributeType",
"definitional": false,
"allowedObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:traitLinkType",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
},
{
"name": "xbrl:abstractDataType",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:headingObject"
]
},
{
"name": "xbrl:severity",
"dataType": "xs:string",
"definitional": true,
"allowedObjects": [
"xbrl:memberObject"
]
},
{
"name": "xbrl:conformanceTestFileName",
"dataType": "xs:string",
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "xbrl:conformanceStatus",
"dataType": "xs:string",
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "xbrl:conformanceErrorsProduced",
"dataType": "xs:integer",
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "xbrl:conformanceTestDescription",
"dataType": "xs:string",
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "xbrl:specificationErrorURI",
"dataType": "xbrlr:realURL",
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "xbrl:validationLocation",
"dataType": "xs:string",
"allowedObjects": [
"xbrl:memberObject"
]
},
{
"name": "xbrl:reportDate",
"dataType": "xs:date",
"allowedObjects": [
"xbrl:xbrlModelObject"
]
},
{
"name": "xbrl:reportFilingDate",
"dataType": "xs:dateTime",
"allowedObjects": [
"xbrl:xbrlModelObject"
]
},
{
"name": "xbrl:defaultLanguage",
"dataType": "xbrl:languageType",
"allowedObjects": [
"xbrl:xbrlModelObject"
]
},
{
"name": "xbrl:propertyValue",
"dataType": "xs:anySimpleType",
"definitional": false,
"allowedObjects": [
"xbrl:relationshipObject"
]
},
{
"name": "xbrl:factLocation",
"dataType": "xs:QName",
"definitional": false,
"allowedObjects": [
"xbrl:groupObject"
]
},
{
"name": "xbrl:nil",
"dataType": "xs:QName",
"enumerationDomain": "xbrl:nilReasonType",
"definitional": false,
"allowedObjects": [
"xbrl:factObject"
]
},
{
"name": "xbrl:htmlElementId",
"dataType": "xbrlr:stringCollection",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject",
"xbrl:factValueAnchorObject"
]
},
{
"name": "xbrl:htmlEscape",
"dataType": "xs:boolean",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:htmlDataAttribute",
"dataType": "xs:string",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:pdfFormField",
"dataType": "xs:string",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:pdfPage",
"dataType": "xs:integer",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:pdfMcid",
"dataType": "xbrlr:stringCollection",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:pdfElementId",
"dataType": "xs:string",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:pdfEscape",
"dataType": "xs:boolean",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
},
{
"name": "xbrl:tabularPath",
"dataType": "xs:string",
"definitional": false,
"allowedObjects": [
"xbrl:factValueSourceObject"
]
}
],
"factLocatorTypes": [
{
"name": "xbrl:htmlElementLocatorType",
"sourceMediaType": "text/html",
"requiredProperties": [
"xbrl:htmlElementId"
],
"allowedProperties": [
"xbrl:htmlElementId"
]
},
{
"name": "xbrl:htmlDataAttributeLocatorType",
"sourceMediaType": "text/html",
"requiredProperties": [
"xbrl:htmlDataAttribute"
],
"allowedProperties": [
"xbrl:htmlDataAttribute"
]
},
{
"name": "xbrl:pdfFormFieldLocatorType",
"sourceMediaType": "application/pdf",
"requiredProperties": [
"xbrl:pdfFormField"
],
"allowedProperties": [
"xbrl:pdfFormField"
]
},
{
"name": "xbrl:pdfContentLocatorType",
"sourceMediaType": "application/pdf",
"requiredProperties": [
"xbrl:pdfPage"
],
"allowedProperties": [
"xbrl:pdfPage",
"xbrl:pdfMcid",
"xbrl:pdfElementId",
"xbrl:pdfEscape"
]
},
{
"name": "xbrl:tabularLocatorType",
"sourceMediaType": "text/csv",
"requiredProperties": [
"xbrl:tabularPath"
],
"allowedProperties": [
"xbrl:tabularPath"
]
}
],
"referenceTypes": [
{
"name": "xbrl:reference",
"uri": "http://www.xbrl.org/2003/role/reference"
},
{
"name": "xbrl:definitionRef",
"uri": "http://www.xbrl.org/2003/role/definitionRef"
},
{
"name": "xbrl:disclosureRef",
"uri": "http://www.xbrl.org/2003/role/disclosureRef"
},
{
"name": "xbrl:mandatoryDisclosureRef",
"uri": "http://www.xbrl.org/2003/role/mandatoryDisclosureRef"
},
{
"name": "xbrl:recommendedDisclosureRef",
"uri": "http://www.xbrl.org/2003/role/recommendedDisclosureRef"
},
{
"name": "xbrl:unspecifiedDisclosureRef",
"uri": "http://www.xbrl.org/2003/role/unspecifiedDisclosureRef"
},
{
"name": "xbrl:presentationRef",
"uri": "http://www.xbrl.org/2003/role/presentationRef"
},
{
"name": "xbrl:measurementRef",
"uri": "http://www.xbrl.org/2003/role/measurementRef"
},
{
"name": "xbrl:commentaryRef",
"uri": "http://www.xbrl.org/2003/role/commentaryRef"
},
{
"name": "xbrl:exampleRef",
"uri": "http://www.xbrl.org/2003/role/exampleRef"
},
{
"name": "xbrl:commonPracticeRef",
"uri": "http://www.xbrl.org/2009/role/commonPracticeRef"
},
{
"name": "xbrl:dataTypeRequirement",
"allowedObjects": [
"xbrl:dataTypeObject"
]
},
{
"name": "xbrl:baseUnitsStandard",
"allowedObjects": [
"xbrl:unitObject"
],
"requiredProperties": [
"utr:baseStandardIdentifier"
]
},
{
"name": "xbrl:specStatus",
"allowedObjects": [
"xbrl:dataTypeObject",
"xbrl:unitObject"
]
},
{
"name": "xbrl:semanticRef",
"requiredProperties": [
"xbrl:semanticLink"
]
},
{
"name": "xbrl:conformanceTestReference",
"allowedObjects": [
"xbrl:memberObject"
]
},
{
"name": "xbrl:specificationErrorReference",
"allowedObjects": [
"xbrl:memberObject"
]
}
],
"relationshipTypes": [
{
"name": "xbrl:parent-child",
"uri": "http://www.xbrl.org/2003/arcrole/parent-child",
"cycles": "undirected",
"allowedLinkProperties": [
"xbrl:preferredLabel"
]
},
{
"name": "xbrl:summation-item",
"uri": "https://xbrl.org/2023/arcrole/summation-item",
"cycles": "undirected",
"allowedLinkProperties": [
"xbrl:weight",
"xbrl:reconciliation"
],
"requiredLinkProperties": [
"xbrl:weight"
],
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:class-subclass",
"uri": "http://www.xbrl.org/2003/arcrole/class-subclass",
"cycles": "none",
"sourceObjects": [
"xbrl:conceptObject",
"xbrl:domainClassObject"
],
"targetObjects": [
"xbrl:conceptObject",
"xbrl:domainClassObject"
]
},
{
"name": "xbrl:general-special",
"uri": "http://www.xbrl.org/2003/arcrole/general-special",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:essence-alias",
"uri": "http://www.xbrl.org/2003/arcrole/essence-alias",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:propertyValue-object",
"uri": "http://xbrl.org/oim/propertyValue-object",
"cycles": "undirected",
"allowedLinkProperties": [
"xbrl:traitLinkType"
],
"requiredLinkProperties": [
"xbrl:traitLinkType"
],
"sourceObjects": [
"xbrl:memberObject"
],
"targetObjects": [
"xbrl:xbrlModelObject",
"xbrl:conceptObject",
"xbrl:headingObject",
"xbrl:memberObject",
"xbrl:dimensionObject",
"xbrl:entityObject",
"xbrl:networkObject",
"xbrl:groupObject",
"xbrl:cubeObject",
"xbrl:domainNetworkObject",
"xbrl:domainClassObject",
"xbrl:relationshipObject",
"xbrl:labelObject",
"xbrl:referenceObject"
]
},
{
"name": "xbrl:concept-refDimension",
"uri": "http://xbrl.org/oim/concept-refDimension",
"cycles": "undirected",
"allowedLinkProperties": [
"xbrl:referenceCubeName"
],
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:dimensionObject"
]
},
{
"name": "xbrl:concept-aggDimension",
"uri": "http://xbrl.org/oim/concept-aggDimension",
"cycles": "undirected",
"allowedLinkProperties": [
"xbrl:aggregation"
],
"requiredLinkProperties": [
"xbrl:aggregation"
],
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:dimensionObject"
]
},
{
"name": "xbrl:unit-factConcept",
"uri": "http://xbrl.org/oim/unit-factConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:unitObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:unitFact-factConcept",
"uri": "http://xbrl.org/oim/unitFact-factConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:dep-concept-deprecatedConcept",
"uri": "http://www.xbrl.org/2009/arcrole/dep-concept-deprecatedConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject",
"xbrl:headingObject",
"xbrl:memberObject",
"xbrl:domainNetworkObject",
"xbrl:domainClassObject",
"xbrl:dimensionObject",
"xbrl:cubeObject"
],
"targetObjects": [
"xbrl:conceptObject",
"xbrl:headingObject",
"xbrl:memberObject",
"xbrl:domainNetworkObject",
"xbrl:domainClassObject",
"xbrl:dimensionObject",
"xbrl:cubeObject"
]
},
{
"name": "xbrl:dep-aggregateConcept-deprecatedPartConcept",
"uri": "http://www.xbrl.org/2009/arcrole/dep-aggregateConcept-deprecatedPartConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:dep-dimensionallyQualifiedConcept-deprecatedConcept",
"uri": "http://www.xbrl.org/2009/arcrole/dep-dimensionallyQualifiedConcept-deprecatedConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:dep-mutuallyExclusiveConcept-deprecatedConcept",
"uri": "http://www.xbrl.org/2009/arcrole/dep-mutuallyExclusiveConcept-deprecatedConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:dep-partConcept-deprecatedAggregateConcept",
"uri": "http://www.xbrl.org/2009/arcrole/dep-partConcept-deprecatedAggregateConcept",
"cycles": "undirected",
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:conceptObject"
]
},
{
"name": "xbrl:taxonomy-group",
"cycles": "none",
"sourceObjects": [
"xbrl:xbrlModelObject",
"xbrl:groupObject"
],
"targetObjects": [
"xbrl:groupObject"
]
},
{
"name": "xbrl:fact-inFact",
"uri": "http://xbrl.org/oim/fact-inFact",
"cycles": "undirected",
"sourceObjects": [
"xbrl:factObject"
],
"targetObjects": [
"xbrl:factObject"
]
},
{
"name": "xbrl:fact-inFootnote",
"uri": "http://xbrl.org/oim/fact-inFootnote",
"cycles": "undirected",
"sourceObjects": [
"xbrl:factObject"
],
"targetObjects": [
"xbrl:footnoteObject"
]
},
{
"name": "xbrl:fact-explanatoryFact",
"uri": "http://xbrl.org/oim/fact-explanatoryFact",
"cycles": "undirected",
"sourceObjects": [
"xbrl:factObject"
],
"targetObjects": [
"xbrl:factObject"
]
},
{
"name": "xbrl:property-dependentProperty",
"cycles": "none",
"allowedLinkProperties": [
"xbrl:propertyValue"
],
"sourceObjects": [
"xbrl:propertyTypeObject"
],
"targetObjects": [
"xbrl:propertyTypeObject"
]
}
],
"factMaps": [
{
"name": "xbrl:xBRL-JSON"
},
{
"name": "xbrl:xBRL-XML"
},
{
"name": "xbrl:inline-XBRL-1.1",
"factLocatorType": "xbrl:htmlElementLocatorType"
}
],
"networks": [
{
"name": "xbrl:fact-inFootnote-network",
"relationshipTypeName": "xbrl:fact-inFootnote"
},
{
"name": "xbrl:fact-inFact-network",
"relationshipTypeName": "xbrl:fact-inFact"
},
{
"name": "xbrl:fact-explanatoryFact-network",
"relationshipTypeName": "xbrl:fact-explanatoryFact"
}
],
"impliedObjects": [
{
"name": "xbrl:LegalEntityIdentifier",
"namespace": "http://standards.iso.org/iso/17442",
"domainClass": "xbrl:entityDomain",
"objectType": "xbrl:entityObject",
"localNameConstraint": "xbrl:LEICdataType"
}
],
"dataTypes": [
{
"name": "xbrl:LEICdataType",
"baseType": "xs:QName",
"checksumAlgorithm": "xbrl:iso7064-Mod-97-10"
},
{
"name": "xbrl:languageType",
"baseType": "xs:string",
"patterns": [
"^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$"
]
},
{
"name": "xbrl:periodType",
"baseType": "xs:string",
"enumeration": [
"instant",
"duration",
"none"
]
},
{
"name": "xbrl:SQName",
"baseType": "xbrl:prefixedContent",
"patterns": [
"[^:\\s0-9][^:\\s]*:\\S+"
]
},
{
"name": "xbrl:noLangToken",
"baseType": "xs:token"
},
{
"name": "xbrl:noLangString",
"baseType": "xs:string"
},
{
"name": "xbrl:prefixedContent",
"baseType": "xbrl:noLangToken"
}
],
"domainNetworks": [
{
"name": "xbrl:nilReasonType",
"root": "xbrl:nilReasonDomainClass",
"relationships": [
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:unknownNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:unavailableNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:withheldNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:immaterialNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:confidentialNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:redactedNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:notApplicableNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:pendingNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:notRequiredNilReason"
},
{
"source": "xbrl:nilReasonDomainClass",
"target": "xbrl:otherNilReason"
}
]
}
],
"members": [
{
"name": "xbrl:unknownNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:unavailableNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:withheldNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:immaterialNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:confidentialNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:redactedNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:notApplicableNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:pendingNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:notRequiredNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:otherNilReason",
"domainClasses": [
"xbrl:nilReasonDomainClass"
]
},
{
"name": "xbrl:iso7064-Mod-97-10",
"domainClasses": [
"xbrl:checksumAlgorithmDomainClass"
]
}
],
"collectionTypes": [
{
"name": "xbrl:SQNames",
"dataType": "xbrl:SQName",
"uniqueValues": true,
"orderedValues": true
}
],
"references": [
{
"name": "xbrl:PrefixedContentRequirementReference",
"forObjects": [
"xbrl:prefixedContent"
],
"referenceType": "xbrl:dataTypeRequirement",
"properties": [
{
"property": "ref:Requirement",
"value": "This data type acts as a supertype for all custom types that rely on namespace-prefix bindings. It allows processors to 'fail fast' if presented with prefixed content that they do not understand, rather than silently breaking or changing the semantics of such values."
}
]
}
]
}
}
{
"$schema": "../tavi-schema.json",
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"namespaces": {
"exp": "http://example.com/taxonomy",
"lei": "http://standards.iso.org/iso/17442",
"xbrl": "https://xbrl.org/PWD/2026-09-01",
"xbrla": "https://xbrl.org/PWD/2026-09-01/accounting",
"xbrlm": "https://xbrl.org/PWD/2026-09-01/model",
"iso4217": "http://www.xbrl.org/2003/iso4217",
"utr": "https://xbrl.org/PWD/2026-09-01/utr",
"xbrlr": "https://xbrl.org/PWD/2026-09-01/report",
"xs": "http://www.w3.org/2001/XMLSchema",
"ref": "https://xbrl.org/PWD/2026-09-01/ref",
"dei": "http://xbrl.sec.gov/dei/2025",
"mini2": "http://example.com/mini2"
},
"documentNamespacePrefix": "exp",
"sourceMappings": [
{
"sourceName": "exp:SalesEventTable",
"url": "../examples/SalesEventTable.csv"
},
{
"sourceName": "exp:SalesEventTable2",
"url": "../examples/SalesEventTable2.csv"
},
{
"sourceName": "exp:IncomeStatementTable",
"url": "../examples/IncomeStatementTable.csv"
}
],
"importMapping": {
"mini2:MiniTaxonomy2": "../examples/copilot-mini2.json"
}
},
"xbrlModel": {
"name": "exp:SampleTaxonomy",
"frameworkName": "us-gaap",
"version": "2024",
"importedTaxonomies": [
{
"xbrlModelName": "mini2:MiniTaxonomy2",
"selections": [
{
"objectType": "xbrl:conceptObject",
"where": [
{
"property": "periodType",
"operator": "==",
"value": "instant"
}
]
}
],
"excludeLabels": true
},
{
"xbrlModelName": "mini2:MiniTaxonomy2",
"selections": [
{
"objectType": "xbrl:labelObject",
"where": [
{
"property": "forObject",
"operator": "==",
"value": "mini2:Inventory"
}
]
}
]
},
{
"xbrlModelName": "xbrlm:base"
},
{
"xbrlModelName": "xbrla:accountingModule"
}
],
"propertyTypes": [
{
"name": "exp:ipsum",
"dataType": "xs:string",
"definitional": true,
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:relationshipObject"
],
"allowedAsLinkProperty": true
},
{
"name": "exp:SubSubSection",
"dataType": "xs:string",
"definitional": false,
"allowedObjects": [
"xbrl:referenceObject"
]
},
{
"name": "exp:AccountingClassType",
"dataType": "xs:QName",
"enumerationDomain": "exp:AccountingClassDomain",
"definitional": false,
"allowedObjects": [
"xbrl:conceptObject"
]
}
],
"headings": [
{
"name": "exp:StatementOfIncome"
}
],
"concepts": [
{
"name": "exp:Revenue",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"nillable": true,
"properties": [
{
"property": "xbrla:balance",
"value": "credit"
}
]
},
{
"name": "exp:CostOfGoodsSold",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"properties": [
{
"property": "xbrla:balance",
"value": "debit"
}
],
"nillable": true
},
{
"name": "exp:GrossProfit",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"properties": [
{
"property": "xbrla:balance",
"value": "credit"
}
],
"nillable": true
},
{
"name": "exp:NetIncome",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"properties": [
{
"property": "xbrla:balance",
"value": "credit"
}
],
"nillable": true
},
{
"name": "exp:OperatingExpenses",
"dataType": "xbrlr:monetary",
"periodType": "duration",
"properties": [
{
"property": "xbrla:balance",
"value": "debit"
}
],
"nillable": true
},
{
"name": "exp:Country",
"dataType": "xs:QName",
"periodType": "none",
"enumerationDomain": "exp:DomainOfCountries",
"nillable": true
},
{
"name": "exp:EventDescription",
"dataType": "xs:string",
"periodType": "none",
"nillable": true
},
{
"name": "exp:EventDate",
"dataType": "xs:dateTime",
"periodType": "none",
"nillable": true
},
{
"name": "exp:FunctionalCurrency",
"dataType": "xs:QName",
"periodType": "none",
"nillable": true
},
{
"name": "exp:FunctionalAmount",
"dataType": "xs:decimal",
"periodType": "none",
"nillable": true
},
{
"name": "exp:ReportingCurrency",
"dataType": "xs:QName",
"periodType": "none",
"nillable": true
},
{
"name": "exp:ReportingAmount",
"dataType": "xs:decimal",
"periodType": "none",
"nillable": true
},
{
"name": "exp:ProductIdentifier",
"dataType": "xs:string",
"periodType": "none",
"nillable": true
},
{
"name": "exp:ProductDescription",
"dataType": "xs:string",
"periodType": "duration",
"nillable": true
},
{
"name": "exp:ProductWeight",
"dataType": "xbrlr:mass",
"periodType": "duration",
"nillable": true
},
{
"name": "exp:ProductColor",
"dataType": "xs:string",
"periodType": "duration",
"nillable": true
},
{
"name": "exp:ProductPackageType",
"dataType": "xs:string",
"periodType": "duration",
"nillable": true
},
{
"name": "exp:ProductFlavor",
"dataType": "xs:string",
"periodType": "duration",
"nillable": true
},
{
"name": "exp:ReportDate",
"dataType": "xs:dateTime",
"periodType": "duration",
"nillable": true,
"properties": [
{
"property": "xbrl:reportAttribute",
"value": "reportDate"
}
]
},
{
"name": "exp:PriorPeriod",
"dataType": "xs:dateTime",
"periodType": "duration",
"nillable": true
},
{
"name": "exp:PeakGridElectricityDemandMax",
"dataType": "xbrlr:power",
"periodType": "none",
"nillable": true,
"properties": [
{
"property": "xbrl:aggregation",
"value": "max"
}
]
},
{
"name": "exp:MyStringCollectionConcept",
"dataType": "exp:myStringCollection",
"periodType": "instant",
"nillable": true
}
],
"members": [
{
"name": "exp:Country_USA",
"domainClasses": [
"exp:DomainOfCountriesRoot"
]
},
{
"name": "exp:Country_Canada",
"domainClasses": [
"exp:DomainOfCountriesRoot"
]
},
{
"name": "exp:Country_UK",
"domainClasses": [
"exp:DomainOfCountriesRoot"
]
},
{
"name": "exp:Country_Mexico",
"domainClasses": [
"exp:DomainOfCountriesRoot"
]
},
{
"name": "exp:RevenueMember"
},
{
"name": "exp:ExpenseMember"
}
],
"dimensions": [
{
"name": "exp:ProductIdentifierDimension",
"domainClass": "exp:ProductIdentifiersRoot",
"cubeTypes": [
"xbrla:referenceCube"
]
},
{
"name": "exp:CountryDimension",
"domainClass": "exp:DomainOfCountriesRoot"
},
{
"name": "exp:SaleEventDimension",
"domainClass": "exp:SaleEventRoot",
"cubeTypes": [
"xbrla:eventCube"
]
},
{
"name": "exp:TimeSeriesPeakDemandDimension",
"domainClass": "exp:TimeSeriesPeakDemandRoot",
"cubeTypes": [
"xbrla:timeSeriesCube"
]
}
],
"entities": [
{
"name": "exp:00EHHQ2ZHDCFXJCPCL46"
},
{
"name": "exp:00EHHQ2ZHDCFXJCPCL47"
}
],
"units": [
{
"name": "exp:flagez",
"dataType": "xbrlr:flow",
"compositeUnitRepresentation": [
"utr:l/utr:S"
]
}
],
"groups": [
{
"name": "exp:CountryGroup",
"groupURI": "http://example.com/groups/country"
},
{
"name": "exp:IncomeStatementGroup",
"groupURI": "http://example.com/groups/income-statement"
},
{
"name": "exp:SaleEventGroup",
"groupURI": "http://example.com/groups/sale-event"
},
{
"name": "exp:ProductListingGroup",
"groupURI": "http://example.com/groups/product-listing"
},
{
"name": "exp:PeakTimeSeriesGroup",
"groupURI": "http://example.com/groups/peak-timeseries"
},
{
"name": "exp:NotesGroup",
"groupURI": "http://example.com/groups/notes"
}
],
"groupContents": [
{
"groupName": "exp:CountryGroup",
"forObject": "exp:GeographicCube",
"order": 1
},
{
"groupName": "exp:CountryGroup",
"forObject": "exp:GeographyTable1",
"order": 2
},
{
"groupName": "exp:CountryGroup",
"forObject": "exp:GeographyTable2",
"order": 3
},
{
"groupName": "exp:CountryGroup",
"forObject": "exp:GeographyTable3",
"order": 4
},
{
"groupName": "exp:CountryGroup",
"forObject": "exp:GeographyTable4",
"order": 5
},
{
"groupName": "exp:CountryGroup",
"forObject": "exp:IncomeStatementTable0"
},
{
"groupName": "exp:IncomeStatementGroup",
"forObject": "exp:IncomeStatementCube",
"order": 1
},
{
"groupName": "exp:IncomeStatementGroup",
"forObject": "exp:Network2",
"order": 2
},
{
"groupName": "exp:IncomeStatementGroup",
"forObject": "exp:Network3",
"order": 3
},
{
"groupName": "exp:IncomeStatementGroup",
"forObject": "exp:IncomeStatementTable0",
"order": 4
},
{
"groupName": "exp:IncomeStatementGroup",
"forObject": "exp:IncomeStatementTable2",
"order": 5
},
{
"groupName": "exp:IncomeStatementGroup",
"forObject": "exp:IncomeStatementTable3",
"order": 6
},
{
"groupName": "exp:SaleEventGroup",
"forObject": "exp:SaleEventCube"
},
{
"groupName": "exp:ProductListingGroup",
"forObject": "exp:ProductIdentifierCube"
},
{
"groupName": "exp:PeakTimeSeriesGroup",
"forObject": "exp:IntervalTimeSeriesCube"
},
{
"groupName": "exp:NotesGroup",
"forObject": "exp:network1",
"order": 1
},
{
"groupName": "exp:NotesGroup",
"forObject": "exp:network4",
"order": 2
}
],
"groupTree": {
"name": "exp:SampleTaxonomyGroupTree",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:IncomeStatementGroup",
"order": 1
},
{
"source": "xbrl:rootSource",
"target": "exp:CountryGroup",
"order": 2
},
{
"source": "xbrl:rootSource",
"target": "exp:ProductListingGroup",
"order": 3
},
{
"source": "xbrl:rootSource",
"target": "exp:NotesGroup",
"order": 4
},
{
"source": "xbrl:rootSource",
"target": "exp:SaleEventGroup",
"order": 1
},
{
"source": "xbrl:rootSource",
"target": "exp:PeakTimeSeriesGroup",
"order": 1
}
]
},
"relationshipTypes": [
{
"name": "exp:concept-abstract",
"uri": "http://example.com/groups/concept-abstract",
"cycles": "none",
"allowedLinkProperties": [
"exp:ipsum"
],
"requiredLinkProperties": [
"exp:ipsum"
],
"sourceObjects": [
"xbrl:conceptObject"
],
"targetObjects": [
"xbrl:headingObject"
]
}
],
"cubes": [
{
"name": "exp:GeographicCube",
"cubeType": "xbrl:reportCube",
"cubeDimensions": [
{
"domainNetwork": "exp:DomainOfCountries",
"optional": true,
"dimension": "exp:CountryDimension"
},
{
"domainNetwork": "exp:PrimaryCountryDomain",
"dimension": "xbrl:concept"
},
{
"optional": true,
"dimension": "xbrl:unit"
},
{
"dimension": "xbrl:entity"
},
{
"optional": true,
"dimension": "xbrl:period"
}
]
},
{
"name": "exp:IncomeStatementCube",
"cubeType": "exp:myIncomeStatementCube",
"cubeDimensions": [
{
"domainNetwork": "exp:PrimaryIncomeStatementDomain",
"dimension": "xbrl:concept"
},
{
"periodConstraints": [
{
"periodType": "duration",
"timeSpan": "P1Y",
"endDate": {
"conceptName": "exp:ReportDate"
}
},
{
"periodType": "duration",
"timeSpan": "P1Y",
"endDate": {
"conceptName": "exp:ReportDate",
"timeShift": "-P1Y"
}
},
{
"periodType": "duration",
"periodPattern": "YYYY-04-01T00:00:00/YYYY-07-01T00:00:00"
},
{
"periodType": "instant",
"endDate": {
"context": "exp:ReportDate@end"
}
},
{
"periodType": "instant",
"endDate": {
"value": "2025-12-31"
}
}
],
"dimension": "xbrl:period"
},
{
"domainNetwork": "exp:IncomeStatementUnitDomain",
"optional": true,
"dimension": "xbrl:unit"
},
{
"dimension": "xbrl:entity"
}
],
"cubeNetworks": [
"exp:Network3",
"exp:Network2"
]
},
{
"name": "exp:SaleEventCube",
"cubeType": "xbrla:eventCube",
"cubeDimensions": [
{
"domainDataType": "xs:token",
"optional": false,
"dimension": "exp:SaleEventDimension"
},
{
"domainNetwork": "exp:PrimaryEventDomain",
"dimension": "xbrl:concept"
}
],
"cubeNetworks": [
"exp:ConceptToDimensionNetwork",
"exp:ConceptUnitNetwork",
"exp:ConceptAbstractNetwork"
],
"requiredCubes": [
"exp:SaleEventCube"
]
},
{
"name": "exp:ProductIdentifierCube",
"cubeType": "xbrla:referenceCube",
"cubeDimensions": [
{
"domainDataType": "xs:token",
"optional": false,
"dimension": "exp:ProductIdentifierDimension"
},
{
"domainNetwork": "exp:PrimaryProductDetailsDomain",
"dimension": "xbrl:concept"
}
]
},
{
"name": "exp:IntervalTimeSeriesCube",
"cubeType": "xbrla:timeSeriesCube",
"cubeDimensions": [
{
"domainNetwork": "exp:PrimaryTimeSeriesDomain",
"dimension": "xbrl:concept"
},
{
"domainDataType": "xs:dateTime",
"optional": false,
"dimension": "exp:TimeSeriesPeakDemandDimension"
},
{
"optional": false,
"dimension": "xbrl:unit"
}
]
},
{
"name": "exp:MyDefaultCube",
"cubeDimensions": [
{
"dimension": "xbrl:concept"
},
{
"optional": true,
"dimension": "xbrl:period"
},
{
"optional": true,
"dimension": "xbrl:entity"
},
{
"optional": true,
"dimension": "xbrl:unit"
}
]
}
],
"networks": [
{
"name": "exp:network1",
"relationshipTypeName": "xbrl:parent-child"
},
{
"name": "exp:Network2",
"relationshipTypeName": "xbrl:parent-child",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:StatementOfIncome"
},
{
"source": "exp:StatementOfIncome",
"target": "exp:Revenue",
"order": 1
},
{
"source": "exp:StatementOfIncome",
"target": "exp:CostOfGoodsSold",
"order": 2
},
{
"source": "exp:StatementOfIncome",
"target": "exp:GrossProfit",
"order": 3
},
{
"source": "exp:StatementOfIncome",
"target": "exp:OperatingExpenses",
"order": 4
},
{
"source": "exp:StatementOfIncome",
"target": "exp:NetIncome",
"order": 5
}
]
},
{
"name": "exp:Network3",
"relationshipTypeName": "xbrl:summation-item",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:NetIncome"
},
{
"source": "exp:NetIncome",
"target": "exp:OperatingExpenses",
"properties": [
{
"property": "xbrl:weight",
"value": -1
}
]
},
{
"source": "exp:NetIncome",
"target": "exp:GrossProfit",
"properties": [
{
"property": "xbrl:weight",
"value": 1
}
]
},
{
"source": "exp:GrossProfit",
"target": "exp:Revenue",
"properties": [
{
"property": "xbrl:weight",
"value": 1
}
]
},
{
"source": "exp:GrossProfit",
"target": "exp:CostOfGoodsSold",
"properties": [
{
"property": "xbrl:weight",
"value": -1
}
]
}
]
},
{
"name": "exp:network4",
"relationshipTypeName": "xbrl:general-special",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:Revenue"
},
{
"source": "exp:Revenue",
"target": "exp:NetIncome"
}
]
},
{
"name": "exp:traitsNetwork",
"relationshipTypeName": "xbrl:propertyValue-object",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:RevenueMember"
},
{
"source": "exp:RevenueMember",
"target": "exp:Revenue",
"properties": [
{
"property": "xbrl:traitLinkType",
"value": "exp:AccountingClassType"
}
]
}
]
},
{
"name": "exp:ConceptToDimensionNetwork",
"relationshipTypeName": "xbrl:concept-refDimension",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:EventDate"
},
{
"source": "xbrl:rootSource",
"target": "exp:ProductIdentifier"
},
{
"source": "xbrl:rootSource",
"target": "exp:Country"
},
{
"source": "exp:EventDate",
"target": "xbrl:period"
},
{
"source": "exp:ProductIdentifier",
"target": "exp:ProductIdentifierDimension"
},
{
"source": "exp:Country",
"target": "exp:CountryDimension"
}
]
},
{
"name": "exp:ConceptUnitNetwork",
"relationshipTypeName": "xbrl:unitFact-factConcept",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:FunctionalCurrency"
},
{
"source": "xbrl:rootSource",
"target": "exp:ReportingCurrency"
},
{
"source": "exp:FunctionalCurrency",
"target": "exp:FunctionalAmount"
},
{
"source": "exp:ReportingCurrency",
"target": "exp:ReportingAmount"
}
]
},
{
"name": "exp:ConceptAbstractNetwork",
"relationshipTypeName": "exp:concept-abstract",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:FunctionalAmount"
},
{
"source": "exp:FunctionalAmount",
"target": "exp:StatementOfIncome",
"properties": [
{
"property": "exp:ipsum",
"value": "lorem"
}
]
}
]
}
],
"domainNetworks": [
{
"name": "exp:DomainOfCountries",
"root": "exp:DomainOfCountriesRoot",
"relationships": [
{
"source": "exp:DomainOfCountriesRoot",
"target": "exp:Country_USA",
"order": 1
},
{
"source": "exp:DomainOfCountriesRoot",
"target": "exp:Country_Canada",
"order": 2
},
{
"source": "exp:DomainOfCountriesRoot",
"target": "exp:Country_UK",
"order": 3
}
]
},
{
"name": "exp:DomainOfCanada",
"root": "exp:DomainOfCountriesRoot",
"isExtensible": false,
"relationships": [
{
"source": "exp:DomainOfCountriesRoot",
"target": "exp:Country_Canada",
"order": 1
}
]
},
{
"name": "exp:PrimaryCountryDomain",
"root": "xbrl:conceptDomain",
"relationships": [
{
"source": "xbrl:conceptDomain",
"target": "exp:Country"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:GrossProfit"
}
]
},
{
"name": "exp:PrimaryTimeSeriesDomain",
"root": "xbrl:conceptDomain",
"relationships": [
{
"source": "xbrl:conceptDomain",
"target": "exp:PeakGridElectricityDemandMax"
}
]
},
{
"name": "exp:PrimaryEventDomain",
"root": "xbrl:conceptDomain",
"relationships": [
{
"source": "xbrl:conceptDomain",
"target": "exp:EventDescription",
"order": 1
},
{
"source": "xbrl:conceptDomain",
"target": "exp:EventDate",
"order": 2
},
{
"source": "xbrl:conceptDomain",
"target": "exp:FunctionalCurrency",
"order": 3
},
{
"source": "xbrl:conceptDomain",
"target": "exp:FunctionalAmount",
"order": 4
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ReportingCurrency",
"order": 5
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ReportingAmount",
"order": 6
},
{
"source": "xbrl:conceptDomain",
"target": "exp:Country",
"order": 7
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductIdentifier",
"order": 8
}
]
},
{
"name": "exp:PrimaryProductDetailsDomain",
"root": "xbrl:conceptDomain",
"relationships": [
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductDescription"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductIdentifier"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductWeight"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductColor"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductPackageType"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:ProductFlavor"
}
]
},
{
"name": "exp:PrimaryIncomeStatementDomain",
"root": "xbrl:conceptDomain",
"relationships": [
{
"source": "xbrl:conceptDomain",
"target": "exp:StatementOfIncome"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:Revenue"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:CostOfGoodsSold"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:GrossProfit"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:OperatingExpenses"
},
{
"source": "xbrl:conceptDomain",
"target": "exp:NetIncome"
}
]
},
{
"name": "exp:IncomeStatementUnitDomain",
"root": "xbrl:unitDomain",
"relationships": [
{
"source": "xbrl:unitDomain",
"target": "iso4217:USD"
}
]
},
{
"name": "exp:AccountingClassDomain",
"root": "xbrl:traitDomain",
"relationships": [
{
"source": "xbrl:traitDomain",
"target": "exp:RevenueMember"
},
{
"source": "xbrl:traitDomain",
"target": "exp:ExpenseMember"
}
]
},
{
"name": "exp:UnitsDomain",
"root": "xbrl:unitDomain",
"relationships": [
{
"source": "xbrl:unitDomain",
"target": "utr:acre"
},
{
"source": "xbrl:unitDomain",
"target": "exp:flagez"
},
{
"source": "xbrl:unitDomain",
"target": "utr:MMcf"
},
{
"source": "xbrl:unitDomain",
"target": "iso4217:BHD"
}
]
}
],
"domainClasses": [
{
"name": "exp:DomainOfCountriesRoot",
"allowedDomainItem": "xbrl:memberObject"
},
{
"name": "exp:ProductIdentifiersRoot",
"allowedDomainItem": "xs:token"
},
{
"name": "exp:TimeSeriesPeakDemandRoot",
"allowedDomainItem": "xs:dateTime",
"properties": [
{
"property": "xbrla:intervalOfMeasurement",
"value": "PT1H"
},
{
"property": "xbrla:timeSeriesType",
"value": "Aggregated"
},
{
"property": "xbrl:aggregation",
"value": "max"
},
{
"property": "xbrla:intervalConvention",
"value": "StartTime"
},
{
"property": "xbrla:completeTimeSeries",
"value": true
}
]
},
{
"name": "exp:SaleEventRoot",
"allowedDomainItem": "xs:token"
}
],
"labels": [
{
"forObject": "exp:DomainOfCountriesRoot",
"language": "en",
"value": "🌏",
"labelType": "xbrl:iconLabel"
},
{
"forObject": "exp:Country_Canada",
"language": "en",
"value": "🇨🇦",
"labelType": "xbrl:iconLabel"
},
{
"forObject": "exp:StatementOfIncome",
"language": "en",
"value": "Statement of Income",
"labelType": "xbrl:label"
},
{
"forObject": "exp:CountryGroup",
"language": "en",
"value": "Country Group",
"labelType": "xbrl:label"
},
{
"forObject": "exp:StatementOfIncome",
"language": "en",
"value": "<ol> <li>Use the space below for important notes regarding the financial statements or any account thereof.</li> <li>Furnish particulars as to any significant contingent assets or liabilities existing at the end of the year.</li> <li>Furnish particulars as to any significant increase in services rendered or expenses incurred during the year.</li> <li>Furnish particulars as to any amounts recorded in Extraordinary Income (Account 434) or Extraordinary Deductions (Account 435).</li> <li>Notes relating to financial statements shown elsewhere in this report may be indicated here by reference.</li> <li>Describe the annual statement supplied to each associate company in support of the amount of interest on borrowed capital and compensation for use of capital billed during the calendar year. State the basis for billing of interest to each associate company. If a ratio, describe in detail how ratio is computed. If more than one ratio, explain the calculation. Report the amount of interest borrowed and/or compensation for use of capital billed to each associate company.</li> </ol>",
"labelType": "exp:Instructions"
},
{
"forObject": "exp:StatementOfIncome",
"language": "en",
"value": "The Statement of Income includes the total revenue and total expenses for a reporting period.",
"labelType": "xbrl:documentation"
},
{
"forObject": "exp:Revenue",
"language": "en",
"value": "Total Revenue",
"labelType": "xbrl:totalLabel"
},
{
"forObject": "exp:CostOfGoodsSold",
"language": "en",
"value": "Cost of Goods Sold",
"labelType": "xbrl:totalLabel"
},
{
"forObject": "exp:GeographicCube",
"language": "en",
"value": "Geographic Information Cube",
"labelType": "xbrl:label"
},
{
"forObject": "exp:CountryDimension",
"language": "en",
"value": "Country Dimension",
"labelType": "xbrl:label"
},
{
"forObject": "exp:DomainOfCountries",
"language": "en",
"value": "Country Domain",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Country_USA",
"language": "en",
"value": "United States",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Country_Canada",
"language": "en",
"value": "Canada",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Country_UK",
"language": "en",
"value": "United Kingdom",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Country_Mexico",
"language": "en",
"value": "Mexico",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Country",
"language": "en",
"value": "Country",
"labelType": "xbrl:label"
},
{
"forObject": "exp:EventDate",
"language": "en",
"value": "Event Date",
"labelType": "xbrl:label"
},
{
"forObject": "exp:EventDescription",
"language": "en",
"value": "Event Description",
"labelType": "xbrl:label"
},
{
"forObject": "exp:FunctionalAmount",
"language": "en",
"value": "Functional Amount",
"labelType": "xbrl:label"
},
{
"forObject": "exp:FunctionalCurrency",
"language": "en",
"value": "Functional Currency",
"labelType": "xbrl:label"
},
{
"forObject": "exp:GrossProfit",
"language": "en",
"value": "Gross Profit",
"labelType": "xbrl:label"
},
{
"forObject": "exp:NetIncome",
"language": "en",
"value": "Net Income",
"labelType": "xbrl:label"
},
{
"forObject": "exp:OperatingExpenses",
"language": "en",
"value": "Operating Expenses",
"labelType": "xbrl:label"
},
{
"forObject": "exp:PeakGridElectricityDemandMax",
"language": "en",
"value": "Peak Grid Electricity Demand Maximum",
"labelType": "xbrl:label"
},
{
"forObject": "exp:ProductDescription",
"language": "en",
"value": "Product Description",
"labelType": "xbrl:label"
},
{
"forObject": "exp:ProductIdentifier",
"language": "en",
"value": "Product Identifier",
"labelType": "xbrl:label"
},
{
"forObject": "exp:ReportDate",
"language": "en",
"value": "Report Date",
"labelType": "xbrl:label"
},
{
"forObject": "exp:ReportingAmount",
"language": "en",
"value": "Reporting Amount",
"labelType": "xbrl:label"
},
{
"forObject": "exp:ReportingCurrency",
"language": "en",
"value": "Reporting Currency",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Revenue",
"language": "en",
"value": "Revenue",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementCubeTable",
"language": "en",
"value": "Income Statement",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementCubeTable2",
"language": "en",
"value": "Income Statement 2",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementCubeTable3",
"language": "en",
"value": "Income Statement 3",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementCubeTable4",
"language": "en",
"value": "Income Statement 4",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementCubeTable5",
"language": "en",
"value": "Income Statement 5",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementCubeTable6",
"language": "en",
"value": "Income Statement 6",
"labelType": "xbrl:label"
},
{
"forObject": "exp:GeographyCubeTable1",
"language": "en",
"value": "Geographic Information",
"labelType": "xbrl:label"
},
{
"forObject": "exp:GeographyCubeTable2",
"language": "en",
"value": "Geographic Information 2",
"labelType": "xbrl:label"
},
{
"forObject": "exp:GeographyCubeTable3",
"language": "en",
"value": "Geographic Information 3",
"labelType": "xbrl:label"
},
{
"forObject": "exp:GeographyCubeTable4",
"language": "en",
"value": "Geographic Information 4",
"labelType": "xbrl:label"
},
{
"forObject": "exp:Network2",
"language": "en",
"value": "Income Statement Parent-Child Network",
"labelType": "xbrl:label"
},
{
"forObject": "exp:IncomeStatementGroup",
"language": "en",
"value": "Income Statement Group",
"labelType": "xbrl:label"
},
{
"forObject": "exp:PeakTimeSeriesGroup",
"language": "en",
"value": "Peak Time Series Group",
"labelType": "xbrl:label"
},
{
"forObject": "exp:SaleEventGroup",
"language": "en",
"value": "Sale Event Group",
"labelType": "xbrl:label"
},
{
"forObject": "exp:ProductListingGroup",
"language": "en",
"value": "Product Listing Group",
"labelType": "xbrl:label"
}
],
"references": [
{
"name": "exp:myReference",
"forObjects": [
"exp:Country_USA",
"exp:Country_Canada",
"exp:Country_UK"
],
"referenceType": "exp:myReferenceType",
"language": "en",
"properties": [
{
"property": "ref:Publisher",
"value": "Example Publisher"
},
{
"property": "ref:Name",
"value": "Example Reference Name"
},
{
"property": "ref:Section",
"value": "Example Section"
},
{
"property": "ref:Paragraph",
"value": "Example Paragraph"
},
{
"property": "exp:SubSubSection",
"value": "a1"
}
]
},
{
"name": "exp:myReference2",
"forObjects": [
"exp:CountryGroup"
],
"referenceType": "exp:myReferenceType",
"language": "en",
"properties": [
{
"property": "ref:Publisher",
"value": "Example Publisher 2"
},
{
"property": "ref:Name",
"value": "Example Reference Name 2"
},
{
"property": "ref:Section",
"value": "Example Section 2"
},
{
"property": "ref:Paragraph",
"value": "Example Paragraph 2"
},
{
"property": "exp:SubSubSection",
"value": "b2"
}
]
}
],
"facts": [
{
"name": "exp:f12345",
"factValues": [
{
"name": "exp:fV1",
"value": "100000",
"decimals": 2
}
],
"factDimensions": {
"xbrl:concept": "exp:PeakGridElectricityDemandMax",
"exp:TimeSeriesPeakDemandDimension": "2025-01-01T00:00:00",
"xbrl:unit": "utr:MW"
}
},
{
"name": "exp:f12346",
"factDimensions": {
"xbrl:concept": "exp:PeakGridElectricityDemandMax",
"exp:TimeSeriesPeakDemandDimension": "2026-01-01T00:00:00",
"xbrl:unit": "utr:MW"
}
},
{
"name": "exp:f12347",
"factValues": [
{
"name": "exp:fV3",
"value": "333333",
"decimals": 2
}
],
"factDimensions": {
"xbrl:concept": "exp:GrossProfit",
"exp:CountryDimension": "exp:Country_USA",
"xbrl:unit": "iso4217:USD",
"xbrl:entity": "lei:00EHHQ2ZHDCFXJCPCL46",
"xbrl:period": "2025-01-01T00:00:00/2026-01-01T00:00:00"
}
},
{
"name": "exp:f12348",
"factValues": [
{
"name": "exp:fV4",
"value": "6666666",
"decimals": 2
}
],
"factDimensions": {
"xbrl:concept": "exp:GrossProfit",
"exp:CountryDimension": "exp:Country_USA",
"xbrl:unit": "iso4217:USD",
"xbrl:entity": "lei:00EHHQ2ZHDCFXJCPCL47",
"xbrl:period": "2025-01-01T00:00:00/2026-01-01T00:00:00"
}
},
{
"name": "exp:f12349",
"factValues": [
{
"name": "exp:fV5",
"value": "9999999",
"decimals": 2
}
],
"factDimensions": {
"xbrl:concept": "exp:GrossProfit",
"xbrl:unit": "iso4217:USD",
"xbrl:entity": "lei:00EHHQ2ZHDCFXJCPCL47",
"xbrl:period": "2025-01-01T00:00:00/2026-01-01T00:00:00"
}
},
{
"name": "exp:f12350",
"factValues": [
{
"name": "exp:fV6",
"value": "1000333",
"decimals": 2
}
],
"factDimensions": {
"xbrl:concept": "exp:GrossProfit",
"xbrl:unit": "iso4217:USD",
"xbrl:entity": "lei:00EHHQ2ZHDCFXJCPCL47",
"xbrl:period": "2025-01-01T00:00:00/2026-01-01T00:00:00"
}
},
{
"name": "exp:f12351",
"factValues": [
{
"name": "exp:fV7",
"value": "2026-01-01T00:00:00"
}
],
"factDimensions": {
"xbrl:concept": "exp:ReportDate",
"xbrl:period": "2025-01-01T00:00:00/2026-01-01T00:00:00"
}
}
],
"footnotes": [
{
"name": "exp:FN1",
"forObjects": [
"exp:f12351"
],
"content": "This fact is a cool one",
"language": "en"
}
],
"factSources": [
{
"name": "exp:SalesEventTable",
"factMapName": "exp:SalesEventCSVFactMap",
"cubeName": "exp:SaleEventCube"
},
{
"name": "exp:IncomeStatementTable",
"factMapName": "exp:IncomeStatementCSVFactMap",
"cubeName": "exp:IncomeStatementCube"
},
{
"name": "exp:SalesEventTable2",
"factMapName": "exp:SalesEventCSVFactMap",
"cubeName": "exp:SaleEventCube"
}
],
"tableTemplates": [
{
"name": "exp:SalesEventTemplate",
"columns": [
{
"columnName": "Event_id"
},
{
"columnName": "description",
"factDimensions": {
"xbrl:concept": "exp:EventDescription"
}
},
{
"columnName": "Event_Date",
"factDimensions": {
"xbrl:concept": "exp:EventDate"
}
},
{
"columnName": "Functional_Currency",
"factDimensions": {
"xbrl:concept": "exp:FunctionalCurrency"
}
},
{
"columnName": "Functional_Amount",
"factDimensions": {
"xbrl:concept": "exp:FunctionalAmount"
}
},
{
"columnName": "Reporting_Currency",
"factDimensions": {
"xbrl:concept": "exp:ReportingCurrency"
}
},
{
"columnName": "Reporting_Amount",
"factDimensions": {
"xbrl:concept": "exp:ReportingAmount"
}
},
{
"columnName": "Country",
"factDimensions": {
"xbrl:concept": "exp:Country"
}
},
{
"columnName": "Product_Identifier",
"factDimensions": {
"xbrl:concept": "exp:ProductIdentifier"
}
}
],
"rowIdColumn": "Event_id",
"factDimensions": {
"exp:SaleEventDimension": "$Event_id"
}
},
{
"name": "exp:IncomeStatementTemplate",
"columns": [
{
"columnName": "PeriodCol"
},
{
"columnName": "UnitCol"
},
{
"columnName": "EntityCol"
},
{
"columnName": "Revenue",
"decimals": 3,
"factDimensions": {
"xbrl:concept": "exp:Revenue"
}
},
{
"columnName": "CostOfGoodsSold",
"decimals": 3,
"factDimensions": {
"xbrl:concept": "exp:CostOfGoodsSold"
}
},
{
"columnName": "GrossProfit",
"decimals": 3,
"factDimensions": {
"xbrl:concept": "exp:GrossProfit"
}
},
{
"columnName": "OperatingExpenses",
"decimals": 3,
"factDimensions": {
"xbrl:concept": "exp:OperatingExpenses"
}
},
{
"columnName": "NetIncome",
"decimals": 3,
"factDimensions": {
"xbrl:concept": "exp:NetIncome"
}
}
],
"factDimensions": {
"xbrl:period": "$PeriodCol",
"xbrl:entity": "$EntityCol",
"xbrl:unit": "$UnitCol"
}
}
],
"factMaps": [
{
"name": "exp:SalesEventCSVFactMap",
"templateName": "exp:SalesEventTemplate"
},
{
"name": "exp:IncomeStatementCSVFactMap",
"templateName": "exp:IncomeStatementTemplate"
}
],
"dataTypes": [
{
"name": "exp:monetaryPositive",
"baseType": "xbrlr:monetary",
"minInclusive": 0
}
],
"collectionTypes": [
{
"name": "exp:myStringCollection",
"dataType": "xs:string",
"uniqueValues": true,
"orderedValues": false
}
],
"cubeTypes": [
{
"name": "exp:myProductCube",
"coreDimensions": [
"xbrl:concept",
"xbrl:period",
"xbrl:unit",
"xbrl:entity"
],
"cubeDimensionConstraints": {
"allowed": [
{
"dimensionName": "exp:ProductIdentifierDimension",
"minDimensions": 1
}
],
"closed": false
}
},
{
"name": "exp:myIncomeStatementCube",
"baseCubeType": "xbrl:reportCube"
},
{
"name": "exp:restrictedCube",
"baseCubeType": "xbrl:reportCube",
"cubeNetworkConstraints": {
"closed": true,
"cubeNetworks": [
{
"relationshipType": "xbrl:parent-child",
"minNetworks": 1
},
{
"relationshipType": "xbrl:parent-child",
"source": {
"qname": "exp:StatementOfIncome"
},
"minNetworks": 1
},
{
"relationshipType": "xbrl:summation-item"
}
]
}
}
],
"labelTypes": [
{
"name": "exp:myLabel",
"uri": "http://example.com/taxonomy/mylabel",
"formatType": "text",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:headingObject"
]
},
{
"formatType": "text",
"name": "exp:Instructions",
"uri": "http://example.com/taxonomy/Instructions"
}
],
"referenceTypes": [
{
"name": "exp:myReferenceType",
"uri": "http://example.com/taxonomy/myReferenceType",
"allowedObjects": [
"xbrl:conceptObject",
"xbrl:memberObject",
"xbrl:groupObject"
],
"requiredProperties": [
"ref:Publisher",
"ref:Name",
"ref:Section",
"ref:Paragraph"
]
}
],
"layouts": [
{
"name": "exp:IncomeStatementTable0",
"dataTables": [
{
"name": "exp:IncomeStatementCubeTable",
"cubeName": "exp:IncomeStatementCube",
"tableType": "cubeLayout",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:period"
},
{
"dimensionName": "xbrl:unit"
},
{
"dimensionName": "xbrl:entity"
}
],
"axisLabelsGroup": {
"valueArray": [
"10",
"20"
]
}
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:Network2"
}
]
}
}
]
},
{
"name": "exp:IncomeStatementTable2",
"dataTables": [
{
"name": "exp:IncomeStatementCubeTable2",
"tableType": "cubeLayout",
"cubeName": "exp:IncomeStatementCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:unit"
},
{
"dimensionName": "xbrl:period"
},
{
"dimensionName": "xbrl:entity"
}
],
"axisLabelsGroup": {
"valueArray": [
"10",
"20"
]
}
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:Network2"
}
]
}
}
]
},
{
"name": "exp:IncomeStatementTable3",
"dataTables": [
{
"name": "exp:IncomeStatementCubeTable3",
"cubeName": "exp:IncomeStatementCube",
"tableType": "cubeLayout",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:unit"
},
{
"dimensionName": "xbrl:period"
},
{
"dimensionName": "xbrl:entity"
}
],
"axisLabelsGroup": {
"valueArray": [
"10",
"20"
]
}
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:Network2"
}
],
"axisLabelsGroup": {
"range": {
"interval": "10",
"prefix": "R",
"startValue": "10",
"order": "ascending"
}
}
}
}
]
},
{
"name": "exp:IncomeStatementTable4",
"dataTables": [
{
"name": "exp:IncomeStatementCubeTable4",
"cubeName": "exp:IncomeStatementCube",
"tableType": "cubeLayout",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:unit"
},
{
"dimensionName": "xbrl:entity"
},
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:Network2"
}
],
"axisLabelsGroup": {
"range": {
"interval": "10",
"startValue": "10",
"order": "ascending"
}
}
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:period"
}
],
"axisLabelsGroup": {
"range": {
"interval": "10",
"startValue": "10",
"order": "ascending"
}
}
}
}
]
},
{
"name": "exp:IncomeStatementTable5",
"dataTables": [
{
"name": "exp:IncomeStatementCubeTable5",
"tableType": "cubeLayout",
"cubeName": "exp:IncomeStatementCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:unit"
},
{
"dimensionName": "xbrl:period"
}
],
"axisLabelsGroup": {
"valueArray": [
"10",
"20"
]
}
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:Network2",
"groupDuplicateLabels": true
},
{
"dimensionName": "xbrl:entity"
}
],
"axisLabelsGroup": {
"range": {
"interval": "10",
"startValue": "10",
"order": "ascending"
}
}
}
}
]
},
{
"name": "exp:IncomeStatementTable6",
"dataTables": [
{
"name": "exp:IncomeStatementCubeTable6",
"tableType": "cubeLayout",
"cubeName": "exp:IncomeStatementCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:unit"
},
{
"dimensionName": "xbrl:period"
}
],
"axisLabelsGroup": {
"valueArray": [
"10",
"20"
]
}
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:entity",
"groupDuplicateLabels": true
},
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:Network2"
}
],
"axisLabelsGroup": {
"range": {
"interval": "10",
"startValue": "10",
"order": "ascending"
}
}
}
}
]
},
{
"name": "exp:GeographyTable1",
"dataTables": [
{
"name": "exp:GeographyCubeTable1",
"tableType": "cubeLayout",
"cubeName": "exp:GeographicCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "exp:CountryDimension",
"labelType": "xbrl:label",
"axisNetwork": "exp:DomainOfCountries"
}
]
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:PrimaryCountryDomain"
}
]
},
"zAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:entity"
},
{
"dimensionName": "xbrl:unit"
}
]
}
}
]
},
{
"name": "exp:GeographyTable2",
"dataTables": [
{
"name": "exp:GeographyCubeTable2",
"tableType": "cubeLayout",
"cubeName": "exp:GeographicCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "exp:CountryDimension",
"labelType": "xbrl:label",
"axisNetwork": "exp:DomainOfCountries",
"dimensionOptional": true,
"totalLocation": "end"
}
]
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:PrimaryCountryDomain"
}
]
},
"zAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:entity"
},
{
"dimensionName": "xbrl:unit"
}
]
}
}
]
},
{
"name": "exp:GeographyTable3",
"dataTables": [
{
"name": "exp:GeographyCubeTable3",
"tableType": "cubeLayout",
"cubeName": "exp:GeographicCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:period",
"dimensionOptional": true,
"totalLocation": "end"
},
{
"dimensionName": "exp:CountryDimension",
"labelType": "xbrl:label",
"axisNetwork": "exp:DomainOfCountries",
"dimensionOptional": true,
"totalLocation": "end"
}
]
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:PrimaryCountryDomain"
}
]
},
"zAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:entity"
}
]
}
}
]
},
{
"name": "exp:GeographyTable4",
"dataTables": [
{
"name": "exp:GeographyCubeTable4",
"tableType": "cubeLayout",
"cubeName": "exp:GeographicCube",
"xAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:period",
"dimensionOptional": true,
"totalLocation": "start"
},
{
"dimensionName": "exp:CountryDimension",
"labelType": "xbrl:label",
"axisNetwork": "exp:DomainOfCountries",
"dimensionOptional": true,
"totalLocation": "start"
}
]
},
"yAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:concept",
"labelType": "xbrl:label",
"axisNetwork": "exp:PrimaryCountryDomain"
}
]
},
"zAxis": {
"axisHeaders": [
{
"dimensionName": "xbrl:entity"
},
{
"dimensionName": "xbrl:unit",
"dimensionOptional": true
}
]
}
}
]
}
],
"properties": [
{
"property": "xbrl:reportDate",
"value": "2025-12-31"
}
]
}
}
{
"$schema": "../tavi-schema.json",
"documentInfo": {
"documentType": "https://xbrl.org/PWD/2026-09-01/module",
"documentNamespacePrefix": "exp_ext",
"namespaces": {
"exp": "http://example.com/taxonomy",
"mini": "http://example.com/mini",
"exp_ext": "http://example.com/ext-taxonomy",
"xbrl": "https://xbrl.org/PWD/2026-09-01",
"iso4217": "http://www.xbrl.org/2003/iso4217",
"utr": "https://xbrl.org/PWD/2026-09-01/utr",
"xbrlr": "https://xbrl.org/PWD/2026-09-01/report",
"xs": "http://www.w3.org/2001/XMLSchema",
"ferc-form-60": "http://ferc.gov/form/2025-04-01/ferc-form-60",
"ferc": "http://ferc.gov/form/2025-04-01/ferc",
"mini3": "http://example.com/mini3"
},
"importMapping": {
"exp:SampleTaxonomy": "exampleTaxonomy.json",
"mini:MiniTaxonomy": "copilot-mini.json",
"ferc:FERCForm60-2025-04-01": "../converted-taxonomies/form-60_2025-04-01.json",
"ferc-form-60:_unmapped": "../converted-taxonomies/form-60_2025-04-01.json",
"mini3:MiniTaxonomy3": "copilot-mini3.json"
}
},
"xbrlModel": {
"name": "exp_ext:ExtensionTaxonomy",
"importedTaxonomies": [
{
"xbrlModelName": "exp:SampleTaxonomy"
},
{
"xbrlModelName": "mini:MiniTaxonomy",
"importObjects": [
"mini:Assets",
"mini:GeographyDomain"
]
},
{
"xbrlModelName": "ferc:FERCForm60-2025-04-01",
"importObjects": [
"ferc-form-60:NotesToFinancialStatements_parent-child_Network"
]
},
{
"xbrlModelName": "mini3:MiniTaxonomy3",
"importObjectTypes": [
"xbrl:memberObject"
]
},
{
"xbrlModelName": "mini3:MiniTaxonomy3",
"importObjectTypes": [
"xbrl:headingObject"
]
}
],
"concepts": [
{
"name": "exp_ext:EarningsPerShare",
"dataType": "xbrlr:percent",
"periodType": "duration",
"nillable": true
}
],
"labels": [
{
"forObject": "exp:Country",
"language": "en",
"value": "A field representing an enumerated list of countries defined as QNames.",
"labelType": "xbrl:documentation"
},
{
"forObject": "exp_ext:EarningsPerShare",
"language": "en",
"value": "Earnings Per Share (EPS)",
"labelType": "xbrl:label"
}
],
"references": [
{
"extends": "exp:myReference",
"forObjects": [
"exp:Country_Mexico"
]
}
],
"domainNetworks": [
{
"extends": "exp:DomainOfCountries",
"relationships": [
{
"source": "exp:DomainOfCountriesRoot",
"target": "exp:Country_Mexico",
"order": 1
}
]
}
],
"networks": [
{
"extends": "exp:Network2",
"relationships": [
{
"source": "xbrl:rootSource",
"target": "exp:StatementOfIncome",
"order": 1
},
{
"source": "exp:StatementOfIncome",
"target": "exp_ext:EarningsPerShare",
"order": 6
}
]
}
]
}
}
See specifications.xbrl.org for a list of public releases of this specification.
This appendix contains a list of the errata that have been incorporated into this document. This represents all those errata corrections that have been approved by the XBRL International Open Information Model Working Group (SWG) up to and including 2026-09-01.
No errata have been incorporated into this document.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to XBRL International or XBRL organizations, except as required to translate it into languages other than English. Members of XBRL International agree to grant certain licenses under the XBRL International Intellectual Property Policy (https://www.xbrl.org/legal).
This document and the information contained herein is provided on an "AS IS" basis and XBRL INTERNATIONAL DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
The attention of users of this document is directed to the possibility that compliance with or adoption of XBRL International specifications may require use of an invention covered by patent rights. XBRL International shall not be responsible for identifying patents for which a license may be required by any XBRL International specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. XBRL International specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. XBRL International takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Members of XBRL International agree to grant certain licenses under the XBRL International Intellectual Property Policy (https://www.xbrl.org/legal).