DAV:STRUCTURE:*:VERSIONED Content Nature and DAV.Versioning.NextV ersion Link

1.	DAV:STRUCTURE:*:VERSIONED Content Nature

1.1	Problem Definition

A mechanism is needed to inform the server that the client wishes to
create a structured versioned resource.

1.2	Proposal

The DAV:STRUCTURE:ITEM:VERSIONED content nature on a PUT informs the
server that the client wishes to create an item that will be versioned.
If the PUT has an entity then that entity is the first version of the
resource.
The DAV:STRUCTURE:CONTAINER:VERSIONED content nature on a PUT informs
the server that the client wishes to create a structured versioned
container. If the PUT has an entity then that entity describes the
contents of the structure of the  first version of the container.
In both cases the server MUST create a versioned resource of the
specified type or must return a 501 "Not Implemented"

1.3	Example

A user wishes to create a versioned container and includes in the PUT a
mime multipart containing the first entries for the container.
PUT http://foo HTTP/1.1
Content-Nature: DAV:STRUCTURE:CONTAINER:VERSIONED
Content-Type: mime/multipart
<Request Body>
2.	DAV.Versioning.NextVersion Link

2.1	Problem Definition

Clients need to be able to follow version links in order to determine
parentage of resources. This is especially critical in distributed
versioning systems where complete histories may not exist.
However, it is always useful to allow servers to build complete
histories when possible. As such, it must be possible to include merge
information when creating a versioning link.
Finally, resource may have multiple children. In such a case it would be
useful to have the version-id's of those children.

2.2	Proposal

I propose maintaining the DAV.Versioning.NextVersion link type from the
original specification. 
I further propose adding the following link extensions for use when
LINKing a DAV.Versioning.NextVersion link.
MergeData = *(";" MergeURI [[MergeWeak] MergeEtag])
MergeURI = "MergeURI" "=" URI
MergeWeak = "MergeEtagStrength" "=" weak
MergeEtag = "MergeEtag" "=" opaque-tag

I have included the MergeEtagStrength on the off chance that someday
there will be a modifier other than weak.

I also propose that the following attribute be available when setting or
receiving information on the link.
VersionID = *(";" "Version-Id" "=" VID)

Received on Wednesday, 26 March 1997 03:17:02 UTC