Présentation de CROTOS – soirée Sémanticpédia

Voyage de DBpedia en Wikidata à bord d’un bot

L’idée est de récupérer les informations des fichiers image des œuvres d’art de DBpedia et de les publier automatiquement dans Wikidata, le principe pouvant être appliqué à bien d’autres données.

Short | Les sources (fichier zip, 6 ko)

Ce billet n’a pas l’ambition d’être un tutoriel mais plutôt une relation de codage en cours sans autre prétention que celle d’être déjà arrivé à faire quelque chose. Comme il n’a pas été aisé d’y parvenir, il est possible que malgré leurs défauts, voire même leurs erreurs, ces quelques notes puissent être utiles.

The Oxbow - peinture de Thomas Cole

The Oxbow, Thomas Cole

C’est l’occasion aussi de voir à nouveau que non seulement le web sémantique existe déjà, qu’il fonctionne même et que, cerise sur gâteau, il peut être très utile. Et tout ça rien qu’avec quelques petits bouts de code.

Les grandes étapes :


I. Interroger DBpedia

Techno : SparQL

DBpedia, qu’est-ce que c’est ? C’est bien expliqué par là : article DBpedia.

TL;DR, on va dire que DBpedia est une version base de données libre de certaines informations de Wikipédia avec une structure intelligible et partagée. Les données sont principalement extraites des boîtes d’informations (dites infobox) présentes dans les articles de Wikipédia.

Par exemple sur la page Wikipédia du tableau de Van Gogh, Amandier en fleurs, on trouve cette infobox (encadré rouge) :

Infobox - Amandier en fleurs

Ces informations ont permis de créer la ressource correspondante sur DBpedia :

Page DBpedia - Amandier en fleurs

Dans cette ressource DBpedia (version francophone) on retrouve bien plusieurs informations de l’infobox (auteur, titre en français, technique, nom du fichier image…). Ces informations sont structurées avec des propriétés spécifiques à cette DBpedia comme prop-fr:titre, d’autres partagées avec les versions de DBpedia en d’autres langues (anglaise, grecque…) comme dbpedia-owl:thumbnail pour l’image-vignette et d’autres propriétés sont partagées encore plus largement comme rdf:type qui fait référence à un système plus global d’organisation des connaissances établi par le W3C.

Toutes ces informations DBpedia sont rassemblées et liées dans un entrepôt de données (un triplestore RDF pour être précis, pour aller plus loin et pouvoir jouer les shamans du web sémantique) que l’on peut interroger pour les retrouver. Ces interrogations se font par des requêtes à un point d’accès (appelé Endpoint dans le jargon) de l’entrepôt DBpedia. Pour formuler cette interrogation, on utilise un langage de requête le SparQL (QL -> Query Langage -> Langage de requête).

Adresse de l’Endpoint (le point d’accès au service de requêtes) de DBpedia [fr] : fr.dbpedia.org/sparql

Exemple de requête SparQL

On souhaite avoir la liste des œuvres d’art avec l’adresse de l’image-vignette correspondante. Cela peut se traduire ainsi :

Sélectionner les ressources, les vignettes
    "des ressources" "ayant pour modèle" "œuvre d'art" et
    "ayant une vignette"

Ce qui peut se traduire ainsi en SparQL :

SELECT DISTINCT ?ressource, ?vignette
WHERE {
    ?ressource <http://fr.dbpedia.org/property/wikiPageUsesTemplate>
        <http://fr.dbpedia.org/resource/Modèle:Infobox_Art>;
    <http://dbpedia.org/ontology/thumbnail> ?vignette
}
  • <http://fr.dbpedia.org/property/wikiPageUsesTemplate> :
    propriété désignant le modèle de ressource et peut d’ailleurs se traduire littéralement par Page wiki utilisant le modèle.
  • <http://fr.dbpedia.org/resource/Modèle:Infobox_Art>
    correspond explicitement à la valeur modèle Infobox_Art.
  • <http://dbpedia.org/ontology/thumbnail>
    désigne la propriété thumbnail, vignette en français.

