/** * Converts the String representation of a {@link Var} back into the object version. * * @param varString - The {@link Var} represented as a String. (not null) * @return A {@link Var} built from the string. */ public static Var toVar(final String varString) { checkNotNull(varString); if (varString.startsWith("-const-")) { // The variable is a constant value. final String[] varParts = varString.split(TYPE_DELIM); final String name = varParts[0]; final String valueString = name.substring("-const-".length()); final String dataTypeString = varParts[1]; if (dataTypeString.equals(URI_TYPE)) { // Handle a URI object. final Var var = new Var(name, new URIImpl(valueString)); var.setAnonymous(true); return var; } else { // Literal value. final URI dataType = new URIImpl(dataTypeString); final Literal value = new LiteralImpl(valueString, dataType); final Var var = new Var(name, value); var.setAnonymous(true); return var; } } else { // The variable is a named variable. return new Var(varString); } }
/** * 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; }