Re: Data Access WG questions about WSDL

Hi Kendall.

* Kendall Clark <kendall@monkeyfist.com> [2005-08-15 14:24-0400]
> I'm working on the SPARQL Protocol for the Data Access Working Group (and
> I'm the UMD alternate on WS-DESC), and I have a few questions about WSDL2
> and the HTTP bindings in particular:
> 
> 1. Is this a legal combination for an operation binding: whttp:method="POST"
> and whttp:inputSerialization="application/x-www-form-urlencoded"?
> 
> We don't have an XML representation of our query language, and we think in
> some cases SPARQL queries, serialized into an IRI with the GET method, may
> be too long to reliably work on all HTTP servers/clients. So we've added
> another binding that uses POST, and we'd like the message body to contain
> application/x-www-form-urlencoded data.

I don't see why it would not work. However, what you are going to end
up with is a POST of an empty message to a IRI built based on the
instance data, and I don't think that it's the solution you were
after.

Didn't you want to use multipart/form-data is an input serialization
instead? And in which case, yes, you can do it.

> 2. Our interface, SparqlQuery, has one operation, query. The Media Type of
> the message returned by query depends on the kind of query submitted to the
> service: SELECT and ASK return application/sparql-results+xml; DESCRIBE &
> CONSTRUCT return application/rdf+xml.
> 
> So, the question: is there a way to say that the whttp:outputSerialization
> of an operation binding is one of 2 or more Media Types? We have *no other
> reason* to split the query operations into separate operations. Both
> application/sparql-results+xml and application/rdf+xml *can* be described as
> application/xml, but we'd like to be able to describe our service more
> accurately than that.

The value of whttp:outputSerialization is "a IANA media type
token"[1], which interestingly doesn't have a reference to define it
clearly, but I don't think that it allows something like
"application/*", or "application/sparql-results+xml
application/rdf+xml", or even "application/sparql-results+xml,
application/rdf+xml".

So WSDL doesn't allow you to do what you want to.

Talking to Eric Prud'hommeaux about this, we actually wondered what
would happen if one was declaring two binding operations with
identical input parameters but different output ones:

  <interface name="SPARQL">

    <operation name="one" wsdlx:safe="true"
	       pattern="http://www.w3.org/2005/08/wsdl/in-out"
	       style="http://www.w3.org/2005/08/wsdl/style/iri">
      <input messageLabel="Query" element="s:query"/>
      <!-- maybe there's a better specification than #any here
           but that will do for the purpose of this example -->
      <output messageLabel="Result" element="#any"/>
    </operation>


    <!-- this one is identical to the previous one -->
    <operation name="two" wsdlx:safe="true"
               pattern="http://www.w3.org/2005/08/wsdl/in-out"
               style="http://www.w3.org/2005/08/wsdl/style/iri">
      <input messageLabel="Query" element="s:query"/>
      <output messageLabel="Result" element="#any"/>
    </operation>

  </interface>

  <binding name="HttpBinding" interface="m:GetTemperature"
           type="http://www.w3.org/2005/08/wsdl/http">
    <operation ref="m:one" whttp:method="POST"
               wttp:inputSerialization="multipart/form-data"
               wttp:outputSerialization="application/sparql-results+xml"/>
    <!-- only the output serialization changes -->
    <operation ref="m:two" whttp:method="POST"
               wttp:inputSerialization="multipart/form-data"
               wttp:outputSerialization="application/rdf+xml"/>
  </binding>

Correct me if I'm wrong, but I don't think that the specification
prevents this, and I would interpret this as "you may get either one".
But it's ugly in this case.

It actually may be possible to change the definition of the
serialization properties to allow for a list of media types instead of
one particular media type.

> 3. Similarly, we'd like to avoid having to require a particular fault
> serialization type in our HTTP bindings. That is, we anticipate SPARQL
> services being free to serialize fault messages in several different Media
> Types: plain text, HTML, XML, RDF, etc.
> 
> If whttp:faultSerialization is a required property and the default value
> doesn't describe our service, what alternative do we have?

Maybe the fault serialization should be a property of the Binding
Fault and Binding Fault Reference components, rather than of the
Binding Operation, which would solve your problem.

As WSDL 2.0 is in LC until 19 September, I encourage you to send all
the feedback you may have as a result of this discussion to
public-ws-desc-comments@w3.org.

Cheers,

Hugo

  1. http://www.w3.org/TR/2005/WD-wsdl20-adjuncts-20050803/#http-operation-decl-relate
-- 
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/

Received on Tuesday, 16 August 2005 13:01:49 UTC