在 Java 中查询 SPARQL (Jena)
Query SPARQL in Java (Jena)
我开始使用 SPARQL 编程并且了解 rdf 世界。
我想进行一个显示所有 idSensor 和值的查询。
代码如下:
public class HelloRDF {
public static void main(String[] args) {
//
// //CONNESSIONE RDF METEO
// final String uri = "http://www.dati.lombardia.it/resource/647i-nhxk/";
// final Model model = ModelFactory.createDefaultModel();
// model.read(uri);
// model.write(System.out);
String s2 = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
"PREFIX socrata: <http://www.socrata.com/rdf/terms#>\n" +
"PREFIX dcat: <http://www.w3.org/ns/dcat#>\n" +
"PREFIX ods: <http://open-data-standards.github.com/2012/01/open-data-standards#>\n" +
"PREFIX dcterm: <http://purl.org/dc/terms/>\n" +
"PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n" +
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#>\n" +
"PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n" +
"PREFIX dsbase: <http://www.dati.lombardia.it/resource/>\n" +
"PREFIX ds: <http://www.dati.lombardia.it/resource/647i-nhxk/>\n" +
"\n" +
"SELECT ?idsensore ?valore \n" +
"WHERE\n" +
" { ?x ds:idsensore ?idsensore .\n" +
"?x ds:valore ?valore .\n" +
" }\n" +
"LIMIT 5\n" +
"";
Query query = QueryFactory.create(s2); //s2 = the query above
QueryExecution qExe = QueryExecutionFactory.sparqlService( "http://dbpedia.org/sparql", query );
ResultSet results = qExe.execSelect();
ResultSetFormatter.out(System.out, results, query) ;
}
}
returns查询为空的table
我哪里做错了?
请帮助我。
DBpedia 不包含您要查找的数据。也许其他一些端点可以,但您需要 运行 对具有该数据的端点进行查询。
您所做的基本上与为一家公司的数据库编写查询并期望在另一家公司的数据库上运行时得到相同结果return相同。
QueryExecutionFactory 采用 SPARQL 端点的 URL。如果您没有,则无法使用这种方法查询您的数据:
我开始使用 SPARQL 编程并且了解 rdf 世界。 我想进行一个显示所有 idSensor 和值的查询。 代码如下:
public class HelloRDF {
public static void main(String[] args) {
//
// //CONNESSIONE RDF METEO
// final String uri = "http://www.dati.lombardia.it/resource/647i-nhxk/";
// final Model model = ModelFactory.createDefaultModel();
// model.read(uri);
// model.write(System.out);
String s2 = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
"PREFIX socrata: <http://www.socrata.com/rdf/terms#>\n" +
"PREFIX dcat: <http://www.w3.org/ns/dcat#>\n" +
"PREFIX ods: <http://open-data-standards.github.com/2012/01/open-data-standards#>\n" +
"PREFIX dcterm: <http://purl.org/dc/terms/>\n" +
"PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n" +
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#>\n" +
"PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n" +
"PREFIX dsbase: <http://www.dati.lombardia.it/resource/>\n" +
"PREFIX ds: <http://www.dati.lombardia.it/resource/647i-nhxk/>\n" +
"\n" +
"SELECT ?idsensore ?valore \n" +
"WHERE\n" +
" { ?x ds:idsensore ?idsensore .\n" +
"?x ds:valore ?valore .\n" +
" }\n" +
"LIMIT 5\n" +
"";
Query query = QueryFactory.create(s2); //s2 = the query above
QueryExecution qExe = QueryExecutionFactory.sparqlService( "http://dbpedia.org/sparql", query );
ResultSet results = qExe.execSelect();
ResultSetFormatter.out(System.out, results, query) ;
}
}
returns查询为空的table 我哪里做错了? 请帮助我。
DBpedia 不包含您要查找的数据。也许其他一些端点可以,但您需要 运行 对具有该数据的端点进行查询。
您所做的基本上与为一家公司的数据库编写查询并期望在另一家公司的数据库上运行时得到相同结果return相同。
QueryExecutionFactory 采用 SPARQL 端点的 URL。如果您没有,则无法使用这种方法查询您的数据: