SlideShare une entreprise Scribd logo
1  sur  99
Télécharger pour lire hors ligne
Web 3.0 Hosting & Factory
Karima Rafes, BorderCloud
02/07/2017
Atelier : SPARQL, avancé
Les bases pour écrire une requête
Karima Rafes
karima.rafes@gmail.com
@Karima_Rafes
http://karimarafes.me
Développeuse Web (des données) depuis 1999
CanalPlus (Canalnumédia), Orange Lab, Globecast, Experte UE, INRIA, etc.
Fondatrice et CEO de BorderCloud depuis 2010
Logiciels-Formations-Conseils
Email : karima.rafes@bordercloud.com
Twitter : @BorderCloudInfo
http://www.bordercloud.com/
Doctorante depuis 2014
Sujet de thèse : Gestion des données de la recherché en utilisant le Web sémantique
3
Nos services
Formations
Conseils
Editeur logiciel
Détails de nos services : http://www.bordercloud.com
4
Nos clients
Depuis 2010, BorderCloud ne vit que pour et grâce à ses clients.
(0% de subventions)
5
Formations
Conduite du changement
Web sémantique et Web des données
– Responsable : comprendre les enjeux
– Architecte de système d’information : savoir mettre en place
– Développeur : savoir interroger les données
– Administrateur de bases de données : savoir tester
l’interopérabilité des solutions
 Points forts : Utilisation d’un outil d’Elearning : TPO
• Aucune base en programmation n’est nécessaire
• Poursuivre les exercices à la maison
• Obtenir un résultat partageable avec ses collègues
6
Conseils
Pour la conception
de nouveaux services
WoT
RDF
Sciences City
Open
Data
Web
Agent
datadata
7
Editeur logiciel / R&D
Plateforme LinkedWiki – U Paris Saclay
TPOnline (3e version) – IAE Amiens, ITESCIA
SPARQLScore – U Paris Sud
Développement de prototypes pour
constituer des bases de connaissances
– SHS : droit canonique, éducation (U-PSud Droit, ENS Cachan)
– Chimie analytique : LipSys², IPS2 (U Paris Sud)
– Science de la vie : LATMOS (IPSL)
8
Centre de formation
215 Rue Jean Jacques Rousseau
92130 Issy les Moulineaux
RER C : à la station "Issy"
T2 : Les Moulineaux ou Jacques-Henri Lartigue
9
Programme
JDEV 2017
Atelier (3h)
SPARQL, initiation (Mardi 9h)
SPARQL, niveau avancé (Mercredi 14h)
Groupe de travail (1h30)
Quelles sont les compétences professionnelles à
développer par les administrateurs de systèmes
d’information dédiés à la gestion des
connaissances ? (Mercredi 17h30)
Référencement des données pour la recherche :
retour d’expériences du Center for Data Science
de l’université Paris-Saclay ? (Jeudi 9h)
10
Outil utilisé
durant le JDEV
Version ouverte à tous :
http://linkedwiki.com
Version de l’université Paris Saclay :
https://io.datascience-paris-saclay.fr
VIDEO
Version pour les TP d’étudiants
http://www.bordercloud.com/TPO.php
Exemple de résultat :
http://tpo.bordercloud.com/K.php?i=38fd050b9ed02069d5bf9716c8338ad8
11
Objectifs
1. Comprendre le Resource Description
Framework (RDF)
– SPARQL est un langage de requêtes pour
interroger des données RDF
2. Savoir lire le format Turtle
– qui nous servira à décrire les exemples de
requêtes SPARQL.
3. Découvrir une ontologie via SPARQL
Les bases de la syntaxe1.
RDFa
JSON-LD
Supports Multiple Graphs
RDF/XML
Turtle
N-Triples
TriG
N-Quads
13
Introduction
Comme en SQL, SPARQL 1.1 offre les
moyens d'écrire et de lire des données à
travers de simples requêtes sans se soucier
des formats divers (XML/Turtle) qui servent
à la maintenance de la base de données.
Cependant, pour interroger la BDD, il est
nécessaire de comprendre comment les
données sont représentées en RDF.
14
Définitions
HTTP
URL, URI et IRI
HTML
XML
Document RDF
Triplet RDF
Graphe RDF
Syntaxe : RDF/XML et RDF/Turtle
15
Définitions
HTTP
HyperText Transfer Protocol
Un protocole pour la gestion et le transfert de documents
dans les systèmes d'information décentralisés.
Définit un certain nombre de méthodes et les actions
attendues que le serveur doit effectuer lors de la réception
de ces méthodes.
Sert à sérialiser des ressources comme un flux d'octets
Par exemple
– une photo d'une personne
– Récupérer des descriptions au sujet des ressources qui ne
peuvent pas être envoyés sur le réseau
– Par exemple. la personne elle-même
16
Définitions
URL, URI et IRI
URL (Uniform Resource Locator)
– Identifie un emplacement sur le Web
– Adresse d'un document qui peut être trouvé à
travers Internet
URI (Uniform Resource Identifier)
– Fournit un moyen plus générique pour
identifier tout ce qui existe dans le monde
IRI (Internationalized Resource Identifier)
– Internationalisation URI
 IRI ⊇ URI ⊇ URL
17
Définitions
HTML
HyperText Markup Language
Un langage de balisage pour la composition et la
présentation des différents types de contenu dans
les pages Web
– Par exemple. texte, images, multimédia
Les documents fournis par HTTP sont généralement
exprimés en HTML
– HTML5
• recommandation actuelle
• balises supplémentaires
• Prolonge le soutien pour le multimédia et le contenu mathématique
18
Définitions
XML
eXtensible Markup Language
Permet la définition stricte de la structure d’une
information à l’aide de balises
– définition des balises avec un document XSD (XML
Schema Definition)
Le modèle RDF peut se représenter à travers
une syntaxe XML. Le modèle RDF peut se
représenter avec d’autres formats
19
Définition
document RDF
Un document structuré en RDF (Resource
Description Framework) est un modèle de
graphe destiné à décrire de façon formelle
les ressources Web et leurs métadonnées,
de façon à permettre le traitement
automatique (par des machines) de telles
descriptions.
Un document structuré en RDF est constitué
d'un ensemble de triplets.
25/05/2015
20
Document RDF
Est un fichier
A une adresse unique sur le Web
Contient des triplets qui forme un graphe
Un Document RDF est un graphe
Ce graphe a pour ID l’adresse du
document RDF sur le Web
On parle de « Dataset » (jeu de données)
21
Cool IRI d’un document RDF
sur le Web sémantique
Un cool IRI est un IRI qui est
lisible et qui reste le même
pour un être humain et la
machine.
Cependant, il faut que le
document soit différent.
Source :
https://www.w3.org/TR/cooluris/
2225/05/2015
# sert dans l’IRI à faire
référence à une sous
partie d’un document
Web
Les redirections permet
de sélectionner le format
adapté du document pour
un humain ou une
machine.
IRI d’un document sur le
Web sémantique
Content negociation
23
Définition
Un triplet RDF
Un triplet RDF est une association :
sujet ─── prédicat ───> objet
Le sujet représente la ressource à décrire ;
Le prédicat représente un type de propriété
applicable à cette ressource ;
L'objet représente une donnée ou une autre
ressource : c'est la valeur de la propriété.
25/05/2015
24
Un triplet RDF
Le sujet d'un triplet peut-être:
un IRI (Internationalized Resource Identifier)
ou un nœud anonyme.
Le prédicat d'un triplet est nécessairement un IRI.
L'objet d'un triplet peut être :
un IRI
ou un nœud anonyme.
ou un littéral
25/05/2015
25
REMARQUE :
Les nœuds anonymes
sont à bannir
Le concept de nœud anonyme semble intéressant
et simplifie sur papier la représentation d'un
document RDF (comme avec le schéma plus bas).
Cependant, ce concept est souvent implémenté de
manière différente dans les logiciels, ce qui
entraîne des problèmes de compatibilité et remet en
question l’interopérabilité des documents RDF.
En attendant que ce problème soit réglé, il faut
éviter d'utiliser des nœuds anonymes et donner
un IRI arbitraire unique.
25/05/2015
26
Définition
graphe RDF
Un graphe RDF, ainsi formé de triplets, est
un multigraphe orienté étiqueté.
Chaque triplet correspond alors à un arc
orienté dont le label est le prédicat, le nœud
source est le sujet et le nœud cible est
l'objet.
sujet ─── prédicat ───> objet
25/05/2015
27
Définition
Les syntaxes RDF
• Les documents RDF peuvent être écrits en différentes
syntaxes, y compris en XML (Extensible Markup
Language).
• Mais RDF en soi n'est pas un dialecte XML.
• Il est possible d'avoir recours à d'autres syntaxes pour
exprimer les triplets. Par exemple avec N3, Turtle, N-
Quads, etc.
 Bien que RDF/XML — sa version XML— ne soit qu'une syntaxe (ou
sérialisation) du modèle, elle est souvent appelée RDF. Un abus de
langage qui désigne à la fois le graphe de triplets et la présentation
XML qui lui est associée.
25/05/2015
28
Syntaxes/formats
pour le modèle RDF
Les syntaxes RDF bien qu’à destination des machines doivent
rester lisible par les humains (en théorie).
Listes des syntaxes possibles
– N-Triples
– Turtle
– N-Quads
– TriG
– RDF/XML
– JSON-LD
– RDFa
 Evolution de 1999 à 2016...
