In service-oriented architectures, applications are developed by integrated services which are often provided by different organizations. Since a service might be offered under different conditions by various different organizations, sophisticated service selection and negotiation algorithms are required. Policies capture the conditions under which services are offered or requested and thereby constrain the negotiation space. However, current policy languages are ill-suited to realize beneficial trade-offs within a negotiation, since they support only boolean decisions and cannot capture all relevant service information. Therefore, we present a novel policy language in this work that provides two main contributions: (i) We enable the specification of constraints on functional as well as non-functional properties of Web services. The functional properties include data objects and the behavior, whereas the non-functional properties include QoS attributes. (ii) Given such constraints, we show how the concept of utility function policies can be used to define cardinal preferences over functional as well as nonfunctional properties. This is required to rank Web service offers, define their prices, and consequently to realize automated negotiations between service providers and requesters.