private TupleExpr visit(ContainerBlock expr, QueryMetadata md) { TupleExpr rv = merge(expr.getBlocks(), md); if (expr.getFilters() != null) { rv = filter(rv, expr.getFilters(), md); } return rv; }
private GraphQuery createGraphQuery(QueryMetadata md, final Iterable<Bindings> iterable) { List<PatternBlock> patternBlocks = new ArrayList<PatternBlock>(); for (Expression<?> e : md.getProjection()) { if (e instanceof PatternBlock) { patternBlocks.add((PatternBlock) e); } else if (e instanceof ContainerBlock) { for (Block b : ((ContainerBlock) e).getBlocks()) { patternBlocks.add((PatternBlock) b); } } } final List<Function<Bindings, STMT>> transformers = new ArrayList<Function<Bindings, STMT>>(patternBlocks.size()); for (PatternBlock pb : patternBlocks) { transformers.add(createStatementFunction(pb)); } return new GraphQuery() { @SuppressWarnings("unchecked") @Override public CloseableIterator<STMT> getTriples() { List<Iterator<STMT>> iterators = new ArrayList<Iterator<STMT>>(transformers.size()); for (Function<Bindings, STMT> transformer : transformers) { iterators.add(Iterators.transform(iterable.iterator(), transformer)); } return new IteratorAdapter<STMT>(Iterators.concat(iterators.toArray(new Iterator[iterators.size()]))); } }; }
private TupleExpr visit(ContainerBlock expr, QueryMetadata md){ TupleExpr rv = merge(expr.getBlocks(), md); if (expr.getFilters() != null){ rv = filter(rv, expr.getFilters(), md); } return rv; }
private TupleExpr visit(ContainerBlock expr, QueryMetadata md) { TupleExpr rv = merge(expr.getBlocks(), md); if (expr.getFilters() != null) { rv = filter(rv, expr.getFilters(), md); } return rv; }
@SuppressWarnings("unchecked") private Pair<Iterable<Bindings>, Bindings> visit(ContainerBlock expr, Bindings bindings) { final List<Iterable<Bindings>> iterables = new ArrayList<Iterable<Bindings>>(expr.getBlocks().size()); Bindings previous = null; for (Block block : expr.getBlocks()) { Bindings input = previous != null ? new Bindings(previous) : bindings; Pair<Iterable<Bindings>, Bindings> iterableAndBindings = (Pair) block.accept(this, input); if (expr.getFilters() != null) { Predicate<Bindings> predicate = (Predicate) expr.getFilters().accept(this, previous); iterable = Iterables.filter(iterable, predicate);