链接的超级属性

SuperProperty Of Chaining

假设给定以下两个关系:
a(x,y)
b(y,z)
我们可以得出:
c(x,z)
那么这可以通过为 c 属性 添加一个 SuperProperty Of (Chain) 来在 Protégé 中明确表达,如下所示:
a o b SubPropertyOf c

说到这里,假设我们只知道:
a(x,y)
c(x,z)
我们如何明确表达我们因此也知道:
b(y,z)
这将再次与 (Chain) 的 SuperProperty 一起使用,但对于 b 属性?

我首先想到尝试:
a o inverse(c) SubPropertyOf b

这位门徒不喜欢,说有个圈子。现在我只是很困惑。

知道a和c并不必然会得到b。这可以很容易地从经典的例子开始,叔叔的定义:

:hasUncle
  rdf:type owl:ObjectProperty ;
  owl:propertyChainAxiom (
      :hasParent
      :hasBrother
    ) .

那么如果 :David :hasParent :Mary:Mary :hasBrother :John,DL 推理器确实会推断出 :David :hasUncle :John。但是,如果我们断言 :David :hasUncle :John:David :hasParent :Mary,则不足以推断出 :Mary :hasBrother :John。事实上,约翰可以是玛丽的另一个 parent 的兄弟。

请注意,定义语句表明 属性 链是 :hasUncle 的子属性,而不等同于 属性。因此,即使您断言 :hasParent 是函数式的,推理者仍然不会从 ac 中推断出 b 。但是,OWL2 不允许 object 属性的等效组合。

属性 链应小心使用。例如,在 S1 º S2 º S3 º ... º Sn ⊑ R 中,R 只能位于表达式左侧的第一个或最后一个位置。否则无法判定。这是对常规 RBoxes 的限制之一。并且 属性 链,或更正式的 "General Role Inclusion" 只能在应用于常规 RBoxes 时才可确定。

b(y,z) 的正确表达式是 inverse(a) o c SubPropertyOf b,因为你想表达从 yz 的 属性 路径对应于b。如果你只有这个公理,这应该会给你必要的推论。但是,您不能将它与第一个公理 a o b SubPropertyOf c 一起使用。在这种情况下,您 'define' c 通过 b 在具有直接属性的公理中,而 b 通过 c 在具有逆 属性 的公理中.所以你必须知道c才能定义c。这种循环在 OWL 2 DL 中是不允许的,这就是 Protege 告诉你循环定义的原因。总而言之,你只能拥有这些公理之一,但不能同时拥有这两个公理。