Web des données

Option GCN - Polytech Nantes
05/10/2018


Benjamin Hervy
Stéphane Loret
{prenom}.{nom}@univ-nantes.fr

Programme

  • Introduction au web des données (web sémantique, LinkedOpenData)
  • Modélisation RDF (TD)
  • Introduction au langage SPARQL
  • TP Requêtes SPARQL et Mashup données

Web des données ?

  • Une petite histoire du web...
    • De la page aux données liées, évolution des contenus dans la dynamique d'internet.

Introduction

 

• I have a dream : "Bonjour Google. Peux-tu m'afficher la liste de tous les auteurs de romans de science-fiction dans le monde qui ont publié au moins 3 ouvrages entre 1924 et 1978 dont 2 exemplaires sont localisés à la BNF.... MERCI !"

 

 

 

Et que dit Google sur Mozart !

  • Dans les réponses : BNF et Wikipedia... pas si mal, mais pourquoi ? Pas encore tout à fait de la conjonction, mais pas non plus qu'une accumulation...
  • Bnf, Wikipedia mais aussi INSEE, Europeana, Isidore (CNRS) > Linked Data
  • Une logique : sortir le web de la "balkanisation" dans lequel il s'est empêtré à la fin des années 90 et suivre l'idée originale de Tim Berners-Lee : relier des données structurées.
  • Comment ? Avec quels outils, quelles méthodes ?

Yoo, M.-J.; Grozel, C.; Kiritsis, D. Closed-Loop Lifecycle Management of Service and Product in the Internet of Things: Semantic Framework for Knowledge Integration. Sensors 2016, 16, 1053 http://www.mdpi.com/1424-8220/16/7/1053

  • Internet des objets
  • Suivi de production
  • Gestion du cycle de vie

1 - Une petite histoire du W3 :

de la page html au web sémantique

  • 13/11/1990 - 1994 : publication de la 1ère page web > CERN > T. Berners-Lee et création du W3 (www)

 

 

 

 

  • 1990 - 1994 : phase de création
  •  

Text

T. Berners-Lee a déjà une idée de maillage, de réseau, d'une structuration de l'information, mais c'est encore balbutiant.

Text

  • du point de vue strictement technique : on ne parle pas encore de contenus, style et format, mais de page et de référent > conception "livresque" du site web > le terme ressource apparaît en 1995
    • HTTP,
    • URL, une relation basée sur l'hypertexte,
    • un format HTML

 

 

 

  • 1994 - 2001 : massification, développement technologique et les nouvelles batailles (moteur, navigateur, format) réflexion autour du web sémantique et premières recommandations.
  • croissance exponentielle des flux de données
  • 1994 : Création du W3C, recommandations pour la structuration des documents, et réflexion autour du web sémantique

Pour T. Berners-Lee, il s'agit de : "permettre aux machines de relier automatiquement les données sur le Web aux choses du monde réel". (CERN, 1994, Conférence W3C)

source : https://www.w3.org/Talks/WWW94Tim/

Guerre des navigateurs

Nécessité d'interopérabilité → standardisation

Création du W3C (1994) : Keio, INRIA, MIT

  • 1997 : Premier brouillon de recommandation RDF au W3C

Standardisation au W3C

 

