it.unibz.inf.ontop.sesame.SesameTupleQuery Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ontop-quest-sesame Show documentation
Show all versions of ontop-quest-sesame Show documentation
This is the Sesame API implementation based on Quest
package it.unibz.inf.ontop.sesame;
/*
* #%L
* ontop-quest-sesame
* %%
* Copyright (C) 2009 - 2014 Free University of Bozen-Bolzano
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import it.unibz.inf.ontop.model.OBDAException;
import it.unibz.inf.ontop.model.TupleResultSet;
import it.unibz.inf.ontop.owlrefplatform.core.QuestDBConnection;
import it.unibz.inf.ontop.owlrefplatform.core.QuestDBStatement;
import java.util.List;
import org.openrdf.query.MalformedQueryException;
import org.openrdf.query.QueryEvaluationException;
import org.openrdf.query.TupleQuery;
import org.openrdf.query.TupleQueryResult;
import org.openrdf.query.TupleQueryResultHandler;
import org.openrdf.query.TupleQueryResultHandlerException;
public class SesameTupleQuery extends SesameAbstractQuery implements TupleQuery {
public SesameTupleQuery(String queryString, String baseURI, QuestDBConnection conn)
throws MalformedQueryException {
super(queryString, conn);
}
// needed by TupleQuery interface
public TupleQueryResult evaluate() throws QueryEvaluationException {
TupleResultSet res = null;
QuestDBStatement stm = null;
long start = System.currentTimeMillis();
try {
stm = conn.createStatement();
if(this.queryTimeout > 0)
stm.setQueryTimeout(this.queryTimeout);
try {
res = (TupleResultSet) stm.execute(getQueryString());
} catch (OBDAException e) {
long end = System.currentTimeMillis();
if (this.queryTimeout > 0 && (end - start) >= this.queryTimeout * 1000){
throw new QueryEvaluationException("SesameTupleQuery timed out. More than " + this.queryTimeout + " seconds passed", e);
} else
throw e;
}
List signature = res.getSignature();
return new SesameTupleQueryResult(res, signature);
} catch (OBDAException e) {
e.printStackTrace();
throw new QueryEvaluationException(e);
}
}
// needed by TupleQuery interface
public void evaluate(TupleQueryResultHandler handler)
throws QueryEvaluationException, TupleQueryResultHandlerException {
TupleQueryResult result = evaluate();
handler.startQueryResult(result.getBindingNames());
while (result.hasNext()) {
handler.handleSolution(result.next());
}
handler.endQueryResult();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy