<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="ePBLpaper11.css" type="text/css"?>
<?xml-stylesheet href="paper1.xsl" type="text/xsl"?>
<!DOCTYPE paper SYSTEM "ePBLpaper11.dtd">
<paper id="proj5">
 <info>
  <title>XTM2SVG</title>
  <authors>
   <author>
    <firstname>Natascha</firstname>
    <familyname>Michel</familyname>
    <homepageurl>http://tecfa.unige.ch/perso/staf/michel/</homepageurl>
    <email>micheln7 at etu.unige.ch</email>
   </author>
  </authors>
  <date>27 juin 2005</date>
  <updated>12 juillet 2005</updated>
  <keywords>
   <keyword>Visualisation</keyword>
   <keyword>SVG</keyword>
   <keyword>Topic Map</keyword>
   <keyword>XTM</keyword>
  </keywords>
 </info>
 <abstract>Cet article présente un projet de visualisation de Topics Map en SVG. Nous reviendrons d'abord particulièrement sur la méthode utilisée. L'apport de la visualisation pour l'apprentissage sera abordée ensuite.</abstract>
 <introduction>
  <p>Les <acronym title="standard ISO/IEC 13250:2003">topic Maps</acronym> permettent de décrire un réseau sémantique en utilisant un <acronym title="DTD XTM 1.0 : -//TopicMaps.Org//DTD XML Topic Map (XTM) 1.0//EN">formalise XML</acronym>. En partant des topics et des associations qui existent entre eux, toute la structure du réseau et les types de liens qui existent entre topics sont décrits ; des ressources extérieures peuvent également être appelées.</p>
  <p>Dans le cadre de ce projet, nous allons nous intéresser à la visualisation de topic map en <acronym title="Scalable Vector Graphics">SVG</acronym>, c'est à dire la représentation graphique et naviguable des balises d'un XTM et de leurs contenus.</p>
  <p>Plusieurs dispositifs de visualisation et/ou de réalisation de topic map existent. Des dispositifs comme <a href="http://www.ontopia.net/omnigator/models/index.jsp">Omnigator</a> par exemple, basé sur java, permet de visualiser des fichiers XTM. Ce projet n'avait pas pour ambition de développer un dispositif complet permettant la visualisation exhaustive d'un topic map, l'intérêt se trouvait davantage dans la familiarisation avec XTM, SVG et PHP (notament simpleXML).</p>
  <p>Le dispositif développé est peu abouti, la visualisation sous forme graphique inexistante. Les fichiers du dispositifs, <a href="http://tecfa.unige.ch/staf/staf-k/michel/staf18/xtm2svg/listeAllTopic.php">listeAllTopic.php</a> et <a href="http://tecfa.unige.ch/staf/staf-k/michel/staf18/xtm2svg/seeOne.php">seeOne.php</a>, proposent une première ébauche hypertexte de visualisation à l'aide de simpleXML (php) et SVG (!).</p>
  <p>Comme nous le verrons, plusieurs études ont montré que l'organisation en réseau sémantique apporte des avantages comparativement à d'autres formes de présentation des données plus linéaires. La motivation de ce projet est de permettre la visualisation sous forme de carte conceptuelle de ces données, certes organisées en réseau sémantiques, mais difficilement apréhendables dans leur forme brute - forme brute, qui en tant que formalisme XML se prête particulièrement à ce genre de traitement.</p>
 </introduction>
 <main>
  <h3>Exament du DTD et choix des données à extraire</h3>
  <p>Comme il a été mentionné plus haut, ce projet propose la visualisation d'une partie seulement de fichier XTM - non de son ensemble. L'exploration et l'analyse du DTD ont précédé le choix de données à extraire (c.f. <a name="schemaDTD1" href="#schemaDTD2">annexe 1</a> et <a name="schemaTopicMap1" href="#schemaTopicMap2">annexe 2</a>). S'il a permis une première approche ciblée de l'extraction des données, il y a toujours un fossé entre ce que l'on imagine pouvoir faire et ce que l'on peut faire, surtout lorsqu'on apprend, et il s'est assez vit avéré que certaines des idées de départ sur les possibilités d'extraction étaient assez naïves.</p>
