/** * 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; }
public GroupBuilder<T, E> filter(ValueExpr theExpr) { ((BasicGroup) mGroup.getGroup()).addFilter(theExpr); return mGroup; }