从Java查询TDB什么也没有返回

时间:2011-08-03 12:54:31

标签: rdf jena dbpedia

我正在尝试从DBpedia数据集中查询具有一些RDF条目的TDB数据库以进行测试,稍后它将有更多条目。 我正在使用How to use Jena TDB to store local version of Linked Movie Database中的建议,但该程序不返回任何内容。

public static void main(String[] args) throws Exception {
    String directory = "C:\\Users\\MyPC\\Fuseki\\Fuseki-0.2.0\\mydatasets";
    Dataset dataset = TDBFactory.createDataset(directory);
    Model model = dataset.getDefaultModel();

    String queryString = "SELECT * WHERE { ?s ?p ?o }";
    Query query = QueryFactory.create(queryString);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    try {
        ResultSet results = qexec.execSelect();
        for (; results.hasNext();) {
            QuerySolution soln = results.nextSolution();
            System.out.println(soln);
            RDFNode x = soln.get("varName");       // Get a result variable by name.
            Resource r = soln.getResource("VarR"); // Get a result variable - must be a resource
            Literal l = soln.getLiteral("VarL");   // Get a result variable - must be a literal
        }
    } catch (Exception e) {
        System.err.print("Error:"+e.getMessage());
    } finally {
        qexec.close();
    }
}

当调试器进入for for (; results.hasNext();) {循环时,它只是跳过try块并到达底部的qexec.close()。我知道我在商店里有数据,因为从Fuseki我可以做同样的查询并得到所有数据行。

有人可以指出我正确的方向来解决某种问题吗?我尝试了不同的方法但没有成功。

1 个答案:

答案 0 :(得分:4)

听起来你没有结果。尝试添加:

System.err.printf("Model size is: %s\n", model.size);

看看模型有多大:我怀疑答案是0。

你是如何加载数据的?您确定C:\\Users\\MyPC\\Fuseki\\Fuseki-0.2.0\\mydatasets是正确的位置吗?