Cartographie d’une collection documentaire (Partie 1)
juillet 15, 2010 | concocté par Bertrand | Documentation technique, Open Source, Web 2.0 | Aucun commentaire
Avoir une cartographie (visuelle) d’une collection documentaire reste un exercice difficile pour l’architecte documentaire!
Pourtant, en prenant un peu de recul, j’ai inventé une méthode pour générer automatiquement des graphes me permettant de visualiser tous les liens entre les documents d’un seul coup d’œil.
Je vais donc vous expliquer comment faire pour voir une collection documentaire de cette manière : (eh oui c’est choquant!)
Bien sur j’ai suffisamment dé-zoomé pour garder le suspens sur le contenu de ce graphe !
Il faut d’abord que je situe le contexte de travail :
- la collection comporte X documents (peu importe le nombre, mais il faut au moins qu’il y en est 3 !)
- les documents sont écrits en XML
- les documents sont tous stockés dans une base XML native afin de pouvoir faire des requêtes facilement
ainsi que les outils et les connaissances nécessaires :
- un éditeur (Notepad++ ou PSpad)
- une base de données XML native (j’utilise actuellement « eXist »)
- un visualiseur de graphes : yEd (de loin mon préféré !)
- connaitre le XML (sic!), le XSL/Xpath, le xQuery (au moins un minimum) et le format GRAPHML
- une machine à café, surtout si la collection documentaire est conséquente
Étape n°1 : Créer un fichier XML qui liste tous les liens dans la collection
Petite explication : un « lien » est un pointeur d’un document à un autre…un exemple : je suis dans le document « A » et je cite « pour plus d’informations, voir document B ». Il y a donc un lien de A vers B.
Le jeu va donc consister à créer des listes pour chaque document et nous allons utiliser xQuery pour nous faciliter le travail !
Deux cas de figures se présentent généralement :
- vous utilisez une DTD ou un schema qui comporte un tag spécifique pour les références, il suffira donc de récupérer les informations de ce tag (exemple : <para>blabla…<link>pour plus d’infos, voir le document <ref>ABC</ref></link></para>)
- le contenu à récupérer est au fil de l’eau, il n’existe aucun tag. Pour ce cas là, il faudra au minimum connaitre un préfixe ou un suffixe commun pour toutes les références à récupérer.
Je vais vous détailler la requête pour le cas n°1, si quelqu’un est dans le cas n°2 (ou bien un cas n°3..) qu’il n’hésite pas à me laisser un message!
Requête pour construire le listing XML : (volontairement j’ai pris les cas les plus simples ce qui n’est jamais le cas..!)
let $temp := "path" /*path de la collection dans Xquery*/ let $doc := collection($temp)//root /*pointeur sur l'élément root de chaque document*/ return <root> { for $Query in $doc /*boucle 1 pour passer d'un document à un autre */ let $recupref := $Query/reference/text() /*recupere la référence du document courant*/ return <doc number="{$recupref}"> /*création d'une balise <doc>*/ { for $y in $Query/descendant::ref /*boucle 2 pour passer d'une ref à une autre*/ let $pointeur := $y/text() /*récupération de la référence pointée*/ return <link>{$pointeur}</link> /* création d'un tag <link> pour chaque référence trouvée*/ } </doc> } </root>
Dans la partie n°2 de cet article, je vous montrerai les données XML récupérées et je vous expliquerai comment transformer ces données XML pour qu’elle forme un Graph, lisible et aussi imprimable …pour épater les collègues