Evolution portée par les développeurs
Turtle
family RDFa
JSON-LD
Supports Multiple
Graphs
RDF/XML
Turtle
N-Triples
TriG
N-Quads
29
Définition
Graphe nommé
(graph named)
Quand une BDD charge un document RDF :
Les triplets sont généralement stockés dans un graphe qui
prend le nom par défaut de l’adresse du fichier sur le Web.
On parle de graphe nommé.
Si la syntaxe RDF du document supporte les multi-graphes,
la BDD chargera les triplets en fonction de leurs graphes.
30
Définition
Syntaxe : RDF/XML
Le format RDF/XML n'est utilisé dans la
logique d'une base de données que comme
un format d'échange entre des bases de
données.
 Format dump
Inconvénient : le format RDF/XML n'est en principe pas
écrit directement par un être humain, car trop verbeux.
Avantage : permet de garantir l’intégrité des données à
condition de définir une grammaire (XSD)
31
Définition
Syntaxe : RDF/Turtle
Turtle (Terse RDF Triple Language)
Syntaxe pour exprimer des informations exprimées
dans un modèle RDF.
Syntaxe similaire à SPARQL.
 Avantage : le format RDF/Turtle est bien moins
verbeux et plus simple à écrire pour les
développeurs.
 Nous utiliserons le format Turtle pour nos
exemples, car le W3C lui-même utilise cette syntaxe
pour ses exemples dans ses recommandations.
32
Ce qu’il faut
savoir faire
Que ce soit du Turtle ou du XML, un document
RDF n'est en principe jamais écrit directement
par l'utilisateur final de la base de données.
 Cependant, les développeurs et les
