From: jamsden@us.ibm.com To: ietf-dav-versioning@w3.org Message-ID: <8525684F.0072E190.00@d54mta03.raleigh.ibm.com> Date: Wed, 22 Dec 1999 14:55:24 -0500 Subject: RE: Target-Selector How about sticking with separate headers as they are simpler and easier to parse than one. I suggest headers that reflect the roles the values are playing rather than their types. For example, Revision-Selector for the, well, revision selector, and Override-Selector for the leaf if the revision selector is being overridden. This is the same as Geoff's proposal, but it keeps the notion of Workspace out of the Revision-Selector so we could potentially use other things there like a label, configuration, revision id, activity, etc. Tim_Ellison@oti.com (Tim Ellison OTT)@w3.org on 12/22/99 02:06:36 PM Sent by: ietf-dav-versioning-request@w3.org To: ietf-dav-versioning@w3.org ('Delta V') cc: Subject: RE: Target-Selector I stand by my original proposal, although I agree we are only differing by syntax. Firstly, I would prefer not to have two headers simply because it promotes header bloat (would that be Workspace:, Revision-Selector:, Desination-Workspace: and Destination-Revision-Selector:?). I find the name Target-Selector quite meaningful (as these things go :-) and a finally clause more intuative than recognising the overriding nature of Revision-Selector/Workspace headers. Secondly, using 'keyword-space-value' is, as you would say, morally equivalent to a URI. By specifying as URIs you have a natural forward compatibility solution that you cannot otherwise guarantee. .. and finally, having to specify "configuration" is redundant since the server will have to ensure the following URL really is a configuration and not another type. So my objections are more on (relatively trivial) implementation grounds than the semantics of our solution. Tim ---------- From: Geoffrey M. Clemm To: ietf-dav-versioning Subject: Re: Target-Selector Date: Wednesday, December 22, 1999 1:28PM I'd like to propose a syntactic variant on Tim's proposal: Instead of adding a "finally" clause to the Target-Selector header, let's replace the "Target-Selector" header with a "Workspace" and a "Revision-Selector" selector header. One advantage is that Workspace and Revision-Selector are more self-explanatory than Target-Selector. A Workspace header specifies either a Workspace URL or nothing, where nothing corresponds to the old "metadata" Target-Selector. A Revision-Selector specifies a label, an id, or a configuration. A Workspace header specifies target selection for the entire request. A Revision-Selector header overrides the Workspace header for the versioned resource identified by the Request-URL. workspace-hdr = "Workspace" ":" [ URL ] revision-selector-hdr = "Revision-Selector" ":" revision-selector revision-selector = "id" segment | "label" segment | "configuration" URL I'd like to keep the "id", "label" and "configuration" keywords to avoid ambiguity in case we decide to extend those namespaces. Cheers, Geoff From: Tim_Ellison@oti.com (Tim Ellison OTT) I'd like to propose a change to the Target-Selector as described in the protocol spec. Presently, the valid values are: workspace "<URI>" id "<revision id>" label "<label>" metadata The change would accomodate the situation where the client wants to select collection revisions using a workspace, and the final resource using a label or id. Without such a change the "id" target selector is of little/no use for selecting resources in collections (the collection will not have the same id as the "leaf" resource). The change would also allow the client to select a revision based directly upon an activity and provides extensibility for other selection schemes. target selector = Target-Selector ":" URI [ LWS "; finally" URI ] The use of URIs gives us extensibility for defining new selection mechanisms, and the optional "finally" clause allows clients to specify a different selector for the leaf. (I don't see any benefit for N selection methods.) Example URIs would be id:some_id, label:some_label, metadata:, and http://machine/resource where 'resource' is a workspace or activity or something else (the server gets to figure out which by looking at the resource type). Specifying a resource that cannot be used for selection results in a bad request. Example target selectors would be: Target-Selector: http://foo.com/mywork Target-Selector: http://foo.com/mywork ; finally id:Rev12FP Target-Selector: label:bar ; finally http://foo.com/actif1 Comments? Tim