Отправка запросов 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.