【问题标题】:Sesame/Jena SPARQL results to JSON-LDSesame/Jena SPARQL 结果到 JSON-LD
【发布时间】:2015-08-19 15:46:58
【问题描述】:

我在How to return SPARQL results in JSON-LD? 上看到了答案,但它并不令人满意/有效。我使用了 Sesame 的 JSON-LD Java 集成以及独立版本。

我想要实现的目标:通过 Blazegraph RemoteRepository(基于 Sesame/SAIL)向 SPARQL 端点发送 SPARQL CONSTRUCT 查询,获取 RDF 结果,将该 RDF 序列化为 JSON-LD。 RDF 结果运行良好。

问题是,以下代码(使用 Sesame)完全没有输出:

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 输出在我的另一个项目中运行良好。不幸的是,同样的方法不适用于向 Jena 的转换。

我的代码带有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 或 Jena 的。运行你的芝麻代码,我无法重现这个问题:当我创建一个非空的GraphQueryResult 并通过你的代码运行它,输出到 System.out(而不是使用 StringWriter)时,我得到的输出就好了。因此,问题要么在于您如何获得GraphQueryResult(您确定它不是空的吗?),要么在于您之后如何处理StringWriter
  • 看起来我说它“在你的尽头”有点为时过早。感谢您提供答案,有助于了解此库不兼容问题。

标签: java jena sesame json-ld blazegraph


【解决方案1】:

好的,问题不是我上面提到的过程。

此问题是由于 Blazegraph 中 HTTP 客户端的不兼容版本在 json-ld Sesame 集成库中抑制了异常所致。

java.lang.NoClassDefFoundError: org/apache/http/impl/client/SystemDefaultHttpClient

导致没有将 GraphQueryResults 传送到 json-ld。 异常发生是由于 Blazegraph 的 HTTP 客户端版本 (4.1.3) 不兼容,它覆盖了 json-ld HTTP 客户端版本 (>4.1.3)。

您必须使用以下内容覆盖您的项目对 HTTP 客户端的依赖:

<!-- necessary for (sesame) json-ld integration, -->
<!-- because BlazeGraph uses an older version. See https://github.com/jsonld-java/jsonld-java/issues/64 -->
  <dependency>
     <groupId>org.apache.httpcomponents</groupId>
     <artifactId>httpclient</artifactId>
     <version>4.4</version>
  </dependency>

我希望这能保护别人的时间!

【讨论】:

    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多