Web sémantique Partie I RDF - SPARQL



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

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

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

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

JDev Atelier Datalift

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

Catalogue des formations Edition 2015

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

Évaluation d une architecture de stockage RDF distribuée

4. SERVICES WEB REST 46

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

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

Les services usuels de l Internet

Vues d ensembles de documents RDF

Web Sémantique. Examen

Learning Object Metadata

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Créer une base de données vidéo sans programmation (avec Drupal)

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

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

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

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Introduction aux «Services Web»

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

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Big Data et Graphes : Quelques pistes de recherche

XML et travail collaboratif : vers un Web sémantique

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

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

1 Introduction et installation

Petite définition : Présentation :

Module BD et sites WEB

OCL - Object Constraint Language

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

SQL Historique

Devenez un véritable développeur web en 3 mois!

Information utiles. webpage : Google+ : digiusto/

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

Introduction aux concepts d ez Publish

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

INTERNET, C'EST QUOI?

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

Bases de données - Modèle relationnel

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

OASIS Date de publication

INTRODUCTION : Données structurées et accès simplifié

Supervision des contributions dans un portail de travail collaboratif

Synthèse... 1 Introduction Contexte de la création multimédia et surgissement du web sémantique 6

Cours 4 : Agrégats et GROUP BY

Sommaire. -1-Computer en bref. Web en bref. Le web 3.0,...la mobilité. Evolution du Web web1.0, web2.0, web2.b, web3.0...

Big Data et Graphes : Quelques pistes de recherche

Web sémantique et pratiques documentaires

Intégration de données complexes pour une vision 360 du client. Chloé Clavel EDF R&D Département ICAME

Adaptabilité d un MOOC aux styles d apprentissage. Hubert Kadima Directeur de Recherche LARIS/EISTI hubert.kadima@eisti.fr

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Infrastructure de Données Spatiales

Langage SQL : créer et interroger une base

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

OpenPaaS Le réseau social d'entreprise

Le réseau Internet.

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

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

RDF Schema pour les ontologies légères

IFT2255 : Génie logiciel

Bases de données élémentaires Maude Manouvrier

Le langage SQL Rappels

Programmation Internet Cours 4

Réseaux. 1 Généralités. E. Jeandel

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

Le Langage SQL version Oracle

Logiciels de référencement

Protocoles Applicatifs

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

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.

Bibliothèque numérique de l enssib

Une approche langage pour la gestion de données dans les systèmes de méta-modélisation

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Master Information et communication spécialité Produits et services multimédia

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Django et PostgreSQL sous la charge

Formation Site Web. Menu du jour. Le web comment ça marche? Créer un site web Une solution proposée pour débuter La suite?

Exemples de reque tes dans data.bnf.fr

SYSTÈMES D INFORMATIONS

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

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

!" #$%&'(&)'*'+,--./&0'1&23,+2.)$4$%52'&%'6.%&2'

FileMaker Server 12. publication Web personnalisée avec XML

Master Technologies numériques appliquées à l'histoire Deuxième année

Transcription:

Web sémantique Partie I RDF - SPARQL Cours Document et Web Sémantique Nicol Delestre DF - SPARQL v1.0 1 / 49

Plan... 1 Vers le Web sémantique 2 RDF 3 SPARQL 4 Publication, requêtage 5 Conclusion RDF - SPARQL v1.0 2 / 49

Vers le Web sémantique Les métadonnées de http://i.insa-rouen.fr/~delestre http://i.insarouen.fr/~delestr e/images/photo ND.jpg http://schema. org/person France name http://schema. org/country BP08 Avenue de l'université F-76801 addresscountry postalcode streetaddress itemprop itemtype http://schema.org /PostalAddress INSA de Rouen honorificprefix Dr image colleague jobtitle email MC name familyname memberof nicol.delestre @insa-rouen.fr Nicol Delestre Delestre workfor memberof addresslocality Saint-Etienne du Rouvray address legalname url http://www.insa -rouen.fr http://schema.org /CollegeOrUniver sity name Nicol Malandain http://schema. org/person http://schema.org /EducationalOrga nization http://i.insarouen.fr url name Architecture des Systèmes d'information alternatename http://schema.org /EducationalOrga nization ASI http:/litislab.eu url name alternatename Laboratoire d'informatique, du Traitement de l'information et des Systèmes LITIS RDF - SPARQL v1.0 3 / 49