administrateurs doivent pouvoir lire au
minimum le format Turtle pour lire les
documentations du domaine, définir des tests
d’interopérabilité, des contraintes d’intégrité et
les règles d’inférence.
Lire et écrire en Turtle2.
TURTLE
34
Exemple 1:
Description RDF d'une
personne nommée Eric Miller
• une personne a comme identifiant
http://www.w3.org/People/EM/contact#me
• son nom est Eric Miller,
• son adresse email est em@w3.org,
• il a le titre de Docteur.
35
Exemple 1:
Description RDF d'une
personne nommée Eric Miller
La ressource, est déjà sous forme d'IRI :
"http://www.w3.org/People/EM/contact#me" est
ici le sujet.
– Le sujet ne peut être qu'un IRI.
L'objet est :
"Eric Miller" (avec le prédicat "quel est son nom"),
em@w3.org (avec le prédicat "quel est son email"), et
"Dr." (avec le prédicat "quel est son titre").
36
Exemple 1:
Description RDF d'une
personne nommée Eric Miller
Les prédicats sont aussi des IRIs.
Par exemple, l'IRI pour chaque prédicat :
"quel est son nom" est
http://www.w3.org/2000/10/swap/pim/contact#fullName
"quel est son email" est
http://www.w3.org/2000/10/swap/pim/contact#mailbox
"quel est son titre" est
http://www.w3.org/2000/10/swap/pim/contact#personalTitle
37
De plus, le sujet a le type personne, c'est-à-dire :
L'IRI du prédicat type est
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
L'IRI de la classe Person est
http://www.w3.org/2000/10/swap/pim/contact#Person
Exemple 1:
Description RDF d'une
personne nommée Eric Miller
38
Par conséquent, les "sujet, prédicat, objet" suivants, c'est-à-dire
les triplets RDF suivants peuvent être exprimés:
http://www.w3.org/People/EM/contact#me,
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,
http://www.w3.org/2000/10/swap/pim/contact#Person
http://www.w3.org/People/EM/contact#me,
http://www.w3.org/2000/10/swap/pim/contact#fullName,
"Eric Miller”
Exemple 1:
Description RDF d'une
personne nommée Eric Miller
39
Par conséquent, les "sujet, prédicat, objet" suivants, c'est-à-dire
les triplets RDF suivants peuvent être exprimés:
http://www.w3.org/People/EM/contact#me,
http://www.w3.org/2000/10/swap/pim/contact#personalTitle,
"Dr."
http://www.w3.org/People/EM/contact#me,
http://www.w3.org/2000/10/swap/pim/contact#mailbox,
em@w3.org
Exemple 1:
Description RDF d'une
personne nommée Eric Miller
41
Spectroscopie Raman
Raman Evolution
Li
pilot process 2,27359
longitude
48,7623
latitude
li@u-psud.fr
李
fullname
30/05/1977
bday
Ultimate Instrument
Exercice 1
Ecrire les triplets RDF
qui représentent :
Réponse : exercice 1 : 8 triplets
<RamanEvolution> <lat> 48,7623
<RamanEvolution> <long> 2,27359
<RamanEvolution> <pilot process> <Li>
<RamanEvolution> <item> <Spectroscopie Raman>
<Li> <email> <mailto:li@u-psud.fr>
<Li> <fn> 李
<Li> <bday> 1977-05-30
<video Ultimate Instrument> <about> <RamanEvolution>
43
Types de données
IRIs
Un IRI est utilisé dans un triplet pour faire référence à un
sujet, mais aussi pour l'objet, qui peut être une référence.
IRI ou Internationalized Resource Identifier (en français
« Identificateur de ressource internationalisé ») est un type
d'adresse informatique prenant en compte les divers
alphabets utilisés dans les différentes langues du monde.
Les adresses IRI suivent une norme datant de 1998,
généralisant et internationalisant les adresses URI
(Uniform Resource Identifier), qui sont elles-mêmes un sur-
ensemble des plus connues URL (Uniform Resource
Locator) utilisées pour les adresses Web.
44
Types de données
IRI absolu
Un IRI est absolu quand il se compose :
1.des lettres décrivant le protocole pour atteindre cette
référence (par exemple http pour le protocole Web)
2.suivie de «://»
3.puis du nom de domaine
4.ensuite, chaque nœud du chemin est séparé par « / »
5.pour finir par le nom du document qui contient la
référence
6.si la référence est une sous-partie d'un document, on
ajoute « # » suivi du nom de l'ancre de la référence dans
le document.
45
Types de données
IRI absolu
http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/#section-turtle
L'utilisation des IRI absolus implique une notation très
verbeuse. Pour éviter de réécrire la même racine de certaines
IRI, on peut créer des préfixes et écrire des IRI relatifs.
46
Types de données
IRI relatif
Un IRI est relatif quand il se compose
1.d'un préfixe
2.du séparateur ":"
3.du reste du chemin de l'IRI
Dans un document RDF au format Turtle ou
dans une requête SPARQL, les IRI absolus
sont entourés par '<' et '>' et la définition
des préfixes est écrite au début du document.
47
Types de données
IRI et leurs préfixes
On utilise souvent les mêmes préfixes par
convention. Voici les préfixes les plus courants :
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs: http://www.w3.org/2000/01/rdf-schema#
owl: http://www.w3.org/2002/07/owl#
xsd: http://www.w3.org/2001/XMLSchema#
dc: http://purl.org/dc/elements/1.1/
foaf: http://xmlns.com/foaf/0.1/
Si vous ne connaissez pas un préfixe dans un
exemple, vous pouvez utiliser le site http://prefix.cc
48
Types de données
IRI au format Turtle
Exemple d'un document RDF au format Turtle sans
préfixe qui contient un seul triplet :
<http://book.example/org1>
<http://book.example/affiliates>
<http://book.example/auth1> .
Exemple d'un document RDF au format Turtle avec
préfixe :
prefix doc: <http://book.example/>
doc:org1 doc:affiliates doc:auth1 .
49
Types de données
IRI au format Turtle
On peut également définir un préfixe par défaut si
on n'indique pas le nom du préfixe :
prefix : <http://book.example/>
:org1 :affiliates :auth1 .
Et aussi :
base <http://book.example/>
<org1> <affiliates> <auth1> .
50
Types de données
Littéraux
Un littéral peut être l'objet d'un triplet RDF, mais il ne
peut pas être le sujet, ni le prédicat/propriété.
La syntaxe générale pour les littéraux est composée :
1.d'une chaîne de caractères (entre guillemets, "...", ou
entre des apostrophes, '...‘, entre triple guillemets pour
faire du multiligne """…""")
2. d'une balise optionnelle de langue (language tag)
(introduite par @)
3.d'une balise optionnelle pour décrire le type de
données du littéral. Le type prend la forme d'un IRI
relatif ou absolu (introduit par ^^).
51
Types de données
Littéraux
Par exemple, dans SPARQL et Turtle, on peut
écrire :
"chat" est équivalent à "chat"^^xsd:string
'chat'@fr est équivalent à 'chat'^^xsd:string@fr,
vous remarquerez le tag langue français
"""The librarian said, "War and Peace". """
52
Types de données
Littéraux
Pour les numériques :
1 est équivalent à "1"^^xsd:integer
"1.3"^^xsd:decimal
1.300 est équivalent à "1.300"^^xsd:decimal
1.0e6 est équivalent à "1.0e6"^^xsd:double
Par souci de commodité, les entiers peuvent être
écrits directement (sans les guillemets et sans un
type de données explicite) mais pas les nombre à
virgule.
53
Types de données
Littéraux
Pour les booléens:
true est équivalent à "true"^^xsd:boolean
false est équivalent à "false"^^xsd:boolean
54
Types de données
Littéraux
Il est possible de définir son propre type de
données :
"xyz"^^<http://example.org/ns/userDatatype>
Avec un prefixe appNS :
"06 89 45 64 64"^^appNS:appDataType
Datatype Exemple dans SPARQL Définition
xsd:string "du texte unicode" séquence de caractères
xsd:boolean true
false
true ou false
xsd:integer -1
0
12678967543233
+100000
contient au minimum 18 digits ; le
maximum de digits dépend de la
plateforme
xsd:decimal -1.23
12678967.543233
+100000.00
"210"^^xsd:decimal
contient au minimum 18 digits ; le
maximum de digits dépend de la
plateforme
xsd:double -1E4
1267.43233E12
12.78e-2
"12"^^xsd:double
"-0"^^xsd:double
"0"^^xsd:double
IEEE double précision 64 bits
xsd:date "2002-10-10"^^xsd:date yyyy-mm-dd
xsd:dateTime "2002-10-10T12:00:00Z"^^xsd:dateTime
"2002-10-10T12:00:00-05:00"^^xsd:dateTime
"2002-10-10T12:00:00+01:00"^^xsd:dateTime
standard ISO 8601 (yyyy-mm-
ddThh:mm:ss+01:00 en France)
xsd:time "13:20:00"^^xsd:time standard ISO 8601 (hh:mm:ss)
Liste des types SPARQL les plus utilisés
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
56
Exercice 2
Ecrire correctement ces littéraux :
A plain literal
Bonjour
true
3
4,2
30/05/2011
30/05/2011 12:00
57
Réponse : exercice 2
Plain literals:
“a plain literal”
Plain literal with language tag:
“bonjour”@fr
Typed literal:
“13”^^xsd:integer
Shortcuts:
true  “true”^^xsd:boolean
3  “3”^^xsd:integer
4.2  “4.2”^^xsd:decimal
30/05/2011  “2011-05-30”^^xsd:date
30/05/2011 12:00  “2011-05-30T12:00:00+02:00”^^xsd:datetime
58
Format Turtle 1.1
Pour se rapprocher de SPARQL voici le même
document avec la version 1.1 de la syntaxe :
prefix dt: <http://example.org/datatype#>
prefix ns: <http://example.org/ns#>
prefix : <http://example.org/ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
:x ns:name "cat"@en .
:x ns:color “black”^^dt:color.
:y ns:p "42"^^xsd:integer .
:y ns:p "abc"^^dt:specialDatatype .
59
Format Turtle
la définition des préfixes au début du document
la syntaxe sous forme de triplets
le point à la fin de chaque triplet
Un document RDF/Turtle est très proche de la syntaxe de
SPARQL (et offre des copier-coller bien pratique).
REMARQUE POUR TURTLE 1.0
Vous remarquerez le "@" devant le mot clé "prefix", ainsi que le
point à la fin de chaque définition de préfixes. Ces détails sont
importants, car ils sont source d'erreurs quand on fabrique une
requête SPARQL à partir d'exemple RDF/Turtle 1.0.
60
Format Turtle
les raccourcis
• Le sujet des triplets est souvent le même.
Pour éviter de le répéter, on insère le
caractère ";" devant un prédicat pour
indiquer que le sujet est le même que le
précédent triplet.
• Quand le sujet et le prédicat sont les
mêmes, on peut utiliser une virgule devant
un objet pour éviter de les recopier.
61
Format Turtle
Même exemple avec les raccourcis :
prefix dt: <http://example.org/datatype#>
prefix ns: <http://example.org/ns#>
prefix : <http://example.org/ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
:x ns:name "cat"@en ;
ns:color “black”^^dt:color.
:y ns:p "42"^^xsd:integer , "abc"^^dt:specialDatatype .
wd:Q70906
http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer
Li
daapProp:pilotProcess
2,27359
geo:long
48,7623
geo:lat
li@u-psud.fr
李
vcard:fn
30/05/1977
vcard:bday
dcterms:subject
https://youtu.be/LppehHsKxL4
Exercice 3: écrire en turtle le graphe
suivant en utilisant les raccourcis.
daap:Device
RamanEvolution
Li
63
Exercice 3 : écrire en turtle le
graphe suivant en utilisant les
raccourcis.
Utiliser le service prefix.cc pour retrouver
les prefixes.
http://prefix.cc/
Utiliser le service suivant pour tester votre
document turtle
http://rdfunit.aksw.org/demo/
Réponse : exercice 3 : RDF/Turtle (brut)
Solution avec tag langues au minimum : fr et en
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://daap.eu/wiki/Device> .
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2000/01/rdf-schema#label> "RamanEvolution"@en .
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2000/01/rdf-schema#label> "RamanEvolution"@fr .
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "48.7623"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2003/01/geo/wgs84_pos#long> "2.27359"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://daap.eu/wiki/Property:pilotProcess> <http://daap.eu/wiki/User:Li> .
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://daap.eu/wiki/Property:item> <http://www.wikidata.org/entity/Q70906> .
<http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#email> <mailto:li@u-psud.fr> .
<http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#fn> "李"@zh .
<http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#fn> "Li"@fr .
<http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#bday> "2011-05-30"^^<http://www.w3.org/2001/XMLSchema#date> .
<https://youtu.be/LppehHsKxL4> <http://purl.org/dc/terms/subject> <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> .
Réponse : exercice 3 : RDF/Turtle (lisible)
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX daap: <http://daap.eu/wiki/>
PREFIX daapProp: <http://daap.eu/wiki/Property:>
PREFIX daapUser: <http://daap.eu/wiki/User:>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX dcterms: <http://purl.org/dc/terms/>
<http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer>
rdf:type daap:Device ;
rdfs:label "RamanEvolution"@en ;
rdfs:label "RamanEvolution"@fr ;
geo:lat "48.7623"^^xsd:float ;
geo:long "2.27359"^^xsd:float ;
daapProp:pilotProcess daapUser:Li ;
daapProp:item wd:Q70906 .
daapUser:Li
vcard:email <mailto:li@u-psud.fr> ;
vcard:fn "李"@zh , "Li"@fr ;
vcard:bday "2011-05-30"^^xsd:date .
<https://youtu.be/LppehHsKxL4>
dcterms:subject <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> .
Traduction en SPARQL exemple :
PREFIX daap: <http://daap.eu/wiki/>
PREFIX daapProp: <http://daap.eu/wiki/Property:>
select distinct *
where {
?device
rdf:type daap:Device ;
rdfs:label ?label ;
geo:lat ?lat;
geo:long ?long ;
daapProp:pilotProcess ?pilot ;
daapProp:item ?idWikidata .
?pilot vcard:email ?contactLinkEmail ;
vcard:fn ?contact .
#FILTER (langMatches( lang(?label), "FR" ) &&
# langMatches( lang(?contact), "FR" ))
}
Ecrire sa première requête
SPARQL
3.
La seule chose à préciser pour accéder à un endpoint
SPARQL public. C’est son adresse sur le Web.
Un agent ou un humain peut à partir de cette
information découvrir l’ontologie qu’il utilise et
découvrir les données qu’ils possèdent.
Les exercices suivants vont vous montrer comment un
agent va découvrir l’ontologie d’une base de données
sans connaissances préalables.
69
Exercice 1 :
Afficher tous les triplets
Vous allez vous connecter à :
http://tpo.bordercloud.com/
L’authentification est effectuée via Google
Attendre qu’on active votre compte
Créer une « Linked Page »
Vous allez afficher dans un tableau les 10
premiers triplets contenus dans le endpoint IODS:
https://io.datascience-paris-saclay.fr/sparql
70
71
Graphique
EN CONSTRUCTION…simplification en cours
Choisir son graphique
Lire la documentation de
son graphique
Modifier la taille
Tester
Certains graphiques ont des paramètres
Exercice 1 : correction
Endpoint : IODS
https://io.datascience-paris-saclay.fr/sparql
Query :
SELECT *
WHERE{
?subject ?property ?literalOrObject .
}
LIMIT 10
Graphique :
google.vizualisation.Table
Sauvegarder après chaque exercice !!!
73
Partager : shortlink
1. Ouvrir l’onglet Share
2. Copier le shortlink de votre linked page
dans un nouvelle onglet de votre
navigateur.
3. Avec ce lien, vous pourrez partager votre
travail avec vos collègues.
11/09/2015
Service pour partager vos découvertes
Demo http://tpo.bordercloud.com/K.php?i=1abdb0c0e9df986a715e76bb5ea0977f
75
Exercice 2 : Tableau en sortie
1. Ajouter une nouvelle partie
2. Copier la requête et son endpoint
précédente
3. Remplacer l’étoile par 2 variables de
votre requête
4. Sauvegarder
76
Exercice 2 : correction
SELECT DISTINCT
?property ?literalOrObject
where
{
?subject ?property ?literalOrObject .
}
LIMIT 10
Quel est la différence
avec le précèdent exercice ?
77
Exercice 3 :
Changer le nom d’une
colonne
Vous utiliserez la syntaxe suivante pour changer le
nom des colonnes dans l’entête de la requête.
(?subject AS ?Sujet)
78
Exercice 3 : correction
SELECT DISTINCT
(?subject AS ?Sujet) ?property ?literalOrObject
where
{
?subject ?property ?literalOrObject .
}
LIMIT 10
79
Graphe par défaut
&
graphe nommé
Un endpoint SPARQL est un service HTTP
connecté à une base de données RDF.
Cette base de données contient des triplets
regroupés au sein de graphes.
• Un graphe (sans nom) par défaut existe
• Et zéro ou plusieurs graphes nommés
peuvent exister.
80
Exercice 4 :
Référence à un graphe
Dans l’exercice précédent, votre requête ne
contenait aucune référence à un graphe. Ainsi, la
requête a affiché un résultat à l’aide de tous les
graphes disponibles.
Vous allez recopier la requête suivante où vous
afficherez les triplets d’un seul graphe.
81
Exercice 4 :
Afficher tous les triplets dans
un graphe
SELECT DISTINCT
(?subject AS ?Sujet) ?property ?literalOrObject
where
{
GRAPH <https://io.datascience-paris-saclay.fr>
{
?subject ?property ?literalOrObject .
}
}
LIMIT 10
82
Exercice 5 :
Afficher la liste des graphes
1. Avec la requête précédente, vous allez
remplacer l’IRI du graphe nommé pour le
remplacer par une variable graphe.
2. Afficher uniquement une colonne qui contient
l’IRI des graphes disponibles.
83
Exercice 5 : correction
SELECT DISTINCT ?graph
where
{
GRAPH ?graph
{
?subject ?property ?literalOrObject .
}
}
LIMIT 10
84
Et les ontologies ?
Définitions
Les ontologies du Web sémantique, comme
le vocabulaire RDF, RDFS ou encore OWL
(Web Ontology Language), fournissent des
éléments de base pour la définition
d'ontologies ou de vocabulaires destinés à
structurer des ressources RDF.
85
Et les ontologies ?
Définitions
Les ontologies du Web sémantique, comme
le vocabulaire RDF, RDFS ou encore OWL
(Web Ontology Language), fournissent des
éléments de base pour la définition
d'ontologies ou de vocabulaires destinés à
structurer des ressources RDF.
86
SPARQL est agnostique
aux ontologies
(pour le moment ?)
Une requête SPARQL forme un masque qui
sera ensuite soumis aux données pour obtenir
des résultats.
A priori, SPARQL est agnostique aux
ontologies et l’intégrité des données est
généralement pas ou peu implémentée dans
les bases de données.
 En bref, on peut trouver n’importe quelle
