@Override
  public CloseableIteration<BindingSet, QueryEvaluationException> evaluate(
      String sparqlQueryString,
      BindingSet bindings,
      String baseUri,
      QueryType type,
      Service service)
      throws QueryEvaluationException {
    RepositoryConnection conn = endpoint.getConn();
    try {
      TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, sparqlQueryString, baseUri);

      Iterator<Binding> bIter = bindings.iterator();
      while (bIter.hasNext()) {
        Binding b = bIter.next();
        if (service.getServiceVars().contains(b.getName()))
          query.setBinding(b.getName(), b.getValue());
      }

      TupleQueryResult qRes = query.evaluate();
      return new InsertBindingsIteration(qRes, bindings);
    } catch (OpenRDFException e) {
      throw new QueryEvaluationException(e);
    }
  }
  protected int verifyQueryResult(
      CloseableIteration<? extends BindingSet, QueryEvaluationException> resultIter,
      int expectedBindingCount)
      throws QueryEvaluationException {
    int resultCount = 0;

    while (resultIter.hasNext()) {
      BindingSet resultBindings = resultIter.next();
      resultCount++;

      assertEquals(
          "Wrong number of binding names for binding set",
          expectedBindingCount,
          resultBindings.getBindingNames().size());

      int bindingCount = 0;
      Iterator<Binding> bindingIter = resultBindings.iterator();
      while (bindingIter.hasNext()) {
        bindingIter.next();
        bindingCount++;
      }

      assertEquals("Wrong number of bindings in binding set", expectedBindingCount, bindingCount);
    }

    return resultCount;
  }
 @Override
 protected BindingSet convert(BindingSet bIn) throws QueryEvaluationException {
   QueryBindingSet res = new QueryBindingSet();
   int bIndex = -1;
   Iterator<Binding> bIter = bIn.iterator();
   while (bIter.hasNext()) {
     Binding b = bIter.next();
     String name = b.getName();
     bIndex = Integer.parseInt(name.substring(name.lastIndexOf("_") + 1));
     res.addBinding(name.substring(0, name.lastIndexOf("_")), b.getValue());
   }
   if (bIndex > -1) res.addAll(bindings.get(bIndex));
   return res;
 }