OntoInk
Interactive ontology visualization, SHACL validation, and live TTL editing for MkDocs.
OntoInk is a MkDocs plugin that turns RDF/Turtle files into interactive, publication-ready ontology diagrams with SHACL constraint visualization. Write a code block in your markdown and OntoInk renders a fully interactive graph.
Live demo & full documentation →
Install
pip install ontoink
Use
# mkdocs.yml
plugins:
- search
- ontoink
markdown_extensions:
- pymdownx.superfences:
preserve_tabs: true
```ontoink
source: shapes/foaf-person/shape-data.ttl
shape: shapes/foaf-person/shape.ttl
height: 600px
```
Then mkdocs serve. See Getting Started for all fence options, GitHub Pages deployment and reasoner setup.
What you get
- Interactive graphs — formal ontology notation, six layouts, pan/zoom/search, minimap, level-of-detail and clustering for large ontologies, style presets (OntoInk, Chowlk, Graffoo, VOWL)
- Editable layout — colours, shapes, edge styles, shape size and fonts; multi-select with Ctrl+click and a right-click menu for align / distribute / arrange, selection-scoped ontology actions, and undo
- SHACL — constraint overlay on the graph, build-time validation with pySHACL, live re-validation in the inline TTL editor
- Shape recommendation — generate
sh:NodeShapes for classes with no coverage, from instance data and OWL axioms, with the evidence behind every constraint; or right-click a class and accept proposed constraints one click at a time as they appear on the graph - OWL reasoning — HermiT, Konclude (native or WASM) or owlrl, with inferred triples overlaid on the graph, consistency checking, and a proof tree explaining any inference the in-page reasoner made
- CI gates — competency questions as executable fences, shape-drift detection, plus
ontoink-report.jsonand README badges written on every build - Analytics — ontology metrics, SHACL coverage, shortest paths, in-page SPARQL, and OntoSniff quality checks with a 0–100 score
- Publication-ready export — PNG/SVG with legend and namespace prefixes, plus TTL download
- Browser-only tools — Playground · SHACL Editor · SPARQL Explorer · OntoSniff
- Embeddable —
ontoink.embed()mounts a graph in any page, under a strict CSP, with no CDN
Documentation
| Getting Started | install, configure, deploy |
| Embedding | use OntoInk outside MkDocs |
| Docker & self-hosting | production image, reasoner backends, API mode |
| Architecture | how it works and why |
| Changelog | what changed in each release |
Development
git clone https://github.com/ISE-FIZKarlsruhe/ontoink.git
cd ontoink
pip install -e ".[dev]"
pytest -v # see TESTING.md for the full local test guide
cd demo && mkdocs serve
Contributions welcome — please open an issue first to discuss proposed changes, add tests, and make sure pytest passes.
Requirements
Python ≥ 3.9 · MkDocs ≥ 1.4 · rdflib ≥ 6.0 · pySHACL ≥ 0.25 · pymdown-extensions ≥ 10.0. Browser-side dependencies (Cytoscape.js, dagre, CodeMirror) are vendored — no npm, no CDN.
License & citation
MIT — see LICENSE. If you use OntoInk in published work, please cite it via CITATION.cff; when using either Konclude backend, additionally cite Liebig et al. (2014), Konclude: System Description, Journal of Web Semantics 27-28, 78-85. See NOTICE for full attribution of the bundled reasoners.
Author
Ebrahim Norouzi — FIZ Karlsruhe, ISE. Developed in the context of NFDI and NFDI-MatWerk; visualization powered by Cytoscape.js.
Metadata
Release files for ontoink 0.7.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ontoink-0.7.8.tar.gz | 3.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ontoink-0.7.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.9 MB
Release files / ontoink-0.7.8.tar.gz
| Download URL | ontoink-0.7.8.tar.gz |
|---|---|
| Size | 3.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ec48ccea4cad8a2fe1ea44d99ca5feb25d1099b45ba47ebc63fb5f7dca393ea
|
|
BLAKE2b-256 checksum How to use checksums |
ac96476891199d8cd9bb106266b0537b64f7e6646d76601353d9c1b0b8fa0e36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / ontoink-0.7.8-py3-none-any.whl
| Download URL | ontoink-0.7.8-py3-none-any.whl |
|---|---|
| Size | 2.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0b06ce724607adf475fdddbb1d8c796dd8a86517a31f5b820b01d8137a38cb34
|
|
BLAKE2b-256 checksum How to use checksums |
a967b1742fcfe54ff953bdfacc96611881e2f9fca92c711e20bda899d8704a11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log