A walkthrough an RSS 1.0 calendar

skip to example walkthrough
skip to issues
example calendar RSS file
iCalendar 'core' schema

Why RSS 1.0/calendar?

RSS 1.0

RSS 1.0 is a flexible mechanism for syndicating data. It consists of an ordered list of links with titles and descriptions, within a 'channel' which also has title, description and optional logo associated with it. RSS 0.91 was described using xml; RSS 1.0 uses RDF, a specific set of design conventions for XML.

The nice thing about using RDF is that it makes RSS 1.0 extensible. You can write modules which extend the basic idea of a list of links by adding modules for specific uses such as Dublin Core. So for example, a list of webpages could have not just title, description and link, but also Dublin Core elements such as subject, creator, language and date.

Syndicating calendars

Descriptions of calendar events are often useful things to syndicate. Examples might include personal public calendars, conference listings, 'what's on' listings and meetings. A common format for processing calendar events would simplify scheduling tasks and allow aggregation or person and corporate calendars.

RSS 1.0 events module

There is a proposed events module for RSS 1.0. It is very simple, which has many advantages in itself, but isn't sufficient to describe all these different types of events. In particular, the events module uses only a simple attribute-value notion of dates and organisers, when often we want to say something about the object pointed to. If it's just an opaque string we can't do this in this format. For example, if we are describing a teleconference with a start time, it's very important indeed that we can say what timezone the time we are talking about refers to. Similarly when we talk about an organiser, or an attendee, it would be good to be able to say something about the person organising or attending, for example their email address and their name and perhaps an affiliation. If the organiser is a string, we can't do this, and would need to have an implicit convention for the content of the string (for example, must be an email address).


I've spent some time examining the iCalendar RFC 2445, a well-established format for calendaring with a view to describing it in RDF. ICalendar is used in many devices as an underlying format or as a format understood by the device. Examples include many phones and PDAs (more examples).

The iCalendar RFC is extremely lengthy and complex. Describing it in RDF has been a challenge because of this and because it brings up some intersting modelling challenges, for example describing repeating events.

My feeling is that for iCalendar in RDF to be usable, a huge file describing every aspect of it is not what's needed. Instead I've started to split it up into smallers parts, starting with the properties and classes I've used most often when trying to describe meetings, conferences and so on - I've called this the 'core' set.

next - walkthrough of the 'core'