[Oslc-Automation] Action resources - implementation patterns

John Arwe johnarwe at us.ibm.com
Fri Dec 27 14:03:32 EST 2013


I did a reasonably slow, focused, top-to-bottom read of the Core Actions 
draft, and made some updates over the past 2 days.  I think we're getting 
really close.

The 12/26 edits should be completely non-controversial. Typo, adding 
links, etc.
Today(12/27)'s edits are very likely non-controversial.  Smaller-scale 
cleanup of certain sections.  Probably worth a look from Martin to be sure 
I didn't accidentally vary from his intent.
The big-animal outstanding questions/comments I had are listed below.

1:  Secondary bindings: I think we should cover that entirely in 
Automation, not Core. 
1a: Let Core be about Actions -- the parts that multiple parties need (UI 
introspection, bindings, and "execute now" discovery).  The only thing I'd 
leave in Core around delayed execution is the interaction pattern heading, 
and make its content consists entirely of text (probably non-normative) 
pointing to Automation as having defined such an interaction pattern.
1b: Let Automation cover the delayed execution angle.  That's the only 
place the need has arisen.  Any "complications" like secondary bindings it 
can pay for, rather than obscuring further what Core is doing.  It's every 
bit as re-usable from Automation as from Core.
1c: Secondary bindings might become "immediate execution action bindings" 
instead.  Once they're relegated to Automation, it's harder to confuse 
them with Core's bindings ;-)
1d: I think Automation (when it defines delayed execution's pattern) 
states (as part of that pattern) which existing action bindings are/not 
allowed as secondary bindings, along with any additional constraints those 
usages have.  If we can't do that, something is fundamentally wrong.  I.e. 
if the only way to define the zero-body http request interaction pattern 
(or any other in Core) so that it "works right" when we later want to add 
a delayed execution interaction pattern is to know about the future when 
defining zero-body, we're toast already.  Automation will need some 
generic statement like "we're silent on; might work, might not" to cover 
cases where new Core patterns/bindings/profiles are added in the future, 
but that's life in the big city.
1e: In the existing "Use for secondary bindings" text, there is a 
consistently repeated phrase "then it is to behave like" ... am I correct 
in thinking that one is expected to read "it is" as a normative MUST?

2: In the final paragraph of [1], a statement is made: "However, as 
already stated, implementations MUST NOT rely on this behaviour from other 
implementations".  I was going to lowercase the must-not (since it's a 
restatement), and make the bulk of that text a hyperlink to the original, 
but I'm unclear after reading it what it's referring so I cannot create 
the link.  It might be referring to the beginning of the same paragraph 
(which has a MUST NOT); I cannot be sure what the final sentence's "this" 
refers to.

3: In the RDF body pattern [4], we say "It is possible for bindings to 
match the identification rule of both the HTTP request with empty body 
pattern and this pattern."  I don't think that's actually true; the 
zero-body pattern [3] says " MUST have an rdf:type value of http:Request, 
and MUST have an http:body value of rdf:nil.", whereas the RDF body 
pattern says "MUST have an http:body property whose target resource:" 
...other constraints that rule out rdf:nil.

4: In the RDF body pattern [4] and resource shape pattern [2], we say "It 
is possible for bindings to match the identification rule of both the HTTP 
request with empty body pattern and this pattern."  In that context 
"bindings" (plural) could mean "different bindings on the same Action 
resource", but I think the intent might have been "each [or: a single] 
binding".  I was not sure enough to update it on the wiki however, given 
that others will be reading that possibly in parallel.

5: In the resource shape pattern [2], we say "finding or constructing an 
RDF resource that matches the defined resource shape and using an 
appropriate serialisation of that resource as the HTTP request body."  I 
don't see how a client is going to know which serialization(s) are 
"appropriate", and given that this is an input we'd certainly *like* it to 
be both concrete and asserted (Content-Type: header) on the request rather 
than relying on the provider (recipient) engaging in content-sniffing or 
on out of band means.  We could use http:headerName etc for that; doing so 
would require changes to Appendix A's "common restrictions" [5].  The RDF 
body pattern [4] has the same issue.

6: In the RDF body pattern [4], I'm not sure what the extra(?) level of 
indirection through oslc:ContentAsRDF buys us.  Is this simply to follow 
the patten of [6]?

7: The Automation pattern [7] made reference to "the HTTP request pattern" 
(sic), which no longer exists.  I think from the context it intended to 
say "request with RDF body" i.e. [4], so I did create that link (just in 
case I guessed wrong, others now know).  The same case+fix arose in [9].

8: In the final bullet of [8], we talk about something that sounds like a 
server implementation issue.  If that's the case, seems like a Best 
Practice (at most), not normative text.

9: In the delayed execution pattern [10], [11] left me in the dust (I saw 
no sign of this in the examples or ODT, either).  Conceptually I'm "sure" 
I know what you're saying, it's simply omitted syntax/examples I think.

10: The construction of Appendix A [12] seemed at odds with itself.  In 
the first section: "a consumer MUST...include the headers specified by the 
http:headers property, if present", and in the second section "providers 
MUST provide bindings that:    do NOT include the http:headers property". 
This might be smart spec factoring if we're trying to separate "simple 
profile" constraints from "support all of http:Request".
10a: If consumers are required to support http:headers anyway, then this 
must be about saving providers' implementation budgets.  But that's in 
their own best interests anyway, so what do we gain again?  Promising 
consumers that we'll never use the code we just said they had to write? 
FWIW I've (recently) seen implementations completely dependent on 
extension headers for authentication; although that "just" means they'd 
need to define profile(s) instead of re-using these.
10b: [12] end first section says "Note: If OSLC implementors want to 
specify literal HTTP request bodies (which are not covered by any 
interaction patterns in this specification)"  I think that's no longer 
true (RDF body?), or did you mean something different by "literal body"?



[1] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#Types-of-actions
[2] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#pattern-resource-shape
[3] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#pattern-empty-body
[4] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#pattern-rdf-body
[5] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#Standard-restrictions-on-http.3ARequest-resources-for-simple-specification-profiles
[6] http://www.w3.org/TR/Content-in-RDF/#ContentClass
[7] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#pattern-autoreq
[8] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#Additional-provider-constraints
[9] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#Execution_3
[10] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#pattern-dialog-delayed-execution
[11] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#Additional-provider-constraints_1
[12] 
http://open-services.net/wiki/core/Exposing-arbitrary-actions-on-RDF-resources/#constructing-http-requests

Best Regards, John

Voice US 845-435-9470  BluePages
Tivoli OSLC Lead - Show me the Scenario
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20131227/6c88cde9/attachment-0003.html>


More information about the Oslc-Automation mailing list