3

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

dotNetRDF.dll 中出现“VDS.RDF.Query.RdfQueryException”类型的未处理异常附加信息:查询存储时出现 HTTP 错误(HTTP 400 错误请求)。存储返回以下错误消息:{"message":"Cannot execute update query on read endpoint"} 请参阅上述状态行或内部异常以获取更多详细信息

这是代码:

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

4

2 回答 2

6

query包含INSERTUPDATE或其他写入操作时,您必须将stardog.Query(query);(只读)更改为stardog.Update(query);(显然是只写的)。

于 2018-12-04T17:07:30.550 回答
1

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

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

于 2018-12-04T15:26:22.070 回答