XML All-purpose Protocol

home page
Added 2000-11-03
This was writen last spring. I spoke about this at WWW9 Conference, publicly during questions at SOAP session. And it seems that somehow these ideas have been incorporated in emerging standards like UDDI (http://www.uddi.org) and WSDL (http://www-4.ibm.com/software/developer/library/w-wsdl.html). But it is clear that the XML All-purpose Protocol is a more general mechanism both for Web services and discovery. By this I mean that UDDI and WSDL services can probably be expressed as XAP services.
 

This could also be called XML distributed architecture. For distributed computing, I expect HTTP+XML to dominate over Corba and COM in the long term. But SOAP (http://search.ietf.org/internet-drafts/draft-box-http-soap-01.txt) and XML-RPC are not enough. The need for servers to publish their schemas for queries and responses is fondamental. Moreover the publication of the schemas, and their consultation by the client, allows to simplify the subsequent messages (see here the consequences for SOAP).

I you  try to imagine how an application could navigate through Internet, searching resources, much like us humans navigate on Internet, starting with a search engine, and surfing from page to page, you can arrive to this solution:

Axioms:

The proposed solution

Specify an XML service

At a well-known or starting point URL there could be a service specifying other services. And there the content would be something like:

<serversDirectory xmlns="http://www.w3.org/2000/XAP">
  <service xmlns:myVocab="http://myCom.com/">
   <url>http://myCom.com/service.pl</url>
   <vocabulary>http://www.myCom.com/service.xs</vocabulary>
   <keyword>online shop</keyword><keyword>wine</keyword>
   <defaults><myVocab:myProperty>my value</myVocab:myProperty></defaults>
   <query>
    <query-element> myVocab:myQuery </query-element>
    <!-- name of an XML element in this vocabulary specifying the query -->
    <result-element> myVocab:myResult </result-element>
    <!-- name of an XML element in this vocabulary
         specifying the result of the query (a priori only one
         result-element per query) -->
    </query>
  </service>
</serversDirectory>

Of course every name beginning with "my" isn't part of the specification. The XAP specification has (provisional) XML namespace http://www.w3.org/2000/XAP , and here is is an XML Schema for XAP.

Notes:

Client server protocol

Most of the semantics of the communication is specified prior to the message by the serversDirectory element described above. What remain to specify are book-keeping and error managing items.
Session ID
This is similar to the transactionID  from SOAP. This is an identifyer for a session, unique at least at server level. It must be attributed by the server the first time it encounters a client, and afterwards should be re-sent by both. The client starts a new session by sending a request without a SessionID.
Error managing
to be completed.

Protocol for distributed botanical knowledge

This is just an example showing how a system can be made of very independant data sources, sharing a set of XML Schemas.

Request types

Response types

The architecture will leave applications free to use informations for their purposes. These requests will return either simply a number of responses, or a list of URI representing univoquely taxa. Then another kind of request will send a list of taxa URI , and will receive data :