<p>Voici quelques points qui ont été mis en place avant l'extraction des données:</p>
  <ul>
   <li>Le topic central représente le topic choisi par l'utilisateur. Par défaut ce sera sans doute une liste des topic ou le premier présent dans le fichier.</li>
   <li>Chaque topic associé à ce topic central est cliquable (et devient alors le topic central).</li>
   <li>Les associations de topic sont représentées du point de vue du topic central (c'est à dire que c'est son rôle dans la relation qui est indiqué sur la flèche), les instances et les classes de même.</li>
   <li>Les occurences sont également représentées lorsque l'utilisateur choisi d'en "savoir plus".</li>
   <li>Une légende accompagne la visualisation (c.f. plus bas à propos de Omnigator).</li>
   <li>Les liens entre les topics seront effectués par l'intermédiaire des attribust <cite>xlink:href</cite> et <cite>id</cite></li>
  </ul>
  <p>Si cette liste propose d'utiliser l'identité de l'élément pour y accéder, il est à noter que l'attribut "id" n'est pas obligatoire selon le DTD, comme c'est le cas de beaucoup de balises. Finalement très peu de balises ou d'attributs sont requis et c'est à tenir compte lors de la mise en place d'un dispositif - pour exemple, même la balise qui donne un nom au topic n'est pas obligatoire.</p>
  <h3>Omnigator</h3>
  <p>Les exemples de topic map disponibles sur le site de Ontopia permettent de se faire une première idée de ce que permet de faire le dispositif, ses fonctionnalités sont au premier abord assez développées. Une version du dipositif est disponible en téléchargement, il est utilisable à condition d'avoir un serveur tomcat et java. Possédant son <a title="The Ontopia Schema Language" href="http://www.ontopia.net/omnigator/docs/schema/spec.html">formalisme propre</a>, il sait lire également les fichier XTM ; pour autant qu'ils soient valides.</p>
