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

W3C SPARQL (Simple Protocol And RDF Query Language) BALI Ahmed Master informatique 2012/2013 ----------- Basé sur le cours de olivier.

Présentations similaires


Présentation au sujet: "W3C SPARQL (Simple Protocol And RDF Query Language) BALI Ahmed Master informatique 2012/2013 ----------- Basé sur le cours de olivier."— Transcription de la présentation:

1 W3C SPARQL (Simple Protocol And RDF Query Language) BALI Ahmed Bali.ahmed@gmail.com Master informatique 2012/2013 ----------- Basé sur le cours de olivier corby (INRIA)

2 Notion est un langage de requête et un protocole qui permettra de rechercher, d'ajouter, de modifier ou de supprimer des données RDF disponibles à travers Internet. Comme le SQL aux données des bases de données, avec SPARQL, on accède aux données du Web des données. « SPARQL fera une énorme différence», selon Tim Berners-Lee dès mai 2006 2

3 Que fait SPARQL? Pour interroger une base de triplets RDF sous forme de graphe SPARQL est neutre par rapport aux inférences RDF/RDFS/OWL. Cest au serveur de triplets (e,g dbpedia) de faire les inférences et de délivrer les bons triplets 3

4 A partir dune base RDF : Extraire de linformation : URI, literal, datatype literal Extraire un sous graphe RDF Construire un graphe résultat 4

5 SPARQL: exemple PREFIX foaf: SELECT ?mbox WHERE { ?x foaf:name "Johnny Lee Outlaw". ?x foaf:mbox ?mbox } 5

6 Syntaxe SPARQL : Triple URI: Qname: rdf:type foaf:name Variable: ?x ?name Blank Node (variable anonyme): _:b1 _:b2 Literal: Literal 3.14 true 12^^xsd:integer 6

7 Syntaxe SPARQL : Triple subject property object foaf:name ?name ?x foaf:name 'Omar' ?x ?p 'Omar' _:b1 foaf:age 49 7

8 Syntaxe SPARQL ?x c:firstName ?y. ?x c:lastName ?z ?x c:firstName ?y ; c:lastName ?z 8

9 Syntaxe SPARQL ?x c:name Omar. ?x c:name Zaid. ?x c:name Omar, Zaid. 9

10 Blank Node _:b [] _:b c:speed ?v ?x c:speed [] Blank: comme une variable non retournée en résultat 10

11 Blank Node ?x c:speed [ rdf:value ?val ; c:unit 'km/h' ] Equivalent à : ?x c:speed _:b _:b rdf:value ?val _:b c:unit 'km/h' 11

12 Blank Node ?x c:speed [ rdf:value ?val ; c:unit 'km/h' ] Interroger le design pattern des relations n-aires: 100 km/h 12

13 Liste (1 ?x v) _:a rdf:first 1. _:a rdf:rest _:b. _:b rdf:first ?x. _:b rdf:rest _:c. _:c rdf:first v. _:c rdf:rest rdf:nil 13

14 Test : Filtre FILTER (?age >= 7 && ?age <= 77) Comparaison : = > != Opération : + * / - Booléen : && (and) || (or) ! (not) Fonction : isBlank(?x) my:fun(?y) 14

15 Syntaxe Abstraite Filtre EXP ::= TERM | EXP OPER EXP | (EXP) TERM ::= VAR | CST | FUN CST ::= URI | Literal OPER ::= = > + - * / && || ! FUN ::= NAME( EXP* ) 15

16 Tests et datatypes 1 = 1.0 1^^xsd:integer = 1.0^^xsd:decimal ?x + ?y < 0.1 * ?z 16

17 Tests regex(?string,.*master.*) engineer != engineer@en engineer = str(engineer@en) 17

18 Tests: fonctions isURI(?x) isLiteral(?y) isBlank(?z) bound(?t) 18

19 Tests lang(?x) = en engineer@en -> true ingénieur@fr -> false datatype(?y)= xsd:string ! (?x || ?y && ?z) 19

