package edu.stanford.nlp.sempre.tables.lambdadcs; import edu.stanford.nlp.sempre.*; import fig.basic.LispTree; /** * Represents a UnaryDenotation or a MappingDenotation. * * The following operations must be handled: * - Map * - count(UL) * - Aggregate: sum(UL), ... * - Combine * - Merge: and(UL1, UL2), ... * - Arithmetic: sub(UL1, UL2), ... * * Compose operations (join, superlative) are handled in BL. * * @author ppasupat */ public interface Unarylike { public LispTree toLispTree(); public Value toValue(); /** Return the name of the free variable. */ public String getDomainVar(); /** List of possible variable assignments */ public UnaryDenotation domain(); /** List of possible values. */ public UnaryDenotation range(); /** |key| => ??? */ public UnaryDenotation get(Value key); /** ??? => |value| */ public UnaryDenotation inverseGet(Value value); /** count and other aggregate operations */ public Unarylike aggregate(AggregateFormula.Mode mode); /** Return a new Unarylike where only the values found in |upperBound| * and domain values found in |domainUpperBound| are kept */ public Unarylike filter(UnaryDenotation upperBound, UnaryDenotation domainUpperBound); }