SailBooleanQuery.java :  » RSS-RDF » sesame » org » openrdf » repository » sail » Java Open Source

Java Open Source » RSS RDF » sesame 
sesame » org » openrdf » repository » sail » SailBooleanQuery.java
/*
 * Copyright Aduna (http://www.aduna-software.com/) (c) 2007.
 *
 * Licensed under the Aduna BSD-style license.
 */
package org.openrdf.repository.sail;

import info.aduna.iteration.CloseableIteration;

import org.openrdf.query.BindingSet;
import org.openrdf.query.BooleanQuery;
import org.openrdf.query.Dataset;
import org.openrdf.query.QueryEvaluationException;
import org.openrdf.query.algebra.TupleExpr;
import org.openrdf.query.parser.ParsedBooleanQuery;
import org.openrdf.sail.SailConnection;
import org.openrdf.sail.SailException;

/**
 * @author Arjohn Kampman
 */
public class SailBooleanQuery extends SailQuery implements BooleanQuery {

  protected SailBooleanQuery(ParsedBooleanQuery tupleQuery, SailRepositoryConnection sailConnection) {
    super(tupleQuery, sailConnection);
  }

  @Override
  public ParsedBooleanQuery getParsedQuery()
  {
    return (ParsedBooleanQuery)super.getParsedQuery();
  }

  public boolean evaluate()
    throws QueryEvaluationException
  {
    ParsedBooleanQuery parsedBooleanQuery = getParsedQuery();
    TupleExpr tupleExpr = parsedBooleanQuery.getTupleExpr();
    Dataset dataset = getDataset();
    if (dataset == null) {
      // No external dataset specified, use query's own dataset (if any)
      dataset = parsedBooleanQuery.getDataset();
    }

    try {
      SailConnection sailCon = getConnection().getSailConnection();

      CloseableIteration<? extends BindingSet, QueryEvaluationException> bindingsIter = sailCon.evaluate(
          tupleExpr, dataset, getBindings(), getIncludeInferred());

      try {
        return bindingsIter.hasNext();
      }
      finally {
        bindingsIter.close();
      }
    }
    catch (SailException e) {
      throw new QueryEvaluationException(e.getMessage(), e);
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.