W3C home > Mailing lists > Public > www-ws-desc@w3.org > October 2005

Re: describing a service that returns an image/jpg (for example)

From: Hugo Haas <hugo@w3.org>
Date: Thu, 20 Oct 2005 15:41:56 +0200
To: "Yalcinalp, Umit" <umit.yalcinalp@sap.com>
Cc: Sanjiva Weerawarana <sanjiva@opensource.lk>, WS-Description WG <www-ws-desc@w3.org>
Message-ID: <20051020134156.GC31808@w3.org>
* Yalcinalp, Umit <umit.yalcinalp@sap.com> [2005-10-19 13:46-0700]
> > -----Original Message-----
> > From: www-ws-desc-request@w3.org 
> > [mailto:www-ws-desc-request@w3.org] On Behalf Of Sanjiva Weerawarana
> > Sent: Tuesday, Oct 18, 2005 6:39 PM
> > To: Hugo Haas
> > Cc: WS-Description WG
> > Subject: Re: describing a service that returns an image/jpg 
> > (for example)
> > 
> > 
> > On Tue, 2005-10-18 at 18:06 +0200, Hugo Haas wrote:
> > > That's a nice trick which I think works, and works well for binary
> > > content. However, in LC337, the DAWG talks about HTML, plain text,
> > > RDF. Won't they be forced to declare say their RDF as 
> > Base64-encoded?
> > 
> > I know that sucks, but that's the reality of SOAP (and XML 
> > really): You
> > can't embed HTML without base64 encoding it. Nor can you embed an XML
> > document in SOAP without encoding it. If application/rdf+xml 
> > is used to
> > carry an entire XML *document*, then there's no option but to 
> > encode it
> > to carry it in SOAP.
> > 
> > Text is slightly special and can obviously be done with just escaping
> > instead of encoding but IMO its not worth special casing.
> 
> A big +1. 
> 
> We had the same discussions during the media types document work and
> realized that there is simplicity in the restriction and restricted
> ourselves to base64 from the beginning.

So, to be clear, what you are proposing is the following:
- identify serialization formats with a media type token
- keep our 3 defined serializations:
  application/x-www-form-urlencoded, application/xml,
  multipart/form-data
- define a new style:
  http://www.w3.org/YYYY/MM/wsdl/style/base64-encoded
- say that any serialization format other than the 3 formats we
  defined are defined as a message reference pointing to one element
  of time xsd:base64 with an xmime:expectedContentType attribute, that
  the value of xmime:expectedContentType must match the serialization
  format name, and that this name is the content-type to use

I am afraid that it will make the use of other schema languages and
models other than the Infoset (e.g. RDF) useless for our HTTP binding
without a required extension.

For example, if I define an extension to use Relax NG as my schema
language, I will need to come up with a {rng http input serialization}
property overriding {http input serialization} to be able to serialize
the message as application/x-www-form-urlencoded in addition to the
serialization format itself. With my alternate proposal at [1], I
would just give a now URI for this application/x-www-form-urlencoded
serialization format.

Here's a comparison:

Sanjiva's option:

  <rng:support wsdl:required="true"/>

  <interface>
    <operation>
      <input rng:element="my:input"/>
      <output element="my:output"/>
    </operation>
  </interface>

  <binding>
    <operation whttp:method="GET"
    rng:inputSerialization="application/x-www-form-urlencoded"/>
  </binding>

Hugo's option:

  <interface>
    <operation>
      <input rng:element="my:input"/>
      <output element="my:output"/>
    </operation>
  </interface>

  <binding>
    <operation whttp:method="GET"
    whttp:inputSerialization="http://hh.example/http/rng/application/x-www-form-urlencoded"/>
  </binding>

Also, it is worth noting that, for DAWG, who wants to do something
like whttp:outputSerialization="application/xml, application/rdf+xml",
they will have an output message declaration as follows:

  <element name="sparql-results">
    <complexType>
      <choice>
	<element maxOccurs="1" ref="vbr:sparql"/>
	<element name="rdf:RDF" type="xsd:base64"
		 xmime:expectedContentType="application/rdf+xml"/>
      </sequence>
    </complexType>
  </element>

I don't think it's anything we can't describe with a style. However,
styles are at the operation level, so it may mean that we need a
http://www.w3.org/YYYY/MM/wsdl/style/base64-encoded-in and
http://www.w3.org/YYYY/MM/wsdl/style/base64-encoded-out to be able to
serialize those media types both in an HTTP request or response,
though we may want to constrain the input and care only about the
output.

I have to say that I prefer my solution: it's just proposing to change
the naming of the serialization formats, and we're done, without
restricting any of our functionality and forcing people to
Base64-encode data (or pretend to).

Cheers,

Hugo

  1. http://lists.w3.org/Archives/Public/www-ws-desc/2005Oct/0028.html
-- 
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/

Received on Thursday, 20 October 2005 13:42:07 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:37 GMT