SPARQL. SPARQL Langage d interrogation du web sémantique. Exemple. Requête usuelle. Anne-Cécile Caron 2014-2015 PREFIX... PREFIX... SELECT... WHERE...



Documents pareils
Web Sémantique. Examen

Linked Open Data. Le Web de données Réseau, usages, perspectives. Eric Charton. Eric Charton

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Évaluation d une architecture de stockage RDF distribuée

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

Exemples de reque tes dans data.bnf.fr

Supervision des contributions dans un portail de travail collaboratif

JDev Atelier Datalift

Vues d ensembles de documents RDF

Langage SQL : créer et interroger une base

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

MEMOIRE DE STAGE. Amélioration de l'outillage support à une méthodologie de "Cartographie Sémantique"

Knowledge Enabled Real-Time Recommendation System

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Le langage SQL Rappels

Plan... as Architecture des Systèmes d Information. Constats. as Architecture des Systèmes d Information

Web sémantique et pratiques documentaires

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Raja Bases de données distribuées A Lire - Tutoriel

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

TP Bases de données réparties

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Catalogue des formations Edition 2015

TP 1. Prise en main du langage Python

SQL Parser XML Xquery : Approche de détection des injections SQL

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Compte-rendu re union Campus AAR 3 mars 2015

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Introduction au Système de Gestion de Base de Données et aux Base de Données

SQL Server et Active Directory

Le Langage SQL version Oracle

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

STAGE IREM 0- Premiers pas en Python

Problématiques de recherche. Figure Research Agenda for service-oriented computing

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Programmation Web. Madalina Croitoru IUT Montpellier

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Bases de données et sites WEB

Bigdata et Web sémantique. les données + l intelligence= la solution

Django et PostgreSQL sous la charge

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Resolution limit in community detection

Approche de couplage de BD et d ontologie pour l aide à la décision sémantique : contribution pour la satisfaction des requêtes SQL et SPARQL.

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

OCL - Object Constraint Language

1. Base de données SQLite

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Big Data et Graphes : Quelques pistes de recherche

Bases de données élémentaires Maude Manouvrier

1 Introduction et installation

Information utiles. webpage : Google+ : digiusto/

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Java DataBaseConnectivity

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Cours SQL. Base du langage SQL et des bases de données

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Introduction à MATLAB R

Gestion des utilisateurs et de leurs droits

Patrons de Conception (Design Patterns)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Générer du code à partir d une description de haut niveau

AWS avancé. Surveiller votre utilisation d EC2

Paginer les données côté serveur, mettre en cache côté client

Guide de recherche documentaire à l usage des doctorants. Partie 1 : Exploiter les bases de données académiques

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Partie II Cours 3 (suite) : Sécurité de bases de données

CATALOGUE FORMATIONS DOMAINE Bases de données

Sécurité des applications web. Daniel Boteanu

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Bases de données et sites WEB Licence d informatique LI345

PHP. PHP et bases de données

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

16H Cours / 18H TD / 20H TP

PHP 5. La base de données MySql. A. Belaïd 1

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

Mysql avec EasyPhp. 1 er mars 2006

2 Serveurs OLAP et introduction au Data Mining

Raisonnement probabiliste

Bases de Données relationnelles et leurs systèmes de Gestion

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Datawarehouse and OLAP

SQL Historique

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

LE RESEAU GLOBAL INTERNET

BIG DATA («BD») and DBMS platform

Le Langage De Description De Données(LDD)

Présentation générale du projet data.bnf.fr

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

RDF Schema pour les ontologies légères

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Transcription:

ntroduction 1/29 2/29 SPARQL Langage d interrogation du web sémantique Anne-Cécile Caron Master MAGE spécialité P-NT 2014-2015 SPARQL Langage de requêtes du W3C pour RDF/RDFS SPARQL 1.0 - recommendation 15-01-2008, Cours d aujourd hui. SPARQL 1.1 - recommendation 21-03-2013 Utilise du pattern matching sur la donnée graphe : la requête est un graphe avec variables on recherche les valuations des variables qui soient des sous-graphes de la donnée. Plusieurs types de solutions, car plusieurs formes de requêtes Select : renvoie des tuples où chaque composante d un tuple correspond à la valuation d une variable de la requête par un terme RDF. Construct, Describe : renvoie un graphe RDF utilisant les valuations des variables présentes dans la requête Ask : renvoie un booléen en fonction de la satisfiabilité de la requête. ntroduction ntroduction 3/29 4/29 usuelle PREFX... PREFX... SELECT... WHERE... Exemple Graphe Les préfixes permettent de définir des espaces de noms La clause SELECT permet de choisir les variables du résultat, parmi les variables de la La contient des triplets qui définissent le motif (pattern) recherché. foaf:name $x foaf:mbox $name $mbox

