代码之家  ›  专栏  ›  技术社区  ›  Marcom

使用Jena在dbpedia上创建SPARQL查询

  •  9
  • Marcom  · 技术社区  · 14 年前

    我试图用Jena来创建一个SPARQL查询来查询dbpedia。

    当我用独立的工具(Tunkle)使用它时,查询正在工作,但是当我在Java代码中插入它时,它返回一个空集。

    String sparqlQueryString1 = "PREFIX dbont: <http://dbpedia.org/ontology/> " +
            "PREFIX dbp: <http://dbpedia.org/property/>" +
            "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>" +
            "   SELECT ?musician  ?place" +
            "   FROM<http://dbpedia.org/resource/Daphne_Oram>" +
            "   WHERE { " +
            "       ?musician dbont:birthPlace ?place ." +
            "   }";
    
    Query query = QueryFactory.create(sparqlQueryString1);
    QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
    
    ResultSet results = qexec.execSelect();
    ResultSetFormatter.out(System.out, results, query);       
    
    qexec.close() ;
    

    知道我做错了什么吗?

    1 回复  |  直到 9 年前
        1
  •  10
  •   user205512    14 年前

    问题是你的 FROM <...> 条款。把它拿开,一切都好了。有了该子句,我怀疑端点将查询限制在具有该名称的图形中,但是不存在这样的图形,因此没有结果。

    令人困惑的是,查询似乎在 http://dbpedia.org/sparql . 但是,设置了一个默认的图形URI,因此查询也将遍历该图形。清除它,查询将不起作用。另外,您可以设置它来检索远程数据。这就是所谓的RDF,它提到了三个出生地。

    如果你想找到那个音乐家的出生地:

    { <http://dbpedia.org/resource/Daphne_Oram> dbont:birthPlace ?place . }