【问题标题】:JSON-LD serialization string without indentation, spaces or line breaks in RDF4J / Sesame在 RDF4J / Sesame 中没有缩进、空格或换行符的 JSON-LD 序列化字符串
【发布时间】:2017-02-03 14:15:28
【问题描述】:

我正在尝试将模型序列化为 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 中有一个名为 JSONLD_PRETTYRDFFormat,它将为我提供所需的输出格式。它看起来像这样:

{
  "@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 也可以做到这一点吗?

提前谢谢你!

编辑: 当我尝试使用 MongoDB 存储 JSON-LD 字符串时,它会引发此错误:Invalid BSON field name。这是序列化问题还是我构建的模型的问题?

编辑 2: 例如,上面的代码与 Turtle 格式完美结合。我在使用 JSON-LD RDFJSON时遇到了这个问题。

【问题讨论】:

    标签: java rdf jena sesame rdf4j


    【解决方案1】:

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

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

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

    【讨论】:

    • 首先,谢谢!这就是我一直在寻找的设置。但是有一个新问题:JSONLDMode.FLATTENJSONLDMode.EXPAND 没有提供格式良好的 JSON。字符串中的第一个字符是[ 而不是{。这可能是它无法存储在 MongoDB 中的原因。此外,它不使用我声明的命名空间,因此没有@context 对象。但如果我使用 JSONLDMode.COMPACT 一切正常。你知道什么会导致这种行为吗?
    • 看起来好像把它变成了一个只有一个元素的数组。这实际上是格式良好的 JSON,但不可否认它有点奇怪。我不确定为什么会发生这种情况 - 我建议您在 RDF4J 项目中记录 support request
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2016-02-05
    • 2017-08-21
    相关资源
    最近更新 更多