链接的超级属性
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
是函数式的,推理者仍然不会从 a 和 c 中推断出 b 。但是,OWL2 不允许 object 属性的等效组合。
属性 链应小心使用。例如,在 S1 º S2 º S3 º ... º Sn ⊑ R 中,R 只能位于表达式左侧的第一个或最后一个位置。否则无法判定。这是对常规 RBoxes 的限制之一。并且 属性 链,或更正式的 "General Role Inclusion" 只能在应用于常规 RBoxes 时才可确定。
b(y,z)
的正确表达式是 inverse(a) o c SubPropertyOf b
,因为你想表达从 y
到 z
的 属性 路径对应于b
。如果你只有这个公理,这应该会给你必要的推论。但是,您不能将它与第一个公理 a o b SubPropertyOf c
一起使用。在这种情况下,您 'define' c
通过 b
在具有直接属性的公理中,而 b
通过 c
在具有逆 属性 的公理中.所以你必须知道c
才能定义c
。这种循环在 OWL 2 DL 中是不允许的,这就是 Protege 告诉你循环定义的原因。总而言之,你只能拥有这些公理之一,但不能同时拥有这两个公理。
假设给定以下两个关系:
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
是函数式的,推理者仍然不会从 a 和 c 中推断出 b 。但是,OWL2 不允许 object 属性的等效组合。
属性 链应小心使用。例如,在 S1 º S2 º S3 º ... º Sn ⊑ R 中,R 只能位于表达式左侧的第一个或最后一个位置。否则无法判定。这是对常规 RBoxes 的限制之一。并且 属性 链,或更正式的 "General Role Inclusion" 只能在应用于常规 RBoxes 时才可确定。
b(y,z)
的正确表达式是 inverse(a) o c SubPropertyOf b
,因为你想表达从 y
到 z
的 属性 路径对应于b
。如果你只有这个公理,这应该会给你必要的推论。但是,您不能将它与第一个公理 a o b SubPropertyOf c
一起使用。在这种情况下,您 'define' c
通过 b
在具有直接属性的公理中,而 b
通过 c
在具有逆 属性 的公理中.所以你必须知道c
才能定义c
。这种循环在 OWL 2 DL 中是不允许的,这就是 Protege 告诉你循环定义的原因。总而言之,你只能拥有这些公理之一,但不能同时拥有这两个公理。