本文将对jena API进行简单介绍,鉴于Jena已经更新到3.2版本,有些设置已经无法使用,对此进行了一定程度的修改,以方便新手的使用。部分内容参考了这里http://www.iandickinson.me.uk/articles/jena-eclipse-helloworld/。
首先,下载最新版本的Jena包,目前更新到3.2版本,下载地址,解压;
(1)打开Eclipse,新建java project;
本人使用的是eclipse neon,推荐使用该版本及以上。
(2)新建类
(3)右键点击项目->properties->Java Build Path -> Add libraries->User library,新建一个userlibrary命名为JenaLibs,Add External JARs, 并将下载下来的Jena包解压后 lib 目录下的 jar 文件添加到其中,点击OK。
(4)注意import的文件格式为org.apache.jena*;
现在可以开始您的Jena使用了。
package web;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.vocabulary.VCARD;
public class ExtendAndQuery {
public static void main(String[] args) throws Exception{
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
Model model = ModelFactory.createDefaultModel();
Resource johnSmith = model.createResource(personURI);
johnSmith.addProperty(VCARD.FN, fullName);
johnSmith.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
System.out.println("原始内容:");
model.write(System.out);
// 删除 Statement
model.remove(model.listStatements(null, VCARD.N, (RDFNode)null));
model.removeAll(null, VCARD.Given, (RDFNode)null);
model.removeAll(null, VCARD.Family, (RDFNode)null);
System.out.println("\n删除后的内容:");
model.write(System.out);
//增加 Statement
model.add(johnSmith, VCARD.N, model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
System.out.println("\n重新增加后的内容:");
model.write(System.out);
}
}
引用自javafreely,2012-12-25。
其中, ModelFactory 类是一个Model 工厂,用于创建model 对象。我们可以使用 Model 的createResource 方法在model 中创建一个资源,并可以使用资源的 addProperty 方法添加属性。
这个例子中,资源 http://…/JohnSmith 表示一个人。这个人的全名是 John Smith,即 vcard:FN 属性的值是 John Smith。在 Jena 中,资源用 Resource 类来表示,其属性用 Property 类来表示。而整体模型用Model 类来表示,即上图就是一个Model。一个 Model 对象可以包含多个资源。
我们可以使用Jena API解析这个RDF的statement:
package web;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.vocabulary.VCARD;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.StmtIterator;
public class StatementDemo {
public static void main(String[] args){
//Introduction
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
Model model = ModelFactory.createDefaultModel();
Resource johnSmith = model.createResource(personURI);
johnSmith.addProperty(VCARD.FN, fullName);
johnSmith.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
//Statement
StmtIterator iter = model.listStatements();
while(iter.hasNext()){
Statement stmt = iter.nextStatement();
Resource subject = stmt.getSubject();
Property predicate = stmt.getPredicate();
RDFNode object = stmt.getObject();
System.out.print(subject.toString());
System.out.print(" "+predicate.toString());
if(object instanceof Resource){
System.out.print(object.toString());
}else{
System.out.print("\"" + object.toString() + "\"");
}
System.out.println(" .");
}
}
}
其中有一个资源我们没有指定资源名。
鉴于笔者学习进度只到这一步,更多学习资源请访问Javafreely。
设置virtual Box的共享文件夹
为什么取名为偷偷摸摸,因为从这里往下在互联网上就基本找不到任何资料了,大家都是凭借函数的名字去猜测一下做了一些什么,然后继续回到jni之上去分析了。然而仅了解那些明面上的东西对我们分析蓝牙来说显然是不够的,我们必须要一探究竟,看看jni之下都偷偷摸摸做了些什么。
题目摘自: - PAT数据结构起步能力自测让我们定义dnd_ndn为:dn=pn+1−pnd_n = p_{n+1}-p_ndn=pn+1−pn,其中pip_ipi是第iii个素数。显然有d1=1d_1 = 1d1=1,且对于n>1n>1n>1有dnd_ndn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(
Visual Studio 开源控件扩展 NuGet 常用命令,整理如下:—————————————————————————————————-获取列表Get-Package -ListAvailable添加组件Install-Package 组件名添加特定版本组件Install-Package 组件名 -Version 版本号移除组件
纯模板题,套个模板就好了#include<iostream>#include<queue>#include<cstring>#include<cstdio>using namespace std;const int maxn=205;const int inf=0x7fffffff;int r[maxn][maxn]; //残留...
这个问题出现的原因是在第一次访问接口成功的时候后转到jsp页面的时候,想要的情况是跳转到另一个jsp,然后在网上一通乱查乱改,在web.xml改 /*变成 /不行,然后在扫描注解 加上*,像这样,但是还是没什么用,后来觉得应该是返回的问题,然后在@RequestMapping(value="/login",method=RequestMethod.POST, produces = "text/
一、滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。其实验证码的英文为 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),翻译成中文就是全自动区分计算机和人类的公开图灵测试,...
程序如何把自身进行一次截图?或者对某个view对象截图?由左至右,分别是 bt4 iv iv2 iv3iv是屏幕截图,上半部分是黑色,下面是bt4的图iv2填充的是未显示过的一个按钮,截取不到,呈黑色iv3是复制bt4,跟bt4一样上述代码包含了bitmap转换为drawable的方式转自:http://www.aslibra.com/blog/post/andro
解决方法1:把bootstrap.properties重新改回为application.properties解决方法2:将配置文件里的 spring.cloud.nacos.config.namespace=public 注释掉
前言如果向要在一个文件中使用另一个文件中的变量,不能在头文件中定义全局变量,因为被多个文件包含后会导致编译出错,并且静态的static变量,只能在本文件内使用,这时候就可以使用extern关键字。extern 关键字: 首先还是先看一下 extern 关键字的作用:extern关键字可以置于变量或函数前,以标示变量或函数的定义在别的文件中,提示编译器遇到此变量或函数时在其他...
1.冯诺依曼计算机的储存工作方式(1)采用二进制代码表示数据和指令数据和指令都是由0和1组成的代码序列(2) 采用储存程序工作方式编写程序,将程序保存到计算机的储存器中,然后从计算机里依次执行(3) 硬件系统由五大部分构成计算机硬件系统由运算器,储存器,控制器,输入设备,输出设备五大部件构成2.硬件系统,可触摸到的系统,软件:由不能触摸到的二进制构成的 ,软件有系统软件(操作系统,...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7496200作者:毛星云 邮箱: [email protected] 欢迎邮件交流编程心得我们可以毫不夸张的说,在当今的任意一款成功的3D游戏引擎中,物理建模都是非常核心的部分。比如当今最高水平的、大名鼎鼎的引擎Unreal E