L’élaboration manuelle de nouvelles requêtes SQL à l’adresse de bases de données relationnelles ayant des schémas complexes est un processus lent et coûteux qui se révèle être critique pour de nombreuses industries. Ce processus nécessite de combiner deux types d’expertise : celle du domaine concerné (exprimer une question pertinente de façon précise) et celle de la base de données (localiser les informations recherchées dans la base de données). L’approche OBDA (Ontology-Based Data Access) vise à automatiser une partie de ce processus en (i) permettant aux utilisateurs d’exprimer les requêtes à partir d’un modèle conceptuel de leur domaine indépendant du schéma relationnel et (ii) en traduisant automatiquement ces requêtes dans le langage supporté par la base de données (SQL). Dans cette présentation, nous nous intéresserons au système OBDA développé à l’Université Libre de Bozen-Bolzano (Italie) dénommé Ontop. Ce projet, débuté en 2010, repose sur plusieurs standards du Web sémantique : (i) OWL 2 QL pour la modélisation des concepts du domaine, (ii) SPARQL pour la formulation des requêtes utilisateurs et (iii) R2RML pour l’exposition du contenu de la base de données sous forme de graphe RDF virtuel. Ce logiciel est disponible sous licence libre. Le principal enjeu pour un système OBDA est de générer des requêtes SQL optimisées pouvant être exécutées efficacement par le moteur de base de données. Ontop propose de nombreuses optimisations sémantiques et structurelles lui permettant d’obtenir une performance suffisamment élevée pour permettre l’exécution de requêtes complexes sur des bases de données de grande taille en un temps acceptable. Ce système intègre également des capacités d’inférence à faible coût ne nécessitant aucune matérialisation des données. Nous présenterons ensuite son intégration dans la plateforme développée dans le cadre du projet européen Optique et sur son utilisation par les géologues d’un de nos partenaires industriels, Statoil. À cette occasion, nous reviendrons sur les principaux défis introduits par ce cas d’usage industriel. L’équipe participant au développement d’Ontop au sein de l’Université Libre de Bozen-Bolzano est actuellement composée de Martin Rezk, Guohui Xiao, Sarah Komla Ebri, Elem Güzel, David Lanti, Elena Botoeva et Benjamin Cogrel. Elle est coordonnée par Diego Calvanese.
Par Benjamin Cogrel
Datalift, une plateforme Linked Data, Retour d'expériences
Interroger efficacement des bases de données relationnelles avec sparql et ontop
1. Interroger efficacement
des bases de donn´ees relationnelles
avec SPARQL et Ontop
Benjamin Cogrel
KRDB Research Centre for Knowledge and Data
Universit´e Libre de Bozen-Bolzano, Italie
Free University of Bozen-Bolzano
SemWeb.Pro 2015, Paris
2. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
´Etapes
1 Pourquoi utiliser SPARQL
2 Comment reformuler une requˆete SPARQL vers SQL
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (1/14)
3. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Analyse de donn´ees pour l’exploration p´etroli`ere
Construction de mod`eles stratigraphiques
Strat´egique
Env. 900 g´eologues et g´eophysiciens
Source principale : Exploitation and Production Data Store (EPDS)
Donn´ees d’exploration et de production
Env. 1500 tables
Env. 1600 vues mat´erialis´ees
Centaines de gigaoctets
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (2/14)
4. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Utilisation simple : requˆetes pr´ed´efinies
G´eologue Application
Requˆetes SQL pr´ed´efinies
R´esultats
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (3/14)
5. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Nouvelle requˆete : besoins utilisateurs (simplifi´es)
Tous les puits norv´egiens de tel type
`a proximit´e de tel lieu ayant une
perm´eabilit´e proche de telle valeur.
Attributs : date de mise en service, pro-
fondeur, etc.
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (4/14)
6. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
D´efinition d’une nouvelle requˆete SQL
G´eologue Application
Expert SI
Traduction
Besoin d’information Requˆete
SQL
R´esultats
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (5/14)
7. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
D´efinition d’une nouvelle requˆete SQL
G´eologue Application
Expert SI
Traduction
Besoin d’information Requˆete
SQL
R´esultats
Prend 4 jours en moyenne !
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (5/14)
8. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Requˆete SQL typique (extrait anonymis´e)
SELECT [...]
FROM
db_name.table1 table1,
db_name.table2 table2a,
db_name.table2 table2b,
db_name.table3 table3a,
db_name.table3 table3b,
db_name.table3 table3c,
db_name.table3 table3d,
db_name.table4 table4a,
db_name.table4 table4b,
db_name.table4 table4c,
db_name.table4 table4d,
db_name.table4 table4e,
db_name.table4 table4f,
db_name.table5 table5a,
db_name.table5 table5b,
db_name.table6 table6a,
db_name.table6 table6b,
db_name.table7 table7a,
db_name.table7 table7b,
db_name.table8 table8,
db_name.table9 table9,
db_name.table10 table10a,
db_name.table10 table10b,
db_name.table10 table10c,
db_name.table11 table11,
db_name.table12 table12,
db_name.table13 table13,
db_name.table14 table14,
db_name.table15 table15,
db_name.table16 table16
WHERE [...]
table2a.attr1=‘keyword’ AND
table3a.attr2=table10c.attr1 AND
table3a.attr6=table6a.attr3 AND
table3a.attr9=‘keyword’ AND
table4a.attr10 IN (‘keyword’) AND
table4a.attr1 IN (‘keyword’) AND
table5a.kinds=table4a.attr13 AND
table5b.kinds=table4c.attr74 AND
table5b.name=‘keyword’ AND
(table6a.attr19=table10c.attr17 OR
(table6a.attr2 IS NULL AND
table10c.attr4 IS NULL)) AND
table6a.attr14=table5b.attr14 AND
table6a.attr2=‘keyword’ AND
(table6b.attr14=table10c.attr8 OR
(table6b.attr4 IS NULL AND
table10c.attr7 IS NULL)) AND
table6b.attr19=table5a.attr55 AND
table6b.attr2=‘keyword’ AND
table7a.attr19=table2b.attr19 AND
table7a.attr17=table15.attr19 AND
table4b.attr11=‘keyword’ AND
table8.attr19=table7a.attr80 AND
table8.attr19=table13.attr20 AND
table8.attr4=‘keyword’ AND
table9.attr10=table16.attr11 AND
table3b.attr19=table10c.attr18 AND
table3b.attr22=table12.attr63 AND
table3b.attr66=‘keyword’ AND
table10a.attr54=table7a.attr8 AND
table10a.attr70=table10c.attr10 AND
table10a.attr16=table4d.attr11 AND
table4c.attr99=‘keyword’ AND
table4c.attr1=‘keyword’ AND
table11.attr10=table5a.attr10 AND
table11.attr40=‘keyword’ AND
table11.attr50=‘keyword’ AND
table2b.attr1=table1.attr8 AND
table2b.attr9 IN (‘keyword’) AND
table2b.attr2 LIKE ‘keyword’% AND
table12.attr9 IN (‘keyword’) AND
table7b.attr1=table2a.attr10 AND
table3c.attr13=table10c.attr1 AND
table3c.attr10=table6b.attr20 AND
table3c.attr13=‘keyword’ AND
table10b.attr16=table10a.attr7 AND
table10b.attr11=table7b.attr8 AND
table10b.attr13=table4b.attr89 AND
table13.attr1=table2b.attr10 AND
table13.attr20=’‘keyword’’ AND
table13.attr15=‘keyword’ AND
table3d.attr49=table12.attr18 AND
table3d.attr18=table10c.attr11 AND
table3d.attr14=‘keyword’ AND
table4d.attr17 IN (‘keyword’) AND
table4d.attr19 IN (‘keyword’) AND
table16.attr28=table11.attr56 AND
table16.attr16=table10b.attr78 AND
table16.attr5=table14.attr56 AND
table4e.attr34 IN (‘keyword’) AND
table4e.attr48 IN (‘keyword’) AND
table4f.attr89=table5b.attr7 AND
table4f.attr45 IN (‘keyword’) AND
table4f.attr1=‘keyword’ AND
table10c.attr2=table4e.attr19 AND
(table10c.attr78=table12.attr56 OR
(table10c.attr55 IS NULL AND
table12.attr17 IS NULL))
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (6/14)
9. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Automatisation avec la plateforme Optique
Ontology-Based Data Access (OBDA)
G´eologue Application Ontop
1. Requˆete SPARQL
(haut-niveau)
4. R´esultats SPARQL
2. Requˆete SQL
(bas-niveau)
3. R´esultats SQL
Onto-
logie
Map-
pings
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (7/14)
10. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Requˆete SPARQL de haut-niveau
Niveau conceptuel
Ind´ependant du stockage
Terminologie du domaine
formalis´ee (ontologie)
Requˆetes concises
SELECT DISTINCT ?wellbore ?wc
?well ?length
WHERE {
?wellbore npdv:wellboreForDiscovery
?discovery;
npdv:belongsToWell ?well.
?wc npdv:coreForWellbore ?wellbore;
npdv:coresTotalLength ?length.
FILTER (?length < 56796)
}
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (8/14)
11. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
SPARQL et les bases de donn´ees relationnelles
Transformation d’une BD relationnelle
en un graphe RDF
Pour ˆetre requˆet´ee avec SPARQL
Mappings SQL-RDF (R2RML)
Contraintes de l’ontologie (opt.)
Virtuelle ou mat´erielle
RDFR2RML
Graphe RDF mat´erialis´e
Mat´erialisation du graphe RDF
satur´e
− Maintenance
+ Profils d’ontologie expressifs
(comme OWL 2 RL)
Graphe RDF virtuel
Reformulation de requˆete
+ Aucune mat´erialisation
− Profil d’ontologie moins
expressif (OWL 2 QL) *
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (9/14)
12. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
SPARQL et les bases de donn´ees relationnelles
Transformation d’une BD relationnelle
en un graphe RDF
Pour ˆetre requˆet´ee avec SPARQL
Mappings SQL-RDF (R2RML)
Contraintes de l’ontologie (opt.)
Virtuelle ou mat´erielle
RDFR2RML
Graphe
saturé
Graphe RDF mat´erialis´e
Mat´erialisation du graphe RDF
satur´e
− Maintenance
+ Profils d’ontologie expressifs
(comme OWL 2 RL)
Graphe RDF virtuel
Reformulation de requˆete
+ Aucune mat´erialisation
− Profil d’ontologie moins
expressif (OWL 2 QL) *
(*) Inclut toutefois un m´ecanisme d’inf´erence absent du profil OWL 2 RL
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (9/14)
13. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
SPARQL et les bases de donn´ees relationnelles
Transformation d’une BD relationnelle
en un graphe RDF
Pour ˆetre requˆet´ee avec SPARQL
Mappings SQL-RDF (R2RML)
Contraintes de l’ontologie (opt.)
Virtuelle ou mat´erielle
RDFR2RML
Graphe
saturé
Graphe RDF mat´erialis´e
Mat´erialisation du graphe RDF
satur´e
− Maintenance
+ Profils d’ontologie expressifs
(comme OWL 2 RL)
Graphe RDF virtuel
Reformulation de requˆete
+ Aucune mat´erialisation
− Profil d’ontologie moins
expressif (OWL 2 QL) *
(*) Inclut toutefois un m´ecanisme d’inf´erence absent du profil OWL 2 RL
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (9/14)
14. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Mapping SQL-RDF
Format natif d’Ontop
Source (SQL)
SELECT wellbore_s, year, month, day
FROM wellbore
WHERE wellbore.r_existence_kd_nm = ’actual’
Cible (RDF, Turtle-like)
:Wellbore-{wellbore_s} :completionDate
"{year}-{month}-{day}"^^xsd:date
Format ´equivalent au standard R2RML (support´e, utilis´e dans Optique)
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (10/14)
15. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Reformulation de requˆete
R´e´ecriture
(optionnelle)
Reformulation
`a partir des
mappings
Optimisation
SPARQL SPARQL SQL SQL
Rˆole de l’ontologie OWL 2 QL
Marginal : r´e´ecriture de la requˆete SPARQL (cas tr`es particuliers)
Principal : saturation des mappings (hors-ligne)
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (11/14)
16. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Reformulation de requˆete
R´e´ecriture
(optionnelle)
Reformulation
`a partir des
mappings
satur´es
Optimisation
SPARQL SPARQL SQL SQL
Rˆole de l’ontologie OWL 2 QL
Marginal : r´e´ecriture de la requˆete SPARQL (cas tr`es particuliers)
Principal : saturation des mappings (hors-ligne)
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (11/14)
17. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Optimisation de la requˆete SQL
Objectif : obtenir une requˆete SQL. . .
Proche de celles ´ecrites par des humains
Adapt´ee aux planificateurs existants
Optimisations structurelles
Jointures d’unions vers unions
de jointures
D´ecomposition des IRIs pour
faciliter les jointures
Optimisations s´emantiques
´Elimination des unions et des
jointures redondantes
`A partir de contraintes
fonctionnelles
Contraintes fonctionnelles
Cl´es primaires, uniques ou ´etrang`eres
Implicites dans les processus m´etiers (Statoil)
Vitales pour la reformulation de requˆete !
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (12/14)
18. Pourquoi utiliser SPARQL? Traitement de requˆetes SPARQL Conclusion
Conclusion
Ontop
Logiciel libre (Apache 2)
Interfaces Sesame et OWLAPI
Extension Prot´eg´e
Int´egration
Plateforme Optique (FluidOps)
Stardog 4.0 (graphes virtuels)
Quelques exp´erimentations
Agr´egation SPARQL
owl:sameAs via les mappings
Support partiel de SWRL
NoSQL
Liens
Github : ontop/ontop
ontop4obda@googlegroups.com
Twitter : @ontop4obda
http://optique-project.eu
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (13/14)
19. Annexe
Profil d’ontologie OWL 2 QL
Principales fonctionnalit´es
Hi´erarchies de classes
(rdfs:subclassOf) et de propri´et´es
(rdfs:subPropertyOf)
Signature de propri´et´es
(rdfs:domain, rdfs:range)
Propri´et´es inverses (owl:inverseOf)
Disjonction de classes
(owl:disjointWith)
Participation obligatoire (avanc´e)
Manques
Identit´e d’individus
(owl:sameAs)
Contraintes de
cardinalit´e (propri´et´e
fonctionnelle, etc.)
Et bien d’autres
En r´esum´e
Ontologies l´eg`eres
Un peu plus que RDFS
Traductibilit´e garantie vers SQL
Benjamin Cogrel (Universit´e Libre de Bolzano) Interroger des BDR avec SPARQL et Ontop 05/11/2015 (14/14)