如何忽略SPARQL中的值?
我的部分查询如下所示:如何忽略SPARQL中的值?,sparql,Sparql,我的部分查询如下所示: GRAPH g1: {VALUES (?ut) {$U1} ?IC_uri skos:related ?ut . } 通常,根据用户输入,$U1获取URI列表。我想为测试目的发送$U1的值,以便忽略值声明并考虑所有可能的值。事实上,它应该产生与以下相同的结果: GRAPH g1: { # VALUES (?ut) {$U1} ?IC_uri skos:related ?ut . } 我记得有一种方
GRAPH g1: {VALUES (?ut) {$U1}
?IC_uri skos:related ?ut .
}
通常,根据用户输入,$U1
获取URI列表。我想为测试目的发送$U1
的值,以便忽略值声明并考虑所有可能的值。事实上,它应该产生与以下相同的结果:
GRAPH g1: {
# VALUES (?ut) {$U1}
?IC_uri skos:related ?ut .
}
我记得有一种方法可以做到这一点,但我在SPARQL规范中找不到它 我建议三种选择:
,传递过滤器(?ut IN($ut))
而不是URI列表李>$ut
,传递BIND($ut as?ut)
而不是单个URI李>$ut
,传递值(?ut){(unde)}
,而不是以空格分隔的URI列表(括号括起来)(unde)
unde
关键字是:
如果变量在VALUES
子句中没有特定解决方案的值,则使用关键字unde
代替RDF术语
忽略什么?
values
子句的某些值?当然,您可以通过#
对一行进行注释。除此之外,SPARQL只有减号
,过滤器(不在(…)
,过滤器不存在{…}
,来进行某种否定。其他任何东西都超出了SPARQL规范afaik.Hm,试着通过UNDEF
。@StanislavKralin它可以工作!谢谢。请把它作为一个答案,以便人们能够从中受益。我目前无法在另一个平台上测试它,以确定它是否是特定于实现的(与AKSW注释有关),但无论如何,这是一个有价值的知识。@AKSW,我刚刚检查过,它在SPARQL规范中:“如果变量在VALUES子句中没有特定解决方案的值,则使用关键字UNDEF而不是RDF术语。”@AKSW查询是在URL重写规则之后进行的。客户端应用程序不能忽略值,因为它根本无法访问查询。它不是一个以空格分隔的URI列表,因此,我使用()-语法。我使用URL重写规则将控件保留在服务器端。因此请求是http://{source pattern}/{$U1},这就是为什么a,B,C URI的列表没有空格的原因:http://{source pattern}/(a)(B)(C)