Ainsi en copiant la requête dans l’éditeur en ligne et en cliquant sur Run Query on obtient ce résultat.


Voilà pour le principe des requêtes sur DBpedia.
Il est bien sûr possible, voire nécessaire, de complexifier les requêtes pour des résultats détaillés -c’est pas un but non plus, hein ; on peut faire souvent déjà bien et beaucoup simplement -. Par exemple, si l’on souhaite avoir la liste des œuvres d’art classées alphabétiquement par musées, avec titre en français, auteur et vignette s’il y en a : requête avancée de liste d’œuvres

Bon, c’est bien joli ces pages de résultats mais comment récupère-t-on les données ?
Il est possible entre autres choses et c’est ce que l’on souhaite ici récupérer ces données sur un ordinateur (avec un serveur local) pour les stocker et les affiner si besoin.


II. Récupérer les résultats de requêtes de DBpedia

Technos : SparQL, Php/MySQL

Nous allons récupérer les données d’une requête de DBpedia via un peu de programmation (en langage PHP) et les stocker dans une base de données (MySQL). Pas de soucis, PHP/MySQL est un environnement très commun et très simple à mettre en place. On peut installer XAMPP, un serveur local (Apache) qui a tout ce qu’il faut.

Script de requêtes

[N.B. : les scripts sont volontairement épurés (pas de gestion des exceptions par exemple) pour se concentrer sur la compréhension de ce qui nous intéresse ici.]

<?php
// Appel de la petite bibliothèque de fonctions
include "sparqlcurl.php";
// Langue de la DBpedia utilisée
$lg_db="fr";

//Requête SparQL (limitée à 10 réponses)
$req="
SELECT DISTINCT ?ressource, ?image
    WHERE {
    ?ressource <http://fr.dbpedia.org/property/wikiPageUsesTemplate>
        <http://fr.dbpedia.org/resource/Modèle:Infobox_Art>;
    <http://dbpedia.org/ontology/thumbnail> ?image
    }
    LIMIT 10
";

//Construction de l'url de requête
$requestURL = getUrlDbpediaAbstract($req,$lg_db);

//Réponse à la requête (par cURL)
$result=request($requestURL);

//Mise en tableau de la chaîne JSON reçue
$tab_res=json_decode($result,true);

//Parcours des résultats 
$i=0;
foreach($tab_res['results']['bindings'] as $enreg=>$tabval){
    // Pour chaque ligne de résulat on récupère la ressource et l'image
    $ressource=$tab_res["results"]["bindings"][$i]["ressource"]["value"];
    $image=$tab_res["results"]["bindings"][$i]["image"]["value"];
    $i++;
    //Affichage des résultats
    echo "$i. $ressource $image <br/>";

}
?>

Fichiers : requete.php, sparqlcurl.php

Voilà comment, avec ce petit script et sa toute petite bibliothèque, on peut déjà récupérer très simplement en local des données de DBpedia.

Précaution et potentiel

Dans cet exemple le nombre de résultats est limité à 10. Il pourrait être de plusieurs milliers. Seule la DBpedia en italien, à notre connaissance, limite à 1000 le nombre de résultats par requête pour la raison compréhensible de ne pas surcharger le serveur par des requêtes inutilement gourmandes. Pour la même raison il convient de requêter un serveur public avec un peu de précaution. Limiter le nombre d’enregistrements (exemple ici : LIMIT 10) -et bien sûr éviter les boucles infinies- constitue un bon garde-fou. Après une fois qu’on a bien ciblé, il est possible de récupérer un grand nombre de données d’un seul coup. Faudrait pas se priver non plus, un serveur SparQL est fait pour être requêté.

Ici, le script affiche simplement les résultats. On va le modifier pour insérer les données dans une base de données SQL.

