RDF入门(二)
RDF抽象语法
基于图的数据模型
抽象语法的核心数据结构为一系列三元组,每个三元组都包含一个subject,一个predicate和一个object。三元组的集合被称为RDF图,且RDF图为有向图。
RDF图中有三类节点:IRIs,Literals和空节点。
资源和语句
任何IRI或Literal都表示某种东西,它们被称为资源。由IRI表示的资源称为其引用值,由Literal表示的资源称为其字面值,且Literal有数据类型定义。
RDF三元组表示其subject和object之间存在predicate表示的某种关系。RDF三元组对应的语句称为RDF语句。predicate本身是一个IRI,且表示一个属性,即一个可以被视为二进制关系的资源。
空节点不表示资源。涉及空节点的语句表示具有给定关系的东西存在,却没有显式命名它。
RDF词汇表与IRI命名空间
RDF词汇表是用于RDF图的IRI集合,通常以被称为IRI命名空间的公共子串开头。而某些IRI命名空间通过约定与某些prefix相关联。
RDF图
RDF图是一系列RDF三元组。
三元组
RDF三元组包含以下三个部分:
- subject,它是一个IRI或者空节点
- predicate,它是一个IRI
- object,它是一个IRI,Literal或者空节点
RDF图中的节点集是subject和object的集合,predicate的IRI也可能作为同一图中的节点出现。
IRI
RDF图中的IRI是一个Unicode字符串。RDF抽象语法中的IRI必须是绝对的(即绝对路径),且可能包含一个片段标识符。
IRI等价:当且仅当两个IRI的简单字符串比较相等时,两个IRI等价。
Literals
Literals用于表示字符串、数字和日期等值。
RDF图中的Literal由2或3个元素组成:
- 词汇形式,表示为Unicode字符串
- 数据类型IRI,确定Literal如何映射到文本值。
- 当且仅当数据类型为langString,此时会添加一个语言标签。
某些具体语法可能支持只含词汇形式的Literal,也有的具体语法不含数据类型IRI部分,因为它的数据类型总是langString。
与Literal关联的字面值有以下特点:
-
如果Literal是一个有语言标记的字符串,则文本值是按词汇形式和语言标记顺序组成的pair。
-
如果数据类型IRI能够被识别,假设d为数据类型IRI的引用。
- 如果Literal的词汇形式在d的词汇空间中,那么文本值是将d的lexcial-to-value映射应用到词汇形式的结果。
- 否则,Literal类型错误,没有值能与其相关联。**这会产生语义不一致,但不是语法错误。**在实现中需注意。
-
如果数据类型IRI不能被识别,则文本值不由该规范定义。
Literal等价:当且仅当Literal的三个部分分别逐字符相等,两个Literal等价。
空节点
空节点与IRI、Literals没有交集,RDF不引用任何空节点的内部结构。
IRI替换空节点
空节点在RDF抽象语法中没有标识符,在需要更强的识别的情况下,系统可以用IRI替换RDF图中的部分或全部空节点。这样的系统应该为每个被替换的空节点创建一个新的、全局唯一的IRI。这个转换不会改变RDF图的意义,但前提是不在别的地方使用空节点的IRI。
图的比较
两个RDF图G和G’同构当且仅当G和G’之间存在双射M,满足:
- M将空节点映射到空节点。
- M将Literal节点映射到Literal节点。
- M将IRI节点映射到IRI节点。
- G中存在三元组(s, p, o)当且仅当G’中存在三元组(M(s), p, M(o))。
RDF数据集
RDF数据集是RDF图的集合,包括以下部分:
- 一个默认图(RDF图),该图没有名称且可能为空。
- 零或多个命名图,每个命名图都由图的名称和一个RDF图组成且图的名称唯一。
空白节点可以在RDF图中共享。
RDF数据集比较
两个RDF数据集同构当且仅当节点、三元组和图之间存在双射M,满足:
- M将空节点映射到空节点。
- M是URLs和Literals的身份映射。
- 对每个三元组(s, p, o)而言,M(s, p, o)=(M(s), M§, M(o))。
- 对每张图而言,G={t1, t2, …, tn},M(G)={M(t1), M(t2), …, M(tn)}。
- DG2=M(DG1)
- <n, G>在NG1中当且仅当<M(n), M(G)>在NG2中。
数据类型
数据类型与RDF Literals一同表示字符串、数字和日期等。
数据类型由词汇空间、值空间和词汇到值的映射组成,并由一个或多个IRI表示。词汇空间是一组Unicode字符串。
一个数据类型的词汇到值的映射是一组pair,其第一个元素属于该词汇空间,第二个元素属于该数据类型的值空间。该映射可以看做是从词汇空间到值空间的一个函数。
使用 xsd:boolean
数据类型举例:
XML架构内置数据类型
下表列出的XML架构内置数据类型是与RDF相兼容的xsd类型:
不与RDF相兼容的类型不予列出。
段标识符
RDF使用可能包含段标识符的IRI作为资源标识符。段标识符的语义为:它们标识辅助资源,通常为主资源的视图、定义或描述的一部分。
例如,在承载RDF表示的主资源 <foo>
中,由段标识符 bar
标识的辅助资源是由完整的IRI <foo#bar>
表示的资源。
广义RDF三元组、图和数据集
广义的RDF三元组是含有subject、predicate和object的三元组,其中每个元素都可能是IRI、空节点或Literal。
广义RDF图是广义RDF三元组的集合。
广义RDF数据集包括广义RDF图以及0或多个将IRI、空节点和Literal关联起来的pair。
广义RDF三元组、图和数据集与规范RDF三元组、图和数据集不一样的地方仅在于IRI、空节点和Literal允许出现在任何位置,即包括subject、predicate、object或图名中。
结语
RDF抽象语法这本读物中主要介绍了RDF图、数据类型等内容,并且给出了一些定义,能够让读者对RDF基础有更加深刻的理解。