Vers le Web sémantique Constats Certains éléments ne sont p nommés alors qu ils ont un rôle, ils représentent quelque chose (une personne, un établissement, une organisation pédagogique, etc.) Alors que la page décrit une personne ces métadonnées décrivent plus de chose honorificprefix Dr iamge jobtitle MC http://schema. org/person http://schema. org/person email name familyname nicol.delestre @insa-rouen.fr France memberof http://schema.org /EducationalOrga nization http://i.insarouen.fr/~delestr e/images/photo ND.jpg http://i.insarouen.fr name Nicol Delestre Delestre url http://schema. org/country workfor memberof name Architecture des Systèmes d'information alternatename BP08 Avenue de l'université F-76801 addresscountry postalcode addresslocality Saint-Etienne du Rouvray http://schema.org /EducationalOrga nization ASI streetaddress address http:/litislab.eu legalname url url itemprop itemtype http://schema.org /PostalAddress INSA de Rouen http://www.insa -rouen.fr http://schema.org /CollegeOrUniver sity name Laboratoire d'informatique, du Traitement de l'information et des Systèmes Il y a deux types de liens alors que les deux servent à caractériser une entité Le même fichier, le même URL, rsemble des informations destinées aux humains et aux machines name Nicol Malandain colleague alternatename LITIS RDF - SPARQL v1.0 4 / 49

Vers le Web sémantique Le web sémantique 1 / 3 Définition Le Web des données et le Web Sémantique sont le Web pour les machines : le Web implique l utilisation (et son extension) des technologies du Web (URL, HTTP) et des principes du Web (informations décentralisées et interconnectées) pour les machines implique informations structurées RDF - SPARQL v1.0 5 / 49

Vers le Web sémantique Le web sémantique 2 / 3 Des URL aux URI Les URL permettent d identifier un document sur le Web Les URI (et IRI) permettent de référencer un objet, une resource, un concept, une idée, etc. sur le Web Lorsqu un URI correspondant à un URL, le contenu retourné après une requête HTTP GET dépend du type mime (accept) demandé (cf. [BP08]) : text/html : une page Web est retournée application/rdf+xml : une description Web sémantique est retournée RDF - SPARQL v1.0 6 / 49

Vers le Web sémantique Le web sémantique 3 / 3 Plus exactement WEB des Documents WEB des Données WEB Sémantique Standards et Outils URL HTTP HTML DTD XSD Moteur de recherche URI HTTP RDF SPARQL RDFS Moteur de requêtes URI HTTP RDF SPARQL OWL Moteur de requêtes Techniques Aujourd'hui Recherche d'information bée sur des index de mots Monde des documents Mise en correspondance de graphes Monde des bes de données Logique Monde des bes de connaissances Des milliards de pages Des milliards de triplets RDF Des milliers d'ontologies Inspiré de la présentation de MC Rousset : http://www.college-de-france.fr/media/serge-abiteboul/upl5540483766962034581_rousset20120530.pdf RDF - SPARQL v1.0 7 / 49

RDF RDF 1 / 3 Présentation Langage de représentation de métadonnées proposé par le W3C en 1999 Le document présentant la dernière version (2004) est composé de 6 parties : 1 Primer : connaissances de be du RDF 2 Concepts : syntaxe abstraite définissant le RDF 3 Syntax : représentation XML du RDF 4 Semantics : Interprétation logique du RDF 5 Vocabulary : Définition de nouveau vocabulaire (RDF Schema) 6 Test Ces : Tests unitaires RDF - SPARQL v1.0 8 / 49

RDF RDF 2 / 3 Concepts de be Un triplé composé de : Sujet ou Ressource : Ressource sur laquelle s applique la métadonnée Prédicat ou Propriété : Nom de la métadonnée appliquée à la ressource Objet ou valeur : Valeur de la métadonnée (peut être une resource ou un litéral) http://www.w3c.org/home/lsila creator Ora Lsila [W3C99] RDF - SPARQL v1.0 9 / 49

RDF RDF 3 / 3 Possibilité de structurer l information http://www.w3c.org/home/lsila Creator http://www.w3c.org/home/lsila Creator http://www.w3c.org/staffd/85740 Name Email Name Email Ora Lsila lsila@w3.org Ora Lsila lsila@w3.org [W3C99] RDF - SPARQL v1.0 10 / 49

