public SelectQueryOptimizer createRdbmsFilterOptimizer() {
LabelExprFactory label = new LabelExprFactory();
BooleanExprFactory bool = createBooleanExprFactory();
URIExprFactory uri = new URIExprFactory();
SqlExprFactory sql = new SqlExprFactory();
DatatypeExprFactory datatype = new DatatypeExprFactory();
LanguageExprFactory language = new LanguageExprFactory();
sql.setBNodeExprFactory(new BNodeExprFactory());
sql.setBooleanExprFactory(bool);
sql.setDatatypeExprFactory(datatype);
sql.setLabelExprFactory(label);
sql.setLanguageExprFactory(language);
sql.setNumericExprFactory(new NumericExprFactory());
sql.setTimeExprFactory(new TimeExprFactory());
sql.setZonedExprFactory(new ZonedExprFactory(ids));
sql.setHashExprFactory(new HashExprFactory(vf));
sql.setPointExprFactory(new PointExprFactory());
sql.setURIExprFactory(uri);
label.setSqlExprFactory(sql);
uri.setSqlExprFactory(sql);
bool.setSqlExprFactory(sql);
SelectQueryOptimizer optimizer = new SelectQueryOptimizer();
optimizer.setSqlExprFactory(sql);