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_alpha1.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

reasonable-0.1.47_alpha1-cp39-cp39-macosx_10_7_x86_64.whl (410.5 kB view details)

Uploaded CPython 3.9 macOS 10.7+ x86-64

reasonable-0.1.47_alpha1-cp38-cp38-macosx_10_7_x86_64.whl (409.8 kB view details)

Uploaded CPython 3.8 macOS 10.7+ x86-64

reasonable-0.1.47_alpha1-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_alpha1-cp36-cp36m-macosx_10_7_x86_64.whl (409.4 kB view details)

Uploaded CPython 3.6m macOS 10.7+ x86-64

File details

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

File metadata

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

File hashes

Hashes for reasonable-0.1.47_alpha1.tar.gz
Algorithm Hash digest
SHA256 ff2cff91f7ed64c85a0e1c55a2aa60f5a0e263fca0a711697a677b09ccc3dc71
MD5 0f998b6bb51d9462d0d1d1a9b6715114
BLAKE2b-256 a02fcf97330cda3b6805bddc93093939924a26783c4943b1764b5dcaf76c716d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha1-cp39-cp39-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 7c2f0ba37ce0ee8dc0e2df99f8adee990863845aab73c05c840da2b5c785ac1a
MD5 146567ef8bb5979ddc22656077441ce1
BLAKE2b-256 d5023faf351144dc7511d74459717c0b7892ca78724bad63fcfde5b8a493a912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha1-cp38-cp38-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 ecebec05409a526da7e550a913426d3ded08c398d75c045bb82f2685c959005d
MD5 492a6b161ef1f4c288e33891393a45f3
BLAKE2b-256 e36c3fcdd4b30829d6809067048b1fc9d0e78d92283b1b6d1e7d8ab1830837cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha1-cp37-cp37m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 579d9b0b62e3a3e3bffcaf6022e253f38db4dc63fa75fa0c536d7d201fd9c7a5
MD5 bfb13a24011df140db3279fb0fe7557b
BLAKE2b-256 ff0c3559f585c24f267464f187be3854b47911d88798a3b09a299c142ffe15b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.47_alpha1-cp36-cp36m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 0fb2f2ff0be23a83b5eadee5e40fa3a69cab37f278afa9b0729535578dfe4cf6
MD5 68c404cc6553a9888fdb7939c8394749
BLAKE2b-256 fc7d4b9c0086ab3eead989004432f3a9e0b0408fcbef4d4a6a09cda81da108c2

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