RDFPic Extended
Qu'est-ce que RDFPic, et RDFPic Extended ?
RDFPic, c'est l'utilisation du RDF pour décrire des photos. Je l'ai "amélioré", avec PHP, pour qu'il affiche ces méta-données (les données RDF, qui décrivent des données) sous forme de pages Web. J'ai appelé la version améliorée RDFPic Extended.
RDFPic Extended permet de naviguer dans des dossiers de photos (sans réelle profondeur pour l'instant, puisque les dossiers contiennent directement les photos), et d'afficher les photos qu'ils contiennent, ainsi que des informations sur celles-ci, au format XHTML 1.0 Strict.
Le RDF, ça sert à quoi ?
Le RDF permet de décrire des données. C'est un "descendant" de XML, puisqu'il en a la syntaxe. Un fichier RDF, ce sont donc des données qui décrivent d'autres données : les données RDF sont donc des méta-données.
Le RDF est extensible par le biais des RDF Schemas, qui permettent de définir d'autres tags. Par exemple, RDFPic (Extended) utilise le schéma du Dublin Core. Celui-ci est intégré à l'aide des espaces de nommage, et l'élément title du schéma du Dublin Core s'appelle donc par dc:title (où dc est le préfixe de l'espace de nommage du Dublin Core).
RDFPic Extended hérite également du schéma Technical créé pour RDFPic, qui permet de spécifier des données techniques sur la photo (caméra, objectif, film...). Il est possible d'intégrer n'importe quel schéma RDF valide (à condition pour l'instant qu'il n'y ait pas de doublons dans les noms, car les espaces de nommage sont supprimés lors de l'affichage... problème à corriger).
RDFPic Extended gère les espaces de nommage par leur URL plutôt que par leur nom (ou préfixe) : cela permet de mettre le nom que l'on veut. Par exemple, si epkzjerngjk a été défini dans l'entête du fichier RDF comme le nom de l'espace de nommage du DC, RDFPic Extended affichera les données comme s'il s'agissait d'un nom plus courant, comme par exemple dc. Ceci est très utile pour l'interfacer avec le programme JAVA RDFPic du W3C qui préfixe ses espaces de nommage un peu au hasard (s0, s1 et s2 ne correspondent pas toujours au mêmes espaces).
Et ça marche ?
Oui.
Et pas besoin d'installer des trucs et des machins à côté : RDFPic Extended n'a besoin que de PHP (logique) et d'un serveur Web (réalisé et testé sur Apache 1.3.27, tests à venir sur 2.0.45) :
Ces fonctions sont activées par défaut, et utilisent la librairie expat fournie avec la distribution. Si vous compilez PHP comme module Apache et avec les versions 1.3.9 ou plus récent, PHP va automatiquement utiliser la librairie fournie par Apache.
La version Windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.
Documentation de PHP
Comment ça marche ?
Lorsqu'on effectue une requête, le script central effectue plusieurs tests :
- Il cherche s'il y a une préférence clairement déterminée dans le champ HTTP
Accept, et s'il trouve en premierapplication/rdf+xmlouimage/jpeg, il renvoie la ressource correspondante. - Il cherche ensuite une préférence indiquée "à la main", après l'URL normale (
http://serveur/Dossier/Image/rdf, eg), s'il en trouve une, il renvoie la ressource demandée. - Si l'on ne lui demande qu'un dossier (URL du type
http://serveur/rdfpic/Dossier), il affiche les images qu'il contient, et quelques métadonnées sur le dossier. - Enfin, si l'on lui demande une image, il affiche une petite page de présentation, avec l'image réduite et cliquable, son titre, quelques métadonnées (titre, date, lieu), et un tableau du RDF complet.
On peut pas faire autrement ?
On peut utiliser XSLT pour générer des fichier XHTML, mais j'ai préféré utiliser PHP, qui permet de définir de "fausses" URL (qui renvoient sur un script au lieu d'une ressource), comme c'est également le cas dans ce blog, où les liens vers les archives, les catégories et les permalinks sont "faux" (ils n'ont pas de "réalité" dans l'arborescence du serveur).
De plus, PHP étant un langage dynamique, il m'a été possible d'ajouter des fonctions de recherche simples (peut-être qu'un jour, je mettrai XQuery aux fonctions de recherche... peut-être).
Ca peut s'améliorer ?
Ben oui. J'ai déjà quelques idées : utiliser XSLT on-the-fly pour générer une partie du code XHTML, ce qui permettrait l'utilisation de "templates", mais en appelant la conversion XSLT depuis un script PHP.
Il pourrait aussi être intéressant d'utiliser un système interne pour générer les RDF et uploader les images... Pour l'instant, on utilise le programme RDFPic en JAVA issu du W3C (ou presque) pour générer les RDF.
Toujours dans la même optique, un parseur RDF Schéma, qui permettrait de modifier dynamiquement et en ligne les templates de présentation...
Plus urgemment, il faudrait sortir de l'optique JPEG de RDFPic, pour pouvoir s'étendre (oh ! le jeu de mots...) à d'autres formats, comme PNG (et peut-être GIF, mais c'est pas sûr, pour des bibliothèques de cliparts par exemple). En fait, ce qui serait bien, c'est que RDFPic Extended deviennent indépendant du format. Et puis pourquoi pas proposer une version mobile ? Et deux becs à gaz
?
Toutes vos idées et vos commentaires sont les bienvenus.

Commentaires
1. Le mardi 10 mai 2005 Ã 23:25, par Pascal
2. Le mercredi 22 février 2006 à 23:18, par ativan
3. Le mercredi 22 février 2006 à 23:19, par ativan
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.