87个版本

0.2.1-alpha92022年11月7日
0.2.0 2022年10月31日
0.1.53 2022年2月23日
0.1.49 2021年10月5日
0.1.6 2020年2月7日

#282数据库实现

Download history 46/week @ 2024-04-02

182 每月下载次数

自定义许可

1.5MB
2.5K SLoC

Reasonable

Nightly Build Build PyPI version

一个具有合理性能的OWL 2 RL推理器

性能

比较 reasonable、OWLRL 和 Allegro 的性能。评估包括将不同大小的 Brick 模型加载到各自的推理引擎中,并计时产生材料化所需的时间。reasonable 在此工作负载上比 Allegro 快约 7 倍,比 OWLRL 快 38 倍。

benchmark

如何使用

Python

为了方便使用,我们使用 pyo3 项目为此项目生成 Python 3.x 绑定。安装这些绑定应该和 pip install reasonable 一样简单。

请参阅 brickschema 包以处理 Brick 模型。该包为此推理器和其他几个推理器提供了通用接口。

使用示例

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

请参阅 Rust 文档

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 规则

使用此处定义的规则 定义

待办事项:实现 RDF/RDFS 推理语义,如 此处 所述

注意:尚未实现产生异常的规则;等待确定处理这些错误的最佳方式。

等价语义

已完成 规则名称 备注
eq-ref 实现非常低效;导致大量波动
eq-sym
eq-trans
eq-rep-s
eq-rep-p
eq-rep-o
eq-diff1 抛出异常
eq-diff2 抛出异常
eq-diff3 抛出异常

属性公理语义

已完成 规则名称 备注
prp-ap
prp-dom
prp-rng
prp-fp
prp-ifp
prp-irp 抛出异常
prp-symp
prp-asyp 抛出异常
prp-trp
prp-spo1
prp-spo2
prp-eqp1
prp-eqp2
prp-pdw 抛出异常
prp-adp 抛出异常
prp-inv1
prp-inv2
prp-key
prp-npa1 抛出异常
prp-npa2 抛出异常

类语义

已完成 规则名称 备注
cls-thing
cls-nothing1
cls-nothing2 抛出异常
cls-int1
cls-int2
cls-uni
cls-com 抛出异常
cls-svf1
cls-svf2
cls-avf
cls-hv1
cls-hv2
cls-maxc1 抛出异常
cls-maxc2
cls-maxqc1 抛出异常
cls-maxqc2 抛出异常
cls-maxqc3
cls-maxqc4
cls-oo

类公理语义

已完成 规则名称 备注
cax-sco
cax-eqc1
cax-eqc2
cax-dw 抛出异常
cax-adc 抛出异常

其他

  • 目前没有数据类型语义

开发笔记

要发布 reasonable 的新版本,给提交标记版本(例如 v1.3.2)并将标签推送到 GitHub。这将执行 publish 动作,构建并上传到 PyPi。

依赖

~10–23MB
~301K SLoC