/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2008.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.sail.rdbms.evaluation;
import info.aduna.iteration.CloseableIteration;
import org.openrdf.model.Resource;
import org.openrdf.model.Statement;
import org.openrdf.model.URI;
import org.openrdf.model.Value;
import org.openrdf.query.QueryEvaluationException;
import org.openrdf.query.algebra.evaluation.TripleSource;
import org.openrdf.sail.SailException;
import org.openrdf.sail.rdbms.RdbmsTripleRepository;
import org.openrdf.sail.rdbms.RdbmsValueFactory;
import org.openrdf.sail.rdbms.model.RdbmsResource;
import org.openrdf.sail.rdbms.model.RdbmsURI;
import org.openrdf.sail.rdbms.model.RdbmsValue;
/**
* Proxies request to a {@link RdbmsTripleRepository}.
*
* @author James Leigh
*
*/
public class RdbmsTripleSource implements TripleSource {
private RdbmsTripleRepository triples;
public RdbmsTripleSource(RdbmsTripleRepository triples) {
super();
this.triples = triples;
}
public RdbmsValueFactory getValueFactory() {
return triples.getValueFactory();
}
public CloseableIteration getStatements(Resource subj, URI pred, Value obj,
Resource... contexts) throws QueryEvaluationException {
try {
RdbmsValueFactory vf = triples.getValueFactory();
RdbmsResource s = vf.asRdbmsResource(subj);
RdbmsURI p = vf.asRdbmsURI(pred);
RdbmsValue o = vf.asRdbmsValue(obj, pred);
RdbmsResource[] c = vf.asRdbmsResource(contexts);
return triples.find(s, p, o, false, c);
} catch (SailException e) {
throw new QueryEvaluationException(e);
}
}
}