Trancodage de dates informatiques

Bonsoir,

Un petit script php très simple pour convertir une date du type AAAA-MM-JJ HH:MM:SS en date normée suivant RFC 822 utilisée dans les flux RSS ou dans le monde OAI-PMH :

$datedepart = '2007-09-10 00:00:00'; // on entre la date (qui peut venir d'un champ de type datetime de SGBDR : MySQL, PostgreSQL, etc.)
list($date, $hours) = split(' ', $datedepart);
list($year,$month,$day) = split('-',$date);
list($hour,$min,$sec) = split(':',$hours);

$date = date(r,mktime($hour, $min, $sec, $month, $day, $year));
print "$date";

Stéphane.

Source : http://www.phpfreaks.com/quickcode/from-MySQL-datetime-to-RFC-822-for-RSS/597.php

ICA-AtoM : un logiciel web pour la description de fonds d’archives

Bonjour,

L’International Council on Archives (ICA) en partenariat avec The Dutch Archiefschool Research Institute et Artefactual Systems Inc. proposera dans quelques semaines une première version béta d’ICA-AtoM. La Direction des archives de France sont également de la partie.

ICA-AtoM est l’accronyme de International Council on Archives – Access to Memory. Ce projet a été créé autour d’un autre projet de l’ICA sur les droits de l’homme « The ICA Archives and Human Rights working group ». Ce projet a obtenu un fiancement de l’UNESCO pour réaliser un guide avec moteur de recherche sur les fonds d’archives concernant les violations des droits de l’homme. De ce projet, basé sur les standards de l’ICA, est né le projet d’ICE-AtoM.

Sur le plan technique, cet outil s’appuie sur le framework Symfony (PHP5) et donc sur un modèle MVC ( Model-View-Controller) dont les auteurs détaillent le plan dans le blog de développement. Le conteneur de données semble être MySQL par défaut, mais les auteurs, qui ont utilisés le connecteur Propel, indiquent qu’il sera possible d’utiliser d’autres SGBDR.

Le guide réalisé pour HumansRights est en ligne mais il n’est pas très fonctionnel, hélas, mais une vidéo est disponible. ICA-AtoM sera sans doute présenté lors du prochain congrès de l’ICA qui aura lieu à Kuala Lumpur du 21 au 27 juillet 2008. Affaire à suite.

Bon week-end, Stéphane.

Décrire un objet numérique ou numérisé : utilisation du Dublin Core

Bonjour,
La semaine passée un chercheur me demande : « J’entends parler de métadonnées en Dublin Core, qu’est-ce ? ». Après explication, je me suis aperçu que faire l’association entre les champs d’une base de donnée – décrivant des objets numériques ou numérisés – et la notion de métadonnées XML n’était pas forcement naturelle. Plus qu’une différence de vocabulaire, il s’agit d’un terrain inconnu avec son lot de mystères et de rumeurs inquiétantes. La notion de champs de description, dans une base de données comportant une ou plusieurs tables, est assez connue aujourd’hui ; mais l’interaction entre ces champs et des métadonnées est assez nouvelle pour le grand public. L’information stockée dans un champ d’une table de données (par exemple le nom de l’auteur du document, ou sa date) peut être utilisée de différente façon. C’est là l’une des clés de la compréhension des métadonnées. Cette information peut être affichée directement sur un site web via l’intermédiaire d’un programme informatique (écrit en PHP ou Perl par exemple). Mais elle peut également servir à renseigner la valeur d’une balise HTML (dans une entête de fichier HTML), ou la valeur d’une balise XML (dans un fichier XML servant à échanger ou préserver donc de l’information de façon indépendante via à vis des logiciels courants).

Prenons l’exemple de deux équipes de recherche qui souhaitent échanger des informations. Chacune des équipes a créé une base de données qui a, pour des raisons historiques et pratiques, des champs différents : c’est à dire que les modélisations sont différentes car les besoins ont été listés sans concertation au départ. L’un des moyens pour échanger des informations entre ces deux bases de données est d’avoir un format commun aux deux équipes : par exemple s’échanger des fichiers textes (ou XML) en ayant structuré l’information de telle façon que les deux équipes seront capables de ranger ces informations dans les bonnes « cases » (champs) de leurs bases de données respectives.
Il existe pour cela des normes de structuration de l’information (l’on dit aussi grammaire ou syntaxe). L’une des plus utile dans le monde de la recherche est la norme Dublin Core (ou DC). Le DC est une norme simple de description bibliographique créée pour les documents numériques. Le DC définit un ensemble d’éléments (l’on dira métadonnées ou « données de données ») qui sont au nombre de 15 pour le DC dit « non qualifié » (norme ISO 15836 de février 2003) :

  • -le titre,
  • -le créateur,
  • -l’éditeur,
  • -le sujet,
  • -la description (sorte de résumé, qui peut se rapprocher de « l’Analyse » pour les médiévistes),
  • -la source,
  • -la langue,
  • -la relation (relation ou lien avec une autre ressource DC),
  • -la couverture (l’aspect spatio-temporelle de la ressource : géographies, chronologie),
  • -la date,
  • -le type (images, sons, textes),
  • -le format (le format de la ressource : txt ; wmv ; pdf ; ogg ; php ; mov ; rtf ; ops ; etc),
  • -l’identificateur (DOI ; URL ; id OAI-PMH),
  • -le contributeur (personne physique ou moral ayant participée à l’élaboration de la ressource),
  • -les droits.

