A method for responding to a query at computer system comprising a query evaluator, the method comprising: an act of receiving, by the query evaluator, a property value access query, the property value access query querying for a property value of a property identified in a previously received data construction statement of an object, the data construction statement including: one or more property identifiers, each one of the property identifiers identifying a property of the object; and one or more mappings, wherein each mapping maps one of the property identifiers to a query expression that indicates how to compute the value of the property of the object identified by the property identifier; an act of identifying, by the query evaluator, a data provider based on data contained in the property value access query, wherein the data provider was created from said previously received data construction statement of the object, and wherein the data provider virtualizes data access so that the properties of the object described by the data construction statement can be accessed without having to fully construct the entire object, the data provider including an association map between each of the property identifiers and the query expression to be used to compute the value of the property identifier; an act of placing, by the query evaluator, the identified data provider in a stack associated with the query evaluator; an act of creating, by the query evaluator, a data consumer for the property value access query; an act of the data consumer accessing the identified data provider from the stack; an act of the data consumer requesting the property value of the identified property from the data provider; an act of the data consumer receiving the property value of the identified property from the data provider; an act of the data consumer placing the received property value in the stack. an act of receiving, by the query evaluator, a property value access query, the property value access query querying for a property value of a property identified in a previously received data construction statement of an object, the data construction statement including: one or more property identifiers, each one of the property identifiers identifying a property of the object; and one or more mappings, wherein each mapping maps one of the property identifiers to a query expression that indicates how to compute the value of the property of the object identified by the property identifier; one or more property identifiers, each one of the property identifiers identifying a property of the object; and one or more mappings, wherein each mapping maps one of the property identifiers to a query expression that indicates how to compute the value of the property of the object identified by the property identifier; an act of identifying, by the query evaluator, a data provider based on data contained in the property value access query, wherein the data provider was created from said previously received data construction statement of the object, and wherein the data provider virtualizes data access so that the properties of the object described by the data construction statement can be accessed without having to fully construct the entire object, the data provider including an association map between each of the property identifiers and the query expression to be used to compute the value of the property identifier; wherein the data provider was created from said previously received data construction statement of the object, and wherein the data provider virtualizes data access so that the properties of the object described by the data construction statement can be accessed without having to fully construct the entire object, the data provider including an association map between each of the property identifiers and the query expression to be used to compute the value of the property identifier; an act of placing, by the query evaluator, the identified data provider in a stack associated with the query evaluator; an act of creating, by the query evaluator, a data consumer for the property value access query; an act of the data consumer accessing the identified data provider from the stack; an act of the data consumer requesting the property value of the identified property from the data provider; an act of the data consumer receiving the property value of the identified property from the data provider; an act of the data consumer placing the received property value in the stack.