Я хочу использовать файл .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
}
}
}
Эта программа вообще не возвращает никаких результатов. Я пытался понять ошибку, но не мог понять. Кто-нибудь может подсказать, что не так с программой?
// handle exception
наthrow new RuntimeException(e);
, затем снова запустите программу и прочитайте/вставьте полную трассировку стека исключения, если таковая имеется. Игнорирование исключений — лучший способ не знать, что происходит. Также научитесь пользоваться отладчиком. Это не так сложно. - person JB Nizet   schedule 04.01.2014