最新的Web开发教程
 

XML RDF


RDF文档示例

<?xml version="1.0"?>

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

<rdf:Description rdf:about="http://www.w3ii.com">
  <si:title>w3ii</si:title>
  <si:author>Jan Egil Refsnes</si:author>
</rdf:Description>

</rdf:RDF>

什么是RDF?

  • RDF代表R esource D ESCRIPTION F ramework
  • RDF是用于描述在网络上的资源的框架
  • RDF被设计为读取和计算机理解
  • RDF不适合显示给人们
  • RDF是XML编写
  • RDF是W3C的语义Web活动的一部分
  • RDF是从10 2004年2月W3C推荐标准

RDF - 使用示例

  • 描述属性购物项目,比如价格和可用性
  • 描述时间表为网络事件
  • 描述有关网页的信息(content, author, created and modified date)
  • 描述为网络图片的内容和等级
  • 针对搜索引擎的内容描述
  • 描述电子图书馆

RDF的设计是由计算机读取

RDF的目的是提供描述的信息,以便它可以被读取和计算机应用程序理解的一种常见的方式。

RDF描述不旨在在网络上进行显示。


RDF是用XML

RDF文件都写在XML。 RDF所使用的XML语言被称为RDF / XML。

通过使用XML,RDF信息可以很容易地不同类型的计算机之间使用不同类型的操作系统和应用语言的交换。


RDF和"The Semantic Web"

该RDF语言是W3C的语义Web活动的一部分。 W3C的"Semantic Web Vision"是一个未来的,其中:

  • 网络信息具有准确含义
  • 网络信息可以理解和由计算机处理
  • 计算机可以从网络整合信息

RDF使用Web标识符(URIs)识别资源。

RDF描述了具有属性和属性值的资源。


RDF资源,属性和属性值

RDF标识使用Web标识符东西(URIs) ,并描述了具有属性和属性值的资源。

资源,财产和属性值的说明:

  • 一个Resource是什么,可以有一个URI,如"http://www.w3ii.com/rdf"
  • 一个Property是一个有名称的资源,如"author""homepage"
  • 一个Property value是属性的值,比如"Jan Egil Refsnes""http://www.w3ii.com" (note that a property value can be another resource)

下面的RDF文档可以描述资源"http://www.w3ii.com/rdf"

<?xml version="1.0"?>

<RDF>
  <Description about="http://www.w3ii.com/rdf">
    <author>Jan Egil Refsnes</author>
    <homepage>http://www.w3ii.com</homepage>
  </Description>
</RDF>

上面的例子被简化。 命名空间被省略。


RDF陈述

资源,属性和属性值的组合形成了一个Statement (known as the subject, predicate and object of a Statement)

让我们来看看一些例子语句来更好地理解:

声明: "The author of http://www.w3ii.com/rdf is Jan Egil Refsnes"

  • 上述声明的主题是:http://www.w3ii.com/rdf
  • 谓词是:作家
  • 目的是:一月埃伊尔的Refsnes

声明: "The homepage of http://www.w3ii.com/rdf is http://www.w3ii.com"

  • 上述声明的主题是:http://www.w3ii.com/rdf
  • 谓词是:首页
  • 的对象是:http://www.w3ii.com

RDF示例

下面是从CD-列表中有两个记录:

标题 艺术家 国家 公司 价钱
帝国滑稽 鲍勃·迪伦 美国 哥伦比亚 10.90 1985年
隐藏你的心脏 健美的Tyler 联合王国 CBS唱片公司 9.90 1988年

下面是一个RDF文档的几行:

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist>Bob Dylan</cd:artist>
  <cd:country>USA</cd:country>
  <cd:company>Columbia</cd:company>
  <cd:price>10.90</cd:price>
  <cd:year>1985</cd:year>
</rdf:Description>

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Hide your heart">
  <cd:artist>Bonnie Tyler</cd:artist>
  <cd:country>UK</cd:country>
  <cd:company>CBS Records</cd:company>
  <cd:price>9.90</cd:price>
  <cd:year>1988</cd:year>
</rdf:Description>
.
.
.
</rdf:RDF>

在RDF文档的第一行是XML声明。 XML声明之后是RDF文档的根元素: <rdf:RDF>

xmlns:rdf命名空间,指定的RDF前缀的元素来自命名空间"http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:cd命名空间,指定与CD前缀的元素都从命名空间中"http://www.recshop.fake/cd#"

<rdf:Description>元素包含标识的资源的描述rdf:about属性。

元素: <cd:artist>, <cd:country>, <cd:company>,等都是资源的属性。


RDF在线验证

W3C的RDF验证服务学习RDF时非常有用。 在这里,您可以用RDF文件进行试验。

