Abstract
Nous proposons de présenter des travaux sur l’indexation et son exploitation dans le contexte du web sémantique et en particulier du projet Solid/Linked Web Storage du W3C. Nous avons conçu un vocabulaire basé sur les shapes SHACL qui permet d’indexer les données à différentes échelles. Nous avons aussi développé un moteur de requêtage en TypeScript capable de parcourir ces index et trouver des résultats qui valident une certaine shape fournie en entrée.
L’indexation permet de grandement accélérer la recherche de données. La spécification Solid actuelle n’inclue pas de capacité d’indexation côté serveur. Sans modifier la spécification il est possible d’ajouter cette capacité côté serveur à l’aide d’un agent ou directement côté client. Dans les deux cas il est nécessaire de formaliser cette capacité d’indexation dans un protocole dit « client-client ».
Nos travaux ont débuté dans le cadre d’une coopération entre l’INRIA et l’entreprise française Startin’Blox il y a plus de deux ans. Nous avons montré comment ces index ont permis de solutionner un problème de recherche décentralisée dans le contexte d’applications Solid. Dans l’une de nos démonstrations les index étaient répartis sur 32 serveurs Solid. Un index fédéré était également présent sur un serveur de fédération. Ces index étaient interrogés selon les critères de recherche exprimés côté client.
Aujourd’hui le moteur de requêtage a été réécrit et utilise désormais un validateur SHACL (rdf-validate-shacl). Cette nouvelle implémentation présente l'avantage de ne pas être fortement couplée aux index. Le moteur se contente de valider des shapes sur les entrées d'index fournies par une stratégie de requêtage. De plus cette implémentation doit permettre de profiter pleinement de l'expressivité de SHACL.
Le moteur de requêtage est basé sur la bibliothèque TypeScript Semantizer. Cette bibliothèque en cours de réécriture permet de manipuler des datasets RDF à l’aide de mixins. Ces mixins fournissent des méthodes pour manipuler les quads présents dans des datasets. Un certain nombre de mixin sont fournis et les clients peuvent définir leur propre mixin. Un générateur de code permet de générer le code source de mixins « basiques » à partir de shape SHACL.
Auteur : Maxime Lecoq-Gaillard est ingénieur de recherche et développement titulaire d'un master de l'ISTIC en architecture logicielle (Université de Rennes 1). Coprésident de Data Food Consortium, directeur technique chez AlmaFood, il porte le projet Mycelium : un ensemble d’applications Solid et libres pour les paysan⋅ne⋅s.
Liens utiles :