Ainsi, il est facilement possible de configurer une base de données MySQL, PostgreSQL, MS-Access ou même OpenOffice suivant ces « champs » et de créer un format de sortie XML reprennant les 15 élements DC. C’est le coeur, par exemple, des enregistrements dans un entrepôt OAI-PMH :

<record>
   <header>
    <identifier>oai:www.crhst.cnrs.fr:hstl-000101</identifier>
    <datestamp>2007-01-15T15:04:36Z</datestamp>
    <setSpec>manuscript</setSpec>
   </header>
   <metadata>
     <oai_dc:dc
       xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
       xmlns:dc="http://purl.org/dc/elements/1.1/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
       http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
      <dc:title>Autobiographie d'Ampère.</dc:title>
      <dc:creator>André-Marie AMPERE</dc:creator>
      <dc:subject>history</dc:subject>
      <dc:description>Cahier manuscrit de 16 feuillets dont les 8 premiers feuillets sont autographes...</dc:description>
      <dc:publisher>Christine BLONDEL</dc:publisher>
      <dc:contributor>CNRS, CRHST</dc:contributor>
      <dc:contributor>HSTL : Delphine USAL</dc:contributor>
      <dc:date>1824-00-00</dc:date>
      <dc:type>studies materials</dc:type>
      <dc:type>text</dc:type>
      <dc:format>xhtml from databases</dc:format>
      <dc:identifier>http://www.ampere.cnrs.fr/ice/ice_book_detail-fr-text-ampere-ampere_text-8-3.html</dc:identifier>
      <dc:source>http://www.ampere.cnrs.fr/ice/ice_book_detail-fr-text-ampere-ampere_text-8-3.html</dc:source>
      <dc:language>french</dc:language>
      <dc:coverage>ampère</dc:coverage>
      <dc:coverage>autobiographie</dc:coverage>
      <dc:coverage>electricity</dc:coverage>
      <dc:coverage>AMPERE</dc:coverage>
      <dc:coverage>XIXe</dc:coverage>
      <dc:coverage>France</dc:coverage>
      <dc:rights>public domain</dc:rights>
     </oai_dc:dc>
   </metadata>
  </record>

Nous voyons bien dans ce cas, que les balises XML utilisant le DC sont au coeur de la notice (dc:title par exemple). La notice XML, écrite en DC, est encapsulée dans d’autres balise XML propres à l’OAI-PMH. Cette notice XML DC est en fait générée par un script PHP (que nous pouvons nommer application ou programme) à partir d’une base de données MySQL.

Bonne journée,

Stéphane.

KML simple et géodonnées (partie 1)

Il est possible de construire rapidement de petites applications simples permettant d’exploiter des documents issus d’archives visuelles (cartes, photos, plans) en les connectant a des données bibliographiques. Ces applications utilisent de plus en plus les langages du web (et, depuis 2005, ceux du web 2.0) et elles se développent autour d’XML. Voici une première partie/introduction au KML et le début d’un exemple avec le géo-référencement 2D de cartes anciennes via Google Maps, du KML et du XML.

Le KML (Keyhole Markup Language) est une grammaire XML permettant d’afficher et de gérer des données dans Google Maps et Earth. Il offre la possibilité de poser des points, tracer des lignes, des polygones. Dans Google Earth, s’y ajoute les angles de vue, les objets 3D simples ou texturés. Mais l’une des fonctionnalités les plus intéressante pour la recherche reste l’enrichissement en données externes. KML peut diffuser des données XHTML riches (textes, images, videos), des images plaquées sur la photo satellitaire, etc…

Il existe une version compressé du KML, le KMZ. Pour ceux qui ont utilisé comme moi du VRML (Virtual Reality Modeling Language), nous avions aussi une version « Gzipé » du langage : le .wrz (à la place du .wrl). le KMZ encapsule aussi les images qui peuvent être liées au fichier KML. Il est possible de fabriquer du KMZ avec un simple compresseur : WinZip, Gzip, etc.

Sur le plan syntaxique, le KML se présente comme du XML :

<?xml version= »1.0″ encoding= »UTF-8″?>
<kml xmlns= »http://earth.google.com/kml/2.2″>
<Placemark>
<name>Siège du CNRS</name>
<description>Paris, le siège du CNRS.</description>
<LookAt>
<longitude>2.264605600614077</longitude>
<latitude>48.84727288728012</latitude>
<altitude>0</altitude>
<range>171.6689944655567</range>
<tilt>-6.848248640637841e-011</tilt>
<heading>0.0004740658326556625</heading>
</LookAt>
<Point>
<coordinates>2.264605600614077,48.84727288728013,0</coordinates>
</Point>
</Placemark>
</kml>

