我尝试使用基于Web的SPARQL端点(http://localhost:8890/sparql/)在Virtuoso中为RDF三元组执行INSERT
语句:
INSERT DATA
{
GRAPH <http://my.graph>
{
<http://test.com/someid> <http://namespace.ref#someVar> 123
}
}
但我得到了
Virtuoso 42000错误SR186:安全:无权执行程序DB.DBA.SPARQL_INSERT_DICT_CONTENT,用户ID为107,组ID为107
我能够通过我的数据库编辑器运行相同的语句,该编辑器使用端口1111
上的JDBC驱动程序,使用DBA
登录。
通过端口DBA
1111
运行以下内容后,Web界面/服务插入成功:
grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to "SPARQL";
grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to SPARQL_UPDATE;
但是,我想撤消用户SPARQL
的权限,我知道这些权限与网络界面相关联,并发送HTTP POST
/ PUT
/ DELETE
使用摘要式身份验证提供的用户凭据请求。这可能吗?怎么样?我去了this page of the manual,但它是空的。
答案 0 :(得分:4)
OP的目标在他们最初试图访问的the new location of the manual page中进行了讨论。 (更多详细信息在产品网站上,而不是在下面复制。)
Virtuoso为支持经过身份验证的SPARUL(a / k / a SPARQL-Update)的SPARQL服务保留路径
/sparql-auth/
。此端点允许特定SQL帐户通过SPARQL协议执行SPARUL。要允许通过SQL或ODBC登录并更新物理三元组,必须授予用户SPARQL_UPDATE
权限。授予此角色:
转到Virtuoso管理界面,即
http://host:port/conductor
- 身份登录
以用户
dba
转到系统管理员→用户帐户→用户
点击修改链接
将用户类型设置为 SQL / ODBC登录和WebDAV 。
从可用的帐户角色列表中选择
SPARQL_UPDATE
,然后点击>>
按钮将其添加到右侧 - 手清单。- 醇>
点击保存按钮。
答案 1 :(得分:0)