I. Objectif▲
I-A. Besoin▲
La confection d'une application sémantique nécessite l'intégration de plusieurs composants logiciels en un écosystème permettant de :
- éditer un graphe RDF ;
- éditer et compiler un programme Java ;
- diffuser le graphe RDF par un serveur web interne ;
- manipuler le contenu du graphe RDF par l'intermédiaire d'une API Java ;
- effectuer des requêtes par l'intermédiaire d'une API Java ;
- contrôler le mécanisme de raisonnement sur le graphe par l'intermédiaire d'une API Java.
I-B. Solution▲
Pour répondre au besoin, il est proposé de construire un écosystème qui intègre le Framework Jena à l'IDE Eclipse du projet Web Tool Platform (WTP) selon la figure présentée ci-dessous.
I-C. Prérequis logiciel▲
Ce tutoriel est réalisé à partir des logiciels suivants :
- Eclipse Kepler J2EE Sr2 32 bits version 4.3.2 du site http://www.eclipse.org ;
-
Jena 2.12.1 du site http://jena.apache.org :
- la bibliothèque du binaire apache-jena-2.12.1.zip,
- la bibliothèque du code source jena-2.12.1-source-release.zip.
II. Installer et configurer Eclipse▲
Cette étape décrit les instructions permettant : d'installer Eclipse, d'y configurer son apparence et de franciser l'environnement.
II-A. Installer Eclipse▲
- 1 - Décompressez le fichier eclipse-jee-kepler-SR2-win32.zip dans le répertoire de votre choix ( par exemple : c:\eclipse-jee).
- 2 - Démarrez Eclipse : C:\eclipse-jee\eclipse\eclipse.exe.
- 3 - Choisir l'espace de travail approprié (par exemple : c:\eclipse-jee\espacedetravail)
- 4 - Aperçu
II-B. Changer l'apparence▲
La modification de l'apparence est réalisée afin de clarifier la présentation de l'IDE et d'ajouter des éléments de présentation.
- 1 - Exécutez Window->Preferences.
- 2 - Sous General sélectionnez Show heap status (cette option permet d'afficher l'état de la mémoire au coin inférieur droit de l'IDE).
- 3 - Sélectionnez le thème « Windows 7 Classic » dans la sélection General -> Apperance
- 4 - Redémarrez Eclipse (Exécutez File -> Restart)
- 5 - Aperçu du résultat
II-C. Franciser Eclipse▲
Le projet Eclipse comporte un ensemble de modules permettant de modifier la langue de présentation de l'IDE. Babel est le projet associé à cette fonctionnalité d'Eclipse. Pour franciser Eclipse, réalisez les opérations suivantes :
- 1 - Exécutez Help -> Install New Software
- 2 - Dans le dialogue Install cliquez sur add ;
-
3 - Dans le dialogue add Repository indiquez :
- Name : Babel,
- Location : http://download.eclipse.org/technology/babel/update-site/R0.12.0/kepler
- Cliquez OK; puis attendez ;
- 4 - Sélectionnez Babel Language Packs in French
- 5 - Cliquez sur Next ;
- 6 - Puis encore Next ;
- 7 - Dans la fenêtre Review License, sélectionnez I Accept the terms of the license agreements; puis cliquez Finish ;
- 8 - Après l'installation, redémarrez Eclipse ;
- 9 - Aperçu
II-D. Résumé▲
À cette étape du tutoriel, l'environnement Eclipse est prêt à intégrer les modules de Jena.
III. Intégrer Jena à Eclipse▲
Cette étape du tutoriel vise à intégrer Jena dans l'IDE Eclipse par la démarche suivante.
III-A. Décompresser les fichiers de Jena▲
- 1 - Créer le répertoire Jena.
- 2 - Dans le répertoire, décompressez les fichiers : apache-jena-2.12.1.zip et jena-2.12.1-source-release.zip.
III-B. Créer un projet Java▲
À l'intérieur d'un espace de travail, Eclipse permet de créer des projets de toutes sortes. Pour le besoin du tutoriel, nous allons créer un projet de type Java.
- 1 - Exécutez la commande Fichier -> Nouveau - >Projet
- 2 - Sélectionnez Projet Java; puis Suivant
- 3 - Dans le nom du Projet, indiquez TutorielJena.
- 4 - Sous JRE, sélectionnez Utiliser l'environnement par défaut; puis cliquez Suivant
- 5 - Puis cliquez Terminer
- 6 - Répondez Oui à la demande de choisir la perspective associée à Java
- 7 - Aperçu
III-C. Créer la classe BonjourDeJena▲
Cette phase du tutoriel présente les étapes pour créer la classe qui utilisera quelques fonctionnalités de Jena.
- 1 - Avec le bouton de droite, cliquez le projet TutorielJena ; puis sélectionnez Nouveau ; puis Classe
- 2 - Entrez les valeurs suivantes : sous Paquetage, entrez : tutorieljena, et sous Nom, entrez : BonjourDeJena, puis cliquez Terminer
III-D. Intégrer la bibliothèque Jena▲
Pour intégrer la bibliothèque de Jena, la première étape consiste à écrire un petit programme qui utilise du code de Jena puis d'ajuster les préférences d'Eclipse afin que le programme puisse exploiter les fonctionnalités de Jena. L'intégration du code source de Jena permettra de configurer le mécanisme de documentation à chaud d'Eclipse.
III-D-1. Créer du code Jena▲
- 1 - Dans la fenêtre de la classe BonjourDeJena, entrez le code suivant :
2.
3.
4.
5.
6.
7.
8.
9.
10.
package
tutorieljena;
import
com.hp.hpl.jena.rdf.model.Model;
public
class
BonjourDeJena {
public
static
void
main
(
String[] args) {
Model monModele =
ModelFactory.createDefaultModel
(
);
}
}
Notez les indicateurs en rouge. Ils servent à informer le développeur des erreurs constatées par l'IDE. Dans l'exemple plus bas, le message qui apparaît en passant la souris au-dessus de Model, indique que le type n'est pas valide. Cette erreur provient de la non-intégration des bibliothèques de Jena à l'IDE.
III-D-2. Ajouter les bibliothèques de Jena▲
L'ajout des bibliothèques de Jena est réalisé par les préférences de l'IDE. Voici les étapes de l'ajout des bibliothèques de Jena.
- 1 - Exécutez la commande Fenêtre -> Preferences.
- 2 - Dans le dialogue Préférences, choisissez : Java + Chemin de Compilation + Bibliothèque utilisateur ; puis cliques sur Nouveau…
- 3 - Entrez le nom BibJena ; puis cliquez OK
- 4 - Ajouter les fichiers Jar de Jena en cliquant sur Ajout des fichiers JAR externes.
- 5 - Naviguer jusqu'au répertoire lib de Jena (C:\Jena\apache-jena-2.12.1\lib).
- 6 - Sélectionnez l'ensemble des fichiers jar ; puis cliquez Ouvrir
- 7 - Aperçu
III-D-3. Associer le code source▲
Pour chaque fichier Jar, il est possible d'y associer le code source correspondant.
- 1 - Défilez la barre déroulante et localisez le fichier jena-core-2.12.1.jar.
- 2 - Sélectionnez Connexion de la source ; puis cliquez Modifier
- 3 - Sélectionnez External Location ; puis cliquez Fichier externe.
- 4 - Dans le répertoire C:\Jena\apache-jena-2.12.1\lib-src sélectionnez le fichier jena-core-2.12.1-sources.jar ; puis cliquez Ouvrir…
- 5 - Refaire la même opération pour les fichiers : jena-arq-2.12.1-sources.jar, jena-iri-1.1.1-sources.jar, jena-sdb-1.5.1-sources.jar, jena-tdb-1.1.1-sources.jar.
- 6 - Aperçu; puis cliquez OK
III-D-4. Attacher BigJena au projet▲
- 1 - De retour à l'édition du projet.
- 2 - Avec le bouton de droite de la souris, sélectionnez le projet TutorielJena.
- 3 - Choisir l'élément de menu Chemin de génération->Ajouter des bibliothèques
- 4 - Choisir Bibliothèque utilisateur; puis Suivant
- 5 - Sélectionnez BibJena ; puis Terminer
- 6 - Aperçu
Après l'ajout de BibJena, le projet a été recompilé par Eclipse. Cependant, une erreur est toujours identifiée à la classe ModelFactory. Cette erreur est corrigée par la procédure qui suit.
III-D-5. Corriger l'erreur à ModelFactory▲
En déplaçant le curseur au-dessus de l'erreur, l'IDE présente une fenêtre de dialogue contextuel qui propose quelques solutions de correction. Parmi les propositions, le correctif importer ModelFactory (com.hp.hpl.jena.rdf.model) est présenté.
- 1 - Choisissez le correctif importer ModelFactory (com.hp.hpl.jena.rdf.model).
La ligne import com.hp.hpl.jena.rdf.model.ModelFactory est automatiquement ajoutée et les erreurs sont corrigées.
III-E. Valider l'intégration▲
Pour valider l'intégration de la bibliothèque de Jena, il est proposé de compléter le programme avec du code de Jena et d'exécuter le code.
III-E-1. Compléter le code▲
Dans l'éditeur, complétez le code suivant :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
package
tutorieljena;
import
com.hp.hpl.jena.rdf.model.Model;
import
com.hp.hpl.jena.rdf.model.ModelFactory;
import
com.hp.hpl.jena.rdf.model.Property;
import
com.hp.hpl.jena.rdf.model.Resource;
public
class
BonjourDeJena {
public
static
void
main
(
String[] args) {
Model monModele =
ModelFactory.createDefaultModel
(
);
// Créer une ressource MESSAGE
Resource message =
monModele.createResource
(
"http://webtutoriel/message"
);
// Créer une propriété VALEUR
Property valeurProp =
monModele.createProperty
(
"http://webtutoriel/valeur"
);
// Assigner une valeur à la ressource
message.addProperty
(
valeurProp, "Bonjour à tous"
);
// Imprimer le contenu du modèle dans la syntaxe TTL
monModele.write
(
System.out , "TTL"
);
}
}
Après avoir créé le modèle monModele, le programme appelle la création de la ressource message et de la propriété valeurProp. Par la suite, le programme associe la valeur " Bonjour à tous " à la ressource message. Le programme se termine par l'impression du modèle en format Turtle TTL à la console.
III-E-2. Exécuter le code▲
En cliquant le bouton () , le programme BonjourDeJena est exécuté et le résultat est présenté dans la vue Console.
IV. Publier localement un graphe▲
Cette section du tutoriel configure l'environnement afin de publier localement un graphe sur un serveur web local et exécuter du code Jena qui lit le graphe à partir du serveur.
IV-A. Créer un projet web statique▲
- 1 - Exécutez la commande : Fichier -> Nouveau -> Projet
- 2 - Dans l'assistant Nouveau projet ; choisir Web+Projet Web Statique ; puis cliquez Suivant
- 3 - Dans Project Name, indiquez WebTutoriel ; puis cliquez Terminer
- 4 - Acceptez d'afficher la perspective web.
- 5 - Aperçu
Remarquez la position du curseur qui indique que l'IDE présente la perspective web. Il est possible de revenir à la perspective Java en cliquant sur le bouton Java.
IV-B. Créer et publier un graphe▲
Les étapes suivantes sont réalisées dans le répertoire WebContent du projet WebTutoriel. Le répertoire WebContent contient l'ensemble des fichiers qui seront publiés serveur web interne.
IV-B-1. Créer le graphe▲
- 1 - Sélectionnez WebContent avec le bouton droit de la souris.
- 2 - Sélectionnez Nouveau -> Fichier
- 3 - Dans le nom du fichier, entrez bonjour.ttl ; puis cliquez Terminer
- 4 - Dans la fenêtre de texte, entrez le code suivant :
Puis fermez le fichier bonjour.ttl
IV-B-2. Publier le graphe▲
Cette étape permet d'indiquer le projet à publier par serveur web.
- 1 - Exécutez la commande Fichier -> Nouveau -> Autres.
- 2 - Dans l'assistant sélectionnez Serveur + Serveur puis cliquez Suivant
- 3 - Sélectionnez Aperçu HTTP ; puis Suivant
- 4 - Dans Nouveau Serveur Sélectionnez WebTutoriel ; cliquez Ajouter ; puis Terminer
- 5 - Aperçu
Dans la vue Serveurs, il est constaté que le serveur @localhost est prêt à diffuser le contenu de WebTutoriel.
-
6 - Cliquez sur le bouton ( ) en triangle vert pour démarrer le serveur :
- à l'état [Démarré, Synchronisé] le graphe est en état de diffusion sur le serveur ;
- le bouton ( ) permet d'arrêter le serveur ;
- après le départ, le message suivant apparaît à la console :
« Le graphe est publié à l'adresse http://localhost:8080/WebTutoriel/bonjour.ttl ».
IV-B-3. Coder et exécuter la lecture du graphe à partir du web▲
Pour coder le programme de lecture du graphe à partir du web, réalisez les étapes suivantes :
- 1 - Sélectionnez avec le bouton droit de la souris, le paquetage Java tutorieljena.
- 2 - Exécutez Nouveau -> Classe
- 3 - Dans l'assistant Nouvelle classe Java, entrez le nom BonjourDeJenaWeb, puis Terminer.
- 4 - Entrez le code suivant dans l'éditeur de classe
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
package
tutorieljena;
import
com.hp.hpl.jena.rdf.model.Model;
import
com.hp.hpl.jena.rdf.model.ModelFactory;
import
com.hp.hpl.jena.rdf.model.Property;
import
com.hp.hpl.jena.rdf.model.Resource;
public
class
BonjourDeJenaWeb {
public
static
void
main
(
String[] args) {
// Créer mon modèle
Model monModele =
ModelFactory.createDefaultModel
(
);
// Lire le contenu du fichier bonjour.ttl à partir du web et
// mettre le contenu dans monModel
monModele.read
(
"http://localhost:8080/WebTutoriel/bonjour.ttl"
);
// Obtenir la ressource "message"
Resource message =
monModele.getResource
(
"http://webtutoriel/message"
);
// Obtenir la propriété "valeurProp"
Property valeurProp =
monModele.getProperty
(
"http://webtutoriel/valeur"
);
// Obtenir la valeur associée au message
String valeur =
message.getProperty
(
valeurProp).getString
(
);
// Présenter la valeur associée au message
System.out.println
(
"La valeur du message est: "
+
valeur.toString
(
));
// Présenter le contenu de monModele en format RDF/XML
monModele.write
(
System.out , "RDF/XML"
);
}
}
En prévision d'exécuter le programme, il est nécessaire de s'assurer que le serveur HTTP soit à l'état : [Démarré, Synchronisé]
Réalisez les étapes suivantes pour exécuter la classe BonjourDeJenaWeb :
- 1 - Avec le bouton de droite de la souris, Cliquez la classe BonjourDeJenaWeb.java ;
- 2 - Sélectionnez Exécuter en tant que -> Application Java
- 3 - Observez le résultat : Le message Bonjour le monde, contenu dans le fichier ainsi que le contenu de monModele sont présentés dans la Console
IV-B-4. Exercice de validation▲
En tant qu'exercice de validation, il est proposé de réaliser les étapes suivantes :
- 1 - Dans le fichier bonjour.ttl, remplacez la valeur du message par commentaire de votre choix ;
- 2 - Sauvez le fichier ;
- 3 - Attendez la disponibilité du serveur ;
- 4 - Exécutez la classe BonjourDeJenaWeb.java ;
- 5 - Observez si le message apparaît correctement à la Console.
V. Conclusion et remerciements▲
Il a été vu dans ce tutoriel une procédure de construction d'un écosystème de développement d'application pour le web sémantique. L'écosystème intègre Apache Jena à l'environnement de programmation Eclipse. De plus, le tutoriel présente une procédure permettant d'exploiter les ressources d'Éclipse afin de simuler la diffusion web d'un graphe RDF. Le concepteur devrait trouver dans cet écosystème, les éléments fondamentaux à la confection d'une application sémantique.
Nous tenons à remercier Claude Leloup pour sa relecture attentive de cet article et Mickaël Baron pour la mise au gabarit.
VI. Bibliographie▲
- Apache Software Foundation. (2014). Jena, A Semantic Web Framework for Java Retrieved 26 sept., 2006, du site: https://jena.apache.org/
- Dai, N., Mandel, L., and Ryman, A. (2007). Eclipse Web Tools Platform: Developing Java Web Applications: Addison-Wesley Professional
- Héon, M. (2014). Web sémantique et modélisation ontologique (avec G-OWL): Guide du développeur Java sous Eclipse (Collection Epsilon): Éditions ENI, du site: http://web-semantique-et-modelisation-ontologique-avec-g-owl.com/
- W3C. (2014). RDF 1.1 Primer. W3C Working Group Note 25 February 2014 Retrieved 2014-12-08, 2014, du site: http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/