Redirect References Spec: Structured information in DAV:resourcet ype

Yaron believes that we are not taking full advantage of the structuring
potential of DAV:resourcetype, and are limiting ourselves similarly by
choosing to use a Resource-Type header rather than an XML body in messages.
This is an issues that was discussed earlier by the design team (see minutes
of 3/30/99), but it will be good to get the considerations into the mailing
list archive now:

Background

The specification at that time included several separate properties related
to referencing: DAV:reftype, DAV:refintegrity, DAV:reftarget.  Yaron's
suggestion was that these should instead be structured elements of the
DAV:resourcetype property.

Considerations

Structured properties are not currently searchable using DASL, so we should
keep separate any properties we really care about searching.  In particular,
reftarget.

Values of resourcetype should determine different method behaviors.  If
method behaviors for property values are the same, the property doesn't
belong in resourcetype. By this test, reftype and refintegrity might belong
in resourcetype.  Eventually servers may have to branch on refintegrity to
determine behavior.  But reftarget does not belong in resourcetype.

Changing the target of a reference does not change the type of resource it
is, so reftarget certainly does not belong in resourcetype.

The names ref* are an indication that we're dealing with different types of
references, so it may make sense to include reftype in resourcetype and
structure the values of reftype.

Nevertheless, there was no strong sentiment for incorporating reftype and
refintegrity into resourcetype, so the decision was made to leave them
separate properties.

What Has Changed

We no longer have direct references, so the only new resource type being
introduced is redirect references.  The reftype property is gone.

There are no longer any protocol elements related to referential integrity.
We no longer have a refintegrity property.

So the only element we currently have that could go into DAV:resourcetype is
DAV:redirectref.

It might still pay to plan for the future by anticipating that direct
references will come back someday, and that there will protocol elements
supporting referential integrity someday.  In that case we might still want
to structure our values of DAV:resourcetype:

<prop>
   <resourcetype>
      <reference>
         <redirect/>
      </reference>
   </resourcetype>
</prop>

The Resource-Type header is new.  Yaron pointed out that using a header in
responses to represent the contents of a structured property is needlessly
limiting.  Although no one is currently exploiting the structuring
capabilities of DAV:resourcetype, they may someday (and of course he thinks
we should be today), so we should provide for this by using an XML body with
the DAV:resourcetype property instead.  

The only thing we are using this header for now is in 302 responses, to let
reference-aware clients know tha the 302 is from a redirect reference, so we
could use a header with a different name (say, Redirect-Ref) for this
purpose.  Or we could replace the header with an XML body containing the
DAV:resourcetype property.  I don't have a strong opinion about this.

--Judy

Judith A. Slein
Xerox Corporation
jslein@crt.xerox.com
(716)422-5169
800 Phillips Road 105/50C
Webster, NY 14580

Received on Wednesday, 25 August 1999 12:00:28 UTC