Semantics of Web Services
Some days ago linked-data expert Daniel Koller who asked me on Twitter why I’m disappointed with existing semantic web service standards. Those standards are very ambitious as enabler for service governance and even automatic composition of services. I answered in a long series of tweets – perhaps the longest series I ever tweeted so I thought I could be worth to blog.
In the past I learned that semantic web service standards are difficult and so is SOA governance in an enterprise architecture. SAP has already a powerful design time for web services together with lots of documentation how to use it on SDN. Enterprise Services Repository&Registry . The ESR is far more than a graphical WSDL editor: it supports graphical object models and relationships between them. It allows classifications of service interfaces using the existing meta model which is the stored in the Services Registry. The latter is a UDDI compliant tool for service exposition and discovery – but as general world wide web standards they failed because of the distributed nature of the web.
And this leads me to some important point: people submit standards that could be useful -hopefully. But I’m not sure whether those standards address people’s needs. As a consequence it would be useful if we would start a discussion whether tool support for web services is sufficient or we need better tools and perhaps new standards.
The Properties of Enterprise Services
SOAP web services are difficult because they rely on very complex standards XML Schema, WSDL, SOAP whose complexity needs to be tamed using other standards like WS-I Basic Profile. But none of those standards guarantees semantic interoperability and well designed web services which have common data model, quality criteria like idempotency. So well designed SOAP web services have to be built using guidelines – SAP calls such services “Enterprise Services”. Those are developed within the Enterprise Service Repository (ESR) and they are documented in SAP Solution Manager and in enterprise service workplace.
The enterprise service workplace tells us a lot about SAP Enterprise Services: http://esworkplace.sap.com/ – most of the information can be maintained in ESR:
- Is it a A2X, A2A or B2B service?
- To which business object / business scenario does it belong?
- What are its operations and data types?
- From which global data types are the data types derived?
- Is it a change or update service?
- Is it synchronous or asynchronous?
- Is it idempotent?
- Is it released?
In fact these additional information define the semantics of a web service: They define properties of web services.
There is only one weakness because some important properties are coded using naming conventions. Let me give an example: If you want to develop an Enterprise Service that checks whether deletion of an purchase order is possible you have to chose the name “PurchaseOrderCancelCheckQuery” for the operation. These names are related to business objects and various communications patterns. It would be nice if there automatics checks whether those naming conventions are correct. Therefore we need two things: at first the possibility to enrich service definitions with metadata and automatic checks of services definitions against the metadata – a kind of ABAP Code Inspector for Web Services.
And there is another problem: above list of properties is not complete – let me give some additional examples:
- What about methods for mass changes? Is it a bulk or bundle service?
- What is the winning strategy when there are parallel request? Is it “first one wins”, “last one wins” or “everybody wins”?
- If the value of code lists is related to customizing within the backend system?
- Which part of the payload is relevant for idempotent behaviour?
- Can I use the service or have I to implement a certain business process in the SAP backend first perhaps by switching on a certain enhancement and doing customizing?
Let me summarize: SAP provides a methodology for developing web services and offers tool support for enterprise services that follow these guidelines. With those tools we can define standardizes properties of enterprise services. We can link them to business objects and so we obtain a precise semantics of services. There are only a few things that could be improved.
In fact there a bunch of similar standards which provide huge frameworks describing information models, message exchange patterns and even the technical layer (see HL7 for example http://xml.coverpages.org/ni2004-05-06-a.html ). If you want to exchange SOAP messages to those systems you’ll have to achieve an understanding of the semantics of their exposed SOA services. The question is whether tools from knowledge management can help you or if you have to learn the underlying information models, message exchange patterns and so on from scratch. So the question is whether other SOA installation provide tools like SAP’s ES workplace? So I got curious whether if there is a web standard that makes it possible to describe the semantics in a generic way as a kind of “SOA esperanto” which could help to bridge the gap between different “SOA worlds”.
What about existing standards?
Some time ago I read about OWL-S (OWL-S: Semantic Markup for Web Services – see http://www.daml.org/services/owl-s/1.1/overview/ ) which is quite promising but I’m not sure whether this standard addresses above mentioned aspects. OWL-S is allows to define a co called profile for defining additional features (including input and preconditions) of web services that are useful for discovery processes, a process model and the so called grounding that links the gab between the process model and the request / response information. In fact OWL-S has a good tool support based on Eclipse, so it is easy for you to do your first steps: http://thesemanticway.wordpress.com/2008/12/15/installing-owl-s-ide-eclipse-plugin/ . For me it is one of the most promising standards.
There lots of more of those standards and decided to do some research. Let’s have a look at Semantic Web Services Language (SWSL), W3C Member Submission 9 from September 2005 http://www.w3.org/Submission/2005/SUBM-SWSF-SWSL-20050909/ When I looked into the header of the specification I got sceptical: nearly everyone of the submitters was a teacher at a university. The chapter 2 began with promising words:
„The SWSL-Rules language is designed to provide support for a variety of tasks that range from service profile specification to service discovery, contracting, policy specification, and so on.”
Wow – this sounds great! So I got curious and read on:
“The core of the language consists of the pure Horn subset of SWSL-Rules. The monotonic Lloyd-Topor (Mon LT) extension [Lloyd87] of the core permits disjunctions in the rule body and conjunction and implication in the rule head. NAF is an extension that allows negation in the rule body, which is interpreted as negation-as-failure. More specifically, negation is interpreted using the so called well-founded semantics [VanGelder91]. The nonmonotonic Lloyd-Topor extension (Nonmon LT) further permits quantifiers and implication in the rule body. The Courteous rules [Grosof99a] extension introduces two new features.”
This reminded me of my lectures in mathematical logic years ago and especially of the exam: I learned a lot but obviously the wrong things so after some minutes I had to admit that I couldn’t answer the questions. After I rushed over the rest specification I felt the same frustration like in my exam. I appreciate formal representation of concepts but I f every Semantic Web specification is written that way Semantic Web will be an intellectual game of theoretical computer scientists.
The next standard I looked at was the Semantic Web Services Ontology (SWSO) from September 2005: http://www.w3.org/Submission/2005/SUBM-SWSF-SWSO-20050909/ . It starts promising:
“FLOWS is intended to enable reasoning about essential aspects of Web service behavior, for a variety of different purposes and contexts. Some targeted purposes are to support (a) descriptions of Web services that enable automated discovery, composition, and verification, and (b) creation of declarative descriptions of a Web service, that can be mapped (either automatically or through a systematic process) to executable specifications.”
But it took only some lines until the mathematical logic bubble began:
“It is important to note that the specification of the FLOWS ontology in first-order logic does not presuppose that the automated reasoning tasks described above will be realized using a first-order logic theorem prover…”
There are more Semantic Web standards and perhaps I’ll find the time to look at them in depth
Some of them seem to be readable and to understand the others I’ll have to find my books about mathematical logic before I start reading.
But one thing is for sure: I don’t expect Semantic Web standards to be simple because it’s about web crawling bots with reasoning capabilities but I am asking which one of the above standards will be ever implemented outside a university. Most IT people won’t understand them and there won’t be any flourishing community that will contribute pieces of software compared to Eclipse.
What Web 3.0 can learn from Web 2.0
I learned that Semantic Web Services are difficult: The specifications are hard to understand often you need detailed knowledge about dozens of W3C standards and understanding of mathematical logic. There are only a few implementations of those standards so it’s hard to learn them by playing with simple show cases. Nevertheless I won’t give up and blog about some standards which seem to be promising at least for me.
But one thing seems to be obvious: Most standards come from academia and I doubt that they reflect what people need. I would suggest that we should look what are the challenges in service creation, maintenance and SOA governance in general and how semantic techniques could help.
Without any implementation only a few people will understand standards. Every new standard should provide an implementation and there should be a community discussing and evolving standards and related technology. We should start to explain semantic technology in YouTube and build prototypes.