Java RDF4J/Sesame中不带缩进、空格或换行符的JSON-LD序列化字符串

Java RDF4J/Sesame中不带缩进、空格或换行符的JSON-LD序列化字符串,java,rdf,jena,sesame,rdf4j,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().

我尝试将模型序列化为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();
}
{"@context":"http://schema.org/","type":"Person","jobTitle":"Professor","name":"Jane Doe","telephone":"(425) 123-4567","url":"http://www.janedoe.com"}
它给了我一个JSON-LD字符串,但没有任何缩进、空格或换行符,因此System.out.printlnoutput不是人类可读的。看起来是这样的:

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();
}
{"@context":"http://schema.org/","type":"Person","jobTitle":"Professor","name":"Jane Doe","telephone":"(425) 123-4567","url":"http://www.janedoe.com"}
在ApacheJena中,有一个名为JSONLD_PRETTY的RDF格式,它将为我提供所需的输出格式。它看起来像这样:

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

提前谢谢你

编辑: 当我试图用MongoDB存储JSON-LD字符串时,它抛出以下错误:无效的BSON字段名。这是序列化的问题还是我构建的模型的问题

第2次编辑:
例如,上面的代码可以完美地处理Turtle格式。仅JSON-LD和RDFJSON就存在此问题。

通过将BasicWriterSettings.PRETTY_PRINT选项设置为true,这是可能的:


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

首先,谢谢你!这就是我要找的环境。但有一个新问题:JSONLDMode.flatte和JSONLDMode.EXPAND不能提供格式良好的JSON。字符串中的第一个字符是[而不是]{。这可能就是它不能存储在MongoDB中的原因。此外,它没有使用我声明的名称空间,因此没有@context对象。但是如果我使用JSONLDMode.COMPACT,一切都很好。你知道是什么导致了这种行为吗?它看起来好像把它变成了一个包含一个元素的数组。这实际上是格式正确的JSON,但不可否认这有点奇怪。我不知道为什么会发生这种情况——我建议您使用RDF4J项目登录。