|
What is the purpose of the URI property? What, if provided, does the URI represent? Can it be removed from the spec?
One of the difficulties in resolving duplicates is the sharing of the schema between the two bindings. The problem does not exist in Web Services.
Ideally, CMIS extends the AtomPub binding only where necessary, mapping repository concepts to AtomPub concepts where applicable (which it does aim to), but unfortunately it also currently duplicates. This also adds complication to create & update semantics. Essentially, it's a decision on whether to share the schema or provide binding specific schemas. For example, sharing the schema means a client (and potentially server) implementation can re-use code. Splitting the schema may result in an AtomPub extension that's more natural, more open to re-use of other AtomPub initiatives e.g. removing cmis:object wrapper, generalising notion of AtomPub properties, using Atom entries to represent hierarchy etc. However, this a radical move from where we are today. I would support such a move, given that at the F2F there seemed to be agreement to be as AtomPub-friendly (meaning, follow the spirit) as possible.
Part II requires the atom-id == uri. As Atom-id is required by atom and uri isn't required by CMIS, this doesn't make sense. Part I says that the uri is a web-addressable representation of the object. It appears that this can simply be removed from the Atom binding.
Regarding David's comments about duplication of cmis properties and atom properites, I have some thoughts:
The spec part II, section "Atom Entry Documents" says: When POSTing an Atom Document, the atom fields take precedence over the CMIS property field for writeable properties. This appears to me that a client should always give the atom properties precedence over the CMIS properties. If that's the case, what's the value in the CMIS properties again? I'm not sure how much code re-usability there is here, but is that a goal of the spec? I think we should be as AtomPub friendly as we can prior to trying to share code between the two bindings. Florent: I think that your comment is essentially saying the same thing - we should strive towards reducing the duplication present in the cmis schema where atom already specifies what to do. Is that accurate? Ryan: yes, I think we should strive to reduce duplication and have AtomPub-defined information be authoritative. If reasonable.
In addition to the information already mentioned above, there's also: 8. <atom:link rel="cmis-stream" href="..."/> and <cmis:propertyURI name="ContentStreamUri"/> both duplicate <atom:content src="..."/> (which is very similar to, but not exactly the same as, <atom:link rel="edit-media" href="..."/>). 9. <cmis:propertyURI name="ContentStreamMimeType"/> duplicates the optional-but-strongly-suggest-by-Atom "type" attribute of <atom:content> But as David points out, this makes some parts of the schema unneeded by AtomPub, when it's still required by WS. Which is quite a step to take. I'll have to think a bit more about this. But I'm sure at least cmis-stream could be removed without problem as it's not a property and is really very redundant. I'd like to keep the duplicated info. Originally we did remove the duplicated fields: id, createdby, etc. However, that made some properties special and could not be updated in the same way - by setting a cmis property field. Also, it became less obvious on how to search on those fields.
I do think an order of processing should be stated: cmis:property is authoritative if present, then atompub (or vice-versa). The bandwidth cost of having that info in two places is not that significant in my opinion. This proposal looks reasonable. Let's make sure to include a discussion of the atom:id and how it relates to ObjectId. Lines 204-205 specifically need to be updated as they're inaccurate now.
|
|||||||||||||||||||||||||||||||||||||||
a. part I specifies that the property Uri is not necessarily mandatory (this is repository-specific),
b. the atom:id may be a simple URN: urn:uuid:ed19fab4-c228-482a-afde-091d8a6525df and this should not be equated with the atom links which could be http://localhost:8080/cmis/object/ed19fab4-c228-482a-afde-091d8a6525df