Я видел ответ на How to return SPARQL results in JSON-LD?, но он не удовлетворяет/работает. Я использовал JSON-LD Java Integration для кунжута, а также отдельную версию.Результаты поиска Sesame/Jena SPARQL для JSON-LD
Что я хочу достичь: Отправьте запрос SPARQL CONSTRUCT в конечную точку SPARQL через Blazegraph RemoteRepository (на основе Sesame/SAIL), получите результат RDF, сериализуйте этот RDF в JSON-LD. Результат RDF работает отлично.
Проблема заключается в том, что следующий код (с кунжутом) не производит ровно никакого вывода:
StringWriter sw = new StringWriter();
final RDFWriter writer = Rio.createWriter(RDFFormat.JSONLD, sw);
//writer.getWriterConfig().set(JSONLDSettings.JSONLD_MODE, JSONLDMode.COMPACT);
GraphQueryResult queryResults;
Rio.write(QueryResults.asModel(queryResults), writer);
Я также использовал преобразование к внутренней модели Jena, потому что я знаю, что Jena JSON-LD выход отлично работал в другом боковом проекте. К сожалению, такой же подход не подходит для преобразования в Йену.
Мой код с Sesame to Jena Adapter:
while(queryResults.hasNext()) {
JenaUtils.asJenaStatement();
}
StringWriter sw = new StringWriter();
// JenaUtils.getModel() returns the Jena model with the added statements above
RDFDataMgr.write(sw, JenaUtils.getModel(), RDFFormat.JSONLD);
Что я могу сделать сейчас?
Здесь недостаточно информации, чтобы ответить на этот вопрос, но проблема в вашем конце, а не в сезаме или Йене. Выполняя ваш код кунжута, я не могу воспроизвести эту проблему: когда я создаю непустой «GraphQueryResult» и запускаю его через ваш код, выводя его в System.out (вместо использования StringWriter), я получаю вывод просто отлично. Таким образом, либо проблема заключается в том, как вы получаете «GraphQueryResult» (вы уверены, что он не пуст?), Или это происходит в том, что вы делаете с «StringWriter» после этого. –
Похоже, я был немного преждевременным, чтобы заявить, что это «на твоем конце». Благодарим за предоставленный ответ, полезный, чтобы узнать об этой несовместимости библиотеки. –