[OSLC-CM] Fw: CM 1.0 comments and issues -- proposed response for review

Steve K Speicher sspeiche at us.ibm.com
Wed Nov 25 10:26:23 EST 2009


OSLC CM WG,

Here's a draft response that I'd like to review at today's meeting.

Feel free to comment via email, I plan to respond after today's meeting.

- Steve

Martin Nally/Raleigh/IBM wrote on 11/23/2009 12:05:49 PM:

> Here are some comments on the CM 1.0 spec and suggestions of issues 
> to track for CM 2.0
> 
> Query string description
> 
> 
> The wording of this section could be improved. Instead of saying 
> “Request the Change Request resource at /bugs/bug123 and only the 
> properties of title and full owner details.” 
> We should say:
> “Request the resource that contains only the only the properties of 
> title and full owner details of the Change Request resource at 
/bugs/bug123.” 
> The point is that the URL (including the query string) identifies a 
> new resource. This resource has a relationship to the resource whose
> URL does not contain the query string.
> 

Agreed that the wording is improved.  Will target a future editor's update 
with the clarification.

> Namespaces
> 
> 
> In the example “/bugs/bug123?oslc_cm.properties=dc:title,dc:owner
> {*}”, dc appears to have meaning, but it is not clear what it means.
> Are we saying that in OSLC URLs of this form, dc always means “
> http://purl.org/dc/terms/”? This does not seem to me like a workable
> scheme. To make this work, we would need a way to register and 
> endless number of prefixes. Very few things on the web work this way
> – IANA is an exception, but it’s cumbersome. I think this design 
> needs to be revisited. The obvious alternative is to allow a URI in 
> place of a simple "word" and to eliminate the "word:word" form.
> 

We took a limited scope in reserving some namespace prefixes to 
simplify/shorten the URLs used.

These are defined at 
http://open-services.net/bin/view/Main/CmRestApiV1?#Namespaces_Used

We took a similar approach to what has been done in other specifications. 
I believe it was done in CQL http://www.loc.gov/standards/sru/index.html , 
though I can not locate the prefix namespace mapping table (though 
references to things like dc.title exist without a namespace definition).

> Managing multi-valued properties and resource links
> 
> This design is hard to understand. If I were to issue this request:
> 
> GET /records/12234-123344?oslc_cm.properties=blockedBy
> Accept: application/xml
> 
> I would get back this:
> 
> <oslc_cm:ChangeRequest>
>     <blockedBy oslc_cm:collref="/records/12234-123344/blockedBy"/>
> </oslc_cm:ChangeRequest>
> 
> This response contains no useful information except a “redirect” to 
> another URL. If I do a GET on that URL ("/records/12234-123344/
> blockedBy") I would get this:
> 
> <blockedBy oslc_cm:collref="/records/12234-123344/blockedBy">
>   <blockedBy rdf:resource="/links/1255-235411" 
> oslc_cm:label="Installation failures"/>
>   <blockedBy rdf:resource="/links/123455-2344" oslc_cm:label="DB 
> setup fails on 64 bit"/>
> </blockedBy>
> 
> I see no value in this “redirect”. It would have made much more 
> sense to return the blockedBy info directly on the first GET:
> 
> GET /records/12234-123344?oslc_cm.properties=blockedBy
> Accept: application/xml
> 
> With response:
> 
> <oslc_cm:ChangeRequest>
>   <blockedBy rdf:resource="/links/1255-235411" 
> oslc_cm:label="Installation failures"/>
>   <blockedBy rdf:resource="/links/123455-2344" oslc_cm:label="DB 
> setup fails on 64 bit"/>
> </oslc_cm:ChangeRequest>
> 
> Nothing would prevent us defining a POST against this URL to INSERT 
> entries, as defined in the current spec, although without a design 
> to do a corresponding DELETE and UPDATE, I think the value of this 
> POST is questionable.
> 

The choice for this approach was to handle a few scenarios:
1) By default, when doing a GET on a change request resource you get all 
the properties
If we were to provide an element for each referenced or multi-valued 
property, the response size grew significantly and the time to generate 
the response as well.
This level of indirection was introduced to limit the response, while 
giving the client a way to retrieve more.

There was also the issue of how to update this list of entries efficiently 
(remove, reorder, etc) which isn't addressed.  To remove an entry, a 
client does GET requesting either all or just the single property, all 
entries are returned, client prunes/updates the list, then PUTs back (note 
this is not prohibited by the spec, just an alternative is provided).


2) Ease of add to the collection of links/values
As you stated, this allows for the ease of adding to this collection via 
POST.  OSLC-CM WG is looking at improvements to this approach and looking 
at efforts in other domains on Collections and Links to assist.


> The text is unclear about what "/links/123455-2344" refers to, but 
> says it is a "link resouce". This appears to suggest that a GET on 
> this URL would take me not to the OSLC resource that is blocking the
> change, but some "link resource" that might in turn point to the 
> resource I'm interested in. I would not be in favor of this further 
> indirection, but in any case the spec needs to say what the design 
really is.
> 

The relative URL usage may have misled this meaning but comes from 
scenarios where we were representing our intra-repository structures and 
not necessarily cross-repository.
We intentionally left this referenced "rdf:resource" undefined as it could 
either be an internal "link resource" or a resource on a remote server.

> Relative URLs
> 
> Many of the URLs used in examples in the spec use relative URLs. 
> This is strange, because OSLC is about integration between 
> independent tools, which, lacking special magic, will have different
> hostnames/ports. The spec either needs to use absolute URLs in all 
> the examples, or explain how multiple, independent OSLC tools will 
> share a hostname/port.
> 

It is not intended to indicate any special magic, just an unfortunate 
shorthand that was preserved when developing the samples.  Will update in 
upcoming modification.

> Best regards, Martin
> 
> Martin Nally, IBM Fellow
> CTO and VP, IBM Rational
> tel: (949)544-4691

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-cm_open-services.net/attachments/20091125/1c0f6405/attachment-0001.html>


More information about the OSLC-CM mailing list