Open data & linked data

19
Open Data & Linked Data Vincent Brouté @VincentBroute

description

Présentation sur la démarche de l'Open Data (quelles données ? Quels acteurs ?) et sur les technologies gravitant autour du Linked Data (le modèle RDF, RDFS, OWL, les ontologies, les triplestores, etc).

Transcript of Open data & linked data

Page 1: Open data & linked data

Open Data

&

Linked Data

Vincent Brouté@VincentBroute

Page 2: Open data & linked data

La démarche de l’Open Data

=> Publier des données libres d’accès et de réutilisation en ligne <=

Comment ?

Jeux de données (CSV, XLS, PDF, XML, etc)

Codes postaux des villes (CSV), bulletins meteo mensuels (PDF), Impôts locaux par ville (XLS)

APIs

APIs géographiques Geonames, Données sur les bus et vélo STAR de Rennes , horaires des trains TER en France

Datasets RDF & Endpoints SPARQL (= Linked Open Data)

data.gov, data.gov.uk, DBPedia, INSEE, IGN, Bibliothèque Nationale de France (depuis août 2014)

Page 4: Open data & linked data

Open Data => Linked Data

Linked DataOpen Data

Linked Data : Technologies développées par le W3C

Objectif : publier sur le web des données structurées et reliées entre elles

Page 5: Open data & linked data

1994 : Création du W3C & début des réflexions sur le web sémantique

2001 : Premier article dans une revue scientifique

2004 : Premiers drafts des recommandations W3C : RDFS, OWL, RDF

2006 : Semantic Web => Linked Data

Ambiguïté sur le nom + erreur stratégique avec l’introduction de notions complexes liées à l’IA :

“En fait, nous aurions dû l'appeler dès le départ « Web de données ».

Mais il est trop tard pour changer de nom. ” (Tim-Berners-Lee, 2007)

2008 : Premier draft pour SPARQL 1.0

2013 : SPARQL 1.1 publié en tant que “recommandation”

2014 : RDF 1.1 (JSON-LD + minor fixes) , Sept. 2014 : Working Draft “Linked Data Platform best practices ”

Linked Data

Plenary at WWW Geneva 94

Ex : “Rennes” sur DBPedia

Page 6: Open data & linked data

Organiser les données : RDF

RDF = Modèle de données, en graph

Les entités sont décrites par des triplets :

Sujet : la ressource à décrire. Identifié par une URI HTTP ( = un noeud)

Prédicat : la relation entre le sujet et l’objet. Identifié par une URI HTTP ( = un arc)

Objet : litéral ou une autre ressource ( = un autre noeud ou une feuille)

(+) : le type et la langue de l’objet

Un graph est composé d’un ensemble de triplets

