Linked Data Event Streams in Solid LDP containers
Wout Slabbinck, Ruben Dedecker, Sindhu Vasireddy, Ruben Verborgh and Pieter Colpaert
DEPARTMENT ELIS
RESEARCH GROUP IDLab Technology
What is Solid?
A protocol to give people control over their data
Storage in Solid
Linked Data Platform (LDP)
Storage in Solid
Linked Data Platform (LDP)
Core components of Solid
WebID
Solid Open ID Connect
Core components of Solid
Web Access Control (WAC)
Core components of Solid
Let’s build an application!
Solid in practice: Location application
Solid in practice: Location application
51° 0' 46.90'' N
3° 42' 29.48'' E
Location application example
Writing
HTTP PUT
Pod/private/location.ttl
Location application example
Reading
HTTP GET
Pod/private/location.ttl
Location application example
It works. We are done!
Location application example
Remember cross app interoperability
Let’s take a step back
Event Sourcing to the rescue
In an Event Source every action is written as an immutable event in an append-only event log
Event Sourcing
Event log
App
Writing
App
Snapshot
State
Reading
Location event t0
Location event t1
Location event t2
Event Sourcing
Location event t0
Location event t1
Location event t2
Event log
App
App
Complex query
Writing
Append-only Event Log
Linked Data Event Streams (LDES)
𝚫
𝚫
𝚫
𝚫
𝚫
𝚫
𝚫
View
Fragments
Event Stream
Event Sourcing in Solid
LDES in LDP Protocol
Append-only Event Log in Solid
𝚫
𝚫
𝚫
𝚫
𝚫
𝚫
𝚫
View
Fragments
Event Stream
LDES in a Solid Container
LDES in a Solid Container
𝚫
𝚫
𝚫
𝚫
𝚫
𝚫
𝚫
View
Fragments
Event Stream
LDES in a Solid Container
Event Stream
View
Fragments
Location application: revisited
Append location
Event log
Location application: revisited
Event log
Read latest location
App
App
Read routes
App
…
Conclusion
Event sourcing in Solid is possible
But, some limitations using the Solid LDP Protocol
Re-balancing is impossible
Not strictly following the LDES in LDP protocol
Retention policies are client managed
Let us have a discussion
Should there be a new kind of append-only container, managed by the server, in the Solid Specification?