• Aucun résultat trouvé

7.5 Prototype

7.5.2 Implémentation

La plateforme WestAfricapedia utilise les vocabulaires des ontologies USCO et HuTO. Ainsi, la seconde étape après l'installation des outils a été d'importer ces vocabulaires dans la plateforme. Pour cela, nous avons spécié dans l'espace de noms MediaWiki les diérents vocabulaires importés. Par exemple, pour le vo- cabulaire HuTO, en se connectant comme administrateur du Wiki, nous avons créé la page MediaWiki:Smw_import_huto dans laquelle l'URL du vocabulaire

7.5. Prototype 143 (http://ns.inria.fr/huto/) est précisée ainsi que toutes les annotations relatives à HuTO qui seront utilisées comme suit:

http://westaficapedia.sn/usco/ Event|Category Community|Category Infrastructure|Category organize|Type:Page Nom|Type:Text

Si l'annotation à utiliser est une classe il faut la déclarer comme Category, si c'est une relation il faut la déclarer comme Type:Page et si c'est un attribut il faut la dé- clarer comme Type:T avec T les types usuels de SMW (Text, Number, Url, etc). Notons aussi que les vocabulaires de DBpedia et de Schema.org sont importés puisque l'ontologie USCO est alignée avec ces deux vocabulaires.

Une fois les vocabulaires spéciés, il reste à dénir les catégories et les propriétés des pages qui sont utilisées dans la plateforme.

Catégories et propriétés

Les catégories sont des fonctionnalités logicielles de MW qui permettent d'indexer automatiquement les pages du Wiki. Ces fonctionnalités ont été étendues par SMW pour matérialiser la notion de classe RDF. Ainsi, pour dénir une catégorie il faut créer la page dans l'espace de noms Category et donner le nom de la catégorie. Par exemple, dans la plateforme, la page Category:EvenementReligieux a été créée. Pour cela, nous avons spécié le code suivant :

[[Imported from::usco:RelgiousEvent]]

L'annotation ci-dessus dans la page Category:EvenementReligieux permet d'instancier toutes les pages catégorisées dans Category:EvenementReligieux comme instance de http://westafricaPedia.sn/usco/ReligiousEvent.

Les propriétés sont les méthodes de base pour ajouter des données sémantiques dans SMW. Elles peuvent être considérées comme des  catégories pour les valeurs  sur les pages d'un Wiki. Ainsi, pour dénir une propriété il faut créer la page dans l'espace de noms Property et donner le nom de la propriété. Par exemple, dans la plateforme, la page Property:Partie_de a été créée. Pour cela, nous avons spécié le code suivant :

[[Imported from::usco:isPartOf]]

L'annotation ci-dessus dans la page Property:Partie_de signie que l'utilisation de la propriété Partie_de dans le Wiki correspond à la propriété http://westafricaPedia.sn/usco/isParOf.

WestAfricapedia est une plateforme collaborative où les utilisateurs ont la possibilité d'annoter les ressources de la plateforme. Cette annotation doit être faite grâce aux vocabulaires importés. Ceci implique que les utilisateurs doivent connaître les vocab- ulaires utilisés dans la plateforme. Ceci n'est pas évident pour tous les utilisateurs mais heureusement SMW propose des mécanismes, Templates et Semantic Forms (formulaires) qui permettent aux utilisateurs d'annoter les ressources sans néces- sairement connaître les vocabulaires importés.

Templates et Formulaires

Les Templates sont des pages standard du Wiki dont le contenu est conçu pour être utilisé dans d'autres pages. Ainsi, pour dénir un template il faut créer la page dans l'espace de noms Template et donner le nom du template. Par exemple, dans la plateforme, la page Template:InfrastructureTemplate a été créée. Pour cela, nous avons spécié le code suivant :

<includeonly>

{| class="wikitable" {{#if:{{{Nom|}}}|! Nom

{{WriteTemplate|dbpedia:name|{{{Nom|}}}}}}} |-

{{#if:{{{Annee de construction|}}}|! Annee de construction

{{WriteTemplate|Annee Construction|{{{Annee de construction|}}}}}}} |- {{#if:{{{Taille|}}}|! Taille (m) {{WriteTemplate|dbpedia:altitude|{{{Taille|}}}}}}} |- {{#if:{{{Superficie|}}}|! Superficie (m2) {{WriteTemplate|dbpedia:area|{{{Superficie|}}}}}}} |- ! Se trouve

| {{#if:{{{Se trouve|}}}|[[usco:localize::{{{Se trouve|autocomplete on

| category=Localite}}}]]}} |- |-{{#if:{{{Latitude|}}}|{{#if:{{{Longitude|}}}|[[LatitudeLongitude::{{{Latitude|}}}, {{{Longitude|}}}]]}}}} |} [[Category:Infrastructure]] </includeonly>

Le code ci-dessus est utilisé par les pages catégorisées dans la catégorie Infrastructure (dernière ligne). Ce template utilise certaines propriétés du vocabulaire de DBpedia (dbpedia:nom, dbpedia:area, etc.). Il intègre aussi les coordonnées géographiques de l'infrastructure et la propriété usco:localize de l'ontologie USCO. Ce code est intégré dans un formulaire qui sera rempli par

7.5. Prototype 145 l'utilisateur. De ce fait, l'utilisateur n'a pas besoin de connaître les vocabulaires utilisés dans la plateforme.

L'installation de Semantic Forms ajoute un nouvel espace de noms pour créer des formulaires. Ainsi, pour dénir un formulaire il faut créer la page dans l'espace de noms Form et donner le nom du formulaire. Par exemple, dans la plateforme, la page Form:InfrastructureForm a été créée. Pour cela, nous avons spécié le code suivant : <includeonly> {{{for template|InfrastructureTemplate}}} {| class="formtable" ! Nom: | {{{field|Nom}}} |- ! Annee de construction: | {{{field|Annee de construction}}} |- ! Taille (m): | {{{field|Taille}}} |- ! Superficie (m2): | {{{field|Superficie}}} |- ! Latitude: | {{{field|Latitude}}} |- ! Longitude: | {{{field|Longitude|}}} |- ! Se trouve:

| {{{field|Se trouve|autocomplete on category=Localite}}} |}

</includeonly>

La première ligne de code ci-dessus, spécie que ce formulaire est lié au template Template:InsfrastructureTemplate. Ainsi, les autres lignes correspondent aux paramètres du template à remplir.

Implémentation Java EE

Pour l'utilisation des données par Exhibit, des programmes Java EE ont été développés. Le modèle MVC a été adopté qui propose une solution générale au problème de la structuration d'une application. Le moodèle MVC dénit des règles qui déterminent dans quelle couche de l'architecture et dans quelle classe de cette

couche doit être intégrée une fonctionnalité spécique. Une application conforme à ces règles est plus facile à comprendre, à gérer et à modier.

Dans notre implémentation nous avons utilisé la présentation de Exhibit Map et Exhibit Simple. Exhibit Map permet de placer dans une carte Google Map toutes les infrastructures géolocalisées dans la base de connaissances. Exhibit Simple ache sur une page HTML les infrastructures de la base de connaissances avec leur photo éventuellement.

Une servlet pour la page Exhibit simple a été développée et permet d'acher les infrastructures annotées. Elles sont classées par région et peuvent être triées par type ou par ville. Pour obtenir les informations nous avons exécuté la requête SPARQL suivante :

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX usco: <http://westaficapedia.sn/usco/>

SELECT DISTINCT ?link ?label ?city ?type ?imageURL WHERE {

?cityURI rdf:type usco:Locality . ?link usco:localize ?cityURI . ?link rdf:type/rdfs:subCassOf* ?t . ?t rdfs:label ?type .

?cityURI rdfs:label ?city . ?link rdfs:label ?label .

OPTIONAL {?link usco:Urlimage ?imageURL} }

La requête ci-dessus permet d'extraire toutes les localités de la base de connais- sances et leur type. Cette requête est utilisée dans un script qui extrait les données de la base de connaissances grâce au SPARQL Endpoint. Au préalable, nous devons changer le format du résultat de la requête SPARQL parce que Exhibit utilise un format JSON diérent de celui des résultats d'une requête SPARQL en format JSON (g. 7.3). Ainsi dans la gure 7.3, la ligne 4 englobe la requête ci-dessus et la ligne 6 exécute la requête dans le SPARQL Endpoint (this.virtuosoHost est l'URL du SPARQL Endpoint). La ligne 15, donne le résultat en format XML. Pour transformer le format XML en format JSON Exhibit, nous avons utilisé un chier XSLT pour avoir le bon format JSON utilisé par Exhibit (ligne 17 à ligne 23). Ainsi, une servlet est créée qui utilise ce code pour générer la page Exhibit simple.

7.5. Prototype 147

Figure 7.3: Transformation du résultat de la requête en un format JSON Exhibit. La ligne 9 de la gure 7.4 charge le chier des données qui a été généré par le code de la gure7.3. La ligne 11 charge l'API de Exhibit qui permet de traiter les données de la ligne 8. La ligne 20 montre le type de vue choisie pour représenter les données (viewPanel). Les lignes 22 à 27 présentent les objets à représenter dans la page HTML. Ces objets sont les attributs qui composent le résultat de la requête SPARQL. Les lignes 35 à 40 présentent les ltres utilisés dans la page HTML. Ainsi, ce code JSP est utilisé pour générer la gure7.9.

Figure 7.4: Code de la page Exhibit Simple.

Documents relatifs