« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
暂无公告... |
Blog信息 |
blog名称: 日志总数:8 评论数量:19 留言数量:0 访问次数:69865 建立时间:2006年8月1日 |

| |
[Semantic Web]Inferring and Discovering Relationships using RDF Schemas(1) 读书笔记
爱睡觉的猫 发表于 2006/8/8 9:08:18 |
第一部分:RDFS概述
1. RDFS的目的是什么?
RDFS的目的在于提供一个XML的词汇表,用于定义类或子类之间的关系以及类和属性之间的关系。这样做的好处在于:提高数据的推理能力和搜索能力。
RDFS主要用于创建某个领域的概念分类。
2. RDFS可以提供什么样的推理?
举个例子:
推理可以得出:- Yangtze is a Stream
- Yangtze is an NaturallyOcurringWaterSource
- http://www.china.org/geography#EastChinaSea is a BodyOfWater
3.RDFS如何提高搜索数据的能力
在上例中我们如果这样提问:"Show me all documents that contain info about Streams"
我们将得到这样的答案:
- Yangtze is a Stream, so this document is relevant to the query.
第二部分:RDFS的基本语法
rdfs:class
<rdfs:Class rdf:ID="River">
<rdfs:subClassOf rdf:resource="#Stream"/>
</rdfs:Class>
用于定义一个类,rdf:ID用于定义一个类的名字
下面这两种定义类的方法是相等的:
<rdfs:Class rdf:ID="River">
<rdfs:subClassOf rdf:resource="#Stream"/>
</rdfs:Class>和
<rdf:Description rdf:ID="River">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
<rdfs:subClassOf rdf:resource="#Stream"/>
</rdf:Description>
2. rdfs:subClassOf
可以有零个/一个/多个rdfs:subClassOf属性
零个rdfs:subClassOf属性隐式地说明了这个类是rdf:Resource的子类
一个rdfs:subClassOf属性说明了这个类是另外一个类的子类
多个rdfs:subClassOf属性说明了这个类是多个类的子类,既是多个类的交集。
比如:
<rdfs:Class rdf:ID="River">
<rdfs:subClassOf rdf:resource="#Stream"/>
<rdfs:subClassOf rdf:resource="http://www.containers.org#SedimentContainer"/>
</rdfs:Class>
另外rdfs:subClassOf具有传递依赖
3. rdf:Property
<?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.geodesy.org/water/naturally-occurring">
<rdf:Property rdf:ID="emptiesInto">
<rdfs:domain rdf:resource="#River"/>
<rdfs:range rdf:resource="#BodyOfWater"/>
</rdf:Property>
...
</rdf:RDF>
注意rdfs:domain和rdfs:range的用法:rdfs:domain是值域,rdfs:range是作用域
以下两种表达方法是相等的
<rdf:Property rdf:ID="emptiesInto">
<rdfs:domain rdf:resource="#River"/>
<rdfs:range rdf:resource="#BodyOfWater"/>
</rdf:Property>和
<rdf:Description rdf:ID="emptiesInto">
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
<rdfs:domain rdf:resource="#River"/>
<rdfs:range rdf:resource="#BodyOfWater"/>
</rdf:Description>
有一点要注意的是:
Class的NS是RDF,而Property的NS是RDFS
4. rdfs:range
表示这个属性可能包含的类型的值。
跟subclassof类似,可以包括零个/一个/多个rdfs:range属性
零个:如果一个属性没有定以rdfs:range说明这个属性的值的类型未确定。
一个:说明这个属性的值的类型唯一
多个:说明这个属性的值的类型有多种。比如:
<rdf:Property rdf:ID="emptiesInto">
<rdfs:domain rdf:resource="#River"/>
<rdfs:range rdf:resource="#BodyOfWater"/>
<rdfs:range rdf:resource="http://www.geodesy.org/coast#CoastalWater"/>
</rdf:Property>
5. rdfs:domain
表示可能使用这个属性的类。
跟rdfs:range类似,不再重复
<rdf:Property rdf:ID="emptiesInto">
<rdfs:domain rdf:resource="#River"/>
<rdfs:domain rdf:resource="http://www.containers.org#Vessel"/>
<rdfs:range rdf:resource="#BodyOfWater"/>
</rdf:Property>
在这里我们要注意,类和属性是分别定义的,而不是象在OO里面那样,定义了类的同时就定义了属性。也就是说在RDFS里面,我们定义了类,然后定义属性,并将属性与类关联起来。这样做的好处是,任何人任何时刻都可以定义类的属性。 |
|
|