In this post https://buddhiraju.wordpress.com/2011/12/03/xsdannotations/ I described some of the problems with WSDL as a language to describe web-services. The key problem being that WSDL is a specification with focus on describing a web-service interface rather than the semantics of the web-service. A WSDL typically describes a set of operations, their input and output message structures as well as the messaging protocol(s) and address(s) / endpoint(s) to be used for accessing the service. However WSDL itself does not have a formal way of describing the “meaning” of these web-service operations.
The most common ways to associate a meaning with WSDL is using
- Annotations / descriptions on the WSDL
- Well-defined naming conventions for services, messages, operations and their namespaces
- SOA governance tools which support enrich WSDL interfaces by additional categorization, tagging
- Product and service portfolio documentation links
The above solutions work fairly well for a user to lookup a portfolio of web-services, read their descriptions and choose a service that matches his requirement best. For example a user can navigate through the “Travel > Car Rental > USA” categories in a web-service catalog to find multiple car-rental web-services. The user can easily guess what functionality a “CarRentalService” from “http://www.avis.com” is likely to provide. The user can drill down into the service operations and identify the purpose of “createBooking”, “cancelBooking” operations. The associated XSD and embedded annotations will describe in detail the inputs and outputs and sample code will help the user get started in developing client-code for the WS.
However, as the semantic-web gain momentum, there is a need for user-agents / bots to perform intelligent actions on Web on behalf of the user. These software agents should be able to discover and invoke web-services as easily as users can. However ability to discover service by navigating through arbitrary category hierarchy or by guessing the service functionality from the name of a service and confirming its behavior by looking up supporting unstructured documentations content – are tasks which are as difficult for a bot as they are easy for a human.
The Semantic-web advocates that the content generated and added to web be annotated with additional machine friendly meta-data which can associate a meaning to the generated content. RDF, OWL along with XML are building blocks for the semantic web. http://en.wikipedia.org/wiki/Semantic_Web
OWL-S is ontology (read a formal description) of a web-service built using the Web Ontology Language (OWL). OWL-S can be used to describe what a service offers, how the service is used as well as the details about interacting with the service using the ServiceProfile, ServiceModel and ServiceGrounding properties of the OWL-S Service class. The ServiceGrounding which specifically deals with the service interface/interaction mechanism can in turn make use of a WSDL for the same http://www.w3.org/Submission/OWL-S/
Thus a service provider can create OWL-S descriptions for web-services along with WSDLs for capturing the concrete service interface details. These can potentially be used by user-agents and bots to dynamically discover, bind and invoke web-services without any user intervention.
Free and open-source tools for creating OWL-S http://www.ai.sri.com/daml/services/owl-s/tools.html
Currently OWL-S is still a submitted W3C proposal. There seems to be no real adoption of this standard in the industry by any major commercial vendors or open-source frameworks. Most interest in the standard is in the academic world. And also there is the Web Service Modelling Ontology (WSMO) is an alternative semantic model for describing web-services. http://www.wsmo.org/2004/d4/d4.1/v0.1/20050106/d4.1v0.1_20050106.pdf
It could be several years before any of these efforts result in some kind of standard. However as developers of web-services it is extremely important to be aware of the need to think beyond the WSDL to make it easier for your web-services to be discovered and used by humans and machines alike.