The greater and greater availability of services over the web motivates the growing interest in techniques that facilitate their re-use. A web service specification can be quite complex, including various operations and message exchange patterns. In this work, we propose a rule-based declarative representation of services, and in particular of WSDL operations, that enables the application of techniques for reasoning about actions and change, that are typical of agent systems. The representation allows reasoning on choreography roles and on possible role players, to the aim of selecting services which match in a flexible way with the specification. Flexible matches are an important tool that allows web service re-use but the proposals in the literature do not guarantee the preservation of those goals, that can be proved over the role specification. We show how to enrich various well-known matches so as to produce substitutions that preserve goals and that do not require service rollback. We also discuss the problem of the joint achievement of the individual goals of a group of choreography role players.