在线RDF验证器解析您的RDF文档,检查你的语法,并生成表格和您的RDF文件的图形视图。

复制并粘贴下面的例子到W3C的RDF验证:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="http://www.w3ii.com/rdf/">
<rdf:Description rdf:about="http://www.w3ii.com">
  <si:title>w3ii.com</si:title>
  <si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>

当你分析上面的例子中, 结果会是这个样子


RDF元素

RDF的主要元素是根元素,<RDF>和<Description>元素,它标识资源。


<rdf:RDF>元素

<RDF:RDF>是一个RDF文档的根元素。 它定义了XML文档是一个RDF文档。 它还包含了RDF命名空间的引用:

<?xml version="1.0"?>

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

<rdf:Description>元素

<rdf:Description>元素标识与资源about的属性。

<rdf:Description>元素包含描述资源要素:

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist>Bob Dylan</cd:artist>
  <cd:country>USA</cd:country>
  <cd:company>Columbia</cd:company>
  <cd:price>10.90</cd:price>
  <cd:year>1985</cd:year>
</rdf:Description>

</rdf:RDF>

元素,艺术家,国家,企业,价格,和今年,是在HTTP中定义://www.recshop.fake/cd#命名空间。 该命名空间是外面的RDF (and not a part of RDF) 。 RDF只定义了框架。 元素,艺术家,国家,企业,价格,一年,必须由别人(公司,机构,人员等)来定义。


属性属性

该属性的元素也可以被定义为属性(instead of elements)

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque"
cd:artist="Bob Dylan" cd:country="USA"
cd:company="Columbia" cd:price="10.90"
cd:year="1985" />

</rdf:RDF>

属性,如资源

酒店元件也可以定义为资源:

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" />
  ...
  ...
</rdf:Description>

</rdf:RDF>

在上面的例子中,属性艺术家不具有价值,但包含有关艺术家信息的资源的参考。


RDF容器

RDF容器用于描述事物基。

下面的RDF元素用来描述基团:<袋>,<SEQ>和<Alt>


<rdf:Bag>元素

所述<rdf:Bag>元素,用于描述不具有要在一个特定的顺序值的列表。

<rdf:Bag>元素可以包含重复值。

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:artist>
    <rdf:Bag>
      <rdf:li>John</rdf:li>
      <rdf:li>Paul</rdf:li>
      <rdf:li>George</rdf:li>
      <rdf:li>Ringo</rdf:li>
    </rdf:Bag>
  </cd:artist>
</rdf:Description>

</rdf:RDF>

<rdf:Seq>元素

<rdf:Seq>元素被用来描述值的有序列表(For example, in alphabetical order)

<rdf:Seq>元素可以包含重复值。

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:artist>
    <rdf:Seq>
      <rdf:li>George</rdf:li>
      <rdf:li>John</rdf:li>
      <rdf:li>Paul</rdf:li>
      <rdf:li>Ringo</rdf:li>
    </rdf:Seq>
  </cd:artist>
</rdf:Description>

</rdf:RDF>

<rdf:Alt>元素

<rdf:Alt>元素被用来形容替代值的列表(the user can select only one of the values)

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:format>
    <rdf:Alt>
      <rdf:li>CD</rdf:li>
      <rdf:li>Record</rdf:li>
      <rdf:li>Tape</rdf:li>
    </rdf:Alt>
  </cd:format>
</rdf:Description>

</rdf:RDF>

RDF条款

在上面我们已经谈到的例子"list of values"描述容器元素时。 在RDF中,这些"list of values"被称为成员。

因此,我们有以下几点:

  • 容器是包含事物的资源
  • 所包含的事物被称为成员(not list of values)

RDF集合

RDF集合描述只能包含特定成员的组。


rdf:parseType="Collection"属性

正如在前面的章节看到,容器说,包含资源的成员 - 它不说,其他成员都是不允许的。

RDF集合用于描述只能包含特定成员的组。

集合由属性RDF描述:parseType =“收集”。

<?xml version="1.0"?>

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

<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
  <cd:artist rdf:parseType="Collection">
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/>
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/>
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/>
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/>
  </cd:artist>
</rdf:Description>

</rdf:RDF>

RDF Schema和应用程序类

RDF模式(RDFS)是一个扩展到RDF。

RDF描述了类,属性和价值的资源。

此外,RDF还需要一种方法来定义特定应用的类和属性。 应用程序特定的类和属性必须使用扩展RDF定义。

一个这样的扩展RDF Schema中。


RDF模式(RDFS)

RDF Schema中并不提供实际的应用程序特定的类和属性。

相反,RDF Schema提供了描述特定应用类和属性的框架。

在RDF Schema中的类是很像的面向对象编程语言类。 这允许资源被定义为类的子类的类的实例,。


