public AutoSPARQLSession(
      Dataset dataset,
      String cacheDir,
      String servletContextPath,
      QuestionProcessor questionPreprocessor) {
    this.dataset = dataset;
    this.servletContextPath = servletContextPath;
    this.questionPreprocessor = questionPreprocessor;

    endpoint = dataset.getEndpoint();

    search = dataset.getSearchIndex();
    search.setQuestionPreprocessor(questionPreprocessor);

    constructCache =
        new ExtractionDBCache(cacheDir + "/" + endpoint.getPrefix() + "/construct-cache");
    selectCache = new ExtractionDBCache(cacheDir + "/" + endpoint.getPrefix() + "/select-cache");

    exampleFinder =
        new ExampleFinder(endpoint, selectCache, constructCache, search, questionPreprocessor);

    property2LabelMap = new TreeMap<String, String>();
    property2DatatypeMap = new HashMap<String, Class>();
    propertiesCache = new TreeMap<String, Map<String, Object>>();
    examplesCache = new HashMap<String, Example>();
  }
  public AutoSPARQLSession(String cacheDir, String servletContextPath, String solrURL) {
    this.servletContextPath = servletContextPath;

    constructCache =
        new ExtractionDBCache(cacheDir + "/" + endpoint.getPrefix() + "/construct-cache");
    selectCache = new ExtractionDBCache(cacheDir + "/" + endpoint.getPrefix() + "/select-cache");
    search = new SolrSearch(solrURL);
    exampleFinder =
        new ExampleFinder(endpoint, selectCache, constructCache, search, questionPreprocessor);
  }
 public void saveSPARQLQuery(Store store) throws AutoSPARQLException {
   List<Example> posExamples = new ArrayList<Example>();
   for (String uri : exampleFinder.getPositiveExamples()) {
     posExamples.add(examplesCache.get(uri));
   }
   List<Example> negExamples = new ArrayList<Example>();
   for (String uri : exampleFinder.getNegativeExamples()) {
     negExamples.add(examplesCache.get(uri));
   }
   store.saveSPARQLQuery(
       question,
       exampleFinder.getCurrentQuery(),
       endpoint.getLabel(),
       posExamples,
       negExamples,
       exampleFinder.getLastSuggestedExample());
 }