structure. Il faut savoir découvrir les données.
87
En pratique…
ontologie  trouver la doc
Quand on découvre un dataset (des données à
travers un endpoint sparql)
On commence par faire la liste des concepts
SELECT DISTINCT ?type WHERE{
GRAPH <https://io.datascience-paris-saclay.fr>
{
# a est équivalent à rdf type
?o a ?type .
}
}
88
En pratique…
ontologie  trouver la doc
Quand on découvre un dataset
(des données à travers un endpoint sparql)
– On commence par faire la liste des concepts
• Avec le prédicat : ?sujet a ?concept
– Ensuite 2 options :
• Option 1 : on utilise l’IRI du concept pour obtenir la
documentation en ligne correspondant à
l’ontologie observée dans ce dataset.
• Option 2 : on fait la liste des propriétés disponibles
pour ce concept.
89
Exercice 6
Afficher tous les concepts
– Du graphe
https://io.datascience-paris-saclay.fr
– Contenu dans le endpoint
https://io.datascience-paris-saclay.fr/sparql
90
Exercice 6 : correction
SELECT DISTINCT ?type WHERE{
GRAPH <https://io.datascience-paris-saclay.fr>
{
# a est équivalent à rdf type
?o a ?type .
}
}
91
Exercice 7
Afficher les propriétés reliées au concept
Point pour découvrir les IRI des propriétés
Exercice 7 : correction
select distinct ?p where {
GRAPH <https://io.datascience-paris-saclay.fr> {
?o a <http://www.w3.org/2003/01/geo/wgs84_pos#Point> .
?o ?p ?v.
}
}
11/09/2015
93
Exercice 8
Dans la liste des propriétés disponibles,
retrouver la longitude et la latitude.
Afficher dans un tableau la longitude et la
latitude des sujets qui sont de type Point.
94
Exercice 8 : correction
select distinct ?lat ?long
where
{
GRAPH <https://io.datascience-paris-saclay.fr>
{
?o a <http://www.w3.org/2003/01/geo/wgs84_pos#Point> .
?o <….lat> ?lat .
?o <….long> ?long .
}
}
95
Exercice 9
Afficher les propriétés des sujets qui sont
de type Point pour découvrir la propriété
titre et la description des sujets.
Afficher dans un tableau les sujets de type
Point avec les colonnes respectant cet
ordre : la latitude, la longitude, le titre et la
description
Remplacer le graphique Table par
sgvizler.visualization.Map
96
RÉSULTAT
La carte des données
de l’université Paris Saclay
97
Conclusion
Vous savez :
lire un document RDF écrit en turtle
découvrir une ontologie au travers d’un service SPARQL
lire une documentation SPARQL en français
https://fr.wikiversity.org/wiki/SPARQL_Protocol_and_RDF_Query_Language
lire la documentation officielle de SPARQL.
https://www.w3.org/TR/sparql11-query/
 Demandez notre catalogue de formations pour
apprendre à utiliser et déployer le Web des
données dans votre organisation
98
Merci de soutenir
le Web des données
et BorderCloud !
http://www.bordercloud.com
contact@bordercloud.com
Web 3.0 Hosting & Factory

Contenu connexe

Tendances

Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDBMongoDB
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.pptIdriss22
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...
Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...
Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...Gautier Poupeau
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Aligner vos données avec Wikidata grâce à l'outil Open Refine
Aligner vos données avec Wikidata grâce à l'outil Open RefineAligner vos données avec Wikidata grâce à l'outil Open Refine
Aligner vos données avec Wikidata grâce à l'outil Open RefineGautier Poupeau
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 
Présentation des bases de données orientées graphes
Présentation des bases de données orientées graphesPrésentation des bases de données orientées graphes
Présentation des bases de données orientées graphesKoffi Sani
 
Réalisation d'un mashup de données avec DSS de Dataiku - Première partie
Réalisation d'un mashup de données avec DSS de Dataiku - Première partieRéalisation d'un mashup de données avec DSS de Dataiku - Première partie
Réalisation d'un mashup de données avec DSS de Dataiku - Première partieGautier Poupeau
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence Yassine Badri
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Lilia Sfaxi
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQLLilia Sfaxi
 

Tendances (20)

introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDB
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...
Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...
Réalisation d'un mashup de données avec DSS de Dataiku et visualisation avec ...
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Aligner vos données avec Wikidata grâce à l'outil Open Refine
Aligner vos données avec Wikidata grâce à l'outil Open RefineAligner vos données avec Wikidata grâce à l'outil Open Refine
Aligner vos données avec Wikidata grâce à l'outil Open Refine
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
Présentation des bases de données orientées graphes
Présentation des bases de données orientées graphesPrésentation des bases de données orientées graphes
Présentation des bases de données orientées graphes
 
Réalisation d'un mashup de données avec DSS de Dataiku - Première partie
Réalisation d'un mashup de données avec DSS de Dataiku - Première partieRéalisation d'un mashup de données avec DSS de Dataiku - Première partie
Réalisation d'un mashup de données avec DSS de Dataiku - Première partie
 
Cours matlab gpe
Cours matlab gpeCours matlab gpe
Cours matlab gpe
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 

Similaire à Les bases pour utiliser SPARQL

Serveur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementServeur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementLudovic REUS
 
Sudoc, Calames, theses.fr et le Web de données
Sudoc, Calames, theses.fr et le Web de donnéesSudoc, Calames, theses.fr et le Web de données
Sudoc, Calames, theses.fr et le Web de donnéesY. Nicolas
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 
Concevoir un outil d'analyse de réseau en ligne
Concevoir un outil d'analyse de réseau en ligneConcevoir un outil d'analyse de réseau en ligne
Concevoir un outil d'analyse de réseau en ligneNahid Oulmi
 
