ILOT – Sémantique et éducation

Usage de la librairie RDFaParser

Lyon_librairie_083

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)

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:

Retrouver les préfixes rdfa

Tous les préfixes rdfa peuvent être retrouvés avec l’appel:

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:

Retrouver les attributs rdfa

Maintenant, nous pouvons obtenir tous les attributs rdfa contenus dans la page avec le code suivant:

triples est une table de triplets. Chaque triplet est une structure composée de trois champs:

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 »:

Ci-dessous figure un extrait du résultat obtenu sur notre exemple  example html:

Obtenir les triplets associés à un élément HTML cliqué

La librairie rdfalib fournit un moyen d’obtenir les triplets rdfa associés à un élément HTML cliqué. Nous avons deux possibilités:

  1. L’élément cliqué n’a pas de sujet explicite; par exemple <span property= »dc:creator »>Joshua Bloch</span>

  2. L’élément cliqué a un sujet; par exemple <span resource= »urn:ISBN:978-0321356680″>

Dans les deux cas, nous essayons d’obtenir un triplet dans la zone cliquée:

Si la zone cliquée ne contient aucun triplet, rien ne se passe:

Sinon, nous poursuivons…

* si l’élément cliqué n’a pas de sujet explicite:

Dans ce cas, nous obtenons le sujet de la façon suivante:

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:

subject: about:http://shadok.enst.fr/ilot/OwlProject/rdfa/person.html

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:

 As a result, we have:

 * si l’élément cliqué a un sujet

Lorsque l’élément cliqué a un sujet, il est la base d’un triplet.

Nous parcourons alors l’arbre DOM vers le bas pour trouver tous les fils de cet élément qui permettent de compléter des triplets.

en utilisant l’appel

rdfLib.getAllTriples(event.target);

Supposez que nous cliquons sur l’élément <span resource= »urn:ISBN:978-0321356680″>, l’affichage des triplets pourra être obtenu ainsi:

 alors le résultat sera:

Noter que lorsque utilisé sur la racine de l’arbre DOM, l’appel RdfLib.getAllTriples(event.target) listera tous les triplets définis dans la page.

Ignorer certains triplets

La spécification  RDFa prime specification indique que lorsque nous avons un élément contenant les attributs ‘rel’ et ‘href’ simultanément,

le contenu de l’attribut ‘rel’ doit être considéré comme prédicat (predicate) et l’attribut ‘href’ doit être considéré comme object.

Malheureusement, il y a des execptions. Pae exemple, la déclaration d’un css externe répond à ces règles:

 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:

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

 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.

(Source d’image : http://commons.wikimedia.org/wiki/File:Lyon_librairie_083.JPG )

Auteur : Moissinac

Maitre de conférence à Télécom ParisTech, Département Signal et Image, Groupe Multimédia

Jean-Claude Moissinac mène des recherches sur les techniques avancées pour la production, le transport, la représentation et l’utilisation des documents multimédia.
Principaux axes de recherche actuel : représentations sémantiques, adaptation de documents multimédias à des contextes variés d’utilisation ; utilisation du multimédia pervasif

Commentaires Clos.