· RDF 指资源描述框架(Resource Description Framework)
· RDF 是一个用于描述 Web 上的资源的框架
· RDF 提供了针对数据的模型以及语法,这样独立的团体们就可以交换和使用它
· RDF 被设计为可被计算机阅读和理解
· RDF 被设计的目的不是为了向人们显示出来
· RDF 使用 XML 编写
· RDF 是 W3C 语义网络活动的组成部分
· RDF 是一个 W3C 推荐标准
· 描述购物项目的属性,比如价格以及可用性
· 描述 Web 事件的时间表
· 描述有关网页的信息,比如内容、作者以及被创建和修改的日期
· 描述网络图片的内容和等级
· 描述针对搜索引擎的内容
· 描述电子图书馆
· RDF 被设计为提供一种描述信息的通用方法,这样就可以被计算机应用程序读取并理解。
· RDF 描述不是被设计用来在网络上显示的。
· RDF 文档使用 XML 编写。被 RDF 使用的 XML 语言被称为 RDF/XML。
· 通过使用 XML,RDF 信息可以轻易地在使用不同类型的操作系统和应用语言的计算机之间进行交换。
· RDF 语言是 W3C 的语义网活动的组成部分。W3C 的“语义网远景 (Semantic Web Vision)”的目标是:
· Web 信息拥有确切的含义
· Web 信息可被计算机理解并处理
· 计算机可从 Web 上整合信息
· RDF 在 2004 年 2 月成为 W3C 标准。
· W3C 推荐(标准)被业界以及 web 团体奉为 web 标准。W3C推荐标准 是由 W3C 工作组开发并经 W3C 成员评审的稳定规范。
· 可以通过此链接找到官方的 W3C 推荐标准。
· http://www.w3.org/RDF/
· RDF 使用 Web 标识符 (URIs) 来标识资源。
· RDF 使用属性和属性值来描述资源。
· RDF 使用 Web 标识符来标识事物,并通过属性和属性值来描述资源。
对资源、属性和属性值的解释:
· 资源是可拥有 URI 的任何事物,比如 "http://www.w3school.com.cn/rdf"
· 属性是拥有名称的资源,比如 "author" 或 "homepage"
· 属性值是某个属性的值,比如 "David" 或 "http://www.w3school.com.cn" (请注意一个属性值可以是另外一个资源)
· 下面的 RDF 文档可描述资源 "http://www.w3school.com.cn/rdf":
<?xml version="1.0"?>
<RDF>
<Description about="http://www.w3school.com.cn/rdf">
<author>David</author>
<homepage>http://www.w3cschool.com.cn</homepage>
</Description>
</RDF>
提示:上面是一个简化的例子。命名空间被忽略了。
资源、属性和属性值的组合可形成一个陈述(被称为陈述的主体、谓语和客体)。
请看一些陈述的具体例子,来加深理解:
· 陈述:"The author of http://www.w3school.com.cn/rdf is David."
■ 陈述的主体是:http://www.w3school.com.cn/rdf
■ 谓语是:author
■ 客体是:David
· 陈述:"The homepage of http://www.w3school.com.cn/rdf is http://www.w3school.com.cn".
■ 陈述的主体是:http://www.w3school.com.cn/rdf
■ 谓语是:homepage
■ 客体是:http://www.w3school.com.cn
· 这是一个 CD 列表的其中几行:
· 这是一个 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:artlist>Bob Dylan</cd:artlist>
<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:artlist>Bonnie Tyler</cd:artlist>
<cd:country>UK</cd:country>
<cd:company>CBS Records</cd:company>
<cd:price>9.90</cd:price>
<cd:year>1999</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> 等是此资源的属性。
· http://www.w3.org/RDF/Validator/ 您学习 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.recshop.fake/siteinfo#">
<rdf:Description rdf:about="http://www.w3school.com.cn/RDF">
<si:author>David</si:author>
<si:homepage>http://www.w3school.com.cn</si:homepage>
</rdf:Description>
</rdf:RDF>
RDF 的主要元素是 <RDF> 以及可表示某个资源的 <Description> 元素。
· <rdf:RDF> 是一个 RDF 文档的根元素。它把 XML 文档定义为一个 RDF 文档。它也包含了对 RDF 命名空间的引用:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!--
Description goes hear
-->
</rdf:RDF>
· <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:artlist>Bob Dylan</cd:artlist>
<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>
· artist、country、company、price 以及 year 这些元素被定义在命名空间http://www.recshop.fake/cd#中。此命名空间在 RDF 之外(并非 RDF 的组成部分)。
RDF 仅仅定义了这个框架。而 artist、country、company、price 以及 year 这些元素必须被其他人(公司、组织或个人等)进行定义。
· 属性元素(property elements)也可作为属性(attributes)来被定义(取代元素):
<?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:artlist="Bob Dylan" cd:country="USA"
cd:company="Columbia" cd:price="10.90"
cd:year="1985"/>
</rdf:RDF>
· 属性元素(property elements)也可被作为资源(resources)来被定义:
在下面的例子中,属性 artist 没有值,但是却引用了一个对包含有关艺术家的信息的资源。
<?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:artlist rdf:resource="http://www.recshop.fake/cd/dylan" />
</rdf:Description>
</rdf:RDF>
· RDF 容器用于描述一组事物。举个例子,把某本书的作者列在一起。
· 下面的 RDF 元素用于描述这些的组:<Bag>、<Seq> 以及 <Alt>。
· <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/Empire Burlesque">
<cd:artlist>
<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:artlist>
</rdf:Description>
</rdf:RDF>
· <rdf:Seq> 元素用于描述一个规定为有序的值的列表(比如一个字母顺序的排序)。
· <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/Empire Burlesque">
<cd:artlist>
<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:artlist>
</rdf:Description>
</rdf:RDF>
· <rdf:Alt> 元素用于一个可替换的值的列表(用户仅可选择这些值的其中之一)。
<?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: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 中,这些“值的列表”被称为成员(members)。因此,我们可以这么说:
■ 一个容器是一个包含事物的资源
■ 被包含的事物被称为成员(不能称为“值的列表”)。
· RDF 集合用于描述仅包含指定成员的组。
· 正如在前面的章节所看到的,我们无法关闭一个容器。容器规定了所包含的资源为成员 - 它没有规定其他的成员是不被允许的。RDF 集合用于描述仅包含指定成员的组。
· 集合是通过属性 rdf:parseType="Collection" 来描述的。
<?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:artlist rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.recshop.fake/cd/John"/>
<rdf:Description rdf:about="http://www.recshop.fake/cd/Paul"/>
<rdf:Description rdf:about="http://www.recshop.fake/cd/George"/>
<rdf:Description rdf:about="http://www.recshop.fake/cd/Ringo"/>
</cd:artlist>
</rdf:Description>
</rdf:RDF>
· RDF Schema (RDFS) 是对 RDF 的一种扩展。
· RDF 通过类、属性和值来描述资源。此外,RDF 还需要一种定义应用程序专业的类和属性的方法。应用程序专用的类和属性必须使用对 RDF 的扩展来定义。RDF Schema 就是这样一种扩展。
· RDF Schema 不提供实际的应用程序专用的类和属性,而是提供了描述应用程序专用的类和属性的框架。RDF Schema 中的类与面向对象编程语言中的类非常相似。这就使得资源能够作为类的实例和类的子类来被定义。
· 下面的实例演示了 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#"
xmlns:base="http://www.animals.fake/animal#">
<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" 的子类。
· 由于一个 RDFS 类就是一个 RDF 资源,我们可以通过使用 rdfs:Class 取代rdf:Description,并去掉 rdf:type 信息,来把上面的例子简写一下:
<?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#"
xmlns:base="http://www.animals.fake/animal#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID="horse">
<rdfs:subClassof rdf:resource="#animal"/>
</rdfs:Class>
</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#