1. A method comprising: receiving first data at a service from a client application, the received first data comprising information descriptive of at least one field of a data assemblage used by the client application and partial data having at least one value that constrains the at least one field, where the data assemblage represents a form containing the at least one field that is to be displayed by the client application to a user with a user interface of the client application, the at least one field being one in which the user of the client application will enter user data into the displayed form to be validated by the client application; processing the received first data at the service to form an array comprised of legal data for the at least one field, the array being formed by merging a result of processing syntactic constraints to define field type information for the at least one field and a result of processing semantic constraints to define legal values for the at least one field based at least on the partial data; outputting the array formed by the merging of the result of processing syntactic constraints and the result of processing semantic constraints from the service to the client application such that the client application configured to generate the form based on both the field type information and the legal values in the array for the at least one field such that the client application is enabled to validate user data that is subsequently entered by the user of the client application into the at least one field; and where in response to the client application iterating over a workflow associated with the outputted array formed by the merging of the result of processing syntactic constraints and the result of processing semantic constraints, receiving at the service from the client application a request for more legal data for at least one co-constrained field of the form that is displayed to the user that was not previously specified by the client application in the received first data.