2.8 RDF和RDFS的一个直接推理系统
如前所述,在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模式中的值域定义不是用来约束一个属性的值域,而是推导值域的成员关系。
规则闭集的总数不超过几十个,并且无需经验丰富的定理证明技术来高效实现。