SPARQL查询不适用于Jena

时间:2014-01-02 10:04:08

标签: sparql jena dbpedia

我经常遇到以下问题。当我向耶拿写查询时,他们无法工作。

以其他网站的这个好查询为例:

PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX mo: <http://purl.org/ontology/mo/>

SELECT *
WHERE {dbpedia:The_Beatles mo:member ?member .
       ?member foaf:name ?name
      }

当我将它翻译成Java的Jena时,它应该是这样的:

public static String beatlesMembers = 
        "PREFIX dbpedia: <http://dbpedia.org/resource/> "+
        "PREFIX foaf: <http://xmlns.com/foaf/0.1/> "+
        "PREFIX mo: <http://purl.org/ontology/mo/> "+
        "SELECT * " +
        "WHERE {dbpedia:The_Beatles mo:member ?member . "+
        "?member foaf:name ?name "+
        "}";

然后我查询DBPEDIA

Query query = QueryFactory.create(Requests.beatlesMembers);

QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);

try {
    ResultSet results = qexec.execSelect();
    for (; results.hasNext();) {
        QuerySolution s = results.nextSolution();
        System.out.println(s.toString());
    }
}
finally {
   qexec.close();
}

它什么都不返回......

知道为什么吗?我无法弄清楚如何在Java中正确编写这些查询。希望你能帮忙。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您是否在dbpedia.org上尝试过查询?

当我在那里运行时,通过Web表单界面,我得到零行。

{ dbpedia:The_Beatles mo:member ?member }没有匹配。没有http://purl.org/ontology/mo/三元组。

尝试{ dbpedia:The_Beatles ?pred ?obj}并查看详细信息。