本节书摘来自华章出版社《语义网基础教程(原书第3版)》一 书中的第2章,第2.7节,作者:(希)grigoris antoniou(荷)paul groth(荷)frank van harmelen(荷)rinke hoekstra ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
本节中,我们形式化定义rdf和rdf模式的建模原语的含义。因而,可以获得rdf和rdfs的语义。
我们使用的形式语言是谓词逻辑(predicate logic),它作为所有(符号)知识表示的基础被广泛接受。在形式化过程中使用的公式被称为公理(axiom)。
通过使用形式语言(如逻辑形式语言)来描述rdf和rdfs的语义,使得语义没有二义性并且机器可存取。另外,我们通过自动推理机操纵逻辑公式的能力提供了对推理的支持。
rdf和rdf模式中的所有语言原语被表示成常量:resource、class、property、subclassof,等等。一些预先定义的谓词被用作表达这些常量之间联系的基础。
使用链表的一个辅助理论,它包括下面的函数符号
nil(空链表)
cons(x, l)(添加一个元素到链表的头部)
first(l)(返回第一个元素)
rest(l)(返回链表的剩余部分)
和谓词符号
item(x, l)(取值为真,当且仅当一个元素出现在链表中)
list(l)(取值为真,当且仅当l是一个链表)
链表在rdf中被用于表达容器。它也在更丰富的本体语言中用于表达某些结构的含义(例如基数约束)。
大多数公理提供了类型信息。例如

表示subclassof是一个属性。我们使用带等式的谓词逻辑(predicate logic with equality)。变量名以?开头。所有公理都隐式地全称量化。
下面我们展示rdf和rdf模式中大多数元素的定义。完整语言的公理化语义可以在一个在线文档中查看,参见建议阅读中的文档fikes和mcguinness (2001)。
基本谓词包括:
propval(p, r, v),一个包含3个参数的谓词,它被用于表达一个包含资源r、属性p和取值v的rdf声明。
type(r, t),是propval(type, r, t)的缩写,它指出一个资源r的类型是t。
一个rdf声明(三元租)(r, p, v)表示为propval(p, r, v)。
类
在我们的语言中,我们有常量class、resource、property和literal。所有的类都是class的实例,即它们的类型是class:
resource是最一般的类:每个对象都是一个资源。因此,每个类和每个属性都是一个资源:
最后,一个rdf声明中的谓语必须是一个属性:
类型属性
type是一个属性:
注意,它和propval(type, type, property)等价:type的类型是property。type可以用于资源,并且取值是一个类:
辅助的funcprop属性
一个函数型属性是一个函数:它将一个资源关联到最多一个值。函数型属性不是一个rdf的概念,但是它用于其他原语的公理化。
常量funcprop表示所有函数型属性的类。p是一个函数型属性,当且仅当它是一个属性,并且不存在x、y1和y2,满足p(x, y1),p(x, y2),且y1≠y2。
具体化声明
常量statement表示所有具体化声明的类。所有具体化声明都是资源,同时statement是class的一个实例:
一个具体化声明可以分解成一个rdf三元组的3个部分:
subject、predicate和object是函数型属性。也就是说,每个声明只能有一个主语、一个谓语和一个宾语:
它们的类型信息是
最后一个公理的含义是,如果object作为属性出现在一个rdf声明中,那么它必须应用到一个具体化声明上,并且取值是一个资源或者一个文字。
容器
所有的容器都是资源:
容器是链表:
容器可以是包、序列或者选择:
包和序列是不相交的:
对于每个自然数n>0,存在一个选择器_n,它选择一个容器中的第n个元素。它是一个函数型属性
并且只用于容器:
子类和子属性
subclassof是一个属性:
如果一个类c是另一个类c'的子类,那么c的所有实例也都是c'的实例:
对于subpropertyof也类似。p是p'的一个子属性,仅当有p(x, y)时必有p'(x, y):
约束
每个约束资源是一个资源:
约束属性是属性,也是约束资源:
domain和range是约束属性:
domain和range分别定义了一个属性的定义域和值域。回想一个属性p的定义域是p可以应用在的一个对象集合。如果p的定义域是d,那么对于任意p(x, y),有x∈d。
一个属性p的值域是p可以取的值的集合。如果p的值域是r,那么对于任意p(x, y),有y∈r。
从上述公式可以推导出:
因此,我们已经形式化定义了rdf和rdfs的语义。装配这种知识的软件能够产生有趣的结论。例如,给定rents的值域是residentialunit,而residentialunit是unit的一个子类,有rents(jeffmeyer, baronwayapartment),那么agent可以使用谓词逻辑语义或任何一个谓词逻辑证明系统来自动地演绎出unit(baronwayapartment)。