2012-09-01 27 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。似乎没有这样的工作