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

Arnaud Quillaud <Arnaud.Quillaud@Sun.COM> Wed, 09 May 2007 15:34 UTC

Return-Path: <Arnaud.Quillaud@Sun.COM>
X-Original-To: ietf-carddav@osafoundation.org
Delivered-To: ietf-carddav@osafoundation.org
Received: from laweleka.osafoundation.org (laweleka.osafoundation.org []) by leilani.osafoundation.org (Postfix) with ESMTP id 4C6817F67E for <ietf-carddav@osafoundation.org>; Wed, 9 May 2007 08:34:56 -0700 (PDT)
Received: from localhost (laweleka.osafoundation.org []) by laweleka.osafoundation.org (Postfix) with ESMTP id 14FE8142254 for <ietf-carddav@osafoundation.org>; Wed, 9 May 2007 08:34:01 -0700 (PDT)
X-Virus-Scanned: by amavisd-new and clamav at osafoundation.org
X-Spam-Score: -1.143
X-Spam-Status: No, score=-1.143 tagged_above=-50 required=4 tests=[AWL=1.455, BAYES_00=-2.599, UNPARSEABLE_RELAY=0.001]
Received: from laweleka.osafoundation.org ([]) by localhost (laweleka.osafoundation.org []) (amavisd-new, port 10024) with ESMTP id x3S12phrGpwr for <ietf-carddav@osafoundation.org>; Wed, 9 May 2007 08:33:58 -0700 (PDT)
Received: from gmp-ea-fw-1.sun.com (gmp-ea-fw-1.sun.com []) by laweleka.osafoundation.org (Postfix) with ESMTP id 6D16E142253 for <ietf-carddav@osafoundation.org>; Wed, 9 May 2007 08:33:58 -0700 (PDT)
Received: from d1-emea-09.sun.com ([]) by gmp-ea-fw-1.sun.com (8.13.6+Sun/8.12.9) with ESMTP id l49FXvIn010126 for <ietf-carddav@osafoundation.org>; Wed, 9 May 2007 15:33:57 GMT
Received: from conversion-daemon.d1-emea-09.sun.com by d1-emea-09.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr 3 2006)) id <0JHS004015STCY00@d1-emea-09.sun.com> (original mail from Arnaud.Quillaud@Sun.COM) for ietf-carddav@osafoundation.org; Wed, 09 May 2007 16:33:56 +0100 (BST)
Received: from KONE-JHY8LIXZ2A.Sun.COM ([]) by d1-emea-09.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr 3 2006)) with ESMTPSA id <0JHS007J25WJQZ60@d1-emea-09.sun.com> for ietf-carddav@osafoundation.org; Wed, 09 May 2007 16:33:56 +0100 (BST)
Content-return: prohibited
Date: Wed, 09 May 2007 17:34:12 +0200
From: Arnaud Quillaud <Arnaud.Quillaud@Sun.COM>
Sender: Arnaud.Quillaud@Sun.COM
To: ietf-carddav@osafoundation.org
Message-id: <0JHS007JA5WKQZ60@d1-emea-09.sun.com>
MIME-version: 1.0
X-Mailer: Sun Outlook Connector 7.2.310.1
Content-type: TEXT/PLAIN; CHARSET=ISO-8859-1
Content-transfer-encoding: 7BIT
Subject: [Ietf-carddav] sorting, grouping, paging in CardDAV
X-BeenThere: ietf-carddav@osafoundation.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: ietf-carddav.osafoundation.org
List-Unsubscribe: <http://lists.osafoundation.org/cgi-bin/mailman/listinfo/ietf-carddav>, <mailto:ietf-carddav-request@osafoundation.org?subject=unsubscribe>
List-Archive: <http://lists.osafoundation.org/pipermail/ietf-carddav>
List-Post: <mailto:ietf-carddav@osafoundation.org>
List-Help: <mailto:ietf-carddav-request@osafoundation.org?subject=help>
List-Subscribe: <http://lists.osafoundation.org/cgi-bin/mailman/listinfo/ietf-carddav>, <mailto:ietf-carddav-request@osafoundation.org?subject=subscribe>
X-List-Received-Date: Wed, 09 May 2007 15:34:56 -0000

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