2014-11-25 57 views
0

我有一個關於使用OWL API和reasoners的基本問題。如何在推斷和明確公理之間進行區分?

我試過JFact Reasoner,成功運行它並獲得了很多公理(其中一些推理,其中一些在原始本體中明確聲明)。

我需要區分他們,但我真的找不到任何方法來做到這一點。

在OWLClass或其他地方有什麼方法嗎?

回答

1

斷言公理與推斷的區別僅在於它們明確存在於本體中。

您可以檢查是否公理的存在本體是這樣的:

OWLOntology o = ... 
OWLAxiom ax = ... 
boolean asserted = o.containsAxiom(ax); 

注:如果一個公理註釋,這是可能的,它不會被泰斯法匹配:公理在語義上等效但具有不同註釋的不是equals()(這是W3C規範,而不是OWL API決定)。在這種情況下,你可以找到一個公理與o.containsAxiomIgnoreAnnotations(ax)

+0

這就是我想要的,雖然我希望有更好的解決方案(如一些指示標誌)......但大多數情況下我需要檢查三元組。這樣做有可能嗎? – Hawk 2014-11-26 07:40:55

+0

在三重層面上做到這一點是不可能的 - 它們不直接暴露在OWL API中。您必須將本體和公理同時渲染爲三元組並檢查包含,同時也考慮具有不同身份的空白節點。有一些代碼可以在渲染器包中流式傳輸,但其餘部分需要大量編碼。 – Ignazio 2014-11-26 12:05:28

相關問題