Ce petit fichier KML permet de placer dans Google Earth ou Maps, un point localisé sur le siège du CNRS, l’élément <LookAt/> correspondant au point de vue de la caméra qui « regarde » ce point. <Placemark/> encapsule le <Point/> géocodé présentant la latitude et la longitude. Dans le monde Earth / Maps de Google, les coordonnées géographiques sont en degrés décimaux (comptés positivement vers le Nord pour la latitude, et vers l’Est pour la longitude). Ici, le géocodage est très précis (2.264605600614077), mais si vous utilisez l’API de Maps, la précision est de l’ordre du mètre. Autre limite, dans Google Maps, seuls certains éléments peuvent être utilisés : les points, les lignes, les polygones, les styles, les icônes et les liens et l’application de couches multiple (placage d’images), mise en œuvre de dossiers et types de vues. Pour le moment (version 2.2 du KML) la 3D n’est pas utilisée (nous sommes dans Maps, donc le royaume de la 2D).

Ce petit exemple, permet de ce lancer dans la construction de fichiers KML et ainsi enrichir en information de toutes sortes de cartes dans le vaste « bac à sable » que peut être Google Maps ou Earth. De nombreux scientifiques, les géographes principalement, utilisent déjà ce format. J’ai découvert aussi ce site qui présente Google Earth et le KML pour les enseignants du secondaire. Le KML n’est pas le seul format XML dans le domaine des « géo-formats/2D/3D » : il y a le WMS, WFS et GML venant du monde de la géographie, les formats pour « services web » : AtomPub, GeoRSS et le KML/Z (avec d’autres limites cependant).

Dans le cadre du CN2SV, nous avons publié l’inventaire d’un fonds de cartes topographiques anciennes (XIXe-XXe siècle) de la cartothèque du centre de documentation REGARDS-CNRS. Nous avons décidé de coupler ce fonds de cartes, après numérisation, avec une base de données bibliographique/documentaire classique. Pour cela, nous avons utilisé une base de données intermédiaire qui, à partir des données lat./long. des quatres angles d’une carte, a pour mission de stocker des données pour produire à la fois du KML (pour l’instant sous la forme de petit fichier, donc nous sommes en mode asynchrone) qui peut être utilisé dans Google Earth pour visualiser l’emprise de la carte, ces villes importantes, etc. Mais aussi du XML compatible avec l’API de Google Maps (qui est légèrement différent du KML natif, du moins dans sa version 2.2 ).

Dans un second temps, j’ai développé une petit programme PHP qui exploite ces fichiers XML (pour l’API…) dans un contexte l’application riche. Du KML simple, nous passons dans un micro format XML propre (mais nous pourrions faire cela avec du KML directement, c’est juste une histoire d’optimisation du fichier pour l’API de Google Maps), ainsi pour chacune des cartes nous avons ceci :

Capture d'écran de l'application CN2SV pour les géodonnées

 

<?xml version= »1.0″ encoding= »UTF-8″?>
<mygeod xmlns= »http://www.cn2sv.cnrs.fr/xml/mygeoc/0.1″>

<markers>
<marker lat= »-20.53105″ lng= »47.24332″ label= »Ville d’Ambositra » html= »Informations sur la ville d’Ambositra <br>avec la base de données REGARDS-ADES-CNRS » infolink= »query.php?value=Ambositra »/>
<marker lat= »-20.62105″ lng= »47.20332″ label= »Carte de Madagascar » html= »Informations sur la ville d’Ivato <br>avec la base de données REGARDS-ADES-CNRS » infolink= »query.php?value=Ivato+Madagascar »/>
<marker lat= »-19.871795326377995″ lng= »47.03521728515625″ label= »Carte de Madagascar » html= »Informations sur la ville d’Antsirabe <br>avec la base de données REGARDS-ADES-CNRS » infolink= »query.php?value=Antsirabe »/>
<marker lat= »-20.27137605095937″ lng= »44.31661605834961″ label= »Carte de Madagascar » html= »Une carte est disponible » infolink= »?id=R_MADA11_04_00014″/>
<line colour= »#ff0000″ width= »5″>
<point lat= »-19.40″ lng= »45.32″/>
<point lat= »-19.40″ lng= »48.11″/>
<point lat= »-21.20″ lng= »48.11″/>
<point lat= »-21.20″ lng= »45.32″/>
<point lat= »-19.40″ lng= »45.32″/>
</line>
<center lat= »-20.33″ lng= »46.90″ zoom= »8″/>
</markers>

</mygeod>

Ce fichier XML permet de délimiter la couverture de carte et de pointer des lieux (les « markers » de Google Maps). Les attributs sont très simples :

  • label : titre de la vignette/popup
  • html : contenu de la vignette/popup
  • lat : latitude
  • lng : longitude
  • zoom (pour <center/>) : facteur du zoom d’entrée dans la carte
  • infolink : lien vers le connecteur de/des bases de données à interroger (mais on pourrait imaginer une chose avec du xlink et xpointer si l’on veut rester dans le monde XML)

Il suffit d’utiliser de l’API de Google Map pour monter l’application. Mais cela sera pour le prochain billet…

Stéphane.

