Carnet web de Charles Népote. Expérimentations, usages, développements, et prospective du web.
[RSS]
Il n'y a pas que Gautier Poupeau qui s'amuse avec RDFa ! Ce dernier le fait avec brio dans un article, comme toujours, on ne peut plus clair, didactique et accessible. Pour de viles raisons matérielles, je vais être beaucoup plus court et technique.
Il ne vous a peut-être pas échappé qu'Operator 0.8a est sortie. Cette extension pour Firefox détecte les métadonnées de chaque page web et permet de réaliser des actions diverses sur ces métadonnées ; par exemple, la description des coordonnées géographiques d'un lieu permettra de visualiser ce lieu dans Google maps, d'un simple clic. Operator utilisait jusqu'à présent les microformats, mais la 0.8a introduit la possibilité de traiter des entités décrites en RDFa.
Operator est extensible via des scripts, permettant de définir des comportements selon les métadonnées de la page.
J'ai donc pris mon plus bel éditeur et, le temps d'analyser l'API (fort mal documentée), développé en quelques heures un script capable d'ouvrir le fichier FOAF d'une personne via Foaf Explorer. Le script fonctionne sous 2 conditions : l'entité décrite est du type foaf:Person et elle est définie par une URI externe (précisée par la propriété rdfs:idDefinedBy).
Je publie le code ci-dessous. Si vous avez réussi à lire jusqu'ici sans lâcher, je ne vous fait pas l'affront de vous expliquer comment l'installer. Je vous propose en revanche de le tester sur la page suivante... Notez enfin que le code est sans doute encore très perfectible.
Profitez seulement !
/***
/* launch_foaf_explorer 0.3 by Charles Nepote (2007-06-14)
Licence GPL v. 2.
launch_foaf_explorer is a script for the Firefox Extension Operator 0.8a
(see http://www.kaply.com/weblog/2007/06/04/operator-08a-is-available/ )
It launch the Foaf file of a given resource on 2 conditions :
-- the resource is a foaf:Person
-- the resource is defined by an external URI with the rdfs:isDefinedBy property
*/
var foaf_explorer = {
/* description : will be shown as an action for a given subject */
description: "Show with Foaf Explorer",
/* icon : ? */
/* icon: "http://xml.mfd-consult.dk/images/foaf-explorer.32.png", */
scope: {
semantic: {
"RDFa" : {
/* property which is concerned by this action */
property : "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
defaultNS : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
}
}
},
doAction: function(semanticObject, semanticObjectType) {
if (semanticObjectType == "RDFa") {
var so = semanticObject;
var isDefinedBy = so.model.getProperty(so.subject, "http://www.w3.org/2000/01/rdf-schema#isDefinedBy");
/* If the object is a foaf:Person and is defined by an external URI (rdfs:isDefinedBy) */
/* then launch the foaf file with foaf explorer */
if (so.type == "http://xmlns.com/foaf/0.1/Person" && isDefinedBy) {
/* alert (so.type); /* debug */
return "http://xml.mfd-consult.dk/foaf/explorer/?foaf=" + isDefinedBy;
}
}
}
};
SemanticActions.add("foaf_explorer", foaf_explorer);