RDFS例子

下面的示例演示了一些RDFS设施:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">

<rdf:Description rdf:ID="animal">
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>

<rdf:Description rdf:ID="horse">
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdf:Description>

</rdf:RDF>

在上面的例子中,资源"horse"是类的一个子类"animal"


例如缩

类,而不是RDF:由于一个RDFS类是一个RDF资源,我们可以通过使用RDFS缩写上面的例子说明,并删除RDF:类型信息:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">

<rdfs:Class rdf:ID="animal" />

<rdfs:Class rdf:ID="horse">
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>

</rdf:RDF>

而已!


都柏林核心

都柏林核心元数据倡议(DCMI)已创建了一些预定义的属性描述文件。

RDF是元数据(data about data) 。 RDF是用来描述的信息资源。

都柏林核心是一套描述文档的预定义属性。

第一都柏林核心性能的定义Metadata Workshop in Dublin, Ohio于1995年,目前由维护都柏林核心元数据计划

属性 定义
贡献者 负责作出贡献的资源内容的实体
覆盖 资源的内容的程度或范围
创造者 使得资源的内容负主要责任的实体
格式 资源的物理或数字表现形式
日期 事件在资源的生命周期一个日期
描述 资源的内容的说明
识别码 一个明确的参考资源在给定范围内
语言 资源的知识内容的语言
出版者 负责使得资源内容可用的实体
关系 参考对相关资源
权利 有关权限信息,并通过资源举行
资源 评价的参考资源作为目前资源的来源
学科 资源内容的话题
标题 考虑到资源的名称
类型 资源的内容的性质或类型

上述快速看看表显示,RDF是非常适合表示都柏林核心信息。


RDF示例

下面的例子演示了使用一些RDF文档在都柏林核心属性:

<?xml version="1.0"?>

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

<rdf:Description rdf:about="http://www.w3ii.com">
  <dc:description>w3ii - Free tutorials</dc:description>
  <dc:publisher>Refsnes Data as</dc:publisher>
  <dc:date>2008-09-01</dc:date>
  <dc:type>Web Development</dc:type>
  <dc:format>text/html</dc:format>
  <dc:language>en</dc:language>
</rdf:Description>

</rdf:RDF>

RDF参考

在RDF命名空间(xmlns:rdf)是: http://www.w3.org/1999/02/22-rdf-syntax-ns#

该RDFS命名空间(xmlns:rdfs )是: http://www.w3.org/2000/01/rdf-schema#

建议的文件扩展名RDF文件是.rdf 。 然而,扩展.xml通常被用来提供与旧XML解析器兼容性。

MIME类型应该是"application/rdf+xml"


RDFS / RDF类

元件 等级 子类
rdfs:Class All classes  
rdfs:Datatype Data types Class
rdfs:Resource All resources Class
rdfs:Container Containers Resource
rdfs:Literal Literal values (text and numbers) Resource
rdf:List Lists Resource
rdf:Property Properties Resource
rdf:Statement Statements Resource
rdf:Alt Containers of alternatives Container
rdf:Bag Unordered containers Container
rdf:Seq Ordered containers Container
rdfs:ContainerMembershipProperty Container membership properties Property
rdf:XMLLiteral XML literal values Literal

RDFS / RDF属性

元件 范围 描述
rdfs:domainPropertyClass 资源域
rdfs:rangePropertyClass 资源的范围
rdfs:subPropertyOfPropertyProperty 该物业是一个属性的子属性
rdfs:subClassOfClassClass 该资源是一个类的子类
rdfs:commentResourceLiteral 资源的可读描述
rdfs:labelResourceLiteral 人类可读的标签(name)资源的
rdfs:isDefinedByResourceResource 资源的定义
rdfs:seeAlsoResourceResource 有关资源的附加信息
rdfs:memberResourceResource 资源的构件
rdf:firstListResource
rdf:restListList
rdf:subjectStatementResource 资源在一个RDF陈述的主题
rdf:predicateStatementResource 资源在一个RDF陈述的谓词
rdf:objectStatement Resource 资源在一个RDF陈述的对象
rdf:valueResourceResource 用于值的属性
rdf:typeResourceClass 该资源是一个类的实例

RDF属性

属性 描述
rdf:about 定义所描述的资源
rdf:Description 容器为资源的描述
rdf:resource 定义的资源,以确定一个属性
rdf:datatype 定义了一个元素的数据类型
rdf:ID 定义了一个元素的ID
rdf:li 定义列表
rdf:_ n 定义一个节点
rdf:nodeID 定义一个元素节点的ID
rdf:parseType 定义了一个元件应该如何被解析
rdf:RDF 一个RDF文档的根
xml:base 定义XML基地
xml:lang 定义元素内容的语言