On Dec 17, 2009, at 3:36 PM, Vincent Massol wrote:
On Dec 17, 2009, at 3:08 PM, Fabio Mancinelli wrote:
On Dec 17, 2009, at 1:48 PM, Vincent Massol wrote:
Proposal
=======
I'd like to propose ModelReference for the base object and then
DocumentReference, SpaceReference, WikiReference,
AttachmentReference.
Note: This is different from Identity which is unique (a UUID).
References do not point to unique objects.
I am not sure of having understood the note. In particular what you
mean when you say "references do not point to unique objects"
The way I view it is that an object (or Entity or Resource) will have
2 methods:
- getReference() (corresponds to Node.getPath() in JCR I believe)
- getUUID()
In other words, it's possible to have several References pointing to
the same object (or Entity or Resource). This is very useful for
implementing renames for example.
If I understand well you are suggesting that every object-or-entity-or-resource
have a UUID and can be addressed by using a reference that contains declarative
information.
So, for example a page P will have a UUID X and "Main.WebHome" could be a
reference to the page P. A rename is just a change of components of the reference so that
now the new reference "Foo.Bar" will still point to page P whose UUID is X but
appears to be in the space "Foo" and having the "Bar" name.
This could also allow for "symbolic linking"... For example the page P with UUID
X might be pointed by a set of references "Main.WebHome", "Foo.Bar",
"X.Y" making it appear in different spaces under different names.
In this case the objects-or-entities-or-resources exist in a flat space and the structural
organization (i.e., a page is in a space that is in another space in a given wiki, etc.)
is subsumed by the references like what happens in RDF graphs.
In addition, FTM I'm not sure if a Reference
should include the version
I need for think a bit more about this since I'm not 100% sure. If you
have ideas let me know.
Maybe not... Versions could be first-class bject-or-entity-or-resource that can be
referenced (this is what happens in the REST API for example).
-Fabio