查询Java中的SPARQL(Jena)

时间:2016-05-04 10:51:51

标签: java eclipse sparql 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) ;


    }

}

返回查询的表为空 我哪里做错了? 请帮帮我。

2 个答案:

答案 0 :(得分:1)

DBpedia不包含您正在寻找的数据。也许其他一些端点可以,但您需要针对具有该数据的端点运行查询。

您所做的与为一家公司的数据库编写查询基本相同,并期望在另一家公司的数据库中运行查询时,它会返回相同的结果。

答案 1 :(得分:-1)

QueryExecutionFactory获取SPARQL端点的URL。如果您没有,则无法使用此方法查询数据:

https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/QueryExecutionFactory.html#sparqlService-java.lang.String-java.lang.String-