使用stardog从C#发送SPARQL查询:“无法在读取端点上执行更新查询”

时间:2018-12-04 15:07:54

标签: c# sparql dotnetrdf stardog

正如标题所述,我正在尝试使用visualstudio中的SPARQL查询创建三元组。在stardog studio中使用相同的SPARQL查询有效,但是当我尝试使用stardogconnector从visualstudio发送它们时,出现以下错误:

  

dotNetRDF.dll中发生了'VDS.RDF.Query.RdfQueryException'类型的未处理异常   附加信息:查询商店时发生HTTP错误(HTTP 400错误请求)。   存储返回以下错误消息:{“ 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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

可以在community.stardog.com上直接提出任何其他问题。