RDF入门

RDF入门


 

[编辑]

W3C 推荐标准 2004年02月10日


 

当前版本:
http://www.w3.org/TR/2004/REC-rdf-primer-20040210/ (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/) 
 

最新版本:
http://www.w3.org/TR/rdf-primer/ (http://www.w3.org/TR/rdf-primer/) 
 

上一版本:
http://www.w3.org/TR/2003/PR-rdf-primer-20031215/ (http://www.w3.org/TR/2003/PR-rdf-primer-20031215/) 
 

编者:
 

Frank Manola, fmanola@acm.org (mailto:fmanola@acm.org) 
 

Eric Miller, W3C, em@w3.org (mailto:em@w3.org) 
 

系列文档编者:
 

Brian McBride, Hewlett-Packard Laboratories, bwm@hplb.hpl.hp.com (mailto:bwm@hplb.hpl.hp.com) 
 

阅读时请参照本文档的勘误表 (http://www.w3.org/2001/sw/RDFCore/errata#rdf-primer),其中可能会包含一些规范性的修正。
 

也要留意译文 (http://www.w3.org/2001/sw/RDFCore/translation/rdf-primer)

 

Copyright (http://www.w3.org/Consortium/Legal/ipr-notice#Copyright)? 2004 W3C? (MIT, ERCIM, Keio (http://www.keio.ac.jp/)), All Rights Reserved. W3C liability (http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer)trademark (http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks)document use (http://www.w3.org/Consortium/Legal/copyright-documents) and software licensing (http://www.w3.org/Consortium/Legal/copyright-software) rules apply.
 



 

[编辑]

摘要

资源描述框架 (RDF) 是用来表现万维网上各类资源的信息的一种语言,为了帮助读者了解一些必备的基础知识后能有效地使用 RDF,特编写此基础入门教程。本书介绍了RDF的一些基本概念以及RDF基于XML(可扩展标记语言)的语法。本书还讨论了如何用RDF词汇描述语言来定义RDF词汇集,并总结了目前所部署的一些基于RDF的应用。最后,本文介绍了其他RDF规范文档的内容和用途。

 


 

[编辑]

本文档的状态

本文档已被W3C成员及其他相关方面审阅,并已被W3C总监(W3C Director)[译注//Director是W3C组织的最高行政职位,目前由Tim Berners-Lee担任。]批准为W3C推荐标准(W3C Recommendation) (http://www.w3.org/2003/06/Process-20030618/tr.html#RecsW3C)。W3C 制定推荐标准的任务是使之受到关注,并促使其被广泛应用。这将增强Web的功能性(functionality)与互操作性(interoperablity)。

 

本文档是一套文档系列 (http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Introduction)中的一份,该文档系列 (http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Introduction)共六份,他们分别是:入门 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/)概念 (http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/)语法 (http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/)语义 (http://www.w3.org/TR/2004/REC-rdf-mt-20040210/)词汇表 (http://www.w3.org/TR/2004/REC-rdf-schema-20040210/)测试用例 (http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/))之中的一份。该文档系列将替换原有的资源描述框架规范(Resource Description Framework specifications)、RDF的模型与语法 推荐标准 (http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/)RDF Schema 推荐标准 (http://www.w3.org/TR/2000/CR-rdf-schema-20000327/)。 本文档由RDF核心工作组(RDF Core Working Group) (http://www.w3.org/2001/sw/RDFCore/)制定,它是W3C语义网行动组(W3C Semantic Web Activity) (http://www.w3.org/2001/sw/)的一部分(行动组声明 (http://www.w3.org/2001/sw/Activity)工作组章程 (http://www.w3.org/2002/11/swv2/charters/RDFCoreWGCharter))的一部份,被定于在2004年2月10日发布。

 

自建议推荐标准以来的修改已被详细记录在更改日志中。

 

欢迎大家将意见发送至www-rdf-comments@w3.org (mailto:www-rdf-comments@w3.org)存档文件 (http://lists.w3.org/Archives/Public/www-rdf-comments/))并积极参与www-rdf-interest@w3.org (mailto:www-rdf-interest@w3.org)(存档文件 (http://lists.w3.org/Archives/Public/www-rdf-interest/))上的相关技术讨论。

 

一个RDF的实现列表可通过http://www.w3.org/2001/sw/RDFCore/impls (http://www.w3.org/2001/sw/RDFCore/impls)获得。

 

W3C维护着一个有关这项工作的已公开专利列表 (http://www.w3.org/2001/sw/RDFCore/ipr-statements)

 

本节描述了本文档在发布时的状态。本文档有可能被其他本文档所替代。W3C推荐标准及其他技术文档(technical document)的最新列表可从以下网址获得:http://www.w3.org/TR (http://www.w3.org/TR)


 

[编辑]

目录

  1. 介绍(Introduction) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#intro)
  2. 关于资源的陈述(Making Statements About Resources) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#statements)
      2.1 基本概念(Basic Concepts) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#basicconcepts)
      2.2 RDF模型(The RDF Model) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfmodel)
      2.3 结构化属性值与空白节点(Structured Property Values and Blank Nodes) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#structuredproperties)
      2.4 类型文字(Typed Literals) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#typedliterals)
      2.5 总结(Concepts Summary) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#conceptsummary)
  3. RDF/XML - 一种用于RDF的XML语法(An XML Syntax for RDF: RDF/XML) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfxml)
      3.1 基本原理(Basic Principles) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#basicprinciples)
      3.2 简化和组织RDF URIrefs(Abbreviating and Organizing RDF URIrefs) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#newresources)
      3.3 总结(RDF/XML Summary) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfxmlsummary)
  4. 其它RDF表达能力(Other RDF Capabilities) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#othercapabilities)
      4.1 RDF容器(RDF Containers) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#containers)
      4.2 RDF集合(RDF Collections) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#collections)
      4.3 RDF具体化(RDF Reification) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#reification)
      4.4 关于结构化值(rdf:value)的更多信息(More _disibledevent="urlexpansion"> (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfvalue)
      4.5 
XML文字(Literal)(XML Literals) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#xmlliterals)
  5. RDF Schema - 定义RDF的词汇表(Defining RDF Vocabularies: RDF Schema) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfschema)
      5.1 描述类(Class)(Describing Classes) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#schemaclasses)
      5.2 描述属性(Property)(Describing Properties) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#properties)
      5.3 理解RDF Schema声明(Interpreting RDF Schema Declarations) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#interpretingschema)
      5.4 其它关于Schema的信息(Other Schema Information) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#otherschema)
      5.5 更丰富的Schema语言(Richer Schema Languages) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#richerschemas)
  6. 一些RDF的应用:具体领域中的RDF(Some RDF Applications: RDF in the Field) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#applications)
      6.1 都柏林核心元数据倡议(Dublin Core Metadata Initiative) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#dublincore)
      6.2 PRISM (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#prism)
      6.3 XPackage (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#xpackage)
      6.4 RSS 1.0:RDF站点汇总(RSS 1.0: RDF Site Summary) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rss)
      6.5 CIM/XML (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#cimxml)
      6.6 基因本体协会(Gene _disibledevent="urlexpansion"> (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#geneont)
      6.7 
描述设备性能与用户偏好(Describing Device Capabilities and User Preferences) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#devcap)
  7. RDF规范的其它部分(Other Parts of the RDF Specification) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#otherparts)
      7.1 RDF语义(RDF Semantics) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#semantics)
      7.2 测试用例(Test Cases) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#testcases)
  8. 参考文献(References) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#references)
      8.1 规范性参考文献(Normative References) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#normative-references)
      8.2 参考性资料(Informational References) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#informational-references)
  9. 致谢(Acknowledgments) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#acknowledgements)

 

[编辑]

附录

  A. 关于URI的更多信息(More _disibledevent="urlexpansion"> (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#identifiers)
  B. 
关于XML的更多信息(More _disibledevent="urlexpansion"> (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#documents)
  C. 
改动记录(Changes) (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#changes)

 


 


[编辑]

1. 介绍(Introduction)

资源描述框架(Resource Description Framework, 简称 RDF)是一个用于表达关于万维网(World Wide Web)上的资源的信息的语言. 它专门用于表达关于Web资源的元数据, 比如Web页面的标题、作者和修改时间,Web文档的版权和许可信息,某个被共享资源的可用计划表等。然而,将“Web资源(Web resource)”这一概念一般化后,RDF可被用于表达关于任何可在Web上被标识的事物的信息,即使有时它们不能被直接从Web上获取。比如关于一个在线购物机构的某项产品的信息(例如关于规格、价格和可用性信息),或者是关于一个Web用户在信息递送方面的偏好的描述。

 

RDF用于信息需要被应用程序处理而不是仅仅显示给人观看的场合。RDF提供了一种用于表达这一信息、并使其能在应用程序间交换而不丧失语义的通用框架。既然是通用框架,应用程序设计者可以利用现成的通用RDF解析器(RDF parser)以及通用的处理工具。能够在不同的应用程序间交换信息意味着对于那些并非信息的最初创建者的应用程序也是可利用这些信息。

 

RDF基于这样的思想:用Web标识符(称作统一资源标识符Uniform Resource IdentifiersURIs)来标识事物,用简单的属性(property)及属性值来描述资源。这使得RDF可以将一个或多个关于资源的简单陈述表示为一个由结点和弧组成的图(graph),其中的结点和弧代表资源、属性或属性值。为了让讨论显得尽量具体一些,下面的这组陈述“有一个人由http://www.w3.org/People/EM/contact#me 标识, 他的名字是Eric Miller, 他的电子邮件地址是em@w3.org,他的头衔是Dr.”可以表示为图1 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure1)所示的图:

 

fig1dec16.png

图1:一个描述Eric Miller的RDF图

 

图1 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure1)展示了RDF用URIs来标识:

 

RDF提供了一种基于XML的语法(称为RDF/XML)用于保存和交换RDF图。图1 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure1)所示的RDF用RDF/XML来书写的话就像下面的例1 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#example1)这样:

 

例1:一段描述Eric Miller的RDF/XML

 

 <?xml version="1.0"?>

 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

          xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#">

 
 <contact:Person rdf:about="http://www.w3.org/People/EM/contact#me">

     <contact:fullName>Eric Miller</contact:fullName>

     <contact:mailbox rdf:resource="mailto:em@w3.org"/>

     <contact:personalTitle>Dr.</contact:personalTitle> 

   </contact:Person>

 
 </rdf:RDF>


注意:上述RDF/XML也包含URIs,同样地还包含简略形式的属性(比如mailbox和fullName)及各个属性的值(em@w3.org和Eric Miller)。

 

和HTML一样,RDF/XML也是机器可处理的,也使用URIs,RDF也可以链接Web上任何地方的信息。然而与传统超文本不同的是,RDF URIs可以引用任何可标识的事物,包括那些不是直接可从Web上获取的事物(比如Eric Miller这个人)。结果是,RDF除了能够描述像网页这类事物以外,还可以描述汽车,商业活动,人类,新闻事件等等。此外,RDF中的属性本身有URIs,用以准确标识被链接的事物之间的关系。 

 

下列文档都属于RDF规范的一部分:

 

本文档旨在提供一个关于RDF的介绍,并描述一些已有的RDF应用,以帮助信息系统设计者及应用程序开发者理解RDF的特性和如何使用这些特性。特别地,本文档旨对下列这类问题做出回答:

 

  • RDF看起来是怎样的?
     
  • RDF可以表达什么信息?
     
  • RDF信息是如何被创建、访问和处理的?
     
  • 现有信息如何能够与RDF结合?

     

本文档是一个非规范性(non-normative)文档,也就是说它并不是关于RDF的权威性的规范。本文档中的例子和其他解释性的资料用于帮助读者理解RDF,但是它们有可能并不是权威性的和充分完善的。在这些情况下,请参考RDF规范中相关的规范性文档。为此,本文档描述了RDF规范中的其他文档所担任的角色,并在适当的地方提供了指向规范性文档中相关部分的链接。

 

需要注意的是,上述RDF文档更新并更清晰地解释了先前发布的一些RDF规范,资源描述框架(RDF)的模型和语法规范 (http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/) [RDF-MS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdfms)]和资源描述框架模式(RDF Schema)规范1.0 (http://www.w3.org/TR/2000/CR-rdf-schema-20000327/)[RDF-S (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-s)]。所以,一些术语、语法和概念已经稍有变化。本文档反映的是在上面的列表中给出的新版本RDF规范。因此,对于熟悉旧规范或基于旧规范的教程、入门读物的读者,应留意当前版本的规范与先前版本的一些差异。关于先前版本的RDF中出现的一些问题以及它们在当前版本中的解决方案的列表,请参见[http://www.w3.org/2000/03/rdf-tracking/ RDF问题跟踪(Issue Tracking)。

 

[编辑]

2. 关于资源的陈述

RDF是用以提供一种发表关于Web资源(如网页)的陈述的简单方法的。这部分描述了RDF提供这些能力(描述这些概念的规范标准就是RDF概念和抽象语法 (http://www.w3.org/TR/rdf-concepts/)[RDF-CONCEPTS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-concepts)])背后的基本思想。

 


 

[编辑]

2.1 基本概念

试想一下这样的情形:有一个叫John Smith的人创建了某个网页。如果用自然语言(比如英语)来陈述该事实,一种简洁明了的方式是采用下面这种简单陈述的形式:

 

 http://www.example.org/index.html has a creator whose value is John Smith


强调该陈述的各个部分是为了强调:为了描述某事物的特性,需要某些方法来命名或标识多种事物:

 

  • 陈述所描述的事物(譬如此例中John Smith所创建的网页)
     
  • 陈述所描述事物的具体属性(property)(譬如本例中的creator)
     
  • 陈述所描述的作为该属性(陈述所描述事物对应的)的值的事物(如这个网页的creator是谁)。 
     

在上面的陈述中,网页用它的URL(Uniform Resource Locator,统一资源定位符)来标识。另外,单词“creator”被用来标识事物的属性(property),短语“John Smith”被用来标识作为属性(property)的值的事物(一个人)。

 

该网页的其他属性(property)可以通过书写其他具有相同形式的英文陈述来描述:用URL标识该网页,用单词(或其他表达式)来标识网页的属性(properties)及其值。例如:这个网页的创建日期和所用的语种可以由下列陈述来描述:
 

 http://www.example.org/index.html has a creation-date whose value is August 16, 1999

 http://www.example.org/index.html has a language whose value is English

RDF是基于这一思想的:被描述的事物具有一些属性 (http://www.w3.org/TR/rdf-concepts/#dfn-property) (properties),而这些属性各有其值(values);对资源的描述可以通过对它作出指定了上述属性及值的陈述(statement)来进行(就像上面例子中的那样)。RDF用一套特定的术语来表达陈述中的各个部分。确切地说,关于事物(譬如上例中的网页)的陈述中用于识别事物的那部分就叫做主体 (http://www.w3.org/TR/rdf-concepts/#dfn-subject),而用于区分陈述对象主语的各个不同属性(譬如:作者,创建日期,语种等等)的那部分就叫做谓词 (http://www.w3.org/TR/rdf-concepts/#dfn-predicate),陈述中用于区分各个属性的值的那部分叫做客体 (http://www.w3.org/TR/rdf-concepts/#dfn-object)。因此,考虑英文陈述:

 

 http://www.example.org/index.html has a creator whose value is John Smith


这个陈述里的不同部分用RDF术语来说就是:

 

正如英语是作为(用英语沟通的)人们之间很好沟通工具一样,RDF是用来做出机器可处理的声明的工具。那么,如果想做出这种适合机器处理的声明,还需要两件事:

 

  • 一个可用来区分标识一个陈述中的主体,谓词,客体的机器可处理的标识符系统,同时这个标识符系统不会和其他人可能在Web上使用的相似的标识符系统混淆;
     
  • 一种用以表示这些陈述并让这些陈述可在机器间交流的机器可处理的语言;
     

幸运地是,现有的Web体系结构提供了这两个必需的工具。

 

正如前面所描述的,Web已经提供了一种形式的标识符-URL(Uniform Resource Locator,同一资源定位符)。在第一个例子中,就采用了一个URL来标识John Smith所创建的网页。URL是标识(identify)Web资源(Web resource)的字符串,这是通过标识资源的首选访问机制来实现的(本质上,即资源的网络“位置”)。然而,对于许多不具有网络地址或URL的资源(这一点与网页是不同的),能够记录关于它们的信息也是同等重要。

 

Web提供了一套更通用的标识符形式,称为统一资源标识符 (http://www.isi.edu/in-notes/rfc2396.txt)(Uniform Resource Identifier,URI)。URL是URI的一种具体形式。所有URI都具有共同的特征:即不同的人或组织可以彼此独立地创建并使用URI来标识事物。但是,URI并不局限于标识具有网络地址或其他计算机访问机制的资源。实际上,我们可以创建URI来引用陈述中需要被标识的任何资源,包括:

 

  • 网络可访问资源,譬如,一份电子文档、一个图片、一个服务(例如,“洛山矶的今日天气预报”)或是一组其他的资源;
     
  • 非网络可访问资源,譬如,人、公司、在图书馆装订成册的书籍;
     
  • 不物理存在的抽象概念,如“作者(creator)”这个概念;
     

由于上述通用性,RDF用URIs作为其标识机制(用于标识陈述中的主体、谓词和客体)的基础。更准确地说,RDF使用的是URI引用(URI references) (http://www.w3.org/TR/rdf-concepts/#dfn-URI-reference) [URIS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-uri)]。一个URI引用(或“URIref”)是一个在尾部附加了可选的“片段识别符(fragment identifier)”的URI。比如,URI引用(URIref) http://www.example.org/index.html# 由URI http://www.example.org/index.html 和(由符号#分隔的)的section2 (片段标识符)组成。RDF URIrefs可以包含Unicode[UNICODE (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-unicode)]字符(参见[RDF-CONCEPTS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-concepts)]),这就允许在URIrefs中使用多种语言。RDF将“资源(resource)”定义任何可被为URI引用(URIref)标识的事物。因此,使用URIrefs,RDF实际上可以描述任何事物,并陈述这些事物之间的关系。URIrefs和片段标识符将在Appendix A (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#identifiers)[RDF-CONCEPTS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-concepts)]中作进一步的阐述。

 

为了用一种机器可处理的(machine-processable)方式来表示RDF陈述(RDF statements),RDF采用了可扩展标记语言(Extensible Markup Language) (http://www.w3.org/TR/2000/REC-xml-20001006)[XML (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-xml)]。XML被设计成允许任何人来设计他们自己的文档格式,并可用这种格式书写文档。RDF定义了一个特殊的XML标记语言(称为RDF/XML)来表示RDF信息和在机器间交换这些信息。在第一节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#intro)中有一个关于RDF/XML的例子。这个例子(例 1 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#example1) )使用了一些诸如<contact:fullName>和<contact:personalTitle>这样的标签来相应地区分Eric Miller和Dr这些文本内容。这些标签能让那些理解这些标签含义的程序正确地解释文本内容。XML的内容和标签(除了一些特例)能够包含统一字符编码[UNICODE (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-unicode)] 的字符,这就允许了来自各种语言的信息可以被直接显示出来。附录 B (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#documents)大体上给出了关于XML进一步的背景知识。关于RDF的RDF/XML专用语法在第三节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfxml)中有更详细的描述,且定义在规范[RDF-SYNTAX (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-syntax)]中。

 


 

[编辑]

2.2 RDF模型

2.1节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#basicconcepts) 中阐述了以下内容:RDF陈述的基本概念,用URIref标识RDF陈述中涉及的事物的方法,以及用RDF/XML作为一种机器可处理的方式来表示RDF陈述。基于这些铺垫,这节将描述RDF是如何用URIs发表关于资源的陈述的。在介绍(第1节)中已经说明了,RDF的基本思想是:表达简单的资源陈述,其中每个陈述都是由主体(subject),谓词(predicate),客体(object)组成的。在RDF中,如下的英文陈述:

 

 http://www.example.org/index.html has a creator whose value is John Smith


可以由RDF陈述来表示:
 

请注意是如何用URIrefs不仅标识了陈述的主体,还标识了谓词和客体,而不分别用单词“作者”和“John Smith”(这样使用URIrefs的效果将会在这节的稍后部分做论述)。

RDF把图中的节点和弧作为陈述的模型。RDF的图模型 (http://www.w3.org/TR/rdf-concepts/#section-data-model)已在[RDF概念 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-concepts)]里有过详细说明。在这个表示法(图示法)中,一个陈述可表示为:

 

  • 一个表示主体的节点;
     
  • 一个表示客体的节点; 
     
  • 一个由主体节点指向客体节点的表示谓词的弧;

     

因此以上的RDF陈述可以描述为如图2 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure2)所示的那样:

 

fig2dec16.png

图2:一个简单的RDF陈述

 

一组陈述相应地被一组节点和弧表示。所以,为了在RDF中表示其他的英文陈述:

 

http://www.example.org/index.html has a creation-date whose value is August 16, 1999
http://www.example.org/index.html
 has a language whose value is English

 

可以用图3 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure3)所示的图(用合适的URIrefs标识属性"creation-date" 和 "language"):

 

fig3nov19.png

图3:关于同一资源的多个陈述:

 

图3 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure3) 说明了RDF陈述中的客体可以是URIrefs,也可以是常量值(称作文字),即用于表示某种属性值的字符串。

 

图 3 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure3)显示了:为了表示多种类型的属性值,RDF陈述中的客体可能是URIrefs或字符串表示的常数(称为文字 (http://www.w3.org/TR/rdf-concepts/#section-Literals),literal)。(比如在以 “http://purl.org/dc/elements/1.1/language” 为谓词的例子中,那个文字就是一个英文的国际标准双字母码。)在RDF的陈述中,文字(literal)可能不被用作主体或者谓词。在画RDF图时,节点为URIrefs的用椭圆来表示,而节点为文字的则用方框来表示(这个例子中的简单字符串文字叫做平凡文字 (http://www.w3.org/TR/rdf-concepts/#dfn-plain-literal),它与将会在2.4节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#typedliterals)做介绍的类型文字 (http://www.w3.org/TR/rdf-concepts/#dfn-typed-literal)(typed literals)是不同的。在[[RDF-CONCEPTS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-concepts)]中详细说明了各种不同的可用于RDF陈述中的文字。平凡文字和类型文字都能容许采统一字符编码[UNICODE (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-unicode)]的字符,即允许信息用多种语言描述。)

 

有时在讨论它们的时候画图不太方便,因此也会用到一个替代的书写陈述的方法,称为三元组 (http://www.w3.org/TR/rdf-concepts/#dfn-rdf-triple)。在三元组表示法中,图中的每个陈述都可以写成一个依次为主体,谓词,客体的三元组。如图3 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure3)所表示的陈述用三元组表示法来写就是:

 

 <http://www.example.org/index.html&gt; <http://purl.org/dc/elements/1.1/creator&gt; <http://www.example.org/staffid/85740&gt; .

 <http://www.example.org/index.html&gt; <http://www.example.org/terms/creation-date&gt; "August 16, 1999" .

 <http://www.example.org/index.html&gt; <http://purl.org/dc/elements/1.1/language&gt; "en" .


每一个三元组均对应于图中的一条弧,且这个弧的起始节点和终止节点分别是陈述中的主体和客体。和图形表示法不同(倒像是原先的陈述),三元组表示法要求一个节点在它出现的每个陈述中都要有标识。因此,例如, “http://www.example.org/index.html” 在三元组表示法中共出现了三次(在每个三元组中均出现一次),而在图形表示法中只出现了一次。但是,三元组表示法和图示法描述了完全相同的信息,这揭示了一个要点:RDF的基础是陈述的图模型,而用于表示或描述这个图的表示法则是次要的。

 

完全的三元组表示法要求写出完整的URIref(括在尖刮号中),正如上面例子那样,所以导致了在一页中有很多长句。为方便起见,本文档用一种简写法(也在其他的RDF规范里使用)来书写三元组。在这种简写法中, 一个不用尖刮号的XML限定名(QName)作为一个完整的URIref 的缩写形式 (QName 会在附录 B (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#documents)进一步讨论)。一个QName包括一个被赋为命名空间URI的前缀,其后是一个冒号,然后是个"局部名称"(local name)。由QName可以生成完整的URIref,即将局部名称添加到已经赋了命名空间URI的前缀。因此,例如,如果将命名空间URI“http://example.org/somewhere/”赋值给QName前缀foo,那么QName “foo:bar”就是URIref“http://example.org/somewhere/bar”的缩写。在本文档的例子中也会用一些“公认的”QName前缀(这些前缀无需说明就可使用),定义如下:

 

 前缀 rdf:, 命名空间 URI: http://www.w3.org/1999/02/22-rdf-syntax-ns#

 前缀 rdfs:, 命名空间 URI: http://www.w3.org/2000/01/rdf-schema#

 前缀 dc:, 命名空间 URI: http://purl.org/dc/elements/1.1/

 前缀 owl:, 命名空间 URI: http://www.w3.org/2002/07/owl#

 前缀 ex:, 命名空间 URI: http://www.example.org/ (or http://www.example.com/)

 前缀 xsd:, 命名空间 URI: http://www.w3.org/2001/XMLSchema#

显然,“example”的前缀 “ex:”的变形在需要时也会用在示例中,例如:

 

 前缀 exterms:, 命名空间 URI: http://www.example.org/terms/ (作为示例的组织中的词汇),

 前缀 exstaff:, 命名空间 URI: http://www.example.org/staffid/ (作为示例的组织中的雇员标识),

 前缀 ex2:, 命名空间 URI: http://www.domain2.example.org/ (作为示例的第二个组织中的词汇), and so _disibledevent="external" title="http://www.example.org/terms/" href="http://www.example.org/terms/">http://www.example.org/terms/ 的URIrefs构成的词汇表,用来表示这个组织在业务中用到的术语(例如:“创建日期”,“产品”等),同时也会定义一个全部由http://www.example.org/staffid/ 开头的URIrefs词汇表来标识这个组织的雇员。RDF用相同的方法来定义它自己的术语的词汇表,这些术语在在RDF中有着特定的含义。RDF 词汇表中的 URIrefs 都以 “http://www.w3.org/1999/02/22-rdf-syntax-ns# ”开头,通常情况下,其QName用前缀“rdf:”来表示。RDF词汇描述语言(将会在 第五节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#rdfschema)做阐述)定义了另一套都以http://www.w3.org/2000/01/rdf-schema# 开头的URIrefs的术语集合,其QName用前缀“rdfs:”来表示。(当一个特定的QName前缀以这种方式与一个已给定的术语集相关联的时候,那么这个QName前缀有时会用以作为这个词汇表的名称,比如,有人可能说“rdfs: 词汇”)。



 

使用公用的URI前缀提供了一种便捷的方法来组织一套相关的术语集URIrefs,然而,这仅仅只是一种约定。RDF模型只认可完整的URIrefs;它不会去看URIrefs的具体内容或使用任何关于它们结构的知识。特别地,RDF不会仅仅因为URIrefs有一个公用的前缀而认定这些URIrefs之间有联系(更深入的探讨请看附录A (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#identifiers) )。当 URIrefs 带有不同的前缀时,并没有规定说,这些URIrefs就不能被认为属于同一个词汇表。 某个特定的组织、过程(process)或者工具等可以根据自己的需要,来定义词汇。这些词汇的 URIrefs可以来自于任何其它的词汇,数目不受限制。  

另外,有时一个组织将使用词汇表的URIref命名空间用作是提供关于该词汇表的详细资料这种Web资源所在地的URL。例如:像著名的QName前缀dc: 将会在本文档的例子中用到,它是和命名空间URIref http://purl.org/dc/elements/1.1/ 相关联的。事实上,这指在6.1节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#dublincore)阐述的都柏林核心词汇表。通过在网页浏览器中访问这个URIref命名空间就能获得关于都柏林核心词汇表(明确地说,是一个RDF Schema)的其他一些信息。然而,这也仅仅只是一种约定。RDF不会认为每个URI命名空间都能确定一个可获取的Web资源(更深入的探讨请看附录B (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#documents) )。  

在这个入门文档的其余部分里,当涉及到一些为特殊目而定义的一套URIref,比如供RDF自身的使用而定义的各种URIref ,或者是example.org定义的用来标识它雇员的一套URIref,时都将会用到术语“词汇表”。术语“命名空间”只是在特指XML命名空间这个语法概念的时候才会使用(或者用来描述 QName中的URI前缀)。  

在RDF图中可以自由混合来自不同词汇表的URIrefs。譬如:在图 3 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure3) 中用到了分别采用了exterms:,exstaff:,dc:词汇表的URIref。在RDF图中,RDF也没有限制能用多少个具有同一谓词URIref的陈述描述同一个资源。例如:如果资源ex:index.html是由约翰·史密斯和其他几名工作人员努力合作创造的话,那么example.org可能写以下陈述:  

 ex:index.html dc:creator exstaff:85740 .

 ex:index.html dc:creator exstaff:27354 .

 ex:index.html dc:creator exstaff:00816 .

这些RDF陈述的例子开始展现一些使用URIref作为RDF标识事物的基本方式的优势所在。譬如:在第一个陈述中,不用字符串“John Smith”来作为网页的制作者,而是把一个URIref(使用基于他的雇员号码的URIref)http://www.example.org/staffid/85740赋予给他。这样使用URIref的一个优点就是陈述主体可以被更加精确的标识出来。就是说,这个网页的制作者不是字符串“John Smith”,也不是数以千计的名叫John Smith的人中的一个,而是与那个URIref(且不管是谁创建了定义了这种关系的URIref)相关的那个特殊的John Smith。而且,因为一个指向John Smith的URIref,他就成为一个成熟的资源,并且仅仅通过增加其他主体为John的 URIref的RDF陈述,就可以记录他的一些其他信息。例如:图 4 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure4)展示了可给出关于John的姓名和年龄的一些陈述。

 

fig4dec16.png

图4:更多关于John Smith的信息

 

这些例子也说明了RDF在RDF陈述中用URIref作为谓词。就是说,RDF使用URIrefs标识属性,而不是使用像“creator”或者“name”那样的字符串(或词组)。用URIref来标识属性的重要性是基于很多原因的。第一,它可以把一个人用的属性和其他人用的属性区别开来,尽管他们可能用相同的字符串来表示属性。例如:在图4 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#figure4)中的例子,example.org使用"name"想要使写出的某人的全名作为一个字符串文字(譬如:“John Smith”),但是其他人可能想要使"name"代表某些不同的事物(譬如:在一个程序段中的变量名)。当一段程序遇到“name”作为一个Web上的属性标识符(或者当合并来自多个数据源的数据)时将不一定能区分这些使用方法。但是,如果example.org用“http://www.example.org/terms/name”当作它定义的“name”的值,并且其他人用“http://www.domain2.example.org/genealogy/terms/name”当作他们定义的“name”的值,那么显然不同的“name”包含着不同的值(即使一个程序不能自动确定它们的具体含义)。此外,使用URIrefs来区分属性能使属性被看成是资源本身。因为属性也是资源,仅仅通过增加主体为属性的URIref的RDF陈述,就能记录关于属性的信息(譬如:example.org 所用的“name”属性的含义的英文描述)。

 

用URIref作为RDF陈述的主体,谓词,客体支持了Web上的共享词汇表的使用和发展,因为人们可以发现并开始使用已经在用的词汇表来描述事物,这反映了人们对那些概念的共享理解。例如:在三元组“ex:index.html dc:creator exstaff:85740 ”中:

 

 ex:index.html   dc:creator   exstaff:85740 .


当谓词“dc:crearot”完全展开为一个URIref时,就明确的指向了Dublin Core元数据属性集(一个广泛使用的描述各种各样信息的一套属性集,将在6.1节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#dublincore)中做深入的讨论)中的“creator”的属性。这个三元组的作者有效地说明了网页(由http://www.example.org/index.html 所标识)和网页的作者(一个独一无二的人,由http://www.example.org/staffid/85740 所标识)之间的关系正是一个由http://purl.org/dc/elements/1.1/creator 标识的概念。另一个熟悉Dublin Core词汇的人,或是查明了“dc:creator”确切含义(通过在Web上查找的它的定义)的人,将会明白这个关系的含义。另外,在这种理解的基础上,在处理含有谓词“dc:creator”的三元组时,人们就能编写出行为与这个含义一致的程序来。

 

当然,这有赖于越来越普遍地使用URIref而不是用文字来指代事物;譬如:用URIref像“exstaff:85740”和“dc:creator”来代替字符串文字像“John Smith”和“creator”。即使是那样,RDF对URIre的使用仍不能解决所有的标识问题,因为例如:人们仍然能够用不同的URIref来指代同一个事物。由于这个原因,尽量使用现有的词汇表(比如Dublin Core)的术语,而不发明可能与其他词汇表中术语重复的术语,这是个不错的想法。 正如在第6节 (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#applications)描述的应用展示的那样,在特定领域里适用的词汇表一直都在完善中。然而,即使同义词被建立了,在普遍可访问的“Web 空间”中使用不同的URIref,即提供了在这些URIref中识别等价关系的机遇,也提供了转向使用通用词汇表的机遇。

 

另外,重要的是,要区分RDF本身赋予RDF陈述中的词汇(比如在先前例子里的dc:creator)的含义与人们(或人编写的程序)可能赋予这些词汇的其他外部定义的含义。作为一门语言,RDF直接定义的只有主体,谓词,客体三元组的图示语法,在rdf:词汇表中的URIrefs的某些含义,和稍后会做介绍的某些其他概念。这些事物在[RDF-CONCEPTS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-concepts)]和[RDF-SEMANTICS (http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#ref-rdf-semantics)]有规范的定义。不过,RDF没有定义在RDF陈述中使用的其他词汇表中的术语的含义,比如:dc:creator。特定的词汇表会被创建且其中的URIref会被赋予特定的含义,但这是在RDF之外的。使用了这些词汇表中的URIref的RDF陈述可能会把那些术语的特定含义传达给熟悉这些词汇表的人,或是处理这些词汇表的RDF应用程序,而不会把这些含义传达给不是特意处理这些词汇表的通用RDF应用程序。

 

例如,人们可以给一个三元组如:

 

ex:index.html dc:creator exstaff:85740 .

 

赋予一定的含义,这是基于单词“creator”作为URIref“dc:creator”的一部分出现所表示的含义,或者基于在他们理解了“dc:creator”在Dublin Core词汇表中的确切定义。 不过,就通用的RDF应用程序而言,这个三元组和下面的三元组在内在的含义上是一样的:

 

 fy:joefy.iunm  ed:dsfbups  fytubgg:85740 .


与此类似,任何可能在Web上找到的描述“dc:creator”含义的自然语言文本都无法为一个通用的RDF应用程序提供其直接可用的额外的含义信息。

 

当然,来自一个特定词汇表的URIrefs可以在RDF陈述中被使用,尽管给定的应用程序可能不能把任何特定的含义赋予他们。例如,通用的RDF软件会识别出上述表达式是一个RDF陈述,其中“ed:dsfbups”是一个谓词,等等。它不会把词汇表开发人员赋予给一个URIref(比如 ed:dsfbups)的任何特定含义赋给这个三元组。此外,基于他们对一个给定的词汇表的理解,人们仍可以编写出一个与这个词汇表中的URIref的特定含义一致的RDF应用程序,尽管这个含义对不是以这种方式编写的RDF应用程序是无法理解的。

 

结果是:RDF提供了一种发表更易被应用程序处理的陈述的方法。一个应用不能真正理解这些陈述,就如当一个数据库系统处理一个查询语句如:SELECT NAME FROM EMPLOYEE WHERE SLALRY > 35000 的时候,数据库系统对像“employee”或“salary”这类的词汇的理解一样。但是, 如果一个应用程序编写的很合理,那么它处理RDF陈述时就好像它确实理解它们一样,这正像是一个数据库系统和它的程序并没有理解什么是“employee”和“payroll”却能在处理雇员和薪水的数据信息时做有用的工作一样。例如:一个人能搜寻Web找到全部书评并且为每本书创建一个平均等级。 然后,这个人就可以把这些关于书的信息放到Web上。 而另一网站能获取这些书平均等级的列表并且创造一个"评价最高的十本书"页面。 这里,一个关于书等级的共享词汇表的可用性和及其使用,以及用于标识那些书的一组共享的URIref,允许个人建造一个在Web上可相互理解和用处日益广泛(或说是做了其他贡献那样)的关于书的“信息库”。相同的原则适用于人们每天在Web上创建的关于数以千计的主题的大量信息。

 

RDF陈述和很多其他信息记录格式类似,像:

 

  • 在一个数据处理系统里,一个简单的记录或是目录清单中的实体,
     
  • 一个简单的关系数据库的行,
     
  • 形式逻辑的简单断言,

     

并且,这些格式的信息都能看成RDF陈述,这使得RDF能用于集成来自多个数据源的数据。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值