use of org.eclipse.rdf4j.query.algebra.Var in project rdf4j by eclipse.
the class QueryModelBuilder method visit.
@Override
public Object visit(ASTOptPathExprTail tailNode, Object data) throws VisitorException {
List<Var> subjVars = (List<Var>) data;
// Create new sub-graph pattern for optional path expressions
graphPattern = new GraphPattern(graphPattern);
// optional path expression tail
tailNode.getOptionalTail().jjtAccept(this, subjVars);
ASTWhere whereNode = tailNode.getWhereClause();
if (whereNode != null) {
// boolean contraint on optional path expression tail
whereNode.jjtAccept(this, null);
}
graphPattern.getParent().addOptionalTE(graphPattern);
graphPattern = graphPattern.getParent();
ASTPathExprTail nextTailNode = tailNode.getNextTail();
if (nextTailNode != null) {
// branch after optional path expression tail
nextTailNode.jjtAccept(this, subjVars);
}
return null;
}
use of org.eclipse.rdf4j.query.algebra.Var in project rdf4j by eclipse.
the class QueryModelBuilder method visit.
@Override
public Object visit(ASTBasicPathExprTail tailNode, Object data) throws VisitorException {
List<Var> subjVars = (List<Var>) data;
Var predVar = (Var) tailNode.getEdge().jjtAccept(this, null);
List<Var> objVars = (List<Var>) tailNode.getNode().jjtAccept(this, null);
Var contextVar = graphPattern.getContextVar();
StatementPattern.Scope spScope = graphPattern.getStatementPatternScope();
for (Var subjVar : subjVars) {
for (Var objVar : objVars) {
StatementPattern sp = new StatementPattern(spScope, subjVar, predVar, objVar, contextVar);
graphPattern.addRequiredTE(sp);
}
}
// Process next tail segment
ASTPathExprTail nextTailNode = tailNode.getNextTail();
if (nextTailNode != null) {
List<Var> joinVars = nextTailNode.isBranch() ? subjVars : objVars;
nextTailNode.jjtAccept(this, joinVars);
}
return null;
}
use of org.eclipse.rdf4j.query.algebra.Var in project rdf4j by eclipse.
the class QueryModelBuilder method visit.
@Override
public Var visit(ASTReifiedStat node, Object data) throws VisitorException {
assert node.getID() != null : "ID variable not set";
Var subjVar = (Var) node.getSubject().jjtAccept(this, null);
Var predVar = (Var) node.getPredicate().jjtAccept(this, null);
Var objVar = (Var) node.getObject().jjtAccept(this, null);
Var idVar = (Var) node.getID().jjtAccept(this, null);
Var contextVar = graphPattern.getContextVar();
StatementPattern.Scope spScope = graphPattern.getStatementPatternScope();
Var rdfType = new Var("_rdfType", RDF.TYPE);
Var rdfStatement = new Var("_rdfStatement", RDF.STATEMENT);
Var rdfSubject = new Var("_rdfSubject", RDF.SUBJECT);
Var rdfPredicate = new Var("_rdfPredicate", RDF.PREDICATE);
Var rdfObject = new Var("_rdfObject", RDF.OBJECT);
graphPattern.addRequiredTE(new StatementPattern(spScope, idVar, rdfType, rdfStatement, contextVar));
graphPattern.addRequiredTE(new StatementPattern(spScope, idVar, rdfSubject, subjVar, contextVar));
graphPattern.addRequiredTE(new StatementPattern(spScope, idVar, rdfPredicate, predVar, contextVar));
graphPattern.addRequiredTE(new StatementPattern(spScope, idVar, rdfObject, objVar, contextVar));
return idVar;
}
use of org.eclipse.rdf4j.query.algebra.Var in project rdf4j by eclipse.
the class QueryModelBuilder method visit.
@Override
public Var visit(ASTVar node, Object data) throws VisitorException {
Var var = new Var(node.getName());
var.setAnonymous(node.isAnonymous());
return var;
}
use of org.eclipse.rdf4j.query.algebra.Var in project rdf4j by eclipse.
the class TupleExprBuilder method visit.
@Override
public BindingSet visit(ASTBindingSet node, Object data) throws VisitorException {
@SuppressWarnings("unchecked") List<Var> vars = (List<Var>) data;
List<String> names = new ArrayList<String>(vars.size());
for (Var var : vars) {
names.add(var.getName());
}
int numberOfBindingValues = node.jjtGetNumChildren();
if (numberOfBindingValues != vars.size()) {
throw new VisitorException("number of values in bindingset does not match variables in BINDINGS clause");
}
Value[] values = new Value[numberOfBindingValues];
for (int i = 0; i < numberOfBindingValues; i++) {
ValueExpr ve = (ValueExpr) node.jjtGetChild(i).jjtAccept(this, null);
if (ve != null) {
Value v = getValueForExpr(ve);
values[i] = v;
}
}
BindingSet result = new ListBindingSet(names, values);
return result;
}
Aggregations