我在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'做了什么。 –
看起来我有点过早地说它是“在你的最后”。感谢您提供答案,有助于了解此库的不兼容性。 –