Solid: Linked Data for personal data management

Tim Berners-Lee & Ruben Verborgh

DeSemWeb2018, 8 October 2018

Solid: Linked Data for personal data management

Tim Berners-Lee

Ruben Verborgh

The Solid ecosystem enables you to use the apps you need, while storing your data wherever you want.

You own your data, and share it
with the apps and people you choose.

Solid: Linked Data for personal data management

Solid: Linked Data for personal data management

You can choose where you store
every single piece of data you produce.

You can grant apps and people access
to very specific parts of your data.

Separating app and storage competition
drives permissionless innovation.

The traditional way of building apps
does not work well with decentralization.

Building apps over decentralized data
requires different app techniques.

Solid is an ecosystem of data and apps
that work seamlessly together.

The Solid server and several apps exist
and are usable for developers.

The Solid ecosystem is backed by Inrupt,
which aims to accelerate development.

Solid: Linked Data for personal data management

Linked Data in the RDF model
solves crucial challenges for Solid.

Through URLs and RDF, every piece of data
can link to any other piece of data.

PREFIX as: <https://www.w3.org/ns/activitystreams#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
<#ruben-likes-iswc2018> a as:Like;
  as:actor  <https://ruben.verborgh.org/profile/#me>;
  as:object <http://iswc2018.semanticweb.org/#this>;
  as:published "2018-10-08T21:00:00Z"^^xsd:dateTime.

Link following is crucial to make this work.

Shapes (and hopefully soon semantics)
enable layered compatibility.

PREFIX as: <https://www.w3.org/ns/activitystreams#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
<#ruben-likes-iswc2018> a as:Like;
  as:actor  <https://ruben.verborgh.org/profile/#me>;
  as:object <http://iswc2018.semanticweb.org/#this>;
  as:published "2018-10-08T21:00:00Z"^^xsd:dateTime.

Different source data can be concatenated
(but let’s track provenance).

PREFIX as: <https://www.w3.org/ns/activitystreams#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
<#ruben-likes-iswc2018> a as:Like;
  as:actor  <https://ruben.verborgh.org/profile/#me>;
  as:object <http://iswc2018.semanticweb.org/#this>;
  as:published "2018-10-08T21:00:00Z"^^xsd:dateTime.
<#tim-likes-iswc2018> a as:Like;
  as:actor  <https://www.w3.org/People/Berners-Lee/card#i>;
  as:object <http://iswc2018.semanticweb.org/#this>;
  as:published "2018-10-08T21:00:00Z"^^xsd:dateTime.

Decentralized Linked Data for people
activates many options for research.

Solid: Linked Data for personal data management

You’re using Semantic Web technology?
Developers have never wanted it.

Can developers build Linked Data apps
without exposure to raw RDF?

LDflex is a domain-specific language
for traversing Linked Data graphs.

const person = node('https://me.example.org/#me')
person.label
person.friends.firstName
const label = await person.label
for await (const name of person.friends.firstName)
  console.log(name)

LDflex uses SPARQL under the hood
and invokes a client-side query engine.

const person = node('https://me.example.org/#me')
const query = await person.friends.firstName.sparql
SELECT ?firstName WHERE {
  <https://me.example.org/#me> foaf:knows ?v0.
  ?v0 foaf:givenName ?firstName.
}

Through React components, we tap into
a large front-end developer community.

<div>
  <h1>Solid App</h1>
  <AuthButton popup="popup.html"/>
  <LoggedInPane>
    <p>Welcome back, <DataField data="user.firstName"/>.</p>
  </LoggedInPane>
  <LoggedOutPane>
    <p>You are logged out.</p>
  </LoggedOutPane>
</div>

Solid: Linked Data for personal data management

Join us at solid.inrupt.com!