package org.aksw.jena_sparql_api.core; import org.aksw.jena_sparql_api.utils.DatasetDescriptionUtils; import org.aksw.jena_sparql_api.utils.QueryUtils; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; import org.apache.jena.sparql.core.DatasetDescription; /** * QueryExecutionFactory that injects dataset description into queries * that do not defined their own default / named graphs. * * @author raven * */ public class QueryExecutionFactoryDatasetDescription extends QueryExecutionFactoryDecorator { protected DatasetDescription datasetDescription; public QueryExecutionFactoryDatasetDescription(QueryExecutionFactory delegate, DatasetDescription datasetDescription) { super(delegate); this.datasetDescription = datasetDescription; } @Override public String getState() { String result = super.getState() + DatasetDescriptionUtils.toString(datasetDescription); return result; } @Override public QueryExecution createQueryExecution(Query query) { Query clone = query.cloneQuery(); QueryUtils.applyDatasetDescription(clone, datasetDescription); QueryExecution result = super.createQueryExecution(clone); return result; } public QueryExecution createQueryExecution(String queryString) { throw new UnsupportedOperationException("This query execution requires a query to be passed as an object"); } }