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

Uploaded Source

Built Distributions

reasonable-0.1.49_alpha8-py3-none-win_amd64.whl (8.4 kB view details)

Uploaded Python 3 Windows x86-64

reasonable-0.1.49_alpha8-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.49_alpha8-cp37-abi3-manylinux_2_24_x86_64.whl (434.5 kB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.24+ x86-64

reasonable-0.1.49_alpha8-cp37-abi3-macosx_10_7_x86_64.whl (405.3 kB view details)

Uploaded CPython 3.7+ macOS 10.7+ x86-64

File details

Details for the file reasonable-0.1.49_alpha8.tar.gz.

File metadata

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

File hashes

Hashes for reasonable-0.1.49_alpha8.tar.gz
Algorithm Hash digest
SHA256 b700bd36bd562b3f75d12e06f9ffc12fa9437f6cbbbdcb013f05adfdaa386a49
MD5 6f8a71abb6b93ab55e905dc4e0e3363a
BLAKE2b-256 98a2142bc3ceddd70e6af2b6ab17e1bf289aa7d85ac1a3b692f8fe2b0db03807

See more details on using hashes here.

File details

Details for the file reasonable-0.1.49_alpha8-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0abe6d94852b1bd5345e656596f930a737909cb0aa9c08e1b448000f6d0fe5d2
MD5 c4792458d54161485021880e7a8f891f
BLAKE2b-256 a8c052dad42424e05e2dfbfbcfd5ecad38fc2c8e628e9435c5b58011f3ab65c8

See more details on using hashes here.

File details

Details for the file reasonable-0.1.49_alpha8-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha8-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6bc881f9f627927edb3bd2b015e0cd555bbf66199b1f721e4278fcac631477c9
MD5 ded697a0553e7f4865a03bf99c7f6f6b
BLAKE2b-256 86712f6998fc1ff3b22b40e9d7cf873efb3b60be97e655c33bfba0954e3b8e43

See more details on using hashes here.

File details

Details for the file reasonable-0.1.49_alpha8-cp37-abi3-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha8-cp37-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 41bf9b27ae0f1a06fd4f48ba893c81c9a48929e4f9b1c0c4948d63f60438729a
MD5 c0ad48812b86a753e24a6a63f25533f3
BLAKE2b-256 b6fa1f8db506ad14bacebec67656cb8712c2109411be3353d5fd110203a1b5a3

See more details on using hashes here.

File details

Details for the file reasonable-0.1.49_alpha8-cp37-abi3-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha8-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 101b48627ef146ca7f957721de3594863c6d4c6cc148f6cab28a4a400c91d324
MD5 03b5fbaad6145e137be842859e70d11a
BLAKE2b-256 b2b1e24f3e28e098664c98c714d471f00b7663cef14f9d7f3912c16afc7d8c2b

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