/**
   * Create a QueryBuilder for creating a describe query
   *
   * @param theVars the variables to be described
   * @param theValues the specific bound URI values to be described
   * @return a describe query builder
   */
  public static QueryBuilder<ParsedGraphQuery> describe(String[] theVars, Resource... theValues) {
    QueryBuilder<ParsedGraphQuery> aBuilder =
        new AbstractQueryBuilder<ParsedGraphQuery>(new ParsedGraphQuery());

    aBuilder.reduced();
    aBuilder.addProjectionVar("descr_subj", "descr_pred", "descr_obj");
    GroupBuilder<?, ?> aGroup = aBuilder.group();

    if (theVars != null) {
      for (String aVar : theVars) {
        Var aVarObj = new Var(aVar);
        aVarObj.setAnonymous(true);

        aGroup
            .filter()
            .or(
                new SameTerm(aVarObj, new Var("descr_subj")),
                new SameTerm(aVarObj, new Var("descr_obj")));
      }
    }

    if (theValues != null) {
      for (Resource aVar : theValues) {
        Var aSubjVar = new Var("descr_subj");
        aSubjVar.setAnonymous(true);

        Var aObjVar = new Var("descr_obj");
        aObjVar.setAnonymous(true);

        aGroup
            .filter()
            .or(
                new SameTerm(new ValueConstant(aVar), aSubjVar),
                new SameTerm(new ValueConstant(aVar), aObjVar));
      }
    }

    aGroup.atom("descr_subj", "descr_pred", "descr_obj");

    return aBuilder;
  }
Exemplo n.º 2
0
  public GroupBuilder<T, E> filter(ValueExpr theExpr) {
    ((BasicGroup) mGroup.getGroup()).addFilter(theExpr);

    return mGroup;
  }