Skip to main content

Open Ontologies Lite (Python bridge)

A lightweight, pip-installable Python bridge to the same Oxigraph RDF/OWL engine that powers Open Ontologies. No Rust toolchain, no compilation, no multi-gigabyte build directorypyoxigraph ships the engine as a prebuilt wheel, so everything here is pure-Python glue installed from PyPI.

It exposes the core ontology lifecycle as both a Python library and an MCP server.

Why this exists

The full Rust engine compiles a large dependency tree from source (5+ GB of build artifacts, heavy SSD churn). This bridge is the opposite trade: install in seconds, run anywhere Python runs, keep the Oxigraph SPARQL engine underneath. It covers the core surface (validate, load, query, diff, lint, convert, stats, save), not the full 100-tool engine.

Install

pip install open-ontologies-lite        # one universal wheel, no compiler

Use as a Python library

from open_ontologies_lite import OntologyEngine

engine = OntologyEngine()
engine.load(open("ontology.ttl").read())          # load Turtle
print(engine.stats())                              # {'triples':..,'classes':..,..}

rows = engine.query(
    "SELECT ?c WHERE { ?c a <http://www.w3.org/2002/07/owl#Class> }"
)
print([r["c"] for r in rows["rows"]])

print(engine.lint())                               # missing labels/domains/ranges
print(OntologyEngine.convert(ttl, "turtle", "ntriples"))

See examples/python_usage.py for a runnable end-to-end script.

Version governance with KGCL

from open_ontologies_lite import kgcl_diff

cs = kgcl_diff(open("v1.ttl").read(), open("v2.ttl").read())
print(cs.counts())     # {'node_creation': 1, 'node_rename': 1, ...}
print(cs.to_kgcl())    # KGCL change records, one per line

kgcl_diff classifies the change between two ontology versions into KGCL records (node created/deleted, renamed, annotation changed, edge created/deleted). Pure structural comparison, no model. Also exposed as the onto_kgcl_diff MCP tool.

Alignment candidate generation with HNSW (optional [align] extra)

pip install "open-ontologies-lite[align]"
from open_ontologies_lite import AlignmentIndex

idx = AlignmentIndex(dim=384)
idx.add("flw:PC-BAK", vec_bakery)       # vectors come from YOUR embedder
idx.add("FOODON:00001626", vec_foodon)
idx.build()
idx.query(vec_query, k=5)               # -> [Candidate(id, score), ...]

MCP-native by design: the package owns the HNSW index, you supply the vectors. Lite never calls an embedding model; bring vectors from your orchestrator and let it adjudicate the candidates.

Use as an MCP server

open-ontologies-lite          # stdio MCP server
# or: python -m open_ontologies_lite

Register it with any MCP client (e.g. Claude):

{
  "mcpServers": {
    "open-ontologies-lite": { "command": "open-ontologies-lite" }
  }
}

Tools

Tool Purpose
onto_validate Parse RDF/OWL and report syntax validity + triple count (no load)
onto_load / onto_load_file Load RDF text or a file into the in-memory store
onto_clear Reset the store
onto_stats Triple / class / property / individual counts
onto_query SPARQL SELECT / ASK / CONSTRUCT / DESCRIBE
onto_save Serialize the store to a file
onto_convert Convert between Turtle / N-Triples / N-Quads / TriG / RDF-XML / N3 / JSON-LD
onto_diff Triple-level diff between two ontologies
onto_kgcl_diff KGCL change records between two versions (governance / change logs)
onto_lint Missing labels, domains, ranges
onto_shacl SHACL conformance: violations with focus node, path, value, severity and constraint (needs the [shacl] extra)

Relationship to the Rust engine

This is the Python layer of the project. For the full engine (three-layer Dynamics/Causal/Planner architecture, HNSW semantic search, OWL2-DL tableaux reasoning, PDDL planning, governance, 100 tools), use the Rust build. Same Oxigraph core; pick the weight class you need.

License

MIT

Download files

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

Source Distribution

open_ontologies_lite-0.3.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

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

open_ontologies_lite-0.3.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file open_ontologies_lite-0.3.0.tar.gz.

File metadata

  • Download URL: open_ontologies_lite-0.3.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_ontologies_lite-0.3.0.tar.gz
Algorithm Hash digest
SHA256 19df39a56470216176fa8e7ed63659ca7f800772c87815cf5228822aefd96b4d
MD5 9b247106b1b1eccef85d5647351dc2df
BLAKE2b-256 44ebcf33d8e7f27103ed32fa55538cef4405c9de7ffd3a9a2f420981de21fea5

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_ontologies_lite-0.3.0.tar.gz:

Publisher: python-release.yml on fabio-rovai/open-ontologies

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file open_ontologies_lite-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for open_ontologies_lite-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e2f90db279418f28859cd5f9af1d747adb6dd367b817eb1bade0bcc790cda68e
MD5 cc83d0ad22a8d3e31cf4c62c6c94cd1a
BLAKE2b-256 242e31190fbc71ae8e974f9b08883ecf949a945669f44f8f03361e99257d8173

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_ontologies_lite-0.3.0-py3-none-any.whl:

Publisher: python-release.yml on fabio-rovai/open-ontologies

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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