RDF Introduction au RDF/XML 1 / 4 L élément de be : Description Ressource : Attribut about Prédicat : Élément inclus provenant d un schéma (voir RDFS) Valeur : Spécifiée dans l élément inclus <? xml version =" 1.0 "?> <rdf:rdf xmlns:rdf=" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:exterms =" http: // www. example.org / terms /"> < rdf:description rdf:about =" http: // www. example.org / index.html "> < exterms:creation - date > August 16, 1999 </ exterms:creation - date > </ rdf:description > </ rdf:rdf > Tous les exemples qui suivent sont issus de [W3C04] RDF - SPARQL v1.0 11 / 49

RDF Introduction au RDF/XML 2 / 4 On peut avoir plusieurs descriptions faisant référence à plusieurs schém RDFS <? xml version =" 1.0 "?> <rdf:rdf xmlns:rdf=" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:dc=" http: // purl.org /dc/ elements /1.1/ " xmlns:exterms =" http: // www. example.org / terms /"> < rdf:description rdf:about =" http: // www. example.org / index.html "> < exterms:creation - date > August 16, 1999 </ exterms:creation - date > </ rdf:description > < rdf:description rdf:about =" http: // www. example.org / index.html "> <dc:language >en</ dc:language > </ rdf:description > </ rdf:rdf > RDF - SPARQL v1.0 12 / 49

RDF Introduction au RDF/XML 3 / 4 Les valeurs peuvent être des littéraux ou des ressources L attribut datatype permet de typer les littéraux (possibilité d utiliser les types xsd) Possibilité d utiliser les ENTITY des DTD <? xml version =" 1.0 "?> <!DOCTYPE rdf:rdf [<!ENTITY xsd " http: // www.w3.org /2001/ XMLSchema #">]> <rdf:rdf xmlns:rdf=" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:dc=" http: // purl.org /dc/ elements /1.1/ " xmlns:exterms =" http: // www. example.org / terms /"> < rdf:description rdf:about =" http: // www. example.org / index.html "> < exterms:creation - date rdf:datatype ="& xsd ;# date ">1999-08 -16 </ exterms:creation - date > <dc:language >en</ dc:language > <dc:creator rdf:resource=" http: // www. example.org / staffid /85740 "/> </ rdf:description > </ rdf:rdf > RDF - SPARQL v1.0 13 / 49

RDF Introduction au RDF/XML 4 / 4 Les attributs nodeid et id permettent de créer des nœuds vides <? xml version =" 1.0 "?> <rdf:rdf xmlns:rdf=" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:dc=" http: // purl.org /dc/ elements /1.1/ " xmlns:exterms=" http: // example.org / stuff /1.0/ "> <rdf:description rdf:about=" http: // www.w3.org /TR/rdf -syntax - grammar "> < dc:title >RDF /XML Syntax Specification ( Revised )</ dc:title > < exterms:editor rdf:nodeid =" abc "/> </ rdf:description > < rdf:description rdf:nodeid =" abc "> <exterms:fullname >Dave Beckett</ exterms:fullname > < exterms:homepage rdf:resource =" http: // purl.org /net / dajobe /"/> </ rdf:description > </ rdf:rdf > RDF - SPARQL v1.0 14 / 49

RDF Conteneur 1 / 4 Bag, sequence et alternative Il est fréquent de devoir faire référence à plusieurs ressources (par exemple un livre écrit par plusieurs auteurs ) RDF propose trois conteneurs : bag Liste non ordonnée de resources ou de littéraux (élément bag) sequence Liste ordonnée de resources ou de littéraux (élément seq) alternative Liste de resources ou de littéreaux qui représentent des alternatives pour une valeur unique (élément alt) Les éléments du conteneur sont listés à l aide de l élément li ou i avec (i > 0) Pour alternative il doit y avoir au moins un élément 1 (élément par défaut) RDF - SPARQL v1.0 15 / 49

RDF Conteneur 2 / 4 Bag <? xml version =" 1.0 "?> <rdf:rdf xmlns:rdf=" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:s =" http: // example.org / students / vocab #"> <rdf:description rdf:about=" http: // example.org / courses /6.001 "> < s:students > < rdf:bag > < rdf:li rdf:resource =" http: // example.org / students /Amy "/> < rdf:li rdf:resource =" http: // example.org / students / Mohamed "/> < rdf:li rdf:resource =" http: // example.org / students / Johann "/> < rdf:li rdf:resource =" http: // example.org / students / Maria "/> < rdf:li rdf:resource =" http: // example.org / students / Phuong "/> </ rdf:bag > </ s:students > </ rdf:description > </ rdf:rdf > RDF - SPARQL v1.0 16 / 49

