Как записать результат Jena QuerySolution в файл RDF / XML? - PullRequest
0 голосов
/ 28 марта 2019

Мне нужно экспортировать / записать результаты .ttl QuerySolution в файл RDF / XML.

Я попробовал код ниже, но я получаю следующую ошибку с RDFDataMgr.write:

The method write(OutputStream, Model, Lang) in the type RDFDataMgr is not applicable for the arguments (OutputStream, QuerySolution, Lang)

Query query = QueryFactory.create(queryString);
QueryExecution qexec= QueryExecutionFactory.create(query, model2);
try {
    ResultSet resultat= qexec.execSelect();
    while (resultat.hasNext()) {
        QuerySolution sol=resultat.nextSolution();

        String outfile = "/auto_home/rdftest/outfile.rdf";
        OutputStream out = new FileOutputStream(outfile);

        RDFDataMgr.write(out, sol, Lang.RDFXML); 
    }
} finally {
    qexec.close(); 
}

1 Ответ

1 голос
/ 28 марта 2019

SPARQL поддерживает два основных типа запросов: запросы SELECT и запросы CONSTRUCT.

Запросы SELECT возвращают таблицу решений. Вы выполняете запрос SELECT.

Запросы CONSTRUCT создают новый граф RDF из решений.

Turtle и RDF / XML - форматы для графиков RDF. Они не являются форматами для таблиц решений. Поэтому вы можете записывать результаты запросов CONSTRUCT только в эти форматы.

Таким образом, вы можете изменить свой запрос на запрос CONSTRUCT и использовать надлежащие API для их выполнения (execConstruct () возвращает модель вместо ResultSet), либо использовать ResultSetFormatter для записи всей таблицы решений (а не каждой отдельной строки таблицу, как вы пытаетесь сделать) в один из существующих для этой цели форматов: JSON, CSV, TSV, XML.

...