1. A method for gathering data from one or more data sources comprising: receiving, from a requesting entity, a query comprising at least two individual predicates involving one or more fields contained in the one or more data sources; decomposing the received query into the individual predicates; and for each data source, identifying one or more of the individual predicates involving fields contained in the data source, generating an effective query based on the identified individual predicates, and issuing the effective query against the data source.