Oracle Jena Adapter和Jena ARQ中的SPARQL属性路径

时间:2013-06-10 07:21:57

标签: oracle sparql jena

我正在使用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行

2 个答案:

答案 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适配器,我们已经体验过具有*工作的属性路径,但它运行速度非常慢(对我们来说有点太慢了)。)。