La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

SPARQL Comment illuminer vos mashups en consommant les données du Linked Data ? SemWeb.pro, Paris, 18 janvier 2011 Présentation et exemples :

Présentations similaires


Présentation au sujet: "SPARQL Comment illuminer vos mashups en consommant les données du Linked Data ? SemWeb.pro, Paris, 18 janvier 2011 Présentation et exemples :"— Transcription de la présentation:

1 SPARQL Comment illuminer vos mashups en consommant les données du Linked Data ? SemWeb.pro, Paris, 18 janvier 2011 Présentation et exemples :

2 2 RDF RAPPEL

3 3 Puisque ces choses/concepts/entités sont identifiés par une URI, ils sont assimilables à des ressources (RFC 3986) RDF : les URIs Signifié dans le monde réel Signifiant dans le monde numérique Tim Berners-Lee Une personne Larticle « Semantic Web » de 2001 est Un texte 1- Prenez des choses/concepts/entités du monde réel et placez les dans le monde numérique, en les nommant et en les identifiant par des URIs.

4 4 (,, ) Structure dun triplet RDF = Structure dune phrase simple Sujet Verbe Complément = (Sujet, Prédicat, Objet) Tim Berners-Lee est une personne Larticle Semantic Web de 2001 a pour créateur Tim Berners-Lee Larticle « Semantic Web » de 2001 est un texte RDF : le triplet 2- Exprimez des relations entre ces ressources sous la forme de triplets ou comment décrire linformation à son niveau de granularité le plus basique, la donnée ?

5 5 « Timothy Berners-Lee » RDF : le graphe orienté 3- Représentez et reliez les triplets sous la forme de graphes orientés

6 6 SPARQL PRINCIPES GÉNÉRAUX

7 7 Le parcours de graphe pas à pas : le graphe Soit le graphe suivant sous la forme dune représentation graphique : X Y. "X".. "Y"... Le même graphe sérialisé en Turtle : SPARQL permet dextraire des informations dun graphe par lexpression de contraintes sous la forme déquations qui permettent de parcourir le graphe interrogé.

8 Le parcours de graphe pas à pas Rechercher un prédicat X Y Comment atteindre les ressources et à partir de ?. "X".. "Y"... Sujet = Prédicat = ? Objet = et Reformuler la questionSous forme de triplets ?. ?predicat. Réponse ?predicat

9 Le parcours de graphe pas à pas Rechercher un objet X Y Quelle est la ressources liée en tant quobjet à la ressource par le prédicat ?. "X".. "Y"... Sujet = Prédicat = Objet = ? Reformuler la questionSous forme de triplets ?objet. Réponse ?objet

10 Le parcours de graphe pas à pas Rechercher un sujet X Y Quelle est la ressource sujet dont le prédicat est et lobjet ?. "X".. "Y"... Sujet = ? Prédicat = Objet = Reformuler la questionSous forme de triplets ?sujet. Réponse ?sujet

11 Le parcours de graphe pas à pas Rechercher un objet X Y Quelles sont les littéraux liés par le prédicat aux ressources liés par le prédicat à la ressource ?. "X".. "Y"... Sujet = Prédicat = Objet = ?ressources Reformuler la questionSous forme de triplets ?ressources. ?ressources ?litteraux Réponse ?ressources?litteraux "X" "Y" Sujet = ?ressources Prédicat = Objet = ?litteraux

12 12 foaf:knows ?personnes.Tim Berners-Lee connaît des personnes. Ces personnes sappellent ???.?personnes foaf:name ?nom. Je veux connaître lURI et les noms des personnes que connaît Tim Berners-Lee à partir de son fichier FOAF SELECT ?personnes ?nom FROM WHERE { } PREFIX foaf: Construction dune requête SPARQL

