1

我正在使用 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 内存模型中尝试它时,它再次完美运行。

谁能帮我解决这个问题?

编辑: 您可以在下面看到确切的错误消息。版本信息:耶拿 2.6.4、ARQ 2.8.8、耶拿适配器 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 行

4

2 回答 2

0

我使用了 jena 适配器,并且可以确认 jena 适配器对正在使用的 jena 版本很敏感。我没有遇到过这个特殊问题,但是在使用较新版本的 jena 和较旧版本的 jena 适配器时,我遇到了类似的问题。

当我们尝试使用 Jena 2.9.2 执行 CONSTRUCT 查询时,与 jena 2.6.4 和 ARQ 2.8.8 兼容的 jena 适配器(我现在不记得版本号)引发了运行时异常。我们不得不降级以使其正常工作。

使用正确版本的 jena/jena 适配器,我们体验到带有 * 的属性路径可以工作,但运行速度非常慢(对我们来说有点太慢了 ;))。

于 2013-06-27T10:26:03.973 回答
0

正如约书亚所说,您的问题缺少一些重要信息,例如给出的解析器错误。

Oracle Jena 适配器应该支持属性路径,引用他们的文档

Jena 适配器通过与 Jena ARQ 查询引擎的集成支持所有 Jena 属性路径类型

因此,正如 Joshua 所暗示的,这可能是版本不匹配的情况,您使用的是旧版本的 Oracle Jena 适配器,而是新版本的 Jena。

主题list:member是一个 ARQ 属性函数,它是一个非标准 SPARQL 扩展。该文档根本没有提到这一点,所以我认为它不受支持。

于 2013-06-10T19:28:06.237 回答