Как записать модель rdf4j в строку, сохранив исходную структуру?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как записать модель rdf4j в строку, сохранив исходную структуру?

Сообщение Anonymous »

У меня есть простое Java-приложение, которое использует структурированный файл jsonld, преобразует его в класс модели из платформы rdf4j, а затем записывает его в виде строки. Демонстрационный код такой:

Код: Выделить всё

public static void main(String[] args) throws IOException {
InputStream dummyIS = Main.class.getResourceAsStream("/dummyJ.json");
Model output = Rio.parse(dummyIS, "", RDFFormat.JSONLD);

// logic to interact with output field

WriterConfig writerConfig = new WriterConfig();
writerConfig.set(JSONLDSettings.JSONLD_MODE, JSONLDMode.COMPACT);
StringWriter out = new StringWriter();
Rio.write(output, out, RDFFormat.JSONLD, writerConfig);
String finalOut = out.toString();

// saving string somewhere
}
Я заметил, что когда я записываю Модель в строку, как показано здесь, структура моего файла меняется. Если стартовый файл json выглядит так:

Код: Выделить всё

{
"@id": "https://example.com/86b0db22-8478-4e5e-ac8b-456a07f7b203",
"@graph": [
{
"@id": "https://example.com/123",
"edm:dummy":[
{
"@id": "https://example.com/123#abc",
"@field1": "dummyData",
...
}
]
}
],
"@context":[...]
}
Затем, когда я записываю файл в строку, как показано выше, мой файл выглядит так:

Код: Выделить всё

{
"@graph":[
{
"@id": "_:genid-61d31e4b5a1a4ef397ec527041ed13d62-b0",
"@graph": [
{
"@id": "https://example.com/123",
{
"@id": "https://example.com/123#abc",
"@field1": "dummyData",
...
},
"edm:dummy":[
"@id": "https://example.com/123#abc"
],
...
}
]
}
],
"@context":[...]
}
Как видите, все мои данные, кроме @context, переносятся в дополнительный слой @graph. Контекст edm:dummy хранится вне edm:dummy, а edm:dummy теперь содержит только поля @id. Я также получаю новые случайные поля, такие как "@id": "_:genid-61d31e4b5a1a4ef397ec527041ed13d62-b0".
Я не хочу, чтобы ни одно из этих событий не происходило. Я хочу, чтобы моя выходная строка имела ту же структуру, что и в начале. Сначала я думал, что допустил ошибку при манипулировании своей Моделью. Однако даже если я не выполняю никакой работы со своей Моделью и немедленно конвертирую Модель обратно в строку, я все равно вижу то же поведение. Это заставляет меня думать, что я неправильно записываю свою модель в строку.
Мой вопрос: что я делаю неправильно? Как я могу записать модель в строку, чтобы сохранить исходную структуру без введения дополнительных полей и переноса данных в массив @graph?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -structure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»