PS : Le format KML est relativement simple, mais un ouvrage de référence en français manque (à moins qu’il soit sous presse).

 

Extraits de textes avec Google recherche de livres

Bonjour,

Google a ajouté une fonctionnalité intéressante dans son projet « Recherche de Livres ». Il est possible de faire des extraits dans les textes (une phrase, un paragraphe) et de les diffuser (partager dans la terminologie web 2.0) sur son blog par exemple ou sur une page web, voir un courriel au format html. Voici, par exemple, un extrait du Recueil d’observation électro-dynamique d’Ampère :

Cela permet de présenter un extrait ou une courte citation dans une publication par exemple. En plus, en cliquant dessus nous avons la possibilité de basculer dans Google et de voir l’ouvrage. Dans ICEberg nous avions fait cela avec ICEberg+, mais uniquement pour les textes. Si un système similaire existe dans le monde de l’open-source, je suis preneur ! j’imagine qu’il s’agit d’un géoref de zone soit de l’encodage image via du javascript ou de l’ajax.

Stéphane.

Zend Framework : un nouveau site pour la communauté française des utilisateurs.

Bonjour,
De retour de vacances, je mets au propre quelques notes informatiques glanées tout au long de l’été. Utilisateur du Zend Framework depuis quelques semaines (pour une application en test pour le moment), j’ai découvert dernièrement que la communauté française des utilisateurs du Zend Framework s’organisait autour d’un nouveau site web, très bien fait et plein d’informations. Un très bon forum, très professionnel, permet de poser des questions simples ou complexes suivant son niveau de pratique du Zend Framework.
Le Zend Framework (ZF) est un projet PHP créé par la société Zend, grande prêtresse du langage PHP dans le monde. Le ZF est un ensemble de librairies permettant d’accélérer le développement d’applications PHP professionnel. Il permet aux entreprises d’appuyer leurs outils sur une infrastructure robuste orienté MVC (modèle, vue, contrôleur). En terme de sécurité, l’utilisation du ZF entraine des gains importants, notamment au niveau des injections SQL. Comme tous les frameworks, ZF n’est cependant pas très simple au début, il faut bien comprendre le système MVC avant tout.
Mais un signe ne trompe pas, la communauté ZF augmente et en mai 2007, l’association française des utilisateurs de PHP, a organisé une présentation ZF dont la vidéo (amateur ?) est en ligne sur http://php.developpez.tv. Certaines applications « grand public » utilisent ZF et un premier CMS vient de voir le jour : http://zfcms.tebe.ch (démonstration de l’outil de gestion : http://zfcms.tebe.ch/admin/ avec identifiant/mot de passe : admin/admin).
ZF est un framework à suivre dans l’environnement PHP.

Stéphane.
PS : un tutoriel plutôt bien fait existe sur le site : developpez.com

Un moteur de recherche de codes source ?

Bonjour,
Le moteur de recherche Krugle annonce pour septembre 2007 une version entreprise de son moteur de recherche. Il s’agit donc d’un moteur de recherche qui indexe le contenu des codes sources déposés dans un forum ou dans des pages web (il y en aurait 20 millions de fichiers de code source sur le web selon Krugle, source : 01net). Il existe aussi Google Code Search (version en français) issu du « Labs » Californien de Google. Encore en développement il pourrait s’agir d’une sources non négligeable pour les développeurs. Si l’on veut recherche des bouts de code sur la commande addslashes en PHP, il suffit de taper lang:php addslashes. Dans les résultats de recherche, le type de licence du source trouvé est indiqué (GPL, LGPL, BSD, etc.). A vos codes…et bonne fin de semaine. Stéphane.

Un peu de javascript

Bonjour,
Il est important, parfois, de revenir à la programmation directe : dans le « coeur du code » (utilisez Zend, PDO…, c’est super mais bon l’assemblage au bout d’un moment…). Au cours d’un développement ou plutôt d’un patchage d’ICEberg, j’ai du surmonter le problème du document.getSelection(); en javascript qui ne fonctionne qu’avec les navigateurs Mozilliesque (Firefox, Netscape, Mozilla). document.getSelection(); n’est donc pas compatible avec IE. Je suis dans une application en PHP et j’ai besoin du document.getSelection(); pour transmettre via des variables une selection de texte éffectuée par l’internaute sur la page consultée pour l’injecter ensuite dans un formulaire. Si IE n’existait pas, nous pourrions nous contenter de :

location.href='formAK.php/user?action=add& description='+encodeURIComponent(document.getSelection())+';

Seulement voilà, il y a IE et document.getSelection(); renvoit une belle erreur javascript. Mais il y a une petite solution très simple qui permet de rendre cette action compatible quelque soit votre navigateur préféré (sous MacOS X, cela fonctionne aussi). Plutôt que de détecter le navigateur (son nom via : navigator.appName), il plus intéressant de détecter la méthode (ou l’objet) dont le fonctionement avec les navigateurs n’est pas possible (ou mal gérée). Ainsi, avec un système conditionnel classique et une nouvelle variable « methodeselection » :


