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

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows x86-64

reasonable-0.1.49_alpha3-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_alpha3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (8.0 kB view details)

Uploaded Python 3 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

reasonable-0.1.49_alpha3-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_alpha3-cp37-abi3-macosx_10_7_x86_64.whl (405.9 kB view details)

Uploaded CPython 3.7+ macOS 10.7+ x86-64

File details

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

File metadata

  • Download URL: reasonable-0.1.49_alpha3.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_alpha3.tar.gz
Algorithm Hash digest
SHA256 b43f11e7474d3be0ff052b069a413418da0de01c8ae5d6615fa51387de4e0861
MD5 2ef734dbc8c0431e046320a3dcea0a12
BLAKE2b-256 752ed34c1078d698ddb80980fe24ad1fe676a36b9533d2af040d6b3f37e253bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f45ba5e3a6758377c17652968ccd7dddde2a6100530caef2b01fd136490c59f7
MD5 88e714af89a8d5e219ea1e5e33b36330
BLAKE2b-256 e895ca9d4d00e9f12f6af19ce35502190ac63fbf5a9fa56570b7c2aa1f213cb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 884db778466641663be613400b639b792be15e03626c81565e701a06c18f02c5
MD5 794f83610ddcac4a299f0c7491f4a646
BLAKE2b-256 00084c122d23f9666ad62aa42f9898ca26fb3d78af4a4c4eaa33777cbf6e1c82

See more details on using hashes here.

File details

Details for the file reasonable-0.1.49_alpha3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 82fac1505b5c2c37687104262917c84ebc9e849b9a9334964e637923e31e3937
MD5 9f5bf6ff100393274f0677a9145b9d81
BLAKE2b-256 fa9d42cab099ab78f9534cbc8f872bbe50d314a3a97e14d6e2d9eddd5936bbdc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha3-cp37-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 661f21de688aff84e4708b3be62befbd7d905b136d84b80b655770577a2521dc
MD5 5c6bed7510055c94fa8bfecd2d124804
BLAKE2b-256 36301375bbc349449e5714e43324092f19807f1c9e00fe64db1b9f61dc628aac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.1.49_alpha3-cp37-abi3-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 a27ad2beb90b8d6ac5a9a65599f940a942e0ac340499d5a27091b34f5a06a8e0
MD5 b2b9d7b5f7d1418716f76ef42808f314
BLAKE2b-256 458f3e34e582ad765166d90076e9b4b1c8c3461a112964f9e837023948a66c72

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