官方文档: Jena推理子系统旨在将一系列推理引擎或者推理器插入Jena,这些引擎用于导出额外的RDF断言(RDF assertions)
这些RDF断言来自某些基本RDF以及任何可选的本体信息以及与推理器相关联的公理和规则
支持使用RDF和OWL语言
这些语言允许从实例数据和类描述中推理出其他事实
这个机制(machinery)设计的非常通用,它包括一个通用规则引擎,可用于许多RDF处理或转换任务

在RDF中,模式(schema,也称为Ontology AKA tbox)数据和实例(instance,也称为AKA abox)之间没有强烈分离(strongly),因此任何数据无论是类相关还是实例相关,都可包含在bind或者在bindSchema

通用推理器
对于每种类型的推理器,都有一个工厂类(factory class),其实例可以用来创建关联实例Reasoner,可以通过直接转到已知工厂类并使用theInstance()静态方法或者从全局检索来定位ReasonerRegistry工厂实例,该全局存储着由分配给推理的URI索引的工厂实例(存储实例)
构建reasoners的工厂对象就是为了简化注册表服务的设计和扩展,一旦有了一个推理器实例,同一个实例可以在不同的数据集起作用并多次重复使用,而不会互相影响
个人总结:定义了一个推理器实例便可以通用,多用
一旦有了推理器实例,就可以将其附加到一组RDF数据上创建推理模型,可以通过将所有RDF数据放入一个模型中或分成两个组件(模式schema与实例数据instance)来完成,官方PS:一些外部reasoners可能需要硬分离,对于所有内置reasoners,分离是任意的
这种分离的主要价值是 允许从一组数据中的一些推论有效的应用在几个辅助数据集中(一般是实例数据集)

-----推理模型的操作-----
对于大部分应用程序,只需要创建一个包含一些推理步骤的模型,使用ModelFactory方法然后运行在标准Jena Model API中所包含的语句即可,但是有时候需要获得虚拟三元组所没有的更多控制处理以及额外的推理器性能(sometimes it is necessary to gain more control over the processing or to access additional reasoner features not available as virtual triples.)
为了使用推理器测试数据集的不一致性,使用InfModel.validate接口,该接口将对架构和实例数据进行全局检查,查找不一致性
它包括一个简单的通过/失败标志ValidityReport.isValid()和一个特定报告列表ValidityReport.Report 接口的实例,详细说明任何检测到的不一致

RDFS推理器
Jena包含一个RDFS推理器,它支持RDF核心工作组(RDF Semantics)描述的几乎所有RDFS蕴含
要访问该推理器可以使用ModelFactory.createRDFSModel或者手动访问ReasonerRegistery.getRDFSReasoner()

在Jena中,可以通过将包含空白节点的图形转换为包含变量代替空白节点的等效查询来实现简单包含,这样的查询可以直接匹配文字节点,RDF API可以用于提取文字的数据类型
分为三种配置
---Full(完整)---
实现了所有的RDFS公理和闭包规则, 除了exception of bNode entailments and datatypes (rdfD 1) ,是极其昂贵的模式,因为需要检查数据图中所有语句是否可以使用容器成员资格属性

---Default(默认)---
省略了对容器成员资格属性的昂贵检查,使用“一切都是资源”以及“用作属性的所有东西都是一个”规则,该模式仍然包含所有公里规则

---Simple(简单)---
省略了所有公理,实现了SubPropertyOfsubClassOf关系的传递闭包,域和范围蕴涵(the domain and range entailments)以及SubPropertyOfsubClassOf的含义

Jena RDFS实现尚未通过数据库模型进行测试和评估,Jena架构使构建此类模型变得容易,但是在没有缓存的情况下,预计性能会很差

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议