======================================================================= This is a brief description of the Haskell implementation of Web Service Algebra (Institut für Informatik, Universität Augsburg) (c) December 2007 by Peter Höfner & Florian Lautenbacher ======================================================================= 0. Prerequisites ---------------- The Package requires a Haskell implementation; please see http://www.haskell.org for download and installation guides. We will assume that users of our implementation have at least a superficial knowledge of Haskell. 1. Package Structure -------------------- The basic module is WebService.hs . It is a proper Haskell module that needs to be imported into the definitions of particular feature algebras. Samples of usage are provided by the file BusinessTrip.hs This provides a implementation of a business trip example discussed in the accompanying report "Algebraic Structure of Web Services" available from http://www.informatik.uni-augsburg.de/lehrstuehle/dbis/pr/wsalgebra.html To use the example, simply load the BusinessTrip.hs file into your Haskell interpreter or compiler, i.e., :l BusinessTrip.hs 2. Main Types and Functions --------------------------- Each simple Web Service is typed as Rel [String] therefore the simple Web Service can be set as a set [(set [data],set [data])], To reach an (extended) Web Service one needs to blow this simple Web Service up. blow ws creates an extended Web Service and blows it up with additional information blow t blows up a test and extends it with additional data buildplan creates a plan for a Web Service Concatenation of Tests or Web Services can be achieved by using ##. The negation of a test can be reached using neg. The choice of Web Services is done using WS \/ WS The (forward) diamond (|x>p) is modelled as fd (x) p, the (forward) box as fb (x) p. The Kleene star (*) is described simply as star. Hence, a query like not(etix+etix2); |flight*> |flight*] (etix;etix2) could be modelled as buildplan ((neg (t1\/t2))##(fd (star flight) (fb (star flight) (t1##t2)))) 3. Further Usage ---------------- For outputting the result of a normalisation into a file and the like the standard Haskell operations of result type IO() may be used; currently we do not provide special operations for this. 4. Feedback ----------- We are very interested in hearing from users. Please send your comments to hoefner@informatik.uni-augsburg.de or lautenbacher@informatik.uni-augsburg.de.