Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language

Slides:



Advertisements
Présentations similaires
Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Advertisements

Revue de presse Master 2 RET
Formation aux technologies du Web sémantique CCSD, Lyon, 8-10 septembre 2010.
SPARQL Comment illuminer vos mashups en consommant les données du Linked Data ? SemWeb.pro, Paris, 18 janvier 2011 Présentation et exemples :
1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Transformation de documents XML
Corese Moteur de recherche sémantique pour RDF
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
RDF Schema pour les ontologies légères
1 Semantic Web Olivier Corby. 2 Semantic Web Évolution du Web pour permettre le traitement automatique des informations (par programme) Documents structur.
Les espaces de nommage XML par Philippe Poulard 1
Cours Web sémantique Langage SPARQL
SQL - Subtilités.
Algèbre relationnelle
Cours 5 : Les Web Services et WSDL Mars Version 1.0 -
le langage les éléments
Domaines nominaux XSLT
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
TP 3-4 BD21.
Bases de données orientées-objets
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Manipulation d’XML avec XSL
Cours n°3 Les formulaires
20 Données semi-structurées et XML
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Développement d’applications web
Contrôles d'accès aux données
Eléments d ’algèbre relationnelle
Langages du Web Sémantique
LE LANGAGE SQL Langage de manipulation de données (LMD)
W3C SPARQL (Simple Protocol And RDF Query Language) BALI Ahmed Master informatique 2012/ Basé sur le cours de olivier.
Langages du Web Sémantique
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
2 Ils associent les rangées de 2 requêtes UNION [ALL] INTERSECT MINUS.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
Cours N°2 Base de Données & Langage SQL
Xpath XML Path language par Yves Bekkers
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Web sémantique : Web de demain
Initiation aux bases de données et à la programmation événementielle
1 Couplage dun langage de contrôle de formatage avec un système de formatage existant DEA ISC : 1 avril 2003 Fateh Boulmaiz
Support des connaissances TP2 XSL-T
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Initiation à XML Sebti Foufou.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Chapitre 5 : Le langage SQL
Présenté par : Ramdane Guenineche Nabila Rahmoune Miloud Benotmane
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Linq & les expressions lambda. L Language In Integrated Q Query.
Traduction des opérations sous MySQL
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Optimisation de requêtes
Sélection de colonnes (la projection)
XML fortement adopté en tant que format indépendant d’échange de données. Utilisation de XML pour la modélisation de données structurées et non structurées.
 Formulaires HTML : traiter les entrées utilisateur
XSD XML Schema Definition Année universitaire UP web.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
Projet DLM 3.0 État d’avancement Amin Mesmoudi. Architecture Digest Web service Meeting Web service web service Mail Client Query Web service Sparql.
Transcription de la présentation:

Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language Requêtes sur RDF Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language

Le gâteau du web sémantique… Tout est triplet W3C, T Berners-Lee, Ivan Herman Le gâteau du web sémantique…

Un langage de requête de triplets Trois morceaux: Langage de requête avec syntaxe triplets simplifiée W3C Candidate Recommendation of SPARQL Query Language for RDF 14 Jun 2007 Protocole d’accès comme un service Web (SOAP) SPARQL Protocol for RDF W3C Candidate Recommendation 6 Apr 2006 Langage de présentation des résultats SPARQL Query Results XML Format W3C Candidate Recommendations 25 Sep 2007 Langage de requête sur des données RDF Appariements de graphes / projection Principe courant en trois clauses imitant SQL: SELECT : clause sélectionnant les valeurs à retourner WHERE : un pattern de triplets à matcher FILTER : des contraintes exprimées avec des fonctions de tests internes (XPath 2.0) ou externes Un langage de requête de triplets

Un langage de requête de triplets Exemple de la syntaxe en triplets simplifiée avec des points d'interrogation pour marquer les variables: ?x rdf:type ex:Personne Langage de patterns à matcher: SELECT ?sujet ? propriete ?valeur where {?sujet ?propriete ?valeur} Le pattern est par défaut une conjonction de triplets { ?x rdf:type ex:Personne . ?x ex:nom ?nom } Deux formes possibles pour présentation résultats: le binding i.e. la liste des valeurs sélectionnées pour chaque réponse rencontrée; (format XML stable ; bien avec XSLT) les sous graphes des réponses rencontrées en RDF (format RDF/XML ; bien pour applications utilisant RDF) Un langage de requête de triplets

Requête en deux parties Exemple: noms des personnes ayant un email SELECT ?nom WHERE { ?x nom ?nom . ?x email ?email } Résultat: tous les patterns solutions sur lesquels le pattern query peut être projeté (une variable peut avoir plusieurs bindings) Exemple: _:a nom "Fabien" _:b nom "Thomas" _:c nom "Louis XIV" _:d nom "Aline" _:b email <mailto:thom@chaka.sn> _:a email <mailto:Fabien.Gandon@inria.fr> _:d email <mailto:avalandre@pacinco.com> _:a email <mailto:zinzin@free.fr> x2 Requête en deux parties

