我正在使用Oracle Jena适配器。我的问题是关于SPARQL查询的属性路径。当我试图查询时
SELECT * WHERE {
?t rdf:type owl:ObjectProperty.
?t rdfs:domain ?o.
?o owl:unionOf ?union.
?union rdf:rest*/rdf:first ?member.
}
从ModelOracleSem 它给我一个解析器错误。但是,如果我使用Jena内存模型进行尝试,它的工作方式如下:
hybridGraph = OracleGraphWrapperForOntModel.getInstance(graph1);
model = ModelFactory.createModelForGraph(hybridGraph);
ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, model);
我还尝试了ARQ的列表功能?union list:member ?member
。它不会返回ModelOracleSem的任何结果。但是当我从Jena内存模型中尝试它时,它再次完美地运行。
有人可以帮我解决这个问题吗?
修改: 您可以在下面看到确切的错误消息。版本信息:Jena 2.6.4,ARQ 2.8.8,Jena适配器11.2.0.3谢谢,
2013-06-10 16:54:42消息:java.sql.SQLException:ORA-29532:Java调用因未捕获的Java异常而终止:oracle.spatial.rdf.server.ParseException:遇到“<”在第1行第2栏。
期待其中一个:
<URI> ...
<QNAME> ...
<VAR> ...
ORA-06512:在“MDSYS.RDF_MATCH_IMPL_T”,第203行ORA-06512:在“MDSYS.RDF_MATCH_IMPL_T”,第67行ORA-06512:在第4行
答案 0 :(得分:0)
正如约书亚所述,你的问题缺少一些重要信息,例如:给出了解析器错误。
Oracle Jena适配器应支持属性路径,引用其documentation:
Jena Adapter通过支持所有Jena属性路径类型 与Jena ARQ查询引擎集成
因此,如Joshua所说,这可能是版本不匹配的情况,您使用的是旧版本的Oracle Jena适配器,还是更新版本的Jena。
关于list:member
的主题,它是一个ARQ属性函数,它是一个非标准的SPARQL扩展。文档根本没有提到这一点,所以我认为它不受支持。
答案 1 :(得分:0)
我使用了jena适配器,我可以确认jena适配器对正在使用的jena版本敏感。我没有遇到过这个特殊的问题,但是当我使用较新版本的jena和旧版本的jena适配器时,我遇到了类似的问题。
当我们尝试使用Jena 2.9.2执行CONSTRUCT查询时,与jena 2.6.4兼容的jena适配器(我现在不记得版本号)和ARQ 2.8.8引发了运行时异常。我们不得不降级以使其正常工作。
使用正确版本的jena / jena适配器,我们已经体验过具有*工作的属性路径,但它运行速度非常慢(对我们来说有点太慢了)。)。