Skip to main content

An OWL 2 RL reasoner with reasonable performance

Project description

Reasonable

Nightly Build Build PyPI version

An OWL 2 RL reasoner with reasonable performance

Performance

Comparing performance of reasonable with OWLRL and Allegro. Evaluation consisted of loading Brick models of different sizes into the respective reasoning engine and timing how long it took to produce the materialization. reasonable is about 7x faster than Allegro and 38x faster than OWLRL on this workload.

benchmark

How to Use

Python

To facilitate usage, we use the pyo3 project to generate Python 3.x bindings to this project. Installing these should be as easy as pip install reasonable.

See also the brickschema package for working with Brick models. The package provides a generic interface to this reasoner and several others.

Usage looks like:

import reasonable

# import triples from an rdflib Graph
import rdflib
g = rdflib.Graph()
g.parse("example_models/ontologies/Brick.n3", format="n3")
g.parse("example_models/small1.n3", format="n3")

r = reasonable.PyReasoner()
r.from_graph(g)
triples = r.reason()
print("from rdflib:", len(triples))

# import triples from files on disk
r = reasonable.PyReasoner()
r.load_file("example_models/ontologies/Brick.n3")
r.load_file("example_models/small1.n3")
triples = r.reason()
print("from files:", len(triples))

Rust

See Rust docs

Example of usage from Rust:

use ::reasonable::owl::Reasoner;
use std::env;
use std::time::Instant;
use log::info;

fn main() {
    env_logger::init();
    let mut r = Reasoner::new();
    env::args().skip(1).map(|filename| {
        info!("Loading file {}", &filename);
        r.load_file(&filename).unwrap()
    }).count();
    let reasoning_start = Instant::now();
    info!("Starting reasoning");
    r.reason();
    info!("Reasoning completed in {:.02}sec", reasoning_start.elapsed().as_secs_f64());
    r.dump_file("output.ttl").unwrap();
}

OWL 2 Rules

Using rule definitions from here.

TODO: implement RDF/RDFS entailment semantics as described here

Note: haven't implemented rules that produce exceptions; waiting to determine the best way of handling these errors.

Equality Semantics

Completed Rule name Notes
no eq-ref implementation is very inefficient; causes lots of flux
yes eq-sym
yes eq-trans
yes eq-rep-s
yes eq-rep-p
yes eq-rep-o
no eq-diff1 throws exception
no eq-diff2 throws exception
no eq-diff3 throws exception

Property Axiom Semantics

Completed Rule name Notes
no prp-ap
yes prp-dom
yes prp-rng
yes prp-fp
yes prp-ifp
yes prp-irp throws exception
yes prp-symp
yes prp-asyp throws exception
yes prp-trp
yes prp-spo1
no prp-spo2
yes prp-eqp1
yes prp-eqp2
yes prp-pdw throws exception
no prp-adp throws exception
yes prp-inv1
yes prp-inv2
no prp-key
no prp-npa1 throws exception
no prp-npa2 throws exception

Class Semantics

Completed Rule name Notes
yes cls-thing
yes cls-nothing1
yes cls-nothing2 throws exception
yes cls-int1
yes cls-int2
yes cls-uni
yes cls-com throws exception
yes cls-svf1
yes cls-svf2
yes cls-avf
yes cls-hv1
yes cls-hv2
no cls-maxc1 throws exception
no cls-maxc2
no cls-maxqc1 throws exception
no cls-maxqc2 throws exception
no cls-maxqc3
no cls-maxqc4
no cls-oo

Class Axiom Semantics

Completed Rule name Notes
yes cax-sco
yes cax-eqc1
yes cax-eqc2
yes cax-dw throws exception
no cax-adc throws exception

Other

  • no datatype semantics for now

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

reasonable-0.1.47_alpha3.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

reasonable-0.1.47_alpha3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (6.5 kB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

reasonable-0.1.47_alpha3-cp39-cp39-macosx_10_7_x86_64.whl (410.4 kB view details)

Uploaded CPython 3.9 macOS 10.7+ x86-64

reasonable-0.1.47_alpha3-cp38-cp38-macosx_10_7_x86_64.whl (409.9 kB view details)

Uploaded CPython 3.8 macOS 10.7+ x86-64

reasonable-0.1.47_alpha3-cp37-cp37m-macosx_10_7_x86_64.whl (409.8 kB view details)

Uploaded CPython 3.7m macOS 10.7+ x86-64

reasonable-0.1.47_alpha3-cp36-cp36m-macosx_10_7_x86_64.whl (410.0 kB view details)

Uploaded CPython 3.6m macOS 10.7+ x86-64

File details

Details for the file reasonable-0.1.47_alpha3.tar.gz.

File metadata

  • Download URL: reasonable-0.1.47_alpha3.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.11.1

File hashes

Hashes for reasonable-0.1.47_alpha3.tar.gz
Algorithm Hash digest
SHA256 7b3bc72cde761c5c3a609d14d5d351c140b102c2e274ceccfd320238d74b332f
MD5 9a02de6253f789e4fc33f3ebf1da0add
BLAKE2b-256 62bf804a64d24d9ed4140a4f34f8adee2c956e0bdd1426186b3cadcf9873e6f7

See more details on using hashes here.

File details

Details for the file reasonable-0.1.47_alpha3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 117b0bdfe9ea1b10523b89b4d1271675b8d9717aa2455a01bab8781a0fcc9c1c
MD5 7eac3cd7cf4adb1ac5c1f034f03a5bcd
BLAKE2b-256 57d981fc8f1cce5cae006dced9adb1766b01dfa80f346e3f3c4686c649aa5394

See more details on using hashes here.

File details

Details for the file reasonable-0.1.47_alpha3-cp39-cp39-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha3-cp39-cp39-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 2b4b33407504650eba8145de446a060d5d133757e820386c639ba03683dc761f
MD5 83150dd1591b850701cab0a2a595355b
BLAKE2b-256 3a93a132e650f4b93fe672c5250aa9a1a78c063b68c6b9a1d482ddc830d41c93

See more details on using hashes here.

File details

Details for the file reasonable-0.1.47_alpha3-cp38-cp38-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha3-cp38-cp38-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 b9f927f15f02dd2d683ebc5727cda5622bce7f8d1afdf1351c846cc6b45b4df1
MD5 f4972ad2f03f210e52443b26bbee3ff2
BLAKE2b-256 d1a703ad4b014d04a8299d8e813d24e210821ce8b61cdcb8f88311001fb54b0c

See more details on using hashes here.

File details

Details for the file reasonable-0.1.47_alpha3-cp37-cp37m-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha3-cp37-cp37m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 5464a882f2d59eebde87d7a506f2074719b685ad0676e0a7f5fd97fd5030e463
MD5 05de5ec66b55ec04c74b476bc3917df5
BLAKE2b-256 0f31d3d36a2fcb186d0d36d5268baa9bc6b87e1de83218f50ced36c054096942

See more details on using hashes here.

File details

Details for the file reasonable-0.1.47_alpha3-cp36-cp36m-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha3-cp36-cp36m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 f5159a8b82549608ca6beef7337b108fdd6b6c32fa9c757d7f192fe31056359d
MD5 195cfd439ffab82815c0a756edb7f72e
BLAKE2b-256 d5570f9026aaea5ce83a68fb8bdad4cb65aa0c4620cad967c6b766814e792580

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page