1. A computer-implemented method of querying distributed data sources, the method being executed using one or more processors and comprising: receiving, by one or more processors, a query; identifying, by the one or more processors and based on the query, one or more relevant elements from an overall data model stored in computer-readable memory, the overall data model specifying relationships between classes, sub-classes and attributes, each relevant element being an element of the overall data model and being determined to be relevant to the query; identifying, by the one or more processors and using an adapter mapping, one or more adapters based on the one or more relevant elements, the adapter mapping associating each relevant element with a particular adapter, each adapter providing credentials for authenticating and authorizing access to the one or more data sources, and at least one adapter comprising a generic adapter configured to be specific to a data source type of the one or more data sources based on one or more configurations to associate data provided in a respective data source to the overall data model; querying, by the one or more processors and using the one or more adapters, one or more data elements in heterogeneous data sources of the disparate data sources, each adapter being specific to a data source of the one or more data sources; in response to querying, receiving, at the one or more adapters, one or more data results; transforming, by the one or more processors, each data result of the one or more data results into a unified data format to provide respective one or more transformed data results; storing the one or more transformed data results in a temporary data store; and querying the temporary data store based on the query to generate a result.