使用 stardog 从 C# 发送 SPARQL 查询:"cannot execute update query on read endpoint"

Sending SPARQL queries from C# using stardog: "cannot execute update query on read endpoint"

正如标题所说,我正在尝试使用来自 visualstudio 的 SPARQL 查询来创建三元组。在 stardog studio 中使用相同的 SPARQL 查询是可行的,但是当我尝试使用 stardogconnector 从 visualstudio 发送它们时,我收到以下错误:

An unhandled exception of type 'VDS.RDF.Query.RdfQueryException' occurred in dotNetRDF.dll Additional information: A HTTP error (HTTP 400 Bad Request) occured while querying the Store. Store returned the following error message: {"message":"Cannot execute update query on read endpoint"} See aforementioned status line or inner exception for further details occurred

代码如下:

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 中插入相同的查询会得到正确的结果。数据库在线,连接有效(密码等正确),... 我只是不知道错误是什么意思。有人可以帮忙吗?我在网上找不到太多关于此错误的信息。

dotNetRdf 似乎将所有查询发送到 /myDb/query 端点,但是从 Stardog 5.x 开始,所有 SPARQL 更新查询都必须发送到 /myDb/update 端点。官方 Stardog 工具(Studio、stardog.js 等)当时已更新。

如有任何其他问题,请随时提出 community.stardog.com。

query 包含 INSERTUPDATE 或其他 write 操作时,您必须更改 stardog.Query(query); (which is read-only) to stardog.Update(query);(其中显然是只写的)。