Как обсуждалось в комментариях, ваша команда SPARQL синтаксически недействительна: вы не можете просто вставить документ RDF / XML в команду SPARQL INSERT DATA
(подробности см. В спецификации SPARQL Update ).правильный синтаксис).
Я надеюсь, что смогу просто поместить весь этот XML-документ RDF в тело, и база данных клиента / Нептуна SPARQL просто поймет его тройки.
К сожалению, у Нептуна для этого нет опций (по крайней мере, не так, как я вижу из документов Нептуна).
Вы можете загрузить документ RDF / XML в Нептунс помощью команды UPDATE LOAD
, как показано в документации Neptune .Если это не вариант, вам нужно как-то преобразовать данные в документе, чтобы как-то исправить синтаксис SPARQL.
Есть несколько способов сделать это, но если вы работаете в Java, один из возможных вариантовопция заключается в использовании API-хранилища rdf4j .Вы можете подключиться к конечной точке SPARQL вашего экземпляра Neptune с помощью класса SPARQLRepository
следующим образом:
Repository rep = new SPARQLRepository("https://your-neptune-endpoint:port/sparql");
rep.init();
, а затем просто открыть соединение и загрузить свой файл следующим образом:
try(RepositoryConnection conn = rep.getConnection()) {
File file = new File("/my/local/rdf-xml-file.rdf");
conn.add(file, "", RDFFormat.RDFXML);
}
Rdf4j позаботится о преобразовании вашей команды в запрос на обновление SPARQL, который сможет понять сервер Neptune (небольшое предостережение: я сам не проверял это с Neptune, но если он совместим с Рекомендациями SPARQL W3C, это должно работать).