if (document.getSelection) methodeselection = document.getSelection();
else if (document.selection) methodeselection = document.selection.createRange().text;
else return;

Préparé pour une page web, nous pouvons écrire :

function envoyer_une_selection_quelquepart() {
if (document.getSelection) sel = document.getSelection();
else if (document.selection) sel = document.selection.createRange().text;
else return;
location.href='http://www.monsite.fr/?action=ajouteramonforumulaire&
description='+encodeURIComponent(sel)+';
}

Bonne fin de semaine,
Stéphane.

Encoder en EAD, EAC et METS avec Daofind/Midosa sous Eclipse 3.2

Bonsoir,
Je travaille depuis quelques semaines avec Midosa editor for XML standards issu du Daofind project. Il s’agit d’un environnement de travail EAD/EAC/METS sous Eclipse 3.2. Développé par les Bundesarchiv (Berlin), Midosa/Daofind permet l’encodage XML avec validation des tags et niveaux en temps réel via le schéma EAD ou METS. Si la prise en main est plus complexe que XMLmind+ATES (mais qui ne fonctionne qu’avec la DTD EAD de 2002), le dico des éléments EAD est très pratique et particulièrement fonctionnel. Ainsi il devient assez simple d’encoder en EAD/EAC et de faire du METS par la suite. Midosa/Daofind est un outil intéressant pour les services d’archives et les personnes souhaitant se lancer dans l’EAD/EAC et la gestion des fichiers METS, avec le guide EAD sous le bras tout de même.
Cerise sur le gâteau, l’export HTML, véritable « impression numérique », transforme un fichier EAD en un instrument de recherche à la mode PLEADE.

METS-ment votre,
Stéphane.

SDX, pleade, EAD, et voila !

Bonjour,
La prochaine ouverture de la nouvelle plateforme de publication d’instruments de recherche en XML EAD du Centre National pour la Numérisation de Sources Visuelle est très proche (dans les jours qui viennent). Utilisant SDX et Pleade, elle permet de publier des inventaires archivisitiques encodés en XML-EAD. Les inventaires déjà réalisés par le CN2SV y sont versés. Pour nous, elle fait partie du bloc « Accès » du modèle OAIS. Mais pour le moment, en avant première, une petite vidéo de démonstration postée sur YouTube. bon, ok, l’image n’est pas très nette, mais cela donne tout de même une idée.

A très bientôt, Stéphane.

EAD, EAC, METS à Berlin

Bonjour,
Pendant 3 jours, la communauté des archivistes s’est réunie à Berlin pour faire le point sur les possibilités et les évolutions des grammaires XML EAD, EAC, et METS. Les présentations furent toutes d’un très haut niveau et elle ont prouvé que les méthodes de communication des archives par voie numérique utilisent de plus en plus le XML. Dans plusieurs cas, elles se rapprochent du modèle OAIS en ce qui touche l’organisation et la gestion des archives numérisées. Le milieu des archivistes a bien compris comment tirer profit de ces DTD et autres schémas. Le projet allemand DAOFIND illustre parfaitement cela. Ce logiciel (qui est un module d’Eclipse) permet de travailler très facilement ces fichiers EAD et METS. Il n’est pas le seul exemple en Europe : Italiens, Français, Espagnols ont aussi de nombreux outils très bien conçus. De plus en plus, la chaîne « tout » EAD voit le jour : inventaires, catalogues, numérisation, encodage se font de façon synchronisée et en simultané ce qui permet d’accélérer la diffusion des archives aux publics.

3eme conférence sur l'EAD, l'EAC et METS - Berlin

Stéphane.

Les mains dans Tomcat, Cocoon, SDX, etc.

Bonsoir,
Il est des jours qui sont trop courts… Je suis depuis deux jours dans l’installation d’un serveur pour le pôle HSTL et le CN2SV sous Apache/Tomcat6 faisant tourner en parallèle SDX, Cocoon, METS Navigator. Sous Tomcat 6.0.10 et JVM 1.5 ces briques semblent bien tenir la route. Cependant, chez moi, Cocoon n’est pas encore très stable, mais cela viendra (désolé Got).
L’idée principale est de proposer une plate-forme applicative simple, offrant à nos producteurs la consultation d’AIP stockés soit en EAD soit en METS (voir MODS que j’expérimente en diffusion via un outil OAI-PMH, mais là c’est une autre histoire, et c’est très neuf). Je suis encore septique sur la pérennité à long terme des frameworks java tant l’empilement des couches (ou briques) technologiques semble fragile. Je compare cela à une application « classique » MySQL+PHP tournant sous LA »mp ». L’avenir nous le dira…
Stéphane.

De la pérennité des applications web : les 10 ans de DBMAN

Bonjour,

