1. A method for deriving user intent from a query, the method comprising the steps of: defining a plurality of domains that correspond to a plurality of possible user intents, each domain having a hierarchy of predicates; receiving a query from the user; and selecting a domain based on the query and the hierarchy of predicates.