RDF Conteneur 3 / 4 Alternative <? xml version =" 1.0 "?> <rdf:rdf xmlns:rdf=" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:s =" http: // example.org / packages / vocab #"> < rdf:description rdf:about =" http: // example.org / packages /X11 "> <s:distributionsite > < rdf:alt > < rdf:li rdf:resource ="ftp: // ftp. example.org "/> < rdf:li rdf:resource ="ftp: // ftp1. example.org "/> < rdf:li rdf:resource ="ftp: // ftp2. example.org "/> </ rdf:alt > </ s:distributionsite > </ rdf:description > </ rdf:rdf > RDF - SPARQL v1.0 17 / 49

RDF Conteneur 4 / 4 Problème Lorsque la ressource est une collection, la propriété porte sur la collection ou sur les éléments de cette collection Sur la collection si utilisation de l attribut about Sur les éléments de la collection si utilisation de l attribut abouteach < rdf:bag ID=" pages "> < rdf:li resource =" http: // foo.org /foo.html " /> < rdf:li resource =" http: // bar.org /bar.html " /> </ rdf:bag > < rdf:description abouteach ="# pages "> < s:creator >Ora Lsila </ s:creator > </ rdf:description > http: // www. w3. org/ TR/ 1999/ REC-rdf-syntax-19990222/ RDF - SPARQL v1.0 18 / 49

Préfixe RDF Préfixe d URI Lorsque l on veut appliquer une propriété à un ensemble de ressources organisé hiérarchiquement (un début d URI, préfixe, en commun), on peut utiliser la propriété au préfixe grâce à l attribut abouteachprefix < rdf:description abouteachprefix =" http: // foo.org /doc "> <s:copyright >(c) 1998, The Foo Organization </ s:copyright > </ rdf:description > [W3C99] RDF - SPARQL v1.0 19 / 49

RDF Turtle 1 / 2 Une autre méthode de sérialisation La syntaxe XML est verbeuse, peut être difficile à lire (par les humains) Une autre syntaxe Turtle (N3) a été proposée par Tim Berners-Lee pour être encore plus facile à lire Syntaxe simple : @ prefix ns: <URI >.... <ns:sujet > <Predicat1 > <Valeur1 >; <Predicat2 > <Valeur21 >,<Valeur22 >,...;... <Predicatn > <Valeurn >. [ ] <Predicat1 > <Valeur1 >. <Predicat2 > <Valeur21 >,<Valeur22 >,...;... <Predicatn > <Valeurn >. RDF - SPARQL v1.0 20 / 49

RDF Turtle 2 / 2 Comparaison (Wikipédia) < rdf:rdf xmlns:rdf =" http: // www.w3.org /1999/02/22 - rdf -syntax -ns#" xmlns:dc =" http: // purl.org /dc/ elements /1.1/ "> < rdf:description rdf:about =" http: // en. wikipedia.org /wiki / Tony_Benn "> < dc:title >Tony Benn </ dc:title > <dc:publisher >Wikipedia</ dc:publisher > </ rdf:description > </ rdf:rdf > @ prefix dc: <http :// purl.org /dc/ elements /1.1/ >. <http :// en. wikipedia.org /wiki / Tony_Benn > dc: title "Tony Benn "; dc: publisher " Wikipedia ". RDF - SPARQL v1.0 21 / 49

RDF D autres formats http://www.w3.org/tr/rdf11-new/ RDF - SPARQL v1.0 22 / 49

Clse RDF En RDF il est possible d socier à une ressource une ou plusieurs clses : en utilisant la propriété rdf:type en utilisant le nom de la clse pour la balise décrivant la ressource en remplacement rdf:description (sérialisation XML) en utilisant la propriété a (sérialisation N3) Cela permet de connaître l ensemble des propriétés qui sont valides pour cette ressource RDF - SPARQL v1.0 23 / 49

SPARQL SPARQL Deux Langages (SPARQL Query Language et SPARQL Update) et un protocole d interrogation de bes de données RDF Syntaxe ressemblant à SQL Principe de fonctionnement : recherche de sous-graphes dans un graphe (graph matching) Tous les exemples de ce cours sont issus de Learning SPARQL de Bob DuCharme [DuC11] Vous pourrez trouver un tutoriel complet issu de ce livre sur la chaîne YouTube de Noureddin Sadawi https://www.youtube.com/user/drnoureddinsadawi/ RDF - SPARQL v1.0 24 / 49