Dans les métiers du Web et des bases de données, il y a parfois des petits miracles ! Je veux dire que les logiciels clients et les applications Web sont souvent considérés comme extrêmement fragiles et que l’évolution technologique les condamnent très rapidement. Cette impression est accentuée par le « vieillissement » de leurs interfaces dû aux modes successives que nous avons traversé (j’entends par là, le Web 1.0, le tout Javascript, le Web 2.0, etc.). Au milieu de tout ça, et du grand « plongeon » vers plus d’interaction entre l’internaute et les sites Web (je préfère d’ailleurs l’expression de plateformes Web, tant « sites web » paraît ancien, cf. le Web 1.0), il est des applications Web qui restent en place, elle évoluent peu, et s’appuient – encore aujourd’hui – sur des langages de programmation et des infrastructures simples. Il en est une qui me tient particulièrement à coeur car elle fut pour moi l’une des briques qui m’a permis de comprendre qu’il était important de mélanger les langages, de tordre les technologies : il s’agit de DBMAN ou Database Administrator.

DBMAN est un système de base de données écrit en langage Perl et qui utilise un simple fichier texte pour le stockage des données. En cette année 2007, DBMAN a 10 ans ! Oui, 10 ans. N’est-ce pas impressionnant tout de même ? J’ai découvert DBMAN grâce à O. Mougel dans le cadre de la réalisation du site du GIS Réseau Aquitain Formation et Information pour le Développement RAFID. Puis j’ai utilisé DBMAN pour plein de choses : Mon DEA d’histoire et d’archéologie médiévale, les bases de données de la filière documentation d’entreprise de l’IUT de Bordeaux où j’étais moniteur puis chargé de cours, Pour la bibliothèque d’Ausonius, pour le GIS Réseau Amérique Latine qui va être l’un des piliers de l’Institut des Amériques, etc. J’ai décliné cette application sous toutes ces formes, j’ai même écrit un plugin en Perl pour faire afficher des objets VRML à la place des notices classiques d’une base de données. Vous le voyez, DBMAN est pierre importante dans mon parcours, puis le couple PHP+MySQL est arrivé est la suite est connue. Mais aujourd’hui, certains DBMAN mis en place en 1997 fonctionnent toujours, ceux utilisés pour mon travail de Maîtrise/DEA par exemple autour de la restitution de la maison forte du Boisset.

Le 12 septembre 2007, DBMAN aura 10 ans. Je tenais, dans un billet de ce blog, tirer mon chapeau à A. Krohn de Gossamer Threads Inc. qui a créé DBMAN et souhaiter longue vie à cette application toute simple mais particulièrement géniale de gestion de bases de données. A l’heure d’AJAX, PHP6, XSTL et Ruby on Rail et des outils web 2.0, j’ai aussi envie de dire : vive le Perl !

MathML et reconnaissance optique de formules mathématiques

Bonjour,
Après une semaine passée à installer le DataCenter du pôle HSTL de mon labo, J’ai travaillé hier sur l’OCéRisation de formules de mathématiques. Après un peu de veille, j’ai vu que cela n’était pas très facile et que les logiciels commerciaux classiques ne le permettait pas.

J’ai cependant trouvé une suite d’outil : Infty Project for Mathematical Document Recognition and Analysis, User Interface,Accessibility of Scientific Documents. Il s’agit d’une suite d’outils créé par Masakazu Suzuki (Kyushu University, Japon). J’ai testé InftyEditor et à première vue c’est très puissant. Cependant le module d’acquisition depuis un scanner ne fonctionne pas sur mon poste (j’ai pourtant un très bon scanner). Il faut donc scanner les documents indépendement du proscessus d’ORC. Autre limite, les formats possibles en entrée de chaîne : seul le TIFF binaire non compressé est possible. C’est un peu dommage car il semble que d’autres formats soient acceptés (PNG, JPEG, GIF), mais il s’agit peut-être un problème local venant de mes images.

L’intérêt principal reste la puissance de l’ORC et les formats de sortie : XML pour InftyEditor, LaTeX, MathML, PDF, etc. Mais le GROS problème c’est que les accents français ne sont pas gérés. C’est bien dommage. Mais c’est un outil à suivre…

Stéphane.

METS Navigator : une application web robuste pour la diffusion de documents structurés en METS

Bonjour,

Je profite de quelques jours de vacances à la montagne pour tester – entre deux journées de ski – quelques outils d’exploitation de fichiers xml.

Le problème majeur avec les technologies utilisant xml reste l’exploitation réelle en production des documents. Le passage à la production reste complexe. La mise en ligne d’un document xml nécessite l’emploi d’une feuille de style xsl si l’on veut rendre compréhensible par tous les données contenus dans le dit document. Au plus simple, l’action d’interprétation (le parsage) du xml suivant la feuille de style sera laissée au navigateur web du client avec des différences notoires entre les résultats. Il existe des applications web (programmes informatiques exécutables au travers de serveurs web) qui permettent de traiter cette tache du coté du serveur et donc de rendre homogène le résultat à l’écran et surtout de réduire le temps de parsage pour peut que l’on ait un serveur puissant.

Le service informatique de la bibliothèque numérique de l’Université d’Indiana et la Bibliothèque Lilly de cette même Université viennent de mettre au point l’une de ces applications : METS Navigator. Comme son nom l’indique, cette application permet d’exploiter une collection de fichiers xml respectant le schéma METS. METSNav est une application web fonctionnant sous Tomcat d’apache et Java et dont l’installation est facilitée par la mise à disposition par l’équipe de l’UI d’une archive war permettant un déploiement rapide.

