0

我试图在 Turtle 中定义(在 turtle 中)一个对称的传递谓词并从中获得推论。

这是我定义谓词的方式:

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

我如何使用它(相同的乌龟文件):

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

然后我发出一个 sparkl 查询“select ?x where ?x:similar :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");

也没有运气。什么是正确的方法?我错过了什么?

提前致谢。

4

1 回答 1

0

找到了答案。以下工作正常:

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

我对前缀有一些问题。另外,我将 :similar 声明为一个类,并假设子类将继承 owl:SymmetricProperty 和 owl:TransitiveProperty。似乎不是那样工作

于 2012-09-04T19:19:51.500 回答