ntroduction 5/29 6/29 Exemple (suite)?mbox WHERE {?x foaf:name?name.?x foaf:mbox?mbox name Johnny Lee Outlaw Peter Goodguy mbox <mailto:jlow@example.com> <mailto:peter@example.org> Motifs de triplets Comme en RDF, on utilise des triplets pour définir un graphe. On parle de motif de triplet car le triplet peut contenir des variables. Les termes utilisés dans les motifs de triplets sont des Rs (nternationalized Resource dentifiers), généralisation des URs des littéraux des variables, préfixées par? ou par $ des noeuds blancs La syntaxe utilisée pour les requêtes est basée sur la sérialisation turtle. 7/29 8/29 R et espaces de noms Comme en XML, on peut définir un préfixe associé à un espace de noms, et un espace de noms base de la requête. Les requêtes suivantes sont équivalentes : PREFX dc: <http://purl.org/dc/elements/1.1/> SELECT?title WHERE { <http://example.org/book/book1> dc:title?title Littéraux En général, chaîne de caractères entre simples quotes ou guillemets. Pour simplifier, 1 est synonyme de "1"^^xsd:integer 1.3 est synonyme de "1.3"^^xsd:decimal true est synonyme de "true"^^xsd:boolean PREFX PREFX dc: <http://purl.org/dc/elements/1.1/> : <http://example.org/book/> SELECT $title WHERE { :book1 dc:title $title BASE PREFX <http://example.org/book/> dc: <http://purl.org/dc/elements/1.1/> SELECT $title WHERE { <book1> dc:title?title

9/29 10 / 29 Noeuds blancs ls jouent le rôle de variables non distinguées, ils n ont rien à voir avec les noeuds blancs du document. On les utilise sous deux formes : désigné par un label (ex : _:b57) ou forme abrégée [ ] dans les motifs de triplets : [ :p "v" ]. ou [] :p "v". permettent d allouer un noeud blanc (par exemple de label b57) et sont équivalents à _:b57 :p "v". Factorisation Turtle des motifs de triplets Triplets de même sujet?x foaf:name?name ; foaf:mbox?mbox. :?x foaf:name?name. Triplets de même sujet et même prédicat?x foaf:nick "Alice", "Alice_". [ :p "v" ] :q "w". _:b57 :p "v". _:b57 :q "w". :x :q [ :p "v" ]. :x :q _:b57. _:b57 :p "v".?x foaf:nick "Alice".?x foaf:nick "Alice_". Combinaison?x foaf:name?name ; foaf:nick "Alice", "Alice_".?x foaf:name?name.?x foaf:nick "Alice".?x foaf:nick "Alice_". 11 / 29 12 / 29 Collections RDF Dans les motifs de triplets, on peut utiliser la notation (element1 element2...) pour représenter une collection. Par exemple : RDF:type Le mot a permet de préciser qu une ressource est d un certain type. C est une abréviation de http://www.w3.org/1999/02/22-rdf-syntax-ns#type. (1?x 3 4) :p "w". : _:b0 rdf:first 1 ; rdf:rest _:b1. _:b1 rdf:first?x ; rdf:rest _:b2. _:b2 rdf:first 3 ; rdf:rest _:b3. _:b3 rdf:first 4 ; rdf:rest rdf:nil. _:b0 :p "w".?x a :Class1.?x rdf:type :Class1. [ a :appclass ] :p "v". _:b0 rdf:type :appclass. _:b0 :p "v".

13 / 29 14 / 29 clause Where et graph patterns La clause where est formée d un groupe de motifs de graphe : GroupGraphPattern ::= { TriplesBlock? ( ( GraphPatternNotTriples Filter ).? TriplesBlock? )* TriplesBlock ::= TriplesSameSubject (. TriplesBlock? )? GraphPatternNotTriples ::= OptionalGraphPattern GroupOrUnionGraphPattern GraphGraphPattern OptionalGraphPattern ::= OPTONAL GroupGraphPattern GraphGraphPattern ::= GRAPH VarOrRref GroupGraphPattern GroupOrUnionGraphPattern ::= GroupGraphPattern ( UNON GroupGraphPattern )* Filter ::= FLTER Constraint Groupe de motifs de graphe Un groupe peut être 1. un motif de graphe basique : = ensemble de motifs de triplets entre { 2. ou un groupe de groupes de motifs entre {?mbox 1motifbasique,composéde WHERE { deux motifs triplets?x foaf:name?name. décomposition du groupe en 2?mbox sous-groupes motifs basiques WHERE { {?x foaf:name?name. { contenant chacun 1 motif triplet Ces deux exemples sont équivalents. 15 / 29 16 / 29 Filtres On peut ajouter des conditions à la requête, sous la forme de filtres. Un filtre s applique à un motif de graphe. Les titres qui commencent par SPARQL PREFX dc: <http://purl.org/dc/elements/1.1/> SELECT?title WHERE {?x dc:title?title FLTER regex(?title, "^SPARQL") Les titres et prix des livres qui coûtent moins de 30.5. PREFX dc: <http://purl.org/dc/elements/1.1/> PREFX ns: <http://example.org/ns#> SELECT?title?price WHERE {?x ns:price?price. FLTER (?price < 30.5)?x dc:title?title. Filtres et groupes de motifs Le filtre permet de restreindre les solutions du groupe où le filtre apparaît. La position du filtre dans le groupe n a donc pas d importance. Les trois motifs suivants sont donc équivalents. {?x foaf:name?name. FLTER regex(?name, "Smith") { FLTER regex(?name, "Smith")?x foaf:name?name. {?x foaf:name?name. FLTER regex(?name, "Smith")

17 / 29 18 / 29 Valeurs optionnelles Un motif de graphe basique permet de rechercher les solutions qui correspondent entièrement à ce motif. On peut définir des parties optionnelles dans le motif : clause OPTONAL Lorsque la solution sélectionne des variables présentes dans une partie optionnelle, alors elles n auront pas nécessairement de valuation. Exemple @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. _:a rdf:type foaf:person. _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@example.com>. _:a foaf:mbox <mailto:alice@work.example>. _:b rdf:type foaf:person. _:b foaf:name "Bob".?mbox WHERE {?x foaf:name?name. OPTONAL {?x foaf:mbox?mbox name mbox Alice <mailto:alice@example.com> Alice <mailto:alice@work.example> Bob 19 / 29 20 / 29 Exemple avec filtre @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix : <http://example.org/book/>. @prefix ns: <http://example.org/ns#>. :book1 dc:title "SPARQL Tutorial". :book1 ns:price 42. :book2 dc:title "The Semantic Web". :book2 ns:price 23. PREFX dc: <http://purl.org/dc/elements/1.1/> PREFX ns: <http://example.org/ns#> SELECT?title?price WHERE {?x dc:title?title. OPTONAL {?x ns:price?price. FLTER (?price < 30) title price SPARQL Tutorial The Semantic Web 23 Non existence d un motif En SPARQL 1.0, la non existence d un motif de graphe est réalisée 1. en définissant ce motif comme optionnel 2. en vérifiant qu il n a pas été trouvé, grâce à la fonction bound _:a foaf:givenname "Alice". _:b foaf:givenname "Bob". _:b dc:date "2005-04-04T04:04:04Z"^^xsd:dateTime. PREFX dc: <http://purl.org/dc/elements/1.1/> WHERE {?x foaf:givenname?name. OPTONAL {?x dc:date?date. FLTER (!bound(?date)) name Alice

21 / 29 22 / 29 Exemple avec plusieurs motifs optionnels @prefix foaf: <http://xmlns.com/foaf/0.1/>. _:a foaf:name "Alice". _:a foaf:homepage <http://work.example.org/alice/>. _:b foaf:name "Bob". _:b foaf:mbox <mailto:bob@work.example>. _:c foaf:name "Charly". _:c foaf:mbox <mailto:charly@work.example>. _:c foaf:homepage <http://work.example.org/charly/>.?mbox?hpage WHERE {?x foaf:name?name. OPTONAL {?x foaf:mbox?mbox. OPTONAL {?x foaf:homepage?hpage name mbox hpage Alice <http://work.example.org/alice/> Bob <mailto:bob@work.example> Charly <mailto:charly@work.example> <http://work.example.org/charly/> Exemple-suite La requête précédente n est pas équivalente à :?mbox?hpage WHERE {?x foaf:name?name. OPTONAL {?x foaf:homepage?hpage name mbox hpage Alice Bob Charly <mailto:charly@work.example> <http://work.example.org/charly/> 23 / 29 24 / 29 Union Permet de satisfaire un motif OU un autre. On peut di érencier les résultats des deux réponses, en utilisant des variables di érentes dans les motifs. L opérateur d union n enlève pas les doublons?mbox?hpage WHERE { {?x foaf:name?name.?x foaf:mbox?mbox UNON {?x foaf:name?name.?x foaf:homepage?hpage name mbox hpage Bob <mailto:bob@work.example> Charly <mailto:charly@work.example> Alice <http://work.example.org/alice/> Charly <http://work.example.org/charly/> Modifier la séquence des solutions les motifs génèrent une collection non-ordonnée de solutions, chaque solution étant une valuation des variables présentes dans les motifs. Ces solutions sont ensuite traitées comme une séquence, sur laquelle on peut appliquer un opérateur (sequence modifier). l existe 6 opérateurs permettant de modifier la séquence des solutions : 1. order by :trierlessolutions => il faut qu une relation d ordre existe pour ces solutions. 2. projection pour choisir les variables => comme en SQL, liste des variables après le SELECT, et pour toutes les variables. 3. distinct :éliminerlesdoublonsparmilessolutions SELECT DSTNCT?name WHERE {?x foaf:name?name 4. reduced :autoriserl éliminationdesdoublonsparlemoteurde requête (pas d obligation) 5. offset :indiqueràpartirdequellepositiondanslaséquenceon démarre 6. limit :bornerlatailledelaséquencedessolutions

25 / 29 26 / 29 ORDER BY - exemples WHERE {?x foaf:name?name ORDER BY?name PREFX : <http://example.org/ns#> PREFX xsd: <http://www.w3.org/2001/xmlschema#> WHERE {?x foaf:name?name ; :empd?emp ORDER BY DESC(?emp) WHERE {?x foaf:name?name ; :empd?emp ORDER BY ASC(?name) DESC(?emp) OFFSET et LMT OFFSET n signifie qu on passe les n premières solutions. Un o set de 0 n a pas d e et. LMT n signifie qu on donne au maximum n solutions. PREFX foaf: <http://xmlns.com/foaf/0.1/> WHERE {?x foaf:name?name ORDER BY?name LMT 5 OFFSET 10 Cette requête donne au maximum 5 solutions, à partir de la 11ème dans la séquence des solutions. 27 / 29 28 / 29 Plusieurs formes de requêtes Les exemples jusqu à présent : 1. prologue : définition optionnelle d une base, puis définitions de préfixes. 2. puis la partie requête proprement dite avec un SELECT. Le mot clé SELECT signifie que les solutions construites sont des valuations des variables par des termes RDF l existe d autres formes de requêtes : ASK : retourne un booléen indiquant l existence d une solution qui satisfait le motif CONSTRUCT : pour construire un graphe RDF solution, à partir des valuations des variables DESCRBE : retourne un graphe RDF décrivant les ressources trouvées. Le résultat dépend du service qui publie la donnée. On ne verra pas cette clause aujourd hui ASK ASK {?x foaf:name?name ; foaf:mbox?mbox true ASK {?x foaf:name "Alice" ; foaf:mbox <mailto:alice@work.example> false

CONSTRUCT @prefix foaf: <http://xmlns.com/foaf/0.1/>. _:a foaf:givenname "Alice". _:a foaf:family_name "Hacker". _:b foaf:firstname "Bob". _:b foaf:surname "Hacker". PREFX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT {?x vcard:n _:v. _:v vcard:givenname?gname. _:v vcard:familyname?fname WHERE { {?x foaf:firstname?gname UNON {?x foaf:givenname?gname. {?x foaf:surname?fname UNON {?x foaf:family_name?fname. 29 / 29