web-dev-qa-db-fra.com

Quelle est la différence entre GraphQL et SPARQL?

Je fais actuellement beaucoup de recherches sur le Web sémantique et des modèles de données complexes qui représentent des relations entre des individus et des organisations… Je connaissais un peu d’ontologies sémantiques bien que je n’ai jamais compris ce qu’il avait été utilisé sinon dessiné.

J'ai vu sur le wiki universitaire que le langage utilisé pour interroger une ontologie est le SPARQL (dites-moi si je me trompe).

Mais récemment, j'ai vu une entreprise qui avait créé une ontologie sémantique la mettre sous la forme de GraphQL que je ne connaissais pas ( https://diffuseur.datatourisme.gouv.fr/graphql/voyager/ ).

Il me semble que les ontologies sémantiques sont faites pour mieux trouver des informations, par exemple pour créer un chatbot (c'est ce que je veux faire), mais ici, elles ont transformé une ontologie sémantique en une API, n'est-ce pas? Pour faire un GraphQL, devrais-je d'abord construire une ontologie sémantique?

Pourriez-vous m'expliquer un peu la différence entre tout cela, honnêtement, c'est un peu vague pour moi.

9
Erwan Pesle

Le contexte

Datatourisme est une plateforme qui permet de publier (via le composant Producteur) et de consommer (via le composant Diffuseur) des données ouvertes relatives aux POI.

Il semble que vous ayez lié à une application particulière développée sur Diffuseur avec l'aide de GraphQL Voyager . L'application illustre les fonctionnalités de l'API GraphQL exposée par Diffuseur.

La documentation de l'API est disponible ici:

Problème

  • Datatourisme stocke les données au format RDF (vraisemblablement en utilisant le Blazegraph Triplestore)
  • Datatourisme fournit un accès via GraphQL (pas SPARQL)

Pourquoi RDF

  • En partie à cause de "sans schéma", RDF convient aux tâches d'intégration de données hétérogènes: 

    Ontologie nationale du tourisme structurant dans un format de partage commun de l’ensemble des données touristiques extraites de différentes bases de données officielles françaises: animations et événements, sites naturels et culturels, activités de loisirs et sportives, produits touristiques, circuits, hébergement, boutiques, restaurants.

  • RDF est sémantique: en particulier, RDF est auto-descriptif. 

SPARQL

  • SPARQL est un langage normalisé par le W3C pour l'interrogation RDF. D'autres langages de requête RDF ont également été proposés.

    En passant, il est possible d’interroger des sources non-RDF avec SPARQL, e. g. définir des mappages R2RML.

  • La descendance automatique de RDF et la standardisation de SPARQL suppriment le besoin de créer ou d'apprendre une nouvelle API (merdique) chaque jour.

GraphQL

  • Semblable à SPARQL, GraphQL permet d’éviter les requêtes multiples.
  • GraphQL permet d’envelopper différentes sources de données de différents types, mais il s’agit généralement d’API REST. 

    Comme vous pouvez le constater, il est possible d'envelopper un point de terminaison SPARQL (il existe également HyperGraphQL ). 

Pourquoi GraphQL

Pourquoi Datatourisme a-t-il préféré GraphQL?

  • GraphQL est plus proche des développeurs et des technologies qu’ils utilisent en masse. Dans le passé, JSON-LD avait la même motivation (toutefois, voir ma note à propos de JSON-LD ici ).

  • Il semble que la couche GraphQL de Diffuseur prenne en charge les clés API et évite les requêtes SPARQL trop complexes.

Les données sont-elles encore sémantiques

  • La réponse dépend de ce que vous entendez par sémantique. Il y avait une opinion que même le modèle relationnel est assez sémantique ...

  • Je répondrais par l'affirmative, s'il est possible d'extraire e. g. le commentaire à la propriété :rcs avec GraphQL (et la réponse semble être négative).

Conclusion

Répondre à votre question directe:

  • il n'est pas nécessaire (bien que possible) de créer une ontologie sémantique avant d'utiliser GraphQL;
  • il n'est pas nécessaire (bien que possible) d'utiliser GraphQL après avoir créé une ontologie sémantique.

Répondre à votre question indirecte:

  • vous avez probablement besoin d'une ontologie sémantique pour construire tel chatbot;
  • vous avez probablement besoin d'autre chose en plus.

Voir aussi: Comment la connaissance est-elle représentée dans Siri - s'agit-il d'une ontologie ou de quelque chose d'autre? } _

Mettre à jour

Outre HyperGraphQL, il existe d’autres projets de convergence intéressants:

13
Stanislav Kralin

J'ai travaillé sur le Web sémantique pendant plusieurs années. Graphql et Sparql sont des langues différentes pour des objectifs différents. SPARQL est un langage à utiliser avec Triple stores, les jeux de données graphiques et les nœuds RDF. Graphql est un langage API, utilisé de préférence avec les structures JSON. En ce qui concerne votre cas spécifique, je vous recommanderais de préciser votre objectif d'utilisation de l'IA dans votre application. Si vous souhaitez appliquer un jeu de données graphique dans votre application, effectuez une découverte des connaissances plus avancée, telle que le raisonnement sur un jeu de données. Vous aurez peut-être besoin d'une approche Web sémantique pour appliquer SPARQL au-dessus de votre jeu de données. Comme vous pouvez le voir sur l'image ci-dessous, le Web sémantique présente différentes couches permettant de découvrir des connaissances, de raisonner, de concevoir des ontologies et de créer des ensembles de données RDF.

enter image description here

voir ici pour en savoir plus. Si votre application AI n’a pas de telles exigences et que vous pouvez effectuer votre analyse de données à l’aide d’une base de données JSON, Graphql est probablement un bon choix pour créer votre API, car elle est largement utilisée par différentes applications Web et mobiles de nos jours. . En particulier, il est utilisé pour partager vos données via différentes plates-formes et microservices. Voir ici pour plus d'informations. enter image description here

J'espère que ça aide! 

3
Enayat Rajabi

Rapidement, les différences sont les suivantes: 

  • SPARQL (protocole SPARQL et langage de requête RDF) est un langage dédié à la requête de bases de données de graphes RDF (CRUD et autres). C'est une norme dans les outils du Web sémantique et fournie par la recommandation du W3C.

  • GraphQL est un langage créé par Facebook et ressemblant fortement à JSON pour communiquer avec les API. C'est un outil de communication entre les clients et les points finaux du serveur. La demande définit elle-même la structure de la réponse. Son utilisation n'est pas limitée à SQL, NoSQL ou ... "Graph" ne signifie pas "une structure composée de triplés" comme pour le RDF.

Ce sont deux langues différentes pour des applications différentes.

2
Gilles-Antoine Nys

Une différence très importante, que je n'ai pas vue mentionnée dans les réponses précédentes, est que, bien que SPARQL soit un langage de requête plus puissant en général, il ne produit que des résultats sous forme de tableau, tandis que GraphQL fournit des arborescences, ce qui est important dans certains cas d'implémentation.

2
Ivo Velitchkov