RDF第一印象
RDF是Resource Description Framework的缩写,叫做资源描述语言。它的实质是一系列的statements,也就是“主体-谓词-客体”三元组(object-attribute-value)。RDF所做的,是刻画和传输一个数据模型,让机器也理解我们想要表达的意思。
让机器理解语义的方法是,我们规定一些特定词汇,用这些词汇来表达特定的语义。这个词汇表就是RDF Schema。可以看出,RDF Schema与RDF,是不能和XML Schema和XML进行类比的。
为了更加深刻的了解RDF,RDFS,OWL的概念,区别;我们在这里先翻译一段stackoverflow上的解释:
RDF是一个概念
这里的RDF就是我们用三元组描述事物的方式RDF也是一个词典的名字
词典中有很多词汇,比如- rdf: resource, rdf:description等等,我们在下面会详细介绍每个词语怎么用,这些词汇让我们更加方便的对事物进行建模。词汇的具体含义参见:https://www.w3.org/1999/02/22-rdf-syntax-nsRDFS是另外一个词典的名字
这个词典中的词汇主要帮助你描述类的关系。词汇的具体含义参见:https://www.w3.org/2000/01/rdf-schema#OWL是一个更强大的词典的名字
让你创建更加复杂的模型
RDF的基本概念
概念
statements = 对象(资源) + 属性(特殊的资源) + 值(资源或者字符串)
其中:
1. 资源:打算谈论的事物。每个资源都有一个唯一的URI(通用资源标识符)来定位。
2. 属性:一种特殊的资源(所以也有对应的URI),来描述资源之间的关系。
表示方法
- 三元组
(http://www.cit.gu.edu.au/_db, http://www.mydomain.org/siteowner, #David Billington)
- 有向图
- 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主要元素
- rdf:Description
rdf:Description 元素可通过 about 属性新定义一个资源。例如
<rdf: Description rdf: about="http://www.cit.gu.edu.au/~db">
- 属性元素
在标识完这个资源之后,我们用一些(标签-值)的配对来描述这个资源。例如
<mydomain: site-owner>David Billington</mydomain: site-owner>
- 当(标签-值)中的值是一个资源时,用一个空的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>
- 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: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和RDFS的公理语义
四大常量及其关系
- class
- resource
- property
literal
- 这个class是所有具体的class的个父类。比如动物类,植物类都是class的子类。同样的,这四大常量也都是class的子类。
- 而一切所有皆资源(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(教课, 课程),就是在教课这个属性里,谓语一定是课程。