RDF简介RDF

一、什么是 RDF?

        RDF(Resource Description Framework), 一种用于描述Web资源的标记语言。RDF是一个处理元数据的XML应用,所谓元数据,就是“描述数据的数据”或者“描述信息的信息”。如:书的内容是书的数据,而作者的名字、出版社的地址或版权信息就是书的元数据。
  • RDF 被设计的目的不是为了向人们显示出来
  • RDF 被设计为可被计算机阅读和理解
  • RDF 文档使用 XML 编写


     下面就是一个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 资源、属性和属性值

     RDF 使用 Web 标识符来标识事物,并通过属性和属性值来描述资源。

     对资源、属性和属性值的解释:

  • 资源是可拥有 URI 的任何事物,比如 "http://www.w3school.com.cn/rdf"
  • 属性是拥有名称的资源,比如 "author" 或 "homepage"
  • 属性值是某个属性的值,比如 "David" 或 "http://www.w3school.com.cn" (请注意一个属性值可以是另外一个资源)

    在上例中  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 陈述

    资源、属性和属性值的组合可形成一个陈述(被称为陈述的主体谓语客体)。

    下面就是上例的主体、谓语、客体


四、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>

artist、country、company、price 以及 year 这些元素被定义在命名空间 http://www.recshop.fake/cd# 中。

此命名空间在 RDF 之外。RDF 仅仅定义了这个框架。而 artist、country、company、price 以及 year 这些元素必须被其它人进行定义。

属性(property)来定义属性(attribute)

属性元素(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:artist="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:artist rdf:resource="http://www.recshop.fake/cd/dylan" />
  .
  .
  .
  .
</rdf:Description>

</rdf:RDF>

五、RDF 容器

       用于描述一组事物。举个例子,把某本书的作者列在一起。

      下面的 RDF 元素(<Bag>、<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> 元素用于描述一个规定为有序的值的列表(比如一个字母顺序的排序)。

<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: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> 元素用于一个可替换的值的列表(用户仅可选择这些值的其中之一)。

实例

<?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 集合

     用于描述仅包含指定成员的组。

     集合是通过属性 rdf:parseType="Collection" 来描述的。

实例

<?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 (RDFS)

RDF Schema 是对RDF的一种扩张。

不提供实际的应用程序专用的类和属性,而是提供了描述应用程序专用的类和属性的框架。

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" 的子类。

简写的例子

由于一个 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#"
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>

就是这样的!




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值