语义网简介(三)—RDF与RDF Schema

来源:互联网 发布:淘宝银饰品店铺介绍 编辑:程序博客网 时间:2024/05/22 03:53

RDF第一印象

RDF是Resource Description Framework的缩写,叫做资源描述语言。它的实质是一系列的statements,也就是“主体-谓词-客体”三元组(object-attribute-value)。RDF所做的,是刻画和传输一个数据模型,让机器也理解我们想要表达的意思。
让机器理解语义的方法是,我们规定一些特定词汇,用这些词汇来表达特定的语义。这个词汇表就是RDF Schema。可以看出,RDF Schema与RDF,是不能和XML Schema和XML进行类比的。

为了更加深刻的了解RDF,RDFS,OWL的概念,区别;我们在这里先翻译一段stackoverflow上的解释:

  1. RDF是一个概念
    这里的RDF就是我们用三元组描述事物的方式

  2. RDF也是一个词典的名字
    词典中有很多词汇,比如- rdf: resource, rdf:description等等,我们在下面会详细介绍每个词语怎么用,这些词汇让我们更加方便的对事物进行建模。词汇的具体含义参见:https://www.w3.org/1999/02/22-rdf-syntax-ns

  3. RDFS是另外一个词典的名字
    这个词典中的词汇主要帮助你描述类的关系。词汇的具体含义参见:https://www.w3.org/2000/01/rdf-schema#

  4. OWL是一个更强大的词典的名字
    让你创建更加复杂的模型

RDF的基本概念

概念

statements = 对象(资源) + 属性(特殊的资源) + 值(资源或者字符串)
其中:
1. 资源:打算谈论的事物。每个资源都有一个唯一的URI(通用资源标识符)来定位。
2. 属性:一种特殊的资源(所以也有对应的URI),来描述资源之间的关系。

表示方法

  1. 三元组
(http://www.cit.gu.edu.au/_db, http://www.mydomain.org/siteowner, #David Billington)
  1. 有向图

这里写图片描述

  1. XML
<? xml version="1.0" encoding="UTF-16"><rdf:RDF    xmlns: rdf="http://www.w3.org/1999/01/22-rdf-syntax-ns#"    xmlns: mydomain="http://www.mydomain.org/my-rdf-ns"><rdf: Description rdf: about="http://www.cit.gu.edu.au/~db">    <mydomain: site-owner>        David Billington    </mydomain: site-owner></rdf: Description></rdf: RDF>

基于XML的RDF语法

构成

一个RDF文档由一个rdf: RDF元素构成,其内容是一系列描述。其第一部分是命名空间,第二部分才表示RDF的三元组语句,具体的例子见上面的XML表示。rdf:Description 后面开始被描述的对象,用rdf:about来说明描述的东西是什么,后面的内容成为属性元素,是一些属性-值的二元组,用来描述。

rdf主要元素

  1. rdf:Description
    rdf:Description 元素可通过 about 属性新定义一个资源。例如
<rdf: Description rdf: about="http://www.cit.gu.edu.au/~db">
  1. 属性元素
    在标识完这个资源之后,我们用一些(标签-值)的配对来描述这个资源。例如
<mydomain: site-owner>David Billington</mydomain: site-owner>
  1. 当(标签-值)中的值是一个资源时,用一个空的XML元素+rdf:resource标签来表示。例如
<rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque">  <cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" /></rdf:Description>
  1. rdf:type用来表示父类子类的关系
<rdf:Description rdf:about="cs15213">  <rdf:type rdf:resource="uni:course">  <uni:courseName>Computer System</uni:courseName></rdf:Description>

rdf容器

值有可能不是一个,而是一系列。比如,一堂课的授课教师可能是很多个。这时,他们的可以用容器表示。
1. rdf: Bag 无需容器
2. rdf: Seq 有序容器
3. rdf: Alt 多选一

一个例子:

<?xml version="1.0"?><rdf:RDFxmlns: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和RDFS的公理语义

四大常量及其关系

  • class
  • resource
  • property
  • literal

    1. 这个class是所有具体的class的个父类。比如动物类,植物类都是class的子类。同样的,这四大常量也都是class的子类。
    2. 而一切所有皆资源(resource):所有类(class)都是资源,所有属性(property)都是资源,所有literal都是资源。

三元组的其他两种表示

属性是一个类的两种表示方法:
1. PropVal(type, Property, Class)
2. Type(Property, Class)

一些重要词汇的解释

  • rdf:type
    用来表示主语是谓语的一个实例,主语是一个资源,谓语是一个类
    例如:Type(村上春树, 作家)

  • rdfs:subClassOf
    用来表示主语是谓语的子类,主语和谓语都是一个类
    例如:subClassOf(猫, 动物)
    推理规则:如果A是B的子类,那么所有A的对象一定是B的对象。也就是猫是动物,那么波斯猫,中华田园猫都是动物。

  • rdfs:subPropertyOf
    用来表示主语是谓语的子属性,主语和谓语都是属性
    例如:subPropertyOf(在清华大学当教授,在清华大学工作)
    推理规则:如果A是B的子属性,那么两个满足属性A的对象一定满足属性B。也就是小明在清华大学当教授,那么小明一定在清华大学工作。

  • rdfs:domain
    用来表示属性的定义域
    例如domain(教课,老师),就是在教课这个属性里,主语一定是老师。

  • rdfs:range
    用来表示值域
    例如range(教课, 课程),就是在教课这个属性里,谓语一定是课程。