Requête simple et namespace Noms et prénoms des auteurs: SELECT ?nom ?prenom WHERE { ?x nom ?nom . ?x prenom ?prenom . ?x auteur ?y . } Pour utiliser des namespaces: PREFIX iut: <http://www.iut-nice.fr#> SELECT ?etudiant WHERE { ?etudiant iut:inscrit ?x . ?x iut:siteweb http://www.iut-nice.fr . } Namespace de base : BASE <> Requête simple et namespace

Le résultat de la requête précédente en XML <. xml version="1. 0" Le résultat de la requête précédente en XML <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="etudiant"/> </head> <results ordered="false" distinct="false"> <result> <binding name="etudiant"> <uri>http//www.ugb.sn/data.rdf#ndieng</uri></binding> </result> <result> <binding name="etudiant"> <uri>http//www.ugb.sn/data.rdf#ndouf</uri></binding> </result> </sparql> Exemple de binding

PREFIX ex: <http://www.exemple.abc#> SELECT ?femme ?pere ?mere Soit un schéma avec les relations "pere_de", "mere_de" et les types "Homme" et "Femme", demandez les femmes et leurs parents PREFIX ex: <http://www.exemple.abc#> SELECT ?femme ?pere ?mere WHERE { ?femme rdf:type ex:Femme . ?mere ex:mere_de ?femme . ?pere ex:pere_de ?femme . } Exercice

