Post on 16-Jul-2015
Introduction au Web Sémantique
Web des données
PhD Lynda Temaltemal.l@sfeir.comChez sfeir depuis 10 février 2014
Remerciement : Cette présentation à été réalisée à partir d’un ensemble de présentations de Fabien Gandon, chercheur à L’inria et membre du W3C. Merci à lui. 1
Succès d’Internet
❏ Documents❏ Images❏ Vidéos❏ Applications ❏ Services❏ Vie Sociale❏ Business
Cependant ….
2
Qui peut exploiter le Web actuel ?
● Les humains ?
● Les moteurs de recherche ?
Problème du web actuel
3
Ce que voit un humain
4
Pour la machine
5
Quelle est la différence ?
● L’humain peut identifier et interpréter
● La machine non !
6
Bémol !
La machine stocke des informations qu’elle
ne peut pas interpréter.
7
Le Web Sémantique mentionné par Tim Berners-Lee en 1994 à WWW
Passer du web des liens entre des pages peu compréhensibles par les machines à ...
un web de choses reliées à la réalité et compréhensibles par les machines
8
Ce qu’il faut faire :
9
Identifier / Expliciter
In front of
behind In front of
Comment ?
Utiliser une
ontology partagée
Que nous pouvons comprendre
Que la machine peut interpréter
10
Définition de l’ontologie
11
Concept / termes / intention / extension
12
Relation de subsemption : C is a B
Voiture
Voiture2 roues motrices
Voiture4 roues motrices
VoitureEssence
VoitureHybride
Toyota Yaris hybride
Personne
Adulte
VoitureElectrique
part of
is a
is ais a
is a
is a
is ais a
MarieToyota Yaris
hybridemate xyz
appartient is a
is a
Moteur
is a
13
Moyende transport
is a
Femme
is a
is a
Relation de mérologie (part of)
14
Foundational Model of Anatomy
15
16
Vocabulaire contrôlé
Glossaire
Thésaurus
Taxonomy
Ontologie
Sémantique faible
Sémantique forte
Interopérabilité sémantique
Interopérabilité syntaxique
Niveaux d’interopérabilités
Logique de description
subsemption(is a)
liens terminologiques
axioms
Comment faire concrètement ?
17
Les Technologies du Web Sémantique
Représentation
RequêteRaisonnement
Confiance
18
Couche de représentation
19
RDF
Resource: entreprises, livres, personnes,
perceuses, média, services, idées…Description: attributs, qualités, et
des relations entre les ressources
Framework: modèle, langages et
syntaxes pour ces descriptions
20
RDF : un modèle de triplets
( sujet , predicat, objet )
Structure d’une phrase simple
( sujet , verbe, complément )
21
Contenu non interprétable par la machine
Timothy John Berners-Lee,
né le 8 juin 1955 à Londres.
Il est le principal inventeur du World Wide Web.
Il préside le World Wide Web Consortium (W3C),
organisme qu'il a fondé.
Auteur du livre a Framework for Web Science.
22
Identification : Ressources & Relations
Timothy John Berners-Lee,
né le 8 juin 1955 à Londres.
Il est le principal inventeur du World Wide Web.
Il préside le World Wide Web Consortium (W3C),
organisme qu'il a fondé.
Auteur du livre a Framework for Web Science.
23
Phrases simples
TimBL has date of birth 1955-06-08.
TimBL has place of birth London.
TimBL is inventor of WWW.
TimBL is director of W3C.
TimBL is creator of W3C.
TimBL is author of Frame work for Web Sience
sujet verbe complément24
Triplets RDF : interprétables par la machine
(TimBL, dateOfBirth, 1955-06-08)
(TimBL, placeOfBirth, London)
(TimBL, isInventorOf, WWW)
(TimBL, isDirectorOf, W3C)
(TimBL, isCreatorOf, W3C)
(TimBL, isAuthorOf, Web_Science)
(Sujet, predicat, Objet)25
Les triplets RDF peuvent être
représentés par un graphe orienté
(sommet, arc, sommet)
26
TimBL
W3C
1955-06-08
dateOfBirth
isDirectorOF
27
URI : Uniforme Resource Identifier
28
dbpedia:Tim_Bernes-Lee
http://www.w3.org
1955-06-08(xsd:date)
http://dbpedia.org/property#dateOfBirth
http://dbpedia.org/property#founder
1955-06-08(xsd:date)
29
dbpedia:London
dbpedia:England
dbpedia:Tim_Bernes-Le
http://dbpedia.org/property#placeOfBirth
http://dbpedia.org/property#isPartOf
dbpedia:London
30
dbpedia:London
dbpedia:England
dbpedia:Tim_Bernes-Le
http://dbpedia.org/property#placeOfBirth
http://dbpedia.org/property#isPartOf
dbpedia:London
http
://db
pedi
a.or
g/pe
ople
http
://db
pedi
a.or
g/pa
lce
31
RDF/XML
<rdf:RDF
xmlns:rdf=”http://www.W3.org/1999/02/22-rdf-syntaxe-ns#”
xmlns:dbpedia="http://dbpedia.org/property#"
Xmlns:xsd=”http://www.w3.org/2001/XMLShema#”
Xmlns:dc=”http://purl.org/dc/terms”>
<rdf:Description rdf:about="http://dbpedia.org/resource/Tim_Berners-Lee
<dc:creator rdf:resource=”http://www.w3.org”/>
<dbpedia:dateOfBirth>1955-06-08</dbpedia:dateOfBirth>
<dbpedia:placeOfBirth rdf:resource=dbpedia:London/>
</rdf:Description>
</rdf:RDF>
32
N-Triplet
<http://dbpedia.org/resource/Tim_Berners-Lee>
<http://purl.org/dc/terms/creator>
<http://www.w3.org>
<http://dbpedia.org/resource/Tim_Berners-Lee>
<http://dbpedia.org/property/dateOfBirth>
“1955-06-08”^^<http://www.w3.org/2001/XMLSchema#date>
<http://dbpedia.org/resource/Tim_Berners-Lee>
<http://dbpedia.org/property/placeOfBirth>
<http://dbpedia.org/resource/London>
<http://dbpedia.org/resource/London>
<http://dbpedia.org/property/isPartOf>
<http://dbpedia.org/resource/England>
33
Turtel@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix xsd: <http://www.w3.org/2001/XMLShema#>.
@prefix dc: <http://purl.org/dc/terms>
@prefix dbpedia: <http://dbpedia.org/resource#>
@prefix dbpprop <http://dbpedia.org/property#>
dbpedia:Tim_Berners-Lee dc:creator <http://www.w3.org/> ;
dc:author dbpedia:Web_Science;
dbpprop:dateOfBirth “1955-06-08”^^xsd:date;
dbpprop:placeOfBirth dbpedia:London.
dbpedia:London dbpprop:isPartOf dbpedia:England.
34
RDFa : exprimer du RDF dans du HTML
<!DOCTYPE html PUBLIC "~//w3c//dtd xhtml+rdfa 1.0//EN"><html xmlns:foaf="http://xmlns.com/foaf/01/" xmlns:dc="http://purl.org/dc/terms" xmlns=http://www.W3.org/1999/xhtml">
<head><title> Description de TimBL en RDFa + html</title></head>
<body>
<div typeof="foaf:person" about="http://www.W3.org/People/Berners-Lee/card#i">
Le <span rel="dc:creator" href="http://www.W3.org">créateur du W3C</span>
a pour nom <span property="foaf:name">Thimothy Berners-Lee</span>
et pout surnom <span property="foaf:nick">Timbl</span>
</div>
</body>
</html>
35
RDF fournit une primitive pour typer les ressources.
(TimBL, rdf:type, Person )
(TimBL, rdf:type, Man )
(Web_Science, rdf:type, Book )
Les Primitives RDF
36
RDF fournit les primitives pour construire
des containers et des collections pour
lister des ressources
37
Les Primitives RDF
Les containers RDF sont ouverts,
contiennent des ressources ou des littéraux,
qui peuvent être dupliqués.
rdf:Bag → pour des ressources non ordonnéesrdf:Seq → pour des ressources ordonnéesrdf:Alt → pour les alternatives
38
Les Primitives RDF
Les Collections RDF sont fermées,
contiennent des ressources ou des littéraux,
peuvent être dupliqués.
rdf:List → pour commencer la listerdf:first et rdf:rest → pour listerrdf:nil → pour fermer la liste
39
Les Primitives RDF
(Web_Science, hasChapter, _:a)
(_:a, rdf:type, rdf:list)
(_:a, rdf:first, chap1)
(_:a, rdf:rest, _:b)
(_:b, rdf:first, chap2)
(_:b, rdf:rest, _:c)
(_:c, rdf:first, chap3)
(_:c, rdf:rest, rdf:nil)40
RDF fournit une primitive pour la réification de
triplets RDF.
rdfs:Statement
rdfs:subject, rdfs:predicat, rdfs:object
41
Les Primitives RDF
Exemple de Réification.
TimBL says
(Web_Science, has for theme, web)
42
(TimBL, says, Triple1)
(Triple1, rdfs:subject, web_science)
(Triple1, rdfs:predicat, theme)
(Triple1, rdfs:object, web)
(Triple1, rdf:type, rdfs:Statement)
Exemple de Réification.
43
Règles pour écrire des triples RDF
➢ Le sujet est toujours une ressource (jamais un littéral)
➢ Les prédicats sont des relations binaires identifiées par des URIs
➢ L'objet est une ressource ou un littéral
44
RDF ne permet pas de définir les concepts d’un domaine pour typer les ressources.
45
RDFS signifie RDF Schema
46
RDFS: fournit les primitives pour écrire
des ontologie légères.
Définir des inférences élémentaires
47
RDFS permet de définir des classes de ressources et
de les organiser en hiérarchie
rdfs:Class
rdfs:subClassOf
Document
Book Report
48
RDFS permet de définir des propriétés et de les
organiser en hiérarchie
rdf:Property rdfs:subPropertyOf
TimBL report12author
creator
author49
RDFS permet de définir la signature de chaque propriété
rdfs:domain → type de la ressource d’où part la relation
rdfs:range → type de la ressource vers laquelle pointe la relation
Domain Rangerelation
50
RDFS définit une sémantique :
des règles de déduction standard permettant de créer
des triplets additionnels à partir des triplets existants
51
SI (c2, subClassOf, c1)
ET (x, type, c2)
ALORS (x, type, c1)
Exemple
SI (Man, subClassOf, Person)
ET (TimBL, type, Man)
ALORS (TimBL, type, Person)
Inférence sur les types
Person
Man
TimBL
typetype
C1
C2
X
typetype
52
Si (p2, subPropertyOf, p1)
ET (x, p2 , y)
ALORS (x, p1 , y)
Exemple
SI (author, subPropertyOf, creator)
ET (TimBL, author, Report12)
ALORS (TimBL, creator, Report12)
Inférence sur les propriétés
X
TimBL report12author
creator
Y
P2
P1
53
SI (c2, subClassOf, c1)
ET (c3, subClassOf, c2)
ALORS (c3, subClassOf, c1)
Exemple
SI (Person, subClassOf, living being)
ET (Man, subClassOf, Person)
ALORS (Man, subClassOf, living being)
Inférence sur la transitivité des sous classes
Living being
Man
Person
C1
C2
C3
54
SI (p2, subPropertyOf, p1)
ET (p3, subPropertyOf, p2)
ALORS (p3, subPropertyOf, p1)
Exemple
SI (parentOf, subPropertyOf, ancestorOf)
ET (motherOf, subPropertyOf, parentOf)
ALORS (motherOf, subPropertyOf, ancestorOf)
Inférence sur la transitivité des sous propriétés
P1
P2
P3
ancestorOf
parentOf
motherOf55
SI (p1, domain, c1)
ET (x, p1, y)
ALORS (x, type, c1)
Exemple
SI (author, domain, Person)
ET (TimBL, author, Report12)
ALORS (TimBL, type, Person)
Inférence sur le domaine
Person
TimBL report12author
domain
56
RDFS fournit aussi 2 primitives très utiles pour
nommer ou commenter n’importe quelle ressource
(Person, rdfs:label, “Personne”@fr)
(Person, rdfs:comment,”votre commentaire” )
57
RDFS permet uniquement des inférences simples.
58
Ontology Web Language (OWL)
59
OWL fournit des primitives additionnelles pour des ontologies lourdes
60
Class d’enumaration {a,b,c,d,e}
Définit une classe en donnant tous ses membres
<owl:Class rdf:id="EyeColor">
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:ID="Blue"/>
<owl:Thing rdf:ID="Green"/>
<owl:Thing rdf:ID="Brown"/>
<owl:Thing rdf:ID="Black"/>
</owl:oneOf>
</owl:Class>
61
Union & Intersection
Classes définies par l’union<owl:Class>
<owl:unionOf rdf:parseType="Collection"><owl:Class rdf:about="#Person"/><owl:Class rdf:about="#Group"/>
</owl:unionOf></owl:Class>
Classes définies par Intersection<owl:Class rdf:ID="Man">
<owl:intersectionOf rdf:parseType="Collection"><owl:Class rdf:about="#Male"/><owl:Class rdf:about="#Person"/>
</owl:intersectionOf></owl:Class>
62
Complément & Disjonction
Classes par complément
<owl:Class rdf:ID="Male"><owl:complementOf rdf:resource="#Female"/>
</owl:Class>
Disjonction de classes
<owl:Class rdf:ID="Square"><owl:disjointWith rdf:resource="#Round"/>
</owl:Class>
63
Toutes les Valeurs<owl:Class rdf:ID="Herbivore">
<subClassOf rdf:resource="#Animal"/><subClassOf>
<owl:Restriction><owl:onProperty rdf:resource="#eats" /><owl:allValuesFrom rdf:resource="#Plant" />
</owl:Restriction></subClassOf>
</owl:Class>
Certaines valeurs<owl:Class rdf:ID="Sportive">
<owl:equivalentClass><owl:Restriction>
<owl:onProperty rdf:resource="#hobby" /><owl:someValuesFrom rdf:resource="#Sport" />
</owl:Restriction></owl:equivalentClass>
</owl:Class>
Restriction de valeurs
64
Restriction à une valeur exacte
<owl:Class rdf:ID="Bike"><subClassOf>
<owl:Restriction><owl:onProperty rdf:resource="#nbWheels" /><owl:hasValue>2</owl:hasValue>
</owl:Restriction></subClassOf>
</owl:Class>
65
Restriction de cardinalité
le nombre de fois où une propriété est utilisée pour le même sujet mais avec des valeurs différentes.
• Contraints: minimum, maximum, nombre exacte
<owl:Class rdf:ID="Person">
<subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#SocialNumber" />
<owl:maxCardinality>1</owl:maxCardinality>
</owl:Restriction>
</subClassOf>
</owl:Class>
66
Types de propriétés
● ObjectProperty lie uniquement des ressources
ex : hasParent(#thomas,#stephan)
● DatatypeProperty lie une ressource à une valeur qui est potentiellement typée
ex: hasAge(#thomas,16^^xsd:int)
● AnnotationProperty sont ignorées dans les inférences, et utilisées pour la documentation
67
Propriétés Algébriques
Symmetric property, xRy ⇒ yRx<owl:SymmetricProperty rdf:ID="hasSpouse" />
Inverse property, xR1y ⇒ yR
2x
<rdf:Property rdf:ID="hasChild"><owl:inverseOf rdf:resource="#hasParent"/>
</rdf:Property>
Transitive property, xRy & yRz ⇒ xRz<owl:TransitiveProperty rdf:ID="hasAncestor" />
Functional property, xRy & xRz ⇒ y=z<owl:FunctionalProperty rdf:ID="hasMother" />
Inverse functional property, xRy & zRy ⇒ x=z<owl:InverseFunctionalPropertyrdf:ID="hasSocialSecurityNumber" />
X Y
hasSpouse
X YhasParent
hasChild
X Y z
X
Y z
XY z
hasMother
hasMother
hasAncestor
68
Équivalence et alignement
• classes équivalentes: owl:equivalentClass ex: Person owl:equivalentClass Human
• propriétés équivalentes: owl:equivalentProperty ex: isAuthorOf owl:equivalentProperty isWriterOf
• Ressources identiques ou différentes : owl:sameAs, owl:differentFrom
ex: Obama owl:sameAs President USA
69
Documentation de l’ontologie
Description de l’ontologieowl:Ontology,
owl:imports,
owl:versionInfo,
owl:priorVersion,
owl:backwardCompatibleWith,
owl:incompatibleWith
versions des classes et des propriétés owl:DeprecatedClass,
owl:DeprecatedProperty70
SPARQL
SPARQL Protocol and RDF Query Language
71
SPARQL en trois parties
1. Un langage de requêtes 2. Un format de résultats 3. Un protocole d’accès
72
SPARQL : langage de requêtes
Prefix
Select ...
From ...
Where {...}
73
Structure d’une requête
1. La clause SELECT identifie les valeurs à retourner.
2. La clause FROM identifie la source de données à interroger.
3. La clause WHERE le modèle de triplet/graphe qui est comparé au graphe RDF.
4. La partie PREFIX déclare les schémas utilisés dans la requête.
74
Requête simple : personnes et leur nom
PREFIX ex: <http://www.exemple.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person.
?person ex:name ?name.
}
75
Exemple de résultats
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#" > <head>
<variable name="person"/> <variable name="name"/>
</head><results ordered="false" distinct="false">
<result><binding name="person">
<uri>http://www.exemple.fr/schema#TBL</uri> </binding> <binding name="name"> <literal>Berners-Lee</literal> </binding>
</result> <result>
76
FILTER: Les personnes de plus de 18 ans
PREFIX ex: <http://www.exemple.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person.
?person ex:name ?name.
?person ex:age ?age.
FILTER (?age > 17).
}
77
OPTIONAL : retourne l'âge si disponible
PREFIX ex: <http://www.exemple.fr/schema#>
SELECT ?person ?name ?age
WHERE {
?person rdf:type ex:Person.
?person ex:name ?name .
OPTIONAL { ?person ex:age ?age }
}
78
UNION pour donner des modèles alternatifs dans une requête
PREFIX ex: <http://www.exemple.fr/schema#> SELECT ?name WHERE {
?person ex:name ?name . {
{ ?person rdf:type ex:Adult. } UNION
{ ?person ex:age ?age. FILTER (?age > 17)
} }
}
79
ORDER BY & LIMIT & OFFSET
PREFIX ex: <http://www.exemple.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person.
?person ex:name ?name .
}
ORDER BY ?name
LIMIT 20
OFFSET 20
80
ASK ? “true” ou “false”
PREFIX ex: <http://www.exemple.fr/schema#>
ASK {
?person ex:age ?age.
FILTER (?age > 17)
}
Y a t-il une personne âgée de plus de 17 ?
81
CONSTRUCT
PREFIX ex: <http://www.exemple.fr/schema#>
CONSTRUCT {
?person rdf:type ex:Adult } WHERE {
?person ex:age ?age FILTER (?age > 17)
}
82
Application
SPARQL : API universelle d'accès aux données ?
Data
Data
Data
APIspécifique
APIspécifique
APIspécifique Data RDF
+SPARQL endpoint
Data RDF+
SPARQL endpoint
Data RDF+
SPARQL endpoint
SPARQL Application
Sans RDF et SPARQL Avec RDF et SPARQL
83
84
Qui utilise le Web Sémantique ?
85
Linked Open Data
Janvier 2015
86
87
Linked my Music
http://www.lespetitescases.net/semweblabs/linkedmymusic/
88
Linked Book mashup
http://www.lespetitescases.net/semweblabs/linkedbookmashup/
89
90
91
92
93
Demo sur dbpedia
94
Sparql endpoint : http://dbpedia.org/sparql
R1 : SELECT DISTINCT ?acteur ?dateNaissance ?lieuNaissance
WHERE {
?film a dbpedia-owl:Film ;
dbpedia-owl:starring ?acteur .
?acteur dbpedia-owl:birthDate ?dateNaissance ;
dbpedia-owl:birthPlace ?lieuNaissance .
FILTER (?dateNaissance > "2000-01-01"^^xsd:date)
} LIMIT 50
R2:SELECT DISTINCT ?titre ?resume ?date ?wiki ?photo
WHERE {
?film rdf:type <http://dbpedia.org/ontology/Film> ;
dbpedia-owl:abstract ?resume;
rdfs:label ?titre;
foaf:isPrimaryTopicOf ?wiki;
dbpedia-owl:thumbnail ?photo
OPTIONAL {?film dbpprop:released ?date }
FILTER langMatches (lang(?resume), 'fr')
FILTER langMatches (lang(?titre), 'fr')
} LIMIT 10
Liens utiles
❏ W3C standards http://www.w3.org/standards/semanticweb/ ❏ SW Tools http://www.w3.org/2001/sw/wiki/Tools ❏ Linked Data Book http://linkeddatabook.com/editions/1.0/ ❏ W3DevCampus http://www.w3devcampus.com/ ❏ EUCLID material http://www.euclid-project.eu/❏ http://fr.slideshare.net/moustaki/utilisation-du-web-semantique-pour-les-sites-
de-la-bbc
95
Les applications passent
mais les données Restent.
96
Question ?
97