sparql_1.1

35
1 Faculté des Sciences Dhar El Mahraz-Fès SPARQL 1.1 Yassine AKHIAT El Yazid AKACHAR Master : Information Systems ,Network & Multimédia

Upload: yassine-akhiat

Post on 18-Jul-2015

139 views

Category:

Science


0 download

TRANSCRIPT

Page 1: SPARQL_1.1

1

Faculté des Sciences Dhar El Mahraz-Fès

SPARQL 1.1

• Yassine AKHIAT• El Yazid AKACHAR

Master :Information Systems ,Network & Multimédia

Page 2: SPARQL_1.1

2

Plan

Introduction

SPARQL 1.0

SPARQL 1.1 Description

Motivation

Nouveautés

Demonstration

Conclusion

Page 3: SPARQL_1.1

3

INTRODUCTION

Page 4: SPARQL_1.1

4

SPARQL 1.0

SPARQL est composé de 3 parties :

SPARQL Query Language

SPARQL QUERY RESULTS

SPARQL PROTOCOL FOR RDF

Page 5: SPARQL_1.1

5

SPARQL 1.0

LIMITATION

Read Only : interrogation mais pas de mise a jour

Nécessite de passer par des langages externe

Page 6: SPARQL_1.1

6

SPARQL 1.1

DESCRIPTION

SPARQL 1.1 – recommandation récente du W3C

SPARQL 1.1 – en 21-03-2013

SPARQL 1.1 – interroger des banques de triplets

RDF

Page 7: SPARQL_1.1

7

SPARQL 1.1

NOUVEAUTÉS SPARQL 1.1 QUERY

Projection (project Exption)

Agrégation (Aggregates)

Requetés imbriquées (Subqueris)

Négation

Chemins (Property-path)

Librairie de fonctions (Function Library)

Page 8: SPARQL_1.1

8

SPARQL 1.1 - PROJECTION

As

Assignation et création de nouvelles valeurs

Utilisable avec les agrégats, fonctions mathématiques

et librairie de fonctions

Page 9: SPARQL_1.1

9

SPARQL 1.1 - PROJECTION

<Person rdf:ID="John">

<age rdf:datatype="&xsd;integer" >37</age>

</Person>

<Person rdf:ID="Mark">

<age rdf:datatype="&xsd;integer" >14</age>

</Person>

<Woman rdf:ID="Flora">

<age rdf:datatype="&xsd;integer" >95</age>

</Woman>

<Man rdf:ID="Lucas">

<age rdf:datatype="&xsd;integer" >12</age>

</Man>

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

SELECT ?name (?x AS ?AGE)

where {

?name humans:age ?x

}

name AGE

John 37

Mark 14

Flora 95

Lucas 12

Gaston 102

William 42

Karl 36

Pierre 71

DATARESULTAT

Page 10: SPARQL_1.1

10

SPARQL 1.1 - AGGREGATION

SPARQL 1.0:

Besoin de passer par un script externe pour les

fonctions agrégats « classiques » et disponibles en SQL

Compter un nombre de résultats

Trouver une valeur moyenne

Prendre une valeur aléatoire

Page 11: SPARQL_1.1

11

SPARQL 1.1:

COUNT

SUM

MIN

MAX

AVG

SAMPLE

ETC …

Combinés avec les projections précédentes

SPARQL 1.1 - AGGREGATION

Page 12: SPARQL_1.1

12

SPARQL 1.1 - AGGREGATION

PREFIX humans:<http://www.inria.fr/2007/09/11/humans#> SELECT (COUNT( ?x) as ?count) WHERE { ?y humans:age ?x }

count

8

COUNT :

Nombre d’éléments associés a une expression

<Person rdf:ID="John">

<age rdf:datatype="&xsd;integer" >37</age>

</Person>

<Person rdf:ID="Mark">

<age rdf:datatype="&xsd;integer" >14</age>

</Person>

<Woman rdf:ID="Flora">

<age rdf:datatype="&xsd;integer" >95</age>

</Woman>

<Man rdf:ID="Lucas">

<age rdf:datatype="&xsd;integer" >12</age>

</Man>

RESULTAT

Page 13: SPARQL_1.1

13

SPARQL 1.1 - AGGREGATION

PREFIX humans:<http://www.inria.fr/2007/09/11/humans#>SELECT (AVG(?x) AS ?moyenne) WHERE { ?y humans:age ?x }

moyenne

52.44

AVG :

moyenne des valeurs associées a une expression

<Person rdf:ID="John">

