Java 双数据类型不适用于RDF星形查询

Java 双数据类型不适用于RDF星形查询,java,sparql,jena,rdf-star,Java,Sparql,Jena,Rdf Star,ApacheJena无法查询具有双数据类型的RDFStar三元组。这是Jena 3.17版本的代码(也可以在其他版本上复制) Dataset Dataset=TDB2Factory.createDataset(); Model tempModel=ModelFactory.createDefaultModel(); StringReader=新的StringReader(“@前缀:” +“@前缀xsd:” +“:rk:val\'1.0\'^^xsd:double” +“:p_键1”); RDFD

ApacheJena无法查询具有双数据类型的RDFStar三元组。这是Jena 3.17版本的代码(也可以在其他版本上复制)

Dataset Dataset=TDB2Factory.createDataset();
Model tempModel=ModelFactory.createDefaultModel();
StringReader=新的StringReader(“@前缀:”
+“@前缀xsd:”
+“:rk:val\'1.0\'^^xsd:double”
+“:p_键1”);
RDFDataMgr.read(tempModel,reader,null,Lang.TURTLE);
dataset.begin(TxnType.WRITE);
Graph repositoryGraph=dataset.getNamedModel(“原始模型”).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()
dataset.begin(TxnType.READ);
Query=QueryFactory.create(“选择?s?o?id,其中{”

+“它适用于耶拿4.0.0

在3.17.0中,SPARQL在索引的使用上更像原始RDF*

因此,非规范项映射会导致问题


尝试使用
“1.0e0”^^xsd:double
或v4.x.x.

这在Jena 4.0.0中有效

在3.17.0中,SPARQL在索引的使用上更像原始RDF*

因此,非规范项映射会导致问题


尝试
“1.0e0的词法形式"^^xsd:double
或v4.x.x.

非常感谢!它在Jena 4.0中确实有效。我意识到Jena 4.0使用Java 11,但不幸的是,我只能选择使用Java 8。如果可能的话,你能告诉我如何解决这个问题,这样我就可以修补v3.17了吗?出于好奇,你为什么只使用java8?这不是一点变化-RDF star b的定义ecame已清除,整个区域已重写。获取最新的源代码[2021年6月初:4.1.0将在几天内发布,并且是RDF star社区的最新版本]和修复Java8更为简单。目前依赖Java11的地方很少。它只是
文件的一部分。readAllBytes
(Java9)Apache Commons FileUtils有
FileUtils.readFileToByteArray
。随着时间的推移,这会发生变化,但目前,这比反向移植RDF星型代码要少得多。谢谢!是的,我想为Java8编译将是一个更好的选择。我被限制为v8,因为我在Android设备上运行Jena,Java 11是最近添加的对于android社区。大多数其他依赖项与Java 11不兼容。非常感谢!它在Jena 4.0中确实起作用。我意识到Jena 4.0使用Java 11,但不幸的是,我只能选择使用Java 8。如果可能,你能告诉我解决此问题的提交,以便我可以修补v3.17吗?出于好奇,你为什么只使用Java8?这不是一个点的改变-RDF star的定义变得清晰,整个区域都被重写了。获取最新的源代码更简单[2021年6月初:4.1.0将在几天内发布,并且是RDF star社区的最新版本]现在很少有地方依赖于Java11。它只是
文件的一部分。readAllBytes
(Java9)Apache Commons FileUtils有
FileUtils.readFileToByteArray
。随着时间的推移,这会发生变化,但目前,这比反向移植RDF星型代码要少得多。谢谢!是的,我想为Java8编译将是一个更好的选择。我被限制为v8,因为我在Android设备上运行Jena,Java 11是最近添加的大多数其他依赖项与Java11不兼容。
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()