大多数推理引擎都支持SWRL,允许用户添加自己的推理规则。但是,在我的上下文中,这些用户规则可能需要在规则的结果方面推断空白节点。
耶拿makeTemp
提供了一个内置方法来完成这项工作,请参阅此处的详细信息。
这是一个例子:
[r1: (?e1 st:runningTask st:gic_eth0), makeTemp(?p)
->
(?p rdf:type st:dataFromEthernet2IP) ]
我的问题是:
SWRL 是否支持在规则的结果端进行空白节点推理?SWRL w3c没有提到这种特殊情况。
SWRL 规则中的变量采用 OWL 个体和 RDF 文本的值。 空白节点不能是RDF文字,尽管空白节点可以是未命名的OWL个体。 (我不确定SWRL是否会与未具名但已声明的个人合作; 它不适用于未声明的个人(例如,可以推断其存在但实际上没有声明表示的个人)。 在任何情况下,SWRL 变量都不会绑定到任何任意空白节点。
这里的重要见解是耶拿规则适用于 RDF,RDF 具有 URI 节点、空白节点和文字的概念。 SWRL规则适用于OWL结构。 你实际上不需要RDF来进行OWL推理,你可以在没有任何底层RDF表示的情况下进行SWRL推理。 因此,如果您使用的是 SWRL,则不必考虑某些内容是否为空白节点; OWL 没有空白节点; 空白节点是一种 RDF 构造。