# Discovery : une bibliothèque logicielle pour rendre accessible l'utilisation des graphes de connaissances RDF dans le développement d'applications Web
## Contexte : Les données RDF et leur exploitation
### Évolution dans le contexte de la bioinformatique
- Utilisation croissante : Adoption des données RDF pour représenter et interconnecter des informations biologiques complexes.
- Interopérabilité : Facilitation de l'intégration et de l'analyse des données issues de diverses sources bioinformatiques.
### Accessibilité à travers le web
- Fichiers RDF : Disponibilité des données sous forme de fichiers (Turtle/JSON-LD/RDF-XML) téléchargeables pour une manipulation et une intégration faciles.
- Points de terminaison SPARQL : Accès en temps réel aux données RDF via des endpoints SPARQL pour effectuer des requêtes complexes et dynamiques.
### Outils disponibles pour les utilisateurs finaux
- Navigateurs RDF : Outils permettant la visualisation et la navigation des graphes de connaissances RDF.
- Clients SPARQL : Interfaces utilisateur pour écrire et exécuter des requêtes SPARQL.
## L'approche traditionnelle pour la gestion des données persistentes dans les systèmes d'information
### Implementation avec une base de données relationnelle
- Choix d'une base de données : Sélection d'un SGBDR (Système de Gestion de Base de Données Relationnelle) adapté aux besoins de l'application.
- Peuplement de la base de données
- Modélisation et création des tables : Conception du schéma de base de données et mise en place des tables.
- Insertion des données : Ajout des données initiales via scripts SQL, outils d'importation, ou autres moyens.
### Utilisation d'un ORM et d'une couche logicielle applicative
- ORM (Object-Relational Mapping) : Utilisation d'un ORM pour mapper les objets de l'application aux tables de la base de données.
- Couche logicielle applicative : Développement d'une couche applicative pour interagir avec la base de données via l'ORM, gérer la logique métier et les transactions.
## Problématiques pour le développement applicatif
### Graphes de connaissances dans les BDD
- Transfert du KG dans la BDD
- Gestion des mises à jours entre le KG et la BDD => problème potentiel de coherence
- Multiplicité des SI/BDD (couches applicatives + intégration) à maintenir
### Connaissance des langages RDF et SPARQL
- Multiplicité des sources d'intérrogration avec differents degrée de fonctionnalité
- fichier ftp / sparql endpoint
- format json-ld/turtle/rdf-xml,...
- pas très bien intégrés dans la communauté des développeurs
## Objectifs de l'API Discovery
- Ecourager l'utilisation et la réutilisation de KG sans les SI
- Faciliter le développement des composants logiciels et des IHM pour l'exploitation des graphes de données RDF
- page statique
- client/serveur
- gestion transparente des sources de données RDF
## Fonctionnalités de l'API Discovery
- Programmation/construction de requêtes avec des objets immuables
- Interrogation de plusieurs contenus RDF (point de terminaison SPARQL, fichier RDF, contenu RDF)
- Requête fédérée
- Gestion "paresseuse" par page des résultats
- Abonnement aux événements de statut des requêtes SPARQL
- Conversion en chaîne de caractères des requêtes et des configurations pour faciliter le transport via HTTP
- Décoration des noeuds de construction avec des metadonnées
## Ressource
- https://github.com/p2m2/tp-discovery-websempilot