JENA 推理

规则:

[transitiveRule: (?A demo:p ?B), (?B demo:p ?C) -> (?A demo:p ?C) ]
[symmetricRule: (?Y demo:p ?X) -> (?X demo:p ?Y) ] 

数据:

@prefix :      <http://jena.hpl.hp.com/demo#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix demo:  <http://jena.hpl.hp.com/demo#> .demo:c  demo:p  demo:a .demo:b  demo:p  demo:d .demo:a  demo:p  demo:b .

进行推理:

package iie.ac.jenaTest;import org.apache.jena.rdf.model.InfModel;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.reasoner.Reasoner;
import org.apache.jena.reasoner.rulesys.GenericRuleReasonerFactory;
import org.apache.jena.util.FileManager;
import org.apache.jena.util.PrintUtil;
import org.apache.jena.vocabulary.ReasonerVocabulary;public class ReasonerRuleTest {public static void main(String[] args) {// Register a namespace for use in the demoString demoURI = "http://jena.hpl.hp.com/demo#";PrintUtil.registerPrefix("demo", demoURI);// Create an (RDF) specification of a hybrid reasoner which// loads its data from an external file.Model m = ModelFactory.createDefaultModel();Resource configuration =  m.createResource();configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");configuration.addProperty(ReasonerVocabulary.PROPruleSet,  "data/demo.rules");// Create an instance of such a reasonerReasoner reasoner = GenericRuleReasonerFactory.theInstance().create(configuration);// Load test dataModel data = FileManager.get().loadModel("file:data/demoData.ttl");InfModel infmodel = ModelFactory.createInfModel(reasoner, data);// Query for all things related to "a" by "p"Property p = data.getProperty(demoURI, "p");Resource a = data.getResource(demoURI + "a");StmtIterator i = infmodel.listStatements(a , p, (RDFNode)null);while (i.hasNext()) {System.out.println(" - " + PrintUtil.print(i.nextStatement()));//Statement s = i.nextStatement();//System.out.println("<"+s.getSubject()+"> <" + s.getPredicate() + "> <" + s.getObject() + "> .");}}
}

输出结果为:

(demo:a demo:p demo:d)
(demo:a demo:p demo:a)
(demo:a demo:p demo:c)
(demo:a demo:p demo:b)

github:https://github.com/vincentduan/RDF-JENA/tree/master/JenaInference

使用jena 进行RDF推理相关推荐

  1. jena fuseki RDF应用

    使用apache-jena生成数据库 sudo ./tdbloader2 --loc ~/download/mini_anti ~/download/add_data_label2.ttl ~/dow ...

  2. Jena文档《An Introduction to RDF and the Jena RDF API》的译文

    前言 本文是一篇对W3C的资源描述框架(RDF)和 Jena(一个Java的RDF API)的教程性介绍. 本文是为那些不熟悉RDF的, 以及那些通过建立原形可以达到最好学习效果的, 或是因为其他原因 ...

  3. mysql jena rdf_RDF和Jena RDF API简介

    这是官方文章<An Introduction to RDF and the Jena RDF API>的译文.原文是在刺猬的温驯这里看到的.其中的图片没法显示了,还有一段丢失了.于是我在此 ...

  4. Jena文档《An Introduction to RDF and the Jena RDF API》的译文

    前言 本文是一篇对W3C的资源描述框架(RDF)和 Jena(一个Java的RDF API)的教程性介绍. 本文是为那些不熟悉RDF的, 以及那些通过建立原形可以达到最好学习效果的, 或是因为其他原因 ...

  5. 推理机Jess、Racer、Jena 比较 (转)

    Jess(Java Expert Shell System)是基于Java语言的CLIPS推理机. CLIPS是基于产生式的前向推理引擎,它是一种非常基础性的东西,许多上层的推理任务,都要映射到这个推 ...

  6. 本体推理中jess和jena区别

    Jess(Java Expert Shell System)是基于Java语言的CLISP推理机. CLISP是基于产生式的前向推理引擎,它是一种非常基础性的东西,许多 上层的推理任务,都要映射到这个 ...

  7. 一些与OWL相关的推理机的区别(如:Jess、Jena、Pellet等)

    ps:本人网上看到许多都是把CLIPS写成CLISP,但是我搞基于语义本体的推理时并没有用过CLISP,只知道CLIPS(C Language Integrated Production System ...

  8. Jena的简单理解和一个例子

    本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...

  9. Jena学习三——代码解释

    代码解释 可以直接官网学习http://jena.apache.org/tutorials/rdf_api.html#ch-Jena%20RDF%20Packages Tutorial01 packa ...

最新文章

  1. 英伟达TensorRT 8-bit Inference推理
  2. 2月19日2021CCF颁奖典礼即将举办,“为什么在横店?”
  3. mysql数据库的常用操作-索引
  4. 深度学习中tensorflow框架的学习
  5. epic登陆按钮一直在转_双剑合璧!GOG GALAXY 2.0官方支持Epic商店集成
  6. JSON语法之JSON 数值
  7. linux 对于Vim配置的方法
  8. java语法优化小结
  9. MySQL - ODBC安装错误问题!
  10. (转)如何判断一个人是否具有管理的潜力?
  11. 【OpenCV】特征检测器 FeatureDetector
  12. 【懒懒】我不生产笑话,我只是笑话的搬运工 [问题点数:200分]
  13. dwcc怎么设置html默认,Dreamweaver CC 2019如何设置界面首选项?
  14. 15种工商数据的采集方法
  15. 中心极限定理 central limit theorem
  16. 制作一个html网页的步骤,制作一个完整的网页的步骤
  17. 从冲突到和谐:智能新文化环境中人机关系的伦理重构
  18. 负317是几位数在计算机课中,计算机应用基础数据在计算机中的表示ppt课件
  19. [今日名人回顾]计算机之父—冯·诺依曼
  20. java long string 转换_Java long 转成 String的实现

热门文章

  1. android alertdialog 背景透明,Android Alertdialog弹出框设置半透明背景
  2. windows系统如何查看端口被占用、杀进程
  3. Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)
  4. 浅谈php中使用websocket
  5. 获取一亿数据获取前100个最大值
  6. 在Linux上安装Memcached服务(自己测试过了)
  7. jQuery的进行解决layui闪退的问题
  8. 日期格式转换成时间戳格式php,php日期转时间戳,指定日期转换成时间戳
  9. java soap 头_如何将java头添加到java中的soaprequest
  10. 招商局集团内部控制手册pdf_企业内部控制流程手册,全文22模块,内容很全面,可直接打印使用...