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

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows x86-64

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

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

reasonable-0.1.49_alpha5-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_alpha5.tar.gz.

File metadata

  • Download URL: reasonable-0.1.49_alpha5.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_alpha5.tar.gz
Algorithm Hash digest
SHA256 f4d0322ec8d233670bc77cf336d8e22a45a360205a7fad5342b1083f71059d7c
MD5 e2013043d02d5c22079a1b69ba93f057
BLAKE2b-256 42da4b05e26943a130cacba223a350a4ac39b513dc24094d00e10f0f157d9cfe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3ed47b583e7d1c8a83646551ec03ff8fac7ca0c91d16e1a8df27849632b65117
MD5 3bd05f6ab5c52fc410d65769e1e2d986
BLAKE2b-256 5b110f90e532172d39de725d04e78b27b4b2342b9838a971df84774ccc77ed72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1126444ced2934caf48d78fcf9a7c907c556362b1360a6ce60cc0db5a6115fbd
MD5 19fab5df6a1ea0c5789caef1be49738f
BLAKE2b-256 3c4a80bf8fff6d4e14edd6a4760d601e21138f22f8ea78044e0a995ae78a1c18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha5-cp37-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 7f26fcfa1518086344555e4d7246d4e7d5fdd602ee15ac0fec25ae11c805fd09
MD5 c1a5cfa814d459bb107f69be785d0aaa
BLAKE2b-256 f8df9c178fe434af2eb7f438eb7abbebc13fe910660a9c461b8cc907a67e9f22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha5-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 860445b1663461d0a1d907829fc75dacfcf83ab049ac00a825ce9f5baa52e32e
MD5 83054d102eeedb622ebcb73cea492f6a
BLAKE2b-256 6baeb6b18201c2a79b11b63ee2de1125d5b7e201dd25b5c23b72d0f5a8a32037

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