Updating WSDL Component Designators

Appendix C [1] of our spec describes a mechanism for assigning URIs to
WSDL components using fragment identifiers to combine the
targetNamespace with an XPointer-like component identifier.  The
technical problems with this approach were referred to the TAG [2].  The
heart of the issue is the inappropriateness of using fragment
identifiers in conjunction with abstract URIs such as namespaces.  By
abstract I mean URIs without an expectations that dereferencing will
return a representation of a resource.

To avoid that problem, I propose using the query component of URI [3]
instead of fragment identifiers.  The syntax would be:

  <targetNamespace>?wsdl-<componentName>=<path1>.<path2>.<path3>

Note that this is not recursive, nor accommodates target namespaces with
query parameters in it.  If these are desirable, the algorithm could
look for a query component '?' and if one exists, use ':' as a delimiter
instead:

  <targetNamespace>;wsdl-<componentName>=<path1>.<path2>.<path3> if the
targetNamespace does contain a query component.

Here's what such a proposal would do to the URIs in example C-2 [1]:

http://airline.wsdl/ticketagent/?wsdl-interface=TicketAgent 
http://airline.wsdl/ticketagent/?wsdl-operation=TicketAgent.listFlights 
http://airline.wsdl/ticketagent/?wsdl-input=TicketAgent.listFlights.list
FlightsRequest
http://airline.wsdl/ticketagent/?wsdl-output=TicketAgent.listFlights.lis
tFlightsResponse 
http://airline.wsdl/ticketagent/?wsdl-operation=TicketAgent.reserveFligh
t 
http://airline.wsdl/ticketagent/?wsdl-input=TicketAgent.reserveFlight.re
serveFlightRequest
http://airline.wsdl/ticketagent/?wsdl-output=TicketAgent.reserveFlight.r
eserveFlightResponse

With the additional recursive functionality, and if the targetNamespace
for some reason was a WSDL Component Designator such as
"http://airline.wsdl/ticketagent/?wsdl-interface=TicketAgent", here's
what you'd get:

http://airline.wsdl/ticketagent/?wsdl-interface=TicketAgent;wsdl-input=s
omething

And if the targetNamespace already had a query param, like
"http://airline.wsdl/ticketagent?wsdl", you'd get:

http://airline.wsdl/ticketagent?wsdl;wsdl-interface=TicketAgent

I think this mechanism is reversible.  Comments?

[1]
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl12/wsdl12.html#wsdl
-uri-references
[2] http://lists.w3.org/Archives/Public/www-tag/2003Feb/0042.html
[3] http://www.ietf.org/rfc/rfc2396.txt

Received on Monday, 15 September 2003 16:06:40 UTC