文档章节

使用jena 进行RDF推理

Vincent-Duan
 Vincent-Duan
发布于 2016/10/23 16:29
字数 267
阅读 111
收藏 0

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 demo
		String 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 reasoner
		Reasoner reasoner = GenericRuleReasonerFactory.theInstance().create(configuration);


		// Load test data
		Model 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

© 著作权归作者所有

上一篇: HashSet源码分析1
下一篇: jena fuseki RDF应用
Vincent-Duan

Vincent-Duan

粉丝 10
博文 310
码字总数 117808
作品 0
海淀
私信 提问
Apache Jena 3.0.0 发布,要求 Java 8

Apache Jena 3.0.0 发布,此版本是个重要版本,并不是 Jena 2.13.0 的替代品,包括一些改进。 主要改进 * 包重命名 "com.hp.hpl.jena" >> "org.apache.jena",词汇表不受影响 * RDF 1.1 语义......

oschina
2015/08/01
4.9K
11
Apache Jena 2.13.0 发布,包括 Elephas/Fuseki2

Apache Jena 2.13.0 发布,此版本是个重要的版本,包括一些新特性: * Elephas,一个在 Apache Hadoop 处理 RDF 的框架 * Fuseki2,服务器使用和管理的安全和全新 UI * 一个 OSGi 绑定 == E...

oschina
2015/03/19
1K
0
Apache Jena 2.12.0 发布

Apache Jena 2.12.0 发布,同时也发布了 Apache Jena Fuseki 1.1.0 版本。此版本要求 Java 7,现已提供下载,也提供在了 Maven 库。此版本的更多更新内容请看这里。 Jena是一个Java工具箱用于...

oschina
2014/08/08
1K
1
Apache Jena 2.10.0 发布

Jena是一个Java工具箱用于开发基于RDF与OWL语义(semantic)Web应用程序。它提供了一个RDF API;ARP,一个RDF解析器;SPARQL,W3C RDF查询语言;一个OWL API;和基于规则的RDFS与OWL接口。 Ap...

红薯
2013/02/27
1K
0
Apache Jena 2.7.0-incubating 发布

Apache Jena 是一个Java工具箱用于开发基于RDF与OWL语义(semantic)Web应用程序。它提供了一个RDF API;ARP,一个RDF解析器;SPARQL,W3C RDF查询语言;一个OWL API;和基于规则的RDFS与OWL接...

红薯
2011/12/25
755
1

没有更多内容

加载失败,请刷新页面

加载更多

使用Apache Kudu和Impala实现存储分层

当为应用程序的数据选择一个存储系统时,我们通常会选择一个最适合我们业务场景的存储系统。对于快速更新和实时分析工作较多的场景,我们可能希望使用Apache Kudu,但是对于低成本的大规模可...

九州暮云
2分钟前
2
0
MySQL8.0 - 新特性 - 安全及权限相关改进

MySQL8.0里引入了不少关于权限的改动,从这些改动可以看出来,权限管理更加的规范和遍历了,这和我们之前为rds mysql增加了大量权限管理很类似,想来Oracle也是通过这些改动为其云业务服务的...

阿里云云栖社区
6分钟前
2
0
路由器的使用

第一步、连接无线路由器 把从房东家拉过来的网线,连接到路由器的WAN口;在准备一根网线,网线一端连接计算机,另一端连接路由器1、2、3、4口中的任意一个接口,如下所示。 从房东家拉网线上...

WinkJie
10分钟前
0
0
log4j:WARN No appenders could be found for logger

如提示,log4j没有配置日志记录的位置,需要配置log4j.properties,在src目录下新建log4j.properties, 将下面的内容写入文件 1.应用于控制台 log4j.appender.CONSOLE = org.apache.log4j.Co...

我叫小糖主
11分钟前
0
0
使用Eclipse内置的MAT插件分析dump文件时报错

下载下来一点dump文件很大,然后使用mat分析的时候mat本身报错 Out of Memory Error while Running the Memory Analyzer 这是因为eclipse配置的内存太小了导致的,网上查了下都是去改MemoryA...

V字仇杀
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部