Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparql Jena querybuilder ClearWhere值不是';行不通_Sparql_Jena_Jena Querybuilder - Fatal编程技术网

Sparql Jena querybuilder ClearWhere值不是';行不通

Sparql Jena querybuilder ClearWhere值不是';行不通,sparql,jena,jena-querybuilder,Sparql,Jena,Jena Querybuilder,我想清除selectBuilder对象中的where子句值,但无法使其正常工作 import org.apache.jena.arq.querybuilder.SelectBuilder; 公共类TestClearWhere{ 公共静态void main(字符串[]args){ SelectBuilder sb=新建SelectBuilder(); sb.addVar(“r”)。addVar(“单位”)。addVar(“时间”)。addVar(“价值”)。addVar(“利息”); sb.add

我想清除selectBuilder对象中的where子句值,但无法使其正常工作

import org.apache.jena.arq.querybuilder.SelectBuilder;
公共类TestClearWhere{
公共静态void main(字符串[]args){
SelectBuilder sb=新建SelectBuilder();
sb.addVar(“r”)。addVar(“单位”)。addVar(“时间”)。addVar(“价值”)。addVar(“利息”);
sb.addWhere(“?r”、“a”、“sao:Point”);
System.out.println(“在清除之前”+sb.toString());
sb.clearWhereValues();/?
sb.clearValues();/?clearValues都不起作用
System.out.println(“清除后\n”+sb.buildString());
}
}
输出

Before clear
SELECT  ?r ?unit ?time ?value ?interest
WHERE
  { ?r  a                     "sao:Point"}

After clear
SELECT  ?r ?unit ?time ?value ?interest
WHERE
  { ?r  a                     "sao:Point"}


请让我知道我做错了什么。

您没有做错任何事情,只是误解了clear方法只对
value
子句起作用,例如,如果您做了
sb..addValueVar(“?v”,“val1”)
您将向查询添加内联数据
SELECT。。。WHERE{}VALUES?v{“val1”}
这将使用
clear()
方法删除(一个用于在
中包含
值,另一个用于在
WHERE
子句之外)。您需要的是创建一个新的生成器,因为没有重置方法。谢谢!是的,我误解了方法。因此,每当我想使用selectBuilder对象时,我就通过创建新的selectBuilder对象来解决我的问题。如果有一个实际的ClearWhere语句方法来清除where语句,那就太好了。这将使它更容易作为单例使用,也更容易用于依赖项注入。或者更好的选择是自动重置request语句及其参数(这样就不会为每个请求都创建对象)。至少可以使用复制当前状态的
clone()
方法。因此,最初,您可以添加一些前缀和所有常见内容,然后克隆它,然后每次添加WHERE部分。此处还建议使用以下模板: