相关工具简介
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 官网