Tutoriel pour construire un écosystème Eclipse de développement Java d'applications sémantiques avec Jena

Michel Héon

Le projet du web sémantique propose un ensemble de technologies permettant de représenter la signification d'une ressource accessible par le web, et qui a pour cœur, le Ressource Description Framework (RDF). Pour le concepteur Java d'applications sémantiques, l'emploi du RDF impose des particularités qui lui sont propres, qu'il s'agisse : de la diffusion par le web de la sémantique d'une ressource; de l'exploitation de la sémantique par un programme Java; ou encore, de la conception de l'application Java en tant que telle. Le présent tutoriel, qui s'adresse au concepteur Java d'applications sémantiques, présente une procédure de construction d'un écosystème de développements fondé sur l'Eclipse Web Tools Project (WTP) qui intègre Apache Jena ainsi que l'API Java du RDF. Le tutoriel débute par la présentation de l'objectif du tutoriel et se poursuit par la procédure d'installation et de configuration d'Eclipse. La section III présente la procédure d'intégration de Jena à Eclipse alors que la section IV présente la procédure de publication d'un graphe RDF sur un serveur web local. Le tutoriel se termine par une discussion.

Ce tutoriel s'adresse à un concepteur déjà familier avec la programmation Java avec Jena.

Pour réagir au contenu de ce tutoriel, un espace de dialogue vous est proposé sur le forum Commentez .

- Titre : Tutoriel pour construire un écosystème Eclipse de développement Java d'applications sémantiques avec Jena

- Auteur : Michel Héon

- Parution : 26 janvier 2015

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2015 Michel Héon. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Objectif

- I-A. Besoin

- I-B. Solution

- I-C. Prérequis logiciel

- II. Installer et configurer Eclipse

- II-A. Installer Eclipse

- II-B. Changer l'apparence

- II-C. Franciser Eclipse

- II-D. Résumé

- III. Intégrer Jena à Eclipse

- III-A. Décompresser les fichiers de Jena

- III-B. Créer un projet Java

- III-C. Créer la classe BonjourDeJena

- III-D. Intégrer la bibliothèque Jena

- III-D-1. Créer du code Jena

- III-D-2. Ajouter les bibliothèques de Jena

- III-D-3. Associer le code source

- III-D-4. Attacher BigJena au projet

- III-D-5. Corriger l'erreur à ModelFactory

- III-E. Valider l'intégration

- III-E-1. Compléter le code

- III-E-2. Exécuter le code

- IV. Publier localement un graphe

- IV-A. Créer un projet web statique

- IV-B. Créer et publier un graphe

- IV-B-1. Créer le graphe

- IV-B-2. Publier le graphe

- IV-B-3. Coder et exécuter la lecture du graphe à partir du web

- IV-B-4. Exercice de validation

- V. Conclusion et remerciements

- VI. Bibliographie

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. 1 - Décompressez le fichier eclipse-jee-kepler-SR2-win32.zip dans le répertoire de votre choix ( par exemple : c:\eclipse-jee).

2. 2 - Démarrez Eclipse : C:\eclipse-jee\eclipse\eclipse.exe.

3. 3 - Choisir l'espace de travail approprié (par exemple : c:\eclipse-jee\espacedetravail)

1. 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. 1 - Exécutez Window->Preferences.

2. 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).

1. 3 - Sélectionnez le thème « Windows 7 Classic » dans la sélection General -> Apperance

1. 4 - Redémarrez Eclipse (Exécutez File -> Restart)

2. 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. 1 - Exécutez Help -> Install New Software

1. 2 - Dans le dialogue Install cliquez sur add ;

2. 3 - Dans le dialogue add Repository indiquez :

- Name : Babel,

- Location : http://download.eclipse.org/technology/babel/update-site/R0.12.0/kepler

1. Cliquez OK; puis attendez ;

2. 4 - Sélectionnez Babel Language Packs in French

1. 5 - Cliquez sur Next ;

2. 6 - Puis encore Next ;

3. 7 - Dans la fenêtre Review License, sélectionnez I Accept the terms of the license agreements; puis cliquez Finish ;

4. 8 - Après l'installation, redémarrez Eclipse ;

5. 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. 1 - Créer le répertoire Jena.

2. 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. 1 - Exécutez la commande Fichier -> Nouveau - >Projet

1. 2 - Sélectionnez Projet Java; puis Suivant

1. 3 - Dans le nom du Projet, indiquez TutorielJena.

2. 4 - Sous JRE, sélectionnez Utiliser l'environnement par défaut; puis cliquez Suivant

1. 5 - Puis cliquez Terminer

1. 6 - Répondez Oui à la demande de choisir la perspective associée à Java

1. 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. 1 - Avec le bouton de droite, cliquez le projet TutorielJena ; puis sélectionnez Nouveau ; puis Classe

1. 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. 1 - Dans la fenêtre de la classe BonjourDeJena, entrez le code suivant :

1. package tutorieljena;

3. import com.hp.hpl.jena.rdf.model.Model;

5. public class BonjourDeJena {

7. public static void main(String[] args) {

8. Model monModele = ModelFactory.createDefaultModel();

9. }

10. }

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. 1 - Exécutez la commande Fenêtre -> Preferences.

2. 2 - Dans le dialogue Préférences, choisissez : Java + Chemin de Compilation + Bibliothèque utilisateur ; puis cliques sur Nouveau…

1. 3 - Entrez le nom BibJena ; puis cliquez OK

1. 4 - Ajouter les fichiers Jar de Jena en cliquant sur Ajout des fichiers JAR externes.

