Java SPARQL 选择查询

标签 java sparql rdf jena fuseki

我编写了一个 SELECT 语句,该语句返回来自 fuseki-server 的所有数据。我的问题是如何获得包含 o 列下方所有可用名称的列表(请参阅附图)?

enter image description here

例如,我需要一个包含以下项目的数组: [Pavel Ionut、Cirstea Aurel、Test1]

这是我的 SELECT 语句,应将其更改为仅返回 name 属性...但我之前没有使用过 SPARQL任何解决方案都会对我有很大帮助。

QueryExecution qe = QueryExecutionFactory.sparqlService(
        "http://localhost:3030/Date/query", "SELECT * WHERE {?s ?p ?o}");
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results);
qe.close();
System.out.println(results);

最佳答案

要从所有现有 s-p-o 三元组返回对象集,请使用以下 SPARQL 查询:

SELECT DISTINCT ?o WHERE { ?s ?p ?o . }

要仅获取名称,请尝试:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT DISTINCT ?n WHERE { ?s dc:name ?n . }

或者只是:

SELECT DISTINCT ?n WHERE { ?s <http://purl.org/dc/elements/1.1/name> ?n . }

该规范包含一些很好的示例:

要使用 Java 中的 Apache Jena Fuseki 迭代上述查询的结果集,这可能有效:

while (results.hasNext()) {
    QuerySolution querySolution = results.next();
    RDFNode node = querySolution.get("n");
    String name = node.asLiteral().getString();
    System.out.println(name);
}

关于Java SPARQL 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573824/

相关文章:

java - 使用 Streams 实现 Java 数据透视表

java - xsd :dateTime in SPARQL query with Jena? 的数据类型格式异常

sparql - 如何在 python 中使用 RDFlib 将 RDF 数据存储到 Fuseki SPARQL 端点中的三元组存储

rdf - 如何推断两个人之间的 isBrotherOf 属性

java - Java类对象的重用

java - 通过套接字发送压缩的 JPG 图像

java - 使用apache Spark进行温度预测

java - 使用 jena fusioni 服务器查询 rdf 文件时出现异常

sparql - GraphDB - 具有两个连接的非常慢的 sparql 查询

rdf - JSONLD 序列化形式之间的转换