SPARQL Obtenir la valeur d une propriété [DuC11] Be RDF # filename : ex002. ttl Requête # filename : ex007.rq @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> ab: richard ab: hometel " (229) 276-5135 ". ab: richard ab: email " richard49@hotmail. com ". ab: cindy ab: hometel " (245) 646-5488 ". ab: cindy ab: email " cindym@gmail.com ". ab: craig ab: hometel " (194) 966-1505 ". ab: craig ab: email " craigellis@yahoo.com ". ab: craig ab: email "c. ellis@usairwaysgroup. com ". SELECT? craigemail FROM <ex002.ttl > WHERE { ab: craig ab: email? craigemail. } Résultats -------------------------------- craigemail ================================ "c. ellis@usairwaysgroup.com " " craigellis@yahoo.com " -------------------------------- Le FROM est optionnel RDF - SPARQL v1.0 25 / 49

SPARQL Obtenir l URI d une ressource [DuC11] Be RDF # filename : ex002. ttl Requête # filename : ex008.rq @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> ab: richard ab: hometel " (229) 276-5135 ". ab: richard ab: email " richard49@hotmail. com ". SELECT? person WHERE {? person ab: hometel " (229) 276-5135 ". } ab: cindy ab: hometel " (245) 646-5488 ". ab: cindy ab: email " cindym@gmail.com ". ab: craig ab: hometel " (194) 966-1505 ". ab: craig ab: email " craigellis@yahoo.com ". ab: craig ab: email "c. ellis@usairwaysgroup. com ". Résultats -------------- person ============== ab: richard -------------- RDF - SPARQL v1.0 26 / 49

SPARQL Obtenir toutes les propriétés d une ressource [DuC11] Be RDF # filename : ex002. ttl Requête # filename : ex010.rq @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> ab: richard ab: hometel " (229) 276-5135 ". ab: richard ab: email " richard49@hotmail. com ". ab: cindy ab: hometel " (245) 646-5488 ". ab: cindy ab: email " cindym@gmail.com ". ab: craig ab: hometel " (194) 966-1505 ". ab: craig ab: email " craigellis@yahoo.com ". ab: craig ab: email "c. ellis@usairwaysgroup. com ". SELECT? propertyname? propertyvalue WHERE { ab: cindy? propertyname? propertyvalue. } Résultats ------------------------------------- propertyname propertyvalue ===================================== ab: email " cindym@gmail.com " ab: hometel "(245) 646-5488" ------------------------------------- RDF - SPARQL v1.0 27 / 49

SPARQL Contraindre certaines valeurs [DuC11] Be RDF # filename : ex012. ttl Requête # filename : ex013.rq @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns/ data #>. d: i0432 ab: firstname " Richard ". d: i0432 ab: ltname "Mutt ". d: i0432 ab: hometel " (229) 276-5135 ". d: i0432 ab: email " richard49@hotmail. com ". PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? craigemail WHERE {? person ab: firstname " Craig ".? person ab: email? craigemail. } d: i9771 ab: firstname " Cindy ". d: i9771 ab: ltname " Marshall ". d: i9771 ab: hometel " (245) 646-5488 ". d: i9771 ab: email " cindym@gmail.com ". d: i8301 ab: firstname " Craig ". d: i8301 ab: ltname " Ellis ". d: i8301 ab: email " craigellis@yahoo.com ". d: i8301 ab: email "c. ellis@usairwaysgroup. com ". Résultats -------------------------------- craigemail ================================ "c. ellis@usairwaysgroup.com " " craigellis@yahoo.com " -------------------------------- RDF - SPARQL v1.0 28 / 49

SPARQL Filtrer certains résultats [DuC11] 1 / 2 Requête # filename : ex021.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT * WHERE {?s?p?o. FILTER ( regex (?o, " yahoo ","i")) } Résultats --------------------------------------------------------------------------------- s p o ================================================================================= <http :// learningsparql.com /ns/data #i8301 > ab: email " craigellis@yahoo.com " --------------------------------------------------------------------------------- RDF - SPARQL v1.0 29 / 49

SPARQL Filtrer certains résultats [DuC11] 2 / 2 FILTER Ne prend qu un seul argument Opérateurs :!, =,! =, >, <, <=, >=,, &&, IN Fonctions : BOUND, isuri, isiri, isblank, isliteral, STR, LANG, DATATYPE, sameterm, langmatches, REGEX Possibilités d appeler des fonctions externes Exemple fonction externe (W3C) PREFIX ageo : <http :// example.org /geo #> SELECT? neighbor WHERE {?a ageo : placename " Grenoble ".?a ageo : location? axloc.?a ageo : location? ayloc.?b ageo : placename? neighbor.?b ageo : location? bxloc.?b ageo : location? byloc. FILTER ( ageo : distance (? axloc,?ayloc,?bxloc,? byloc ) < 10 ). } RDF - SPARQL v1.0 30 / 49

