LDNChannel2023
Version 1.0.0 Editor’s Draft,
More details about this document
- This version
- https://solid.github.io/notifications/ldn-channel-2023
- Latest version
- https://solid.github.io/notifications/ldn-channel-2023
- Editors
- Sarven Capadisli
- Created
- Published
- Modified
- Repository
- GitHub
- Issues
- Language
- English
- License
- MIT License
- Document Status
- Editor’s Draft
- In Reply To
- Solid Origin
- Solid Notifications Protocol
- Notifications Panel Charter
- Policy
-
- Rule
- Offer
- Unique Identifier
- https://solid.github.io/notifications/ldn-channel-2023#document-policy-offer
- Target
- https://solid.github.io/notifications/ldn-channel-2023
- Permission
-
- Assigner
- W3C Solid Community Group
- Action
MIT License. Copyright © 2022-2023 W3C Solid Community Group.
Abstract
The Solid Notifications Protocol describes how notification receivers can have messages pushed to them by notification senders, as well as how applications can choose from available notification channels in which notification receivers get messages. This specification defines the LDNChannel2023
notification channel type to enable Subscription Clients to request subscriptions to Subscription Servers, and for Notification Senders to deliver messages to Notification Receivers based on the Linked Data Notifications protocol.
Status of This Document
This section describes the status of this document at the time of its publication.
This document was published by the Solid Community Group as an Editor’s Draft. The information in this document is still subject to change. You are invited to contribute any feedback, comments, or questions you might have.
Publication as an Editor’s Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the W3C Community Contributor License Agreement (CLA). A human-readable summary is available.
Introduction
This section is non-normative.
In order to enable users to be notified about activities pertaining topic resources of interest at any point in time, their applications need to make subscription requests indicating where they can be notified.
The Solid Notifications Protocol describes how notification receivers can have messages pushed to them by notification senders, as well as how applications can choose from available notification channels in which notification receivers get messages. This specification defines the LDNChannel2023
notification channel type to enable Subscription Clients to request subscriptions to Subscription Servers, and for Notification Senders to deliver messages to Notification Receivers based on the Linked Data Notifications protocol.
LDN supports sharing and reuse of notifications across applications, regardless of how they were generated. This allows for more modular systems, which decouple data storage from the applications which display or otherwise make use of the data. Instead of treating notifications as ephemeral or non-persistent entities, this specification works with the notion of a notification as an individual entity with its own URI. As such, notifications can be retrieved and reused.
This specification is for:
- Server developers that want to enable clients to receive activities about resources.
- Application developers who want to implement a client to receive activities about resources.
Terminology
This section is non-normative.
This specification uses the terms from the [SOLID-NOTIFICATIONS-PROTOCOL] specification. When Solid Notifications Protocol terminology is used it is linked directly to that specification.
Conformance
This section describes the conformance model of the Solid Notifications Protocol.
Normative and Informative Content
All assertions, diagrams, examples, and notes are non-normative, as are all sections explicitly marked non-normative. Everything else is normative.
The key words “MUST”, “MUST NOT”, “SHOULD”, and “MAY” are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
The key words “strongly encouraged”, “strongly discouraged”, “encouraged", “discouraged", “can", “cannot”, “could”, “could not”, “might”, and “might not” are used for non-normative content.
Specification Category
The Solid Protocol identifies the following Specification Category to distinguish the types of conformance: API, notation/syntax, set of events, protocol.
Classes of Products
The LDNChannel2023 notification channel type identifies the following Classes of Products for conforming implementations by specialising Solid Notifications Protocol's Classes of Products. These products are referenced throughout this specification.
- Subscription Client
- A Subscription Client requests subscriptions by building on Subscription Client [SOLID-NOTIFICATIONS-PROTOCOL].
- Subscription Server
- A Subscription Server responds to subscription requests by building on Subscription Server [SOLID-NOTIFICATIONS-PROTOCOL] and Receiver [LDN].
- Notification Sender
- A Notification Sender is the sender of a notification message by building on Notification Sender [SOLID-NOTIFICATIONS-PROTOCOL]
- Notification Receiver
- A Notification Receiver is the recipient of a notification message by building on Notification Receiver [SOLID-NOTIFICATIONS-PROTOCOL] and Receiver [LDN].
- Resource Server
- A resource server that builds on Resource Server [SOLID-NOTIFICATIONS-PROTOCOL].
Interoperability
Interoperability of implementations for Subscription Clients and Resource Servers is tested by evaluating an implementation’s ability to request and respond to HTTP messages that conform to this specification.
Interoperability of implementations for Subscription Clients and Subscription Servers is tested by evaluating an implementation’s ability to request and respond to HTTP messages that conform to this specification.
Interoperability of implementations for Notification Sender and Notification Receiver is tested by evaluating an implementation’s ability to produce and consume content that adheres to the notification data model and conforms to the LDNChannel2023 notification channel type.
Protocol
This section specifies the discovery mechanism, capabilities of subscriptions, and establishing a connection to a notification channel.
Issue: Authentication: exchanging public keys, signing messages
Details need to be further specified. The Security Vocabulary (or The Cert Ontology, WOT) can be used.
- Subscription Clients to share Notification Receiver's public key, where
sendTo
has acontroller
(which is thereceiver
). - Subscription Servers to share Notification Sender's public key, where
sender
describes the key.
See Notification Channel Data Model for example subscription requests and response including public keys.
Subscription Client lets the Notification Receiver know about the Notification Sender and their public key.
Notification Receiver sets Authorization rules for Notification Sender.
Notification Sender can optionally use HTTP Message Signatures.
Discovery
This specification's discovery mechanism is a constraint of Solid Notifications Protocol's description resource in that the description resource only advertises the subscription resource.
Subscription
The subscription mechanism enables Subscription Clients and Subscription Servers with the creation and management of subscriptions.
A subscription response is an extension of subscription response [SOLID-NOTIFICATIONS-PROTOCOL] (where the Subscription Server conforms to Receiver [LDN]).
Subscription Clients MUST use the Notification Channel Data Model in the subscription request payload.
Subscription Servers MUST use the Notification Channel Data Model in the subscription response payload.
Notification Channel
Notification Sender MUST be able to produce message payloads using the Notification Message Data Model.
Notification Receiver MUST be able to process message payloads using the Notification Message Data Model.
LDNChannel2023
This specification defines the LDNChannel2023
notification channel type with the URI http://www.w3.org/ns/solid/notifications#LDNChannel2023
that can be used with Solid Notifications Protocol.
Features
The following features can be used with the LDNChannel2023
notification channel type:
- activityType
- A property used to indicate the notification activity type.
Issue: Add activityType to vocab and JSON-LD context
#http://www/w3.org/ns/solid/notifications notify:activityType a rdf:Property ; rdfs:label "notification activity type"@en ; rdfs:comment "A property used to indicate the notification activity type."@en ; rdfs:isDefinedBy <http://www.w3.org/ns/solid/notifications#> ; vs:term_status "testing" . #https://www.w3.org/ns/solid/notification/v1 "activityType": { "@id": "notify:activityType", "@type": "@id" },
Notification Message
A Notification Sender is triggered by a process to deliver messages to Notification Receiver.
Notification Receivers MUST conform to the receiver requirements of the Linked Data Notifications [LDN] specification when allowing requests to the resource specified by sendTo
.
Notification Senders MUST use the sender
value to identify themselves when the Notification Receiver requires authentication.
Notification Receiver is expected to accept notifications from the sender
at the sendTo
location.
Data Model
This section describes the description resource, subscription resource, notification channel, and notification message data models which specialises the data models of Solid Notification Protocol.
Description Resource
The description resource has the following properties:
- One
id
property to identify the resource described by the description resource. - One or many
subscription
property to identify the available subscription resources.
Subscription Resource
The subscription resource has the following properties:
- One
id
property to identify subscription resource. - One
channelType
property whose object isLDNChannel2023
. - Zero, one or many
feature
property value(s) to state the supported features.
Notification Channel
The notification channel has the following properties:
- One
id
property to identify the notification channel. - One
type
property whose object isLDNChannel2023
. - At least one
topic
property to identify the resources that the notifications are about. - Zero, one or many property values stating a particular feature.
Notification channel in the subscription request has the following property:
- One
sendTo
property to identify the resource that can accept notifications (LDN inbox). - Zero or one
receiver
property to identify the party that controls thesendTo
resource.
Issue: Add receiver to vocab and JSON-LD context
Issues: notifications/issues/153
#http://www/w3.org/ns/solid/notifications notify:receiver a rdf:Property ; rdfs:label "receiver"@en ; rdfs:comment "The property used to identify the party that receives notifications."@en ; rdfs:isDefinedBy <http://www.w3.org/ns/solid/notifications#> ; vs:term_status "testing" . #https://www.w3.org/ns/solid/notification/v1 "receiver": { "@id": "notify:receiver", "@type": "@id" },
Notification channel in the subscription response has the following property:
- One
sender
property to identify the party that sends notifications.
Notification Message
References
Normative References
- [LDN]
- Linked Data Notifications. Sarven Capadisli; Amy Guy. W3C. 2 May 2017. W3C Recommendation. URL: https://www.w3.org/TR/ldn/
- [RFC2119]
- Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
- [RFC8274]
- Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc8174
- [SOLID-NOTIFICATIONS-PROTOCOL]
- Solid Notifications Protocol. Sarven Capadisli. W3C Solid Community Group. Version 0.2.0. URL: https://solidproject.org/TR/notifications-protocol
Informative References
- [SOLID-PROTOCOL]
- Solid Protocol. Sarven Capadisli; Tim Berners-Lee; Ruben Verborgh; Kjetil Kjernsmo. W3C Solid Community Group. Version 0.10.0. URL: https://solidproject.org/TR/protocol