# SOLID (W3C)
## Pour le projet européen 4CH
#### Cartographie des acteurs et des compétences (4CH)
![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/upload_87e5d9eae0cfcc64513f55626d1c8535.png)
---
### Cartographie des acteurs et des compétences
#
Dans cette présentation, nous ferons
**un focus technique pour expliquer le standard SOLID**.
:::success
Nous conseillons au lecteur d'avoir lu préalablement les présentations suivantes :
* [Carto 4CH (non technique)](https://pad.lescommuns.org/p/SlideCarto4CH)
* [Carto 4CH (technique)](https://pad.lescommuns.org/p/SlideInteroperabiliteSemapps)
:::
---
### Rappel : Proposition
(... toujours dans le cadre du projet de cartographie des compétences...)
| Architecture | distribuée |
| -------- | -------- |
| Nous proposons [une architecture distribuée](https://www.figma.com/file/aPrHSKEigcKfcrVX1nXycy/4CH---Carto-distribu%C3%A9e-simplifi%C3%A9e) basée sur le standard du W3C : SOLID|![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/upload_d8fc6ac94744cb281a6f851ac699e585.png)
---
### SOLID
Définition sur [Wikipedia](https://fr.wikipedia.org/wiki/Solid_(projet_de_web_d%C3%A9centralis%C3%A9))
**Solid** (Social Linked Data, en anglais) est un projet développant, de manière collaborative, **des solutions pour un web décentralisé**.
Ces spécifications sont à l'état de "proposition" par le Community Working Group du **W3C**,
avec à sa tête, **Tim Berners Lee** (principal inventeur du Web).
---
### SOLID, vu sous plusieurs angles
* Un **projet** / une vision / un **standard** : https://solidproject.org/
* Un ensemble de **normes** et de **formats/vocabulaires**
* Un **protocol** technique : https://solidproject.org/TR/protocol
* Des **serveurs** implémentant ce standard
* Des **tests** pour valider ces implémentations
* Un ensemble d'**applications**
* Une **communauté** ouverte, et de la documentation (forums, tutoriels)
---
### Inrupt, la startup de Tim Berners-Lee
En 2018, Tim Berners-Lee créer une start-up pour concurencer les GAFAM.
La mission de la société est de "fournir de l'énergie commerciale et un écosystème pour aider à protéger l'intégrité et la qualité du nouveau web bati sur Solid".
En décembre 2021, Inrupt lève 30 millions de dollars de levée de fonds [en Serie A](https://www.lecoindesentrepreneurs.fr/levees-de-fonds-pre-seed-seed-serie-a-b-c/#lev%C3%A9e-de-fond-s%C3%A9rie-a) de la part de la part d'investisseurs
---
### Un ensemble de [spécifications](https://solidproject.org/TR/protocol) pour (1) ...
* **structurer** les données (données liées)
* **stocker** les données
* **accéder** et **mettre à jour** les données CRUD (Create, Read, Update, Delete / HTTP GET, PUT, POST, PATCH, DELETE)
---
### Un ensemble de [spécifications](https://solidproject.org/TR/protocol) pour (2) ...
* S'**authentifier** et gérer les **permissions**
* Notion de **POD** (Personal Online Data store)
* Mode **décentralisé/distribué**
* Autres : **Activity Pub**... (abonnement, alertes...)
---
### La gestion des données personnelles
L'idée est que chaque personne ou organisation conserve ses données dans des **PODs** (**P**ersonal **O**nline **D**ata store / Magasins de données personnelles), et décide avec qui il souhaite les partager.
Ce principe créer un réseau de confiance.
Pour mettre cela en musique, SOLID s'appuie sur la notion de **POD**s, basés sur le protocol **LDP**
---
![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/upload_17869e2782dd5f11b4b924e8ecf5b5fc.png)
---
### Le protocol LDP (**L**ink **D**ata **P**latform)
Peut s'apparenter (gros résumé) à du FTP pour stocker des données sémantiques.
* notion de **containers** (sorte de répertoire)
* contenant des **données sémantiques** (ou pas)
* accessible en **REST** (HTTP / GET, POST, PUT, PATCH, DELETE)
---
![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/upload_26fd2eb84025c4e6a978a31fccb57d24.png)
---
### Fonctionnement des PODs
[Extrait de... ](http://solid.georgetown.domains/technical-component/)
Ce sont des réperoires personnels qui stockent les données d'un utilisateur, tout en gérant l'accès, les permissions et l'authentification.
L'utilisateur peut donner des droits sur certaines données à une personne de confiance.
[Projet de POD Browser de inrupt](https://inrupt.com/products/podbrowser)
---
![](https://hot-objects.liiib.re/pad-lescommuns-org/uploads/upload_a1cf745609c889afa8e75d7c45fafe52.png)
---
### Tests d'intégrité des données
Il existe deux niveaux de tests d'intégrité des données :
* shape / footprint
* types de conteneur : Basic, Direct et indirect
---
### Les implémentations de serveurs SOLID
* ESS (Inrupt) : [Entreprise Solid Server](https://inrupt.com/products/enterprise-solid-server/)
* CSS : [Community Solid Server](https://github.com/CommunitySolidServer/CommunitySolidServer/)
* NSS : [Node Solid Server](https://github.com/nodeSolidServer/node-solid-server)
* [Solid for Nextcloud](https://github.com/pdsinterop/solid-nextcloud)
* [PHP Solid Server](https://github.com/pdsinterop/php-solid-server)
* En France (s'approchant de SOLID) : [SemApps](semapps.org), [Startin'blox](https://startinblox.com/fr/)
---
### Les applications SOLID
Il existe depuis un peu plus de 5 ans de nombreuses applications développées par la communauté SOLID, dans de nombreux domaines (social, jeux, santé, finance, gestion de projet, édition, géolocalisation)
Voir : https://solidproject.org/apps
---
### Projets SOLID
* [GraphMetrix](https://graphmetrix.com/) and [TrinPod](https://trinpod.us/)
* [DataVillage](http://www.datavillage.me/) (european project)
* [MELLON](https://knows.idlab.ugent.be/projects/mellon/)
---
### [SemApps](https://semapps.org/), plus qu'un serveur SOLID...
L'[assemblée Virtuelle](https://virtual-assembly.org/) propose une implémentation de la philosophie SOLID dans son projet SemApps.
:::success
Une présentation de SemApps est disponible :
[SemApps : La boite à outils sémantique](https://pad.lescommuns.org/SlideSemapps)
:::
---
### Merci de votre attention, des questions ?
[Plus d'infos sur SemApps](https://semapps.org/)
Yannick Duthé
yannick.duthe@univ-tours.fr
---
### Annexes
#### Autres présentations SOLID
* Site SOLID : https://solidproject.org/
* Site de Inrupt : https://inrupt.com/
* Forum : https://forum.solidproject.org/
* Vidéos : https://vimeo.com/solidworld
* Solid PODs : http://solid.georgetown.domains/
* [Solid utilisé avec le format FHIR pour obtenir du FAIR](https://www.w3.org/2019/Talks/1209-swat4ls-egp/)
* [Introduction à SOLID de Ruben Verborgh (W3C)](https://rubenverborgh.github.io/Solid-Lecture-2018/)
* [Présentation de SOLID par l'équipe de Startin'blox](https://docs.startinblox.com/import_documentation/first_step/Solid-introduction.html)
* Blog : https://www.konsolidate.eu/stories
{"type":"slide","slideOptions":{"transition":"slide"},"title":"SOLID-fr","tags":"4CH, Carto4CH, SOLID, SemApps, MSH, Interropérabilité, Technique"}