Я пытаюсь запросить базу данных TDB, в которой есть несколько записей RDF, из набора данных DBpedia для тестирования, позже в нем будет гораздо больше записей.
Я использую предложение, найденное в Как использовать Jena TDB для хранения локальной версии Связанной базы данных фильмов , но программа ничего не возвращает.
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 я могу сделать тот же запрос и получить все строки данных.
Может кто-нибудь указать мне правильное направление на какое-то решение? Я пробовал разные методы без успеха.