SPARQL Attention aux requêtes trop contraintes [DuC11] Be RDF # filename : ex054. ttl @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns/ data #>. d: i0432 ab: firstname " Richard ". d: i0432 ab: ltname "Mutt ". d: i0432 ab: hometel " (229) 276-5135 ". d: i0432 ab:nick "Dick ". d: i0432 ab: email " richard49@hotmail. com ". Requête # filename : ex055.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? f i r s t? l a s t? worktel WHERE {?s ab: firstname? f i r s t ; ab: ltname? l a s t ; ab: worktel? worktel. } d: i9771 ab: firstname " Cindy ". d: i9771 ab: ltname " Marshall ". d: i9771 ab: hometel " (245) 646-5488 ". d: i9771 ab: email " cindym@gmail.com ". d: i8301 ab: firstname " Craig ". d: i8301 ab: ltname " Ellis ". d: i8301 ab: worktel " (245) 315-5486 ". d: i8301 ab: email " craigellis@yahoo.com ". d: i8301 ab: email "c. ellis@usairwaysgroup. com ". Résultats ---------------------------------------- first lt worktel ======================================== " Craig " " Ellis " "(245) 315-5486" ---------------------------------------- RDF - SPARQL v1.0 31 / 49

SPARQL Avoir des contraintes optionnelles [DuC11] 1 / 2 Requête # filename : ex057.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? f i r s t? l a s t? worktel WHERE {?s ab: firstname? f i r s t ; ab: ltname? l a s t. OPTIONAL {?s ab: worktel? worktel. } } Résultats --------------------------------------------- first lt worktel ============================================= " Craig " " Ellis " "(245) 315-5486" " Cindy " " Marshall " " Richard " "Mutt " --------------------------------------------- RDF - SPARQL v1.0 32 / 49

SPARQL Avoir des contraintes optionnelles [DuC11] 2 / 2 Requête # filename : ex061.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? f i r s t? l a s t? worktel? nick WHERE {?s ab: firstname? f i r s t ; ab: ltname? l a s t. OPTIONAL {?s ab: worktel? worktel. } OPTIONAL {?s ab: nick? nick. } } Résultats ------------------------------------------------------ first lt worktel nick ====================================================== " Craig " " Ellis " "(245) 315-5486" " Cindy " " Marshall " " Richard " "Mutt " "Dick " ------------------------------------------------------ RDF - SPARQL v1.0 33 / 49

SPARQL Filtrer des contraintes optionnelles [DuC11] 1 / 2 Be RDF Requête # filename : ex054. ttl @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns/ data #>. d: i0432 ab: firstname " Richard ". d: i0432 ab: ltname "Mutt ". d: i0432 ab: hometel " (229) 276-5135 ". d: i0432 ab:nick "Dick ". d: i0432 ab: email " richard49@hotmail. com ". d: i9771 ab: firstname " Cindy ". d: i9771 ab: ltname " Marshall ". d: i9771 ab: hometel " (245) 646-5488 ". d: i9771 ab: email " cindym@gmail.com ". # filename : ex065.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? f i r s t? l a s t WHERE {?s ab: firstname? f i r s t ; ab: ltname? l a s t. OPTIONAL {?s ab: worktel? worknum. } FILTER (! bound (? worknum )) } Résultats d: i8301 ab: firstname " Craig ". d: i8301 ab: ltname " Ellis ". d: i8301 ab: worktel " (245) 315-5486 ". d: i8301 ab: email " craigellis@yahoo.com -------------------------- ". first lt d: i8301 ab: email "c. ========================== ellis@usairwaysgroup. com ". " Cindy " " Marshall " " Richard " "Mutt " -------------------------- RDF - SPARQL v1.0 34 / 49

