// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI MEMBER    = vf.createURI(NAMESPACE + "member");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI QUERY_OPT = vf.createURI(NAMESPACE + "queryOptimization");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI SRC_SELECTION = vf.createURI(NAMESPACE + "sourceSelection");


import org.openrdf.repository.config.RepositoryConfigException;
import org.openrdf.repository.config.RepositoryImplConfig;
import org.openrdf.repository.config.RepositoryImplConfigBase;
import org.openrdf.sail.config.SailConfigException;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.MEMBER;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.QUERY_OPT;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.SRC_SELECTION;
import java.util.ArrayList;
import java.util.List;
import org.openrdf.model.Graph;
import org.openrdf.model.Resource;
import org.openrdf.model.Value;
	 * @param implNode the resource representing this federation sail.
	 */
	@Override
	public void parse(Graph model, Resource implNode) throws SailConfigException {
		super.parse(model, implNode);
		
		// extract the repository settings for all defined federation members
		for (Value member : filter(model, implNode, MEMBER)) {
			if (member instanceof Resource) {
				try {
					this.memberConfig.add(RepositoryImplConfigBase.create(model, (Resource) member));
				} catch (RepositoryConfigException e) {
					throw new SailConfigException(e);
				}
			}
			else {
				throw new SailConfigException("Found literal for federation member node, expected a resource");
			}
		}
		
		// get source selection strategy
		Resource sourceSelection = getObjectResource(model, implNode, SRC_SELECTION);
		if (sourceSelection == null) {
			// using default setting
			selectorConfig = new SourceSelectorConfig(DEFAULT_SOURCE_SELECTION);
		} else {
			selectorConfig = SourceSelectorConfig.create(model, sourceSelection);
		}
		
		// get query optimization strategy
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI MEMBER    = vf.createURI(NAMESPACE + "member");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI QUERY_OPT = vf.createURI(NAMESPACE + "queryOptimization");
// 
// Path: src/de/uni_koblenz/west/splendid/config/FederationSailSchema.java
// public static final URI SRC_SELECTION = vf.createURI(NAMESPACE + "sourceSelection");


// Path: src/de/uni_koblenz/west/splendid/config/FederationSailConfig.java
import org.openrdf.repository.config.RepositoryConfigException;
import org.openrdf.repository.config.RepositoryImplConfig;
import org.openrdf.repository.config.RepositoryImplConfigBase;
import org.openrdf.sail.config.SailConfigException;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.MEMBER;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.QUERY_OPT;
import static de.uni_koblenz.west.splendid.config.FederationSailSchema.SRC_SELECTION;
import java.util.ArrayList;
import java.util.List;
import org.openrdf.model.Graph;
import org.openrdf.model.Resource;
import org.openrdf.model.Value;

	 * @param implNode the resource representing this federation sail.
	 */
	@Override
	public void parse(Graph model, Resource implNode) throws SailConfigException {
		super.parse(model, implNode);
		
		// extract the repository settings for all defined federation members
		for (Value member : filter(model, implNode, MEMBER)) {
			if (member instanceof Resource) {
				try {
					this.memberConfig.add(RepositoryImplConfigBase.create(model, (Resource) member));
				} catch (RepositoryConfigException e) {
					throw new SailConfigException(e);
				}
			}
			else {
				throw new SailConfigException("Found literal for federation member node, expected a resource");
			}
		}
		
		// get source selection strategy
		Resource sourceSelection = getObjectResource(model, implNode, SRC_SELECTION);
		if (sourceSelection == null) {
			// using default setting
			selectorConfig = new SourceSelectorConfig(DEFAULT_SOURCE_SELECTION);
		} else {
			selectorConfig = SourceSelectorConfig.create(model, sourceSelection);
		}
		
		// get query optimization strategy
		Resource queryOptimization = getObjectResource(model, implNode, QUERY_OPT);