2012-09-01 31 views
0

我想在Turtle中定義(在龜中)一個對稱的,傳遞式的謂詞並從中得出推論。在Jena中設置OWL推理器

這是我如何定義我的謂詞:

:similar a owl:SymmetricProperty; a owl:TransitiveProperty . 

我如何使用它(同龜文件):

:a :similar :b . 
:b :similar :c . 

然後我發出了一個sparkl查詢「,選擇其中x?類似:c「希望得到a和b。

我試圖建立模型是這樣的:

OntModel ont = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);  
ont.read("file:./myontology.turtle",null,"TURTLE"); 
InfModel model = ModelFactory.createInfModel(ReasonerRegistry.getOWLReasoner(), ont); 

,然後在我的QueryExecutionFactory.create使用InfModel。不起作用。

我也曾嘗試只是:

OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RULE_INF); 
model.read("file:./myontology.turtle",null,"TURTLE"); 

沒有任何運氣。 什麼是正確的方法?我錯過了什麼?

在此先感謝。

回答

0

找到了答案。下面的工作很好:

OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF); 
model.read("file:./myontology.turtle",null,"TURTLE"); 

我有一些前綴問題。另外,我聲明:與類相似,並假設子類將繼承owl:SymmetricProperty和owl:TransitiveProperty。似乎沒有這樣的工作