SPARQL Filtrer des contraintes optionnelles [DuC11] 2 / 2 Be RDF Requête (SPARQL 1.1) # filename : ex054. ttl @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns/ data #>. d: i0432 ab: firstname " Richard ". d: i0432 ab: ltname "Mutt ". d: i0432 ab: hometel " (229) 276-5135 ". d: i0432 ab:nick "Dick ". d: i0432 ab: email " richard49@hotmail. com ". d: i9771 ab: firstname " Cindy ". d: i9771 ab: ltname " Marshall ". d: i9771 ab: hometel " (245) 646-5488 ". d: i9771 ab: email " cindym@gmail.com ". # filename : ex067.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? f i r s t? l a s t WHERE {?s ab: firstname? f i r s t ; ab: ltname? l a s t. FILTER NOT EXISTS {?s ab: worktel? worknum } } Résultats d: i8301 ab: firstname " Craig ". d: i8301 ab: ltname " Ellis ". d: i8301 ab: worktel " (245) 315-5486 ". d: i8301 ab: email " craigellis@yahoo.com -------------------------- ". first lt d: i8301 ab: email "c. ========================== ellis@usairwaysgroup. com ". " Cindy " " Marshall " " Richard " "Mutt " -------------------------- RDF - SPARQL v1.0 35 / 49

SPARQL Éviter les répétitions [DuC11] Be RDF # filename : ex054. ttl @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns/data #>. d: i0432 ab: firstname " Richard ". d: i0432 ab: ltname "Mutt ". d: i0432 ab: hometel " (229) 276-5135 ". d: i0432 ab:nick "Dick ". d: i0432 ab: email " richard49@hotmail.com ". d: i9771 ab: firstname " Cindy ". d: i9771 ab: ltname " Marshall ". d: i9771 ab: hometel " (245) 646-5488 ". d: i9771 ab: email " cindym@gmail.com ".... Requête # filename : ex092.rq SELECT DISTINCT?p WHERE {?s?p?o. } RDF - SPARQL v1.0 36 / 49

SPARQL Combiner des résultats [DuC11] 1 / 4 Be RDF # filename : ex069. ttl # Courses @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns/ data #>. # People d: i0432 ab: firstname " Richard " ; ab: ltname "Mutt " ; ab: email " richard49@hotmail. com ". d: i9771 ab: firstname " Cindy " ; ab: ltname " Marshall " ; ab: email " cindym@gmail.com ". d: i8301 ab: firstname " Craig " ; ab: ltname " Ellis " ; ab: email "c. ellis@usairwaysgroup. com ". d: course34 ab: coursetitle " Modeling Data with OWL ". d: course71 ab: coursetitle " Enhancing Websites with RDFa ". d: course59 ab: coursetitle " Using SPARQL with non - RDF Data ". d: course85 ab: coursetitle " Updating Data with SPARQL ". # Who s taking which courses d: i8301 ab: takingcourse d: course59. d: i9771 ab: takingcourse d: course34. d: i0432 ab: takingcourse d: course85. d: i0432 ab: takingcourse d: course59. d: i9771 ab: takingcourse d: course59. RDF - SPARQL v1.0 37 / 49

SPARQL Combiner des résultats [DuC11] 2 / 4 Requête # filename : ex098.rq PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> PREFIX d: <http :// learningsparql.com /ns/data #> SELECT * WHERE { {? person ab: firstname? f i r s t ; ab: ltname? l a s t. } } UNION {? course ab: coursetitle? coursename. } Résultats ------------------------------------------------------------------------------------ person first lt course coursename ==================================================================================== d: i8301 " Craig " " Ellis " d: i9771 " Cindy " " Marshall " d: i0432 " Richard " "Mutt " d: course85 " Updating Data with SPARQL " RDF - SPARQL v1.0 d: course59 " Using SPARQL with non -RDF Data " 38 / 49

SPARQL Combiner des résultats [DuC11] 3 / 4 Be RDF # filename : ex100. ttl Requête # filename : ex101.rq @ prefix ab: <http :// learningsparql.com /ns/ addressbook #>. @ prefix d: <http :// learningsparql.com /ns / data #>. d: i0432 ab: firstname " Richard " ; ab: ltname "Mutt " ; ab: instrument "sax " ; ab: instrument " clarinet ". d: i9771 ab: firstname " Cindy " ; ab: ltname " Marshall " ; ab: instrument " drums ". PREFIX ab: <http :// learningsparql.com /ns/ addressbook #> SELECT? f i r s t? l a s t? instrument WHERE { {? person ab: firstname? f i r s t ; ab: ltname? l a s t ; ab: instrument " trumpet " ; ab: instrument? instrument. } UNION d: i8301 ab: firstname " Craig " ; ab: ltname " Ellis " ; ab: instrument " trumpet ". } {? person ab: firstname? f i r s t ; ab: ltname? l a s t ; ab: instrument "sax " ; ab: instrument? instrument. } RDF - SPARQL v1.0 39 / 49

