目前WEB模型主要支持对文本内容的浏览和搜索。语义网需要新的模型,XML模型可用于数据的表示和交换,但缺乏描述语义信息的能力。而RDF是一个网络资源对象和其间关系的数据模型,拥有简单的语义,且可通过XML编码。RDF
Schema是一个用来描述RDF资源的属性和类型的词汇集描述语言,并提供了关于这些属性和类型的语义。
3.1 RDF概述
1、RDF的含义(Resource
Description Framework)
RDF(Resource
Description
Framework),资源描述框架,主要含义:a、资源:包括一切在Web上被命名、具有URI引用的东西;b、描述:对资源特性的一个声明,包括资源本身的属性和资源之间的关系;c、框架:与被描述资源及其领域无关的能用模型。
RDF用形如“主体-谓词-客体”的三元组来描述Web上的各种资源和它们之间的关系,并提供一种基本的结构在Web上对这些元数据进行编码、交换和重用。通过两个工具的支持:a、URI:用来区分和标识一个声明中的主体、谓词和客体的机器可处理的标识符系统;b、XML:用以表示以这些声明并这些声明可在机器间交流的机器可处理的语言。
2、RDF与XML
XML用标记来描述文档中的文本内容,却没有提供一种机制来描述标记本身。RDF则提供了这种能力。
XML的目的在于提供一个易用的语法对计算机交换的一切数据编码,并用XML
Schema来表示数据结构,但没有提供任何关于数据的解释;而RDF则是一个描述元数据的模型,并给出了数据的一些解释,RDFS更扩展了这个功能。RDF使用的是“对象-特性”结构提供了固有的语义单元。
1、基本概念
RDF设计思想:被描述的资源具有一些特性,而这些特性各有其值;特性值既可以是文字也可以是其他资源;如果特性值是资源,这个特性可以看作是这两个资源间的关系;对资源的描述就是对资源的特性及值进行声明。由此RDF数据模型有四种基本对象类型:a、资源:有WEB上以URI标识的所有事物;b、文字:字符串或数据类型的值,RDF没有自己的数据类型定义机制,而是可以使用如XML
Schema中定义的数据类型;c、特性:用来描述资源的特征、属性或关系,特性是资源的一个子集,因此一个特性也可以用另一个特性描述,甚至被自身描述;d、声明:一个特定的资源加上特性及特性值就是一个RDF声明,声明都表示为三元组(主体-谓词-客体,也可以是资源-特性-特性值,区分资源部分称为主体、区分声明对象主体各个不同特性的部分为谓词、区分各个特性的值的部分为客体)。
2、RDF资源和词汇集
RDF使用URI引用表示资源,通常使用名称空间和XML限定名来简写完整的URI。一般RDF称一个URI引用的集合为词汇集,一个词汇集中的URI引用通常使用公用的URI前缀。但不能因为URI引用有一个公用的前缀而认定他们之间有关系,也不能因为有不同的前缀就说不属于一个词汇集。且RDF也不认为每个命名空间都能确定一个可获取的信息。实际是,RDF数据是通过综合多个不同的RDF文档提供对同一个事物的多项数据。
3、RDF图
RDF模型的基本结构是声明三元组的集合,可用具有节点和有向边的图来表示,即RDF图。每个三元组就是“节点-边-节点”的连接,其中节点是主体和客体,资源用椭圆节点表示,文字用方形节点来表示,边是谓词,方向是主体指向客体。(特性也可以是资源)
4、结构化特性与空节点
包含复杂信息结构的特性称为结构化特性。对此,RDF通过将该特性值看成一个主体,将复杂的结构化特性分解为多个RDF特性来进行描述。
使用空节点表示匿名资源,三元组中使用“_:”。空节点只能出现在三元组的主体和客体上,不能出现在谓词。
包含单位或是类似附加信息的特性值,称为结构化值。可以用一个单独的资源(通常是空节点)来表示结构化值,且作为原声明的客体。这个资源有个特性表示数值,即叫主值,RDF提供预定义的特性rdf:value来描述。如:_:ageTOM
rdf:value"26"^^xsd:decimal。
3.3 RDF/XML语法
1、基本语法
基本特征:a、所有的RDF语句都必须在一个rdf:RDF元素中;b、每个RDF声明用一个rdf:Description元素表示,其中用rdf:about属性的值指明声明主体的URI引用;c、声明的谓词作为rdf:Description的子元素出现,而客体则是该子元素的属性或内容;d、rdf:nodeID属性是专门用来表示空节点的,空节点被指定空白结点标识符后可以作为主体或客体使用。如果空节点替换成有名资源,则使用rdf:resource属性来说明是一个资源,而URI引用就是这个属性的属性值(此处不可用限定名替代URI引用)。如果客体是一个文字,相应也可以用rdf:literal属性来说明。
2、简写语法
简写原则:a、同一个主体的多个声明可合并为一个rdf:Description元素,多个谓词转化为这个元素的多个子元素,客体则成为对应谓词元素的属性或内容;b、如果一个声明的主体是另一个声明的客体,则前者可以嵌套至后者的客体位置(删除对应谓词的元素的rdf:resource属性或rdf:nodeID属性,并添加的rdf:Description元素为其子元素);c、如果空节点的rdf:Description元素被嵌套,且再没有其他地方会用到这空节点,则其对应的rdf:Description元素标记也可删除,但要为特性元素添加属性rdf:parseType="Resource"表示特性值是一个空节点。如下例:
<rdf:Description
rdf:about="URI引用">
<dc:creator>
<ex:name>TOM</ex:name>
<ex:email>TOM@email.org</ex:email>
</dc:creator>
</rdf:Description>
一种特别的简写,RDF定义了一种特殊的rdf:type特性表示两个资源之间的类性关系,如所有的RDF特性都应有值为rdf:Property的rdf:type特性。如果rdf:description元素包含一个rdf:type特性,这个特性值的资源类型可以用来替代rdf:description元素。可以作为rdf:type特性值的资源称为类。
属性值的URI引用必须书写完整,不能用限定名形式,很是冗长,所以RDF/XML语法提供了另一种简写,XML实体声明的本质是将一个XML实体名与一个字符串相关联,如果实体名在XML文档中被引用,将用相应的字符串来替换该引用。把实体xsd定义为一个代表对应于XML
Schema数据类型的命名空间字符串,这样在属性值字符串中即可使用子串“&xsd;”代替。
3、指派URI引用
在RDF/XML中,资源的标识是通过使用一个rdf:about属性并用资源的URI引用作为属性值实现的。如:
<rdf:Description
rdf:ID="person1024">
<ex:name>John</ex:name>
</rdf:Description>
在这个例子描述了一个资源并为其指派了一个URI引用。但使用了rdf:ID,其作用于指定一个片断标识符生成一个资源的完整URI引用,这个片断标识符在rdf:ID属性值中给出。在同一个文档中,可以通过"#person1024"标识符引用此资源。
4、类型文字
在RDF中用类型文字提供那些具有数据类型的信息。RDF不定义自己的内置数据类型,而是为一个已给定的文字提供一种简单的方法来指出应该用什么样的数据类型来说明它。在数据文字中使用的数据类型在RDF外部定义(如XML
Schema),并用URI引用来确定。三元组表示法中的基本形式为:"...[文字内容]..."^^....[数据类型的URI引用]...。同时,在RDF/XML中,表示类型文字需为包含这文字的元素增加一个rdf:datatype属性,并通过这属性指定数据类型的URI引用。如三元组表示的:_:ageTom,rdf:value,"26"^^xsd:decimal,如果用XML编码为:
<rdf:Description
rdf:nodeID="ageTOM">
<rdf:value
rdf:datatype="&xsd;decimal>26</rsd:value>
</rdf:Description>
3.4 RDF特殊表达
1、容器:RDF定义有三种容器来表示一组资源或文字,即a、rdf:bag为包,表示一组资源或文字的无序列表;b、rdf:seq为序列,是一组资源或文字的有序列表;c、rdf:alt为替代,是一组可选择的资源或文字。
其中要注意的是,一个关于容器的声明不简单等价于多个关于其中每个成员的同样声明,如委员会通过方案,不代表每个委员都通过。但可以在rdf:Description元素中用rdf:aboutEach代替rdf:about,表示每个成员。
2、集合
RDF容器无法说明是否是容器所有的成员,也就是另外声明是不是还有成员。RDF集合通过链表的形式提供了描述一个封闭的资源集合的手段。用rdf:first给出对应的资源,rdf:rest指出其它节点,rdf:nil表示结束。
3、声明具体化
如果对一个声明作出描述,如说明这个声明的作者、时间等,RDF可以作出关于声明的声明,要引用一个声明,就要把它当成资源对待。也就是把一个声明和一个代表这个声明的特定资源联系起来的过程就是具体化。原始声明被具体化为一个新的资源,就是具体化声明。这个资源具有四个特性:主体rdf:subject、谓词rdf:predicate、客体rdf:object、类型rdf:type,也就是具体化四元组。
3.5 RDF Schema
RDF Schema允许用户任意创造自己的词汇集,但规定其中词汇的含义和用法需要用到RDF Schema。
1、简介
RDF只定义用于描述资源的框架,并没有定义用哪些词汇来描述资源。RDFS就是一种RDF词汇集描述语言,它定义如何用RDF来描述词汇集,并提供一个用来描述RDF词汇集的词汇集。
RDF中的资源可以有类型(通过资源的rdf:type特性定义资源所属的类),而类也是资源。RDF中的特性也是资源的一个子集。但RDF没有提供任何机制来说明类的特征、类与类之间的关系以及特性与类之间的关系,RDFS要完成的。
RDFS不说明特定词汇如“dc:creator”的含义,而是提供了命名和描述这些特性和定义资源的类的机制。简单来说,RDFS提供了一个应用于RDF模型中的基本类型系统,定义了用来描述类、特性和资源以及它们之间的关系的类和特性。RDFS额外的描述能力是由一系列预告先定义的RDF资源带来的,这些资源就是RDFS核心词汇,用来描述其他RDF资源,定义特定应用的RDF词汇,一般被称为“rdfs”的名称空间中定义,这个名称空间用URI引用“http://www./2000/01/rdf-schema#”标识,用来描述其它资源的特征,如rdfs:domains和rdfs:ranges分别描述定义域和值域。RDFS词汇分为类(大写字母开头)和特性(小写字母开头)。而特性通常描述主体和客体之间存在特定的关系。
2、RDF类
RDF类可以用来表示事物的任何分类,通过RDFS中的资源(rdfs:Class和rdfs:Resource)以及特性(rdf:type和rdfs:subClassOf)来表示。
资源可能是一个或多个类的实例,所有资源都是rdfs:Resource类的实例,类也是资源,且所有类都是rdfs:Class的实例。实例和类之间的关系用rdf:type特性描述,如资源A存在rdf:type特性值为类C,则资源A是类C的实例。
类一般用层次方法组织,如“狗”是“动物”的子类,“动物”是“生物”的子为在,当有资源有rdf:type值“狗”时,也就具有了“动物”“生物”的rdf:type特性值。rdfs:subClassOf特性就是用来表示类之间的这种子类关系。
RDFS设计思想就是视一切为资源,包括实例、类、属性和声明。但RDF文字不是资源,不能拥有rdf:type特性,RDFS规定它们属于rdfs:Literal类,其中有格式的类型文字属于对应的数据类型类,如xsd:integer等。
3、RDF特性
RDF中特性也是资源,所有特性都是rdf:Property类的实例。前面介绍的rdf:type和rdfs:subClassOf同样适用于描述特性与特性类之间的有关系以及特性类之间的子父类有关系。与类相似,特性之间也有层次关系,RDFS用rdfs:subPropertyOf特性来描述。
4、RDF特性约束
例,如果定义一个类“书”,RDFS则是定义“作者”特性的定义域是“书”,值域是“人”,即如果一个声明的谓词是“作者”,则主体是书的实例,客体是人的实例。
RDFS给RDF引入了一个类型系统,可以认为是RDF上的一组本体建模原语,是一种简单的本体语言。RDF用URI来区分词汇,可以避免一个词汇表示多个概念,因为URI是唯一的,如f:address和v:address是不同的名字空间定义,用不同的URI标识,是可以区分的词汇。但不能明确说明这两个词汇表达的是不同的概念,并且当多个URI表示的词汇是同义词时,RDF了无法说明他们表示的是同一概念。
|
|