identi.ca, FOAF et SIOC

Le(s) petit(s) monde(s) du web sémantique et de twitter bruissent depuisune semaine environ de l'annonce de la publication du site de microblogging identi.ca. Les avantages du service sont nombreux et divers : il repose entièrement sur un logiciel libre, laconica, il est interopérable avec toutes les instances de laconica, il utilise massivement le protocole XMPP pour communiquer (c'est le protocole qui fait fonctionner Jabber et Google Talk), et les données que vous entrez sur le site sont sous licence Creative Commons By (autrement dit, vos données aussi sont libres, et utilisables par tout le monde). Enfin, et c'est ce dernier point qui fait vibrer le web sémantique, l'outil utilise largement le web sémantique, et plus particulièrement le vocabulaire FOAF, qui décrit les relations entre personnes.

Dans le code source de ma page identi.ca, on trouve (dans le head) la ligne <link rel="meta" href="http://identi.ca/lespacedunmatin/foaf" type="application/rdf+xml" title="FOAF"/> (c'est le code permettant la découverte automatique du fichier FOAF par les robots et les logiciels. Il y a la même chose dans le head de ce blog). On peut visualiser le contenu de ce fichier à l'aide de l'outil SIOC Browser.

Les données qui m'intéressent sont les foaf:knows. D'après les spécifications de FOAF, ce terme s'emploie pour (je traduis) une large idée de connaît, mais [qui] demande une certaine forme de réciprocité (c'est à dire que ça ne s'applique pas aux rôdeurs). Par exemple, ce fichier FOAF prétend que je connais Dan Brickley, et qu'il y a une réciprocité, ce qui est totalement faux ! Je ne l'ai jamais rencontré, et il ne sait sans doute pas qui je suis, il est à peine au courant de mon existence.

En revanche, il existe un autre vocabulaire, SIOC, qui est parfaitement adapté à cette situation, à travers le terme subscriber_of (et son inverse, has_subscriber), définit comme étant le fait qu'un utilisateur (une personne — FOAF — a plusieurs comptes d'utilisateur — SIOC —) suive (au travers d'un fil RSS par exemple) l'activité d'un conteneur de données (le terme sioc:Container), dans le cas présent, le compte identi.ca (SIOC) de Dan Brickley (FOAF).

Et ce problème de mésusage de FOAF est valable aussi pour les exporteurs RDF de Flickr ou Twitter : les gens à la pointe du web sémantique confondent personnes (FOAF) et sources de données (SIOC). Et je trouve embêtant qu'une technologie encore balbutiante soit déjà polluée par ceux qui la promeuvent.

Cela étant dit, merci à tous pour ces outils !

(l'autre hypothèse, c'est que je n'aie rien compris à FOAF et SIOC)

Commentaires

1. Le jeudi, juillet 24 2008, 01:29 par Charles Nepote

Tu as fais part de tes remarques à Evan (il est assez accessible et ouvert) ?

2. Le jeudi, juillet 24 2008, 10:00 par Olivier G.

Oui, je l'ai fait, et à priori c'est inscrit sur les tablettes de hex après être passé par Evan.

3. Le jeudi, juillet 24 2008, 11:32 par Alex.

Si si, tu as bien compris la distinction entre les deux rassures toi.
SIOC se place au niveau des comptes utilisateur et de leurs relations, et FOAF au niveau de la personne physique.

Une remarque pour nuancer ta vision des choses par contre.

foaf:knows n'est pas, dans la spec OWL, définie comme propriété symétrique. Donc un raisonneur ne déduira pas ":a foaf:knows :b" => ":b foaf:knows :a". D'un point de vue machine, la réciproque n'est donc pas formelle.

Cependant en effet, la description du terme définit le fait qu'il doit y avoir une "forme d'interaction réciproque" tout en restant assez large sur la sémantique de cette notion de 'knows'. De ce fait, on peut considérer une relation foaf:knows à partir du moment ou l'on a entendu parler de quelqu'un, ce qui impliquerait, si l'on souhaite prendre en compte cette réciprocité "manuelle" que l'on doive utiliser foaf:knows pour pointer vers quelqu'un que l'on "connait" et qui - à minima - a entendu parler de nous. A partir de là, ça ne me semble pas incohérent de mettre ce lien pour définir des réseaux sociaux puisqu'en général, lorsqu'on crée une connection dans ces outil, l'autre en est informé, il connait donc ton existence, ce qui semble être une condition minimale pour une relation foaf:knows.

Note que si foaf:knows devient symétrique dans la spec, à partir du moment ou foaf:knows est toujours aussi flou, la remarque reste valable.

Ceci dit, c'est une bonne pratique d'utiliser SIOC et la notion de subscriber, ne serait-ce que pour avoir un niveau de granularité plus précis dans les relations (je connais X car je le suis sur tel service, etc)

Je vais lancer la discussion sur foaf-dev, ça serait intéressant d'avoir d'autres avis sur la question, notamment pour faire suite à un thread récent sur foaf:knows et le vocabulaire RELATIONSHIP.

4. Le jeudi, juillet 24 2008, 12:17 par Olivier G.

"l'autre en est informé, il connait donc ton existence" : il y des tas d'infos que je lis et que j'oublie tout aussi vite, ça me semble donc un raisonnement un peu forcé.

De plus, il y a un autre problème avec cette définition : est-ce que foaf:knows "s'éteinds" avec le décès de la personne liée ? Est-ce qu'on peut dire que Michel Rocard foaf:knows François Mitterrand ?

5. Le jeudi, juillet 24 2008, 12:53 par Alex.

Pour la première question, oui et non.
Tu oubiles certes, mais tu l'as su à un moment.
Et, à partir du moment ou la sémantique de foaf:knows est faible, est-ce qu'on ne peut quand même pas considérer qu'avoir eu connaissance de quelqu'un à un moment donné permet de dire qu'on connait toujours son existence (eg: si je demande à Dan s'il te connais, un réponse pourrait être "oui, j'ai lu son thread sur foaf-dev", donc il a conscience de ton existence).
Je pousse peut-être un peu, mais ce que je veux dire c'est que la sémantique volontairement faible de foaf:knows peut sans doute s'adapter à ces cas, et qu'il y a à un moment ou le triplet a été valide, cf point ci-dessous.
(en supposant en plus qu'on puisse tracer l'origine du foaf:knows et de la relation inferée on peut savoir qui a ajouté cette relation, et ensuite l'accepter ou non selon des critères de confiance, etc - cf la question sur foaf-dev lists.foaf-project.org/pi...

Pour la seconde, je dirai qu'il n'y a pas de problème dans ton exemple. Après tu peux toujours contextualiser l'information dans la durée, en n'utilisant plus une relation directe foaf:knows, mais par exemple une instance de la classe Relationship (du vocab du même nom) et lui ajoutant des propriétés temporelles. Sachant que le problème de la validité d'un triplet dans le temps se pose aussi (je ne connais pas particulièrement le sujet, mais je sais qu'il y a des travaux pour contextualiser tout ça - cf www.dcc.uchile.cl/~cgutie... - et plus pragmatiquement l'utilisation de graphes RDF pour gérer tes triplets auxquels tu ajoute des propriétés temporelles).

6. Le jeudi, juillet 24 2008, 14:24 par Henry Story

Oui le relationship vocabulary est ce qu'il faut:

vocab.org/relationship/

Le seul probleme est que la semantique des relations est pour l'instant fausse. Mais nous sommes en train d'essayer de reparer ca. Vois le thread ici

lists.foaf-project.org/pi...

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

La discussion continue ailleurs

URL de rétrolien : http://www.lespacedunmatin.info/blog/index.php?trackback/897

Fil des commentaires de ce billet