如何解决双数据类型不适用于 RDF 星型查询
Apache Jena 无法查询包含双数据类型的 RDF Star Triple。下面是在 Jena 3.17 中重现问题的代码(也可以在其他版本上重现)。
Dataset dataset = TDB2Factory.createDataset();
Model tempModel = ModelFactory.createDefaultModel();
StringReader reader = new StringReader("@prefix : <http://ex#> "
+ "@prefix xsd: <http://www.w3.org/2001/XMLSchema#> "
+ ":rk :val \"1.0\"^^xsd:double ."
+ "<<:rk :val \"1.0\"^^xsd:double>> :p_key 1");
RDFDataMgr.read(tempModel,reader,null,Lang.TURTLE);
dataset.begin(TxnType.WRITE);
Graph repositoryGraph = dataset.getNamedModel("RAW_MODEL").getGraph();
StmtIterator it = tempModel.listStatements();
while(it.hasNext()) {
repositoryGraph.add(it.nextStatement().asTriple());
}
dataset.commit()
dataset.end()
dataset.begin(TxnType.READ);
Query query = QueryFactory.create("SELECT ?s ?o ?id WHERE {"
+ "<<?s <http://ex#val> ?o>> <http://ex#p_key> ?id"
+ "}");
try (QueryExecution exec = QueryExecutionFactory.create(query,dataset.getUnionModel())) {
ResultSet result = exec.execSelect();
while (result.hasNext()) {
System.out.println(result.next().toString());
}
}
dataset.end()
上述查询无法获取任何结果。但是,如果我只是用 xsd:double
或 xsd:float
replace xsd:decimal
获取结果。因此,我正在寻求帮助以了解导致 xsd:double
出现此问题的原因是什么?
注意:您可能认为我没有使用最佳的插入方式。但是,这是由于代码中的其他要求,因此可以通过此途径重现问题。
解决方法
它适用于耶拿 4.0.0。
在 3.17.0 中 - SPARQL 在使用索引方面更像是原始的 RDF*。
因此,非规范术语映射会导致问题。
尝试 "1.0e0"^^xsd:double
或 v 4.x.x. 的词法形式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。