package edu.stanford.nlp.sempre;
import java.util.*;
import edu.stanford.nlp.sempre.FuzzyMatchFn.FuzzyMatchFnMode;
/**
* Interface for knowledge sources that, given a phrase, can retrieve all its
* predicates that (fuzzily) match the phrase.
*
* @author ppasupat
*/
public interface FuzzyMatchable {
/**
* Return all entities / unaries / binaries that approximately match the
* string formed by joining sentence[startIndex], ..., sentence[endIndex-1]
* with spaces.
*
* This allows the algorithm to consider the context of the term being matched.
*
* One possible implementation, which ignores the context, is calling
* getFuzzyMatchedFormulas(term, mode) where
* term = String.join(" ", sentence.subList(startIndex, endIndex))
*/
public abstract Collection<Formula> getFuzzyMatchedFormulas(
List<String> sentence, int startIndex, int endIndex, FuzzyMatchFnMode mode);
/**
* Return all entities / unaries / binaries that approximately match the term
*/
public abstract Collection<Formula> getFuzzyMatchedFormulas(String term, FuzzyMatchFnMode mode);
/**
* Return all possible entities / unaries / binaries
*/
public abstract Collection<Formula> getAllFormulas(FuzzyMatchFnMode mode);
}