<p>La double possibilité qu'il offre d'explorer un hypertexte ou une carte conceptuelle permet une plus grande accessibilité de l'information. Il présente cependant quelques désavantages. Parmi eux le fait qu'il est difficile de parvenir à visualiser au format carte conceptuelle (qui se base sur java) à moins d'utiliser un navigateur particulier plutôt qu'un autre et d'être patient - en outre si le dispositif présente un bug le navigateur doit être redémarré manuellement - pour résumé le dispositif est apparemment assez gourmand en ressources. Par ailleurs, on observe, toujours sous la forme graphique, l'utilisation de différentes couleurs. Cependant il ne semble pas y avoir d'homogénéité évidente quant à leur choix et il n'y a pas de légende. L'interface graphique n'est en outre pas très "user friendly".</p>
  <h3>Extraction des données</h3>
  <p>Dans le cadre de ce projet il a été décidé d'utiliser les <a href="http://www.php.net/simplexml">fonctions simpleXML de PHP</a>. Pas si <cite>simple</cite> que cela lorsque l'on prend en considération que xpath ne fonctionne pas encore avec simpleXML et les espaces de noms. Il devrait être supporté dans PHP 5.1 (c.f. <a href="http://blog.bitflux.ch/archive/2004/07/25/registerxpathnamespace_added_to_simplexml.html">Bitflux Blog</a>).</p>
  <p>Les attributs <cite>href</cite> étaient justement de l'espace de nom <cite>xlink</cite>, or ces attributs là étaient essentiels pour liés les éléments entre eux. Il a été possible de se passer de xpath mais son utilisation aurait simplifé le code et les manipulations des données, car cela signifiait de devoir indiquer le chemin complet de la balise possédant l'attribut en question. La rationnalisation du code (certes loin d'être encore parfaite) a été plus fastidieuse. Par ailleurs, extraire des attributs ou des balises avec un espace de nom différent que l'espace de nom global demande un minimum de bon sens et de savoir faire en matière de programmation ! (Heureusement qu'il existe des tutoriels en ligne qui font plus que reproduire la manuel PHP, comme par exemple <a href="http://developpeur.journaldunet.com/tutoriel/php/040921-php-seguy-simplexml-1e.shtml">JDN Développeurs</a>)</p>
  <p>Les choix de développement ont été faits en considérant l'ensemble des données - même si seul un aspect allait être développé. En partant du principes que dans un dispositif terminé, la visualisation de plusieurs aspects seraient possible, il y aurait certainement différentes instruction pour les générer. Dans le cadre de ce projet, deux fichiers php permettent deux visualisations différentes : une liste de tous les topics, <a href="http://tecfa.unige.ch/staf/staf-k/michel/staf18/xtm2svg/listeAllTopic.php">listeAllTopic.php</a> et un topic à la fois - dans l'idéal lié à tous les topics proches, <a href="http://tecfa.unige.ch/staf/staf-k/michel/staf18/xtm2svg/seeOne.php">seeOne.php</a>. Les informations relatives aux associations (c.f. balises XTM <cite>association</cite> et leurs enfants) ne sont pas représentées.</p>
  <p>En prévision des différents fichiers qui risquaient d'apparaître au cours du développement, les arrays sont générés une fois pour toute dans un fichier <a href="http://tecfa.unige.ch/staf/staf-k/michel/staf18/xtm2svg/header.php">header.php</a> appelé en haut de chaque page. L'utilisation répétée de foreach() permet la création de tableaux ré-utilisés ensuite pour l'affichage. L'utilisation d'une identité numérique générée lors de la création des tableaux permet de retrouver chaque élément lié au topic (nom, identité, références liées). Cette identité numérique est notament utilisée pour le passage de la liste des topics à la visualisation du topic choisi, ainsi que pour l'affichage sur cette page des topics liés.</p>
<h3>Visualisation des données</h3>
  <p>Ironiquement SVG n'a pas vraiment servi puisque le dispositif, loin d'être terminé, ne propose que du texte. Il aurait été plus économique, étant donné le résultat, de travail en XHTML ! Cela aurait éviter les petits tracas liés à l'affichage. Même si SVG est facile à prendre en main, ce n'est pas un langage destiné à produire du texte (devoir spécifier, pour chaque mot, chaque phrase, la position n'est pas très productif).</p>
  <p>Au niveau visuel, rien n'a été fait pour distinguer l'instance de la classe, l'occurence du topic source, etc. Rien non plus de lie visuellement ces topics entre eux (excepté le fait qu'ils apparaissent sur les pages des topics auxquels ils sont liés). Aucun dessin même brouillon de carte ne vient compléter l'extraction, car elle n'est pas terminée.</p>
  <p>L'aspect graphique qui a motivé ce projet n'a donc malheureusement pas abouti.</p>
  <h3>Apport de la visualisation</h3>
  <p>Plusieurs recherches et articles ont chercher à mettre en évidence les différences qu'il existe au niveau de l'apprentissage entre un apport d'information sous forme textuelle et linéaire ou sous forme textuelle et hypertexte. De même, l'apport de la visualisation sous forme de carte a été démontré. (Puntambekar, Stylianou &amp; Hübscher, 2003).</p>
  <p>Il est en tout cas très difficile d'appréhender un topic map en se basant sur son code XML. Faire la part des choses entres les topics instances et les topics classes, les occurences, tenir compte des associations qui les lient et qui sont définies dans des balises différentes n'est pas possible pour quelqu'un qui n'est pas familiarisé avec ce langage (et même). Pour exemple, un topic map sous sa forme brute : <a href="http://tecfa.unige.ch/perso/staf/steinera/staf18/topic_final/topicmap3.xtm">topicmap3.xtm</a> ou sous sa forme visualisée à l'aide de xtm2xhtml : <a href="http://tecfa.unige.ch/perso/staf/steinera/staf18/topic_final/tm/index.html">topic map</a>.</p>
  <p>La puissance du langage XML est augmentée de la puissance de la visualisation - même si dans cet exemple la visualisation se limite à un hypertexte.
  </p>
 </main>
 <conclusion>
  <p>De manière générale, la visualisation des topics maps permet un meilleur accès à l'information et à son organisation sémantique, ce que, à défaut de pouvoir constater ici, nous pouvons constater à l'aide de dispositifs comme Omnitgator ou xtm2html.</p>
  <p>Il aurait donc été intéressant de porter le projet à son terme, puisque que ce qui le motivait était avant tout la visualisation de données, qui reste assez limitée finalement (ce qui n'est que partie remise). Cependant il a été riche en apprentissage au niveau technique, notamment PHP et la programmation de base en général.</p>
  <p>Par ailleurs, il soulève la question de la visualisation d'un formalisme qui est finalement assez libre et ne peut garantir à lui seul le lien entre des éléments disjoints, d'autant plus si ceux si n'ont pas de noms ni d'identité (ce qui n'était pas le cas dans les topic map utilisés ici). En prévision de tels cas de figures, des moyens peuvent être mis en place afin de pouvoir accéder aux informations associées les unes aux autres et afin de palier à une information lacunaire et qui pourtant respecterait le formalisme XTM.</p>
 </conclusion>
 <references>
  <reference><p><a href="http://blog.bitflux.ch/archive/2004/07/25/registerxpathnamespace_added_to_simplexml.html">Bitflux Blog</a>, registerXPathNamespace() added to SimpleXML</p></reference>
  <reference><p><a href="http://developpeur.journaldunet.com/tutoriel/php/040921-php-seguy-simplexml-1e.shtml">JDN Développeurs</a>, PHP5 : SimpleXML</p>
  </reference>
  <reference><p><a href="http://www.php.net/simplexml">Manuel PHP</a> : fonctions simpleXML</p>
  </reference>
  <reference><p><a href="http://www.ontopia.net/omnigator/models/index.jsp">Ontopia Omnigator</a>, outil de visualisation de topic map au format hypertext et graphique</p>
  </reference>
  <reference><p>Puntambekar, S. , Stylianou, A. &amp; Hübscher, R. (2003) Improving Navigation and Learning in Hypertext Environments With Navigable Concept Maps in Human-Computer Interaction, Vol. 18, No. 4, Pages 395-428. [<a href="http://www.leaonline.com/doi/abs/10.1207%2FS15327051HCI1804_3?cookieSet=1">electronic version</a>]</p>
  </reference>
  <reference>
<p>Quelques topic map explorées :</p>
   <ul>
   <li><a href="http://www.ontopia.net/omnigator/models/topicmap_complete.jsp?tm=opera.xtm">Topic Map utilisée de Steve Pepper</a> utilisé comme exemple pour <a href="http://www.ontopia.net/omnigator/models/index.jsp">Omnigator</a></li>
   <li><a href="http://tecfa.unige.ch/staf/staf-i/sangin/staf18/mb_map2.xtm">Topic Map de Mirweis Sanguin</a>, projet staf18 @tecfa, volée Iris</li>
   <li><a href="http://tecfa.unige.ch/perso/staf/steinera/staf18/topic_final/tm/index.html">Topic Map de Anne-Claude Steiner</a>, projet staf18 @tecfa, volée Iris (visualisation générée avec <a href="http://www.mintert.com/topicmaps/xtm2xhtml/">xtm2xhtml</a>)</li>
  </ul>
  </reference>
  <reference><p><a href="http://xmlfr.org/topicmaps.org/xtm/1.0/">Spécifications XTM 1.0</a></p>
  </reference>
 </references>
 <annex>
  <h3><a href="#schemaDTD1" name="schemaDTD2">Annexe 1</a></h3>
  <p><span class="legend">Schéma, selon les spécifications XTM, des éléments possibles d'un topic map.</span><br/>
   <img src="http://tecfa.unige.ch/staf/staf-k/michel/staf18/paper/schema_DTD_XTM_v1.png"/></p>
  <h3><a href="#schemaTopicMap1" name="schemaTopicMap2">Annexe 2</a></h3>
  <p>
   <span class="legend">
    Schéma simplifié des éléments représentés dans la visualisation (avant la phase d'extraction et de visualisation !)
   </span>
   <br/>
   <img src="http://tecfa.unige.ch/staf/staf-k/michel/staf18/paper/elements.png"/>
  </p>
 </annex>
</paper>

