Le gouvernement a publié des références culturelles et artistiques pouvant servir dans l’enseignement. Pour chaque référence proposée, une fiche a été établie qui contient différents renseignements à son sujet, notamment la ville éventuellement concernée par la référence, le nom de l’artiste, le titre et la nature de l’oeuvre, ainsi que des tags et mots-clefs, des références aux étapes du programme scolaire qui peuvent être concernées par l’oeuvre.
Nous avons procédé à divers traitements pour améliorer l’utilisabilité automatique de ces données. Le fichier CSV a été transformé en XML après avoir séparé les mots-clefs, séparé les tags et procédé à quelques autres améliorations sur la structure des données. Ces traitements ont largement été automatisés, notamment grâce à des feuilles de styles XSLT.
Ensuite, grâce à l’outil de publication de données Datalift, autilisé localement sur une de nos machines, nous avons transformé le fichier XML en RDF.
Enfin, grâce à l’outil ARC (http://arc.semsol.org/), nous avons publié les données dans un Triple Store, accessible pour l’instant uniquement via un Sparql Endpoint à l’adresse suivante:
Cela permet par exemple de faire la requête suivante:
SELECT ?p (COUNT(?p) AS ?pTotal) WHERE {
?s ?p ?o
}
GROUP BY ?p
Cette requête nous donne un bon aperçu du jeux de données sur lequel nous travaillons:
4776 fiches (row, en fait, lignes dans le tableur d’origine)
à presque chaque ligne est associée un titre, une url, une description, un format, un domaine,
4034 peuvent être associées à une des séquences d’enseignement du primaire
4279 peuvent être associées à une des séquences d’enseignements du collège
3704 peuvent être associées à une des séquences d’enseignements du lycée
504 -seulement- sont associées à une ville
61125 tags ont servis à décrire ces références.
A ce niveau de mon exploration, je me demande que sont les ‘domaines’ renseignés dans les fiches.
La requête suivante (qui ressemble beaucoup à la précédente) va nous renseigner:
PREFIX rfha: <http://givingsense.eu/onto/refCulture/refHistArts.rdf#>
SELECT ?v (COUNT(?v) AS ?vTotal) WHERE {
?s rfha:domaine ?v
}
GROUP BY ?v
Elle donne le résultat suivant:
v
vTotal
Arts du visuel
2941
Arts de l espace
961
Arts du langage
629
Arts du quotidien
770
Arts du son
388
Arts du spectacle vivant
499
On voit que plus de 2000 références concernent les Arts du visuel.
En fait, on retrouve ces domaines dans le programme d’Histoire de l’Art et probablement dans le programme d’histoire. Nous verrons dans un prochain billet comment ces liens peuvent permettre d’explorer les références lorsqu’on travaille sur une partie d’un programme et, aussi, d’aller chercher des références similaires dans des ressources telles que DBPedia, Europeana ou les données publiées par le Centre Pompidou.
Pour finir, voilà une requête un peu plus élaborée:
Nous retenons les fiches qui ont des tags et parmi ces tags nous voulons qu’il y ait “Peinture” et “Normandie”. Dans les fiches ainsi sélectionnées, nous récupérons le titre et l’url associée à l’oeuvre.
Cela nous laisse entrevoir les multiples possibilités qui peuvent être offertes, par exemple à un enseignant, pour explorer les ressources à sa disposition. Bien sûr, cela suppose un travail sur l’interface, mais les travaux dans le domaine de la recherche par facette nous donnent des pistes…
Nous avons assuré de façon directe, avec l’outil Protégé, la conception d’ontologies pour la représentation des programmes d’histoire des classes de 6 ème et 5 ème, et de géographie de 5 ème.
Conscients que:
une ontologie a surtout de la valeur si elle est partagée par une large communauté d’utilisateurs,
notre travail est un premier jet qui doit être amendé et complété, notamment par des personnes connaissant bien les sujets abordés dans chaque programme, et les démarches pédagogiques,
notre travail n’a porté que sur une toute petite partie des programmes,
nous avons la préoccupation de rendre possible la contribution à ces ontologies de personnes qui ne peuvent ou ne veulent pas acquérir toutes les notions et méthodes spécifiques des ontologies.
Nous avons donc entrepris une démarche de conception d’outils d’aide à la création d’ontologies.
Pour commencer, nous avons travaillé, avec l’aide d’étudiants, à l’analyse automatisée d’une grande partie des programmes scolaires de l’enseignement secondaire français.
Le résultat de cette analyse fournit trois outils de visualisation qui peuvent aider à créer de nouvelles ontologies et compléter les ontologies existantes. Cette analyse exploite des méthodes classiques d’analyse de texte et combine certains résultats avec notre ontologie de Bloom. Celle-ci est une représentation sous forme d’ontologie de la taxonomie de Bloom qui propose une classification des activités pédagogiques.
Le premier outil permet de voir chaque programme en mettant en évidence:
les mots qui semblent particulièrement significatifs de ce programme,
les verbes, en distinguant ceux qui apparaissent dans notre ontologie de Bloom de ceux qui n’y sont pas,
les entités nommées (noms de personnes de lieux…).
Le deuxième outil présente de façon visuelle l’importance relative des verbes de notre ontologie de Bloom dans l’ensemble des programmes analysés.
Le troisième outil permet de voir les verbes de Bloom présents dans chaque programme, de voir dans quels autres programmes ils sont utilisés et de mettre en contexte leur utilisation.
Ces résultats peuvent être vus à partir de cette page:
Des défauts demeurent -en particulier pour la détection des entités nommées- et des compléments doivent être mis en oeuvre, mais ces résultats montrent déjà que notre démarche de création d’outils d’aide à la conception d’ontologies est pertinente.
Librairie à Lyon (Auteur: Frachet, Source : Wikimédia )
La librairie Javascript rdf-lib.js permet d’exploiter des marquers RDFa introduits dans des pages. Dans cet article, nous allons présenter comment l’utiliser.
rdf-lib.js permet de retrouver tous les attributs rdfa présents dans une page web.
Exemples basé sur une page HTML simple (disons person.html)
<!DOCTYPE html>
<html prefix="dc: http://purl.org/dc/terms/ schema: http://schema.org/">
<head>
<meta charset="UTF-8" />
<link property="profile" href="http://www.w3.org/1999/xhtml/vocab" />
<title>Nxhoaf's Home Page</title>
<base href="http://example.org/nxhoaf/" />
<meta property="dc:creator" content="Hoa Nguyen" />
<link rel="foaf:primaryTopic" href="#me" />
</head>
<body about="http://example.org/nxhoaf/#me"
prefix="foaf: http://xmlns.com/foaf/0.1/">
<h1>Nxhoaf's Home Page</h1>
<p>My name is <span property="foaf:nick">nxhoaf</span> and I like
<a href="http://www.amazon.com/" property="foaf:interest"
lang="en">Amazon</a>.
</p>
<p>
My
<span property="foaf:interest" resource="urn:ISBN:978-0321356680">
favorite <br>
<span resource="urn:ISBN:978-0321356680">
book is the inspiring <br>
<cite property="dc:title">Effective Java</cite> by
<span property="dc:creator">Joshua Bloch</span>
</span>
</span>
</p>
</body>
</html>
En premier lieu, rdf-lib.js dépend de la librairie jQuery, aussi nous devons inclure jQuery par exemple avec ces lignes:
Maintenant, nous avons intégré jQuery, nous pouvons l’utiliser pour attendre l’évènement “ready”. Lorsque la page est prête, nous pouvons réaliser les actions suivantes:
Retrouver les préfixes rdfa utilisés dans la page.
Retrouver les attributs rdfa.
Obtenir les triplets associés à un élément HTML cliqué.
Pour cela, nous créons a nouvel objet rdf:
var rdfLib = new RdfLib();
Retrouver les préfixes rdfa
Tous les préfixes rdfa peuvent être retrouvés avec l’appel:
var prefixes = rdfLib.getAllPrefixes(html);
Le résultat est la table prefeixes contenant tous les préfixes rdfa contenus dans la page. Dans notre exemple, nous aurons:
Pour boucler sur tous les préfixes, nous pouvons utiliser le code suivant:
for (var prefix in prefixes) {
console.log(prefix + ": " + prefixes[prefix]);
}
Retrouver les attributs rdfa
Maintenant, nous pouvons obtenir tous les attributs rdfa contenus dans la page avec le code suivant:
var triples = rdfLib.getAllTriples(html);
triples est une table de triplets. Chaque triplet est une structure composée de trois champs:
triple.subject
triple.predicate
triple.object
dans lequel chacun des champs {subject, predicate, object} associe deux valeurs {key, value} où key est le nom associé à une valeur représentés par value:
Ici, nous avons un exemple d’une façon de parcourir la structure rdfa pour afficher tous les triplets. Supposez que dans notre page, nous avons un élément ‘div’ avec l’id “log”:
Dans ce cas, nous obtenons le sujet de la façon suivante:
var subjectTriple = rdfLib.getSubjectTriple(event.target);
triple.subject = subjectTriple.subject;
rdfLib.getSubjectTriple() est une fonction récursive, qui parcours l’arbre DOM de bas en haut pou retrouver un sujet. Si elle remonte jusqu’à la racine de l’arbre sans trouver de sujet, c’est l’url de la page courante qui constitue le sujet par défaut.
C’est ce qui fait que certains triplets de notre exemple ont le sujet suivant:
Une fois obtenu le sujet, nous afficons le triplet. Le code pour afficher le résultat est le même que précédemment.
Consider an example, when you click on <span property=”dc:creator”>Joshua Bloch</span>, rdfLib.getSubjectTriple() will go up and then find out that <span resource=”urn:ISBN:978-0321356680″> is the subject of the current triple:
<span resource="urn:ISBN:978-0321356680">
book is the inspiring <br>
<cite property="dc:title">Effective Java</cite> by
<span property="dc:creator">Joshua Bloch</span>
</span>
Evidemment, cela n’est pas ce que nous voulons. La librairie fournit une manière d’éviter ces résultats inappropriés.
Tout ce dont nous avons besoin est de déclarer une table contenant les éléments que nous souhaitons ignorer:
var ignoreArray = [
"stylesheet",
"an element with space",
"other-element",
"yetAnotherElement",
];
où “stylesheet”, “an element with space” sont les valeurs de prédicat qui doivent être ignorés. Nous passons la table ignoreArray à la fonction addToIgnoreArray
rdfLib.addToIgnoreArray(ignoreArray);
Cette fonction doit être appelée avant d’utiliser d’autres fonctions de la librairie.
Voir person.html pour plus de détails sur l’exemple.
Depuis plusieurs années, DBpedia donne une représentation formalisée des contenus de Wikipedia, donnant ainsi un accès manipulable par des algorithmes des données de Wikipedia. Le marquage sémantique d’éléments de contenus permet d’enrichir considérablement la recherche et l’exploitation de contenus.
Dans cette optique de marquage, après avoir exploité des marquages RDFa dans les pages Web, fin 2012, Google a introduit le knowledge graph pour les utilisateurs français. Au même moment, une initiative soutenue par le Ministère de la Culture et Wikimédia a annoncé un effort accru pour une branche française de DBpedia, nommée SemanticPedia.
Nous allons voir ici comment ces initiatives peuvent contribuer à l’enrichissement de ressources pédagogiques. Les résultats présentés ici sont des ébauches pour introduire l’idée.
Ressources pédagogiques
Nous allons prendre comme support de travail un extrait d’un livre scolaire produit par lelivrescolaire.fr, disponible en ligne ici. Il s’agit d’un livre d’histoire-géographie, correspondant au programme de 6ème en France en 2013.
La méthode proposée peut se décliner sur le programme d’histoire-géographie d’autres classes ou d’autres documents sur le même programme, mais aussi sur d’autres disciplines comme les sciences de la vie. L’adaptation à des disciplines comme le français ou les mathématiques demandera probablement plus de réflexion. Pour la géométrie, un important travail a déjà été fat par le projet GeoSkills.
Nous allons utiliser le langage SPARQL. Il s’agit d’un langage d’interrogation de données liées -Linked Data- publiées dans un triple store.
Données sur les lieux
L’idée de départ est de récupérer des données sur les lieux et les événements cités.
Pour les lieux, nous pouvons nous intéresser à leur localisation géographique exacte, afin de les localiser sur une carte, à leur appartenance administrative -ex: la Bourgogne est une région de France-, à quelques données factuelles comme le nombre d’habitants ou le type de production le plus significatif en ce lieu.
Nous allons commencer par la localisation géographique.
Web sémantique et données culturelles
Nous voyons que le livre d’histoire aborde les pyramides de Gizeh. Nous pouvons aisément trouver la page correspondante de dbpedia: Gizeh
Observons les différents champs disponibles sur cette page et proposons quelques utilisations. Le lien contient la chaîne ‘resource’ et pointe vers une représentation exploitable automatiquement. Ce lien exploité dans un navigateur renvoie vers une page HTML présentant les mêmes données sous forme d’une page web.
La propriété dbpedia-owl:wikiPageWikiLink permet de récupérer un ensemble de liens vers des pages de Wikipedia relatives à Gizeh. Nous pouvons présenter une partie de ces liens comme sources d’informations complémentaires. Il serait surement utile de filtrer un peu cette liste; ce besoin sera l’objet d’un prochaine billet: filtrage automatique ou humain? effectué au niveau de l’ontologie de programme ou collaborativement par les enseignants?…
Les propriétés prop-fr:latitude et prop-fr:longitude nous donnent la position géographique. Cela peut aisément nous permettre de proposer des compléments grâce à une recherche par la position. Le complément le plus évident est l’affichage d’une carte, par exemple avec l’API de Google Maps.
Ce qui serait intéressant, par exemple, c’est trouver où il y d’autres pyramides afin de situer ce type d’architecture dans le temps et dans l’espace.
Nous voyons là qu’il y a des ressourceson peut imaginer une interface qui propose ces ressources et permet à un humain de faire une sélection. il est probablement beaucoup plus difficile de concevoir un processus automatique qui sélectionne de façon pertinente des ressources qui répondent à une attente précise.
Que faire encore?
Nous avons supposé qu’un lien était proposé entre le contenu d’une partie du livre et l’Egypte antique. Un scénario simple est celui où un utilisateur humain établi ce lien. Nous aborderons dans un prochain billet la question d’identifier dans le livre d’histoire les mots qui constituent probablement des références à des lieux, afin d’automatiser la recherche complémentaire de données sur ces lieux tel que nous venons de la voir.