mysql jena rdf_RDF结合Jena初步基础学习(一)
资源具有属性
Jena是一个Java API,可用于创建和操作RDF图,Jena有对象类表示图形,资源,属性和文字
表示资源的接口: Resource
表示属性的接口: Property
表示文字的接口: Literal
在Jnea中,图形称为模型,由接口 Model 表示
Model model = ModelFactory.createDefaultModel();
使用该方法创建基于内存的模型
Resource joinSmith = model.createResource(personURI);
使用该方法创建资源
“常量”类:VCARD,该类保存表示VCARD模式中所有定义的对象
joinSmith.addProperty(VCARD.FN, fullName);
给资源添加属性
创建资源和添加属性还可以更紧凑的以级联样式编写:Resource joinSmith =
model.createResource(personURI)
.addProperty(VCARD.FN , fullName);
可定义空节点
model.createResource()
括号内不含参数即可定义一个空节点
RDF模型中一般一个语句包含三个部分
subject:箭头出发点
predicate:箭头
object: 箭头目的地
可称为主语,谓语和宾语
主语——谓语——>宾语
example:// list the statements in the Model
StmtIterator iter = model.listStatements();
// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject(); // get the subject
Property predicate = stmt.getPredicate(); // get the predicate
RDFNode object = stmt.getObject(); // get the object
System.out.print(subject.toString());
System.out.print(" " + predicate.toString() + " ");
if (object instanceof Resource) {
System.out.print(object.toString());
} else {
// object is a literal
System.out.print(" "" + object.toString() + """);
}
System.out.println(" .");
}
listStatements() 方法
该方法返回一个StmIterator, 一种可以遍历模型中所有语句的迭代器(这里的谷歌翻译真是醉了,还好切回英文读懂了,不然简直了)
nextStatement() 方法
该方法从迭代器中返回当前的下一个语句
使用
Statement 进行一个语句的初始化
Statement stmt = iter.nextStatement();
在此基础上分别通过
.getSubject()获取该语句的主语subject
.getPredicate() 获取该语句的谓语Predicate
.getObject()获取该语句的宾语Object
iter.hasNext()
个人理解: iter即当前迭代器,`hasNext()是一个布尔型函数,如果迭代器当前位置之后没有语句了,就返回false,否则返回true
.write(System.out)方法
将一个模型以RDF的形式写出来
model.write(System.out);
要写入大文件并保留空白节点,请以N-TRUPLES格式写入
model.write(System.out,"N-TRIPLES");
===从文件中读取RDF===
example:// create an empty model
Model model = ModelFactory.createDefaultModel();
// use the FileManager to find the input file
InputStream in = FileManager.get().open( inputFileName );
if (in == null) {
throw new IllegalArgumentException(
"File: " + inputFileName + " not found");
}
// read the RDF/XML file
model.read(in, null);
// write it to standard out
model.write(System.out);
使用.read()函数来对文件进行读取
model.read(in,null);
in为创建的输入流
setNsPrefix(String prefix,String URI)
声明命名空间URI可以缩写成prefix(为了方便,因为有些命名空间真的太长了,每次写非常麻烦),Jena要求prefix是一个合法的XML命名空间名称,并URI以非名称字符结尾
给定资源的URI,可以用下列方法从模型中检索资源对象
Resource name = model.getResource(johnSmithURI);
访问资源的属性如下
Resource.getProperty(Property p);
—查询模型—
Model.listStatements() 列出模型中所有语句,但是不适用于数据量大的模型
Model.listStatementWithProperty(Property p,RDFNode o)
将会返回一个迭代器,包含所有含有属性p,并且value是o的资源
选择器
Selector selector = new SimpleSelector(subject, predicate, object);
如果三个参数中任意一个为null,将相当于Sparql中的SELECT *
如果三个参数都为null,则选择模型中的所有语句
Selector selector = new SimpleSelector(null,VCARD.FN,null);
将选择
谓语是VCARD.FN的所有语句
容器Bag是无序集合
ALT是一种旨在代表替代品的无序集合
SEQ是有序集合
创建一个Bag容器
Bag smiths = model.createBag();
容器接口提供一个迭代器来列出容器的内容
NodeIterator iter2 = smiths.iterator();
可以像上述那样用迭代器遍历if (iter2.hasNext()) {
System.out.println("The bag contains:");
while (iter2.hasNext()) {
System.out.println(" " +
((Resource) iter2.next())
.getProperty(VCARD.FN)
.getString());
}
} else {
System.out.println("The bag is empty");
}
mysql jena rdf_RDF结合Jena初步基础学习(一)相关推荐
- mysql jena rdf_RDF和Jena RDF API简介
这是官方文章<An Introduction to RDF and the Jena RDF API>的译文.原文是在刺猬的温驯这里看到的.其中的图片没法显示了,还有一段丢失了.于是我在此 ...
- mysql as用法_MySQL基础学习总结
数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验.本着以输出为手段检验学习效果,以温故 ...
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- MySQL基础学习——Day5
文章目录 MySQL基础学习--Day5 索引 1.什么是索引? MySQL在查询方面主要就是两种方式: 2.索引的实现原理? 1.索引的实现原理: 2.添加索引的条件 3.索引的创建和删除? 1.创 ...
- 零基础学习MySQL
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 导语 经过一段时间的筹备和整理,万里数据库<零基础学习MySQL>课程正式在腾讯课堂上线了. 课程地址:htt ...
- MySQL基础学习③数据库准备工作,导入官方employees数据库
文章目录 1.前言 2.构建步骤 2.1 测试数据库文件下载 2.2 在test_db文件里打开cmd 2.3 导入成功 3. employees数据库 -- 职工雇佣信息 3.1 employees ...
- Mysql基础学习Day01
Mysql基础学习Day01 1.SQL语言的分类 2.注释 3.基本的select语句 4.显示表结构 5.过滤数据 突然发现java基础内容学的差不多了 就又开一个mysql基础学习 1.SQL语 ...
最新文章
- WebLogic集群配置
- python sys模块作用_浅谈Python中的模块
- zzz KVC/KVO原理详解及编程指南
- 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)
- 理解变量字符的截取功能
- MYSQL 实时升级
- C#、VB.NET 使用System.Media.SoundPlayer播放音乐
- PCI总线特性及信号说明
- fedora启动进入命令窗口_查看版本_修改hostname
- python实现xml数据解析处理
- mac 安装 mongo 及基本命令
- oracle最新时间查询,Oracle的日期时间范围查询
- android开发发送短信,Android开发入门之发送短信
- 商业插画是什么?怎么学习商业插画?
- Ceph-ansible 安装 ceph (rbd + rgw)
- 10以内随机加、减法练习题
- 红米note4高配版 电量用完,充不进去电,解决办法
- 我想转行程序员,上个编程培训班,能找到工作吗?我可以自学吗?
- Linux命令zip和unzip
- 用户体验设计(UED)小知识---产品经理深入浅出课程