知识推理————相关工具介绍(你值得了解)

相关工具简介

FaCT++

  • 曼彻斯特大学开发的描述逻辑推理机
  • 使用 C++ 实现, 且能与 Protege 集成
  • Java 版本名为 Jfact, 基于 OWL API
  • 使用举例
OWLReasonerFactory reasonerFactory = new JFactFactory();  // 构建推理机
OWLReasoner reasoner = this.reasonerFactory.createReasoner(ontology);

reasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY);  // 进行推理(分类)

FaCT++官网

Racer

  • 美国Franz Inc. 公司开发的以描述逻辑为基础的本体推理,也可以用作语义知识库
  • 支持 OWL DL, 支持部分 OWL 2 DL
  • 支持单机和客户端/服务器两种模式
  • 用 Allegro Common Lisp 实现
  • 使用举例
(classify-tbox & optional (tbox (current-tbox)))  // 进行TBox推理

(realize-abox & optional (abox (current-abox)))  // 进行ABox推理

Racer官网

Pellet

  • 马里兰大学开发的本体推理机
  • 支持 OWL DL 的所有特征, 包括枚举类和XML数据类型的推理
  • 支持 OWL API 以及 Jena 的接口
  • 使用举例
PelletReasoner reasoner = PelletReasonerFactory.getInstance().createReasoner(ontology);  // 构建一个推理机

NodeSet<OWLNamedIndividual> individuals = reasoner.getInstances(Person, true);  // 通过查询接口进行推理

Pellet 在 GitHub项目

HermiT

  • 牛津大学开发的本体推理机
  • 基于 hypertableau 运算,更加高效
  • 支持 OWL 2 规则
  • 使用举例
Reasoner hermit = new Reasoner(ontology);  // 构建一个推理机

System.out.println(hermit.isConsistent());  // 一致性检验

HermiT 官网
相关工具总结

KAON2

  • OWL 推理机、本体管理API
  • 基于一阶消解原理
  • 针对大规模ABox进行优化
    在这里插入图片描述
  • 使用举例
OntologyManager ontologyManager = KAON2Manager.newOntologyManager();  // 创建本体
Ontology ontology = ontologyManager.createOntology("http://kaon2.semanticweb.org/example04", new HashMap<String, Object>());

Reasoner reasoner = ontology.createReasoner();   // 创建推理机并用于查询
Query whatDoPeopleKnowAbout = reasoner.createQuery(new Literal[] {
		KAON2Manager.factory().literal(true, person, new Term[] {X}),
		KAON2Manager.factory().literal(true, personKnowsAboutTopic, new Term[] {X, Y}),
	}, new Variable[] {X, Y});

KAON2 官网

RDFox

  • 由牛津大学开发的可扩展、跨平台、基于内存的RDF三元组存储系统
  • 支持并行Datalog推理、SPARQL查询
  • 使用举例
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();    // 创建本体与存储
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(IRI.create("test.owl"));
DataStore store = new DataStore(DataStore.StoreType.ParallelSimpleNN, true);

store.importOntology(ontology);  // 导入本体进行推理
store.applyReasoning();

RDFox 官网
相关工具总结

Ontop

  • 最先进的 OBDA 系统
  • 兼容 RDFS、OWL 2 QL、R2RML、SPARQL标准
  • 支持主流关系数据库: Oracle、MySQL、SQL Server、 Postgres
  • 开源(Apache License 2.0)
    Ontop 官网

Drools在这里插入图片描述

  • 商用规则管理系统,其中提供了一个规则推理引擎
  • 核心算法基于 RETE 算法改进
  • 提供规则定义语言, 支持嵌入 Java 代码
  • 使用举例
KieServices ks = KieServices .Factory.get();  // 创建容器与会话
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = KContainer.newKieSession("ksession-rules");

kSession.fireAllRules();  // 触发规则

Drools 官网

Jena在这里插入图片描述

  • 用于构建语义网应用的 Java 框架
  • 提供了处理 RDF、RDFS、OWL数据的接口,还提供了一个规则引擎
  • 提供三元组的内存存储于查询
  • 使用举例
Model m = ModelFactory.createDefaultModel();  // 创建模型

Reasoner reasoner = new GenericRuleReasoner(Rule.rulesFromURL("file:rule.txt"));  // 创建规则推理机
InfModel inf = ModelFactory.createInfModel(reasoner, m);

jena 官网

RDF4J (原 Sesame)在这里插入图片描述

  • 一个处理 RDF 数据的开源框架
  • 支持语义数据的解析、存储、推理和查询
  • 能够关联几乎所有 RDF 存储系统
  • 能够用于访问远程 RDF 存储
  • 使用举例
String pre = "PREFIX:<http://foo.org/bar#>\n";  // 创建规则
String rule = pre + "CONSTRUCT { ?p :relatesTo :Cryptography } WHERE " + "{ { :Bob ?p :Alice } UNION { :Alice ?p :Bob } }";

Repository repo = new SailRepository(new CustomGraphQueryInference(new MemoryStore(), QueryLanguage.SPARQL, rule, ""));  // 创建推理知识库

RDF4J 官网

GraphDB (原 OWLIM)在这里插入图片描述

  • 一个可扩展的语义数据存储系统(基于RDF4J)
  • 包含三元组存储、推理引擎、查询引擎
  • 支持 RDFS、OWL DLP、OWL Horst, OWL 2 RL 推理
    在这里插入图片描述
    GraphDB 官网
    相关工具总结
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值