2012-08-07 60 views
9

我工作的语义网,我想知道:是否有书面的限制等等的semanitc任何区别:猫头鹰:和allValuesFrom和rdfs:距离差

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

,写了一系列类似的限制:

:hasParent rdfs:range :Person. 

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

回答

9

第一个片段意味着有一位父母的:Person必然有一个:Person-父亲。但是,例如,:Dog可能有一个不是:Person的父母。第二个片段说任何拥有父母的人都必须拥有:Person-parent,不管这件事是什么。 krajol的评论后

编辑:

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

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

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

+0

好的,没错。但是,如果有如下声明: :hasParent rdfs:domain:Person。 被添加了,它会一样吗? – krajol 2012-08-07 08:54:25

+0

@krajol,将域设置为':Person'意味着拥有父项的每个人都是Person。如果你将它和上面的OWL限制结合起来,那么是的,合乎逻辑的结果是,所有有父项的都是一个Person,而且所有这些都是一个Person。 一方面,域/范围与另一方面的类限制之间的区别在于,域/范围始终是全局的,而类限制仅对您定义它们的类有效。 – 2012-08-07 23:18:31

1

还有另外一个值得注意的区别。当一个类中存在多个rdfs:range(或rdfs:domain)三元组时,范围或域是所述范围/域的(相交)。见the RDFS spec,虽然措词不明确,this post

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

+0

你是什么意思“这不会发生allValuesFrom”?如果你有':Person rdfs:subClassOf [a owl:Restriction;猫头鹰:onProperty:hasParent; owl:allValuesFrom:Person]'和'Person rdfs:subClassOf:Agent',那么你可以推断出':Person rdfs:subClassOf [a owl:Restriction;猫头鹰:onProperty:hasParent; owl:allValuesFrom:Agent]'。 – 2016-12-03 10:03:27

0

(添加一个答案已经回答的问题,因为我找到了接受的答案缺少的本质。)

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

可以读作“之类的,都是为这对于hasParent谓词的任何值(可能不是)类型为Person“。

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

这与rdfs:range不同,因为我们没有声明hasParent本身的有效域/范围。要回收Antoine's example,我们仍然可以这样说:

:dog1 a :Dog. 
:dog2 a :Dog. 
:dog1 :hasParent :dog2. 
+1

“具有Person作为hasParent谓词值的所有事物的类”可能会产生误导。例如,这个类包含了对'hasParent'属性没有任何价值的东西。最好是说“所有父母都是人的所有事物的阶级”。 – 2016-12-03 10:13:10

+0

好评 - 我已更新说明以澄清它也适用于'hasParent'不发生时。 – DieterDP 2016-12-05 10:20:59