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-DESCRIPTION
property of content typetext/html
. This property SHOULD also be derived content (indicated via theDERIVED=TRUE
parameter) 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-DESCRIPTION
property is consistent with the rest of the object (e.g. we explicitly want to avoid updating theDESCRIPTION
property without updating the correspondingSTYLED-DESCRIPTION
. CUAs that don't support semantic calendaring SHOULD remove anySTYLED-DESCRIPTION
properties if they update theDESCRIPTION
to avoid propogating inconsistent data. - A semantic calendar object SHOULD include a
LINK
property referring to a URL for editing/maintaining the object. This is specified via theLINKREL=edit
parameter, 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
CONCEPT
property. 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-DATA
property. 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-DATA
property 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
LINK
property referring to the previous instance via theLINKREL=prev
parameter. - Semantic calendaring objects SHOULD include authoring information via one or more
LINK
properties with aLINKREL=author
parameter.
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
UID
value for each published event via a WebSub hub. This hub is to be linked in the event via aLINK
withLINKREL=hub
. A recipient CUA SHOULD check for suchLINK
properties 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
LINK
property referring to a callback URL for posting a new link. This property is identified via theLINKREL=webmention
parameter. 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 newLINK
property for the URL using theLINKREL=replies
parameter.