为什么 rdfs:subPropertyOf 没有 属性 类型传播?
Why No Property Type Propagation with rdfs:subPropertyOf?
假设我有
:hasParent rdfs:subPropertyOf :hasAncestor .
:hasAncestor rdf:type owl:TransitiveProperty .
在给定出身的情况下,这具有推断所有真正祖先关系的令人满意的结果。但我很惊讶它也没有使 :hasParent
有效传递的负面影响。 p rdfs:subPropertyOf q
不就是p "inherits" q的元属性,包括a owl:TransitiveProperty
吗?
看似不对称,我们从 A rdfs:subClassOf B
和 B :hasFriend C
中看到 A :hasFriend C
也是从 A rdf:type B
开始的。为什么子属性也不会发生这种情况?
Doesn't P rdfs:subPropertyOf Q
mean P
"inherits" Q
's meta-properties,
including a owl:TransitiveProperty
?
一般不会。
P rdfs:subPropertyOf Q
means 即 ∀x∀y(P(x,y) → Q(x,y))
(1)
Q a owl:TransitiveProperty
means 即 ∀x∀y∀z(Q(x,y) ∧ Q(y,z) → Q(x,z))
(2)
不幸的是,(1) 和 (2) 不包含 ∀x∀y∀z(P(x,y) ∧ P(y,z) → P(x,z))
。
你可以找到一个反模型online:
顺便说一句,函数 属性 的子 属性 也是函数。
Stanislav 已经很好地回答了这个问题。我想在这里解决的是评论中提到的想法,即 "inheritance of classes" 与 "inheritance of properties".
不对称
面向对象
(1)在面向对象编程语言中,当classA
继承自classB
时,表示[=所有实例的集合84=] A
是 class B
所有实例集合的子集。此外,由于属性属于特定的 class,这意味着 class A
将具有 class B
的所有属性(即
class A
继承了 class B
) 的所有属性。
(2) 当 class A
具有类型 C
的属性 c
时,它表明(或多或少)存在关联 c
在 classes A
和 C
之间。
OWL/RDFS
(1) 与 OWL/RDFS 的一个很大区别是属性 不 属于 class。当我们说 A rdfs:subClassOf B
时,我们说集合 A
是 B
的子集。它什么也没说。例如,如果我们有
B a rdfs:Class .
B rdfs:label "Label for class B" .
A a rdfs:Class .
A rdfs:subClassOf B .
class A
将 不是 "inherit" class B
的标签。
(2) OWL/RDFS 中的属性在实例之间指定, 而不是 在 class 之间指定。我在我的博客上详细写了关于 this 的内容。当您声明 P rdfs:subProperty R
时,这意味着 P
中的个体对集合是 R
.
中个体对集合的子集
但是功能属性是继承的...
不,他们不是。由于功能属性的语义,它看起来确实如此。如果我们有一个可用的 属性 R
,这意味着 R
的令人满意的赋值可以是 {(a,1), (b,2)}
。也就是说,同一个主题不能链接到 2 个不同的对象。 IE。你不能有 {(a,1), (a,2)}
。
现在,如果您有 P rdfs:subPropertyOf R
,P
是 R
的子集,因此 P
也将起作用。 IE。 if R = {(a,1), (b,2)}
R
的任何子集也将起作用。
假设我有
:hasParent rdfs:subPropertyOf :hasAncestor .
:hasAncestor rdf:type owl:TransitiveProperty .
在给定出身的情况下,这具有推断所有真正祖先关系的令人满意的结果。但我很惊讶它也没有使 :hasParent
有效传递的负面影响。 p rdfs:subPropertyOf q
不就是p "inherits" q的元属性,包括a owl:TransitiveProperty
吗?
看似不对称,我们从 A rdfs:subClassOf B
和 B :hasFriend C
中看到 A :hasFriend C
也是从 A rdf:type B
开始的。为什么子属性也不会发生这种情况?
Doesn't
P rdfs:subPropertyOf Q
meanP
"inherits"Q
's meta-properties,
includinga owl:TransitiveProperty
?
一般不会。
P rdfs:subPropertyOf Q
means 即∀x∀y(P(x,y) → Q(x,y))
(1)Q a owl:TransitiveProperty
means 即∀x∀y∀z(Q(x,y) ∧ Q(y,z) → Q(x,z))
(2)
不幸的是,(1) 和 (2) 不包含 ∀x∀y∀z(P(x,y) ∧ P(y,z) → P(x,z))
。
你可以找到一个反模型online:
顺便说一句,函数 属性 的子 属性 也是函数。
Stanislav 已经很好地回答了这个问题。我想在这里解决的是评论中提到的想法,即 "inheritance of classes" 与 "inheritance of properties".
不对称面向对象
(1)在面向对象编程语言中,当classA
继承自classB
时,表示[=所有实例的集合84=] A
是 class B
所有实例集合的子集。此外,由于属性属于特定的 class,这意味着 class A
将具有 class B
的所有属性(即
class A
继承了 class B
) 的所有属性。
(2) 当 class A
具有类型 C
的属性 c
时,它表明(或多或少)存在关联 c
在 classes A
和 C
之间。
OWL/RDFS
(1) 与 OWL/RDFS 的一个很大区别是属性 不 属于 class。当我们说 A rdfs:subClassOf B
时,我们说集合 A
是 B
的子集。它什么也没说。例如,如果我们有
B a rdfs:Class .
B rdfs:label "Label for class B" .
A a rdfs:Class .
A rdfs:subClassOf B .
class A
将 不是 "inherit" class B
的标签。
(2) OWL/RDFS 中的属性在实例之间指定, 而不是 在 class 之间指定。我在我的博客上详细写了关于 this 的内容。当您声明 P rdfs:subProperty R
时,这意味着 P
中的个体对集合是 R
.
但是功能属性是继承的...
不,他们不是。由于功能属性的语义,它看起来确实如此。如果我们有一个可用的 属性 R
,这意味着 R
的令人满意的赋值可以是 {(a,1), (b,2)}
。也就是说,同一个主题不能链接到 2 个不同的对象。 IE。你不能有 {(a,1), (a,2)}
。
现在,如果您有 P rdfs:subPropertyOf R
,P
是 R
的子集,因此 P
也将起作用。 IE。 if R = {(a,1), (b,2)}
R
的任何子集也将起作用。