我开始在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) ;
}
}
返回查询的表为空 我哪里做错了? 请帮帮我。
答案 0 :(得分:1)
DBpedia不包含您正在寻找的数据。也许其他一些端点可以,但您需要针对具有该数据的端点运行查询。
您所做的与为一家公司的数据库编写查询基本相同,并期望在另一家公司的数据库中运行查询时,它会返回相同的结果。
答案 1 :(得分:-1)
QueryExecutionFactory获取SPARQL端点的URL。如果您没有,则无法使用此方法查询数据: