2012-08-07 58 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