Metadata-Version: 2.1
Name: ixbrl-parse
Version: 0.10.1
Summary: Parse iXBRL files, can present in RDF
Home-page: https://github.com/cybermaggedon/ixbrl-parse
Author: Cybermaggedon
Author-email: mark@cyberapocalypse.co.uk
License: UNKNOWN
Download-URL: https://github.com/cybermaggedon/ixbrl-parse/archive/refs/tags/v0.9.4.tar.gz
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE


# `ixbrl-parse`

## Introduction

- Python library code, parses iXBRL files.
- Script `ixbrl-dump` emits iXBRL tagged data in a semi-human-readable dump.
- Script `ixbrl-report` emits iXBRL tagged data in a human-readable report.
  This involves downloading referenced XBRL schema to get the human-readable
  fact labels.
- Script `ixbrl-to-rdf` emits iXBRL tagged data in RDF.
- Script `ixbrl-to-csv` outputs iXBRL tagged data in a CSV format.
- Script `ixbrl-to-json` emits iXBRL tagged data in JSON.
- Script `ixbrl-to-xbrl` emits iXBRL tagged data as an XBRL instance.
- Script `ixbrl-to-kv` emits iXBRL in a key-value form easily consumed
  by scripts.
- Script `ixbrl-markdown` emits iXBRL tagged data in a markdown report.

## Sample data

There's a bunch of sample iXBRL files grabbed from various places in
the `ixbrl` directory: US 10-K and 10-Q filings, a few random things
from UK companies house, and a couple of sample ESEF filings.  This is the
data I've tested with.

Also, `accts.html` is a sample file created using
[`gnucash-ixbrl`](https://github.com/cybermaggedon/gnucash-ixbrl).

## Installation

```
pip3 install git+https://github.com/cybermaggedon/ixbrl-parse
```

## Usage

Parse iXBRL and output in RDF (default n3 format):
```
ixbrl-to-rdf accts.html
```

Parse iXBRL and output in RDF/XML:
```
ixbrl-to-rdf accts.html --format xml
```

Parse iXBRL and output in CSV:
```
ixbrl-to-csv accts.html
```

Parse iXBRL and output in JSON:
```
ixbrl-to-json accts.html
```

Schema labels in JSON:
```
ixbrl-to-json ixbrl/10k/lyft-20201231.htm -f labeled \
    -b https://www.sec.gov/Archives/edgar/data/1759509/000175950921000011/lyft-20201231.htm
```

Dump iXBRL values:
```
ixbrl-dump accts.html
```

Human-readable report:
```
ixbrl-report accts.html
```

Human-readable report from SEC EDGAR.  Note need to tell ixbrl-report the
URL of the original report in order to know where to fetch the
custom schema (relative URLs are used):

```
ixbrl-report ixbrl/10k/lyft-20201231.htm \
    -b https://www.sec.gov/Archives/edgar/data/1759509/000175950921000011/lyft-20201231.htm
```

Dump iXBRL as XBRL:
```
ixbrl-to-xbrl accts.html
```

## API

The `ixbrl-to-csv` file is a good starting point if you want to see how
the API works.

## What next?

This loads into a Redland RDF sqlite3 store:

```
ixbrl-to-rdf -i accts.html -f ntriples > accts.ntriples
rdfproc -n -s sqlite accts.db parse accts.ntriples ntriples
rdfproc -s sqlite accts.db print | head
```

I run a SPARQL store across the data, and view it with
[LodLive](https://github.com/LodLive/LodLive).

![Screenshot of LodLive](docs/screenshot.png)



