Motivation
Decentralization is a widely discussed topic these days. Solid is a Web-based ecosystem founded by Tim Berners-Lee that enables people store data in their own personal data pod. This gives users true data ownership, as they can choose where their data resides, and who can access it. The decentralized applications that can be built on top of Solid data pods are not tied to specific user data. Instead, users need to give applications explicit access to their data. Only then can applications query over one or more data pods.
Comunica [1] is a JavaScript-based meta query engine that was introduced as a flexible way of querying Linked Data on the Web. As such, it is an ideal platform for querying over Solid data pods, and for building truly decentralized applications. The main functionality is demonstrated via our Web application. The interaction with Solid data pods is demonstrated within the LDflex playground, where Comunica is used in the back-end behind a user-friendly LDflex path expression.
The goal of this tutorial is to provide participants with knowledge on how to build decentralized applications, by combining Solid data pods and querying with Comunica.
Description
We plan a full day for this tutorial as shown in Table 1. The morning session will focus on the basics of Solid and Comunica, and the afternoon will consist of hands-on sessions for building applications. We expect participants to have basic knowledge of Web technologies such as HTML, JavaScript, RDF and SPARQL.
Topic | Duration | |
---|---|---|
Morning 1: Solid (1:20) | Introduction | 0:10 |
Introduction to Solid | 0:30 | |
Getting Started with Solid | 0:40 | |
Break | — | — |
Morning 2: Comunica (1:20) | Introduction to Comunica | 0:40 |
Getting Started with Comunica | 0:40 | |
Lunch Break | — | — |
Afternoon 1: Apps (1:20) | LDflex | 0:40 |
GraphQL-LD | 0:40 | |
Break | — | — |
Afternoon 1: Hackathon (1:20) | Hackathon | 1:20 |
Table 1: Planning of the tutorial
In the morning, we will introduce the basic concepts behind Solid and Comunica, and we will allow participants to get started with both of them. For Solid, this will involve guiding the audience towards setting up their own data pod. For Comunica, we will allow participants to try out several example queries via a Web-based query engine.
In the afternoon, we will focus on building applications on top of Solid using Comunica’s querying capabilities. We will focus on three querying APIs to interact with Comunica, ranging from basic to advanced, as shown in Fig. 1. First, we will demonstrate the usage of LDflex, which is a simple path-based query expression language in JavaScript that aims to improve the developer experience [2]. After that, we will focus on GraphQL-LD [3], which is a technique for querying Linked Data based on the highly popular GraphQL [4] query language. It is based on declarative queries, which are more expressive than LDflex. Finally, we will briefly focus on SPARQL queries [5], which is an even more expressive way of querying Linked Data, but is more difficult to use.
Material
The tutorial is guided by slides, which are shared online. For the hands-on coding sessions, we provide a git repository with separate branches for all sequentially completed tasks. This will allow participants that are unable to complete a certain task, to still begin with the next task by checking out a different branch.
The slides and git repository are open for everyone under the CC BY 4.0 license.
Requirements
- git (you probably already have this)
- Node.js (>= 10.0)
- A JavaScript editor. (we will use WebStorm, but feel free to use anything you want)
Solid
Comunica
Apps
Hackathon
Useful links
Audience
This tutorial focuses on Web developers and researchers that want to use, develop, or research decentralized Web applications. We assume elementary knowledge on Web technologies such as HTML, JavaScript, RDF and SPARQL. We expect participants to bring a laptop that has a recent Web browser, git, and an editor or IDE with JavaScript support. The end-goal is to provide participants with sufficient knowledge and experience to build applications over Solid data pods using the Comunica query engine. In order to attract participants, we will announce it over the relevant decentralization and querying mailing lists, via Twitter, and directly via Gitter chat channels focused on Linked Data development. Given the high participation rate of the related Solid hands-on session at the DeSemWeb workshop at ISWC 2018, we expect around 20 to 30 participants for this tutorial.
Presenters
This tutorial will be presented by Ruben Taelman (primary contact: ruben.taelman@ugent.be) and Julián Rojas from Ghent University – imec.
Ruben is a finishing PhD student who is active in the research domain of querying Linked Data. Julián is a third year PhD student focused on studying Web interfaces for Linked Open Data publishing. Ruben is one of the main designers and developers of Comunica and is actively contributing to the development of Solid. Julián is an active user of Comunica and is currently collaborating is several projects where Comunica and Solid are key components. This makes them uniquely qualified to present this tutorial. Ruben have also presented tutorials at conferences in the past [6, 7], and assist practical sessions of the Web Development course by Ruben Verborgh at Ghent University.
Requirements
For this tutorial, we require a projector to present our slides, and a power plug for charging our laptop.