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

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows x86-64

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

File metadata

  • Download URL: reasonable-0.1.49_alpha9.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_alpha9.tar.gz
Algorithm Hash digest
SHA256 0281ed448c5ce1f0fab368b81638a415abc0cd0164a18b0d4ce563122f259c76
MD5 40d888fb7049227b8e46b83218f8cddd
BLAKE2b-256 e7bd31fb0e320d14e572b1f14549bc5e865def16141ac482fb81a1f7da42513f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dc23b9ddec73a51ef88d78776a165129a2adfdf63d7dde0a24f6f4254ac2d93f
MD5 e74198ddebb318ebb6e3d2a6ea544f1a
BLAKE2b-256 771f8d1fc82c2493f12f0eb6d3b72f8658fe86ae595b288c1e7bf6cc2f755cae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha9-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d7d466dd2289fd7c71b4674b61eae912997e66d0bade91b5b2c6745fb594410e
MD5 e4bc6c2cf99088bb7c7252f011af5cf2
BLAKE2b-256 94c81f1048771c74f91788e7d2f387cb3c36bc0b5b7ce9dc381e544209e90d5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha9-cp37-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 daccb2683ec2fa698458f59cdce228948e3ae89746bbd051dafbd4097f47107f
MD5 3621efbe08fed8273c43eb6b856afea1
BLAKE2b-256 3c647ac0540032f08e9c9771c8a925afa1562926eb7902bfe5405f734a21d225

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha9-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 ceb1e3d87145b8d386b10b4b3ae2f9aad1cd71e460ee95d3bad49796819847a9
MD5 11e58580cd3fb9a4597335f2f1b94cd3
BLAKE2b-256 efd099797804dff5071028edebaf75848e26535496b0e7c008f333237cdd8d5a

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