Skip to main content

Python bindings for the OntoLogos OWL reasoner — RDFS, OWL RL, and OWL EL classification

Project description

ontologos

PyPI Python Documentation License

Python bindings for OntoLogos — a Rust-native OWL reasoner for RDFS, OWL RL, OWL EL, OWL 2 DL, and SWRL on PyPI (1.1.4 published).

Install: pip install ontologos. Production profiles: rdfs, rl, el, auto, dl, swrl. Preview: alc, dl-preview. See Release status and Profile stability.

Load .owl / .ttl files or build ontologies in memory, run the same profile engines as the CLI, and export taxonomies to pandas or Polars. Powered by PyO3 and the stable Python ABI (abi3).

Full guide: ontologos.readthedocs.io — Python

Features

  • File or in-memoryReasoner(path=...) or Ontology / OntologyBuilder
  • Profiles"rdfs", "rl", "el", "auto", "dl", "swrl" on PyPI; "dl-preview", "alc" are preview
  • Classify — RDFS/RL materialization reports or EL taxonomy dicts
  • Explain — proof graph dicts with IRI-resolved conclusions (EL full traces)
  • Incremental — multi-pass add_subclass_of / remove_subclass_of with incremental=True
  • Export — optional subsumptions_to_pandas / subsumptions_to_polars

Install

Requires Python 3.10+.

pip install ontologos

Optional DataFrame helpers:

pip install 'ontologos[pandas]'
pip install 'ontologos[polars]'

Pre-built wheels are published for:

OS Architectures
Linux x86_64, aarch64 (manylinux)
macOS x86_64, aarch64
Windows x64, aarch64

One abi3 wheel per platform covers Python 3.10–3.13+. If no wheel matches, build from source (Rust + maturin).

Quick start

Download Pizza for EL examples (from a clone: ./benchmarks/scripts/download.sh at repo root):

# From repository clone only:
./benchmarks/scripts/download.sh

Classify an OWL file

import ontologos

# OWL EL taxonomy
reasoner = ontologos.Reasoner(path="pizza.owl", profile="el")
taxonomy = reasoner.classify()
print(taxonomy["subsumption_count"], taxonomy["subsumptions"][:3])

# RDFS materialization
reasoner = ontologos.Reasoner(path="ontology.owl", profile="rdfs")
report = reasoner.classify()
print(report["inferred_axioms"])

# Auto-detect profile (EL or RL)
reasoner = ontologos.Reasoner(path="ontology.owl", profile="auto")
result = reasoner.classify()

Build in memory

from ontologos import OntologyBuilder, Reasoner

builder = OntologyBuilder()
builder.add_class("http://example.org/A")
builder.add_class("http://example.org/B")
builder.subclass_of("http://example.org/A", "http://example.org/B")
ontology = builder.build()

reasoner = Reasoner(ontology=ontology, profile="el")
taxonomy = reasoner.classify()

Load from JSON dict instead of the builder (v2 or v3; writers on workspace 1.1.4 emit v3):

from ontologos import Ontology, Reasoner

ontology = Ontology.from_dict({
    "format_version": 2,
    "entities": [
        {"iri": "http://example.org/A", "kind": "Class"},
        {"iri": "http://example.org/B", "kind": "Class"},
    ],
    "axioms": [
        {"SubClassOf": {
            "subclass": "http://example.org/A",
            "superclass": "http://example.org/B",
        }}
    ],
})
reasoner = Reasoner(ontology=ontology, profile="el")
reasoner.classify()

Incremental edits

reasoner = Reasoner(ontology=ontology, profile="el", incremental=True)
reasoner.classify()

reasoner.add_subclass_of("http://example.org/B", "http://example.org/C")
reasoner.classify()  # re-classify with warm session

reasoner.remove_subclass_of("http://example.org/A", "http://example.org/B")
reasoner.classify()

Explain inferences

graph = reasoner.explain()
print(graph["node_count"])
for node in graph["nodes"][:5]:
    print(node["rule"], node.get("conclusion_sub"))
Profile Explain coverage
EL Full inference traces
RL / RDFS Asserted axioms seeded; inferred steps lack per-rule premises until upstream exposes traces
auto Routes like classify

Export to DataFrame

from ontologos import subsumptions_to_pandas

df = subsumptions_to_pandas(taxonomy)
# columns: subclass, superclass

API overview

Type / method Description
Reasoner(path=..., profile=..., incremental=False) Load OWL file and classify
Reasoner(ontology=..., ...) Classify in-memory ontology
reasoner.classify() Run engine; returns taxonomy or materialization dict
reasoner.explain() Proof graph dict (node_count, nodes, parse_meta)
reasoner.taxonomy Last EL taxonomy (after classify)
reasoner.parse_meta Parser warnings and axiom counts
reasoner.add_subclass_of / remove_subclass_of Incremental axiom edits
reasoner.add_axiom_json Add axiom via JSON object (v2/v3 shape)
Ontology.from_json / from_dict Load JSON snapshot (v2 or v3)
OntologyBuilder Fluent builder → build()
subsumptions_to_pandas / subsumptions_to_polars Optional taxonomy export

