Skip to main content

A command line tool to convert XBRL taxonomies and instance documents into RDF.

Project description

xbrlld – XBRL to RDF

xbrlld is a Python library and command-line tool for converting XBRL taxonomies and instance documents into RDF (Resource Description Framework).

It is designed to make XBRL data interoperable with Linked Data technologies.


Installation 📦

pip install xbrlld

Usage 🚀

Python API

from xbrlld.taxonomy import convert_taxonomy, write_taxonomy_to_rdf
from xbrlld.instance import convert_instance, write_instance_to_rdf

# Convert a taxonomy and return an RDF Dataset
dataset = convert_taxonomy("https://xbrl.frc.org.uk/FRS-102/2025-01-01/FRS-102-2025-01-01.xsd")

# Write taxonomy RDF to file (default: Turtle format)
write_taxonomy_to_rdf(
    "https://xbrl.frc.org.uk/FRS-102/2025-01-01/FRS-102-2025-01-01.xsd",
    "FRS-102-2025-01-01.ttl"
)

# Convert an instance document and return an RDF Dataset
dataset = convert_instance("https://www.sec.gov/Archives/edgar/data/1326801/000162828025036791/meta-20250630.htm")

# Write instance RDF to file (default: Turtle format)
write_instance_to_rdf(
    "https://www.sec.gov/Archives/edgar/data/320193/000032019325000073/aapl-20250628.htm",
    "aapl-20250628.ttl",
)

Command line

# Convert a taxonomy
xbrlld convert taxonomy https://example.com/taxonomy.xsd -o taxonomy.ttl

# Convert an instance document
xbrlld convert instance https://example.com/report.html -o facts.ttl

👉 If conversion fails, error messages are printed and the process exits with code 1.


Output 📄

The converter produces RDF in Turtle (TTL) format by default, with other serialisations (such as TriG) available through the API.

In the generated RDF you will find:

  • From taxonomies:

    • Concepts, dimensions, and relationships between them expressed as RDF classes and properties
    • Linkbases (e.g. presentation, calculation, definition) translated into RDF
    • Labels (across all available languages) and references
  • From instances:

    • Each reported fact represented as an RDF resource
    • Links from facts to their corresponding taxonomy concepts
    • Context information (entity, reporting period, units) captured as RDF properties
    • Values stored in a consistent, machine-readable format

Example from an instance (Apple Inc.)

@prefix iso4217: <http://www.xbrl.org/2003/iso4217#> .
@prefix xbrll: <https://w3id.org/vocab/xbrll#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[] a xbrll:Fact ;
    xbrll:concept <http://fasb.org/us-gaap/2024#NetIncomeLoss> ;
    xbrll:decimals -6 ;
    xbrll:hasEntity <http://www.sec.gov/CIK0000320193> ;
    xbrll:period [
        xbrll:endPeriod "2024-06-30"^^xsd:date ;
        xbrll:startPeriod "2024-03-31"^^xsd:date
    ] ;
    xbrll:unitRef iso4217:USD ;
    xbrll:value 21448000000.0 .

Example from a taxonomy (US GAAP 2024)

@prefix ns1: <http://www.xbrl.org/2003/arcrole/> .
@prefix ns2: <http://www.xbrl.org/2003/role/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xbrli: <http://www.xbrl.org/2003/instance#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://fasb.org/us-gaap/2024#BusinessAcquisitionsProFormaNetIncomeLoss> a xbrli:monetaryItemType,
        ns2:link ;
    rdfs:label "Business Acquisition, Pro Forma Net Income (Loss)",
        "Business Acquisition, Pro Forma Net Income (Loss)"@en-US ;
    rdfs:isDefinedBy <http://fasb.org/us-gaap/2024> ;
    xsd:abstract false ;
    xsd:id "us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" ;
    xsd:nillable true ;
    xsd:substitutionGroup xbrli:item ;
    owl:sameAs <http://fasb.org/us-gaap#BusinessAcquisitionsProFormaNetIncomeLoss> ;
    ns1:concept-label _:N5de19bd23b4e4cf7b46d67f753b315e8,
        _:N7f02a5e2fc0a46c4bab65ad80e738791 ;
    ns1:concept-reference _:N20a938bdba54444dad13a4609668fe80,
        _:N42a547447db348e08e5567bfc1484740 ;
    xbrli:balance "credit" ;
    xbrli:periodType "duration" ;
    ns2:documentation "The pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period.",
        "The pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period."@en-US ;
    ns2:label "Business Acquisition, Pro Forma Net Income (Loss)",
        "Business Acquisition, Pro Forma Net Income (Loss)"@en-US .

_:N5de19bd23b4e4cf7b46d67f753b315e8 a link:label ;
    rdf:value "The pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period."@en-US ;
    xlink:role ns2:documentation .

_:N20a938bdba54444dad13a4609668fe80 a link:reference ;
    rdf:value "805 10 Accounting Standards Codification 50 2 (h)(3) FASB" ;
    xlink:role ns2:disclosureRef .

References 📚


Licence ⚖️

This project is released under the MIT Licence.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xbrlld-0.2.2.tar.gz (8.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xbrlld-0.2.2-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file xbrlld-0.2.2.tar.gz.

File metadata

  • Download URL: xbrlld-0.2.2.tar.gz
  • Upload date:
  • Size: 8.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for xbrlld-0.2.2.tar.gz
Algorithm Hash digest
SHA256 837426983a2d693cd8e93a1d5cc84eddfa20414d591863181a6662905368d940
MD5 5912b6cb0b6f31e1d51654a3ed46130f
BLAKE2b-256 70f213f28d1573b74f89f27727ec7b5521b8e7442c612f4db091fffd5c217dc8

See more details on using hashes here.

File details

Details for the file xbrlld-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: xbrlld-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for xbrlld-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e329acbbb100010c8cbf39fdf39dd82b6e95b3a5d249a3d0549fbe86b6c75184
MD5 5da70d2a9025849d79f09260996278f3
BLAKE2b-256 ca429cfd10db36d59bd0e844edace6b350587736f8ed6f0f1f1ed5ccd67c409e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page