• Aucun résultat trouvé

Alimentation initiale de l’ontologie OF4OSM à partir du wiki OSM . 86

Comme évoqué en section 5.3.2, l’exploitation de la page Map Features

1

sur le

wiki d’OSM est pertinente dans le cadre de notre approche. En effet, cette page Web

répertorie des tags dont l’utilisation a d’ores et déjà fait l’objet d’un consensus au

sein de la communauté OSM. Il nous semble donc judicieux d’initialiser l’ontologie

OF4OSM sur la base des tags qu’elle contient et de la façon dont elle les structure.

Dans cette section, la méthode de récupération du contenu de la page Map features

est abordée en section 6.2.1, tandis que la méthode d’alimentation initiale de

l’onto-logie OF4OSM à partir de l’information récupérée sur cette page Web est expliquée

en section 6.2.2

6.2.1 Récupération du contenu de la page Map features

Sur la pageMap features du wiki OSM, les tags OSM sont rangés sous 3 niveaux

de titres. Cette structure est illustrée sur la figure 6.1. Au premier niveau de la

table des matières, on trouve les deux grands groupes de tags :1) Primary features

et 2) Additional Property. Ceux-ci correspondent respectivement aux tags de type

catégorie (of4osm:IOSMCategoryTag) et aux tags de type propriété

(of4osm:IOS-MPropertyTag). Dans la lignée des travaux de [Auer et al., 2009], et comme nous

l’avons vu dans le chapitre 5, nous ne nous intéressons qu’aux tags de typecatégorie.

Le second niveau de la hiérarchie de la table des matières de la page Map Features

correspond aux clés des tags OSM. Par exemple, les titres 1.1) Aerialway, 1.2)

Aeroway ou encore 1.3) Amenity visibles sur la figure 6.1 font référence à des clés

utilisées dans des tags de la base de données OSM (par exemple,

Figure 6.1 – Structure de la pageMap Features du wiki OSM.

lift, aeroway=aerodromeou encore amenity=school). Les tags de type catégorie

qui partagent la même clé étant, a priori, plus proches sémantiquement que les

autres tags, chaque concept de l’ontologie OF4OSM extrait d’un tag OSM sera lié

à un concept représentant sa clé par une relation de subsomption (cf. section 5.3.1).

Afin de créer cette hiérarchie clé-tag, et puisque les titres de niveau 2 de la table

des matières de la page Web Map Features correspondent aux clés des tags OSM,

un conceptof4osm:IOSMCategoryTagKeyConceptest créé pour chacun d’entre eux.

Tous les concepts de l’ontologie OF4OSM disposent d’un attribut sous la forme

d’un tableau associatif qui permet de stocker des labels internationalisés. Lors de

la création d’un concept à partir d’une clé, le label correspondant au concept est

la chaîne de caractères représentant la clé préalablement convertie au format Upper

Camel Case

2

. Par ailleurs, la page Map Features n’étant disponible qu’en anglais

à ce jour, le label est associé au code langage "en_EN". Par exemple, à partir des

3 titres de niveau 2 1.1) Aerialway,1.2) Aeroway et 1.3) Amenity, les 3 instances

correspondantes, de type of4osm:IOSMCategoryTagKeyConcept, sont créées : les

conceptsAerialway,Aeroway etAmenitysont alors ajoutés à l’ontologie OF4OSM.

Le niveau 3 de la table des matières est le niveau le plus fin sous lequel sont rangés

les tags OSM sur la pageMap Features du wiki OSM. Par exemple, sous le titre1.3

Amenity, il existe les titres de niveau 3 1.3.1) Sustenance,1.3.2) Education,1.3.3)

Transportation, etc. (cf figure 6.1). À la différence des titres de niveau 2 qui font

référence aux clés des tags OSM, les titres de niveau 3 ne font pas référence à la base

de données OSM. Par exemple, pour décrire les écoles dans OSM, il n’existe pas de

tageducation=school mais un tagamenity=school. Toutefois, cette classification

implique que certains tags partagent une caractéristique commune implicite qui

dépasse la sémantique exprimée par la clé. Parmi les tags qui partagent une même

clé, il existe donc des groupes de tags entre lesquels le lien de similarité est plus étroit.

Afin de tirer parti de cette sémantique, nous nous proposons d’ajouter le troisième

niveau de la table des matières de la pageMap Fatures à l’ontologie OF4OSM. Pour

ce faire, un concept de haut niveau (of4osm:IHighLevelConcept) est créé pour

chaque titre de niveau 3. Par exemple, le titre de niveau 1.3.2) Education,

sous-niveau de1.3) Amenity, lui-même sous-niveau de1) Primary features, donne lieu à

un concept de haut niveau auquel le label internationalisé "en_EN", "Education"

est associé.

Le label est ici formé par la concaténation du titre de niveau 3 et du titre de

niveau 2 sous lequel il se trouve, ceci dans le but de lever toute ambiguïté. En effet,

la pageMap Features peut potentiellement recenser des titres de niveau 3 identiques