/!\ RDF = le modèle des données => définit l’organisation théorique des données (// modèle relationnel, clé-valeurs, arbre …)

Page 7: Open data & linked data

Renneshttp://fr.dbpedia.org/resource/Rennes

Organiser les données : RDF

Nathalie Appéréhttp://fr.dbpedia.org/resource/Nathalie_Appéré

“Rennes” @fr207 178

Ille-et-Vilainehttp://fr.dbpedia.org/resource/Ille-et-Vilaine

1975-07-08

populationTotalhttp://fr.dbpedia.org/ontology/populationTot

al

departmenthttp://fr.dbpedia.org/ontology/department

mairehttp://fr.dbpedia.org/property/maire

birthDatehttp://fr.dbpedia.org/ontology/birthDate

labelhttp://www.w3.org/2000/01/rdf-

schema#label

Page 8: Open data & linked data

Organiser les données : RDF

Sérialisation RDF/XML :<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF

xmlns:dbp-ont="http://fr.dbpedia.org/ontology/"

xmlns:dbp-prop="http://fr.dbpedia.org/property/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema#"

xmlns:owl="http://www.w3.org/2002/07/owl#"

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<rdf:Description rdf:about="http://fr.dbpedia.org/resource/Rennes">

<rdfs:label>Rennes</rdfs:label>

<dbp-ont:department rdf:resource="http://fr.dbpedia.org/resource/Ille-et-Vilaine" />

<dbp-ont:populationTotal rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">207178</dbp-

ont:populationTotal>

<dbp-prop:maire rdf:resource="http://fr.dbpedia.org/resource/Nathalie_Appéré" />

</rdf:Description>

<rdf:Description rdf:about="http://fr.dbpedia.org/resource/Nathalie_Appéré">

<rdfs:label>Nathalie Appéré</rdfs:label>

<dbp-ont:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1975-07-08</dbp-ont:birthDate>

</rdf:Description>

</rdf:RDF>

Page 9: Open data & linked data

Plus lisible, la sérialisation Turtle :

Organiser les données : RDF

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix dbp-prop: <http://fr.dbpedia.org/property/> .

@prefix dbp-ont: <http://fr.dbpedia.org/ontology/> .

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://fr.dbpedia.org/resource/Rennes>

rdfs:label "Rennes" ;

dbp-ont:department <http://fr.dbpedia.org/resource/Ille-et-Vilaine> ;

dbp-ont:populationTotal 207178^^xsd:integer ;

dbp-prop:maire <http://fr.dbpedia.org/resource/Nathalie_Appéré> .

<http://fr.dbpedia.org/resource/Nathalie_Appéré>

rdfs:label “Nathalie Appéré” ;

dbp-ont:birthDate “1975-07-08”^^xsd:date .

Sérialisations RDF : RDF-XML, N-Triples, Turtle, Trig, N-Quads, JSON-LD

Page 10: Open data & linked data

Organiser les données : RDF

3 vocabulaires (ontologies) = 3 niveaux d’expressivité

Concepts RDF de base :

rdf:Statement, rdf:subject, rdf:predicate, rdf:object + rdf:type

http://www.w3.org/1999/02/22-rdf-syntax-ns, Concepts and Abstract Syntax, RDF 1.1 XML Syntax

Fournit les éléments de base pour construire des ontologies

rdfs:Class, rdfs:subClassOf, rdfs:domain, rdfs:range, rdfs:label, rdfs:commenthttp://www.w3.org/2000/01/rdf-schema, RDF Schema 1.1

Niveau le plus expressif, complément à RDFS

Ex: owl:ReflexiveProperty, owl:TransitiveProperty, etchttp://www.w3.org/2002/07/owl, OWL 2 Web Ontology Language

Objectif : décrire les ressources et créer de nouvelles ontologies

RDF

RDFS

OWL

Page 11: Open data & linked data

@prefix test: <http://test.com/myontology#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns> .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix owl: <http://www.w3.org/2002/07/owl#> .

test:PopulatedPlace rdf:type owl:Class;

rdfs:label “Lieu peuplé” .

test:Town rdf:type owl:Class;

rdfs:label “Ville”;

rdfs:subClassOf :PopulatedPlace .

test:postalCode rdf:type owl:DatatypeProperty ;

rdfs:label “Code postal”;

rdfs:domain test:Town ;

rdfs:range xsd:string .

Créer des ontologies avec RDF, RDFS et OWL

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix test: <http://test.com/myontology#> .

<http://test.com/rennes> rdf:type test:Town;

rdfs:label “Rennes”;

test:postalCode “35000” .

<http://test.com/boulogne-billancourt> rdf:type test:Town;

rdfs:label “Boulogne-Billancourt”;

test:postalCode “92100” .

(...)

Ontologie Données

Page 12: Open data & linked data

Créer des ontologies avec RDF, RDFS et OWL

Inférence

Créer des règles pour découvrir de nouvelles relations entre les ressources

Données :

John estPereDe Mary

John estFrereDe Jack

Règle :

Si (?x estPereDe ?y ET ?x estFrereDe ?z) alors (?z estOncleDe ?y)

Inférence :

Jack estOncleDe Mary

Reasonners : Cwm, Jena, etc

?xJohn

?yMary

?yJack

estFrereDe

estPereDe

estOncleDe

Page 13: Open data & linked data

> Stocker et requêter RDF

> Pas de créations de tables, schemas, etc.

> Langage d’interrogation : SPARQL.

> Endpoint pour interroger les données via HTTP en SPARQL. (Ex : DBPedia)

> Quelques triplestores du marché : Sesame, Jena (Apache), Virtuoso

Stocker les données : triplestores

Page 14: Open data & linked data

● Récupérer le libellé et la population de Rennes sur DBPedia :

Interroger les données : SPARQL

Pattern matching

prefix dbp-ont: <http://dbpedia.org/ontology/>

select ?libelle ?pop WHERE {

<http://fr.dbpedia.org/resource/Rennes> rdfs:label ?libelle ;

dbp-ont:populationTotal ?pop

FILTER(lang(?libelle) = 'fr') .

}

prefix dbp-ont: <http://dbpedia.org/ontology/>

select * WHERE {

?ville dbp-ont:department <http://fr.dbpedia.org/resource/Ille-et-Vilaine> ;

rdfs:label ?libelle ;

dbp-ont:populationTotal ?popFILTER(lang(?libelle) = 'fr') .

}

● Récupérer le libellé et la population de toutes les villes d’Ille-et-Vilaine :

Page 15: Open data & linked data

Récupérer sur le SPARQL endpoint de l’INSEE le nombre d’habitants par région en 2010 :

Interroger les données : SPARQL

Rennes

Arrondissement de Rennes

Ille-Et-Vilaine

populationLegale/commune/35238/2010 207178

2010-01-01subdivisionDe

subdivisionDe

population PopulationTotale

date

Ex. pour Rennes :

Page 16: Open data & linked data

Interroger les données : SPARQL

Récupérer sur le SPARQL endpoint de l’INSEE le nombre d’habitants par région en 2010 :

PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>

PREFIX igeo:<http://rdf.insee.fr/def/geo#>

PREFIX idemo:<http://rdf.insee.fr/def/demo#>

SELECT ?nomRegion (SUM(?popTotale) as ?pop) where {

?ville rdf:type igeo:Commune ;

idemo:population ?population ;

igeo:subdivisionDe ?arrondissement .

?arrondissement igeo:subdivisionDe ?dpt .

?dpt igeo:subdivisionDe ?region .

?region igeo:nom ?nomRegion .

?population idemo:date "2010-01-01"^^<http://www.w3.org/2001/XMLSchema#date> ;

idemo:populationTotale ?popTotale .

}

GROUP BY ?nomRegion

Page 17: Open data & linked data

● En France

○ Dbpedia-fr : data RDF + Endpoint SPARQL (Virtuoso)

○ INSEE : data RDF + Endpoint SPARQL (DataLift)

○ Bibliothèque Nationale de France : data RDF + Endpoint SPARQL (Virtuoso)

● Dans le monde

○ DBPedia : data RDF + Endpoint SPARQL (Virtuoso)

○ data.gov : data RDF

○ data.gov.uk : data RDF

Acteurs du Linked Data en France et dans le monde

Page 18: Open data & linked data

● Projet collaboratif

● Données en licence Creative Commons

● “Rassembler les connaissances du web”

● Format graph propriétaire (graphd)

● Langage d’interrogation en JSON : MQL

● APIs (100 000 requêtes / jour / token)

Recherches, sélections, écritures, images

● Dumps RDF disponibles :

- 1.9 milliards de triplets

- 250Gb de données

- Mis à jour 1 fois / semaine

Bonus : Freebase

Exemples :

Données sur Batman Begins

Récupérer les enfants de Madonna sur le Endpoint MQL:

{

"type":"/people/person",

"id":"/en/madonna","children":[]

}

Page 19: Open data & linked data

Questions ?