final BasicOperator root = this.indexScanCreator.getRoot();
this.booleanIndex = new BooleanIndexScan((root instanceof Root)? (Root) root : null);
this.indexScanCreator.getRoot().addSucceedingOperator(new OperatorIDTuple(this.booleanIndex, 0));
this.booleanIndex.addPrecedingOperator(this.indexScanCreator.getRoot());
}
RuleFilter filter = null;
if (!this.usesEqualities || !(expr instanceof Equality)) {
filter = new RuleFilter(expr, this.equalityMap);
} else {
filter = new EqualityFilter(expr, this.equalityMap);
this.add(this.tripleConsumer, BuildOperatorGraphRuleVisitor.keyEquality, filter);
}
this.booleanIndex.addSucceedingOperator(filter);
filter.addPrecedingOperator(this.booleanIndex);
if(arg!=null){
filter.setSucceedingOperator((OperatorIDTuple) arg);
((OperatorIDTuple) arg).getOperator().addPrecedingOperator(filter);
}
return filter;
}