Api Stardog:如何通过http协议将参数传递给SPARQL存储查询
我不熟悉语义网和SPARQL。我试图通过HTTP协议执行get请求,同时在URL中传递参数。如何将参数放入SPARQL查询中,以及如何在URL中为其赋值 以下是我所拥有的: Sparql查询:(我正在尝试将我的值放入s) 如您所见,我试图给出值Api Stardog:如何通过http协议将参数传递给SPARQL存储查询,api,http,sparql,semantic-web,stardog,Api,Http,Sparql,Semantic Web,Stardog,我不熟悉语义网和SPARQL。我试图通过HTTP协议执行get请求,同时在URL中传递参数。如何将参数放入SPARQL查询中,以及如何在URL中为其赋值 以下是我所拥有的: Sparql查询:(我正在尝试将我的值放入s) 如您所见,我试图给出值105A203 我希望我的方法是GET,没有有效负载/主体。在这种特殊情况下,实际上不需要值。Stardog允许您通过额外的查询字符串参数直接为变量(以$开头的变量)传递绑定值,这与您已经尝试的方式非常相似: GET http://stardog-serv
105A203
我希望我的方法是
GET
,没有有效负载/主体。在这种特殊情况下,实际上不需要值。Stardog允许您通过额外的查询字符串参数直接为变量(以$开头的变量)传递绑定值,这与您已经尝试的方式非常相似:
GET http://stardog-server:5820/myDb/query?query=select * where {?s ?p $myO}&$myO="105A203"
如果已将select*where{s?p$myO}
保存为存储查询,则使用存储查询的名称也可以:
GET http://stardog-server:5820/myDb/query?query=myQuery&$myO="105A203"
请随意在中发布任何进一步的问题,
employeeId
应该是URI还是文字?在查询中,您使用了
中的变量,因此它必须是URI,然后执行query?query=alphonsoTest&$s=''105A203'
将字符串文本“105A203”
作为参数。那不可能是对的。首先,将查询模板调整为值值($employeeId){($s)}
,然后如果它是一个URI,则执行query?query=alphonsoTest&$s=
,否则使用已有的“105A203”
@AKSW请求,employeeId需要是一个普通的。我的错误在查询中。Stardog不将($s)识别为变量。是的,值($employeeId){($s)}
-这不起作用。我认为SPARQL不允许在VALUES
子句中使用变量,因为在这种情况下这没有意义,它只需要RDF术语(URI、文本)或UNDEF
。你应该在Stardog邮件列表上询问是否有一些解决方法——你会很快得到比我更了解Stardog的人的支持。
GET http://stardog-server:5820/myDb/query?query=select * where {?s ?p $myO}&$myO="105A203"
GET http://stardog-server:5820/myDb/query?query=myQuery&$myO="105A203"