20 Exercice 1. Trouver lage des ressources dont le nom est Salim 2. Trouver le nom des ressources dont lage est inférieur à 50, 3. Trouver les valeurs des propriétés des ressources dont le nom est Salim et lage inférieur à 50 4. Trouver les autres noms des ressources dont le nom est Salim 5. Trouver les ressources qui ont deux propriétés différentes avec la même valeur 6. Trouver les ressources qui ont deux fois la même propriété avec des valeurs différentes 20

21 Exercice 1. Trouver lage des ressources dont le nom est Salim select ?age where { ?x name Salim. ?x age ?age } 2. Trouver le nom des ressources dont lage est inférieur à 50 select ?name where { ?x name ?name. ?x age ?age filter(?age < 50) } 3. Trouver les valeurs des propriétés des ressources dont le nom est Salim et lage inférieur à 50 select ?p ?y where { ?x name Salim. ?x age ?age filter(?age < 50) ?x ?p ?y } 21

22 Exercice 4. Trouver les autres noms des ressources dont le nom est Salim select ?name where { ?x name Salim. ?x name ?name } 5. Trouver les ressources qui ont deux propriétés différentes avec la même valeur select * where { ?x ?p ?y. ?x ?q ?y filter(?p != ?q)} 6. Trouver les ressources qui ont deux fois la même propriété avec des valeurs différentes select * where { ?x ?p ?y. ?x ?p ?z filter(?y != ?z)} 22