13 13 Description de la syntaxe SPARQL PREFIX dbpedia: PREFIX foaf: SELECT ?oeuvre WHERE { ?oeuvre dbpedia:Victor_Hugo. ?oeuvre "Les } Déclaration des préfixes et des espaces de nom Déclaration du type de requête Déclaration des contraintes Déclaration de la ou les variables recherchées Déclaration dun triplet on note lutilisation des chevrons si lURI est exprimé complètement Déclaration du littéral entre guillemets

14 14 John Seely Brown John Gage Le format XML pour les résultats Rappel des variables déclarées Un élément « result » par combinaisons possibles de variables

15 15 Le format JSON pour les résultats { "head": { "link": [], "vars": ["oeuvre"] }, "results": { "distinct": false, "ordered": true, "bindings": [ { "oeuvre": { "type": "uri", "value": "http://dbpedia.org/resource/Les_Mis%C3%A9rables" }} ] } }

16 16 SPARQL PRATIQUE

17 17 Exercice : effectuer des requêtes SPARQL sur dbpedia Deux interfaces Web sont disponibles pour effectuer des requêtes Interface classique : Interface améliorée : Noubliez pas dindiquer la syntaxe de sortie HTML pour visualiser directement les résultats.

18 18 Découvrir les données dun sparql endpoint pas à pas Découvrir les types de ressources présentes dans lentrepôt : select distinct ?Concept where { ?s a ?Concept } Le mot « a » en position de prédicat correspond à rdf:type Explorer les prédicats distincts liés à une ressource dun type select distinct ?predicat where { ?sujet a. ?sujet ?predicat ?objet. } Rechercher les ressources de ce type en associant un des prédicats trouvés select distinct ?sujet ?objet where { ?sujet a. ?sujet ?objet. }

19 19 Découvrir les données dun sparql endpoint pas à pas Rechercher tous les triplets dont une ressource particulière est sujet select distinct ?predicat ?objet where { ?predicat ?objet. } Compliquer la requête pour commencer à parcourir le graphe prefix rdfs: prefix dbpr: select distinct ?label where { dbpr:placeOfBirth ?objet. ?objet rdfs:label ?label }

20 20 Trouver une URI dans Dbpedia La redirection du Linked Data page

21 21 Exercice 1 Formuler une requête qui affiche toutes les informations associées à lURI de Victor Hugo. URI utile Victor Hugo : Requête select ?predicat ?objet where { ?predicat ?objet. }

22 22 Exercice 2 Rechercher une ressource ayant pour auteur Victor Hugo et pour type « Livre ». URI utile Victor Hugo : Propriété auteur : Type Livre : Requête select ?livres where { ?livres. ?livres a }

23 23 Exercice 3 Rechercher des romanciers français nés à Paris. URI utile Prédicat « Sujet » : Romanciers français : Prédicat « Lieu de naissance » : Paris : Requête select ?personnes where { ?personnes. ?personnes }

24 24 SPARQL ALLER PLUS LOIN

25 25 CONSTRUCT : récupérer ou créer des triplets Ce type de requêtes permet de récupérer un ensemble de triplets stockés dans le triple store pour les manipuler localement, de « re-modéliser » des nouveaux triplets à partir des triplets existants voire dappliquer des règles dinférence. Deux parties Construction des triplets cible Une ressource a pour titre une étiquette Recherche dans les triplets existants Une ressource a pour étiquette une étiquette. ?resource dc:title ?label ?resource rdfs:label ?label CONSTRUCT { } WHERE { }

26 26 ASK : vérifier la présence dun graphe Ce type de requêtes permet de vérifier la présence dans lensemble de données RDF interrogé des contraintes exprimées. Une ressource a pour titre une étiquette?resource dc:title ?label ASK { } Y-a-til un triplet dont le prédicat est dc:title ?

27 27 SPARQL : DISTINCT/OPTIONAL Le mot-clé DISTINCT SELECT ?predicat WHERE { ?predicat ?objet. } Autant de résultats que de triplets dont Victor Hugo est sujet, plusieurs résultats identiques SELECT DISTINCT ?predicat WHERE { ?predicat ?objet. } Dédoublonnage automatique des résultats Le mot-clé OPTIONAL PREFIX dbpedia: PREFIX foaf: SELECT ?auteur ?depiction WHERE { ?auteur a. ?auteur foaf:depiction ?depiction. ?auteur dbpedia:birthPlace. } Résultats que si toutes les contraintes sont vérifiées SELECT ?auteur ?depiction WHERE { ?auteur a. OPTIONAL {?auteur foaf:depiction ?depiction.} ?auteur dbpedia:birthPlace. } Résultats même si la contrainte optionnelle nest pas vérifiée (mais affichage du résultat si elle existe)

28 28 SPARQL : UNION/ORDER/LIMIT Le mot-clé UNION SELECT ?auteur WHERE { ?auteur a. { {?auteur.} UNION {?auteur.} } UNION permet dexprimer lopérateur booléen « OU » (inclusif) Le mot-clé ORDER SELECT ?auteur ?name WHERE { ?auteur a ; foaf:name ?name } ORDER BY ?name ORDER BY permet de classer les résultats suivants une variable déclarée Le mot-clé LIMIT SELECT ?auteur ?name WHERE { ?auteur a ; foaf:name ?name } ORDER BY ?name LIMIT 20 LIMIT permet de limiter le nombre de résultats

29 29 SPARQL : les filtres Il est possible dappliquer des filtres à une requête SPARQL pour limiter les résultats. Filtre lang() SELECT ?abstract WHERE { ?abstract. FILTER (lang(?abstract)=fr) } Filtrer selon la langue du littéral Filtre de comparaison SELECT distinct ?auteur ?date WHERE { ?auteur a. ?auteur ?date. FILTER ( xsd:dateTime(?date) > xsd:dateTime(" ")). } Filtrer les données avec les signes de comparaison mathématique Filtre de regexp SELECT ?auteur ?name WHERE { ?auteur a. ?auteur foaf:name ?name FILTER regex(?name, '^Jean'). } Filtrer un littéral en y appliquant une regexp Consulter la recommandation SPARQL pour découvrir les autres filtresrecommandation SPARQL

30 30 CONSOMMER LES DONNÉES DU LINKED DATA AVEC SPARQL

31 31 Linked Open Data cloud diagram

32 32 Sparql endpoint disponibles Sparql endpoint lié à un ensemble de données Dbpedia : Data.gov : Data.gov.uk : Music Brainz : Linked Geo Data : GeoLinkedData : BBC programmes : Données bibliographiques de la British Library : Open University : … Sparql endpoint agrégeant plusieurs ensemble de données Uberblic : Linked Data semantic repository : LOD cache : Linked Open Commerce :

33 33 Librairies pour manipuler du RDF Java (triples) : Jena Sesame Trialox SCB RDF2Go Topaz RDFReactor So(m)mer Elmo jenabean Linked Data API PHP : RAP ARC C Redland Python RDFlib Ruby ActiveRDF Scala Scardf Javascript Jquery-SPARQL Il existe de très nombreuses librairies pour manipuler du RDF. Quelques exemples :

34 34 Interroger directement un sparql endpoint : Jquery SPARQL Jquery-SPARQL est un module Jquery qui permet dinterroger un sparql endpoint et de récupérer les données en JSON. https://github.com/jgeldart/jquery-sparql var cbfunc = function(results) { $("#results").val(JSON.stringify(results)); }; $(document).ready(function() { $("#run_sparql").click(function(e) { $.sparql("http://dbpedia.org/sparql").prefix("rdfs","http://www.w3.org/2000/01/rdf-schema#").select(["?label"]).where(" ","rdfs:label","?label").execute(cbfunc); return false; });

35 35 Interroger directement un sparql endpoint : ARC2 et PHP ARC2 est un framework PHP mis au point par Benjamin Nowack qui permet de créer, gérer et interroger un triple store local ou interroger un sparql endpoint distant. 'http://dbpedia.org/sparql', ); /* instantiation */ $remotestore = ARC2::getRemoteStore($remoteconfig); $query="SELECT ?label WHERE { rdfs:label ?label FILTER (lang(?label)='fr')}"; $result = $remotestore->query($query, 'row'); print $result['label']; ?> https://github.com/semsol/arc2 Exemple : et source :

36 36 Les outils pour mettre en œuvre les technos du Web sémantique Stocker les données dans un triple store RDF Mémoire : Corese, RedstoreCoreseRedstore Triple store natif : Mulgara, AllegroGraph, BigOWLIM, 4store, Neo4jMulgaraAllegroGraphBigOWLIM4storeNeo4j BDR paramétrée : CubicWeb, Open Anzo, Virtuoso, ARC, Oracle 11g, Sesame, 3storeCubicWebOpen AnzoVirtuosoARCOracle 11gSesame 3store Column store : Cstore, Heart, BigData, ClouderaCstoreHeartBigDataCloudera

37 37 Principes de fonctionnement de ARC Simulation dun triple store avec BD Mysql Toutes les interactions avec la base de données MySQL se font en SPARQL Depuis lextérieur via un sparql endpoint Ou directement via des méthodes PHP Convertisseur SPARQL To SQL SPARQL

38 38 Configurer ARC '', /* Domaine de la base de données ; par défaut : localhost */ 'db_name' => '', /* Nom de la base de données */ 'db_user' => '', /* Nom de l'utilisateur de la base de données */ 'db_pwd' => '', /* Mot de passe de l'utilisateur de la base de données */ /* Nom de l'entrepôt RDF Cela permet de créer plusieurs entrepôts distincts avec la même base de données */ 'store_name' => '', /* Nombre d'erreurs maximums avant l'arrêt d'un script 'max_errors' => 100, */ /* Configuration complémentaire en cas de présence d'un proxy 'proxy_host' => ' ', 'proxy_port' => 8080, */ /* Préfixe pour les nœuds blancs 'bnode_prefix' => 'bn', */ /* Formats supportés par l'extracteur de données structurées dans les pages Web */ 'sem_html_formats' => 'rdfa microformats', ); ?>

