如何忽略SPARQL中的VALUES?

时间:2018-05-02 13:30:17

标签: sparql

我的部分查询看起来像这样:

  GRAPH g1: {VALUES (?ut) {$U1}
        ?IC_uri skos:related ?ut .
    }

通常,根据用户输入,$U1会获取URI列表。我想为$U1发送测试目的值,以便忽略值的声明并考虑所有可能的值。实际上,它应该产生与以下相同的结果:

  GRAPH g1: {
        # VALUES (?ut) {$U1}
        ?IC_uri skos:related ?ut .
    }

我记得有办法做到这一点,但我无法在SPARQL规范中找到它。

1 个答案:

答案 0 :(得分:2)

我建议三个选择:

  • FILTER (?ut IN ($ut)),传递$ut而不是URI列表;
  • BIND ($ut as ?ut),传递$ut而不是单个URI;
  • VALUES (?ut) {(UNDEF)},传递(UNDEF)而不是以空格分隔的(括号括起的)URI列表。

此类SPARQL注入不能被认为是安全的。

10.2.2 VALUES Examples中首次提到的UNDEF关键字:

  

如果变量在VALUES子句中没有特定解决方案的值,则使用关键字UNDEF而不是RDF术语。