Avec un serveur local et PHP/MydAmin (comme XAMPP), on crée d’abord une base appelée dbwiki puis on crée une table artworks avec la structure suivante :

CREATE TABLE IF NOT EXISTS `artworks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uri_db` text NOT NULL,
  `thumb` text NOT NULL,
  `commons` text NOT NULL,
  `img_exists` tinyint(4) NOT NULL DEFAULT '0',
  `img_correct` tinyint(4) NOT NULL DEFAULT '1',
  `is_artwork` tinyint(4) NOT NULL DEFAULT '1',
  `Qwikidata` varchar(12) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

Fichier : dbwiki.sql

  • uri_db correspond à l’adresse de la ressource DBpedia.
  • thumb correspond à l’adresse de la vignette.
  • commons correspond au nom du fichier image sur Wikimedia Commons que l’on peut déduire automatiquement de l’adresse de la vignette.
  • Les autres champs de la base, qui concernent la validation des données et l’identifiant Wikidata, seront évoqués plus loin.

Une fois la base créée, on modifie le script précédent de récolte pour stocker la moisson dans MySQL :

<?php
// Appel de la petite bibliothèque de fonctions
include "sparqlcurl.php";
// Langue de la DBpedia utilisée
$lg_db="fr";

//Informations de connexion à MySQL
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'dbwiki';

//Connexion à MySQL
$link = mysql_connect ('localhost','root','') or die ('Erreur : '.mysql_error());
mysql_select_db('dbwiki') or die ('Erreur :'.mysql_error());

//Requête SparQL (limitée à 10 réponses)
$req="
SELECT DISTINCT ?ressource, ?image
    WHERE {
    ?ressource <http://fr.dbpedia.org/property/wikiPageUsesTemplate>
        <http://fr.dbpedia.org/resource/Modèle:Infobox_Art>;
    <http://dbpedia.org/ontology/thumbnail> ?image
    }
    LIMIT 10
";

//Construction de l'url de requête
$requestURL = getUrlDbpediaAbstract($req,$lg_db);

//Réponse à la requête (par cURL)
$result=request($requestURL);

//Mise en tableau de la chaîne JSON reçue
$tab_res=json_decode($result,true);