Mettre nos données en réseau (données de l'IST en France)
Mettre nos données en réseau (données de l'IST en France)Mettre nos données en réseau (données de l'IST en France)
Mettre nos données en réseau (données de l'IST en France)Y. Nicolas
 
Cours XML_2019_final (1).ppt
Cours XML_2019_final (1).pptCours XML_2019_final (1).ppt
Cours XML_2019_final (1).pptManalAg
 
Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"
Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"
Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"ABES
 
Isidore à l'interface de la rencontre des SHS et du Web de données
Isidore à l'interface de la rencontre des SHS et du Web de donnéesIsidore à l'interface de la rencontre des SHS et du Web de données
Isidore à l'interface de la rencontre des SHS et du Web de donnéesAntidot
 
Enrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD Workshop
Enrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD WorkshopEnrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD Workshop
Enrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD WorkshopBenjamin MOREAU
 
Modèles de données et langages de description ouverts 5 - 2021-2022
Modèles de données et langages de description ouverts   5 - 2021-2022Modèles de données et langages de description ouverts   5 - 2021-2022
Modèles de données et langages de description ouverts 5 - 2021-2022François-Xavier Boffy
 
Initiation à SPARQL avec Wikidata
Initiation à SPARQL avec WikidataInitiation à SPARQL avec Wikidata
Initiation à SPARQL avec WikidataBorderCloud
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsMICHRAFY MUSTAFA
 
Les professionnels de l'information face aux défis du Web de données
Les professionnels de l'information face aux défis du Web de donnéesLes professionnels de l'information face aux défis du Web de données
Les professionnels de l'information face aux défis du Web de donnéesGautier Poupeau
 
20121009 10-datalift-camp-paris
20121009 10-datalift-camp-paris20121009 10-datalift-camp-paris
20121009 10-datalift-camp-parisDatalift
 
Du web sémantique à tous les étages
Du web sémantique à tous les étagesDu web sémantique à tous les étages
Du web sémantique à tous les étagesSemWebPro
 
ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)ABES
 
Medialille evolutions catalogage_avril2014_web-donnees
Medialille evolutions catalogage_avril2014_web-donneesMedialille evolutions catalogage_avril2014_web-donnees
Medialille evolutions catalogage_avril2014_web-donneesnonue12
 

Similaire à Les bases pour utiliser SPARQL (20)

Metadonnees et SID
Metadonnees et SIDMetadonnees et SID
Metadonnees et SID
 
Serveur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développementServeur web / Base de donnees Langages de développement
Serveur web / Base de donnees Langages de développement
 
Sudoc, Calames, theses.fr et le Web de données
Sudoc, Calames, theses.fr et le Web de donnéesSudoc, Calames, theses.fr et le Web de données
Sudoc, Calames, theses.fr et le Web de données
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 
___WS_Chap-3__RDF.pdf
___WS_Chap-3__RDF.pdf___WS_Chap-3__RDF.pdf
___WS_Chap-3__RDF.pdf
 
Concevoir un outil d'analyse de réseau en ligne
Concevoir un outil d'analyse de réseau en ligneConcevoir un outil d'analyse de réseau en ligne
Concevoir un outil d'analyse de réseau en ligne
 
Mettre nos données en réseau (données de l'IST en France)
Mettre nos données en réseau (données de l'IST en France)Mettre nos données en réseau (données de l'IST en France)
Mettre nos données en réseau (données de l'IST en France)
 
Cours XML_2019_final (1).ppt
Cours XML_2019_final (1).pptCours XML_2019_final (1).ppt
Cours XML_2019_final (1).ppt
 
Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"
Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"
Jabes 2011 - Ateliers "Sudoc, Calames, thèses.fr et le web de données"
 
Isidore à l'interface de la rencontre des SHS et du Web de données
Isidore à l'interface de la rencontre des SHS et du Web de donnéesIsidore à l'interface de la rencontre des SHS et du Web de données
Isidore à l'interface de la rencontre des SHS et du Web de données
 
Enrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD Workshop
Enrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD WorkshopEnrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD Workshop
Enrichissement de Données RDF Integrées à la Volée - EGC2019 - AWD Workshop
 
Modèles de données et langages de description ouverts 5 - 2021-2022
Modèles de données et langages de description ouverts   5 - 2021-2022Modèles de données et langages de description ouverts   5 - 2021-2022
Modèles de données et langages de description ouverts 5 - 2021-2022
 
Initiation à SPARQL avec Wikidata
Initiation à SPARQL avec WikidataInitiation à SPARQL avec Wikidata
Initiation à SPARQL avec Wikidata
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Web sémantique
Web sémantiqueWeb sémantique
Web sémantique
 
Les professionnels de l'information face aux défis du Web de données
Les professionnels de l'information face aux défis du Web de donnéesLes professionnels de l'information face aux défis du Web de données
Les professionnels de l'information face aux défis du Web de données
 
20121009 10-datalift-camp-paris
20121009 10-datalift-camp-paris20121009 10-datalift-camp-paris
20121009 10-datalift-camp-paris
 
Du web sémantique à tous les étages
Du web sémantique à tous les étagesDu web sémantique à tous les étages
Du web sémantique à tous les étages
 
ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)ABES - intervention congrès Semweb pro (5-11-2014)
ABES - intervention congrès Semweb pro (5-11-2014)
 
Medialille evolutions catalogage_avril2014_web-donnees
Medialille evolutions catalogage_avril2014_web-donneesMedialille evolutions catalogage_avril2014_web-donnees
Medialille evolutions catalogage_avril2014_web-donnees
 

Les bases pour utiliser SPARQL

  • 1. Web 3.0 Hosting & Factory Karima Rafes, BorderCloud 02/07/2017 Atelier : SPARQL, avancé Les bases pour écrire une requête
  • 2. Karima Rafes karima.rafes@gmail.com @Karima_Rafes http://karimarafes.me Développeuse Web (des données) depuis 1999 CanalPlus (Canalnumédia), Orange Lab, Globecast, Experte UE, INRIA, etc. Fondatrice et CEO de BorderCloud depuis 2010 Logiciels-Formations-Conseils Email : karima.rafes@bordercloud.com Twitter : @BorderCloudInfo http://www.bordercloud.com/ Doctorante depuis 2014 Sujet de thèse : Gestion des données de la recherché en utilisant le Web sémantique
  • 3. 3 Nos services Formations Conseils Editeur logiciel Détails de nos services : http://www.bordercloud.com
  • 4. 4 Nos clients Depuis 2010, BorderCloud ne vit que pour et grâce à ses clients. (0% de subventions)
  • 5. 5 Formations Conduite du changement Web sémantique et Web des données – Responsable : comprendre les enjeux – Architecte de système d’information : savoir mettre en place – Développeur : savoir interroger les données – Administrateur de bases de données : savoir tester l’interopérabilité des solutions  Points forts : Utilisation d’un outil d’Elearning : TPO • Aucune base en programmation n’est nécessaire • Poursuivre les exercices à la maison • Obtenir un résultat partageable avec ses collègues
  • 6. 6 Conseils Pour la conception de nouveaux services WoT RDF Sciences City Open Data Web Agent datadata
  • 7. 7 Editeur logiciel / R&D Plateforme LinkedWiki – U Paris Saclay TPOnline (3e version) – IAE Amiens, ITESCIA SPARQLScore – U Paris Sud Développement de prototypes pour constituer des bases de connaissances – SHS : droit canonique, éducation (U-PSud Droit, ENS Cachan) – Chimie analytique : LipSys², IPS2 (U Paris Sud) – Science de la vie : LATMOS (IPSL)
  • 8. 8 Centre de formation 215 Rue Jean Jacques Rousseau 92130 Issy les Moulineaux RER C : à la station "Issy" T2 : Les Moulineaux ou Jacques-Henri Lartigue
  • 9. 9 Programme JDEV 2017 Atelier (3h) SPARQL, initiation (Mardi 9h) SPARQL, niveau avancé (Mercredi 14h) Groupe de travail (1h30) Quelles sont les compétences professionnelles à développer par les administrateurs de systèmes d’information dédiés à la gestion des connaissances ? (Mercredi 17h30) Référencement des données pour la recherche : retour d’expériences du Center for Data Science de l’université Paris-Saclay ? (Jeudi 9h)
  • 10. 10 Outil utilisé durant le JDEV Version ouverte à tous : http://linkedwiki.com Version de l’université Paris Saclay : https://io.datascience-paris-saclay.fr VIDEO Version pour les TP d’étudiants http://www.bordercloud.com/TPO.php Exemple de résultat : http://tpo.bordercloud.com/K.php?i=38fd050b9ed02069d5bf9716c8338ad8
  • 11. 11 Objectifs 1. Comprendre le Resource Description Framework (RDF) – SPARQL est un langage de requêtes pour interroger des données RDF 2. Savoir lire le format Turtle – qui nous servira à décrire les exemples de requêtes SPARQL. 3. Découvrir une ontologie via SPARQL
  • 12. Les bases de la syntaxe1. RDFa JSON-LD Supports Multiple Graphs RDF/XML Turtle N-Triples TriG N-Quads
  • 13. 13 Introduction Comme en SQL, SPARQL 1.1 offre les moyens d'écrire et de lire des données à travers de simples requêtes sans se soucier des formats divers (XML/Turtle) qui servent à la maintenance de la base de données. Cependant, pour interroger la BDD, il est nécessaire de comprendre comment les données sont représentées en RDF.
  • 14. 14 Définitions HTTP URL, URI et IRI HTML XML Document RDF Triplet RDF Graphe RDF Syntaxe : RDF/XML et RDF/Turtle
  • 15. 15 Définitions HTTP HyperText Transfer Protocol Un protocole pour la gestion et le transfert de documents dans les systèmes d'information décentralisés. Définit un certain nombre de méthodes et les actions attendues que le serveur doit effectuer lors de la réception de ces méthodes. Sert à sérialiser des ressources comme un flux d'octets Par exemple – une photo d'une personne – Récupérer des descriptions au sujet des ressources qui ne peuvent pas être envoyés sur le réseau – Par exemple. la personne elle-même
  • 16. 16 Définitions URL, URI et IRI URL (Uniform Resource Locator) – Identifie un emplacement sur le Web – Adresse d'un document qui peut être trouvé à travers Internet URI (Uniform Resource Identifier) – Fournit un moyen plus générique pour identifier tout ce qui existe dans le monde IRI (Internationalized Resource Identifier) – Internationalisation URI  IRI ⊇ URI ⊇ URL
  • 17. 17 Définitions HTML HyperText Markup Language Un langage de balisage pour la composition et la présentation des différents types de contenu dans les pages Web – Par exemple. texte, images, multimédia Les documents fournis par HTTP sont généralement exprimés en HTML – HTML5 • recommandation actuelle • balises supplémentaires • Prolonge le soutien pour le multimédia et le contenu mathématique
  • 18. 18 Définitions XML eXtensible Markup Language Permet la définition stricte de la structure d’une information à l’aide de balises – définition des balises avec un document XSD (XML Schema Definition) Le modèle RDF peut se représenter à travers une syntaxe XML. Le modèle RDF peut se représenter avec d’autres formats
  • 19. 19 Définition document RDF Un document structuré en RDF (Resource Description Framework) est un modèle de graphe destiné à décrire de façon formelle les ressources Web et leurs métadonnées, de façon à permettre le traitement automatique (par des machines) de telles descriptions. Un document structuré en RDF est constitué d'un ensemble de triplets. 25/05/2015
  • 20. 20 Document RDF Est un fichier A une adresse unique sur le Web Contient des triplets qui forme un graphe Un Document RDF est un graphe Ce graphe a pour ID l’adresse du document RDF sur le Web On parle de « Dataset » (jeu de données)
  • 21. 21 Cool IRI d’un document RDF sur le Web sémantique Un cool IRI est un IRI qui est lisible et qui reste le même pour un être humain et la machine. Cependant, il faut que le document soit différent. Source : https://www.w3.org/TR/cooluris/
  • 22. 2225/05/2015 # sert dans l’IRI à faire référence à une sous partie d’un document Web Les redirections permet de sélectionner le format adapté du document pour un humain ou une machine. IRI d’un document sur le Web sémantique Content negociation
  • 23. 23 Définition Un triplet RDF Un triplet RDF est une association : sujet ─── prédicat ───> objet Le sujet représente la ressource à décrire ; Le prédicat représente un type de propriété applicable à cette ressource ; L'objet représente une donnée ou une autre ressource : c'est la valeur de la propriété. 25/05/2015
  • 24. 24 Un triplet RDF Le sujet d'un triplet peut-être: un IRI (Internationalized Resource Identifier) ou un nœud anonyme. Le prédicat d'un triplet est nécessairement un IRI. L'objet d'un triplet peut être : un IRI ou un nœud anonyme. ou un littéral 25/05/2015
  • 25. 25 REMARQUE : Les nœuds anonymes sont à bannir Le concept de nœud anonyme semble intéressant et simplifie sur papier la représentation d'un document RDF (comme avec le schéma plus bas). Cependant, ce concept est souvent implémenté de manière différente dans les logiciels, ce qui entraîne des problèmes de compatibilité et remet en question l’interopérabilité des documents RDF. En attendant que ce problème soit réglé, il faut éviter d'utiliser des nœuds anonymes et donner un IRI arbitraire unique. 25/05/2015
  • 26. 26 Définition graphe RDF Un graphe RDF, ainsi formé de triplets, est un multigraphe orienté étiqueté. Chaque triplet correspond alors à un arc orienté dont le label est le prédicat, le nœud source est le sujet et le nœud cible est l'objet. sujet ─── prédicat ───> objet 25/05/2015
  • 27. 27 Définition Les syntaxes RDF • Les documents RDF peuvent être écrits en différentes syntaxes, y compris en XML (Extensible Markup Language). • Mais RDF en soi n'est pas un dialecte XML. • Il est possible d'avoir recours à d'autres syntaxes pour exprimer les triplets. Par exemple avec N3, Turtle, N- Quads, etc.  Bien que RDF/XML — sa version XML— ne soit qu'une syntaxe (ou sérialisation) du modèle, elle est souvent appelée RDF. Un abus de langage qui désigne à la fois le graphe de triplets et la présentation XML qui lui est associée. 25/05/2015
  • 28. 28 Syntaxes/formats pour le modèle RDF Les syntaxes RDF bien qu’à destination des machines doivent rester lisible par les humains (en théorie). Listes des syntaxes possibles – N-Triples – Turtle – N-Quads – TriG – RDF/XML – JSON-LD – RDFa  Evolution de 1999 à 2016... Evolution portée par les développeurs Turtle family RDFa JSON-LD Supports Multiple Graphs RDF/XML Turtle N-Triples TriG N-Quads
  • 29. 29 Définition Graphe nommé (graph named) Quand une BDD charge un document RDF : Les triplets sont généralement stockés dans un graphe qui prend le nom par défaut de l’adresse du fichier sur le Web. On parle de graphe nommé. Si la syntaxe RDF du document supporte les multi-graphes, la BDD chargera les triplets en fonction de leurs graphes.
  • 30. 30 Définition Syntaxe : RDF/XML Le format RDF/XML n'est utilisé dans la logique d'une base de données que comme un format d'échange entre des bases de données.  Format dump Inconvénient : le format RDF/XML n'est en principe pas écrit directement par un être humain, car trop verbeux. Avantage : permet de garantir l’intégrité des données à condition de définir une grammaire (XSD)
  • 31. 31 Définition Syntaxe : RDF/Turtle Turtle (Terse RDF Triple Language) Syntaxe pour exprimer des informations exprimées dans un modèle RDF. Syntaxe similaire à SPARQL.  Avantage : le format RDF/Turtle est bien moins verbeux et plus simple à écrire pour les développeurs.  Nous utiliserons le format Turtle pour nos exemples, car le W3C lui-même utilise cette syntaxe pour ses exemples dans ses recommandations.
  • 32. 32 Ce qu’il faut savoir faire Que ce soit du Turtle ou du XML, un document RDF n'est en principe jamais écrit directement par l'utilisateur final de la base de données.  Cependant, les développeurs et les administrateurs doivent pouvoir lire au minimum le format Turtle pour lire les documentations du domaine, définir des tests d’interopérabilité, des contraintes d’intégrité et les règles d’inférence.
  • 33. Lire et écrire en Turtle2. TURTLE
  • 34. 34 Exemple 1: Description RDF d'une personne nommée Eric Miller • une personne a comme identifiant http://www.w3.org/People/EM/contact#me • son nom est Eric Miller, • son adresse email est em@w3.org, • il a le titre de Docteur.
  • 35. 35 Exemple 1: Description RDF d'une personne nommée Eric Miller La ressource, est déjà sous forme d'IRI : "http://www.w3.org/People/EM/contact#me" est ici le sujet. – Le sujet ne peut être qu'un IRI. L'objet est : "Eric Miller" (avec le prédicat "quel est son nom"), em@w3.org (avec le prédicat "quel est son email"), et "Dr." (avec le prédicat "quel est son titre").
  • 36. 36 Exemple 1: Description RDF d'une personne nommée Eric Miller Les prédicats sont aussi des IRIs. Par exemple, l'IRI pour chaque prédicat : "quel est son nom" est http://www.w3.org/2000/10/swap/pim/contact#fullName "quel est son email" est http://www.w3.org/2000/10/swap/pim/contact#mailbox "quel est son titre" est http://www.w3.org/2000/10/swap/pim/contact#personalTitle
  • 37. 37 De plus, le sujet a le type personne, c'est-à-dire : L'IRI du prédicat type est http://www.w3.org/1999/02/22-rdf-syntax-ns#type L'IRI de la classe Person est http://www.w3.org/2000/10/swap/pim/contact#Person Exemple 1: Description RDF d'une personne nommée Eric Miller
  • 38. 38 Par conséquent, les "sujet, prédicat, objet" suivants, c'est-à-dire les triplets RDF suivants peuvent être exprimés: http://www.w3.org/People/EM/contact#me, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, http://www.w3.org/2000/10/swap/pim/contact#Person http://www.w3.org/People/EM/contact#me, http://www.w3.org/2000/10/swap/pim/contact#fullName, "Eric Miller” Exemple 1: Description RDF d'une personne nommée Eric Miller
  • 39. 39 Par conséquent, les "sujet, prédicat, objet" suivants, c'est-à-dire les triplets RDF suivants peuvent être exprimés: http://www.w3.org/People/EM/contact#me, http://www.w3.org/2000/10/swap/pim/contact#personalTitle, "Dr." http://www.w3.org/People/EM/contact#me, http://www.w3.org/2000/10/swap/pim/contact#mailbox, em@w3.org Exemple 1: Description RDF d'une personne nommée Eric Miller
  • 40.
  • 41. 41 Spectroscopie Raman Raman Evolution Li pilot process 2,27359 longitude 48,7623 latitude li@u-psud.fr 李 fullname 30/05/1977 bday Ultimate Instrument Exercice 1 Ecrire les triplets RDF qui représentent :
  • 42. Réponse : exercice 1 : 8 triplets <RamanEvolution> <lat> 48,7623 <RamanEvolution> <long> 2,27359 <RamanEvolution> <pilot process> <Li> <RamanEvolution> <item> <Spectroscopie Raman> <Li> <email> <mailto:li@u-psud.fr> <Li> <fn> 李 <Li> <bday> 1977-05-30 <video Ultimate Instrument> <about> <RamanEvolution>
  • 43. 43 Types de données IRIs Un IRI est utilisé dans un triplet pour faire référence à un sujet, mais aussi pour l'objet, qui peut être une référence. IRI ou Internationalized Resource Identifier (en français « Identificateur de ressource internationalisé ») est un type d'adresse informatique prenant en compte les divers alphabets utilisés dans les différentes langues du monde. Les adresses IRI suivent une norme datant de 1998, généralisant et internationalisant les adresses URI (Uniform Resource Identifier), qui sont elles-mêmes un sur- ensemble des plus connues URL (Uniform Resource Locator) utilisées pour les adresses Web.
  • 44. 44 Types de données IRI absolu Un IRI est absolu quand il se compose : 1.des lettres décrivant le protocole pour atteindre cette référence (par exemple http pour le protocole Web) 2.suivie de «://» 3.puis du nom de domaine 4.ensuite, chaque nœud du chemin est séparé par « / » 5.pour finir par le nom du document qui contient la référence 6.si la référence est une sous-partie d'un document, on ajoute « # » suivi du nom de l'ancre de la référence dans le document.
  • 45. 45 Types de données IRI absolu http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/#section-turtle L'utilisation des IRI absolus implique une notation très verbeuse. Pour éviter de réécrire la même racine de certaines IRI, on peut créer des préfixes et écrire des IRI relatifs.
  • 46. 46 Types de données IRI relatif Un IRI est relatif quand il se compose 1.d'un préfixe 2.du séparateur ":" 3.du reste du chemin de l'IRI Dans un document RDF au format Turtle ou dans une requête SPARQL, les IRI absolus sont entourés par '<' et '>' et la définition des préfixes est écrite au début du document.
  • 47. 47 Types de données IRI et leurs préfixes On utilise souvent les mêmes préfixes par convention. Voici les préfixes les plus courants : rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# owl: http://www.w3.org/2002/07/owl# xsd: http://www.w3.org/2001/XMLSchema# dc: http://purl.org/dc/elements/1.1/ foaf: http://xmlns.com/foaf/0.1/ Si vous ne connaissez pas un préfixe dans un exemple, vous pouvez utiliser le site http://prefix.cc
  • 48. 48 Types de données IRI au format Turtle Exemple d'un document RDF au format Turtle sans préfixe qui contient un seul triplet : <http://book.example/org1> <http://book.example/affiliates> <http://book.example/auth1> . Exemple d'un document RDF au format Turtle avec préfixe : prefix doc: <http://book.example/> doc:org1 doc:affiliates doc:auth1 .
  • 49. 49 Types de données IRI au format Turtle On peut également définir un préfixe par défaut si on n'indique pas le nom du préfixe : prefix : <http://book.example/> :org1 :affiliates :auth1 . Et aussi : base <http://book.example/> <org1> <affiliates> <auth1> .
  • 50. 50 Types de données Littéraux Un littéral peut être l'objet d'un triplet RDF, mais il ne peut pas être le sujet, ni le prédicat/propriété. La syntaxe générale pour les littéraux est composée : 1.d'une chaîne de caractères (entre guillemets, "...", ou entre des apostrophes, '...‘, entre triple guillemets pour faire du multiligne """…""") 2. d'une balise optionnelle de langue (language tag) (introduite par @) 3.d'une balise optionnelle pour décrire le type de données du littéral. Le type prend la forme d'un IRI relatif ou absolu (introduit par ^^).
  • 51. 51 Types de données Littéraux Par exemple, dans SPARQL et Turtle, on peut écrire : "chat" est équivalent à "chat"^^xsd:string 'chat'@fr est équivalent à 'chat'^^xsd:string@fr, vous remarquerez le tag langue français """The librarian said, "War and Peace". """
  • 52. 52 Types de données Littéraux Pour les numériques : 1 est équivalent à "1"^^xsd:integer "1.3"^^xsd:decimal 1.300 est équivalent à "1.300"^^xsd:decimal 1.0e6 est équivalent à "1.0e6"^^xsd:double Par souci de commodité, les entiers peuvent être écrits directement (sans les guillemets et sans un type de données explicite) mais pas les nombre à virgule.
  • 53. 53 Types de données Littéraux Pour les booléens: true est équivalent à "true"^^xsd:boolean false est équivalent à "false"^^xsd:boolean
  • 54. 54 Types de données Littéraux Il est possible de définir son propre type de données : "xyz"^^<http://example.org/ns/userDatatype> Avec un prefixe appNS : "06 89 45 64 64"^^appNS:appDataType
  • 55. Datatype Exemple dans SPARQL Définition xsd:string "du texte unicode" séquence de caractères xsd:boolean true false true ou false xsd:integer -1 0 12678967543233 +100000 contient au minimum 18 digits ; le maximum de digits dépend de la plateforme xsd:decimal -1.23 12678967.543233 +100000.00 "210"^^xsd:decimal contient au minimum 18 digits ; le maximum de digits dépend de la plateforme xsd:double -1E4 1267.43233E12 12.78e-2 "12"^^xsd:double "-0"^^xsd:double "0"^^xsd:double IEEE double précision 64 bits xsd:date "2002-10-10"^^xsd:date yyyy-mm-dd xsd:dateTime "2002-10-10T12:00:00Z"^^xsd:dateTime "2002-10-10T12:00:00-05:00"^^xsd:dateTime "2002-10-10T12:00:00+01:00"^^xsd:dateTime standard ISO 8601 (yyyy-mm- ddThh:mm:ss+01:00 en France) xsd:time "13:20:00"^^xsd:time standard ISO 8601 (hh:mm:ss) Liste des types SPARQL les plus utilisés PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
  • 56. 56 Exercice 2 Ecrire correctement ces littéraux : A plain literal Bonjour true 3 4,2 30/05/2011 30/05/2011 12:00
  • 57. 57 Réponse : exercice 2 Plain literals: “a plain literal” Plain literal with language tag: “bonjour”@fr Typed literal: “13”^^xsd:integer Shortcuts: true  “true”^^xsd:boolean 3  “3”^^xsd:integer 4.2  “4.2”^^xsd:decimal 30/05/2011  “2011-05-30”^^xsd:date 30/05/2011 12:00  “2011-05-30T12:00:00+02:00”^^xsd:datetime
  • 58. 58 Format Turtle 1.1 Pour se rapprocher de SPARQL voici le même document avec la version 1.1 de la syntaxe : prefix dt: <http://example.org/datatype#> prefix ns: <http://example.org/ns#> prefix : <http://example.org/ns#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> :x ns:name "cat"@en . :x ns:color “black”^^dt:color. :y ns:p "42"^^xsd:integer . :y ns:p "abc"^^dt:specialDatatype .
  • 59. 59 Format Turtle la définition des préfixes au début du document la syntaxe sous forme de triplets le point à la fin de chaque triplet Un document RDF/Turtle est très proche de la syntaxe de SPARQL (et offre des copier-coller bien pratique). REMARQUE POUR TURTLE 1.0 Vous remarquerez le "@" devant le mot clé "prefix", ainsi que le point à la fin de chaque définition de préfixes. Ces détails sont importants, car ils sont source d'erreurs quand on fabrique une requête SPARQL à partir d'exemple RDF/Turtle 1.0.
  • 60. 60 Format Turtle les raccourcis • Le sujet des triplets est souvent le même. Pour éviter de le répéter, on insère le caractère ";" devant un prédicat pour indiquer que le sujet est le même que le précédent triplet. • Quand le sujet et le prédicat sont les mêmes, on peut utiliser une virgule devant un objet pour éviter de les recopier.
  • 61. 61 Format Turtle Même exemple avec les raccourcis : prefix dt: <http://example.org/datatype#> prefix ns: <http://example.org/ns#> prefix : <http://example.org/ns#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> :x ns:name "cat"@en ; ns:color “black”^^dt:color. :y ns:p "42"^^xsd:integer , "abc"^^dt:specialDatatype .
  • 63. 63 Exercice 3 : écrire en turtle le graphe suivant en utilisant les raccourcis. Utiliser le service prefix.cc pour retrouver les prefixes. http://prefix.cc/ Utiliser le service suivant pour tester votre document turtle http://rdfunit.aksw.org/demo/
  • 64. Réponse : exercice 3 : RDF/Turtle (brut) Solution avec tag langues au minimum : fr et en <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://daap.eu/wiki/Device> . <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2000/01/rdf-schema#label> "RamanEvolution"@en . <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2000/01/rdf-schema#label> "RamanEvolution"@fr . <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "48.7623"^^<http://www.w3.org/2001/XMLSchema#float> . <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://www.w3.org/2003/01/geo/wgs84_pos#long> "2.27359"^^<http://www.w3.org/2001/XMLSchema#float> . <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://daap.eu/wiki/Property:pilotProcess> <http://daap.eu/wiki/User:Li> . <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> <http://daap.eu/wiki/Property:item> <http://www.wikidata.org/entity/Q70906> . <http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#email> <mailto:li@u-psud.fr> . <http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#fn> "李"@zh . <http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#fn> "Li"@fr . <http://daap.eu/wiki/User:daapUser:Li> <http://www.w3.org/2006/vcard/ns#bday> "2011-05-30"^^<http://www.w3.org/2001/XMLSchema#date> . <https://youtu.be/LppehHsKxL4> <http://purl.org/dc/terms/subject> <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> .
  • 65. Réponse : exercice 3 : RDF/Turtle (lisible) PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX daap: <http://daap.eu/wiki/> PREFIX daapProp: <http://daap.eu/wiki/Property:> PREFIX daapUser: <http://daap.eu/wiki/User:> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX vcard: <http://www.w3.org/2006/vcard/ns#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX wd: <http://www.wikidata.org/entity/> PREFIX dcterms: <http://purl.org/dc/terms/> <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> rdf:type daap:Device ; rdfs:label "RamanEvolution"@en ; rdfs:label "RamanEvolution"@fr ; geo:lat "48.7623"^^xsd:float ; geo:long "2.27359"^^xsd:float ; daapProp:pilotProcess daapUser:Li ; daapProp:item wd:Q70906 . daapUser:Li vcard:email <mailto:li@u-psud.fr> ; vcard:fn "李"@zh , "Li"@fr ; vcard:bday "2011-05-30"^^xsd:date . <https://youtu.be/LppehHsKxL4> dcterms:subject <http://daap.eu/wiki/Lip(Sys)2/RamanEvolution_Spectrometer> .
  • 66. Traduction en SPARQL exemple : PREFIX daap: <http://daap.eu/wiki/> PREFIX daapProp: <http://daap.eu/wiki/Property:> select distinct * where { ?device rdf:type daap:Device ; rdfs:label ?label ; geo:lat ?lat; geo:long ?long ; daapProp:pilotProcess ?pilot ; daapProp:item ?idWikidata . ?pilot vcard:email ?contactLinkEmail ; vcard:fn ?contact . #FILTER (langMatches( lang(?label), "FR" ) && # langMatches( lang(?contact), "FR" )) }
  • 67. Ecrire sa première requête SPARQL 3.
  • 68. La seule chose à préciser pour accéder à un endpoint SPARQL public. C’est son adresse sur le Web. Un agent ou un humain peut à partir de cette information découvrir l’ontologie qu’il utilise et découvrir les données qu’ils possèdent. Les exercices suivants vont vous montrer comment un agent va découvrir l’ontologie d’une base de données sans connaissances préalables.
  • 69. 69 Exercice 1 : Afficher tous les triplets Vous allez vous connecter à : http://tpo.bordercloud.com/ L’authentification est effectuée via Google Attendre qu’on active votre compte Créer une « Linked Page » Vous allez afficher dans un tableau les 10 premiers triplets contenus dans le endpoint IODS: https://io.datascience-paris-saclay.fr/sparql
  • 70. 70
  • 71. 71 Graphique EN CONSTRUCTION…simplification en cours Choisir son graphique Lire la documentation de son graphique Modifier la taille Tester Certains graphiques ont des paramètres
  • 72. Exercice 1 : correction Endpoint : IODS https://io.datascience-paris-saclay.fr/sparql Query : SELECT * WHERE{ ?subject ?property ?literalOrObject . } LIMIT 10 Graphique : google.vizualisation.Table Sauvegarder après chaque exercice !!!
  • 73. 73 Partager : shortlink 1. Ouvrir l’onglet Share 2. Copier le shortlink de votre linked page dans un nouvelle onglet de votre navigateur. 3. Avec ce lien, vous pourrez partager votre travail avec vos collègues.
  • 74. 11/09/2015 Service pour partager vos découvertes Demo http://tpo.bordercloud.com/K.php?i=1abdb0c0e9df986a715e76bb5ea0977f
  • 75. 75 Exercice 2 : Tableau en sortie 1. Ajouter une nouvelle partie 2. Copier la requête et son endpoint précédente 3. Remplacer l’étoile par 2 variables de votre requête 4. Sauvegarder
  • 76. 76 Exercice 2 : correction SELECT DISTINCT ?property ?literalOrObject where { ?subject ?property ?literalOrObject . } LIMIT 10 Quel est la différence avec le précèdent exercice ?
  • 77. 77 Exercice 3 : Changer le nom d’une colonne Vous utiliserez la syntaxe suivante pour changer le nom des colonnes dans l’entête de la requête. (?subject AS ?Sujet)
  • 78. 78 Exercice 3 : correction SELECT DISTINCT (?subject AS ?Sujet) ?property ?literalOrObject where { ?subject ?property ?literalOrObject . } LIMIT 10
  • 79. 79 Graphe par défaut & graphe nommé Un endpoint SPARQL est un service HTTP connecté à une base de données RDF. Cette base de données contient des triplets regroupés au sein de graphes. • Un graphe (sans nom) par défaut existe • Et zéro ou plusieurs graphes nommés peuvent exister.
  • 80. 80 Exercice 4 : Référence à un graphe Dans l’exercice précédent, votre requête ne contenait aucune référence à un graphe. Ainsi, la requête a affiché un résultat à l’aide de tous les graphes disponibles. Vous allez recopier la requête suivante où vous afficherez les triplets d’un seul graphe.
  • 81. 81 Exercice 4 : Afficher tous les triplets dans un graphe SELECT DISTINCT (?subject AS ?Sujet) ?property ?literalOrObject where { GRAPH <https://io.datascience-paris-saclay.fr> { ?subject ?property ?literalOrObject . } } LIMIT 10
  • 82. 82 Exercice 5 : Afficher la liste des graphes 1. Avec la requête précédente, vous allez remplacer l’IRI du graphe nommé pour le remplacer par une variable graphe. 2. Afficher uniquement une colonne qui contient l’IRI des graphes disponibles.
  • 83. 83 Exercice 5 : correction SELECT DISTINCT ?graph where { GRAPH ?graph { ?subject ?property ?literalOrObject . } } LIMIT 10
  • 84. 84 Et les ontologies ? Définitions Les ontologies du Web sémantique, comme le vocabulaire RDF, RDFS ou encore OWL (Web Ontology Language), fournissent des éléments de base pour la définition d'ontologies ou de vocabulaires destinés à structurer des ressources RDF.
  • 85. 85 Et les ontologies ? Définitions Les ontologies du Web sémantique, comme le vocabulaire RDF, RDFS ou encore OWL (Web Ontology Language), fournissent des éléments de base pour la définition d'ontologies ou de vocabulaires destinés à structurer des ressources RDF.
  • 86. 86 SPARQL est agnostique aux ontologies (pour le moment ?) Une requête SPARQL forme un masque qui sera ensuite soumis aux données pour obtenir des résultats. A priori, SPARQL est agnostique aux ontologies et l’intégrité des données est généralement pas ou peu implémentée dans les bases de données.  En bref, on peut trouver n’importe quelle structure. Il faut savoir découvrir les données.
  • 87. 87 En pratique… ontologie  trouver la doc Quand on découvre un dataset (des données à travers un endpoint sparql) On commence par faire la liste des concepts SELECT DISTINCT ?type WHERE{ GRAPH <https://io.datascience-paris-saclay.fr> { # a est équivalent à rdf type ?o a ?type . } }
  • 88. 88 En pratique… ontologie  trouver la doc Quand on découvre un dataset (des données à travers un endpoint sparql) – On commence par faire la liste des concepts • Avec le prédicat : ?sujet a ?concept – Ensuite 2 options : • Option 1 : on utilise l’IRI du concept pour obtenir la documentation en ligne correspondant à l’ontologie observée dans ce dataset. • Option 2 : on fait la liste des propriétés disponibles pour ce concept.
  • 89. 89 Exercice 6 Afficher tous les concepts – Du graphe https://io.datascience-paris-saclay.fr – Contenu dans le endpoint https://io.datascience-paris-saclay.fr/sparql
  • 90. 90 Exercice 6 : correction SELECT DISTINCT ?type WHERE{ GRAPH <https://io.datascience-paris-saclay.fr> { # a est équivalent à rdf type ?o a ?type . } }
  • 91. 91 Exercice 7 Afficher les propriétés reliées au concept Point pour découvrir les IRI des propriétés
  • 92. Exercice 7 : correction select distinct ?p where { GRAPH <https://io.datascience-paris-saclay.fr> { ?o a <http://www.w3.org/2003/01/geo/wgs84_pos#Point> . ?o ?p ?v. } } 11/09/2015
  • 93. 93 Exercice 8 Dans la liste des propriétés disponibles, retrouver la longitude et la latitude. Afficher dans un tableau la longitude et la latitude des sujets qui sont de type Point.
  • 94. 94 Exercice 8 : correction select distinct ?lat ?long where { GRAPH <https://io.datascience-paris-saclay.fr> { ?o a <http://www.w3.org/2003/01/geo/wgs84_pos#Point> . ?o <….lat> ?lat . ?o <….long> ?long . } }
  • 95. 95 Exercice 9 Afficher les propriétés des sujets qui sont de type Point pour découvrir la propriété titre et la description des sujets. Afficher dans un tableau les sujets de type Point avec les colonnes respectant cet ordre : la latitude, la longitude, le titre et la description Remplacer le graphique Table par sgvizler.visualization.Map
  • 96. 96 RÉSULTAT La carte des données de l’université Paris Saclay
  • 97. 97 Conclusion Vous savez : lire un document RDF écrit en turtle découvrir une ontologie au travers d’un service SPARQL lire une documentation SPARQL en français https://fr.wikiversity.org/wiki/SPARQL_Protocol_and_RDF_Query_Language lire la documentation officielle de SPARQL. https://www.w3.org/TR/sparql11-query/  Demandez notre catalogue de formations pour apprendre à utiliser et déployer le Web des données dans votre organisation
  • 98. 98 Merci de soutenir le Web des données et BorderCloud !