在OpenRDF中查询存储库并显示结果

在OpenRDF中查询存储库并显示结果,rdf,sparql,sesame,Rdf,Sparql,Sesame,我已将一个RDF数据存储加载到OpenRDF存储库中,然后尝试查询存储库并基于查询检索某些数据。我正在运行一个非常简单的查询,以获取所有主题谓词和对象。但是当我试图打印查询结果时,它只是显示第一个三元组。我给的是只做查询工作的方法的代码,请检查,让我知道什么是错误的- private static void queryingRDF(Repository repo) { try{ RepositoryConnection con = repo.getConnection()

我已将一个RDF数据存储加载到OpenRDF存储库中,然后尝试查询存储库并基于查询检索某些数据。我正在运行一个非常简单的查询,以获取所有主题谓词和对象。但是当我试图打印查询结果时,它只是显示第一个三元组。我给的是只做查询工作的方法的代码,请检查,让我知道什么是错误的-

private static void queryingRDF(Repository repo) {
    try{
        RepositoryConnection con = repo.getConnection();
        try{
            String queryString = "SELECT ?s ?p ?o WHERE { ?s ?p ?o } ";
              TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);

              TupleQueryResult result = tupleQuery.evaluate();
              try {
                    BindingSet bindingSet = result.next();
                    Value valueOfX = bindingSet.getValue("s");
                    Value valueOfY = bindingSet.getValue("p");
                    Value valueOfZ = bindingSet.getValue("o");
                    System.out.println(valueOfX);
                    System.out.println(valueOfY);
                    System.out.println(valueOfZ);
              }
              finally {
                  result.close();
              }
        }
        finally{
            con.close();
        }
    }
    catch(OpenRDFException e){
        System.out.println("Query error");
    }

}

TupleQueryResult
是一个迭代器,因此如果要查看所有结果,则需要对其进行迭代器:

while (result.hasNext()) 
{
  BindingSet bindingSet = result.next();
  // Do what you want with the result
}
result.close();

如果您不知道如何使用迭代器,那么请查看Oracle教程以获得简要介绍

实际上,
TupleQueryResult
是一个特定于Sesame的对象,而不是一个实际的Java迭代器(因为我们需要能够抛出选中的异常,所以无法重用)。但同样的原则当然也适用。我只是注意到这在中不够清楚,代码示例有点混乱。现在修好了。