我在How to return SPARQL results in JSON-LD?上看到了答案,但它並不令人滿意/工作。我使用JSON-LD Java集成芝麻,以及獨立版本。芝麻/耶拿SPARQL結果爲JSON-LD
我想要實現的:通過Blazegraph RemoteRepository(基於Sesame/SAIL)向SPARQL端點發送SPARQL CONSTRUCT查詢,獲取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);
我也使用的轉換到耶拿內部模型,因爲我知道耶拿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);
我現在該怎麼辦?
這裏沒有足夠的信息來回答這個問題,但問題出在你的身上,而不是芝麻或耶拿的問題。運行你的Sesame代碼,我不能再現這個問題:當我創建一個非空的'GraphQueryResult'並通過你的代碼運行它,輸出到System.out(而不是使用StringWriter)時,我得到的輸出很好。所以要麼是問題出在你如何獲得'GraphQueryResult'(你確定它不是空的?),要麼是你對'StringWriter'做了什麼。 –
看起來我有點過早地說它是「在你的最後」。感謝您提供答案,有助於瞭解此庫的不兼容性。 –