Dans la documentation de METS Nav, l’introduction résume bien le produit :

« METS Navigator is an open source METS-based system for displaying and navigating sets of page images or other multi-part digital objects. METS, the Metadata Encoding and Transmission Standard, is a freely available XML standard, maintained by the Library of Congress, for managing and describing digital library objects. Using the information in the METS elements, METS Navigator builds a hierarchical menu that allows users to navigate to specific sections of a document, such as title page, specific chapters, illustrations, etc. METS Navigator also allows simple navigation to the next, previous, first, and last page image or component part of a digital object. METS Navigator also makes use of the descriptive metadata in the METS document to populate the interface with basic descriptive information about the digital object. METS Navigator is built using Java and open source Web technologies, including the Apache Struts Web Application Framework, the Castor Java & XML Data Binding libraries, and Ant, and runs under a Web application server such as Apache Tomcat. METS Navigator was developed by the Indiana University Digital Library Program. »

Cette application sépare bien la partie programme, les interfaces et la partie « stockage » des fichiers xml qu’il est tout à fait possible de virtualiser à minimal sur une autre machine locale ou dans le même réseau (elle ne va pas aussi loin en matière de virtualisation que l’application créé par le Centre de Ressouces NumériquesTelma) mais elle ressemble sur ce plan là, à l’application EXE que nous avons développé avec l’équipe du Centre National pour la Numérisation de Sources Visuelles pour l’exploitation des fichiers xml normalisés en EAD. Il est également très facile de faire sienne cette application, c’est à dire de la mettre en production dans un environnement informatique même restreins : petits services de documentation, de bibliothèques de laboratoires ayant des archives scientifiques, ou même encore services d’archives. « METS Nav. » fonctionne aussi bien avec une architecture Linux ou Windows (avantage du moteur de servlets Tomcat) et semble être très stable. Il y a cependant quelques restrictions au niveau des noeux METS, mais la documentation proposée est très complète.

En conclusion, cette application web me semble très prometteuse pour l’avenir car elle offre un cadre puissant, clair, dans le respect des standards et sous licence propre mais open source. J’ai contacté Mme Michelle Dalmau (une des auteurs de METS Navigator) qui m’a confirmé l’amélioration de l’application dans un futur proche.

Nous le voyons bien, les applications web permettant l’exploitation – en production (voir l’exemple de telma ou du cn2sv) – d’entrepôts xml (stockage distribué ou centralisé, xml natifs ou extractions) donne enfin une nouvelle dimension à la mise à disposition de documents sur le web.

Stéphane.

Ressources : METS Navigator – http://metsnavigator.sourceforge.net/

OAI-PMH v2.0 et XSLT Style Sheet

Bonjour,

J’explore en ce moment le monde de l’OAI-PMH. J’ai développé pour mon équipe un entrepôt OAI-PMH en m’appuyant sur l’outil – très pratique et simple – de H. Stamerjohanns : phpoai2 Data Provider. Cet outil utilise la brique PEAR et PostgreSQL ou MySQL pour le stockage des références (mais grâce à PEAR il est facile de le lier à autre chose).

L’entrepôt de mon laboratoire diffuse des références et donc donne accès à des sources historiques : ouvrages rares, manuscrits, documents scientifiques, carnets de notes de savants, etc. Le protocole OAI-PMH, finalement très simple, intéresse un très grand nombre d’institution de recherche de part le monde (je ne me lancerai pas là dans un inventaire à la Prévert) et il semble être le meilleur protocole de diffusion de références et de données grâce à XML. L’XMLisation de ce protocole permet la répartition des charges entre entrepôts et fournisseurs de services.

Il est possible de donner un regard plus « humain » au flux OAI à l’aide la feuille de style XSL développée par nos amis du GNU EPrints project. Elle est très pratique cette feuille XSL car elle permet de transformer en XHTML les flux issus des verbes OAI. Cela permet de créer une visualisation du flux XML dans un simple navigateur, les moteurs de recherche s’en régaleront, un seul entrepôt, un flux de données, le moissonnage classique par OAIster et en plus, la consultation web classique, voir l’indexation par des moteurs de recherche « standards » ou très locaux (htdig par exemple).

Stéphane.

MathML

Bonjour,
Mes activités sont très « 2.0 » (et complexes) en ce moment : je suis pris entre le temps de rédaction du bilan d’activité du CN2SV et par la mise en place d’entrepôt OAI pour le CRHST mais aussi, par la vie des plateformes web du pôle HSTL, je n’ai plus une minute pour ce blog depuis 8 jours. De plus, les deux derniers billets sortent un peu du thème original de se blog (racontrer, au jour le jour, les aventures d’un ingénieur d’études qui fait du web depuis 1995). Je reviens vers le coeur du métier avec un court (trop court) billet sur une grammaire XML que j’utilise pour la publication de sources comportant des formules mathématiques : le MathML.

1) Le MathML 2.0 : Qu’est-ce ?

Il s’agit langage dérivé du XML permettant d’afficher et d’assurer le traitement de formules de mathématique sur le web. Depuis le 21 février 2001, MathML est devenu une recommandation du W3C.

