Solid and OSLC: similar stack, similar goals?

Ruben Verborgh

OSLC Fest, 6 November 2018

Solid and OSLC:
similar stack, similar goals?

Ruben Verborgh

Ghent University – imec

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 acts as a data pod
that stores and guards your data.

A typical data pod can contain
any data you create or need online.

Solid clients are browser or native apps
that read from or write to your data pod.

Any app you can envision,
you can build with Solid.

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-oslcfest> a as:Like;
  as:actor  <https://ruben.verborgh.org/profile/#me>;
  as:object <http://www.oslcfest.org/#this>;
  as:published "2018-11-06T08: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-oslcfest> a as:Like;
  as:actor  <https://ruben.verborgh.org/profile/#me>;
  as:object <http://www.oslcfest.org/#this>;
  as:published "2018-11-06T08:00:00Z"^^xsd:dateTime.

Reasoning can bridge vocabulary gaps.

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-oslcfest> a as:Like;
  as:actor  <https://ruben.verborgh.org/profile/#me>;
  as:object <http://www.oslcfest.org/#this>;
  as:published "2018-11-06T08:00:00Z"^^xsd:dateTime.
<#axel-likes-oslcfest> a as:Like;
  as:actor  <https://www.example.org/people/Axel#i>;
  as:object <http://www.oslcfest.org/#this>;
  as:published "2018-11-06T08:00:00Z"^^xsd:dateTime.

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

How can we connect the Solid
and OSLC ecosystems?

Solid and OSLC:
similar stack, similar goals?

@RubenVerborgh – ruben.verborgh.org

Ghent University – imec