Web Sémantique / Web of Data / Linked Open Data

De $1

Version de 13:33, 18 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction

Lors de cette séance, un  cours d'introduction au web sémantique/web de données sera donné, ainsi qu'une présentation de ce que l'on appelle le Linked Open Data, illustré par des démonstrations de sites tels que DBPedia.org ou freebase.com, ainsi que de sites web publics exploitant le LOD.

Lors du TP vous apprendrez à utiliser DBpedia et Freebase, notamment en les requêtant via du javascript, puis vous intégrerez les morceaux de code développés à votre pictionary HTML5.

Support de cours

Introduction au web sémantique/web de données

Web Sémantique ou comment les ontologies pourront favoriser l\'échange des connaissances sur le web du futur
View more presentations from Fabien Gandon.

Présentations de Freebase (base de données de graphe appartenant à Google)

Une présentation sur le linked data

Contient de petits tutoriaux sur comment requêter DBPedia, quels outils utiliser (JQuery sparql plugin, ARC, autres)...

Démos

Tutoriaux spécifiques

Travaux pratiques

Jouer un peu avec Freebase, utiliser Freebase comme source de données pour le pictionary

Commencez par parcourir le site http://www.freebase.com, lisez quelques documentations, regardez les différents URLs, etc. Vous remarquerez que freebase est à la fois un wiki à la wikipedia, qui permet de contribuer non pas des pages de texte mais à la fois des données structurées (typées, avec propriétés et relations) mais aussi de contribuer des schémas, c'est-à-dire des modèles de données. Par ailleur freebase dispose d'une API riche, disponible à la fois pour des langages de programmation classiques comme java ou php mais aussi d'une API javascript. Depuis que Google a racheté la société metaweb à l'origine de freebase, de nombreux outils ont vu le jour comme un outil en ligne pour tester les requêtes, etc.

Quelques ressources pour le développement d'applis consommant du freebase :

Mais le vrai enjeu consiste à comprendre le langage de requête MQL : http://www.freebase.com/docs/data/first_query

Etudier les exemples fournis ici !

  • Récupérez cette page html : freebasejq.zip
  • Regardez comment 1) on a utilisé le plugin jquery freebase suggest au début, et 2) On peut envoyer une requête et analyser les résultats. Testez la requête dans le "freebase query editor" : http://www.freebase.com/queryeditor, vous remarquerez que certaines propriétés sont en fait des id qui nécessitent d'aller chercher les ressources vers d'autres URLs (par exemple l'image et le résumé).

La requête :

[{'id': null, 
  'name': null, 
  'type': '/biology/animal',
  "/common/topic/image" : [{ "id" : null, "optional" : true, "limit" : 1 }],
  "/common/topic/article" : [{ "id" : null, "optional" : true, "limit" : 1 }],
  "limit": 10}]

... inqiue que l'on veut tous 10 résultats ("limit": 10) dont on ne connait pas l'identifiant ("id"=null) mais dont le type est un animal ("type": "biology/animal") et pour lesquels, je veux les images ("/common/topic/image": []") et les abstracts ("/common/topic/article"). Pour pouvoir afficher les images et les abstracts, on utilise l'API "trans" de freebase : http://www.freebase.com/docs/web_services/trans_raw

Essayez donc de modifier ces requêtes pour récupérer tous les animaux, récupérer leurs noms dans un tableau et en tirer un au hasard.  Enfin, intégrez ce code dans votre pictionary pour "tirer" le nom d'un animal et sa description au hasard au début d'une partie : ce sera le sujet à dessiner. Lorsque le temps limite est atteint ou lorsqu'un joueur a trouvé, on affichera la photo de l'animal avec le texte "bravo, la bonne réponse était : " suivi du nom. Ou bien "dommage, personne n'a trouvé, il s'agissait de : " suivi du nom et de la photo.

Par la suite, vous pouvez créer dans votre projet des requêtes pour d'autres "catégories" comme "sport", "histoire", "science", etc... En quelques mots, vous allez utiliser freebase comme source de données pour votre projet.

Regarder aussi DBpedia

DBpedia est issu de travaux académiques et ne bénéficie pas d'outils, d'interfaces graphiques et d'APIs aussi "léchés" que ceux de Freebase. Dans la plupart des cas les gens utilisent DBpedia via un "sparql endpoint" (voir la partie "online access" de dpedia.org, et aussi la troisième présentation de cette page sur le linked data). Tester quelques reqêtes.

Voici un exemple de requête Sparql envoyée via un programme en javascript + jquery, les résultas sont en JSON et l'exemple montre comment récupérer les différents éléments)

Cet exemple exécute la requête SPARQL suivante, qui demande la liste des pays (?country) et des populations (?population), qui ne touchent pas la mer (type:LandLockedCountries) et dont la population est supérieure à 15M d'habitants :

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>        
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
SELECT ?country_name ?population
WHERE {
    ?country a type:LandlockedCountries ;
             rdfs:label ?country_name ;
             prop:populationEstimate ?population .
    FILTER (?population > 15000000) .
}

La requête est dans sa version "encodée" dans l'URL dans le cas de cet exemple en javascript (voir la variable "url" au début du code) et le résultat est demandé en json (voir la fin de l'URL)

DBpedia autorise plusieurs formats pour les résultats et fournit plusieurs URLs pour le requêtage. L'exemple est tiré de ce tutorial : http://personnel.univ-reunion.fr/fre...ple/index.html

Exemples d'URLs concernant la perche du nil (vue HTML : http://dbpedia.org/page/Nile_perch, vue RDF/XML ici : http://dbpedia.org/data/Nile_perch et vue JSON : http://dbpedia.org/data/Nile_perch.json).

Ressource intéressante : Sparcool.net, un moyen simple de requêter le LOD : http://sparcool.net/