du point de vue de leur orthographe mais très différents sur le plan conceptuel. En

l’état, la page Map Features ne compte qu’un seul cas d’ambiguïté : le titre de

niveau 3 Others, placé sous les titres de niveau 2 Amenity, Emergency et Shop.

Un traitement spécifique pour la chaîne de caractères "Others" peut être envisagé

comme solution. Cependant, dans le but d’éviter que ce type de problème se pose

dans des versions ultérieures du wiki OSM pour différents titres de niveau 3, le

recours à la concaténation nous paraît plus pertinent pour lever toute ambiguïté.

Enfin, chacun des tags de la pageMap Featuresdu wiki OSM est utilisé pour créer

un concept de type of4osm:IOSMCategoryTagConcept dans l’ontologie OF4OSM.

Au moment de sa création, un label correspondant à la concaténation de sa

va-leur puis de sa clé, converti au format UpperCamelCase, lui est associé. À titre

d’exemple, le tag amenity=school donne lieu au concept de type

of4osm:IOSM-CategoryTagConcept initialisé avec le label "en_EN", "SchoolAmenity". Ensuite,

un lien de subsomption est établi entre le concept extrait d’un tag et les concepts

Figure 6.2 – Alimentation initiale de l’ontologie OF4OSM à partir de page Map

Features du wiki OSM.

précédemment extraits des niveaux 2 et 3 de la hiérarchie de titres. Par exemple,

le concept SchoolAmenityest lié au concept de typeIOSMCategoryTagKeyConcept

Amenity (extrait du titre de niveau 2 1.3) Amenity), mais également au concept

IHighLevelConcept Education (extrait du titre de niveau 3 1.3.2) Education).

Afin de pouvoir mettre à jour l’ontologie OF4OSM au gré des évolutions du wiki

OSM, l’intégration des tags répertoriés sur la page Map Features se fait de façon

automatique. La figure 6.2 illustre le processus en deux étapes que nous avons

implé-menté dans un prototype écrit dans le langage de programmation Java

3

. En l’état,

notre prototype n’effectue pas de mises à jour en fonction des changements opérés

sur le wiki. Cependant, le passage en revue des tags de la page Map Features peut

être lancé périodiquement (par exemple, via une tâche cron

4

) afin de synchroniser

3. https://www.java.com/

OF4OSM avec le wiki OSM.

La première étape opérée par le prototype consiste en l’extraction du contenu

de la page Map Features du wiki OSM. Dans cette optique, nous avons réalisé un

client HTTP qui interroge l’interface de programmation du système de gestion de

contenu (Content Management System, CMS) sur lequel s’appuie le wiki OSM, à

savoir MediaWiki

5

. Cette API permet de récupérer, pour une page donnée du wiki

OSM, ses méta-données et son contenu textuel formaté en HTML (cf. annexe E). Le

client HTTP fait appel à la bibliothèque Java Jackson

6

dans le but de manipuler

facilement les informations au formatJavaScript Object Notation (JSON) renvoyées

par le serveur.

6.2.2 Alimentation initiale de OF4OSM à partir du contenu de la

page Map features

La seconde étape opérée par le prototype, et illustrée sur le schéma 6.2, consiste

en l’analyse de l’information de la pageMap Featuresextraite au cours de la première

étape (cf. section 6.2.1). Le document HTML est alors manipulé au moyen de la

bibliothèque Java JSoup

7

. Cette dernière offre un accès facilité auDocument Object

Model (DOM) du document HTML. Ainsi, le parcours des différents niveaux de

titre de la page Web Map Features est effectué grâce à des sélecteurs Cascading

StyleSheet (CSS)

8

. En s’appuyant sur le modèle conceptuel du méta-modèle de

OF4OSM présenté en section 5.3, le système ajoute les concepts correspondant aux

tags OSM (of4osm:IOSMCategoryTagConcept) répertoriés sur la pageMap Features,

ainsi que les concepts correspondant aux titres de niveau 2

(of4osm:IOSMCategory-TagKeyConcept) et 3 (of4osm:IHighLevelConcept) sous lesquels ces mêmes tags

sont rangés. L’algorithme suivant décrit ce processus :

1 func initOF4OSM ( of4osm : OF4OSMOnto) 2 var m a p F e a t u r e s C l i e n t : M a p F e a t u r e s C l i e n t 3 var html : s t r i n g

4 var h t m l P a r s e r : H t m l P a r s e r 5 var htmlDoc : HtmlDocument

6 var p r i m a r y F e a t u r e s : HtmlElement 7 var s i b l i n g s : a r r a y [ HtmlElement ]

8 var keyConcept : IOSMCategoryTagKeyConcept 9 var t a g C o n c e p t : IOSMCategoryTagConcept 10 var h i g h L e v e l C o n c e p t : I H i g h L e v e l C o n c e p t 11

5. http://www.mediawiki.org/wiki/API:Main_page

6. https://github.com/FasterXML/jackson

7. https://jsoup.org/

8. http://www.w3schools.com/cssref/css_selectors.asp

