@Override public void visit(OpAssign opAssign) { Table table = eval(opAssign.getSubOp()) ; table = evaluator.assign(table, opAssign.getVarExprList()) ; push(table) ; }
@Override public void visit(OpBGP opBGP) { Table table = evaluator.basicPattern(opBGP.getPattern()) ; push(table) ; }
@Override public void visit(OpDistinct opDistinct) { Table table = eval(opDistinct.getSubOp()) ; table = evaluator.distinct(table) ; push(table) ; }
static Table evalGraph(OpGraph opGraph, Evaluator evaluator) ExecutionContext execCxt = evaluator.getExecContext() ; Table stepResult = evaluator.join(patternTable, tableVarURI) ; current = evaluator.union(current, stepResult) ;
return TableFactory.createUnit() ; ExecutionContext cxt = evaluator.getExecContext() ; DatasetGraph ds = cxt.getDataset() ; BasicPattern pattern = opQuad.getBasicPattern() ; QueryIterator qIter = executeBGP(pattern, QueryIterRoot.create(cxt2), cxt2) ; Table t2 = TableFactory.create(qIter) ; Table t3 = evaluator.join(t1, t2) ; concat.add(t3.iterator(cxt2)) ;
@Override public void visit(OpSequence opSequence) { // Evaluation is as a sequence of joins. Table table = TableFactory.createUnit() ; for ( Iterator<Op> iter = opSequence.iterator() ; iter.hasNext() ; ) { Op op = iter.next() ; Table eltTable = eval(op) ; table = evaluator.join(table, eltTable) ; } push(table) ; }
@Override public void visit(OpFilter opFilter) { Table table = eval(opFilter.getSubOp()) ; table = evaluator.filter(opFilter.getExprs(), table) ; push(table) ; }
@Override public void visit(OpExtend opExtend) { Table table = eval(opExtend.getSubOp()) ; table = evaluator.extend(table, opExtend.getVarExprList()) ; push(table) ; }
static Table evalDS(OpDatasetNames opDSN, Evaluator evaluator) { Node graphNode = opDSN.getGraphNode() ; if ( graphNode.isURI() ) { if ( evaluator.getExecContext().getDataset().containsGraph(graphNode) ) { return new TableUnit() ; } else // WRONG { return new TableEmpty() ; } } if ( ! Var.isVar(graphNode) ) throw new ARQInternalErrorException("OpDatasetNames: Not a URI or variable: "+graphNode) ; DatasetGraph dsg = evaluator.getExecContext().getDataset() ; Iterator<Node> iter = dsg.listGraphNodes() ; List<Binding> list = new ArrayList<>((int)dsg.size()) ; for ( ; iter.hasNext(); ) { Node gn = iter.next(); Binding b = BindingFactory.binding(Var.alloc(graphNode), gn) ; list.add(b) ; } QueryIterator qIter = new QueryIterPlainWrapper(list.iterator(), evaluator.getExecContext()) ; return TableFactory.create(qIter) ; }
@Override public void visit(OpConditional opCond) { Table left = eval(opCond.getLeft()) ; // Ref engine - don;'t care about efficiency Table right = eval(opCond.getRight()) ; Table table = evaluator.condition(left, right) ; push(table) ; }
@Override public void visit(OpDiff opDiff) { Table left = eval(opDiff.getLeft()) ; Table right = eval(opDiff.getRight()) ; Table table = evaluator.diff(left, right) ; push(table) ; }
@Override public void visit(OpGroup opGroup) { Table table = eval(opGroup.getSubOp()) ; table = evaluator.groupBy(table, opGroup.getGroupVars(), opGroup.getAggregators()) ; push(table) ; }
@Override public void visit(OpJoin opJoin) { Table left = eval(opJoin.getLeft()) ; Table right = eval(opJoin.getRight()) ; Table table = evaluator.join(left, right) ; push(table) ; }