Отправка запросов SPARQL из C# с использованием stardog: "не удается выполнить запрос на обновление в конечной точке чтения"

Как видно из названия, я пытаюсь создать тройки, используя SPARQL-запросы от visualstudio. Использование тех же самых запросов SPARQL внутри stardog studio работает, но когда я пытаюсь отправить их из visualstudio с помощью stardogconnector, я получаю следующую ошибку:

Произошло необработанное исключение типа "VDS.RDF.Query.RdfQueryException" в dotNetRDF.dll Дополнительная информация: при запросе хранилища произошла ошибка HTTP (неверный запрос HTTP 400). Store вернул следующее сообщение об ошибке: {"message":"Невозможно выполнить запрос на обновление для конечной точки чтения"}. См. Вышеупомянутую строку состояния или внутреннее исключение для получения дополнительной информации.

Вот код:

StardogConnector stardog = new StardogConnector("http://localhost:5820", "dbtest", "admin", "password");
stardog.Begin();
string query = "INSERT DATA { <http://example/book1> dc:title \"test\"}";
stardog.Query(query);
stardog.Commit();

Как я уже сказал, вставка одного и того же запроса в Stardog Studio дает правильный результат. База данных в сети, соединение работает (пароль и т. Д. Правильный),... Я просто не знаю, что означает ошибка. Кто-нибудь может помочь? Я не нахожу много онлайн об этой ошибке.

2 ответа

Решение

Когда query включает в себя INSERT, UPDATE или другое действие записи, вы должны изменить stardog.Query(query); (который только для чтения) для stardog.Update(query); (который, по-видимому, только для записи).

Похоже, что dotNetRdf отправляет все запросы /myDb/query конечная точка, однако начиная с Stardog 5.x все запросы на обновление SPARQL должны отправляться /myDb/update конечная точка. Официальные инструменты Stardog (Studio, stardog.js и т. Д.) Были обновлены в то время.

Не стесняйтесь задавать любые другие вопросы на community.stardog.com.

Другие вопросы по тегам