12 begin 13 html← m a p F e a t u r e s C l i e n t . s e n d R e q u e s t ( ) 14 htmlDoc← p a r s e r . p a r s e ( html ) 15 p r i m a r y F e a t u r e s← htmlDoc . g e t E l e m e n t B y I d ( " Primary_f e a t u r e s " ) 16 s i b l i n g s ← p r i m a r y F e a t u r e s . g e t S i b l i n g s ( ) 17 f o r each s i b l i n g i n s i b l i n g s do 18 i f s i b l i n g . tagName = " h3 " then 19 keyConcept← createOSMCategoryTagKeyConcept ( s i b l i n g . t e x t ) 20 addConcept ( onto , keyConcept )

21 e l s e i f s i b l i n g s . tagName = " h4 " then

22 h i g h L e v e l C o n c e p t ← c r e a t e H i g h L e v e l C o n c e p t ( s i b l i n g . t e x t ) 23 add Paren t ( h i g h L e v e l C o n c e p t , keyConcept )

24 addConcept ( onto , h i g h L e v e l C o n c e p t ) 25 e l s e i f s i b l i n g s . tagName = " l i " then 26 t a g C o n c e p t← createOSMCategoryTagConcept ( s i b l i n g . t e x t ) 27 add Paren t ( ta gC on ce pt , h i g h L e v e l C o n c e p t ) 28 addConcept ( onto , t a g C o n c e p t ) 29 end i f 30 end f o r 31 end

Extrait de code 6.1 – Algorithme d’alimentation initiale de l’ontologie OF4OSM à

partir de la page Map Features du wiki OSM.

L’algorithme 6.1 présente la fonction d’alimentation initiale de l’ontologie OF4OSM

à partir de la pageMap Features du wiki OSM. Cette fonction prend en paramètre

d’entrée l’ontologie OF4OSM. Dans un premier temps, le client HTTP interroge

l’API MediaWiki (ligne 13) dans le but de récupérer le contenu de la page HTML

Map Features. Ensuite, le document HTML est converti en un objet (ligne 14)

per-mettant d’accéder facilement à ses balises. Puis, le premier titre de niveau 1,

repré-sentant les tags de typecatégorie, est atteint (ligne 15). Les éléments frères sont alors

récupérés (ligne 16) parcourus un à un (lignes 17 à 28). Dans la boucle, si l’élément

courant est un titre de niveau 2 (par exemple,1.3 Amenity en figure 6.1, associé ici

à la balise<h3>, car la baliseh1caractérise le titre de la pageMap Features, et non

les titres de niveau 1 dans la table des matières), un concept

of4osm:OSMCategory-TagKeyConceptest créé et ajouté à l’ontologie (lignes 18 à 21). Si l’élément courant

est un titre de niveau 3 (par exemple, 1.3. Education en figure 6.1, associé ici à la

balise<h4>), un conceptof4osm:HighLevelConceptest créé, le dernier concept

of-4osm:OSMCategoryTagKeyConcept lui est ajouté comme parent, puis il est ajouté à

l’ontologie (lignes 21 à 25). Si l’élément courant est un article de liste (par exemple,

amenity=clinic en figure 6.1, associé ici à la balise <li>), un concept

of4osm:O-SMCategoryTagConcept est créé, le dernier concept of4osm:HighLevelConcept lui

est ajouté comme parent, puis il est ajouté à l’ontologie (lignes 25 à 29).

Le temps d’exécution du code 6.1 sur une machine dotée d’un processeur de

2.2Ghz et de 8Go de RAM est d’une dizaine de secondes. Cet algorithme consiste en

Figure6.3 – Visualisation de l’ontologie OF4OSM après alimentation initiale dans

l’éditeur Protégé.

une structure itérative dont la complexité est linéaire (O(n)). Nous avons réalisé

l’ali-mentation initiale de l’ontologie OF4OSM sur la base de la version du 01/10/2016

de la page Map Features du wiki OSM. Le code du prototype qui implémente ce

processus ainsi que l’ontologie qui en résulte sont disponibles à l’adresse suivante :

https://github.com/anthonyhombiat/OF4OSM. La figure 6.3 illustre OF4OSM telle

que visualisée au moyen de l’interface de navigation proposée par l’éditeur

d’ontolo-gies Protégé

9

. Après alimentation initiale, l’ontologie OF4OSM est composée de 1

038 concepts organisés en une taxonomie à 3 niveaux. La répartition de ces concepts

est la suivante :

• 26 instances deof4osm:IOSMCategoryTagKeyConcept;

• 58 instances deof4osm:IHighLevelConcept;

• 898 instances deof4osm:IOSMCategoryTagConcept.

Une fois ces tags consensuels collectés à partir du guide de bonnes pratiques

du projet OSM, nous pouvons encore enrichir l’ontologie OF4OSM avec les tags

associés aux objets géographiques de la base de données OSM. La section 6.3 aborde

ce processus d’alimentation complémentaire de l’ontologie OF4OSM.

6.3 Alimentation complémentaire de l’ontologie OF4OSM