owlapi HERMIT 和 SPARQL

owlapi HERMIT and SPARQL

如何使用 HERMIT reasoner 1.3.8 在 Java 中执行 SPARQL 查询?我正在使用 owlapi 4.2 并且我已经使用以下方式加载了 HERMIT 推理机:

OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();
OWLReasoner reasonerHermit = reasonerFactory.createReasoner(ontology);

不幸的是,我找不到任何关于如何使用这个推理器执行 SPARQL 查询的解释?!这可能吗?如果不是,我使用 owlapi 和 SPARQL 还有哪些其他可能性(其他推理机)?

编辑:

我现在知道我需要一个 SPARQL 引擎。这就是为什么我这样使用 SPARQL-DL 的原因:

QueryEngine engine = QueryEngine.create(manager, reasoner, true);
Query query = Query.create("...");
QueryResult result = engine.execute(query);
System.out.println(result);

查询有效,但如果我现在得到类似

的结果
?de.derivo.sparqldlapi.Var@69 = http://www.example.com/project1#document_1

我如何取出 http://www.example.com/project1#document_1?我找不到获取此值的合适方法。

HermiT 是一个 OWL 推理机而不是 SPARQL 引擎。有一个 API 叫做 SPARQL-DL,但是根据它 website it supports just OWL API v3.x. A newer forked version with OWL API 4 support can be found as part of the Protege project: https://github.com/protegeproject/sparql-dl-api

查看 QueryResult 的源代码,available here,您所拥有的是查询绑定。您拥有迭代所有绑定的方法,您应该在绑定的绑定值中找到您想要的值。