Search in sources :

Example 1 with Var

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;
}
Also used : ASTVar(org.eclipse.rdf4j.query.parser.serql.ast.ASTVar) Var(org.eclipse.rdf4j.query.algebra.Var) ASTWhere(org.eclipse.rdf4j.query.parser.serql.ast.ASTWhere) ASTInList(org.eclipse.rdf4j.query.parser.serql.ast.ASTInList) ArrayList(java.util.ArrayList) List(java.util.List) ProjectionElemList(org.eclipse.rdf4j.query.algebra.ProjectionElemList) ASTPathExprTail(org.eclipse.rdf4j.query.parser.serql.ast.ASTPathExprTail)

Example 2 with Var

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;
}
Also used : StatementPattern(org.eclipse.rdf4j.query.algebra.StatementPattern) ASTVar(org.eclipse.rdf4j.query.parser.serql.ast.ASTVar) Var(org.eclipse.rdf4j.query.algebra.Var) ASTInList(org.eclipse.rdf4j.query.parser.serql.ast.ASTInList) ArrayList(java.util.ArrayList) List(java.util.List) ProjectionElemList(org.eclipse.rdf4j.query.algebra.ProjectionElemList) ASTPathExprTail(org.eclipse.rdf4j.query.parser.serql.ast.ASTPathExprTail)

Example 3 with Var

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;
}
Also used : StatementPattern(org.eclipse.rdf4j.query.algebra.StatementPattern) ASTVar(org.eclipse.rdf4j.query.parser.serql.ast.ASTVar) Var(org.eclipse.rdf4j.query.algebra.Var)

Example 4 with Var

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;
}
Also used : ASTVar(org.eclipse.rdf4j.query.parser.serql.ast.ASTVar) Var(org.eclipse.rdf4j.query.algebra.Var)

Example 5 with 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;
}
Also used : ValueExpr(org.eclipse.rdf4j.query.algebra.ValueExpr) ListBindingSet(org.eclipse.rdf4j.query.impl.ListBindingSet) BindingSet(org.eclipse.rdf4j.query.BindingSet) ListBindingSet(org.eclipse.rdf4j.query.impl.ListBindingSet) Var(org.eclipse.rdf4j.query.algebra.Var) ArrayList(java.util.ArrayList) Value(org.eclipse.rdf4j.model.Value) List(java.util.List) ArrayList(java.util.ArrayList) ProjectionElemList(org.eclipse.rdf4j.query.algebra.ProjectionElemList)

Aggregations

Var (org.eclipse.rdf4j.query.algebra.Var)48 ValueExpr (org.eclipse.rdf4j.query.algebra.ValueExpr)19 StatementPattern (org.eclipse.rdf4j.query.algebra.StatementPattern)15 ArrayList (java.util.ArrayList)14 TupleExpr (org.eclipse.rdf4j.query.algebra.TupleExpr)14 ProjectionElemList (org.eclipse.rdf4j.query.algebra.ProjectionElemList)13 Extension (org.eclipse.rdf4j.query.algebra.Extension)10 ExtensionElem (org.eclipse.rdf4j.query.algebra.ExtensionElem)10 ASTVar (org.eclipse.rdf4j.query.parser.serql.ast.ASTVar)8 List (java.util.List)7 ProjectionElem (org.eclipse.rdf4j.query.algebra.ProjectionElem)7 ValueConstant (org.eclipse.rdf4j.query.algebra.ValueConstant)7 LinkedHashSet (java.util.LinkedHashSet)6 Projection (org.eclipse.rdf4j.query.algebra.Projection)6 MultiProjection (org.eclipse.rdf4j.query.algebra.MultiProjection)5 Reduced (org.eclipse.rdf4j.query.algebra.Reduced)5 SameTerm (org.eclipse.rdf4j.query.algebra.SameTerm)5 Distinct (org.eclipse.rdf4j.query.algebra.Distinct)4 Filter (org.eclipse.rdf4j.query.algebra.Filter)4 BindingSet (org.eclipse.rdf4j.query.BindingSet)3