Les petites cases

RDF par l'apprentissage : FOAF

J'avoue que j'ai encore du mal à comprendre tous les principes de RDF. Je me suis donc pris en main et pour découvrir ses potentialités et son fonctionnement, j'ai commencé par FOAF. Pour bien poser tous les concepts, quoi de mieux que de vous faire partager cette découverte.

Le principe de base de RDF

Comme son nom l'indique, Ressource Description Framework, RDF offre des outils pour décrire des ressources de n'importe quel type, du moment qu'elle est désignée par une URI. Il est basé sur le principe des triples : <SUJET> <PREDICAT> <OBJET>.

Si je prends un exemple simple, cela donne : « l'URL http://www.lespetitecases.net (le sujet) a :

  • pour titre (prédicat) : les petites cases (objet) ;

  • pour description (prédicat) : Fourre-tout personnel virtuel de Gautier Poupeau, alias Got (objet) ;

  • pour auteur (prédicat) : Gautier Poupeau (objet) ;

  • pour langue (prédicat) : le français (objet) ; »

Cette description de la page d'accueil de ce site peut s'exprimer au moyen d'un « vocabulaire » RDF nommé Dublin Core, qui est une norme de métadonnées qu'on peut aussi inclure dans du HTML1. Le fichier obtenu incluant d'autres prédicats offerts par le Dublin Core est disponible à l'adresse http://www.lespetitescases.net/petitescases.rdf. Il peut être validé avec le validateur RDF du W3C, ce qui permet de voir les triples et le graphe obtenus. En effet, à la différence de XML dont le principe est basé sur le principe de hiérarchisation sous forme d'arbre, RDF est basé sur le principe des graphes, même si la syntaxe est la même. Ainsi, la relation entre les éléments et entre les éléments et les valeurs n'est pas implicite comme en XML, mais exprimée clairement2.

De la même façon qu'il existe des grammaires XML déterminant le nom des balises et des attributs, leurs rôles et leurs règles d'agencement comme la TEI, il existe la possibilité de créer des schémas RDF qui déterminent entre autre les prédicats qu'on peut employer dans un fichier RDF. Outre Dublin Core dont j'ai déjà parlé, le schéma le plus connu à l'heure actuelle est FOAF (Friend of a friend).

Syntaxe de FOAF

Il existe de nombreuses ressources sur le Web qui expliquent parfaitement FOAF en français, par exemple :

Pour les faignants du clic ;-) et pour faire vite, FOAF permet de décrire une personne et ses connaissances au moyen d'un vocabulaire RDF ce qui permet, entre autres, de faire apparaître les réseaux sociaux. En revanche, il existe moins de ressources expliquant la syntaxe de FOAF en français, on trouve quelques ressources en anglais :

L'autre moyen est de lire les spécifications et/ou de s'aider des fichiers FOAF que certains internautes ont mis à disposition sur leur site Web. Dans le cadre de cet apprentissage3, j'ai utilisé ceux de :

Nous sommes maintenant armés pour commencer à écrire notre fichier FOAF. Mais, avant de commencer et pour ceux qui veulent directement passer à la partie suivante, car l'écriture d'un fichier RDF à la main les rebute définitivement, vous pouvez utiliser FOAF-a-matic, qui permettra de générer automatiquement un fichier FOAF simple à partir du renseignement d'un formulaire. Personnellement, je n'ai pas trouvé le résultat concluant et j'ai préféré repartir de zéro.

On commence par déclarer les espaces de noms nécessaires pour notre fichier FOAF :

<rdf:RDF

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

xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

xmlns:foaf="http://xmlns.com/foaf/0.1/">

Puis, on décrit la personne, par exemple vous-même :

<foaf:Person rdf:nodeID="me">

  • Nom : <foaf:name>votre nom</foaf:name>

  • Titre : <foaf:title>(M., Mme, Mlle, Dr....)</foaf:title>

  • Prénom : <foaf:givenname>prénom</foaf:givenname>

  • Nom de famille :<foaf:family_name>...</foaf:family_name>

  • Surnom : <foaf:nick>....</foaf:nick>

  • Page perso : <foaf:homepage rdf:resource="http://www.site.com"/>

  • Weblog : <foaf:weblog rdf:resource="http://www.site.com"/>

  • Photo : <foaf:depiction rdf:resource="URL vers la photo"/>

  • Date de naissance : <foaf:dateOfBirth>YYYY-MM-DD</foaf:dateOfBirth>

  • Sexe : <foaf:gender></foaf:gender>

  • Intérêt : <foaf:interest rdf:resource="URL vers l'intérêt que vous avez"/>, exemple : <foaf:interest rdf:resource="http://www.tei-c.org"/>

  • Compte utilisé : <foaf:holdsAccount>

  • Compte en ligne : <foaf:gender>male</foaf:gender>

  • <foaf:accountServiceHomepage rdf:resource="URL vers le site accueillant le compte"/>

  • <foaf:accountName>Nom du compte</foaf:accountName>

  • Personne connue : <foaf:knows><foaf:Person>Avec les mêmes éléments décrits au-dessus</foaf:Person></foaf:knows>

Aller plus loin : les espaces de noms

