学习笔记:G. Antoniou, Paul Groth et al. A Semantic Primer,Third Edition.
引言
本部分内容需要对离散数学有一定基础,了解一阶谓词逻辑、谓词公式等基本概念。
我们利用谓词逻辑(predicate logic)来形式化定义RDF和RDFs的建模原语含义,谓词逻辑作为所有(符号)知识表示的基础被广泛接受。在形式化过程中使用的公式称之为公理(axiom)。
方法
RDF和RDFs中的所有语言原语被表示为常量:Resource、Class、Property、subClassOf,等等。一些预定义的谓词被用作表达这些常量之间联系的基础。
下面介绍一个使用链表的辅助理论,链表在RDF中被用于表达容器,包括下面的函数符号:
nil(空链表)
cons(x,l)(添加一个元素到链表头部)
first(l)(返回第一个元素)
reset(l)(返回链表的剩余部分)
和谓词符号:
item(x,l)(取值为真,当且仅当一个元素出现在链表中)
list(l)(取值为真,当且仅当l是个链表)
大多数公理提供了类型信息,如Type(subClassOf, Property)表示subClassOf 是一个属性。变量名以“?”开头,所有公理都隐式地全称量化。
基本谓词
基本谓词包括:
PropVal(P, R, V),表示一个包含资源R、属性P和取值V的RDF声明。
Type(R, T)等价于PropVal(Type, R, T),表示一个资源R的类型是T。用公理化表示即:
Type(?r, ?t)↔PropVal(type, ?r, ?t)
RDF
一个RDF声明(R, P, V)即一个三元组表示为PropVal(P, R, V)。这里注意主语、属性、宾语在声明和公理化表示里的位置差异。
类
前面提到过所有的类都是Class的实例:
Type(Class, Class)
Type(Resource, Class)
Type(Property, Class)
Type(Literal, Class)
其中,Class、Resource、Property、Literal 都是常量。有如下公式:
Type(?p, Property)→Type(?p, Resource),表示每个属性都是资源。
Type(?c, class)→Type(?c, Resource),表示每个类都是资源。
PropVal(?p, ?r, ?v)→Type(?p, Property),表示RDF中声明的谓语必须是一个属性。
类型属性
type 是一个属性:Type(type, Property),等价于PropVal(type, type, property)。
公理化为:Type(?r, ?c)→(Type(?r, Resource)∧Type(?c, Class)),表示指定变量?r的类型是?c,那么?r是一个资源且?c是一个类。
辅助的FuncProp属性
常量FuncProp 是所有函数型属性的类。一个函数型属性是一个函数,它将一个资源关联到最多一个取值。函数型属性不是RDF中的概念,其用于其他原语的公理化。给出定义:
P是一个函数型属性,当且仅当它是一个属性,并且不存在x、y1、y2满足P(x, y1)和P(x, y2),且y1≠y2。公理化为:
Type(?p, FuncProp)↔
(Type(?p, Property)∧∀?r∀?v1∀?v2(PropVal(?p, ?r, ?v1)∧(PropVal(?p, ?r, ?v2)→?v1=?v2))
具体化声明
用常量Statement 表示所有具体化声明的类。由如下公式:
Type(?s, Statement)→Type(?s, Resource),表示具体化声明都是资源。
Type(Statement, Class),表示具体化声明是Class的一个实例。
一个具体化声明可以分解成一个RDF三元组的3个部分:
Type(?st, Statement)→
∃?p∃?r∃?v(PropVal(Predicate, ?st, ?p)∧PropVal(Subject, ?st, ?r)∧PropVal(Object, ?st, ?v))。
其中Subject、Predicate、Object是函数型属性,结合函数型属性的定义我们可以知道,每个声明只能有一个主语、一个谓语、一个宾语。公理化为:
Type(Subject, FuncProp)
Type(Predicate, FuncProp)
Type(Object, FuncProp)
它们的类型信息公理化为:
PropVal(Subject, ?st, ?r)→(Type(?st, Statement)∧Type(?r,Resource)),表示如果一个声明?st的主语是?r,那么?st必然是Statement的一个实例并且?r是一个资源。
PropVal(Predicate, ?st, ?p)→(Type(?st, Statement)∧Type(?p,Property)),表示如果一个声明?st的谓语是?p,那么?st必然是Statement的一个实例并且?p是一个属性。
PropVal(Object, ?st, ?v)→(Type(?st, Statement)∧Type(?v,Resource)∨Type(?v, Literal)),表示如果Object作为属性值出现在一个RDF声明中,那么它必须应用到一个具体化声明上,并且取值是一个资源或者字符串。
容器
所有的容器都是资源:
Type(?c, Container)→Type(?c, Resource)
容器是链表:
Type(?c, Container)→list(?c)
如前文所说,容器是包、序列或者选择:
Type(?c, Container)→(Type(?c, Bag)∨Type(?c, Seq)∨Type(?c, Alt))
包和序列是不相交的:
┐(Type(?x, Bag)∧Type(?x, Seq))
对于每一个自然数n>0,存在一个选择器_n,它选择一个容器中的第n个元素,并且仅用于容器。公理化为:
Type(_n, FuncProp)
PropVal(_n, ?c, ?o)→Type(?c, Container)
RDFs
子类和子属性
subClassOf首先是一个属性,如果一个类C是一个类C’的子类,那么C的所有实例都是C’的实例,公理化为:
Type(subClassOf, Property)
PropVal(subClassOf, ?c, ?c’)→(Type(?c, Class)∧Type(?c’, Class)∧∀?x(Type(?x, ?c)→Type(?x, ?c’)))
subPropertyOf是一个属性,如果P是P’的子属性,仅当P(x, y)时必有P’(x, y),公理化为:
Type(subPropertyOf, Property)
PropVal(subPropertyOf, ?p, ?p’)↔
(Type(?p, Property)∧Type(?p’, property)∧∀?r∀?v(PropVal(?p, ?r ,?v)→PropVal(?p’, ?r, ?v)))
约束
每个约束资源是一个资源:PropVal(subClassOf, ConstraintResource, Resource)
约束属性是属性,同时也是约束资源:
Type(?cp, ConstraintProperty)↔(Type(?cp, ConstraintResource)∧Type(?cp, Property))
domain(定义域)和range(值域)属于约束属性,公理化为:
Type(domain, ConstraintProperty), Type(range, ConstraintProperty)
如果属性P的定义域是D,那么对于任意的P(x, y),有x∈D,公理化为:
PropVal(domain, ?p, ?d)→∀?x∀?y(PropVal(?p, ?x, ?y)→Type(?x, ?d))
如果属性P的值域是R,那么对于任何P(x, y),有y∈R,公理化为:
PropVal(range, ?p, ?r)→∀?x∀?y(PropVal(?p, ?x, ?y)→Type(?y, ?r))
由上述公式可以推导出(下面的公式解释可能比较绕,理解其含义即可):
PropVal(domain, domain, Property),表示定义域这个属性的定义域为属性,因为只有属性才有定义域
PropVal(domain, range, Property),表示值域这个属性的定义域为属性,因为只有属性才有值域
PropVal(range, range, Class),表示值域这个属性的值域是类,因为值域这个属性的取值范围(值域)为一个Class
PropVal(range, domain, Class),表示定义域这个属性的值域是类,因为定义域这个属性的取值范围(值域)为Class
总结
我们知道谓词逻辑被广泛用于知识表示,并用于自动化推理。本文用谓词逻辑形式化地定义了RDF和RDFs语义,并在此基础上给出了相当数量的谓词公式,这些谓词公式可以用作RDF和RDFs的自动化推理。
例如,给定rents的值域是ResidentialUnit,而ResidentialUnit 的超类是Unit,已知条件rents(Mike, BaronWayBuilding),则很容易推理出Type(BaronWayBuilding, Unit)或者表示为Unit(BaronWayBuilding)。
RDF为表示和处理机器可理解的数据提供了重要的基础,它使用基于图的数据模型,核心概念包括:资源、属性、声明和图。一个声明就是一个资源 - 属性 - 取值三元组。*RDF提供三种标准语法Turtle、RDF/XML、RDFa来支持语法层面的互操作性,使用分布式思想,允许递增式地构建知识,并对知识提供共享和复用。RDF一个很重要的特点是领域无关*,RDFs提供了一种描述特定领域的机制,RDF可以看做是一种基本的本体语言。
RDFs命名空间并未完全介绍,感兴趣的读者可以自行查阅官方在线文档,阅读RDFs命名空间,尝试理解其他文中未给出的元素。