5 étapes:

  1. Atelier → Brouillon de travail
  2. Last call (retours du public)
  3. Candidate recommendation (faisabilité de l'implémentation)
  4. Proposed recommendation (compatibilité entre standards)
  5. Recommendation (statut de standard)

 

Exemples de standards : CSS, XML, SVG, XHTML, HTML5

  • 1998 : feuille de route pour le web sémantique ou la mise en place d'un plan de travail des différentes technologies à mettre en oeuvre.

Notion clef, le web sémantique désigne :

"une extension du Web de documents qui constituerait une base de données globale à l'échelle du réseau pour permettre aux machines de mieux appréhender les données et aux personnes de coopérer".

  • 2001-2009 : vers le Web de Données...

Text

Présentation des travaux engagés depuis 1994 par T. Berners-Lee à propos du Web sémantique.

 

The Semantic Web will

enable machines to

COMPREHEND

semantic documents and

data, not human speech

and writings.

  • ... Publication des recommandations essentielles W3C :
  • 2004 - RDFS (Resource Description Framework Schema), OWL (Ontology Web Language) et une révision de RDF.
  • 2007 - GRDDL en 2007
  • 2008 - SPARQL (SPARQL Protocol And Rdf Query Language) et RDFa (Resource Description Framework attributes)

2006 - Web 2.0, Web services (+folksonomie, microformats, etc.) et le Linked Data...

Mise à disposition selon les règles du Linked Data, avec les technologies du web sémantique, des données structurées extraits de Wikipedia.

Projet de mise à disposition des données gouvernementales britanniques, piloté par Tim Berners-Lee...

  • Quelques définitions essentielles :

Web sémantique :

Ensemble de technologies visant à rendre les ressources du web plus largement utilisables ou plus pertinentes grâce à un système de métadonnées qui utilisent notamment la famille des langages développés par le W3C

 

Web de données :

La mise en œuvre du web sémantique, son expression concrète, par l'usage des technologies développées en ce sens afin de (re)lier les données.

Linked Data : principes

  • Définition :
    • Tim Berners-Lee, « Linked Data - Design Issues », W3C, 2006)
    • Initiative du W3C
      • Favoriser la publication de données structurées sur le Web
      • Constituer un réseau global d’informations

Quelques principes

  • Utiliser des URI HTTP (URL) pour suivre les données
  • Une fois l’URI atteinte, renvoyer des données sur ce qui est représenté
  • Inclure dans ces données des liens vers d’autres données (RDF)

