繁体   English   中英

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

[英]JSON-LD serialization string without indentation, spaces or line breaks in RDF4J / Sesame

我正在尝试将模型序列化为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中耶拿有一个RDFFormat称为JSONLD_PRETTY这会给我想要的输出格式。 它看起来类似于:

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

使用Eclipse RDF4J也可以吗?

先感谢您!

编辑:当我尝试将JSON-LD字符串与MongoDB存储在一起时,它将引发以下错误: Invalid BSON field name 这是序列化还是构建模型的问题?

编辑2:例如,上面的代码在Turtle格式下可以完美地工作。 我只有JSON-LD RDFJSON遇到此问题。

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

rdfWriter.getWriterConfig().set(BasicWriterSettings.PRETTY_PRINT, true);

对MongoDB问题一无所知,听起来应该是一个单独的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM