Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查询sesame存储库时变量中没有值?_Java_Sesame - Fatal编程技术网

Java 查询sesame存储库时变量中没有值?

Java 查询sesame存储库时变量中没有值?,java,sesame,Java,Sesame,我想使用.nt文件作为SESAME存储库并查询它(也称为本地联合模式)。程序编写如下 import java.io.File; import java.util.List; import org.openrdf.OpenRDFException; import org.openrdf.repository.RepositoryConnection; import org.openrdf.model.Value; import org.openrdf.query.TupleQuery; impor

我想使用.nt文件作为SESAME存储库并查询它(也称为本地联合模式)。程序编写如下

import java.io.File;
import java.util.List;
import org.openrdf.OpenRDFException;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.model.Value;
import org.openrdf.query.TupleQuery;
import org.openrdf.query.TupleQueryResult;
import org.openrdf.query.BindingSet;
import org.openrdf.query.QueryLanguage;
import org.openrdf.repository.Repository;
import org.openrdf.repository.sail.SailRepository;
import org.openrdf.sail.nativerdf.NativeStore;

public class QuerySesameLocal {

public static void main(String[] args) {

    try
    {

        File dataDir = new File("/home/aidb/out0.nt");
        Repository repo = new SailRepository(new NativeStore(dataDir));
        repo.initialize();

               RepositoryConnection con = repo.getConnection();
               try {
                  String queryString = "SELECT ?x ?y WHERE { ?x ?p ?y } ";
                  TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);

                  TupleQueryResult result = tupleQuery.evaluate();
                  try {

                      if(result.hasNext())
                      {
                          System.out.println("result present");
                      }

                      System.out.println("checkpoint 1");
                        BindingSet bindingSet = result.next();
                        Value valueOfX = bindingSet.getValue("x");
                        Value valueOfY = bindingSet.getValue("y");

                        System.out.println(valueOfX.toString());
                          System.out.println("checkpoint 2");

                        // do something interesting with the values here...
                  }
                  finally {
                      result.close();
                  }
               }
               finally {
                  con.close();
               }
            }
            catch (OpenRDFException e) {
               // handle exception
            }


}
}


这个程序根本不返回任何结果。我试着找出这个错误,但没有弄明白。有人能告诉你这个程序出了什么问题吗?

你不能用这样的.nt文件(或任何其他rdf文件)初始化一个Sesame原生存储

NativeStore
构造函数的
dataDir
参数是一个目录,本机存储将在其中创建索引并存储添加的数据-它以自己的内部格式存储这些数据,而不是以.nt文件的形式存储。所以您应该向它传递一个目录,而不是一个文件(事实上,我有点惊讶于您在执行此代码时没有得到错误)


创建并初始化存储库后,必须将文件添加到其中。您可以通过打开
RepositoryConnection
并使用其
add
方法之一将文件传递给它来完成此操作。请参阅,特别是。

Replace
//处理异常
by
抛出新的运行时异常(e),然后再次执行该程序,并读取/粘贴异常的完整堆栈跟踪(如果有)。忽略异常是不知道发生了什么的最好方法。另外,学习使用调试器。“这没那么难。@harry potter作为旁白,我注意到你已经就此提出了许多问题,并得到了一些答案,但还没有投票/接受其中任何一个。我鼓励你这样做(不仅是在这个问题上,而且在你的任何老问题上)。看看这个:正如前面提到的,我初始化了一个存储库,获得了一个连接,然后给它一个.nt文件。它工作得很好。谢谢!