Строка сериализации JSON-LD без отступов, пробелов или разрывов строк в 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 Jena есть 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.
1 ответ
Это возможно, установив BasicWriterSettings.PRETTY_PRINT
возможность true
:
rdfWriter.getWriterConfig().set(BasicWriterSettings.PRETTY_PRINT, true);
Понятия не имею о проблеме MongoDB, похоже, это должен быть отдельный вопрос.