Re: Optional Backpointers from Targets to References

Jim Amsden and other have asked me to explain the usefulness of the
backpointer.

Before I do, I want to emphasize that I am well aware that there are many
reasons why a server couldn't or shouldn't provide backpointers from *all*
targets  to *all* references.  I hope here only to show that there are
*some* applications for which this is useful, and then to argue that it's
worthwhile standardizing the protocol so that  applications that *do* use
this feature will have a standard way to access it on those servers that
happen to provide it.

Reasons it is useful:

1) Referential integrity.  Some applications desire references that are
guarenteed to remain valid, even when the target moves.  The easiest way to
do accomplish this is by storing back pointers from the target to the
reference.
While there is no requirement that the backpointer be exposed in the
interface, there is no harm in doing so.

2) Multiple containment.  Some document management systems have an abstract
notion of a 'document' that can be in many 'folders'.  For any such
document, it is sometimes necessary to obtain the set of folders in which
it appears.  The most direct mapping of these abstractions to WebDAV
(assuming Advanced Collection Resources) is:
 folder ::  WebDAV collection
 document ::  WebDAV resource
 containment :: WebDAV reference

That is, if document D is in folder F, there is a reference resource in F
whose target is D. Then, to find the set of all folders {F, G, H...} that
contain
document D, one first obtains the set of backpointers on D, then
(trivially) obtains the set of collections that contain those references.

3) Generality/Extensibility:  Backpointers are used in countless data
structures (consult any textbook on data structured or algorithms).  There
will certainly be uses we can't anticipate now.  The 'multiple containment'
example above is just the first one.

I hope to have demonstrated the usefulness of the dav:references property.
It will be optional, and hence cost-free, but useful to those applications
and servers who need it.

Received on Tuesday, 22 September 1998 14:44:13 UTC