23 Pattern optionnel SELECT * WHERE { ?x :hasCreated ?doc. OPTIONAL { ?x :isMemberOf ?org } hasCreated est obligatoire isMemberOf est optionnel 23

24 Pattern optionnel SELECT * WHERE { :John :hasCreated :d1 ?x :hasCreated ?doc :John :hasCreated :d2 OPTIONAL { :Jack :hasCreated :d3 ?x :isMemberOf ?org :Jack :isMemberOf :club } Résultats: (1) x = :John ; doc = :d1 ; org = unbound (2) x = :John ; doc = :d2 ; org = unbound (3) x = :Jack ; doc = :d3 ; org = :club 24

25 Pattern optionnel SELECT * WHERE { ?x :hasCreated ?doc. OPTIONAL { ?x :age ?age. ?x :isMemberOf ?org } age et isMemberOf doivent être présents pour que optional réussisse 25

26 Pattern optionnel SELECT * WHERE { :John :hasCreated :d1 ?x :hasCreated ?doc. :John :hasCreated :d2 OPTIONAL { :Jack :hasCreated :d3 ?x :age ?age. :Jack :isMemberOf :club ?x :isMemberOf ?org :Jim :hasCreated :d4 } :Jim :isMemberOf :assoc } :Jim :age 45 Résultats (1) x = :John ; doc = :d1 ; org = unbound ; age = unbound (2) x = :John ; doc = :d2 ; org = unbound ; age = unbound (3) x = :Jack ; doc = :d3 ; org = unbound ; age = unbound (4) x = :Jim ; doc = :d4 ; org = :assoc ; age = 45 26

27 Pattern optionnel SELECT * WHERE { :John :hasCreated :d1 ?x :hasCreated ?doc. :John :hasCreated :d2 OPTIONAL {?x :age ?age} :Jack :hasCreated :d3 OPTIONAL {?x :isMemberOf ?org} :Jack :isMemberOf :club } :Jim :hasCreated :d4 :Jim :isMemberOf :assoc :Jim :age 45 Résultats (1) x = :John ; doc = :d1 ; org = unbound ; age = unbound (2) x = :John ; doc = :d2 ; org = unbound ; age = unbound (3) x = :Jack ; doc = :d3 ; org = :club ; age = unbound (4) x = :Jim ; doc = :d4 ; org = :assoc ; age = 45 27

28 Pattern optionnel avec test SELECT * WHERE { ?x :hasCreated ?doc. OPTIONAL { ?x :age ?age FILTER (?age < 45). ?x :isMemberOf ?org. } 28

29 Pattern UNION SELECT * WHERE { :Barack :apply :Presidency {?x :apply ?job} :Barack :play :BasketBall UNION :John :apply :Presidency {?x :play ?act} } Résultats (1) x = :Barack ; job = :Presidency ; act = unbound (2) x = :Barack ; job = unbound ; act = :BasketBall (3) x = :John ; job = :Presidency ; act = unbound 29

30 RDF Dataset Interroger une base de plusieurs graphes Des graphes nommés avec des URI Un graphe par défaut Identifier les graphes interrogés 30

31 Résultat SELECT * WHERE SELECT DISTINCT ?x ?y WHERE ORDER BY ?x DESC(?y) LIMIT 10 OFFSET 10 31

32 Distinct select distinct ?x ?z where { ?x :friend ?y ?y :friend ?z } Ne retourne pas deux fois les mêmes valeurs de x et z 32

33 Distinct select distinct ?x ?z :Jules :friend :Jim where { :Jim :friend :Jack ?x :friend ?y :Jules :friend :James ?y :friend ?z :James :friend :Jack } Résultat (1) x = :Jules ; z = :Jack 33

34 Distinct select ?x ?z :Jules :friend :Jim where { :Jim :friend :Jack ?x :friend ?y :Jules :friend :James ?y :friend ?z :James :friend :Jack } Résultat (1) x = :Jules ; z = :Jack (2) x = :Jules ; z = :Jack 34

35 Order by select ?pers ?date :Jim :author :d2 where { :Jack :author :d1 ?pers :author ?doc :d2 :date 2008-01-01 ?doc :date ?date :d1 :date 2007-12-31 } order by ?date Résultat (1) pers = :Jim ; date = 2007-12-31 (2) pers = :Jack ; date = 2008-01-01 35

36 Order by select ?doc ?date :Jim :author :d2 where { :Jack :author :d1 ?pers :author ?doc :Jack :author :d3 ?doc :date ?date :d2 :date 2008-01-01 } :d1 :date 2007-12-31 order by ?date :d3 :date 2007-12-31 desc(?doc) Résultat (1) doc = :d3 ; date = 2007-12-31 (2) doc = :d1 ; date = 2007-12-31 (3) doc = :d2 ; date = 2008-01-01 36

37 Limit/Offset select * where { PATTERN } LIMIT 20 20 résultats au plus 37

38 Limit/Offset select * where { PATTERN } LIMIT 20 OFFSET 10 20 résultats (au plus), après le 10ème i.e. de 11 à 30 38

39 Construct construct { ?girl :brother ?boy } where { ?boy :sister ?girl } 39

40 Construct construct { :Jules :sister :Jil ?girl :brother ?boy } where { ?boy :sister ?girl } Résultat :Jil :brother :Jules 40

41 Discribe describe ?x where { ?x rdf:type :HotTopic ?x :date ?date filter (?date >= 2007-12-31^^xsd:date) } Retourne une description des ?x, dépend de lapplication (du serveur) 41

42 Ask ask {:Olivier :teach :ensi} yes/no answer 42

43 Négation Trouver les personnes qui sont membre dune organisation et qui nont pas créé de doc 43

44 Negation as failure Les personnes qui sont membre dune organisation et qui nont pas créé de doc : SELECT * WHERE { ?x c:isMemberOf ?org. OPTIONAL { ?x c:hasCreated ?doc } FILTER (! bound(?doc)) } 44

45 Fonction externe (user defined) PREFIX fun: SELECT * WHERE { ?x c:age ?age. FILTER fun:prime(?age) } 45

46 Format Résultat XML <sparql xmlns="http://www.w3.org/2005/sparql-results#">... 46

47 Format Résultat XML <sparql xmlns="http://www.w3.org/2005/sparql-results#">......... 47

48 Format Résultat XML r2 http://example.org Bob 30 48


Télécharger ppt "W3C SPARQL (Simple Protocol And RDF Query Language) BALI Ahmed Master informatique 2012/2013 ----------- Basé sur le cours de olivier."

Présentations similaires


Annonces Google