Java SPARQL Select 查询

Java SPARQL Select query

我写了一个 SELECT 声明 return 我收到了来自 fuseki-server 的所有数据。我的问题是如何获得 o 列下方所有可用名称的列表(见附图)?

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

这是我的SELECT声明,应该改为return只有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);

您需要确定您在查询中查询的是什么。 您可以在此处找到更多详细信息:

exploratory SPARQL queries?

所有现有 s-p-o 三元组中的对象集 return 使用此 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);
}