2) Comment lire le MathML ?

L’un des stagiaires passé au CRHST en 2005 a résumé les solutions de lecture dans une page très bien faite. J’en reprends ici les points principaux.

Certaines pages de ce site requièrent l’affichage d’expressions scientifiques (équations, fractions, symboles mathématiques…).
Utiliser à cet effet des images montre des limites : elles ne sont pas forcément bien dimensionnées ni bien ajustées par rapport au texte. De plus, cela est très lourd à gérer de devoir insérer une image dès la moindre fraction.
La solution est d’utiliser le langage MathML, langage dérivé du XML et recommandé par le W3C. Les navigateurs compatibles devraient comprendre ce langage. Pour Internet Explorer, des plug-in existent (un plug-in est un programme qui apporte de nouvelles fonctionnalités à un logiciel existant).
Le tableau ci-dessous présente la compatibilité des navigateurs les plus utilisés.

  Internet Explorer Netscape Navigator Mozilla / Firefox Opéra Safari Amaya
Windows 5.0 & Techexplorer
5.5 & MathPlayer | Techexplorer
6.0 & MathPlayer | Techexplorer
6.1 & Techexplorer
7.0 ou +
0.9.9 ou + / toute version 7.2 NON pas de support Voir ci-
dessous
Mac OS 5.0 & Techexplorer 6.1 & Techexplorer
7.1 ou +
0.9.9 ou + / toute version 7.2 NON NON
Linux pas de support 6.1 & Techexplorer
7.0 ou +
0.9.9 ou + / toute version 6.0 NON pas de support

Quelques précisions :
1. MathPlayer compense utilement la défaillance d’Internet Explorer ; il est diffusé gratuitement par Design Science.
2. Techexplorer est un plug-in qui s’ajoute à la plupart des navigateurs, sur Windows, Mac et Linux ; anciennement développé par IBM, il est désormais distribué gratuitement par Integre pour un usage personnel. Voir ici pour plus d’informations.
3. Amaya est l’éditeur et navigateur Web officiel du W3C qui permet d’éditer très simplement des pages contenant du texte, des graphiques et des expressions mathématiques (en MathML). Il est disponible pour Windows 98, NT/2000/XP, Unix, Linux et MacOSX. Pour plus d’informations, aller sur le site officiel d’Amaya ou sur une page en français.

Concernant Internet Explorer,vous pouvez télécharger MathPlayer pour Windows.
Bien que nous ne vous le recommandions vraiment pas (risques d’erreurs à l’affichage du MathML), vous pouvez aussi télécharger Techexplorer pour Windows, ou Techexplorer pour Mac OS 8.6 à 9.2 et Mac OS X. Mais découvrir Mozilla demeure encore la meilleure solution !

Polices scientifiques pour Mozilla/Netscape

Afin que les navigateurs compatibles MathML affichent correctement les expressions mathématiques, vous devez éventuellement installer sur votre poste quelques polices de caractères scientifiques.
N.B : Si vous utilisez Internet Explorer avec MathPlayer sous Windows, l’installation de polices supplémentaires n’est pas nécessaire.

Pour plus de détails, voir la page dédiée aux polices pour MathML sur le site de Mozilla.

3) Ca ressemble à quoi ?

Je viens de terminer la relecture de la théorie mathématique d’André-Marie Ampère qui est encodée en MathML et en ligne sur le site @.ampère.

Joyeuses fêtes de fin d’année !

Stéphane.

Utilisation massive de la librairie GD pour PHP : les lettres de Stephen Gray dans le site @.ampere

Bonjour,
Dans le site @.ampere (direction ; C. Blondel, CNRS) dont je suis le webmaster, j’ai placé des lettres de Stephen Gray (voir dans Wikipedia), pour le zoom j’utilise la GD de PHP, cette librairie est connue mais elle rend bien des services quoiqu’un peu lente. Je l’utilise pour le zoom 100% 75% 50% 25% mais aussi dans le site du CN2SV pour le génération d’images « vignettes » à la volée. La GD a été intégré à PHP depuis la version 4.3 et commence à faire du JPEG2000. En complément, il y a surtout la fonction « iptcparse » qui permet de lire les méta-données IPTC et même de les mettre à jour avec « iptcembed ».
Stéphane.

Diffusion de sources historiques via le protocole OAI-PMH (partie 2)

Bonjour,
Après avoir testé en interne mon serveur OAI-PMH je me suis lancé !
Je l’ai soumis à OAIster qui semble être le plus grand portail d’accès à des ressources OAI…. Réactivité maximale, 24h après la soumission, me voila délivrant des ressources issues des sites du Centre de Recherche en Histoire des Sciences et des Techniques via de l’OAI-PMH.

Mon serveur OAI-PMH est développé en PHP et utilise DOM, plus une petite base de données très simple tournant sous PostgreSQL qui reprend les informations issues de mon outil ICEberg. L’idée est d’avoir une « web-application » minimale à maintenir dans le futur (l’un des clés de la pérennisation des données par ailleurs).