Une liste de valeurs ?x prenom "Fabien", "Lucien" . Les triplets ayant une racine commune peuvent être simplifiés ainsi que la relation de typage: SELECT ?nom ?prenom WHERE { ?x a Person; nom ?nom ; prenom ?prenom ; auteur ?y . } Une liste de valeurs ?x prenom "Fabien", "Lucien" . Resource anonyme dans pattern requête [prenom "Fabien"] ou [] prenom "Fabien" Question: ?x a Document; auteur [nom "Lo] . Réponse: les documents ?x écrits par un auteur ayant pour nom "Lo" SELECT ?nom ?prenom WHERE { ?x rdf:type Person . ?x nom ?nom . ?x prenom ?prenom . ?x auteur ?y . } Syntaxe abrégée

Source et Pattern optionnel Sélectionner les sources utilisables: PREFIX iut: <http://www.iutnice.fr#> SELECT ?etudiant FROM http//www.iutnice.fr/data.rdf WHERE { ?etudiant iut:inscrit ?x . ?x iut:siteweb http//www.iutnice.fr . } Parties optionnelles PREFIX iut: <http://www.iutnice.fr#> SELECT ?etudiant ?nom WHERE { ?etudiant iut:inscrit ?x . ?x iut:siteweb http//www.iutnice.fr . OPTIONAL {?etudiant iut:nom ?nom . } } Source et Pattern optionnel

PREFIX ex: <http://www.exemple.abc#> Soit un schéma avec les relations "marie_avec", "nom" et les types "Homme" et "Femme", demandez le nom des hommes et optionnellement le nom de leur femme PREFIX ex: <http://www.exemple.abc#> SELECT ?nom_homme ?nom_femme WHERE { ?homme rdf:type ex:Homme . ?homme ex:nom ?nom_homme . OPTIONAL { ?homme ex:marie_avec ?femme . ?femme ex:nom ?nom_femme . } } Exercice

Donner des patterns alternatifs: PREFIX iut: <http://www. iutnice Donner des patterns alternatifs: PREFIX iut: <http://www.iutnice.fr#> SELECT ?etudiant WHERE { ?etudiant iut:inscrit ?x . { { ?x iut:siteweb http//www.iutnice.fr . } UNION { ?x iut:siteweb http//www.fac.fr . } } } Union

PREFIX ex: <http://www.exemple.abc#> SELECT ?nom Soit un schéma avec les types "Homme", "Femme", et "Enfant" demandez le nom des femmes et des enfants PREFIX ex: <http://www.exemple.abc#> SELECT ?nom WHERE { ?femme_ou_enfant ex:nom ?nom . { { ?femme_ou_enfant rdf:type ex:Femme . } UNION { ?femme_ou_enfant rdf:type ex:Enfant . } } } Exercice

Trier, filtrer et limiter les réponses PREFIX iut: <http://www.iutnice.fr#> SELECT ?etudiant ?nom WHERE { ?etudiant iut:inscrit ?x . ?x iut:siteweb http://www.iutnice.fr . ?etudiant iut:nom ?nom . ?etudiant iut:age ?age . FILTER ?age > 22 } ORDER BY ?nom LIMIT 20 OFFSET 20 Étudiants de plus de 22 ans triés par nom, les réponses de #21 à #40 Trier, filtrer et limiter les réponses

Dans la clause WHERE: @fr , ^^xsd:integer Dans la clause FILTER: Comparateurs: <, >, =, <=, >=, != Tests sur les binding des variables: isURI(?x), isBlank(?x), isLiteral(?x), bound(?x) Filtres à base d'expressions régulières regex(?x, "A.*") Accès aux attributs/valeur lang(), datatype(), str() Fonctions de (re-)typage (casting) xsd:integer(?x) Fonctions externes / extensions Combinaisons &&, || Dans la clause WHERE: @fr , ^^xsd:integer Dans la clause SELECT: distinct Opérateurs de filtre

PREFIX ex: <http://www.exemple.abc#> SELECT ?x Soit un schéma avec le type "Personne", et la propriété "taille" (en centimètres) demandez les personnes entre 140 et 170 centimètres PREFIX ex: <http://www.exemple.abc#> SELECT ?x WHERE { ?x rdf:type ex:Personne ?x ex:taille ?t FILTER ( ?t >= 140 && ?t <= 170 ) } xsd:integer(?t) Exercice

Tester si un pattern est introuvable: PREFIX iut: <http://www Tester si un pattern est introuvable: PREFIX iut: <http://www.iutnice.fr#> SELECT ?etudiant WHERE { ?etudiant rdf:type iut:Etudiant . OPTIONAL { ?etudiant iut:auteur ?x . ?x rdf:type iut:Programme . ?x iut:langage iut:Java . } FILTER ! bound(?x) } Négation par l'échec

PREFIX ex: <http://www.exemple.abc#> SELECT ?x Soit un schéma avec le type "Personne", et la propriété "marie_avec" demandez les personnes non mariées PREFIX ex: <http://www.exemple.abc#> SELECT ?x WHERE { ?x rdf:type ex:Personne . OPTIONAL { ?x marie_avec ?y . } FILTER ! bound(?y) } Exercice

Le négation par l'échec n'est pas une négation absolue PREFIX ex: <http://www.exemple.abc#> SELECT ?personne WHERE { ?personne rdf:type ?type . FILTER ! ( ?type = ex:Homme ) } Piège

Demander s'il y a des réponses Vérifier qu'il existe au moins une réponse: PREFIX iut: <http://www.iutnice.fr#> ASK { ?etudiant iut:inscrit ?x . ?x iut:siteweb www.iutnice.fr . ?etudiant iut:age ?age . FILTER ?age > 30 } Que demande cette requête ? Existe-t-il un étudiant de plus de 30 ans? Résultat booléen: <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> … </head> <boolean> … </boolean> </sparql> Demander s'il y a des réponses

Construire ou Décrire un résultat On peut créer un format de sortie de toute pièce: PREFIX iut: <http://www.iutnice.fr#> CONSTRUCT { ?etudiant rdf:type iut:FuturTechnicien . } WHERE { ?etudiant iut:inscrit ?x . ?x iut:siteweb http://www.iutnice.fr . } On peut demander une description générale: PREFIX iut: <http://www.iutnice.fr#> DESCRIBE ?etudiant WHERE { ?etudiant iut:inscrit ?x . ?x iut:siteweb http://www.iutnice.fr . } Construire ou Décrire un résultat

Références

RDF : 6 documents sur http://www.w3.org/RDF RDF Primer RDF Concepts and Abstract Data Model RDF/XML Syntax Specification (Revised) RDF Schema RDF Semantics RDF Test Cases SPARQL: SPARQL Query Language for RDF http://www.w3.org/TR/rdf-sparql-query/ SPARQL Query Results XML Format http://www.w3.org/TR/rdf-sparql-XMLres/ SPARQL Protocol for RDF http://www.w3.org/TR/rdf-sparql-protocol/ Références

Sources, références et pointeurs W3C documents at http://www.w3.org www.w3.org/XML - www.w3.org/RDF - http://www.w3.org/2001/sw/ W3C Tutorials: http://www.w3.org/2002/03/tutorials W3C 10th Anniversary http://www.w3.org/2004/Talks/w3c10-Overview/ W3School: http://www.w3schools.com/ Tutorials on Semantic Web Technologies by Ivan Herman www.oasis-open.org Méthodes et outils pour la gestion des connaissances, R. Dieng et. al. Dunod Action Web sémantique CNRS http://www.lalic.paris4.sorbonne.fr/stic/ Bulletin AFIA avril 2003 http://www.lalic.paris4.sorbonne.fr/stic/articles/ XML Revolution: http://www.brics.dk/~amoeller/XML/index.html O’Reilly XML.com http://www.xml.com/ Websemantique http://semanticweb.org/ Sources, références et pointeurs