TP Ingénierie des connaissances et Web sémantique
Nous allons vous donner une application du moteur RDF Corese
embarqué
dans un serveur tomcat.
L'application concerne la gestion des compétences: elle contient
une ontologie formalisée en RDFS permettant en particulier de
décrire les compétences des personnes (par exemple pour
saisir des CV) et des annotations formalisées en RDF utilisant
le vocabulaire de cette ontologie pour décrire quelques
personnes.
Le TP consiste dans un premier temps à vous familiariser avec
l'application, son architecture et les fonctionnalités
disponibles dans cet exemple. Pour cela nous allons vous demander un
certain nombre manipulations qui vous amèneront à
naviguer et soumettre des requêtes au système.
Dans un deuxième temps nous vous demanderons d'étendre le
modèle et les fonctionnalités disponibles afin
d'intégrer une description des passe-temps telles celles que
l'on trouve classiquement au bas des CV.
Installation
Récupérez une copie du serveur web sémantique
basé sur la version 4 de Tomcat:
cp -r
/u/invite/corby/jakarta-tomcat-4.1.18-LE-jdk14 .
Assurez vous que la variable
JAVA_HOME contient bien le chemin vers le répertoire
d'installation de JAVA:
JAVA_HOME= le chemin
de la jdk : /usr/java ?
export JAVA_HOME
Placez vous dans le répertoire
bin de tomcat et lancez le serveur web:
cd
jakarta-tomcat-4.1.18-LE-jdk14
bin/startup.sh
Accès par un navigateur à l'URL : http://localhost:8080/demo
Application
L'application demo se trouve dans le répertoire webapps/demo
Vous y trouverez les répertoires suivants :
resource : les documents RDF et RDFS et le fichier de configuration
corese.properties
xslt : les feuilles de style
xml : des descriptions d'interface
jsp : des pages JSP
L'ontologie en RDFS se trouve dans resource/commarh.rdfs
Le source RDF dans les répertoires data et data2
Navigation
Colonne de gauche en
milieu/bas : panel
Browse
Concept tree montre la hiérarchie de classes, Relation tree
montre celle des propriétés.
Commencez à naviguer dans l'ontologie en cliquant sur une classe.
- Quelles sont les parents de "Virtual Reality"?
- Quels sont les enfants de " mobile phone protocols"?
- Quelles sont les instances de "Person"?
- Trouvez la relation "is expert" et donnez tous ses ancêtres.
Dans un éditeur de texte allez ouvrir l'ontologie et comparez
son contenu avec ce que vous voyez à l'écran en navigant
dans l'ontologie.
Colonne de gauche en haut:
panel Search
La boite search vous permet de
trouver des notions à partir des termes qui peuvent la
dénoter.
Trouvez la classe "book".
Quelles sont les relations pouvant porter sur les objets de cette
classe ?
Trouvez la relation "designation" et regardez ses instances.
Colonne de gauche au
milieu/haut : panel
Query
Main (en) donne accès
à une interface de
requête.
Tester les formulaires ; la soumission se fait par le bouton Search en
haut, ou
par le bouton More pour une recherche approchée.
Tester différentes feuilles de style.
Rechercher des compétences en Java, en XML, etc.
Dans le panneau Generic Query vous
pouvez saisir des requêtes sous forme de triplets RDF comme :
(1) ?x rdf:type c:Researcher
(2) ?x rdf:type
c:Researcher
?x c:hasCreated ?doc
(3) ?x rdf:type c:Researcher
?x c:hasCreated ?doc
?doc c:Title ?t
(4) ?x rdf:type c:Researcher
?x c:hasCreated ?doc
?doc c:Title ?t
?t ~ knowledge
(5) ?x rdf:type c:Researcher
?x c:hasCreated ?doc
?doc c:Title ?t
?t ~ knowledge
?x ?p ?y
En regardant des exemples d'annotations dans un éditeur
de texte, construisez votre propre requête en triplets.
Extension du modèle
Vous allez maintenant commencer à étendre le
modèle.
- Munissez vous d'un crayon et d'un papier et
réfléchissez à un domaine (ou plus) de loisirs /
passe-temps (ex: art, sport, etc.).
- Concevez une ontologie de ce domaine avec au moins trois niveaux
de profondeur dans les classes, quelques relations, les
définitions et les termes, le tout devant être bilingue.
- Naviguez dans l'ontologie pour trouver les points d'accroche
où vous allez faire vos extensions i.e. les classes et relations
pour lesquelles vous allez créer de nouvelles sous-classes et
sous-relations.
- Utilisez votre éditeur de texte pour ajouter vos nouvelles
classes et nouvelles relations dans l'ontologie.
- Créer au moins de nouvelles annotations vous
décrivant à la fois du point de vue professionnel et du
point de vue de vos loisirs.
- Relancez votre application:
bin/shutdown.sh puis
bin/startup.sh
- Naviguez dans l'ontologie pour retrouver vos classes et relations
et vérifiez que les instances que vous avez créées
existent bien
- Ecrivez une requête pour extraire vos profils
Extension des interfaces
Les formulaires sont décrits dans un "langage maison" ayant une
syntaxe XML.
Ouvrez le fichier xml/demo.xml dans un éditeur de texte; appelez
nous pour une visite guidée.
A titre d'exemple le code suivant en ligne 91 permet de créer la
combo box "Profession" du Panel "Person" que vous avez utilisez
précédemment (Requête dans le formulaire Main (en)):
<select
name='type' title='Profession'
group='true' count='true'>
<!--class>c:Person</class-->
<option
value='c:Person'>any</option>
<query xslt='extract.xsl'>
?c
rdfs:subClassOf c:Person
?c rdfs:label
?l
</query>
</select>
Ce code demande à créer une liste des sous classes de
c:Person avec leur label et à en faire une combo box.
Le fichier demo.xml est transformé en JSP en lui appliquant la
feuille de style xml/form.xsl
Modifiés le fichier demo.xml pour inclure dans le panel "Skill"
la possibilité de poser une requête sur les loisirs.
Ecrivez en Java le petit programme permettant d'appliquer la feuille de
style form.xsl à demo.xsl.
Le résultat de la transformation est un nouveau fichier demo.jsp
avec lequel vous remplacerez l'ancien fichier jsp/demo.jsp.
Testez votre nouveau formulaire.
Règles
En utilisant le formulaire de requêtes trouvez-vous des experts
en EJB Programming ?
Et après avoir fait tourner le moteur de règles (bouton
Rule à côté de Search et More) ?
- Ouvrez le ficher resource\commarh.rul dans un éditeur.
- En ligne 167 vous trouverez une règle d'inférence;
pouvez-vous deviner sa fonction et en quoi elle est responsable de la
réponse obtenue précédemment.
- Ecrivez une règle permettant de déduire que si vous
avez écrit un document sur un loisir alors ce loisir fait partie
de vos passe-temps.
- Ajoutez une annotation permettant de tester la règle.
- Relancez votre application et faites une requête avant et
après application des règles pour vérifier le bon
fonctionnement.