本节书摘来自华章出版社《语义网基础教程(原书第3版)》一 书中的第2章,第2.8节,作者:(希)grigoris antoniou(荷)paul groth(荷)frank van harmelen(荷)rinke hoekstra ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
如前所述,在2.7节中详细介绍的公理化语义可以用作rdf和rdf模式的自动化推理。但是,它需要一阶逻辑证明系统来实现。这是一个很重的需求,并且当涉及数以百万计(亿计)的声明时很难扩展(例如,数以百万计的type(?r, ?c)形式的声明)。
出于这个原因,rdf也被赋予了一个基于rdf三元组的语义(以及针对这种语义的完备的推导系统),取代基于一阶逻辑来重述rdf,正如在2.7节中介绍过的公理化语义。
推导系统包含如下形式的规则:
if e包含某些三元组
then添加一些额外的三元组到e
(其中e是任意一个rdf三元组的集合)。
这里不再重复所有的推导规则(这些规则可以在官方的rdf文档中找到),在这里给出几个基本的例子:
if e包含三元组(?x, ?p, ?y)
then e也包含三元组(?p, rdf:type, rdf:property)
这表明任何一个用于一个三元组的属性位置的资源?p可以推导出它是rdf:property类的一个成员。
一个或许更加有趣的例子是下面的规则:
if e包含三元组(?u, rdfs:subclassof, ?v)和(?v, rdfs:subclassof, ?w)
then e也包含三元组(?u, rdfs:subclassof, ?w)
这体现了子类关系的传递性。
相关的规则包括:
if e包含三元组(?x, rdf:type, ?u)和(?u, rdfs:subclassof, ?v)
then e也包含三元组(?x, rdf:type, ?v)
这定义了rdfs:subclassof含义的本质。
最后一个例子常令第一次了解rdf模式的人感到惊讶:
if e包括三元组(?x, ?p, ?y)和(?p, rdfs:range, ?u)
then e也包含三元组(?y, rdf:type, ?u)
这个例子说明任何一个资源?y作为一个属性?p的值出现时,它可以被推导出是?p的值域的一个成员。这说明rdf模式中的值域定义不是用来约束一个属性的值域,而是推导值域的成员关系。
规则闭集的总数不超过几十个,并且无需经验丰富的定理证明技术来高效实现。