All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.rdf.sail.remote.BigdataRemoteTupleQuery Maven / Gradle / Ivy

package com.bigdata.rdf.sail.remote;

import java.util.concurrent.TimeUnit;

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;

import com.bigdata.rdf.sail.webapp.client.IPreparedTupleQuery;
import com.bigdata.rdf.sail.webapp.client.RemoteRepository;

public class BigdataRemoteTupleQuery extends AbstractBigdataRemoteQuery implements TupleQuery {

	private IPreparedTupleQuery q;

	public BigdataRemoteTupleQuery(RemoteRepository remote, String query, String baseURI) throws Exception {
		super(baseURI);
		this.q = remote.prepareTupleQuery(query);
	}

	@Override
	public TupleQueryResult evaluate() throws QueryEvaluationException {
		try {
			configureConnectOptions(q);
			return q.evaluate();
		} catch (Exception ex) {
			throw new QueryEvaluationException(ex);
		}
	}

    /**
     * @see http://trac.blazegraph.com/ticket/914 (Set timeout on
     *      remote query)
     */
    @Override
	public int getMaxQueryTime() {

        final long millis = q.getMaxQueryMillis();

        if (millis == -1) {
            // Note: -1L is returned if the http header is not specified.
            return -1;
            
        }
        
        return (int) TimeUnit.MILLISECONDS.toSeconds(millis);

	}

    /**
     * @see http://trac.blazegraph.com/ticket/914 (Set timeout on
     *      remote query)
     */
    @Override
    public void setMaxQueryTime(final int seconds) {

        q.setMaxQueryMillis(TimeUnit.SECONDS.toMillis(seconds));

    }

	public void evaluate(TupleQueryResultHandler handler)
			throws QueryEvaluationException, TupleQueryResultHandlerException {
		TupleQueryResult tqr = evaluate();
		try {
			handler.startQueryResult(tqr.getBindingNames());
			while (tqr.hasNext()) {
				handler.handleSolution(tqr.next());
			}
			handler.endQueryResult();
		} finally {
			tqr.close();
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy