首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP请求验证Virtuoso端点中的SPARQL Insert

HTTP请求验证Virtuoso端点中的SPARQL Insert
EN

Stack Overflow用户
提问于 2018-05-16 16:57:34
回答 1查看 996关注 0票数 2

我试图在Virtuoso中加载的图中执行SPARQL插入,通过针对Virtuoso端点的HTTP请求执行插入。

对于我使用的axios请求,我已经成功地进行了一些Select查询,所以我的问题在于我需要做的更新图形的身份验证过程。

经过大量的研究,我看到Virtuoso为不同的身份验证过程启用了一些路径:

  • http://<cname>/sparql-auth (SQL身份验证)
  • http://<cname>/sparql-oauth (OAuth)
  • http://<cname>/sparql-graph-crud-auth (OAuth CRUD)
  • https://<cname>/sparqlhttps://<cname>/sparql-webid (WebID协议)

我想使它尽可能简单,所以我已经检查了http://<cname>/sparql-auth,并且能够成功地登录并执行插入查询。这意味着(我猜)我的用户没有任何权限问题。

但是,当我试图通过HTTP请求进行身份验证时,我无法正确地验证我的用户,我不知道如何以正确的方式指定用户名和密码。

我还发现Virtuoso在默认情况下激活了Digest身份验证方法,因此我将其更改为/sparql-auth路径上的基本身份验证,因为它是我最简单的方法。我使用Virtuoso的http://<cname>/conductor进行了此更改。

但是,我仍然无法通过HTTP请求正确地验证自己的身份,接收HTTP状态代码401 (未经授权)。

这是我巧妙地提出请求的方式:

代码语言:javascript
复制
axios.get('http://localhost:8890/sparql-auth?query=' + encodeURIComponent(pruebaInsertQuery),{
        auth: {  // This is provided by axios, to perform an HTTP Basic auth
            username: 'myUserName',
            password: 'myPassword'
        },
    })
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
        console.log(error);
    });

我已经看过了Virtuoso的每一个教程和指南,但我在SPARQL、RDF和Virtuoso世界中都是新手,我仍然迷失在一切。

提前谢谢你!!

由于下列评论而编辑的问题:

我也尝试了一个邮政请求,但没有任何改变。

我尝试过的另一种方法是使用http://myUserName:myPassword@localhost:8890/sparql-auth格式,但得到的响应完全相同。

对于是否通过axios调用和/sparql-auth路径传递完全相同的字符串,我一点也不确定。Virtuoso可能使用一些我还没有找到的编码,也无法为Virtuoso (我试图使用的身份验证类型)找到SQL身份验证的任何示例,甚至是Digest authentication方法,这是Virtuoso的默认方法。

我的Virtuoso.log中没有出现任何关于HTTP请求的内容,甚至连成功的请求也没有出现。我将对此进行更多的研究,因为这可能是因为我的配置。

谢谢你的帮助!

终于找到了获得我想要的结果的方法:

--我还没有找到我在这里说过的身份验证问题的解决方案--,但是我仍然需要做这些插入,所以我最终完全改变了我的方法,并创建了我自己的Java RESTful服务,作为我的应用程序和Virtuoso之间的中介。

我发现Virtuoso为Java提供了一些库,这些库帮助我通过批准授权连接到Virtuoso。我也不得不说,创建服务并不容易,但最终还是奏效了。

我希望这些信息能帮助人们更早地思考这个方法,因为它让我在我的项目中浪费了大量的时间。正如我已经说过的,我已经解决了通过我的应用程序执行插入的问题,但是身份验证问题仍然存在,所以可以随意添加关于这个主题的任何新评论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 03:01:26

您可以使用SPARQL更新语言(SPARUL)通过任何Virtuoso实例提供的SPARQL查询服务端点执行INSERT、DELETE和UPDATE (合并DELETE和INSERT)。

当然,Virtuoso端点在默认情况下是受保护的;这就是为什么/sparql不适合您。基本摘要身份验证()的/sparql-update端点已经就位,这可以归结为对Virtuoso用户帐户的常规基于角色的访问控制(RBAC)作用域。

要启用功能强大得多的基于属性的访问控制(ABAC)功能(其作用范围为网络规模标识),您需要安装Enterprise加上虚拟认证层(VAL)模块(由虚拟应用程序分发(VAD)包提供)。

下面是关于ABAC功能的一个简单的逐步指南:

  1. 下载并安装虚拟企业版
  2. 通过VAD下载并安装VAL模块。
  3. 使用导体UI的System Admin→Packages选项卡确认VAL已启用。

  1. 返回到SPARQL端点,并尝试执行针对命名图的INSERTDELETE

我希望这能帮到你?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50376348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档