Linked Data Notifications


Linked Data Notifications is a W3C Recommendation that describes a communications protocol based on HTTP, URI, and RDF on how servers can receive messages pushed to them by applications, as well as how other applications may retrieve those messages. Any web resource can advertise a receiving endpoint for notification messages. Messages are expressed in RDF, and can contain arbitrary data.

Motivation

The web is a decentralized system of web resources, published by multiple organizations and individuals. Web resources, such as web pages and more formally structured Linked Data, frequently include links to other resources across the web, and may comment or describe them in various ways. The receiving end, however, are not generally notified of such link creation, and thus are unable to provide backlinks without manual intervention. Interactions within social media platforms, such as comments on a news article, are currently "locked" within the platform and hard to access across the web.
Several linkback mechanisms exists, and are commonly used between blog systems, e.g. a "response" post in blog B about a post in blog A causes B's platform to send a pingback to be shown on the original blog A. These mechanisms are however generally limited in which structured information can be sent, and the notifications themselves do not form part of the decentralized web and may be difficult to consume by any third party application.
A key motivation for LDN is to support notifications between decentralized Web applications, including web browsers who - not having their own HTTP server - are unable to generate a HTTP link for their reply messages. Another motivation is to structure notifications as RDF statements using any Controlled vocabulary - so that any consuming application can select the particular information they understand.

Protocol

At each stage, the sender and consumer may perform content negotiation to send or receive in any mutually agreed RDF serialization format, however a compliant LDN receiver must support at least JSON-LD.

Examples

A sender or consumer discovers the inbox for a given URI, in this example using the HEAD method:

HEAD http://example.org/article/5 HTTP/1.1


HTTP/1.1 200 OK
Link: ; rel="http://www.w3.org/ns/ldp#inbox"

A sender sends a notification to the discovered inbox, in this example using the Schema.org vocabulary:

POST http://example.org/inbox/7 HTTP/1.1
Content-Type: application/ld+json


HTTP/1.1 201 Created
Location: http://example.org/inbox/f44f3f11

A consumer lists the content of the discovered inbox to find 3 notifications:

GET http://example.org/inbox/7 HTTP/1.1
Content-Type: application/ld+json


HTTP/1.1 200 OK
Content-Type: application/ld+json

Note that the URIs of the original resource, inbox and notifications are not required to be hosted on the same HTTP server. The consumer follows the links for any notifications they wish to retrieve.
In this example, the consumer retrieves the new f44f3f11 notification, with content negotiation to prefer the Turtle RDF format:

GET http://example.org/inbox/f44f3f11 HTTP/1.1
Accept: application/ld+json;q=0.9, text/turtle;q=1.5


HTTP/1.1 200 OK
Content-Type: text/turtle
@prefix schema: .
;
schema:object ;
schema:result
].

Implementations

Several exists, covering senders, consumers and receivers, including:
Any Linked Data Platform implementations are also conforming Linked Data Notification receivers as LDN is a strict subset of LDP.