//Parcours des résultats 
$i=0;
foreach($tab_res['results']['bindings'] as $enreg=>$tabval){
    // Pour chaque ligne de résulat on récupère la ressource et l'image
    $ressource=$tab_res["results"]["bindings"][$i]["ressource"]["value"];
    $image=$tab_res["results"]["bindings"][$i]["image"]["value"];
    //Récupération du nom de fichier WikiCommons
    $commons=urldecode(imgurl($image));
    $i++;
    //Requête d'insertion du résultat en cours 
    $sqlinsert="INSERT INTO artworks
        (uri_db,thumb,commons) VALUES
        (\"".str_replace("\"","\\\"",$ressource)."\",
        \"".str_replace("\"","\\\"",$image)."\",
        \"".str_replace("\"","\\\"",$commons)."\")";
    //Exécution de la requête d'insertion
    mysql_query($sqlinsert);
}
?>

Fichiers : stockage-requete.php, sparqlcurl.php

Voilà la base a commencé à être remplie de données requêtées sur DBpedia. Maintenant, on va pouvoir et -devoir même- affiner ces données.


Affiner les données

De façon générale avec les différentes DBpedia si on regarde attentivement les données récoltées, on remarque quelques soucis :

  • 1.Page Wikipédia - Nicolas Tournier
  • 2.Page Wikipédia - Massacre_en_Corée
  • 3.Page Wikipédia it - Fichier Madonna delle Grazie
  1. La page ne correspond pas à une œuvre d’art.
    Exemple : la ressource DBpedia/Nicolas_Tournier correspond non à l’œuvre dont on a récupéré le nom de fichier mais à la personne Nicolas Tournier. Cette rare confusion due à la présence d’une infobox œuvre d’art sur une page de personne se retrouve sur toutes les DBpedia.
  2. L’image ne correspond pas à l’œuvre.
    Exemple : l’image indiquée pour la ressource DBpedia/Massacre en Corée de Picasso se rapporte non à cette œuvre mais au tableau de Goya El Tres de Mayo. Comme sur la page Wikipédia, il n’y a pas l’image du tableau de Picasso dans l’infobox pour des raisons de droits, une autre image a été récupérée par erreur dans DBpedia (cas très rare).
  3. L’image est sur Wikipédia mais pas sur WikiCommons, pour des raisons de droits. Exemple, pour la page sur la Madonna delle Grazie de Botticelli, l’image n’est présente que sur la Wikipédia italienne. C’est un cas fréquent sur les Wikipédia anglophone et italienne, où certaines images ne sont présentes et utilisable que sur Wikipédia.

Comme l’objectif est de republier les données récoltées, il apparaît nécessaire de les valider/corriger/exclure avant exportation. Ces vérifications seront notées dans les champs complémentaires de la base de données. Etapes de traitement :

  1. Vérification manuelle que les ressources correspondent bien à une œuvre d’art en parcourant les résultats. Si ce n’est pas le cas, is_artwork=0.
  2. Vérification manuelle que l’image correspond bien à l’œuvre d’art en parcourant les résultats. Si ce n’est pas le cas, img_correct=0.
  3. Test automatique de l’existence du fichier image sur Commons avec la fonction checkRemoteFile de la bibliothèque sparqlcurl.php. Si le fichier existe, img_exists=1.

Voilà une fois ce traitement éditorial réalisé nous disposons d’un jeu de données propres publiables sur Wikidata.


III. Relier les données à Wikidata avec un bot

Techno : Python, MySQL

Wikidata

Au fait c’est quoi Wikidata ? Coyau l’a bien expliqué par là : Introduction à Wikidata.

TL;DR, on va dire que Wikidata est une base de données libre, collaborative et multilingue, destinée d’abord aux différent projets Wikimedia. « Et plus encore », Wikidata peut être utilisé librement par des tiers. Il est prévu pour la fin 2013 de mettre en place un point d’accès facilité, peut-être un Endpoint comme DBpedia. En attendant avec un bot, on peut déjà se débrouiller.

Installer Pywikibot

Dans le jargon Wikipédia, un bot désigne un robot c’est-à-dire un programme qui va effectuer des éditions, de façon récurrente ou ponctuelle. Ces éditions sont liées à un compte, et s’il l’on débute, avant de se lancer, il ne sera pas de trop de lire les règles et recommandations sur l’utilisation des bots.

Il existe déjà de nombreuses solutions de robots pour les projets Wikimedia s’appuyant sur diverses technologies. Nous allons nous concentrer sur une solution utilisant le langage Python, Pywikibot (aussi appelé Pywikipediabot ou Pywikimediabot), particulièrement adaptée à Wikidata.

Le guide d’installation de Pywikibot explique comment procéder à la mise en place. En résumé, il faut disposer d’un environnement d’exécution pour le langage Python, en version 2.7+ (et inférieur à 3), télécharger les scripts de Pywikibot, puis paramétrer le fichier user-config.py avec le compte Wikimedia utilisé.

Pywikibot, est constitué de deux branches compat et core que l’on retrouve dans la page de téléchargement. Si core semble avoir des spécificités appréciables au niveau des méthodes, j’ai choisi d’opter pour compat, tout simplement parce que, à la différence des essais avec core, cela a fonctionné.

[Edit (3 mai 2014)] Le choix de compat n’était sans doute pas la meilleure option ; il est fortement recommandé d’utiliser core plus adapté à wikidata, permettant en particulier de publier des qualificateurs et les précisions de date. Cela signifie que les scripts python donnés ci-dessous doivent être pris pour leur logique et non pour leur syntaxe.

Enfin dernière étape de l’installation, comme nos données sont dans une base MySQL, il convient de pouvoir y accéder depuis les scripts Python. Une solution très simple : MySQLdb.

L’exécution des scripts Python se fait ensuite par lignes de commande ; pas de quoi être rebuté, ça reste très sommaire. Sous Windows, une fois Python associé aux variables d’environnement, les commandes d’exécution ressemblent à ça, tout compris :

c:\compat\python login.py
c:\compat\python db_wikidata.py

Oui, d’accord, c’est la partie un peu ardue néanmoins largement surmontable sans être ingénieur-informaticien 8e dan. Et quand ça c’est fait, on a tout ce qu’il faut pour s’amuser.
Commençons par lier nos données avec les entrées de Wikidata.


Lier les données récoltées avec Wikidata

La page Amandier en fleurs évoquée précédemment correspond à l’entrée suivante de Wikidata : Q1432536.

Wikidata - Amandier en fleurs

Le script suivant va permettre d’interroger Wikidata avec l’identifiant de ressource récupéré de DBpedia et de récupérer l’entrée correspondante de Wikidata (QXXXXX), si elle existe. La requête se fait en indiquant le nom de la page et la version de Wikipédia.

# -*- coding: utf-8  -*-

#Appel des bibliothèques 
import pywikibot
import MySQLdb 

#Connexion à MySQL
db = MySQLdb.Connect(host="127.0.0.1", port=3306, user="root", passwd="", db="dbwiki")
Cursor = db.cursor()

#Requête de recherche des enregistrements 
sql = "SELECT id,uri_db FROM artworks WHERE Qwikidata=''"

#Exécution de la requête
Cursor.execute(sql)
results = Cursor.fetchall()

#Choix de la version de Wikipédia selon la langue
site = pywikibot.Site("fr", "wikipedia")

#Parcours des résulats
for result in results:

    #On récupère juste le nom de page
    nompage=result[1].decode('utf8').replace("http://fr.dbpedia.org/resource/","")

    #Création de l'objet page
    page = pywikibot.Page(site,nompage)

    #Récupération des données si la page existe sur Wikidata
    data = pywikibot.DataPage(page)

    #Si la page existe
    if data.exists():

        #Récupération des données Wikidata
        dic=data.get()

        #Récupération de l'identifiant Wikidata (QXXXXX)
        qwd=str(data).replace("[[wikidata:","").replace("]]","")

        #Requête d'enregistrement de l'identifiant Wikidata
        Cursor.execute("UPDATE artworks SET Qwikidata=%s WHERE id=%s",(qwd,result[0]))

        #Soumission de l'enregistrement à la base MySQL
        db.commit()

        print str(result[0])+" item Wikidata"
    else:
        print str(result[0])+" pas d'item Wikidata"

#Fermeture de la connexion MySQL
Cursor.close ()
db.close()

Fichier : db_wikidata.py

Voilà, maintenant nous avons les identifiants Wikidata lié aux données récoltées de DBpedia.

Nous aurions pu faire la publication des données directement sur Wikidata. Néanmoins si l’on travaille avec plusieurs DBpedia, il peut être utile de récupérer d’abord l’identifiant Wikidata. En effet, la première fonction de Wikidata est de gérer les liens interwikis qui désignent les liens entre les différentes versions de langues de Wikipédia. Cela permet ainsi d’unifier les ressources des différentes Wikipedia dans une entité commune. Cela signifie que, par exemple, toutes les pages sur La Joconde sont rassemblées dans la même entrée de Wikidata. Pour s’en convaincre il suffit d’en voir la liste en bas de la page Wikidata de La Joconde (allez-y voir, ça mérite vraiment le coup d’œil).

Wikidata - La Joconde

En agrégeant les résultats de plusieurs DBpedia, on se retrouve avec beaucoup d’œuvres en double, triple ou plus encore (par exemple La Joconde est présente sur toutes les DBpedia). La recherche préalable de l’identifiant Wikidata permet alors de dédoublonner les résultats et d’obtenir en local une liste d’œuvres uniques.


IV. Publier les données sur Wikidata avec un bot

Techno : Python, MySQL

Les données recherchées de DBpedia ont été récoltées et nettoyées. Nous pouvons les publier avec le script suivant :

# -*- coding: utf-8  -*-

#Appel des bibliothèques 
import pywikibot
import MySQLdb 

#Fonction pour vérifier la présence d'une propriété donnée dans un item Wikidata
def testprop(prop,claims):
    trouve=False
    for datatmp in claims:
        if str(datatmp['m'][1])==prop:
            trouve=True
            break
    return trouve

#Connexion à MySQL
db = MySQLdb.Connect(host="127.0.0.1", port=3306, user="root", passwd="", db="dbwiki")
Cursor = db.cursor()

#Requête de recherche des données validées
sql="SELECT id,uri_db FROM artworks WHERE is_artwork=1 and img_correct=1 and img_exists=1"

#Exécution de la requête
Cursor.execute(sql)
results = Cursor.fetchall()

#Choix de la version de Wikipédia selon la langue
site = pywikibot.Site("fr", "wikipedia")

#Parcours des résulats
for result in results:
    id = str(result[0])

    #On récupère juste le nom de page
    nompage=result[1].decode('utf8').replace("http://fr.dbpedia.org/resource/","")

    #Création de l'objet page
    page = pywikibot.Page(site,nompage)

    #Récupération des données si la page existe sur Wikidata
    data = pywikibot.DataPage(page)

    #Si la page existe
    if data.exists():

        #Récupération des données Wikidata
        dic=data.get()

        #Test pour savoir si l'item a déjà la propriété image (p18) renseignée
        p18_exists=testprop('18',dic['claims'])

        #Si une image est déjà indiquée 
        if p18_exists:
            print id+" image existe"
        #Sinon on publie la donnée
        else:
            print id+" image"

            #Remplacement des "_" par " " 
            image=result[2].decode('utf8').replace("_"," ")

            #Publication sur Wikidata
            # en indiquant que la donnée est importée de Wikipédia-fr (Q8447)
            data.editclaim("p18",image,refs={("p143","Q8447")})
    else:
        print id+" pas d'item Wikidata"

Fichier : publi_wikidata.py

Et voilà comment publier automatiquement des données, ici extraites de DBpedia, sur Wikidata. On ne va pas dire que c’est très simple, surtout qu’on a pas mal galéré pour en arriver là, mais ce n’est pas plus compliqué non plus. La difficulté principale réside dans l’absence de familiarité avec les technologies et les outils ; rien d’insurmontable. Alors si l’envie vous en dit, n’hésitez pas à vous jeter à l’eau & Enjoy!

Signalons le travail remarquable fait sur DBpedia, de structuration, d’édition, d’architecture, qui offre déjà librement accès à d’immenses corpus de données. Plein d’autres données ne demandent qu’à être utilisées vers Wikidata ou ailleurs.

Épilogue

Cette relation de codage ne montre pas la voie à suivre mais indique juste un petit chemin possible ; il y en a beaucoup d’autres.

Bien entendu, est-ce besoin de le préciser, on peut contribuer à Wikidata, comme à Wikipédia, à WikiCommons et comme à tous les projets Wikimedia, sans connaître DBpedia et sans bot. Pour Wikidata, bien que les connaissances soient très structurées, il paraît actuellement inenvisageable de renseigner automatiquement de nombreuses propriétés.

Dans le domaine des œuvres d’art sur Wikidata, remarquons qu’il existe une Artworks task force où l’on trouvera informations et outils utiles. Bien sûr, les domaines de Wikidata ne se limitent pas à celui des œuvres d’art qui n’en représente qu’une infime partie.

Wikidata est un projet jeune, lancé à l’automne 2012 et même si sa croissance est extrêmement rapide, de vastes champs restent encore à être ensemencés.

DBpedia Artworks | Œuvres d’art | Gemälde | Schilderijen | Έργα Ζωγραφικής

Le projet DBpedia Œuvres d’art consiste à rassembler les données œuvres d’art en provenance de plusieurs dbpedia et à offrir une interface de consultation correspondante.

DBpedia est le pendant web de données de Wikipédia. Il s’agit de données structurées selon des modèles précis. Ces données sont pour l’essentiel extraites de ce que l’on appelle des boîtes d’information ou Infobox parfois situées dans les articles de Wikipédia.

Exemple
Article Wikipédia de La Joconde : http://fr.wikipedia.org/wiki/La_Joconde
Page de la ressource de La Joconde dans dbpedia-fr : http://fr.dbpedia.org/page/La_Joconde

Cette logique de structuration est commune à toutes les versions de Wikipédia.
En revanche, comme il existe plusieurs versions de Wikipédia selon les langues, il existe plusieurs versions de dbpedia correspondantes.

Parmi les modèles de structuration on retrouve celui d’Œuvre d’art. Ainsi nommé pour la version francophone, il se décline en Artwork pour l’anglaise, Gemälde pour l’allemande (et on remarque un léger décalage puisque là il ne s’agit que de peintures), Schilderij pour la néerlandaise, Έργα Ζωγραφικής pour la grecque. Ce sont là les versions de dbpedia sur laquelle j’ai travaillé. D’autres versions ont été essayées (tchèque, espagnole, coréenne, japonaise…), sans succès pour le moment.

Si dbpedia se décline en plusieurs versions, il peut exister des liens (semblables aux liens inter-lanques des articles de Wikipédia) entre ces versions. Ainsi la page dbpedia citée plus haut nous indique que cette ressource correspond à la ressource http://dbpedia.org/resource/Mona_Lisa dans la dbpedia anglophone.
Il est alors possible de rassembler les url (adresses web) des ressources œuvres d’art de plusieurs dbpedia et de les dédoublonner (on ne garde qu’une fois La Joconde).

À partir de la liste de références obtenues, une interface de consultation a été créée. Pour chaque url de ressource œuvre d’art on envoie une requête pour obtenir des informations liées. Ici nous recherchons simplement une vignette d’aperçu, le titre, l’auteur, la date et le lieu de conservation, quand ces données sont présentes.

La dimension multilingue de Wikipédia se révèle en outre particulièrement riche et utile. En retournant sur la page http://dbpedia.org/page/Mona_Lisa on trouve une propriété, rdfs:label, correspondant au libellé de la ressource dans plusieurs langues. En s’appuyant sur ces libellés, l’interface peut être déclinée en plusieurs langues ; si le libellé manque on propose celui de la langue de la dbpedia d’où est extraite la ressource. Si cette dimension multilingue, se révèle incomplète, voire très limitée dans certains cas, elle offre néanmoins, entre autres choses, la possibilité de s’appuyer sur tout le travail de la communauté Wikipédia (indexation, traduction, relation) pour réaliser simplement une interface multilingue d’exploration des ressources, ici d’œuvres d’art. Pour notre plus grand bonheur.

Il n’y a pas de données brutes

Certes il n’y a pas de données brutes. .
Le cadre de la donnée est un signifiant, une pièce de puzzle, un début de discours. ..
Il n’empêche, les données peuvent nous rapprocher d’un rapport brut au monde et aux choses. #tantmieux …
Le peintre disparait. Il reste des personnes qui ont peint des choses. ….
L’artiste perd son sens. L’art n’est plus qu’une ancienne croyance. …..
Et le bleu redevient bleu. Miroir de mon imaginaire où se promènent librement tant de douces rêveries. ……