6.5 开源工具实践:基于Jena和Drools的知识推理实践
6.5.1 开源工具简介
Jena 是一个免费且开源的支持构建语义网络和数据连接应用的 Java 框架,提供了处理RDF、RDFS、OWL数据的接口,一个规则引擎,用于查询的三元组的内存存储。
Drools(JBoss Rules)具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,具有速度快、效率高的特点。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验已编码的规则是否执行了所需的业务规则。
JBoss Rules的前身是Codehaus的一个开源项目——Drools。现在被纳入JBoss门下,更名为JBoss Rules,成为JBoss应用服务器的规则引擎。
Drools是基于Charles Forgy的RETE算法的规则引擎为Java量身定制的实现,具有OO接口的RETE,使得商业规则有了更自然的表达。
6.5.2 开源工具的技术架构
图3-42所示为Jena框架。如图6-21所示为Drools框架。
图6-21 Drools框架
规则引擎实现了数据同逻辑的完全解耦。规则并不能被直接调用,因为它们不是方法或函数,规则的激发是对 Working Memory 中数据变化的响应。结果(Consequence,即RHS)作为 LHS events 完全匹配的 Listener。数据被 assert 进 WorkingMemory 后,和RuleBase 中 rule 的 LHS 进行匹配,如果匹配成功,则这条 rule 连同和它匹配的数据(Activation)一起被放入Agenda,等待Agenda激发Activation(即执行rule的RHS)。
6.5.3 开发软件版本及其下载地址
在本次实践中,使用的 IDE 是 IntelliJ IDEA。本次实践使用的 JDK 版本号为1.8.0_25,下载地址为 http://www.oracle.com/technetwork/java/javase/downloads/index.html;Jena 的版本号为3.10.0,下载地址为 http://jena.apache.org/;IntelliJ IDEA 的版本号为2018.3.5,下载地址为 https://www.jetbrains.com/idea/download/#section=windows。本实践的相关工具、实验数据及操作说明由OpenKG提供,地址为http://openkg.cn。
6.5.4 基于Jena的知识推理实践
1.环境的配置
本次实践使用了集成开发环境,可以直接在 IntelliJ IDEA 中进行实践。首先安装好JDK并配置好Java运行环境,安装好 IntelliJ IDEA。将Jena文件夹解压到指定文件夹。打开IntelliJ IDEA,在设置中导入Jena的jar包。
2.建模所需模块
org.apache.jena.rdf.model 是建立模型最基本的包,用于建立模型。rg.apache.jena.vocabulary.OWL、org.apache.jena.vocabulary.RDF 和 org.apache.jena.vocabulary.RDFS 用于使用RDF、RDFs和OWL中二元关系。org.apache.jena.reasoner.Reasoner、org.apache.jena.reasoner.ReasonerRegistry 用于创建推理机。org.apache.jena.reasoner.ValidityReport 用于不一致检测。
3.构建本体
Model是Jena最核心的数据结构,其本质上就是Jena中的知识库结构,即本体。
4.添加推理机
构建完本体,就可以进行推理了。推理时可以选取不同的推理机。常用的推理机有RDFS推理机和OWL推理机。可以完成上下位推理、类别推理等推理任务。
6.5.5 基于Drools的知识推理实践
1.建模所需模块
org.kie.api.KieServices 是建立模型服务最基本的包,用于建立模型。org.kie.api.runtime.KieContainer 是 Drools 中的一个容器,用于存放数据。org.kie.api.runtime.KieSession是Drools用于进行事务的一个类。
2.初始化Drools
首先初始化 Drools,随后向 Drools 中添加数据,也就是三元组。添加的数据分为本体数据和实例数据。
3.进行自定义规则的编写
推理前必须自定义一些规则,这些规则以一定的方式存在一个名叫“规则文件”的文件当中,规则文件的编写和Java的语法类似。