资源具有属性

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初步基础学习(一)相关推荐

  1. mysql jena rdf_RDF和Jena RDF API简介

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

  2. mysql as用法_MySQL基础学习总结

    数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验.本着以输出为手段检验学习效果,以温故 ...

  3. ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步

    http://blog.jobbole.com/85008/ ASP.Net MVC开发基础学习笔记(5):区域.模板页与WebAPI初步 2015/03/17 · IT技术 · .Net, Asp. ...

  4. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  5. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

  6. MySQL基础学习——Day5

    文章目录 MySQL基础学习--Day5 索引 1.什么是索引? MySQL在查询方面主要就是两种方式: 2.索引的实现原理? 1.索引的实现原理: 2.添加索引的条件 3.索引的创建和删除? 1.创 ...

  7. 零基础学习MySQL

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 导语 经过一段时间的筹备和整理,万里数据库<零基础学习MySQL>课程正式在腾讯课堂上线了. 课程地址:htt ...

  8. MySQL基础学习③数据库准备工作,导入官方employees数据库

    文章目录 1.前言 2.构建步骤 2.1 测试数据库文件下载 2.2 在test_db文件里打开cmd 2.3 导入成功 3. employees数据库 -- 职工雇佣信息 3.1 employees ...

  9. Mysql基础学习Day01

    Mysql基础学习Day01 1.SQL语言的分类 2.注释 3.基本的select语句 4.显示表结构 5.过滤数据 突然发现java基础内容学的差不多了 就又开一个mysql基础学习 1.SQL语 ...

最新文章

  1. WebLogic集群配置
  2. python sys模块作用_浅谈Python中的模块
  3. zzz KVC/KVO原理详解及编程指南
  4. 改进博客园Markdown显示功能(加代码行号、显示代码所用编程语言)
  5. 理解变量字符的截取功能
  6. MYSQL 实时升级
  7. C#、VB.NET 使用System.Media.SoundPlayer播放音乐
  8. PCI总线特性及信号说明
  9. fedora启动进入命令窗口_查看版本_修改hostname
  10. python实现xml数据解析处理
  11. mac 安装 mongo 及基本命令
  12. oracle最新时间查询,Oracle的日期时间范围查询
  13. android开发发送短信,Android开发入门之发送短信
  14. 商业插画是什么?怎么学习商业插画?
  15. Ceph-ansible 安装 ceph (rbd + rgw)
  16. 10以内随机加、减法练习题
  17. 红米note4高配版 电量用完,充不进去电,解决办法
  18. 我想转行程序员,上个编程培训班,能找到工作吗?我可以自学吗?
  19. Linux命令zip和unzip
  20. 用户体验设计(UED)小知识---产品经理深入浅出课程

热门文章

  1. 16Java基础面试练习题整理
  2. 3D卷积神经网络详解
  3. python:私有变量和私有方法
  4. 老照片修复项目:MyHeritage软件 破姐版分享
  5. Python安利一个会化学方程式的消灭泡泡小游戏~
  6. 《现代通信原理》学习(一)绪论
  7. 涉密计算机的等级分为,涉密人员的涉密等级分为 - 作业在线问答
  8. 以太坊的企业系统集成
  9. 浏览器事件之鼠标事件
  10. 本地存储-cookie|localStorage|sessionStorage|indexedDB