[Ietf-carddav] sorting, grouping, paging in CardDAV

Arnaud Quillaud Arnaud.Quillaud at Sun.COM
Wed May 9 08:34:12 PDT 2007


Going through the CardDAV mailing list. One message mentions the "Employee Profile Service Specification and the Personal Profile Service Specification created by the Liberty Alliance".

So here I went, to discover that not only do they have such services, but they have also defined a Contact Book Service:

See http://www.projectliberty.org/liberty/content/download/2441/15790/file/liberty-id-sis-contactbook-guidelines-v1.0.pdf and http://www.projectliberty.org/liberty/content/download/2440/15787/file/liberty-id-sis-cb-v1.0.pdf from http://www.projectliberty.org/resource_center/specifications/liberty_alliance_id_sis_1_0_specifications

The spec defines a mapping between vCard 2.1 (http://www.imc.org/pdi/vcard-21.txt), vCard v3 (http://tools.ietf.org/html/rfc2426), vCardRDF (http://www.w3.org/TR/vcard-rdf) and a "Generic vCard" data model, itself based on some XML representation of vCards (http://www.xmpp.org/extensions/xep-0054.html). All (XPATH) queries are done against the data model but the data can be returned (or stored) in any of the other vCard formats (2.1, 3, RDF).

The spec is a little bit hard to digest for someone not familiar with the Liberty Alliance architecture and terminology but it covers 3 functionalities that I would consider key for a Contact Book protocol/service:

    * ability to sort vCards based on some field,
    * ability to group vCards together (they use the term "Distribution List"),
    * ability to get paged results (give me back the first 20 entries, then the next 20,...)

(The third feature is actually define in a more general Data Web Service Specification)

The -01 CardDAV draft does not cover those functionalities. While sorting and paging could probably be added as extensions to the base protocol, I would consider groups as a core functionality because it defines a new type of object (at least at the conceptual level).

The Liberty Alliance Contact Book Service has taken the approach of modeling groups as regular vCard entries with the membership being define in each child vCard as a backpointer to some UID like property (CARDID) of the group. This is in a sense similar to the notion of dynamic groups in LDAP.

Back to carddav, the adbk-query could be used as is to retrieve all the direct members of a given group.

A few other interesting things in the Contact Book Service:

    * ability to tag one vCard as describing SELF (the owner of the book),
    * notion of a predefined "Favorites" group,
    * notion of most frequently/recently requested entries.

I have not spent a lot of time trying to get an in depth understanding of the Liberty Web Services. But my initial feeling is that I don't really see the CardDAV protocol and the Contact Book Web Service as competing technologies. On the other hand, keeping them close enough so that one could "easily" build the Web Service on top of protocol would be nice.

Arnaud Q



More information about the Ietf-carddav mailing list