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);
}
我写了一个 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);
}