11

我正在研究语义网,我想知道:编写限制的语义有什么不同,例如:

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

并编写范围限制,例如:

:hasParent rdfs:range :Person.

在我看来,它的意思是一样的:父母必须有一种人。没有区别吗?

4

3 回答 3

10

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

在 krajol 的评论后编辑:

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

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

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

于 2012-08-07T08:44:54.053 回答
1

还有一个值得注意的区别。当一个类中有多个 rdfs:range(或 rdfs:domain)三元组时,范围或域是所述范围/域的合(交集)。请参阅RDFS 规范,尽管措辞含糊不清,还有这篇文章

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

于 2014-10-08T18:11:37.927 回答
0

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

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

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

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

这不同于rdfs:range因为我们没有为自己的有效域/范围做任何声明hasParent。再循环安托万的例子,我们仍然可以说:

:dog1 a :Dog.
:dog2 a :Dog.
:dog1 :hasParent :dog2.
于 2016-12-01T11:07:17.150 回答