39 39 LOAD : Charger des triplets isSetUp()) { $store->setUp(); } /* Chargement du flux distant */ if (isset($url)) { $load="LOAD "; if ($rows = $store->query($load)) { $added_triples = $rows['result']['t_count']; echo $added_triples." triplets ont été ajoutés "; } else { print "Vous n'avez pas saisi d'URL à charger"; } ?> Renvoie un tableau Exploitation du tableau

40 40 isSetUp()) { $store->setUp(); } $query="PREFIX skos: PREFIX rdfs: query($query); if($store->getErrors()) { print_r($store->errors); echo "***\nQuery = $query"; } else { print_r($res); } ?> SELECT : effectuer une requête

41 41 Le tableau de réponse Array ( [query_type] => select [result] => Array ( [variables] => Array ( [0] => s [1] => nom ) [rows] => Array ( [0] => Array ( [s] => [s type] => uri [nom] => Anakin Skywalker [nom type] => literal [nom lang] => fr ) [1] => Array ( [s] => [s type] => uri [nom] => Luke Skywalker [nom type] => literal [nom lang] => fr ) [query_time] => )

42 42 Exploiter le tableau de réponses query($query); if($store->getErrors()) { print_r($store->errors); echo "***\nQuery = $query"; } else { print " "; foreach ($res['result']['rows'] as $result) { print " ".$result['nom']." "; } print " "; } ?>

43 43 EXEMPLES DE MASHUP

44 44 Exemple dutilisation 1 : Linked book Mashup

45 45 Exemple dutilisation 1 : Linked book Mashup

46 46 Exemple dutilisation 2 : Linked My Music

47 47 Exemple dutilisation 2 : Linked My Music

48 48 La boîte à souvenirs

49 Merci pour votre attention Gautier Poupeau Antidot | GSM: +33 (0) F-75 Paris | mailto: Blog : Les petites cases | Twitter petites cases


Télécharger ppt "SPARQL Comment illuminer vos mashups en consommant les données du Linked Data ? SemWeb.pro, Paris, 18 janvier 2011 Présentation et exemples :"

Présentations similaires


Annonces Google