Re: Sample Application described in WSDL using HTTP binding and showing messages

On Wed, Jun 09, 2004 at 10:05:27PM -0700, David Orchard wrote:
> This is one area that is troubling me a lot.  The areas that I'm having difficulty wrapping my mind around, and collectively are issue 189:

Understood.

> - The difference between requesting a specific entity versus searching for entities that match specified criteria, ie getThing versus QueryForThings

The latter can be considered, both in theory and practice (in most
cases), as a special case of the former.  That is, both are resources,
and asking a resource for its current state with GET can be used to
retrieve both types of data.

> - How to specify CRUD methods on properties of resources, ie the Artist things.  

1. GET a representation from URI
2. change the value of the property you want to change in that representation
3. PUT representation back to same URI
(viz a viz my lightbulb example[1])

That also changes the state of the other properties, but I've found that
this is either ok, or else you're really talking about another resource
and therefore another URI.

> - How to model identifiers - URIs, ID, name, href - all seem muddled together.  I tried to show 2 cases, where there was an ID element that the wsdl binding said could be used to generate URIs (client generated URIs) and case where the server generated the URI (opaque URIs).  However, it most cases IDs are attribute, and names/href attributes are often used.

Your server-generated URIs are fine, but your client-side generated
ones suffer from not explicitly declaring that "ID" is special and
its value is really a relative URI.  This would be better, as I think
you're suggesting with your mention of href;

Example: ArtistSearch 
GET /Music/Artist?genre="electronica"

Return:
<Music>
  <Artist xlink:href="5">
    <Name>Thievery Corp</Name> 
    <Genre>Electronica</Genre>
    <site>http://thievery.com</site>
  </Artist>
</Music>

In general though, IDs that are part of the schema are probably a bad
idea, since they serve as identifiers and aren't typically URIs.

> - How to model Qnames - it's all well and good if things are in same ns, but then they get hairy if there's multiple ns.

I avoid them like the plague, and haven't had to use them.  One of the
more obscure advantages of using RDF/XML over of vanilla XML, is that
you get a QName-to-URI algorithm for free; string concatenation.

> - How to simply(!) extend a schema and have the URI space that is defined by the schema + location tags automagically be updated.

Sorry, don't follow.  "location tags"?

> - How to describe the situation where part of the message is in the URI and all of it is in the body, specifically a PUT.

Depends what part you mean.  The only issue I've ever had with PUT in
this regard is where the document specifies the URI of the resource it
represents, and that's where you're putting it back.  So you could
imagine having this document;

  <Artist xlink:href="5">
    <Name>Thievery Corp</Name> 
    <Genre>Electronica</Genre>
    <site>http://thievery.com</site>
  </Artist>

then PUTing it back to {base URI}99; you expect the href to be ignored
and the state of the "99" resource to be reflected by the rest of the
document.

> - How to specify a NodeList versus a typed Node, ie does GetArtistList return <Music><Artist> or <NodeList><Artist>?  

I think there's probably cases where each is required, but I think it's
important to have a generic class - NodeList in your example - so that
one could say that Music rdf:subClassOf NodeList.

> - How deep in the tree does this go?  Imagine Artists have Albums, and I find Albums that were made in 1994.  Does that return <Muscic><Artist><Album> or <NodeList><Album>*

Not sure I follow.  I think you just return what you want/need to
return.

> - You'll notice the explosion of schemas and operations that are needed because of the binding.  I think this kind of sucks and comes close to making the http binding useless as it stands.  

Which is why I like leaving the operations as HTTP operations, since
that's the contract that's in play in CDDB and all other RESTful
services like it, and it's what the WSDL WG seems set on describing.

> These are the kinds of things that I'm confused about modelling, and I realized I need to set things straight on how the current binding works.  Once we've gotten to common understanding, then I think we can see where the weak spots are.  But I don't really want to make any additional proposals until I'm certain about the current state.

Ok, cool.  I just thought I'd give you my views on the problems you
mentioned.  There's no expectation of action or response.

Cheers!

 [1] http://www.markbaker.ca/2002/08/Rest/

Mark.
-- 
Mark Baker.   Ottawa, Ontario, CANADA.        http://www.markbaker.ca

Received on Saturday, 12 June 2004 00:40:03 UTC