<age rdf:datatype="&xsd;integer" >37</age>

</Person>

<Person rdf:ID="Mark">

<age rdf:datatype="&xsd;integer" >14</age>

</Person>

<Woman rdf:ID="Flora">

<age rdf:datatype="&xsd;integer" >95</age>

</Woman>

<Man rdf:ID="Lucas">

<age rdf:datatype="&xsd;integer" >12</age>

</Man>

RESULTAT

Page 14: SPARQL_1.1

SPARQL 1.1 - SUBQUIRIES

SPARQL 1.0:

Necessaire de passer par un language extern

SPARQL 1.1:

Il est possible d'imbriquer les requêtes les unes dans les autres.

Mais , il faut faire attention à la portée des variables

Exemple

14

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#> SELECT ?name (?y AS ?Amis) WHERE {

?x humans:name ?name. { SELECT ?y

WHERE {?x humans:hasFriend ?y

} } }

Page 15: SPARQL_1.1

15

SPARQL 1.0:

FILTRE + BOUND

SPARQL 1.1:

MINUS et NOT EXISTS

SPARQL 1.1 - NÉGATION

PREFIX tp: <http://www.inria.fr/2007/09/11/humans#>

SELECT ?x ?y

WHERE {

?x rdf:type tp:Man.

optional {?x tp:hasChild ?y}

FILTRE (!BOUND (?y))

}

Page 16: SPARQL_1.1

16

SPARQL 1.1:

Simplifier la négation en SPARQL 1.1

Identifier les patrons de requête non existants

Supprimer certaines valeurs des résultats (Evaluer le

MINUS et le soustraire des résultats)

SPARQL 1.1 - NÉGATION

Page 17: SPARQL_1.1

17

SPARQL 1.1 - NEGATION

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

SELECT ?name

WHERE {

?name humans:age ?y.

MINUS { ?name humans:age 37

}

}

name

Mark

Flora

Lucas

Gaston

William

Karl

Pierre

<Person rdf:ID="John">

<age rdf:datatype="&xsd;integer" >37</age>

</Person>

<Person rdf:ID="Mark">

<age rdf:datatype="&xsd;integer" >14</age>

</Person>

<Woman rdf:ID="Flora">

<age rdf:datatype="&xsd;integer" >95</age>

</Woman>

<Man rdf:ID="Lucas">

<age rdf:datatype="&xsd;integer" >12</age>

</Man>

RESULTATDATA

Page 18: SPARQL_1.1

18

SPARQL 1.1:

Intégrer les fonctions utilisés par les différents intégrateurs

Utilisés fréquemment mais non standardisés en SPARQL 1.0

En supplément des fonctions habituelles, et de nouvelles

STRLEN : longueur d’une chaine

CONCAT : concatenation

COALESCE : première expression sans erreur

CONTAINS : sous-chaine de caractère

SPARQL 1.1 - FONCTIONS

Page 19: SPARQL_1.1

19

SPARQL 1.1 - FONCTIONS

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

SELECT (CONCAT(?x,?name) AS ?concatination)

WHERE {

?y humans:age ?x

?y humans:name ?name.

}

<Person rdf:ID="John">

<age rdf:datatype="&xsd;integer" >37</age>

</Person>

<Person rdf:ID="Mark">

<age rdf:datatype="&xsd;integer" >14</age>

</Person>

<Woman rdf:ID="Flora">

<age rdf:datatype="&xsd;integer" >95</age>

</Woman>

<Man rdf:ID="Lucas">

<age rdf:datatype="&xsd;integer" >12</age>

</Man>

RESULTAT

DATA concatination

John37

Mark14

Flora95

Lucas12

Gaston102

William42

Karl36

Pierre71

Page 20: SPARQL_1.1

20

SPARQL 1.1:

Un chemin est une voie possible entre deux nœuds dans un

graphe

Ce système est basé sur les expressions régulières.

Exemples

Identifier les amis d’un ami, et les amis de leurs amis,

quelque soit la distance

SPARQL 1.1 - CHEMINS

Page 21: SPARQL_1.1

21

SPARQL 1.1 - CHEMINS

Syntaxe description

IRI une IRI ou un nom préfixé, un chemin de longueur unitaire

