try {
final Filter f1 = new Filter(filter1);
final Filter f2 = new Filter(filter2);
final Generate g = new Generate(tp, a, b, c);
final Join join = new Join();
f1.addSucceedingOperator(new OperatorIDTuple(join, 0));
f2.addSucceedingOperator(new OperatorIDTuple(join, 1));
join.addSucceedingOperator(new OperatorIDTuple(g, 0));
tp1.setSucceedingOperator(new OperatorIDTuple(f1, 0));
tp2.setSucceedingOperator(new OperatorIDTuple(f2, 0));
final Collection<TriplePattern> ctp1 = new LinkedList<TriplePattern>();
ctp1.add(tp1);
ic.addSucceedingOperator(new OperatorIDTuple(ic.newIndexScan(
new OperatorIDTuple(f1, 0), ctp1, null), 0));
final Collection<TriplePattern> ctp2 = new LinkedList<TriplePattern>();
ctp2.add(tp2);
ic.addSucceedingOperator(new OperatorIDTuple(ic.newIndexScan(
new OperatorIDTuple(f2, 0), ctp2, null), 0));
} catch (final ParseException e) {
System.err.println(e);
e.printStackTrace();
}
}