What is the difference between GraphQL and SPARQL?

Context

Datatourisme is a platform that allows to publish (via the Producteur component) and to consume (via the Diffuseur component) POI-related open data.

It seems you have linked to a particular application developed over Diffuseur with a help of GraphQL Voyager. The application illustrates capabilities of the GraphQL API exposed by Diffuseur.

The API documentation is available here (in French):

  • datatourisme.frama.io/api
  • framagit.org/datatourisme/api

Problem

  • Datatourisme stores data in the RDF format (presumably using the Blazegraph
    triplestore)
  • Datatourisme provides access via GraphQL (not SPARQL)

Why RDF

  • Partly due to some “schemaless”, RDF is convenient in heterogeneous data integration tasks:

    Tourism national ontology structuring in a common sharing format the whole tourism data extracted from different official French data bases: entertainment and events, natural and cultural sites, leisure and sports activities, touristic products, tours, accomodations, shops, restaurants.

  • RDF is semantic: in particular, RDF is self-describing.

SPARQL

  • SPARQL is W3C-standardized language for RDF querying. There were also proposed other RDF query languages.

    BTW, it is possible to query non-RDF sources with SPARQL, e. g. defining R2RML mappings.

  • RDF self-descibeness and SPARQL standardness remove the need to create or to learn a new (shitty) API every day.

GraphQL

  • Similar to SPARQL, GraphQL allows to avoid multiple requests.

  • GraphQL allows to wrap different data sources of different kinds, but typically they are REST APIs.

    As you can see, it is possible to wrap a SPARQL endpoint (there also exists HyperGraphQL).

Why GraphQL

Why Datatourisme have preferred GraphQL?

  • GraphQL is closer to developers and technologies they use en masse. In the past, JSON-LD had the same motivation (however, see my note about JSON-LD here).

  • As it seems, Diffuseur’s GraphQL layer provides API keys support and prevents too complex SPARQL queries.

Are data still semantic

  • The answer depends on what you mean by semantic. There was an opinion that even relational model is quite semantical…

  • I’d answer affirmatively, if it’s possible to extract e. g. the comment to the :rcs property with GraphQL (and the answer seems to be negative).

Conclusion

Answering your direct question:

  • it is not necessary (though possible) to create a semantic ontology first in order to use GraphQL;
  • it is not necessary (though possible) to use GraphQL after creating a semantic ontology.

Answering your indirect question:

  • probably you need a semantic ontology in order to build such chatbot;
  • probably you need something else in addition.

See also: How is the knowledge represented in Siri – is it an ontology or something else?

Update

In addition to HyperGraphQL, there are other interesting convergence projects:

  • in Stardog
  • in Topbraid
  • in Ontotext Platform

Leave a Comment

techhipbettruvabetnorabahisbahis forumu