Une des grandes forces de RDF est sa modularité. Ainsi, en déclarant des espaces de noms qui font référence à différents vocabulaires/schéma RDF, vous pouvez enrichir sur des points spécifiques votre fichier RDF. FOAF n'échappe pas à cette règle ce qui permet d'augmenter significativement les informations qui y sont contenues :

  • Dublin Core (xmlns:dc="http://purl.org/dc/elements/1.1/") permet de préciser le titre des ressources en ligne citées dans le FOAF, exemple : <foaf:homepage rdf:resource="http://www.lespetitescases.net" dc:title="Les petites cases"/>

  • BIO (xmlns:bio="http://purl.org/vocab/bio/0.1/") permet de décrire des informations biographiques sous la forme d'événement, exemple :
    <bio:event><bio:Birth><bio:date>YYYY-MM-DD</bio:date><bio:place>Lieu de naissance</bio:place></bio:Birth></bio:event>

  • MeNow (xmlns:menow="http://schema.menow.org/#") permet de décrire différents aspects du « statut » courant d'une personne, comme le livre qu'il lit, son humeur, son travail....4

  • Relationship (xmlns:rel="http://purl.org/vocab/relationship/") permet de décrire précisément le type de relation entretenue avec une personne connue et décrite dans le FOAF, exemple : <rel:livesWith rdf:nodeID="manue"/>

  • DOAC (xmlns:doac="http://ramonantonio.net/doaw/0.1/") permet de décrire précisément en RDF un CV. Ce vocabulaire a l'air récent et je n'ai pas réussi à valider mon fichier RDF en l'utilisant. Je l'ai donc laissé en commentaire pour l'instant.

  • GEO (xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#") permet d'indiquer la latitude et la longitude de votre résidence.

Avec tout cela, vous obtenez un beau fichier FOAF qui peut ressembler à ça.

Pour quoi faire et comment indiquer l'existence de son FOAF ?

C'est évidemment la question que tout le monde se pose. Je n'entrerai pas dans ce débat et vous renvoie en particulier à l'article d'Internet actu. Personnellement, cela m'a permis de mieux comprendre les mécanismes de fonctionnement de RDF avec un exemple relativement simple surtout avec la visualisation du validateur du W3C. Malgré tout, il existe pleins de petites applications à FOAF :

  • Déclarer votre fichier FOAF dans le header de vos pages HTML selon la procédure suivante : <link rel="meta" type="application/rdf+xml" title="FOAF" href="nomdufichierfoaf.rdf"/> ce qui permet l'auto-détection du fichier FOAF. Cette indication permet ensuite à des extensions Firefox comme Foafer de disposer d'un lien direct vers l'affichage du fichier FOAF dans FOAF explorer ou le script greasemonkey FOAF discovery qui permet de voir en haut de la page Web les informations du FOAF

    Image1

  • Ajouter un lien vers votre fichier FOAF dans l'en-tête de vos e-mails . Cela permet ensuite à l'extension Thunderbird-FOAF de placer un lien vers le fichier FOAF en ligne, mais on pourrait imaginer la possibilité d'utiliser les informations du fichier FOAF pour ajouter une personne dans son carnet d'adresses, comme avec le format Vcard ;

  • Visualiser des fichiers FOAF et ajouter des nouvelles connaissances avec FOAF explorer ou encore le graphe de votre fichier FOAF en SVG avec FOAFnaut ;

  • Déclarer son fichier FOAF dans son fil RSS.

Si vous voulez d'autres applications de FOAF ou des idées sur les possibilités de FOAF, je vous renvoie vers la partie qui y est consacré sur le blog de Pascal.

Bon, maintenant, c'est à vous, Manue, Piotrr, Marin, Hubert, Romuald et les autres, quand faites-vous votre fichier FOAF ?

Quelques notes en passant

1 Cf aussi une introduction en français sur Openweb : http://openweb.eu.org/articles/dublin_core/.

2 Si vous voulez aller plus loin dans la découverte de RDF, je vous renvoie à l'explication sur le blog de Danny Ayers signalée par Karl.

3 J'en profite pour remercier les auteurs de ces FOAF qui m'ont bien aidé.

4 Pascal a fait un billet détaillant les possibilité de Me now

RDF Geekeries — 

Commentaires

Très intéressant !
Des nouveautés depuis ce billets? Vu que je ne sais toujours pas si Lodel notifie des nouveaux messages, peux-tu me contacter par mail ou sur mon blog. Si tu préfères que j’arrête de demander-des-réponses-sans-passer-sur-le-site, dit-le moi aussi (oui, ça fait un peu cercle vicieux, j'en conviens).
Il y a une petite faute : "Compte en ligne : male"...
Pour la faute, on va dire que c'est en anglais ;-) Sinon, je n'avais pas vu, mais il semble qu'il y ait un petit souci, ça n'a pas grand chose à voir... Il faudra que je corrige tout ça à l'occasion. Merci !
Très intéressant !
Des nouveautés depuis ce billets? Vu que je ne sais toujours pas si Lodel notifie des nouveaux messages, peux-tu me contacter par mail ou sur mon blog. Si tu préfères que j’arrête de demander-des-réponses-sans-passer-sur-le-site, dit-le moi aussi (oui, ça fait un peu cercle vicieux, j'en conviens).
Il y a une petite faute : "Compte en ligne : male"...
Pour la faute, on va dire que c'est en anglais ;-) Sinon, je n'avais pas vu, mais il semble qu'il y ait un petit souci, ça n'a pas grand chose à voir... Il faudra que je corrige tout ça à l'occasion. Merci !