2017-05-08 83 views
1

例如,我有三個類:Flock,Bird,Velocity。我也有兩個屬性:hasMember(域是Flock,範圍是Bird)和hasAttribute(域是Bird,範圍是Velocity)。現在我想添加一個EquivalentClass限制到Flock類作爲定義。讓我們考慮一個非常簡單的定義:在一羣中,所有的鳥都有相同的速度。如何在OWL中表達這一點?我們可以在OWL限制中使用owl:sameAs嗎?

+0

作爲一種解決方法,您可以將'Flock'屬性'hasAttribute'聲明爲域,並編寫簡單的SWRL規則。 –

+0

謝謝斯坦尼斯拉夫。我知道它可以用規則來表達。我只是想知道,如果只有OWL公理可以做到這一點。 – deerls

+0

OWL是無變量的,也就是說,除非具有可以使用的特定值,否則無法對特定類的所有個體的速度做出聲明。因此,SWRL存在。 – AKSW

回答

1

警告:這個答案實際上是不正確的,請看看評論,看看爲什麼。

問題:「我們可以在OWL限制中使用owl:sameAs嗎?」答案是否定的,不在OWL(2)本體中。但是,您可以在OWL Full本體中執行任何您喜歡的操作(即,根據基於OWL RDF的語義解釋的RDF圖)。然而,這與你的問題的細節無關,你想談談雞羣中鳥類的速度。

在OWL 2 DL的限制範圍內,您的問題有一個解決方案。引入財產flockVelocity並使財產鏈hasMember o hasAttribute成爲flockVelocity的子財產。使flockVelocity成爲一個功能屬性,你就完成了。或者,您可以在flockVelocity上定義基數限制。在烏龜:

:hasMember a owl:ObjectProperty; 
    rdfs:domain :Flock; 
    rdfs:range :Bird . 
:hasAttribute a owl:ObjectProperty; # why not :hasVelocity? 
    rdfs:domain :Bird; 
    rdfs:range :Velocity . 
:flockVelocity a owl:ObjectProperty, owl:FunctionalProperty; 
    owl:propertyChainAxiom (:hasMember :hasAttribute) . 

完成。如果你不關心在OWL DL中並允許自己完全自由地使用OWL,那麼可以使用空白節點而不是:flockVelocity,這樣就不必引入假的屬性名稱。

+0

謝謝安託萬。我嘗試了財產鏈。但是,如果我將flockVelocity作爲功能屬性運行HermiT,則會發生內部推理錯誤:「推理期間發生錯誤:非簡單屬性'<...#flockVelocity>'或其相反出現在基數限制'ObjectMaxCardinality (1 <...#flockVelocity><...#Velocity>)''「所以我將基數限制添加到Flock類,但它沒有幫助。 – deerls

+0

@deerls,請參見[11.2關於公理關閉的限制](https://www.w3.org/TR/owl2-syntax/#The_Restrictions_on_the_Axiom_Closure),「對簡單角色的限制」和「對屬性層次結構的限制」段落。 –

+0

Aaaah,你是對的,我錯了!由於斯坦尼斯拉斯提到的原因,我的本體論不在OWL 2 DL中。但是,有可能通過基數限制來獲得期望的結果。讓我編輯我的答案。 –

相關問題