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