owl:allValuesFrom and rdfs:range difference



我正在研究语义网,我想知道:编写限制的语义有什么区别吗:

:Person
  a owl:Class ;
  rdfs:subClassOf
    [ a owl:Restriction ;
      owl:onProperty :hasParent ;
      owl:allValuesFrom :Person
   ] .

并编写范围限制,例如:

:hasParent rdfs:range :Person.

在我看来,这意味着同样:父母必须有一种类型的人。难道就没有区别吗?

第一个代码段意味着具有父级的:Person必须具有:Person父级。然而,例如,:Dog的父母可能不是:Person。第二个片段说,任何有父母的人都必然有一个:Person父母,不管这个东西是什么。

在克拉约尔的评论后编辑:

第一个代码段的allValuesFrom限制不等同于:

:hasParent  rdfs:domain  :Person;
            rdfs:range   :Person .

allValuesFrom限制的情况下,仍有可能有些父母不是人。在rdfs:domain/rdfs:range组合的情况下,这是不可能的。有了allValuesFrom限制,可以说人有人父母,狗有狗父母等。对于域/范围,您不能。

(为

已经回答的问题添加答案,因为我发现缺乏接受答案的本质。

[ a owl:Restriction ;
    owl:onProperty :hasParent ;
    owl:allValuesFrom :Person
]

可以理解为"hasParent谓词的任何值(可能没有)属于Person类型的所有事物的类"。

通过说Person是这个类的一个子类,我们说它是这个类的更专业的版本。因此,Person仍然只能将其他Person作为hasParent的值。

这与rdfs:range不同,因为我们没有对hasParent本身的有效域/范围做出任何声明。为了回收安托万的例子,我们仍然可以说:

:dog1 a :Dog.
:dog2 a :Dog.
:dog1 :hasParent :dog2.

还有另一个值得注意的差异。 当一个类上有多个rdfs:range(或rdfs:domain)三元组时,范围或域是所述范围/域的结合(交集)。 请参阅RDFS规范,尽管措辞模棱两可,以及这篇文章。

如果在本体上执行推理,您会发现 rdfs:range/domain 三元组被推断为所述范围/域类的所有超类。 虽然语义正确,但这可能会令人困惑或难以使用。 这不会发生在 allValuesFrom 上。

最新更新