Jena学习笔记(1)---创建RDF模型
2006-12-18 19:14
363 查看
在阅读本文之前,我事先假定读者已完成学习思路和jena学习笔记(0)的内容,并且已经达到了这两篇文章中所要求的基本技能,这样才能容易的理解本文的内容.
RDF可以看作是一个由结点(node)和弧(arc)组成的图,用图来描述资源,事实上,用图也更能让我们理解RDF的含义。本文将具体说明如何用jena创建RDF模型。思路如下:
1。 了解资源,设计RDF图。首先我们要清楚我们需要描述的资源是什么,以及描述它哪些方面的内容,然后据此画出框图。如本文中,我需要描述我的导师的一些基本情况,这里我的导师就是资源(主体),我导师具有性别、学位、职称、姓名、联系方式等基本信息,那么这些需要描述的信息就是属性(谓词),相应信息的内容就是属性值了(客体)。由于本例也是用来描述人的,所以我也采用了VCARD的模型来描述,如下图。导师由我们学院的网站中导师的资料所在的URL来标志,图中描述了两个属性FN(全称)、 EMAIL(电子邮件),属性值分别是(Ping Liu)、(p.liu@whu.edu.cn)
2。 程序实现。在确定了所需要描述的资源对象的属性及属性值后,便可以用jena来实现了。值得注意的是,RDF图在jena中被称为模型(model),因此关于RDF的jena解析在很多情况下都是围绕着模型进行的。要实现如上的RDF图,那么在jena中,我们就首先要创建一个模型,然后给这个模型赋值。很显然,给模型赋值就是给模型添加资源,而资源由是由属性和属性值所构成的。我们可以在doc/javadoc/com/hp/hpl/jena/rdf/model中查看有关模型的类及实现方法。具体如下:
(1)创建(空)模型。ModelFactory类中有许多创建模型的方法,读者可以自行查看,本例创建一个默认的空模型。实现语句是:
Model modelOfLp=ModelFactory.createDefaultModel();
//Model 生命modelOfLp是模型类
(2)给模型赋值。即将我们所需要描述的资源赋给已经创好的空模型。实现语句是:
Resource PingLiu=modelOfLp.createResource(URI)
其中,URI是我们用来标志资源的统一资源标志符。如URI=http://sim.whu.edu.cn/teacher/tea_detail.php?tc_id=70
(3)描述资源。即给资源增加属性及属性值。实现语句是:
PingLiu.addProperty(VCARD.EMAIL,p.liu@whu.edu.cn)
这句话便给modelResource资源添加了EMAIL属性,属性值为p.liu@whu.edu.cn。
(4)完整代码。要实现以上功能,需要调用model和ModelFactory两个类,他们分别在com.hp.hpl.jena.rdf.model和com.hp.hpl.jena.vocabulary两个包中。创建本例的完整代码如下:
import com.hp.hpl.jena.vocabulary.*;
import com.hp.hpl.jena.rdf.model.*;
public class JenaStudy01 extends Object{
static String fullName="Ping Liu";
static String email="p.liu@whu.edu.cn";
static String personURI="http://sim.whu.edu.cn/teacher/tea_detail.php?tc_id=70";
public static void main(String args[]){
Model modelOfLp=ModelFactory.createDefaultModel();
Resource PingLiu=modelOfLp.createResource(personURI);
PingLiu.addProperty(VCARD.FN,fullName);
PingLiu.addProperty(VCARD.EMAIL,email);
}
}
这样模型我们需要描述的RDF图就用JENA创建好了。由于本例只是创建模型,并没有将模型结果输出,所以运行结果是不可视的。本节的目的只是需要掌握模型创建的思路和所用到的方法,其运行结果和其他操作将会在后面陆续登出。
RDF可以看作是一个由结点(node)和弧(arc)组成的图,用图来描述资源,事实上,用图也更能让我们理解RDF的含义。本文将具体说明如何用jena创建RDF模型。思路如下:
1。 了解资源,设计RDF图。首先我们要清楚我们需要描述的资源是什么,以及描述它哪些方面的内容,然后据此画出框图。如本文中,我需要描述我的导师的一些基本情况,这里我的导师就是资源(主体),我导师具有性别、学位、职称、姓名、联系方式等基本信息,那么这些需要描述的信息就是属性(谓词),相应信息的内容就是属性值了(客体)。由于本例也是用来描述人的,所以我也采用了VCARD的模型来描述,如下图。导师由我们学院的网站中导师的资料所在的URL来标志,图中描述了两个属性FN(全称)、 EMAIL(电子邮件),属性值分别是(Ping Liu)、(p.liu@whu.edu.cn)
2。 程序实现。在确定了所需要描述的资源对象的属性及属性值后,便可以用jena来实现了。值得注意的是,RDF图在jena中被称为模型(model),因此关于RDF的jena解析在很多情况下都是围绕着模型进行的。要实现如上的RDF图,那么在jena中,我们就首先要创建一个模型,然后给这个模型赋值。很显然,给模型赋值就是给模型添加资源,而资源由是由属性和属性值所构成的。我们可以在doc/javadoc/com/hp/hpl/jena/rdf/model中查看有关模型的类及实现方法。具体如下:
(1)创建(空)模型。ModelFactory类中有许多创建模型的方法,读者可以自行查看,本例创建一个默认的空模型。实现语句是:
Model modelOfLp=ModelFactory.createDefaultModel();
//Model 生命modelOfLp是模型类
(2)给模型赋值。即将我们所需要描述的资源赋给已经创好的空模型。实现语句是:
Resource PingLiu=modelOfLp.createResource(URI)
其中,URI是我们用来标志资源的统一资源标志符。如URI=http://sim.whu.edu.cn/teacher/tea_detail.php?tc_id=70
(3)描述资源。即给资源增加属性及属性值。实现语句是:
PingLiu.addProperty(VCARD.EMAIL,p.liu@whu.edu.cn)
这句话便给modelResource资源添加了EMAIL属性,属性值为p.liu@whu.edu.cn。
(4)完整代码。要实现以上功能,需要调用model和ModelFactory两个类,他们分别在com.hp.hpl.jena.rdf.model和com.hp.hpl.jena.vocabulary两个包中。创建本例的完整代码如下:
import com.hp.hpl.jena.vocabulary.*;
import com.hp.hpl.jena.rdf.model.*;
public class JenaStudy01 extends Object{
static String fullName="Ping Liu";
static String email="p.liu@whu.edu.cn";
static String personURI="http://sim.whu.edu.cn/teacher/tea_detail.php?tc_id=70";
public static void main(String args[]){
Model modelOfLp=ModelFactory.createDefaultModel();
Resource PingLiu=modelOfLp.createResource(personURI);
PingLiu.addProperty(VCARD.FN,fullName);
PingLiu.addProperty(VCARD.EMAIL,email);
}
}
这样模型我们需要描述的RDF图就用JENA创建好了。由于本例只是创建模型,并没有将模型结果输出,所以运行结果是不可视的。本节的目的只是需要掌握模型创建的思路和所用到的方法,其运行结果和其他操作将会在后面陆续登出。
相关文章推荐
- V-rep学习笔记:机器人模型创建4—定义模型
- MVC学习笔记一:创建实体数据模型
- iOS学习笔记-097.彩票12——设置1_数据模型创建
- V-rep学习笔记:机器人模型创建1—模型简化
- EntityFramework Core 学习笔记 —— 创建模型
- Django学习笔记4-创建模型
- Mysql学习笔记(七):用MySQLWorkBench创建数据库和模型
- [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo
- V-rep学习笔记:机器人模型创建3—搭建动力学模型
- V-rep学习笔记:机器人模型创建2—添加关节
- AngularJS2 学习笔记——创建service
- 第一讲:Azure上创建虚拟机(学习笔记)
- (学习笔记)摄像机模型与标定——三个坐标系及其之间关系
- Unity3D之Mecanim动画系统学习笔记(二):模型导入
- Ios学习笔记2 创建类
- 【黑马程序员】Objective-C语言学习笔记之对象的创建、使用和方法调用(三)
- 通用模型之-party model 学习笔记
- DW学习笔记:form表单的创建
- C++学习笔记3:内存模型和名称空间