Report on the RDF calendaring workshop


Libby Miller, 2003-01-06

The recent work going on in the Mozilla calendar project and the iCal Apple application has stimulated interest in the subject of creating, displaying and exchanging calendars. These products make it simple for users to create and make available calendars represented in the iCalendar standard (RFC 2445), and to subscribe to the calendars they are interested in which have been created by other people.

Since early 2001, the RDF interest group has had an informal taskforce examining calendaring and scheduling issues and RDF. This arose out of an initial exercise by Tim Berners-Lee which described how one might approach the problem of converting iCalendar to RDF, and later, from discussions at the W3C Technical plenary in 2001.

Calendaring is an interesting application of RDF because it is such an important part of people's day-to-day lives, and because it also encompasses difficult philosophical and modelling problems, and social, trust and privacy questions. It straddles all levels of the Semantic Web from simple queries to find out who is at a conference, to complex scheduling problems involving logic.

A workshop was held in Bristol on 9th October 2002 on Calendaring and RDF as part of the SWAD-Europe EC funded project. Its themes were usecases, practical tools, and vocabulary testcase.


A major aim of the workshop was to write convincing usecases which showed why an RDF version of the standard would be more useful than the iCalendar format (which is presented in a text based format called 'mime-directory' (RFC 2425)). ICalendar is the standard format used by most devices and software for calendaring and scheduling, but is also highly complex and difficult to implement in its entirety.


A second aim was to demonstrate some practical tools for managing event information. RDF sometimes has a reputation for being rather future-orientated. The aim here was to show some tools that can be used now, both RDF tools and tools that can be used after RDF has been used to process data.


A third aim was to look at ways to create an RDF vocabulary for events. There have been several attempts to model calendaring formats in RDF, including the 'hybrid' model of iCalendar (Michael Arick and Libby Miller) another iCalendar model (Dan Connolly), and a Palm model (also Dan Connolly). We wanted to see if an RDF vocabulary was thought to be a useful thing to have, then how we might combine these vocabularies or choose between them.


Usecases for an RDF events vocabulary focused on _combining_ information about

with other kinds of information, such as data about

and many other types of information such as pricing and facilities of a public event.

ICalendar is not designed to be highly extensible in this fashion; it is a tool for describing and scheduling meetings. Instead we need something that can incorporate people, their names and contact details; documents, their titles, descriptions, creators and dates; events, times and dates, timezones, attendees, resources; places - names, descriptions, latitute and longitute coordinates - and so on.

This amount of information cannot and should not be described by one organisation or in a single enormous document - it is just too complex a task, with too much room for disagreement. However the variety of things that may be related in some way to events does imply that RDF might be a good medium for describing them - because it designed for decentralized development of vocabularies, which can then be combined together.

In particular, RDF has a model which describes objects in the world and their properties and relationships. This simple model underlies all RDF data, and allows for objects from different vocabularies to be linked together.

For example, if you saw the following RDF snippet

<Event> <attendee> <foaf:Person> <foaf:name>Libby Miller</foaf:name> </foaf:Person> </attendee> </Event>

you could read that document and then say - ah yes - I know Libby Miller - she also wrote a document about calendaring and RDF, so you could also write this down:

<foaf:Document> <dc:identifier rdf:resource=""/> <dc:contributor>Libby Miller</dc:contributor> <dc:contributor>Greg FitzPatrick</dc:contributor> <dc:contributor>Dan Brickley</dc:contributor> <dc:title>SkiCal and iCalendar in DAML+oil: a case study</dc:title> </foaf:Document>

In the first of these fragments of RDF there are two objects - an event and a person, and these are related by the property 'attendee'. The person has a property 'name'.

The second fragment describes a document and its properties as defined in the Dublin Core vocabulary (dc). This fragment also mentions a person, but in this case the fact that the is a person is _implicit_. A machine cannot tell that the 'Libby Miller' in each case is the same person. A human might know, but the machine cannot know, unless you give it some more information.

You can do this in RDF. There are two basic stages

[1] write an RDF vocabulary document that says that, when you see a property, you expect a to be the sort of object at the end of it, and

[2] tell it that this particular person is the same person as before, by giving the person an identifier, or better, using something public about them, such as their email address, as a way of describing them uniquely, e.g.

<foaf:Person> <foaf:mbox rdf:resource=""/> <foaf:name>Libby Miller</foaf:name> </foaf:Person>

With this particular 'indirection' technique, you also need to tell code which aggregates RDF data from different sources that every object with is the same object (using a property from the Daml+oil or Owl ontology languages).

Simple reuse of vocabularies and careful modelling combined with RDF can allow the aggregation of information from multiple sources in such a way that it can be used to answer various specific queries, for example:

Practical tools

As well as describing reasons why it would be useful to use RDF for calendaring purposes, the workshop also allowed developers to describe tools already available which use RDF. A selection are described here, and more detail is avilable in the main workshop report.

Describing events using XHTML and RSS

RSS is a simple XML/RDF syndication format which is extensible using modules. One such module is the events module, which consists of startdate, enddate, organizer, type and location properties. Various experiments by Dan Brickley, Eric van der Vlist and Dan Connolly have shown ways of containing structured information in XHTML which can then be transformed into RSS using XSLT. There is an RSS feed from the W3C web page news section which is generate in this fashion. Structures for dates, locations, types and organizers can be added to create an RSS feed that contains structured information about events such as conferences or meetings.

This technique has the advantages that you only one webpage is required for both human and machine reading; and that different machine-readable vocabularies can be generated from the same page by adding new XSLT stylesheets. The generated files can then be aggregated to combine (for example) public calendar information with private calendar data.

Using RDF with Outlook

The Retsina calendar agent was developed by Rahul Singh and Terry Payne to allow RDF calendar data to be imported into Microsoft Outlook. The agent allows browsing and importing of RDF schedules, and can also employ agent-based technologies to find related information about an event, such as local restaurants when location information is available.

Getting from iCalendar to RDF and back again

Dan Connolly has Perl code to convert iCalendar to RDF and also a too, written in Python that converts from RDF to iCalendar. He also has 'Palmagent' software which allows syncing RDF formats with the Palm.

XSLT to convert iCalendar to Dan Connolly's iCalendar vocabulary is now included in the Mozilla calendar standard distribution, courtesy of Gary Frederick.

Vocabulary Testcases

In the meeting and subsequently a technique was developed for deciding on a single iCalendar-based RDF vocabulary. The initial 'hybrid' model was extremely lengthy and therefore unweildy. It is planned that the following methods will allow test-based community development of a vocabulary with maps closely to iCalendar, which decisions and the reasons for making design decisions are public and consistent.

Begining with example iCalendar files (for example generated from Apple's iCal or Mozilla), RDF will be generated directly from the data files. Design choices, the tests themselves, and the descriptions of the choices made will be posted to the RDF Interest Group calendaring mailing list. The iCalendar and RDF test files will be stored in a designated place for reference and as example files.

The vocabulary (schema) itself will be generated using these RDF calendar data files, so that the vocabulary is derived from actual calendar data rather than creating a vocabulary first and then creating data to comply with it.

More information

For more detailed usecases, outcomes and tools, see the full workshop report at

The RDF calendar mailing list archives are at

Open, logged meetings will be held regularly on IRC (on to discuss testcases and documentation.