// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI ESTIMATOR = vf.createURI(NAMESPACE + "cardEstimator");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI EVAL_STRATEGY  = vf.createURI(NAMESPACE + "evalStrategy");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI GROUP_BY_SAMEAS = vf.createURI(NAMESPACE + "groupBySameAs");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI GROUP_BY_SOURCE = vf.createURI(NAMESPACE + "groupBySource");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI OPT_TYPE  = vf.createURI(NAMESPACE + "optimizerType");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI USE_BIND_JOIN = vf.createURI(NAMESPACE + "useBindJoin");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI USE_HASH_JOIN = vf.createURI(NAMESPACE + "useHashJoin");


import org.openrdf.model.Resource;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.impl.ValueFactoryImpl;
import org.openrdf.query.algebra.evaluation.EvaluationStrategy;
import org.openrdf.sail.config.SailConfigException;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.ESTIMATOR;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.EVAL_STRATEGY;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.GROUP_BY_SAMEAS;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.GROUP_BY_SOURCE;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.OPT_TYPE;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.USE_BIND_JOIN;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.USE_HASH_JOIN;
import org.openrdf.model.Graph;
import org.openrdf.model.Literal;
/*
 * This file is part of RDF Federator.
 * Copyright 2010 Olaf Goerlitz
 * 
 * RDF Federator is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * RDF Federator is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with RDF Federator.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * RDF Federator uses libraries from the OpenRDF Sesame Project licensed 
 * under the Aduna BSD-style license. 
 */
package de.uni_koblenz.west.splendid.config;



/**
 * Configuration settings for the query optimizer.
 * 
 * @author Olaf Goerlitz
 */
public class QueryOptimizerConfig extends AbstractSailConfig {
	
	private static final String DEFAULT_ESTIMATOR_TYPE = "INDEX_ASK";
	
	private String estimatorType = DEFAULT_ESTIMATOR_TYPE;
	
	private boolean groupBySameAs = false;
	private boolean groupBySource = true;
	
	private boolean useBindJoin = true;
	private boolean useHashJoin = true;
	
	private EvaluationStrategy evalStrategy;
	
	protected QueryOptimizerConfig() {
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI ESTIMATOR = vf.createURI(NAMESPACE + "cardEstimator");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI EVAL_STRATEGY  = vf.createURI(NAMESPACE + "evalStrategy");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI GROUP_BY_SAMEAS = vf.createURI(NAMESPACE + "groupBySameAs");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI GROUP_BY_SOURCE = vf.createURI(NAMESPACE + "groupBySource");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI OPT_TYPE  = vf.createURI(NAMESPACE + "optimizerType");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI USE_BIND_JOIN = vf.createURI(NAMESPACE + "useBindJoin");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI USE_HASH_JOIN = vf.createURI(NAMESPACE + "useHashJoin");


// Path: src/de/uni_koblenz/west/splendid/config/QueryOptimizerConfig.java
import org.openrdf.model.Resource;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.impl.ValueFactoryImpl;
import org.openrdf.query.algebra.evaluation.EvaluationStrategy;
import org.openrdf.sail.config.SailConfigException;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.ESTIMATOR;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.EVAL_STRATEGY;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.GROUP_BY_SAMEAS;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.GROUP_BY_SOURCE;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.OPT_TYPE;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.USE_BIND_JOIN;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.USE_HASH_JOIN;
import org.openrdf.model.Graph;
import org.openrdf.model.Literal;

/*
 * This file is part of RDF Federator.
 * Copyright 2010 Olaf Goerlitz
 * 
 * RDF Federator is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * RDF Federator is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with RDF Federator.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * RDF Federator uses libraries from the OpenRDF Sesame Project licensed 
 * under the Aduna BSD-style license. 
 */
package de.uni_koblenz.west.splendid.config;



/**
 * Configuration settings for the query optimizer.
 * 
 * @author Olaf Goerlitz
 */
public class QueryOptimizerConfig extends AbstractSailConfig {
	
	private static final String DEFAULT_ESTIMATOR_TYPE = "INDEX_ASK";
	
	private String estimatorType = DEFAULT_ESTIMATOR_TYPE;
	
	private boolean groupBySameAs = false;
	private boolean groupBySource = true;
	
	private boolean useBindJoin = true;
	private boolean useHashJoin = true;
	
	private EvaluationStrategy evalStrategy;
	
	protected QueryOptimizerConfig() {
		super(OPT_TYPE);