else
{
// Variable.
Var gVar = Var.alloc(opQuad.getGraphNode()) ;
// Or just just devolve to OpGraph and get OpUnion chain of OpJoin
QueryIterConcat concat = new QueryIterConcat(cxt) ;
for ( Iterator<Node> graphNodes = cxt.getDataset().listGraphNodes() ; graphNodes.hasNext(); )
{
Node gn = graphNodes.next() ;
//Op tableVarURI = TableFactory.create(gn.getName(), Node.createURI(uri)) ;
Graph g = cxt.getDataset().getGraph(gn) ;
Binding b = BindingFactory.binding(BindingRoot.create(), gVar, gn) ;
ExecutionContext cxt2 = new ExecutionContext(cxt, g) ;
// Eval the pattern, eval the variable, join.
// Pattern may be non-linear in the variable - do a pure execution.
Table t1 = TableFactory.create(gVar, gn) ;
QueryIterator qIter = executeBGP(pattern, QueryIterRoot.create(cxt2), cxt2) ;
Table t2 = TableFactory.create(qIter) ;
Table t3 = evaluator.join(t1, t2) ;
concat.add(t3.iterator(cxt2)) ;
}
return TableFactory.create(concat) ;
}
}