Запросы TDB из Java ничего не возвращают - PullRequest
1 голос
/ 03 августа 2011

Я пытаюсь запросить базу данных 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 я могу сделать тот же запрос и получить все строки данных.

Может кто-нибудь указать мне правильное направление на какое-то решение? Я пробовал разные методы без успеха.

1 Ответ

4 голосов
/ 03 августа 2011

Похоже, у вас нет результатов. Попробуйте добавить:

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

чтобы узнать, насколько велика модель: я подозреваю, что ответ равен 0.

Как вы загрузили данные? Вы уверены, что C:\\Users\\MyPC\\Fuseki\\Fuseki-0.2.0\\mydatasets - правильное место?

...