public FilterCursor( CloseableIteration<BindingSet, QueryEvaluationException> result, ValueExpr condition, final Set<String> scopeBindingNames, EvaluationStrategy strategy) throws QueryEvaluationException { super(new Filter(new EmptySet() { @Override public Set<String> getBindingNames() { return scopeBindingNames; } }, condition), result, strategy); }
public FilterCursor(CloseableIteration<BindingSet, QueryEvaluationException> result, ValueExpr condition, final Set<String> scopeBindingNames, EvaluationStrategy strategy) throws QueryEvaluationException { super(new Filter(new EmptySet() { @Override public Set<String> getBindingNames() { return scopeBindingNames; } }, condition), result, strategy); }
private TupleExpr filter(TupleExpr tuple, Predicate expr, QueryMetadata md){ ValueExpr filter = toValue(expr, md); if (filter != null){ return new Filter(tuple, filter); }else{ return tuple; } }
private TupleExpr filter(TupleExpr tuple, Predicate expr, QueryMetadata md) { ValueExpr filter = toValue(expr, md); if (filter != null) { return new Filter(tuple, filter); } else { return tuple; } }
private TupleExpr filter(TupleExpr tuple, Predicate expr, QueryMetadata md) { ValueExpr filter = toValue(expr, md); if (filter != null) { return new Filter(tuple, filter); } else { return tuple; } }
private TupleExpr filteredTuple(TupleExpr theExpr) { TupleExpr aExpr = theExpr; for (ValueExpr aValEx : mFilters) { Filter aFilter = new Filter(); aFilter.setCondition(aValEx); aFilter.setArg(aExpr); aExpr = aFilter; } return aExpr; }
private void visitFilter(Resource r) throws OpenRDFException { Value expr = Statements.singleValue(r, SP.EXPRESSION_PROPERTY, store); ValueExpr valueExpr = visitExpression(expr); tupleNode = new Filter(tupleNode, valueExpr); }
@Override public void meet(Filter filter) { super.meet(filter); List<ValueExpr> conjunctiveConstraints = new ArrayList<ValueExpr>(16); getConjunctiveConstraints(filter.getCondition(), conjunctiveConstraints); TupleExpr filterArg = filter.getArg(); for (int i = conjunctiveConstraints.size() - 1; i >= 1; i--) { Filter newFilter = new Filter(filterArg, conjunctiveConstraints.get(i)); filterArg = newFilter; } filter.setCondition(conjunctiveConstraints.get(0)); filter.setArg(filterArg); }
@Override public void meet(final Difference node) { if (Sets.intersection(node.getRightArg().getBindingNames(), filterVars).size() > 0) { relocate(filter, node.getRightArg()); } else if (Sets.intersection(node.getLeftArg().getBindingNames(), filterVars).size() > 0) { final Filter clone = new Filter(filter.getArg(), filter .getCondition().clone()); relocate(clone, node.getLeftArg()); } }
@Override public void meet(final Intersection node) { if (Sets.intersection(node.getRightArg().getBindingNames(), filterVars).size() > 0) { relocate(filter, node.getRightArg()); } else if (Sets.intersection(node.getLeftArg().getBindingNames(), filterVars).size() > 0) { final Filter clone = new Filter(filter.getArg(), filter .getCondition().clone()); relocate(clone, node.getLeftArg()); } }
@Override public void meet(Intersection node) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, node.getLeftArg()); relocate(clone, node.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(Difference node) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, node.getLeftArg()); relocate(clone, node.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(Union union) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, union.getLeftArg()); relocate(clone, union.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(Union union) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, union.getLeftArg()); relocate(clone, union.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(final LeftJoin n) { final TupleExpr l = n.getLeftArg(); final TupleExpr r = n.getCondition() == null ? n.getRightArg() : // new Filter(n.getRightArg(), n.getCondition()); emit(l); if (!(l instanceof SingletonSet)) { newline(); } emit("OPTIONAL ").emit(r, true); }
@Override public void meet(final LeftJoin n) { final TupleExpr l = n.getLeftArg(); final TupleExpr r = n.getCondition() == null ? n.getRightArg() : // new Filter(n.getRightArg(), n.getCondition()); emit(l); if (!(l instanceof SingletonSet)) { newline(); } emit("OPTIONAL ").emit(r, true); }
@Override public void meet(final Union union) { boolean filterMoved = false; if (Sets.intersection(union.getRightArg().getBindingNames(), filterVars).size() > 0) { relocate(filter, union.getRightArg()); filterMoved = true; } if (Sets.intersection(union.getLeftArg().getBindingNames(), filterVars).size() > 0) { if (filterMoved) { final Filter clone = new Filter(filter.getArg(), filter.getCondition().clone()); relocate(clone, union.getLeftArg()); } else { relocate(filter, union.getLeftArg()); } } }
@Override public void meet(Difference node) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, node.getLeftArg()); relocate(clone, node.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
@Override public void meet(Intersection node) { Filter clone = new Filter(); clone.setCondition(filter.getCondition().clone()); relocate(filter, node.getLeftArg()); relocate(clone, node.getRightArg()); FilterRelocator.relocate(filter); FilterRelocator.relocate(clone); }
private TupleExpr visitHaving(Resource having) throws OpenRDFException { UnaryTupleOperator op = (UnaryTupleOperator)group.getParentNode(); op.setArg(new Extension(group)); Iteration<? extends Resource, QueryEvaluationException> iter = Statements.listResources(having, store); while (iter.hasNext()) { Resource r = iter.next(); ValueExpr havingExpr = visitExpression(r); Filter filter = new Filter(op.getArg(), havingExpr); op.setArg(filter); op = filter; } return op; }