[Kroupware] LDAP address book schema suggestion

Tobias Koenig kroupware@mail.kde.org
Sun, 29 Sep 2002 13:26:52 +0200


Hi,

I'm the current maintainer of kaddressbook and I'm reading this list
since 2 weeks. In this time there weren't discussed any details concerning
the communication between kaddressbook and the kolab server.

At first I wan't to mentioned, that accessing vCards over SMTP/IMAP is a
ugly way, because these protocols aren't flexible enough for easy accessing
the contacts. I know it's too late for the release, but IMHO using webdav
or ftp the right way [tm] to work with vCards and vCal/iCal files.

The other problem is the missing ldap schema. The kdepim guys have developed
a flexible addressbook library (libkabc) that supports all informations
of a vCard. I'd like to see a ldap schema that also supports all informations
of a vCard, so libkabc can use a ldap server without loosing informations.

The following suggestion isn't in a proper format, but it covers all vCard
entities:

objectclass vCard
  requires
    objectClass
    uid
    cn
  allows
    givenName
    additionalName
    familyName
    displayName
    namePrefix
    nameSuffix
    nickName
    birthday            // iso date format
    mailer
    title
    role
    organization
    note
    productId
    sortString
    url
    revision            // iso date format
    timeZone            // offset in minutes relative to UTC
    geoPosition         // string in "(x:y)" format, x = latitude, y = langitude
    secrecy
    logo
    photo
    sound
    agent
    mail
    mailalias
    category
    custom              // string in "app;name;value" format

objectclass vCardPhoneNumber
  requires
    objectClass
    uid
  allows
    number
    type               // string: the types defined in RFC2426


objectclass vCardAddresses
  requires
    objectClass
    uid
  allows
    type               // string: the types defined in RFC2426
    postOfficeBox
    extended
    street
    locality
    region
    postalCode
    country
    label

A sample ldapsearch output would look like the following:

vCard=<uid>, $basedn
uid=<uid>
cn=Test Person
givenName=Test
additionalName=Willi
familyName=Person
namePrefix=Sir
nameSuffix=Jr.
displayName=Person, Test
nickName=testi
birthday=2002-09-22T17:01:45Z
timeZone=123
geoPosition=(123.44:-118.23)
secrecy=PRIVATE
logo=http://www.testhost.org/mypic.png
photo=<base64 encoded stuff>
mail=contact@testhost.org
mailalias=foo@testhost.org
mailalias=bar@testhost.org
category=Friends
category=Linux-User-Group
custom=KADDRESSBOOK;X-Anniversary;2002-08-11
custom=KADDRESSBOOK;X-Department;foobar Station

vCardPhoneNumber=123321,vCard=Sir Test Willi Person Jr., $basedn
uid=23eRRt2
type=Home
type=Pref

vCardPhoneNumber=<phone-uid>,vCard=<uid>, $basedn
uid=<phone-uid>
number=127536453
type=Work
type=Fax

vCardAddressee=<address-uid>,vCard=<uid>, $basedn
uid=<address-uid>
type=Work
street=TestStreet
location=TestLocation
region=TestResgion
country=TestCountry

<uid>, <address-uid> and <phone-uid> are unique identifiers that consist
of a random string with a length of 9 characters.
(e.g. that is returned by KApplication::randomString())


That is only a suggestion, but such a schema is easy extensible and doesn't
bound addresses or phonenumbers to a special number.

Ciao,
Tobias
-- 
In a world without walls and fences who
needs Windows and Gates???