2017-04-05 20 views
1

owl:inverseOf經常用於定義屬性之間的相反關係。形式爲P1 owl:inverseOf P2的公理聲稱,對於P1的屬性擴展中的每對(x,y),P2的屬性擴展中有一對(y,x),反之亦然,例如hasChildhasParent多個owl:inverseOf具有不同的域或範圍

如何可以定義具有多個域和範圍,如對象屬性之間的這種逆關係:

hasOwner owl:inverseOf hasDog 
hasOwner owl:inverseOf hasCat 

Classes: Person, Dog, Cat 
ObjectProperties: hasOwner, hasDog, hasCat 
    hasOwner: 
     Domains: Dog or Cat 
     Ranges: Person 
    hasDog: 
     Domains: Person 
     Ranges: Dog 
    hasCat: 
     Domains: Person 
     Ranges: Cat 

如果我已知Mammy hasDog SpikeMammy hasCat Tom,我怎樣才能本體模型使得推理可以推斷Spike hasOwner MammyTom hasOwner Mammy

+1

一些答案解釋了這一點,但簡而言之,反轉*雙向*。這意味着你可以從hasCat獲得hasOwner **,反之亦然**。所以,如果你使hasCat和hasDog反轉hasOwner,你可以從x hasCat y到y hasOwner x到x hasDog y,這是**不**,我想,你想要什麼。 –

回答

4

忘記了難以理解的限制,即任何具有所有者或者是貓或狗,你可以得到更接近合理的模型(以龜語法):

hasDog rdfs:subPropertyOf [ owl:inverseOf hasOwner ] . 
hasCat rdfs:subPropertyOf [ owl:inverseOf hasOwner ] . 

這有非不創建新類名或新屬性名的優勢。

PS:我知道東西有一個所有者,既不是貓也不是狗。

+0

好的。我考慮過讓'hasDog'和'hasCat'子屬性爲'hasPet',但是你的解決方案優雅地使用'hasOwner'的反義詞而不是明確地定義它。 – Sentry

1

我認爲你的邏輯存在缺陷。如果hasCathasDog相同

hasOwner owl:inverseOf hasDog 
hasOwner owl:inverseOf hasCat 

這兩句話只能是真。考慮一下,如果P1P2的倒數和P3的倒數,那麼通過傳遞性P2必須與P3相同。

你還是有一個謂語hasPethasOwner倒數,創建一個類Pet,並利用它DogCat子類。

然後您可以制定一個規則來推斷從P1 hasPet P2P2 isA Cat以下P1 hasCat P2

+0

是的,我可以創建一個新的類和問題解決,但在這種情況下,我不想創建任何新的類,或定義新的關係'hasOwner2貓頭鷹:inverseOf hasDog','hasOwner貓頭鷹:inverseOf hasCat'。 – MiP

+0

好的,但沒有一般的'寵物'類,你不能有兩個不同的屬性是另一個屬性的逆。這在邏輯上是不可能的。 – Sentry

+0

如果我不能製作普通類,唯一的辦法就是製作新的對象屬性,對吧? – MiP

相關問題