2017-03-03 32 views
1

我有兩個主要的類(代碼和主體)和一個對象屬性的本體不同(受試者獲得代碼)其中:爲什麼在門徒可視推論從導出的推斷公理

  • 代碼(類)含有所有可用代碼(實例)
  • 代碼的(類)子類對這些代碼(實例)進行分類;手動指定
  • 主題(類)包含了所有可用的對象(實例)
  • 每個主題(例如)曾斷言(取得的財產)部分代碼(實例)
  • 主題的(類)的子類定義的科目組(實例)根據相關聯的代碼(實例)和碼碼類別忠誠
  • 裏森納爲約推斷對象實例的特定羣體(受試者的子類)

當我內的Protege開始推理,推斷實例的斷言被宣稱深入t主題子類的實例仍然符合約束條件(請參閱附件Figure)。但是,如果我將推斷的公理導出到單獨的本體中,則每個主題子類都包含其自身+其後代的所有實例(顯然,使用JAVA OWL API可以觀察到相同的行爲)。

我的問題是:爲什麼結果不一樣?我理解這兩種情況的邏輯,但我不明白他們爲什麼不同。如何在Protege中顯示推導結果?如果沒有直接的方法,我可以從OWL API強制隱士(或其他推理者)以某種方式向我展示完全相同的「黃色保護」結果嗎?到目前爲止,我只找到一種解決方法 - 按照原樣導出推理,然後通過SPARQL詢問差異。

我使用的是Protege 5.0.0,Reasoner Hermit 1.3.8和OWL API 5.0.5(雖然對於不同的reasoners得到了相同的結果:Fact ++,Pellet;以及不同的OWL API和Protege版本:4.x)

我會的任何意見非常高興,甚至一個簡單的解釋會幫助我很多。

回答

0

導出的公理依賴於一套用於推斷公理髮電機 - 門生可能會使用從您所選擇的一個不同的組。

該組發生器可以在面板中配置;它的初始化看起來像這樣:

addCheckBox(new InferredSubClassAxiomGenerator(), true, false); 
    addCheckBox(new InferredEquivalentClassAxiomGenerator(), true, false); 
    addCheckBox(new InferredSubObjectPropertyAxiomGenerator(), true, false); 
    addCheckBox(new InferredSubDataPropertyAxiomGenerator(), true, false); 
    addCheckBox(new InferredEquivalentObjectPropertyAxiomGenerator(), true, false); 
    addCheckBox(new InferredEquivalentDataPropertiesAxiomGenerator(), true, false); 
    addCheckBox(new InferredObjectPropertyCharacteristicAxiomGenerator(), false, false); 
    addCheckBox(new InferredDataPropertyCharacteristicAxiomGenerator(), false, false); 
    addCheckBox(new InferredInverseObjectPropertiesAxiomGenerator(), false, false); 
    addCheckBox(new InferredClassAssertionAxiomGenerator(), false, false); 
    addCheckBox(new InferredPropertyAssertionGenerator(), false, true); 
    addCheckBox(new InferredDisjointClassesAxiomGenerator(), false, true); 

我會猜測選定的默認情況下是標記爲真的。

+0

非常感謝@Ignazio的回答。但實際上,這並沒有解決我的問題。我嘗試了很多配置(在Protege以及OWL API中),但是我從未達到與Protege可視化「實時」推理相同的狀態。此外,由於我可以爲公理導出設置一組生成器,因此我還可以設置在Protege中顯示哪些推理(高亮顯示,淡黃色)。即使我讓Protege僅顯示和生成實例,它們仍然不同(在推斷實例的情況下)。 – vpapez

+0

除了我發現的以外,可能還有更多的protégé推理 - 我知道對於非推斷視圖是這樣的。然而,我並不熟悉門徒指出任何這樣的額外事宜。 – Ignazio

+0

我在其他[評論]中找到了解決方案(http://stackoverflow.com/questions/28072721/getting-all-individuals-of-a-specific-class-using-owlapi-and-jfact-reasoner/28083605# 28083605)。突出顯示的推理可能是'reasoner.getInstances(c,true);'(子類的實例被跳過)的輸出。但是,當推斷本體由InferredOntologyGenerator(IOG)對象生成時,不存在像這樣的選項,因此實例不會被跳過。你有什麼想法如何設置一個IOG作爲'reasoner.getInstances(c,false);'? – vpapez

相關問題