Invalid profiles and unsupported constructs raise RuntimeError with a message string.

Reasoner is not thread-safe — do not mutate from multiple threads.

Development

From a repository clone:

cd crates/ontologos-py
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install 'maturin>=1.7,<2.0' pytest '.[pandas]'
maturin develop --release
pytest tests/ -q

Pizza EL golden test (requires corpus):

./benchmarks/scripts/download.sh   # from repo root
pytest tests/test_pizza_golden.py -q

What OntoLogos is (and is not)

OntoLogos is an orchestration layer: profile detection, a unified ontology model, CLI, Python wheels, and security limits on top of in-house EL, ontologos-dl for OWL 2 DL, and reasonable for RL/RDFS. It maps a subset of OWL — validate on your corpus before production cutover.

For engine-only workflows, consider reasonable, whelk-rs, or horned-owl directly.

Links

Resource URL
Python guide readthedocs — Python
Getting started readthedocs
Migration v0.9 → v1.0 migration guide
Repository github.com/eddiethedean/ontologos
Rust crates crates.io — ontologos-core
Changelog CHANGELOG.md

License

Licensed under either of Apache-2.0 or MIT.

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

ontologos-1.1.4.tar.gz (427.8 kB view details)

Uploaded Source

Built Distributions

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

ontologos-1.1.4-cp310-abi3-win_arm64.whl (2.4 MB view details)

Uploaded CPython 3.10+Windows ARM64

ontologos-1.1.4-cp310-abi3-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

ontologos-1.1.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

ontologos-1.1.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

ontologos-1.1.4-cp310-abi3-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

ontologos-1.1.4-cp310-abi3-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file ontologos-1.1.4.tar.gz.

File metadata

  • Download URL: ontologos-1.1.4.tar.gz
  • Upload date:
  • Size: 427.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for ontologos-1.1.4.tar.gz
Algorithm Hash digest
SHA256 6fae8d1bde3b46ad014ccc96a9fb9475dd9a178157e575835e21a9338c50cbc6
MD5 41ac6948f21497f46ad8a28974fc9611
BLAKE2b-256 216f3044c3414606a7061d1dea55d1eae11450584a6b482e2a4e924494912c5e

See more details on using hashes here.

File details

Details for the file ontologos-1.1.4-cp310-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for ontologos-1.1.4-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 a70769a4df47ed3546bce76b2be5991db061fa815333d9ffbbd7dd04f782f8f7
MD5 dcefceaa6195df655a76eef061b7e54b
BLAKE2b-256 1d21a0025f2f29c577aa7e5b083950e8e0d88b934381bc53af11c0e58011d742

See more details on using hashes here.

File details

Details for the file ontologos-1.1.4-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for ontologos-1.1.4-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d32636d015a353008565e097b1769b2bbcf1058ddfbd07ccc7e005eed67c1889
MD5 380db837ec443b1c99d2ee6fcbb7472f
BLAKE2b-256 c969a570b0ee2075d88b9fb23e502a465a49272595ddb3894d80787edbe68a92

See more details on using hashes here.

File details

Details for the file ontologos-1.1.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ontologos-1.1.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a68a7a68f97138442d6023da199e923d0c3b38502271e91a16edf327af4dd839
MD5 46f26dc6ae70eea580548b67036c5e91
BLAKE2b-256 bc10bae019f639a87d62b03b842ff26952f8a6008f6d2376ed2d5a9d66fd1de2

See more details on using hashes here.

File details

Details for the file ontologos-1.1.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ontologos-1.1.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 18f57add13f967c622d9ce63f530821a3e6a0aad8f7e495223ab0d9d5f23d2c5
MD5 511197f83093d119351867d7ac2c5ed6
BLAKE2b-256 91b6bfc87d8319efff4eccbf38154195ee0c8715d659f5d4f5a599a05f796f11

See more details on using hashes here.

File details

Details for the file ontologos-1.1.4-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ontologos-1.1.4-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d56a889b45807f33758a21c5fadf0d09d48dce3f5ff0acc8cd887103d7ccbaf8
MD5 8bfc6c0bae24044703186671d5a3605e
BLAKE2b-256 82f864bd6d3d1ee56f735b6c554ab2b63ee00ceb15cac7fb480b7e35e0fa9ca5

See more details on using hashes here.

File details

Details for the file ontologos-1.1.4-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ontologos-1.1.4-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df6b0252730bc5a51bd6df5b272687e7cd40abc77f079b3cf83509ddf44f920e
MD5 a31046e2a2bb441844e5f34414002069
BLAKE2b-256 2e1cbb8b6fc2aff8340b4e3f750269848965b65b3edc6e5eadf6822f467d7319

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