Предлагает ли RDF4J способ печатать результаты в табличном формате? - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь распечатать результаты, полученные по запросу SPARQL в RDF4J. Есть ли метод или класс внутри RDF4J, который предлагает эту функциональность? Я не спрашиваю о стороннем программном обеспечении или дополнительном исходном коде (уже есть вопрос для этого с множеством хороших ответов).

1 Ответ

0 голосов
/ 13 ноября 2018

Нет реального «красивого принтера» для результатов запроса в Rdf4j, но я предполагаю, что самым близким из них являются средства записи CSV (значения, разделенные запятыми) или TSV (значения, разделенные табуляцией). Rdf4j Workbench предлагает эти форматы в качестве параметров для экспорта результата запроса. Если вы хотите использовать их для программного выполнения запроса, вы должны сделать что-то вроде этого:

// write TSV result to STDOUT (to write to file, use a FileoutputStream instead)
SPARQLResultsTSVWriter writer = new SPARQLResultsTSVWriter(System.out); 
try (RepositoryConnection conn = rep.getConnection()) {
   String query = "SELECT ... ";
   // execute the query and stream the result to the supplied writer
   conn.prepareTupleQuery(query).evaluate(writer);
}

Если вам нужно что-то более красивое, вы можете написать свой собственный обработчик результата запроса и использовать его вместо SPARQLResultsTSVWriter. Чтобы сделать это, создайте новый класс, который расширяет AbstractQueryResultWriter , и переопределите любой из там методов, которые нуждаются в настройке (в частности, handleNamespace, handleSolution, startQueryResult и endQueryResult). Или вы можете зарегистрировать запрос на добавление такого класса в Rdf4j (или даже лучше: напишите его самостоятельно, а затем внесите свой вклад в проект :))

...