SPARQL Combiner des résultats [DuC11] 4 / 4 Résultats ------------------------------------ first lt instrument ==================================== " Craig " " Ellis " " trumpet " " Richard " "Mutt " " clarinet " " Richard " "Mutt " "sax " ------------------------------------ RDF - SPARQL v1.0 40 / 49

SPARQL Et ce n est p fini! 1 / 2 SPARQL Query Language Possibilité d utiliser des fonctions dans le SELECT : MIN, MAX, COUNT,... Possibilité d ordonner les résultats : ORDER BY Possibilité de grouper des résultats (GROUP BY) et d agréger des résultats (HAVING) avec différentes fonctions d aggrégation (MAX, AVG, SUM,...) Possibilité de limiter le nombre de résultats LIMIT (à utiliser sur des grandes be) ou de demander les résultats à partir d un certain rang (OFFSET) Possibilité d utiliser des variables : AS Possibilité de rechercher dans plusieurs be à la fois : SERVICE Possibilité d autres types de requêtes : DESCRIBE, ASK, CONSTRUCT... RDF - SPARQL v1.0 41 / 49

SPARQL Et ce n est p fini! 2 / 2 SPARQL Update Possibilité d ajouter des triplets RDF Possibilité de supprimer (sous conditions ou p) des triplets RDF Possibilité de mettre à jour (par ajout(s) et suppression(s) conditionnel(s)) des triplets RDF RDF - SPARQL v1.0 42 / 49

Publication, requêtage Publication : Outils, API Publication Publication de triplets RDF : format N3 (.ttl) ou XML (.rdf) Utilisation d une be de données (par exemple JENA) proposant une entrée SPARQL (par exemple Fuseki) Requêtage Utilisation de la méthode GET HTTP avec le type mime application/rdf+xml, lorsque l URI est une URL Utilisation d utilitaire de requêtage SPARQL (par exemple arq) Utilisation d une API (par exemple Jena) RDF - SPARQL v1.0 43 / 49

Publication, requêtage Exemple : fr.dbpedia.org RDF - SPARQL v1.0 44 / 49

Conclusion Conclusion 1 / 4 Évolution du web sémantique source : http: // lod-cloud. net/ 2007 RDF - SPARQL v1.0 45 / 49

Conclusion Conclusion 2 / 4 Le web se mantique aujourd hui source : http: // lod-cloud. net/ (2014) RDF - SPARQL v1.0 46 / 49

Conclusion Conclusion 3 / 4 L Open data défini par Tim Berners-Lee en 2006 http://www.w3.org/designissues/linkeddata.html RDF - SPARQL v1.0 47 / 49

Conclusion Conclusion 4 / 4 Ce qui n a p été présenté Les autres méthodes de sérialisation Le conteneur list La réification La notion de graphe et le Global Giant Graph RDF - SPARQL v1.0 48 / 49

Conclusion Références [BP08] [DuC11] [Gen08] Diego Berrueta and Jon Phipps. Best practice recipes for publishing rdf vocabularies. World Wide Web Consortium, Note NOTE-swbp-vocab-pub-20080828, August 2008. B. DuCharme. Learning SPARQL. O Reilly Media, 2011. D. Genest. Cours sur le web sémantique, 2008. http://www.info.univ-angers.fr/pub/genest/enseignement/index.html. [GFZC12] [GFZC15] Fabien Gandon, Catherine Faron-Zucker, and Olivier Corby. Le Web sémantique : comment lier les données et les schém sur le web? InfoPro. Dunod, Paris, 2012. Sommaire et résumé disponibles sur le site de l éditeur à l adresse consulté le 2013-04-09 http ://http ://www.dunod.com/informatique-multimedia/systemes-dinformation-et-reseaux/strategie-etsystemes-dinformation/gestion-/le-web-semantique. Fabien Gandon, Catherine Faron-Zucker, and Olivier Corby. Web sémantique et web de données. https://www.france-universite-numerique-mooc.fr/courses/inria/41002/trimestre_1_2015/info, Mars 2015. [W3C99] Resource description framework, 1999. http://www.w3.org/tr/1999/rec-rdf-syntax-19990222/. [W3C04] Rdf primer, 2004. http://www.w3.org/tr/rdf-primer/. RDF - SPARQL v1.0 49 / 49