一、首先要了解RDF和Jena RDF的介绍:
An Introduction to RDF and the Jena RDF API
在Jena中,用于表示单个三元组的Java类是Statement。根据RDF规范,只有资源可以是RDF三元组的主题(subject),而对象可以是资源或文字。提取a元素的关键方法Statement是:
getSubject() returning a Resource(资源)
getObject() returning an RDFNode (公共接口RDFNode是一个超类两者的Resource和Literal【文字】)
getPredicate() returning a Property(属性)
示例一个三元组数据:http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#FullName "John Smith" .
主语subject是一个资源,书写形式为uri: http://somewhere/JohnSmith
谓语predicate就是一个属性,书写形式为uri : http://www.w3.org/2001/vcard-rdf/3.0#FullName
宾语object是一个RDFNode(可以为Resource或Literal,在本例中是文字) : "John Smith"
二、理解URI的概念和写法
在学习jena RDF时,对三元组的书写格式不太理解,为什么都要写成http://somewhere/JohnSmith这种uri形式,下面把我对uri的学习坐下记录:
URI :Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
其中,URL,URN是URI的子集。
在电脑术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。
Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
URI一般由三部分组成:
一、主机名。
存放资源的自身的名称,由路径表示。
参考下面的URI,它符合当前的RFC4395规范:协议名称://域名.根域名/目录/文件名.后缀
例如http://b.c/d/e.f (假设b.c是一个可用的域名,e.f是一个标准的文件)
这个URI是这样的:这是一个可通过HTTP协议访问的资源,位于主机b.c上,通过URI中的字符串“/d”访问主机上的“d”文件夹,通过“e.f”请求访问主机上“/d/e.f”这个文件。
这是URI的另一个例子,指向一个用户的邮箱:mailto:名称@域名
注:大多数读者可能熟悉"URL",而不是URI。URL是URI命名机制的一个子集。
二、标志符
有的URI指向一个资源的内部。 这种URI以"#"结束,并跟着一个anchor标志符(称为片段标志符)。例如,下面是一个指向section_2的URI:
协议://域名/目录/文件#片段标示符(例如:/a/b.php#a)
三、相对URI
相对URI不包含任何命名规范信息。它的路径通常指同一台机器上的资源。相对URI可能含有相对路径(如,“..”表示上一层路径),还可能包含片段标志符。
为了说明相对URI,假设我们有一个基本的URI:
协议://域名/目录a/目录b/文件c
下面的链接中使用了相对URI:
../文件D
它扩展成完全的URI就是 "协议://域名/目录a/文件D",
下面是一个图像的相对URI:
<IMG src="../icons/logo.gif" alt="logo">
它扩展成完全的URI就是 "协议://域名/目录a/icons/logo.gif"。
在HTML中,URI被用来:
链接到另一个文档或资源(参看A和LINK元素)。
链接到一个外部样式表或脚本(参看LINK和SCRIPT元素)。
在页内包含图像、对象或applet(参看IMAGE、OBJECT、APPLET和INPUT元素)。
引用一个外部参考(参看Q、BLOCKQUOTE,INS和DEL元素)。
指向一个描述文档的metadata(参看HEAD元素)。