A method comprising: generating and storing metadata that maps a domain model to data stored in a plurality of data stores, wherein each data store of the plurality of different data stores is configured to receive requests in a particular query language, wherein the domain model describes the data and relationships between the data; receiving, from a client application, a request for data stored in a first data store of the plurality of data stores, wherein the request is in a first query language; selecting a second query language based on the first data store for which the request was received; translating the request into one or more queries based on the metadata, wherein the one or more queries are in the second query language, wherein translating the request into one or more queries comprises: parsing the request to generate an abstract syntax tree based on the request, the abstract syntax tree comprising a field selection that includes portions of the request that identify particular domain model fields, a condition that specifies filters to be applied to the data and an entity path identifying a particular navigation path defining different aggregation levels; determining a structure of the request and generating a structure model based on the request; generating one or more field annotations for the structure model, the annotations correlating one or more portions of the request with the metadata and comprising query language alias for the one or more portions of the request; generating the one or more queries based on the abstract syntax tree, the structure model, and the one or more field annotations; sending the one or more queries to the first data store; receiving a first result set from the first data store, based on the data store executing the one or more queries. generating and storing metadata that maps a domain model to data stored in a plurality of data stores, wherein each data store of the plurality of different data stores is configured to receive requests in a particular query language, wherein the domain model describes the data and relationships between the data; receiving, from a client application, a request for data stored in a first data store of the plurality of data stores, wherein the request is in a first query language; selecting a second query language based on the first data store for which the request was received; translating the request into one or more queries based on the metadata, wherein the one or more queries are in the second query language, wherein translating the request into one or more queries comprises: parsing the request to generate an abstract syntax tree based on the request, the abstract syntax tree comprising a field selection that includes portions of the request that identify particular domain model fields, a condition that specifies filters to be applied to the data and an entity path identifying a particular navigation path defining different aggregation levels; determining a structure of the request and generating a structure model based on the request; generating one or more field annotations for the structure model, the annotations correlating one or more portions of the request with the metadata and comprising query language alias for the one or more portions of the request; generating the one or more queries based on the abstract syntax tree, the structure model, and the one or more field annotations; sending the one or more queries to the first data store; receiving a first result set from the first data store, based on the data store executing the one or more queries. parsing the request to generate an abstract syntax tree based on the request, the abstract syntax tree comprising a field selection that includes portions of the request that identify particular domain model fields, a condition that specifies filters to be applied to the data and an entity path identifying a particular navigation path defining different aggregation levels; determining a structure of the request and generating a structure model based on the request; generating one or more field annotations for the structure model, the annotations correlating one or more portions of the request with the metadata and comprising query language alias for the one or more portions of the request; generating the one or more queries based on the abstract syntax tree, the structure model, and the one or more field annotations; sending the one or more queries to the first data store; receiving a first result set from the first data store, based on the data store executing the one or more queries.