GRAPH Запросы в Jena TDB: CLI работает / Сбой кода - PullRequest
0 голосов
/ 10 мая 2018

Я создал набор данных TDB и загрузил в него данные.Я хочу выполнить следующий запрос:

prefix skos: <http://www.w3.org/2004/02/skos/core#> 
SELECT ?s WHERE  { GRAPH ?g { ?s skos:broader ?o }} LIMIT 100

В командной строке этот запрос запускается и возвращает желаемый результат, используя:

tdbquery --loc=<path_to_dataset> --file <path_to_query_file>

Однако у меня возникают проблемы при выполнении самоготот же запрос в коде Java:

String pathToRepo = "<path_to_dataset>";

// open the dataset
dataset = TDBFactory.createDataset(pathToRepo);

model = dataset.getDefaultModel();

String queryString = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#>\n"
                      + "SELECT ?s WHERE  { GRAPH ?g { ?s skos:broader ?o } } LIMIT 100";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
while (results.hasNext()) {
    QuerySolution result = results.next();
    System.out.println(result.get("s").toString());
}
qe.close();

Код Java выполняется, но не возвращает никаких результатов.Почему это так?Что я должен изменить?

Данные, которые я использую, являются общедоступными, вы можете найти их здесь: http://webisa.webdatacommons.org/ (прокрутите вниз, пока вы не окажетесь в Dumps Data).

Я новичок в Jena TDB, поэтому я надеюсь, что вопрос не слишком глуп и не слишком сложен для ответа.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 10 мая 2018

Как правильно указывает AKSW , желаемый результат может быть получен путем запроса к набору данных, а не к модели по умолчанию, т.е.

QueryExecution qe = QueryExecutionFactory.create(query, dataset);
...