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/1326801/000162828025036791/meta-20250630.htm",
    "meta-20250630.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 link: <http://www.xbrl.org/2003/linkbase#> .
@prefix ns1: <http://www.xbrl.org/2003/role/> .
@prefix ns2: <http://www.xbrl.org/2003/arcrole/> .
@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#NetIncomeLoss> a xbrli:monetaryItemType,
        ns1:link ;
    rdfs:label "Net Income (Loss) Attributable to Parent"@en-GB,
        "Net Income (Loss) Attributable to Parent"@en-US ;
    rdfs:isDefinedBy <http://fasb.org/us-gaap/2024> ;
    xsd:abstract false ;
    xsd:id "us-gaap_NetIncomeLoss" ;
    xsd:nillable true ;
    xsd:substitutionGroup xbrli:item ;
    owl:sameAs <http://fasb.org/us-gaap#NetIncomeLoss> ;
    ns2:concept-label ... ;
    ns2:concept-reference ... ;
    xbrli:balance "credit" ;
    xbrli:periodType "duration" ;
    ns1:documentation "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent."@en-GB,
        "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent."@en-US ;
    ns1:label "Net Income (Loss) Attributable to Parent"@en-GB,
        "Net Income (Loss) Attributable to Parent"@en-US ;
    ns1:totalLabel "Net Income (Loss) Attributable to Parent, Total"@en-GB,
        "Net Income (Loss) Attributable to Parent, Total"@en-US .

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.0.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.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for xbrlld-0.2.0.tar.gz
Algorithm Hash digest
SHA256 874094a4e11d1abb10223620ae6af247e82e55390507b7507655804f2fc9aeb2
MD5 a2334fd2c0065b767fbd866bacb8114d
BLAKE2b-256 5d8e45c4cd58b0718b5ae363254bbd0b117d33b1f0dd8d6dcc23667335239efb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for xbrlld-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c887e902a8880d137ca36585e30c61e3edea81aef8ac951f16d468a7ca65cef3
MD5 be9488195b8fd1d7cfc4e4d3c0c99590
BLAKE2b-256 217233dba2038ba3f50c0499f7b248a50df0d0d7b5ba71d6badbd41274bf8e1e

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