在RDF4J / Sesame中没有缩进,空格或换行符的JSON-LD序列化字符串

时间:2017-02-03 14:15:28

标签: java rdf jena sesame rdf4j

我正在尝试将模型序列化为JSON-LD,并使用RDF4J将其存储在字符串变量中。

我的代码如下所示:

public void storeAsString(Model model) {
    StringWriter stringWriter = new StringWriter();
    RDFWriter rdfWriter = Rio.createWriter(RDFFormat.JSONLD, stringWriter);

    rdfWriter.getWriterConfig().set(JSONLDSettings.JSONLD_MODE, JSONLDMode.COMPACT);
    rdfWriter.getWriterConfig().set(JSONLDSettings.OPTIMIZE, true);

    Rio.write(model, rdfWriter);
    String output = stringWriter.toString();
}

它为我提供了一个JSON-LD字符串,但没有任何缩进,空格或换行符,因此System.out.println(output)不是人类可读的。它看起来像这样:

{"@context":"http://schema.org/","type":"Person","jobTitle":"Professor","name":"Jane Doe","telephone":"(425) 123-4567","url":"http://www.janedoe.com"}

在Apache Jena中有一个名为RDFFormat的{​​{1}},它会为我提供所需的输出格式。它看起来与此相似:

JSONLD_PRETTY

Eclipse RDF4J也可以这样做吗?

提前谢谢!

修改 当我尝试使用MongoDB存储JSON-LD字符串时,它会抛出此错误:{ "@context": "http://schema.org/", "@graph": [ { "id": "_:b0", "type": "Person", "jobTitle": "Professor", "name": "Jane Doe", "telephone": "(425) 123-4567", "url": "http://www.janedoe.com" } ] } 。这是序列化问题还是我构建的模型的问题?

编辑第2号: 例如,上面的代码与Turtle格式完美无瑕。我只是使用JSON-LD RDFJSON来解决这个问题。

1 个答案:

答案 0 :(得分:1)

这可以通过将BasicWriterSettings.PRETTY_PRINT选项设置为true

来实现
rdfWriter.getWriterConfig().set(BasicWriterSettings.PRETTY_PRINT, true);

不知道MongoDB问题,听起来应该是一个单独的问题。