^elt chemin inverse (de l'objet au sujet)

elt{,n} entre 0 et n occurrences de elt

elt{n,} n occurrences ou plus de elt

elt{n} exactement n occurrences de elt

elt{n,m} un chemin entre n et m occurrences de elt

elt? un chemin de zéro ou un elt

elt+ un chemin d'une ou plusieurs occurrences de elt

elt* un chemin de zéro ou plusieurs occurrences de elt

elt1|elt2 une voie alternative de elt1 ou elt2 (toutes les possibilités sont

essayées) ;

elt1 / elt2 une séquence de chemin de elt1, suivie par elt2

(elt) un groupe de chemin elt, des crochets de contrôle prioritaire

Page 22: SPARQL_1.1

22

Alternatives

Simplifier l’union :

Triples utilisant un prédicat parmi plusieurs

SPARQL 1.1 - CHEMINS

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

select ?x

where

{

?y (humans:name|humans:age) ?x

}

Page 23: SPARQL_1.1

23

Inverse

Simplifier les requetés bidirectionnelles

Simulation de la symétrie

Exemple

SPARQL 1.1 - CHEMINS

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

select ?x

WHERE {

?x (^humans:age) ?y.

}

y

37

14

95

12

102

42

36

71

Page 24: SPARQL_1.1

24

Séquences

Simplifier les imbrications

A suivi de B, suivi de C …

Exemple

SPARQL 1.1 - CHEMINS

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

SELECT ?y ?x

WHERE {

?y humans:name "Mark"

?y humans:hasFather/ humans:name ?x

}

Page 25: SPARQL_1.1

25

SPARQL 1.0:

Read-only: Interrogation mais pas de mise a jour

Nécessité de passer par des langage externes

SPARQL 1.1:

Deux types d'opérations ont été définis :

les opérations sur les graphes (graph management)

les opérations sur les données au sein de graphes (graph

update)

SPARQL 1.1 - UPDATE

Page 26: SPARQL_1.1

26

SPARQL 1.1 - UPDATE

SPARQL 1.1:

Les opérations possibles sur les graphes sont :

CREATE & DROP

CLEAR & LOAD

Pour les données et les triplets :

INSERT DATA & DELETE DATA

INSERT & DELETE

Page 27: SPARQL_1.1

27

SPARQL 1.1 - UPDATE

SPARQL Update Language Statements

INSERT DATA { triples }

DELETE DATA {triples}

[ DELETE { template } ] [ INSERT { template } ] WHERE {

pattern }

LOAD <uri> [ INTO GRAPH <uri> ]

CLEAR GRAPH <uri>

CREATE [ SILENT ] GRAPH <uri>

DROP [ SILENT ] (GRAPH <uri> | DEFAULT | NAMED | ALL )

Page 28: SPARQL_1.1

28

SPARQL 1.1 - UPDATE Suppression

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

DELETE DATA {<http://www.inria.fr/2007/09/11/humans-instances#John> humans:age 37 }

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

INSERT DATA {<http://www.inria.fr/2007/09/11/humans-instances#John> humans:age 89}

name AGE

John 89

Mark 14

Flora 95

Lucas 12

Gaston 102

William 42

Karl 36

Pierre 71

Insertion

Page 29: SPARQL_1.1

29

SPARQL 1.1 - UPDATE

DELETE / INSERT

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

DELETE

where{

?x humans:age 37}

PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>

INSERT {

?x humans:age 1000 .} where {

? x humans:name "Alice" }

name AGE

John 89

Alice 1000

Flora 95

Lucas 12

Karl 36

Page 30: SPARQL_1.1

30

SPARQL 1.1 - PROTOCOL

Définition

Le protocole SPARQL est un moyen de transmettre des requêtes

et des mises à jour SPARQL des clients aux processeurs SPARQL

Le protocole SPARQL se compose de deux opérations HTTP :

Query opération

Update opération

Page 31: SPARQL_1.1

31

SPARQL 1.1 - PROTOCOL

Terminologies

SPARQL Protocol client

SPARQL Protocol service

SPARQL endpoint

SPARQL Protocol operation

RDF Dataset

Page 32: SPARQL_1.1

32

SPARQL client SPARQL engine

RDF

Store

SPARQL 1.1 - PROTOCOL

Page 33: SPARQL_1.1

33

CONCLUSION

SPARQL permet de découvrir la structure d'une base de données.

Cela servira à l'avenir à des agents (machines) sur le Web qui

pourront ainsi découvrir les données disponibles à travers le Web

pour répondre à des questions complexes.

SPARQL ouvre ainsi les portes au Web des données (Linked

Data), qui permettra à l'homme et à la machine de mieux

interpréter les informations à travers le Web, sans service

intermédiaire.

Page 34: SPARQL_1.1

34

QUESTIONS :

Page 35: SPARQL_1.1

Merci pour votre

attention

^_^35