使用jena 进行RDF推理
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推理相关推荐
- jena fuseki RDF应用
使用apache-jena生成数据库 sudo ./tdbloader2 --loc ~/download/mini_anti ~/download/add_data_label2.ttl ~/dow ...
- Jena文档《An Introduction to RDF and the Jena RDF API》的译文
前言 本文是一篇对W3C的资源描述框架(RDF)和 Jena(一个Java的RDF API)的教程性介绍. 本文是为那些不熟悉RDF的, 以及那些通过建立原形可以达到最好学习效果的, 或是因为其他原因 ...
- mysql jena rdf_RDF和Jena RDF API简介
这是官方文章<An Introduction to RDF and the Jena RDF API>的译文.原文是在刺猬的温驯这里看到的.其中的图片没法显示了,还有一段丢失了.于是我在此 ...
- Jena文档《An Introduction to RDF and the Jena RDF API》的译文
前言 本文是一篇对W3C的资源描述框架(RDF)和 Jena(一个Java的RDF API)的教程性介绍. 本文是为那些不熟悉RDF的, 以及那些通过建立原形可以达到最好学习效果的, 或是因为其他原因 ...
- 推理机Jess、Racer、Jena 比较 (转)
Jess(Java Expert Shell System)是基于Java语言的CLIPS推理机. CLIPS是基于产生式的前向推理引擎,它是一种非常基础性的东西,许多上层的推理任务,都要映射到这个推 ...
- 本体推理中jess和jena区别
Jess(Java Expert Shell System)是基于Java语言的CLISP推理机. CLISP是基于产生式的前向推理引擎,它是一种非常基础性的东西,许多 上层的推理任务,都要映射到这个 ...
- 一些与OWL相关的推理机的区别(如:Jess、Jena、Pellet等)
ps:本人网上看到许多都是把CLIPS写成CLISP,但是我搞基于语义本体的推理时并没有用过CLISP,只知道CLIPS(C Language Integrated Production System ...
- Jena的简单理解和一个例子
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
- Jena学习三——代码解释
代码解释 可以直接官网学习http://jena.apache.org/tutorials/rdf_api.html#ch-Jena%20RDF%20Packages Tutorial01 packa ...
最新文章
- 英伟达TensorRT 8-bit Inference推理
- 2月19日2021CCF颁奖典礼即将举办,“为什么在横店?”
- mysql数据库的常用操作-索引
- 深度学习中tensorflow框架的学习
- epic登陆按钮一直在转_双剑合璧!GOG GALAXY 2.0官方支持Epic商店集成
- JSON语法之JSON 数值
- linux 对于Vim配置的方法
- java语法优化小结
- MySQL - ODBC安装错误问题!
- (转)如何判断一个人是否具有管理的潜力?
- 【OpenCV】特征检测器 FeatureDetector
- 【懒懒】我不生产笑话,我只是笑话的搬运工 [问题点数:200分]
- dwcc怎么设置html默认,Dreamweaver CC 2019如何设置界面首选项?
- 15种工商数据的采集方法
- 中心极限定理 central limit theorem
- 制作一个html网页的步骤,制作一个完整的网页的步骤
- 从冲突到和谐:智能新文化环境中人机关系的伦理重构
- 负317是几位数在计算机课中,计算机应用基础数据在计算机中的表示ppt课件
- [今日名人回顾]计算机之父—冯·诺依曼
- java long string 转换_Java long 转成 String的实现
热门文章
- android alertdialog 背景透明,Android Alertdialog弹出框设置半透明背景
- windows系统如何查看端口被占用、杀进程
- Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)
- 浅谈php中使用websocket
- 获取一亿数据获取前100个最大值
- 在Linux上安装Memcached服务(自己测试过了)
- jQuery的进行解决layui闪退的问题
- 日期格式转换成时间戳格式php,php日期转时间戳,指定日期转换成时间戳
- java soap 头_如何将java头添加到java中的soaprequest
- 招商局集团内部控制手册pdf_企业内部控制流程手册,全文22模块,内容很全面,可直接打印使用...