simplify data access by requiring that users only specify what data they want to access without defining how access will be achieved
a language that allows users to state what data is needed rather than how it is retrieved
definitions to specify what has to be accomplished