Letude de cas proposee concerne la representation de donnees geographiques.
1 Presentation Nous vous proposons de representer, sous forme de donnees semi-structurees, exprimees en XML, des donnees sur les continents, pays, ville, mers, chaines de montagnes, et euves du monde. Les informations suivantes seront representees : pour les villes : le nom de la ville, le pays auquel elle appartient, sa population, son altitude, sa longitude et sa latitude; pour les pays : le nom du pays, le continent auquel il appartient, sa capitale, sa supercie, sa population et les autres pays avec lesquels il partage une fronti`ere, pour les continents : le nom du continent, sa surface; pour les euves, les chaines de montagnes et les mers : les surface/longueur, et les pays bordes/traverses. Ville nom population lieu (long., lat.) Pays nom population surface Continent nom surface Rivire nom longueur Mer nom surface Montagne nom altitude 0,1 1,1 capitale 1,1 0,N appartient 1,1 0,N appartient 0,N 0,N travers par 0,N 0,N bord par 0,N 0,N bord par frontalier avec 0,N 0,N Figure 1: Schema E/R de letude de cas proposee. La gure 1 presente un schema Entite-Association de cette etude de cas. Lobjectif est de fournir un syst`eme de gestion de ces informations, supportant : 1. linterrogation de la base `a partir de crit`eres predicatifs exprimes `a partir des elements decrits ci-dessus (par exemple, obtenir la liste des pays traverses par un euve, ou bien la capitale dun pays), 2. la mise `a jour de ces donnees dans le meme mode (par exemple ajouter une ville) ainsi que lenrichissement du schema (par exemple ajouter un pictogramme representant le drapeau, associe `a chaque pays). 1 2 Conception 1. construisez un exemple corresponant `a la gure 1, que vous structurerez au moyen de balises. Vous pouvez utiliser les editeurs integres `a baseX 1 ou eXist 2 pour vous aider `a construire cet exemple. 2. proposez une DTD correspondant `a votre exemple, 3. validez votre exemple par rapport `a votre DTD, en utilisant xmllint 3 , 4. transformez cette DTD en schema au moyen de dtd2xs 4 , completez le schema obtenu, 5. optionnellement, validez votre exemple par rapport `a votre schema, en utilisant xmllint. 3 Transformations 1. Importez, au moyen dune transformation XSL, les donnees de la base MONDIAL http://dbis.informatik.uni-goettingen.de/Mondial/#XML dans votre schema. Comparez vos choix de conception avec ceux faits par les concepteurs de cette base. Vous pouvez utiliser un outil de transformation specique (xsltproc par exemple). 2. Validez le document obtenu avec votre DTD et/ou votre schema. 4 Interrogations 1. Installez le gestionnaire de bases de donnees BaseX 5 et importez vos donnees. 2. eXist 6 , est une solution alternative `a BaseX. 3. Determinez, au moyen de requetes XPath (quand cest possible) et XQuery (sinon) : (a) la capitale de la France, (b) les pays frontaliers avec la France, (c) la liste des pays traverses par le Danube, (d) les pays ayant au moins une ville de plus dun million dhabitants, (e) la liste des euves dEurope, (f) la liste des mers bordees par plus de 5 pays, (g) la liste des pays dont toutes les villes font moins de 500000 habitants, (h) les pays bordes par aucune mer, (i) les pays dont plus du quart de la population habite dans les villes repertoriees, (j) la ville la plus proche de la longitude 2 et latitude 48, (k) les composantes connexes du graphe dont les nuds representent les pays et les arcs les fronti`eres entre les pays. 4. Exprimez, sous la forme dun document XHTML, produit au moyen dune requete XQuery : 1 http://www.basex.org 2 http://exist-db.org 3 http://xmlsoft.org/ 4 http://www.lumrix.net/dtd2xs.php 5 basex.org 6 http://www.exist-db.org 2 (a) Pour chaque pays, son nom, sa population, et, pour chaque ville du pays, son nom, sa position (longitude/latitude) et sa population (1 tableau par ville). Les villes seront presentees par population decroissante. (b) Pour chaque euve, son nom, et les villes quil traverse. 5. Dessinez une carte du monde, produite en SVG, au moyen de requetes XQuery, en vous aidant, si besoin (et uniquement lorsque cel`a vous semble necessaire), de fonctions ecrites en langage Java. (a) Generez des cercles, correspondant `a chaque ville. Le rayon de chaque cercle sera proportionnel `a la population de la ville. La position de chaque cercle sera determinee `a partir de la longitude et de la latitude de la ville. (b) Ajoutez le nom de chaque ville au dessus du cercle correspondant. (c) Ajoutez les euves au moyen de chemins SVG. Le trace des euves sera determine `a partir des villes traversees par les euves 7 . Ajoutez le nom de chaque euve le long de son trace. (d) Dessinez les pays. Le trace des pays sera determine en calculant le polygone englobant toutes les villes de chaque pays, puis en achant chaque polygone sous la forme dun chemin SVG. (e) Dessinez les mers et les oceans. Vous en determinerez la localisation `a partir de la localisation des pays les bordant. (f) Coloriez les mers, les oceans et les pays. Pour colorier les pays vous utiliserez un nombre de couleurs limite mais en veillant `a ce que deux pays ayant une fronti`ere commune soient colories en utilisant des couleurs dierentes. Note : Vous pourrez utiliser inkscape an de produire des mod`eles de documents SVG dont vous pourrez vous inspirer pour vos requetes. Vous pourrez utiliser inkscape, refox ou evince pour visualiser les documents SVG que vous aurez produits. 7 vous pourrez vous appuyer sur la propriete que les euves coulent des altitudes les plus elevees vers les altitudes les plus basses pour construire leur trace. 3