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

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows x86-64

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

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

reasonable-0.1.49_alpha7-cp37-abi3-macosx_10_7_x86_64.whl (405.7 kB view details)

Uploaded CPython 3.7+ macOS 10.7+ x86-64

File details

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

File metadata

  • Download URL: reasonable-0.1.49_alpha7.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.49_alpha7.tar.gz
Algorithm Hash digest
SHA256 f477970077197d268f77967e1750540bb9fc6982e6d3590a8aa41d33e3856c1b
MD5 218cde6bc1ad743b0bffbbc1ea050d0b
BLAKE2b-256 2c2966b42d45549e1ca8f980bfc9830d7de78d13ce1f5fdb37bab2cf1e1409b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3aa2e12a9d137ab883e5f7c4c4fb01b9c4e796653e556414004562c95d8d7e57
MD5 d8a18841ac951205d4f76ecd4675d2ff
BLAKE2b-256 16004bc131a925d99d427226b0e88c282f0357abc98f937aa7ae4b8e51b33192

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha7-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b3dc8e3a8622289fccbb01f7cfcf7c3126646f658a20491502d7287f965ce6d8
MD5 7c7603533b0927618fdb3e49edc8e8b4
BLAKE2b-256 8301aeddd9c17d94485313ce8a073fe6720c6d829e000a64fe2089370c6a28c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha7-cp37-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 87b2d06691050be19adec7b082b81fecf16a8d72b4aa5a81ec788d9a4b00b1db
MD5 cfe284ccab30f1220dc4a1e06451799f
BLAKE2b-256 e387ff048dd8f695699a5f2887fcd10acf24cd98331de560fad6232b8823d71a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha7-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 230088d93bb9b07667a04f30e98082857aedd49be51040409f90cff422dedf17
MD5 e9525b21a164edb15d692b58d9ba39c1
BLAKE2b-256 abe17c78fcab80410faa0158c101817b8e1b7dd1f3fcbc02ea30f9ad738fb008

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