Des URL aux URI…

  • URL = identifier ce qui existe sur le web
  • URI = identifier, sur le web, ce qui existe
  • (IRI = identifier, sur le web, en toutes langues, ce qui existe

Ressource

toute chose identifiable par une URI

Espace de noms

espace abstrait rassemblant des noms d'un même ensemble

http://sdj.info/objets#mamoto

Linked Open Data

Donnée ouverte : publication de donnée sur le web via des formats ouverts
Évolution du nombre de données ouvertes et liées

http://lod-cloud.net

http://lod-cloud.net/versions/2017-08-22/lod.svg

2007

2009

2014

Quelques projets Linked Open Data - Europeana

Isidore (CNRS - INSHS)

INSEE

BNF

DBPedia

DBPedia

http://dbpedia.org

DBPedia extrait les données issues de Wikipédia pour les transformer en données liées

Quelles sont les données disponibles sur Nantes ?
http://dbpedia.org/resource/Nantes
http://dbpedia.org/page/Nantes

GeoNames

Web sémantique

Web sémantique

I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web — the content, links, and transactions between people and computers.

T. Berners-Lee - Weaving the web, 1999

Pile de standardisation

Décrire des ressources

rdf:about

rdf:type

rdf:label

Modèle RDF

Resource Description Framework

 

Représentation sous forme de triplets

( SUJET PREDICAT OBJET )

  • Sujet = ressource à décrire
  • Prédicat = type de propriété applicable à cette ressource
  • Objet = valeur de la propriété, c’est une autre ressource

(cours, auteur, benjamin)

(cours, auteur, stéphane)

Modèle RDF

Représentation d’un triplet sous forme de diagramme


La direction de la flèche est importante. L’arc démarre toujours du sujet et pointe vers l’objet de la déclaration.
<sujet> A POUR <predicat> <objet>

(http://www.la-grange.net/w3c/REC-rdf-syntax/)

cours

benjamin

auteur

Modèle RDF

Multi-graphe étiqueté orienté

- plusieurs arcs entre deux sommets

- étiquettes : URI ou littéraux

Modèle ouvert

- vocabulaire extensible basé sur les URI

- étiquettes : URI ou littéraux

→ relier les graphes (URI communes) = web mondial de données

Modèle RDF : exemples

http://gallica.bnf.fr/ark:/12148/btv1b52504043q
    http://purl.org/dc/elements/1.1/title
        "Carte gastronomique de la France / par A. Bourguignon… "

Exemple de triplet

Modèle RDF : exemples

SELECT DISTINCT ?p ?o WHERE {
    <http://data.bnf.fr/ark:/12148/cb16765159k> ?p ?o.
}

http://gallica.bnf.fr/ark:/12148/bpt6k311302s

Modèle RDF

Syntaxes de sérialisation

Syntaxes de sérialisation : <RDF />

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about="http://msh.univ-nantes.fr/doc.html">
        <voc:auteur rdf:resource="http://msh.univ-nantes.fr/benjamin.hervy/#me"/>
        <voc:theme>Web</voc:theme>
    </rdf:Description>

</rdf:RDF>

Arbre XML = graphe

Syntaxes de sérialisation : RDF N-Triples

<http://msh.univ-nantes.fr/doc.html>
    <http://msh.univ-nantes.fr/schema#auteur>
        <http://msh.univ-nantes.fr/benjamin.hervy/#me> .

<http://msh.univ-nantes.fr/doc.html>
    <http://msh.univ-nantes.fr/schema#theme> "Web" .
  • Un triplet par ligne
  • Chaque triplet est séparé par "."
  • Format texte brut

Syntaxes de sérialisation : RDF Turtle

@prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix voc:<http://msh.univ-nantes.fr/schema#> .

<http://msh.univ-nantes.fr/doc.html>
    voc:auteur <http://msh.univ-nantes.fr/benjamin.hervy/#me"> ;
    voc:theme "Web", "Web sémantique" .
  • Extension .ttl

Règles de composition d’un triplet

Modèle RDF

Noeuds anonymes (blank nodes)

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description>
        <voc:auteur rdf:resource="http://msh.univ-nantes.fr/benjamin.hervy/#me"/>
        <voc:theme>Web</voc:theme>
    </rdf:Description>

</rdf:RDF>

Il existe une ressource telle que…

Typer les littéraux

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about="http://msh.univ-nantes.fr/doc.html">
        <voc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#date">
            2017-02-02</voc:date>
    </rdf:Description>

</rdf:RDF>

Utilisation d'XML Schema pour typer les données

Par défaut → xsd:string

Syntaxe abstraite : "2017-02-02"^^xsd:date

Typer les littéraux

https://www.w3.org/TR/xmlschema-2/

Indiquer la langue

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about="http://msh.univ-nantes.fr/doc.html">
        <voc:theme xml:lang='fr'>Web sémantique</voc:theme>
    </rdf:Description>

</rdf:RDF>

En turtle et syntaxe abstraite :

"Web sémantique"@fr

Typer les ressources

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <voc:Chercheur rdf:about="http://msh.univ-nantes.fr/stephane.loret#me">
        <rdf:type rdf:resource="http://msh.univ-nantes.fr/schema#Homme" />
    </voc:Chercheur>

</rdf:RDF>

Propriété rdf:type

  • fils de l'élément rdf:Description
  • remplace rdf:Description

Représentation de groupes

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about:"http://msh.univ-nantes.fr/doc.html">
        <voc:auteur>
            <rdf:Bag>
                <rdf:li>Benjamin</rdf:li>
                <rdf:li>Stéphane</rdf:li>
            </rdf:Bag>
        </voc:auteur>
    </rdf:Description>

</rdf:RDF>

Représentation de groupes

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about:"http://msh.univ-nantes.fr/doc.html">
        <voc:auteur>
            <rdf:Seq>
                <rdf:li>Benjamin</rdf:li>
                <rdf:li>Stéphane</rdf:li>
            </rdf:Seq>
        </voc:auteur>
    </rdf:Description>

</rdf:RDF>

Séquences

Représentation de groupes

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about:"http://msh.univ-nantes.fr/doc.html">
        <voc:theme>
            <rdf:Alt>
                <rdf:li xml:lang='en'>Web sémantique</rdf:li>
                <rdf:li xml:lang='fr'>Semantic Web</rdf:li>
            </rdf:Alt>
        </voc:theme>
    </rdf:Description>

</rdf:RDF>

Alternatives

Représentation de groupes

Les collections : rdf:List

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:voc="http://msh.univ-nantes.fr/schema#">

    <rdf:Description rdf:about="http://msh.univ-nantes.fr/doc.html">
        <voc:auteur rdf:parseType="Collection"/>
            <rdf:Description rdf:about="#Benjamin">
            <rdf:Description rdf:about="#Stéphane">
        <voc:auteur>
    </rdf:Description>

</rdf:RDF>

Exercice 1 : compléter

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:acad="http://academie.huma-num.fr/ontology/" xmlns:bio="http://purl.org/vocab/bio/0.1/" xmlns:time="http://www.w3.org/2006/time#" xmlns:foaf="http://xmlns.com/foaf/0.1/"
    xmlns:org="http://www.w3.org/ns/org#">
    <foaf:Person rdf:about="http://academie.huma-num.fr/Person/Yoccoz_JC">
        <foaf:isPrimaryTopicOf rdf:resource="http://www.academie-sciences.fr/academie/membre/Yoccoz_JC.htm"/>
        <foaf:name>Jean-Christophe YOCCOZ</foaf:name>
        <foaf:gender>Male</foaf:gender>
        <org:hasMembership>
            <org:Membership rdf:about="http://academie.huma-num.fr/Person/Yoccoz_JC#membership1">
                <org:organization rdf:resource="http://academie.huma-num.fr/Organization/Academie_des_sciences"/>
                <org:role rdf:resource="http://academie.huma-num.fr/Role/Membre"/>
                <org:memberDuring>
                    <time:Interval rdf:about="http://academie.huma-num.fr/Person/Yoccoz_JC#membershipInterval1">
                        <time:hasBeginning>
                            <time:Instant rdf:about="http://academie.huma-num.fr/Person/Yoccoz_JC#membershipIntervalBeginning1">
                                <time:inXSDDateTime>1994-10-24</time:inXSDDateTime>
                            </time:Instant>
                        </time:hasBeginning>
                    </time:Interval>
                </org:memberDuring>
            </org:Membership>
        </org:hasMembership>
        <org:hasMembership>
            <org:Membership rdf:about="http://academie.huma-num.fr/Person/Yoccoz_JC#section">
                <org:organization>
                    <acad:Section rdf:about="http://academie.huma-num.fr/Section/Mathematique">
                        <foaf:name>Section de mathématique</foaf:name>
                    </acad:Section>
                </org:organization>
            </org:Membership>
        </org:hasMembership>
        <org:memberOf>
            <org:Organization rdf:about="http://academie.huma-num.fr/Organization/College_de_France">
                <foaf:name>Collège de France</foaf:name>
            </org:Organization>
        </org:memberOf>
     </foaf:Person>
</rdf:RDF>

Recréer le graphe RDF à partir de cette description en xml/RDF

Ontologies et schémas RDF

Ontologies

  • Ontologie = représentation et modélisation d'un domaine
  • Modélisation = classes (concepts) + propriétés (relations)
  • Modèle spécifié : classes/propriétés/ règles d'inférence des relations sont formalisés ► traitement automatique
  • Possibilité de créer tout type de relations ≠ Taxinomie/Thésaurus relations fixes
  • Possibilité d'aligner différentes ontologies entre elles (intéropérabilité) par différents types de correspondances entre les entités :
  • Équivalence (similarité)
  • Inclusion
  • Exclusion....

Différentes techniques d'alignement :

Sémantique
Structurelles
Comparaison entre chaînes de caractères...

Spécificités des ontologies

Classes et propriétés RDFS

​Vocabulaire standard pour décrire des ontologies légères

  • ​Décrire des classes, des ressources
  • ​Décrire des propriétés entre ces ressources

Classes et propriétés RDFS

Classes et propriétés RDFS

​Remarques :

  • ​rdfs:range et rdfs:domain : quels types de ressources sont décrits par nos propriétés ?

  • ​documenter le schéma avec rdfs:label, rdfs:comment, rdfs:isDefinedBy, rdfs:seeAlso

  • ​tout est ressource (de la classe rdfs:Resource) : si x p y alors x rdf:type rdfs:Resource

Classes et propriétés RDFS

​Remarques :

  • ​Héritage multiple​
  • ​multi-instanciation : une ressource peut appartenir à plusieurs classes
<rdf:RDF xml:base="http://mondomaine.fr/humans.rdfs"
    xmlns:rdf="http://www.w3.org/1999/02/22/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">

    <rdfs:Class rdf:ID="Man">
        <rdfs:subClassOf rdf:resource="#Person"/>
        <rdfs:subClassOf rdf:resource="#Male"/>
    </rdfs:Class>
</rdf:RDF>

Classes et propriétés RDFS

<rdf:RDF xml:base="http://mondomaine.fr/humans.rdfs"
    xmlns:rdf="http://www.w3.org/1999/02/22/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">

    <rdf:Property rdf:ID="hasMother">
        <rdfs:subPropertyOf rdf:resource="#hasParent"/>
    </rdf:Property>
</rdf:RDF>

​Organiser la hiérarchie des propriétés et héritage multiple

Classes et propriétés RDFS

Signature de propriétés:

  • ​classe de départ
  • ​classe d'arrivée

<rdf:RDF xml:base="http://mondomaine.fr/humans.rdfs"
    xmlns:rdf="http://www.w3.org/1999/02/22/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">

    <rdf:Property rdf:ID="hasMother">
        <rdfs:subPropertyOf rdf:resource="#hasParent"/>
        <rdfs:domain rdf:resource="#Human"/>
        <rdfs:range rdf:resource="#Woman" />
    </rdf:Property>
</rdf:RDF>

Classes et propriétés RDFS

Signature de propriétés:

  • ​classe de départ (rdfs:domain)
  • ​classe d'arrivée (rdfs:range)

​Attention : si une propriété a plusieurs range ou domain, le domaine (resp. le range) effectif est l'intersection de tous les domaines (resp. ranges)

→ Inférences de type​

Utilisation et références au schéma

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:h="http://mondomaine.fr/humans.rdfs#"
    xml:base="http://mondomaine.fr/humans.rdfs-instances">

    <rdf:Description rdf:ID="#Lucas">
        <rdf:type rdf:resource="http://mondomaine.fr/humans.rdfs#Man"/>
        <h:hasMother rdf:resource="#Laura"/>
    </rdfs:Description>
</rdf:RDF>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:h="http://mondomaine.fr/humans.rdfs#"
    xml:base="http://mondomaine.fr/humans.rdfs-instances">

    <h:Man rdf:ID="#Lucas">
        <h:hasMother rdf:resource="#Laura"/>
    </rdfs:Class>
</rdf:RDF>

Exercice 2 : Modélisation RDFS

​​

  • Des classes de Documents dans l’entreprise : la classe racine des documents (Document), les documents publics (PublicDoc), les communiqués de presse (PressRelease), tous les types de rapports (Report), les rapports d’activité annuels (AnnualReport), les documents internes et privés (InternalDoc), les rapports secrets (SecretReport) et les mémos ou notes internes (InternalMemo).
  • Des classes d’Acteurs dans l’entreprise : l'ensemble des Agents (Agent) qui se divise en l'ensemble des personnes (Person) et l'ensemble des groupes (Group).
  • Des propriétés pour les documents : un titre (hasTitle), un auteur (hasAuthor) et des liens de citations (makesReferenceTo)
  • Des propriétés pour les agents : un nom (hasName), l’appartenance d’une personne à un groupe (isMemberOf)

Exercice 3 : Modélisation RDFS

Modéliser les classes et les propriétés du graphe ci-dessous

Exercice 4 : Modélisation RDF

Jean-Pierre Blog est un homme, chercheur au CNRS (DR) de son état, dans le domaine de la Sociologie. Il est membre d'un laboratoire de recherche d'une université parisienne. Il a publié plusieurs ouvrages dont le dernier, chez Khartala, en 2016 sur « le Rap en France », s'étale sur 350 pages. Il a atteint l'âge de la retraite. Avec son épouse, Marguerite, documentaliste, ils ont eu 4 enfants, 3 filles et 1 garçon. Les enfants se nomment : Anna, Barbara, Carolina, Daniel, ils ont 12, 14, 16 et 21 ans et sont encore aux études. Jean-Pierre est souvent en voyage, mais il communique régulièrement avec sa famille via son mail personnel et sur sa page Facebook, ou encore sur Twitter.

Enoncé :

Cours Web des données

By benjaminh

Cours Web des données

  • 1,833