2. 5 - Naviguer jusqu'au répertoire lib de Jena (C:\Jena\apache-jena-2.12.1\lib).

3. 6 - Sélectionnez l'ensemble des fichiers jar ; puis cliquez Ouvrir

1. 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. 1 - Défilez la barre déroulante et localisez le fichier jena-core-2.12.1.jar.

2. 2 - Sélectionnez Connexion de la source ; puis cliquez Modifier

1. 3 - Sélectionnez External Location ; puis cliquez Fichier externe.

2. 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…

1. 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.

2. 6 - Aperçu; puis cliquez OK

III-D-4 - Attacher BigJena au projet

1. 1 - De retour à l'édition du projet.

2. 2 - Avec le bouton de droite de la souris, sélectionnez le projet TutorielJena.

3. 3 - Choisir l'élément de menu Chemin de génération->Ajouter des bibliothèques

1. 4 - Choisir Bibliothèque utilisateur; puis Suivant

1. 5 - Sélectionnez BibJena ; puis Terminer

1. 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. 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 :

1. package tutorieljena;

3. import com.hp.hpl.jena.rdf.model.Model;

4. import com.hp.hpl.jena.rdf.model.ModelFactory;

5. import com.hp.hpl.jena.rdf.model.Property;

6. import com.hp.hpl.jena.rdf.model.Resource;

8. public class BonjourDeJena {

9. public static void main(String[] args) {

10. Model monModele = ModelFactory.createDefaultModel();

11. // Créer une ressource MESSAGE

12. Resource message = monModele.createResource("http://webtutoriel/message");

13. // Créer une propriété VALEUR

14. Property valeurProp = monModele.createProperty("http://webtutoriel/valeur");

15. // Assigner une valeur à la ressource

16. message.addProperty(valeurProp, "Bonjour à tous");

17. // Imprimer le contenu du modèle dans la syntaxe TTL

18. monModele.write( System.out , "TTL");

19. }

20. }

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. 1 - Exécutez la commande : Fichier -> Nouveau -> Projet

1. 2 - Dans l'assistant Nouveau projet ; choisir Web+Projet Web Statique ; puis cliquez Suivant

1. 3 - Dans Project Name, indiquez WebTutoriel ; puis cliquez Terminer

1. 4 - Acceptez d'afficher la perspective web.

2. 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. 1 - Sélectionnez WebContent avec le bouton droit de la souris.

2. 2 - Sélectionnez Nouveau -> Fichier

1. 3 - Dans le nom du fichier, entrez bonjour.ttl ; puis cliquez Terminer

1. 4 - Dans la fenêtre de texte, entrez le code suivant :

<http://webtutoriel/message> <http://webtutoriel/valeur> "Bonjour le monde" .

Puis fermez le fichier bonjour.ttl

IV-B-2 - Publier le graphe

Cette étape permet d'indiquer le projet à publier par serveur web.

1. 1 - Exécutez la commande Fichier -> Nouveau -> Autres.

2. 2 - Dans l'assistant sélectionnez Serveur + Serveur puis cliquez Suivant

1. 3 - Sélectionnez Aperçu HTTP ; puis Suivant

1. 4 - Dans Nouveau Serveur Sélectionnez WebTutoriel ; cliquez Ajouter ; puis Terminer

1. 5 - Aperçu

Dans la vue Serveurs, il est constaté que le serveur @localhost est prêt à diffuser le contenu de WebTutoriel.

1. 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. 1 - Sélectionnez avec le bouton droit de la souris, le paquetage Java tutorieljena.

2. 2 - Exécutez Nouveau -> Classe

1. 3 - Dans l'assistant Nouvelle classe Java, entrez le nom BonjourDeJenaWeb, puis Terminer.

2. 4 - Entrez le code suivant dans l'éditeur de classe

1. package tutorieljena;

3. import com.hp.hpl.jena.rdf.model.Model;

4. import com.hp.hpl.jena.rdf.model.ModelFactory;

5. import com.hp.hpl.jena.rdf.model.Property;

6. import com.hp.hpl.jena.rdf.model.Resource;

8. public class BonjourDeJenaWeb {

9. public static void main(String[] args) {

10. // Créer mon modèle

11. Model monModele = ModelFactory.createDefaultModel();

12. // Lire le contenu du fichier bonjour.ttl à partir du web et

13. // mettre le contenu dans monModel

14. monModele.read( "http://localhost:8080/WebTutoriel/bonjour.ttl");

15. // Obtenir la ressource "message"

16. Resource message = monModele.getResource("http://webtutoriel/message");

17. // Obtenir la propriété "valeurProp"

18. Property valeurProp = monModele.getProperty("http://webtutoriel/valeur");

19. // Obtenir la valeur associée au message

20. String valeur = message.getProperty(valeurProp).getString();

21. // Présenter la valeur associée au message

22. System.out.println("La valeur du message est: " + valeur.toString());

23. // Présenter le contenu de monModele en format RDF/XML

24. monModele.write( System.out , "RDF/XML");

25. }

26. }

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. 1 - Avec le bouton de droite de la souris, Cliquez la classe BonjourDeJenaWeb.java ;

2. 2 - Sélectionnez Exécuter en tant que -> Application Java

1. 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. 1 - Dans le fichier bonjour.ttl, remplacez la valeur du message par commentaire de votre choix ;

2. 2 - Sauvez le fichier ;

3. 3 - Attendez la disponibilité du serveur ;

4. 4 - Exécutez la classe BonjourDeJenaWeb.java ;

5. 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/