INTRODUCTION
Applications commonly require access to proprietary or large datasets, or computational functionalities unavailable to them. Web services address these challenges by providing such resources over the Internet. In the advent of serviceoriented computing, standards were created to define various implementation aspects of web services. For example, Universal Description Discovery & Integration (UDDI) [1] addresses service identifiability, SOAP [2] prescribes how to implement service interfaces to enable interoperability, the web service description language (WSDL) [3] guarantees uniform, machine-readable service descriptions, and various standards of the WS-* stack address concerns such as service composition, coordination, or security [4]. The design of many real-world services, however, does not follow these standards and remains largely organic. Most web services expose web application programming interfaces (web APIs), which follow diverse conventions and whose descriptions are dispersed and heterogeneous. Concepts like identifiability, interoperability, or composability are implemented idiosyncratically, when at all. The envisioned benefits for service-oriented architectures have thus not been reaped.