Semantic Calendaring
Semantic Calendaring explores how interoperability of calendaring and scheduling applications may be improved via the combination of the Semantic Web with calendaring standards.
Introduction
The Internet was designed to connect multiple disparate nodes spread across many different networks. And whilst it was intended to promote decentralisation of data, we increasingly see data siloed in applications with little or no interoperability with other systems.
Common protocols for interoperability are often an afterthought for many modern applications, instead focusing on their own custom APIs and protocols. Whilst these APIs may be useful for single client/server connectivity, it becomes impractical to implement support for multiple applications using different APIs.
Open Standards
To maximise the usefulness of data, and protect user rights to data portability, we must strive to implement and evolve open standards, such as those defined by the Internet Engineering Task Force (IETF) and the World Wide Web Consortium (W3C). In this way we ensure greater system interoperability and data portability.
The Semantic Web
The W3C and IETF have defined many standards to promote data sharing via common formats, such as the Resource Definition Framework (RDF), JSON Linked Data (JSON-LD) and the ATOM Syndication Format. Such standards define a general model for both what data can be shared and how it can be shared.
Whilst such general purpose models are useful for enabling data sharing, often we find more specific data formats and protocols can be more suited for specific types of data. One such example is the use of iCalendar for events and other temporal-based information.
iCalendar
Calendaring standards such as iCalendar have increasing support for Semantic Web concepts via updated and extensions to the original specifications.
This enables calendaring software to participate in interoperability initiatives designed for the Web. Some of these initiatives include:
- Web Linking
- Linked Data (e.g. JSON-LD, RDFa, etc.)
- Microformats
- WebSub
- WebMention
- Linked Data Notifications
In applying these standards natively to a calendaring context, the Semantic Web provides support for a powerful graph of calendaring information.
Principles
The principles of semantic calendaring can be divided into four areas: rich content, semantic metadata, linking and publishing.
Rich Content
Calendar interoperability is both strengthened and limited by it's approach to backwards compatibility. Whilst catering to the lowest common denominator has ensured maximum compatibility across calendaring clients, it has meant that simple features such as rich content have struggled to gain traction.
Whilst the introduction of the STYLED-DESCRIPTION property was intended to solve the issue of rich content support, it's
implementation has been slow due to unclear guidelines on how it should be used.
Semcal proposes the following principles around using rich content in semantic calendar objects:
- Every semantic calendar object SHOULD include a
STYLED-DESCRIPTIONproperty of content typetext/html. This property SHOULD also be derived content (indicated via theDERIVED=TRUEparameter) to promote consistency of HTML styling and formatting. - A semantic calendar object SHOULD only be maintained via a single calendar user agent (CUA). This is to ensure that the rich content
in each
STYLED-DESCRIPTIONproperty is consistent with the rest of the object (e.g. we explicitly want to avoid updating theDESCRIPTIONproperty without updating the correspondingSTYLED-DESCRIPTION. CUAs that don't support semantic calendaring SHOULD remove anySTYLED-DESCRIPTIONproperties if they update theDESCRIPTIONto avoid propogating inconsistent data. - A semantic calendar object SHOULD include a
LINKproperty referring to a URL for editing/maintaining the object. This is specified via theLINKREL=editparameter, which should be incorporated into an update function in supporting CUAs. This is to support simultaneous access to a calendar object (e.g. via CalDAV) using multiple clients.
Metadata
Templates are often used to apply sensible defaults and semantic metadata when creating new events and other objects. iCalendar has
recently introduced two properties supporting semantic metadata: CONCEPT and STRUCTURED-DATA. Using CONCEPT we are able to
provide more granular type information that allows CUAs to recognise and process objects differently.
STRUCTURED-DATA allows us to capture or generate additional data formats beyond the scope of the iCalendar specification. We can
embed agreed formats (such as JSON-LD) to enhance CUAs' interoperability.
The following principles for semantic data are proposed by semcal:
- Each semantic calendar object MUST include a
CONCEPTproperty. This is used to specify the type of event, to-do, journal, etc. represented by the calendar object. An example of a type could be a Meeting event, a Service Request to-do, or a Metric journal. By specifying type information a richer interaction is facilitated between calendar user agents. NOTE: "vanilla" typing MUST also be supported by providing types that represent event, to-do, journal, etc. without further specificity. - A semantic calendar object SHOULD include linked data via the
STRUCTURED-DATAproperty. Linked data is typically defined via JSON-LD or RDFa formats (JSON and XML respectively), and allows for interactions with non-calendaring systems. For example, a Web search engine may be able to parse theSTRUCTURED-DATAproperty of semantic calendar objects in order to index the object for improved search results.
Linking
The LINK property allows for additional linking between semantic calendar objects to support construction of a
larger semantic graph.
The following semcal principles demonstrate additional linking relationships:
- For recurring events, individual occurrences may be customized with additional information specifically for that instance.
With semcal, when customising such an instance the CUA SHOULD include a
LINKproperty referring to the previous instance via theLINKREL=prevparameter. - Semantic calendaring objects SHOULD include authoring information via one or more
LINKproperties with aLINKREL=authorparameter.
Publishing
Whilst many calendaring clients support subscribing to remote calendars, the reality is that most published events are statically imported to internal calendars either via Web links or email attachments.
The following principles propose how to support subscriptions for updating individual events:
- A CUA supporting semantic calendar SHOULD create a topic named from the event
UIDvalue for each published event via a WebSub hub. This hub is to be linked in the event via aLINKwithLINKREL=hub. A recipient CUA SHOULD check for suchLINKproperties and automatically subscribe to the topic corresponding to the eventUID. The subscription duration should be at least until the event has passed, but typically with an additional grace period to allow for updates including media related to the event. - Optionally, a CUA may choose to support reciprocal links for specific events via the Webmention standard. To support reciprocal
links a semantic calendar object MUST include a
LINKproperty referring to a callback URL for posting a new link. This property is identified via theLINKREL=webmentionparameter. When creating new calendar objects that refer to another, CUAs may check for a Webmention link in the related object and POST a link to the new event. The receiving CUA may optionally require approval prior to updating the original event with the new link, but once approved would add a newLINKproperty for the URL using theLINKREL=repliesparameter.