Manuel

publicité
Outil Lelie
Manuel Utilisateur
1) Première utilisation
2) Menu Projet
3) Interface principale
4) Vérifications
a) Test de cohérence
b) Test de complétude
c) Test de redondance
5) Remarques
6) Annexes
a) Fonctionnement général de l'outil
b) Définition du langage logique utilisé
c) Données en entrée de l'outil
d) Traduction des données d'entrée
e) Vérifications des données
f) Les phrases logiques prises en compte
g) Les balises prises en compte
2
2
3
4
4
5
6
6
7
7
7
7
9
11
12
15
1
1) Première utilisation
Assurez vous qu'une machine virtuelle java à jour est installée sur votre machine. Il est
possible d'en télécharger une version à jour depuis le site officiel de java :
http://www.java.com/fr/download/.
Placer l'exécutable lelie.jar et le dossier ressources dans un unique répertoire dédié.
Lancer l'outil en exécutant lelie.jar (double clic, commande exécuter avec java depuis le
menu contextuel, ou "java -jar Lelie.jar" en invite de commande).
A la première utilisation, l'outil demande de spécifier un espace de travail. Il est
recommandé de lui proposer un répertoire réservé à cet usage. Il demande ensuite de spécifier
l'encodage de fichiers à utiliser (UTF8, UTF16, ISO-8859-15...).
Attention : l'encodage spécifié devra être celui de TOUS les fichiers traités par l'outil. Il sera
possible de le changer par la suite, mais il est impossible d'utiliser simultanément différents
encodages. Il est conseillé de vérifier l'encodage de tout nouveau fichier donné à l'outil et le
traduire si besoin.
2) Menu Projet
Permet la gestion d'un projet Lelie. Un projet rassemble différents textes sélectionnés
lors de sa création et permet de retravailler leur traduction par l'outil avant de les soumettre à
diverses vérifications.
L'item Nouveau ouvre une fenêtre permettant de saisir les différents champs du projet.
Son nom, utilisé pour l'identifier et l'enregistrer doit être unique et ne peut contenir de
caractère spécial autre que l'underscore (aussi appelé tiret du 8 ou souligné).
2
Les tableaux Exigences et Procédures permettent d'ajouter des fichiers de textes
traités par textcoop et répartis en fichiers individuels. Le bouton Ajouter un fichier complexe
permet de donner un fichier de sortie textcoop mixte contenant de nombreuses exigences et
procédures. Le tableau Synonymes permet d'ajouter des fichiers de synonymes au format
décrit en annexe. En cliquant sur Valider l'outil va pré-traiter tous les textes donnés, ce qui
peut prendre quelques minutes sur des volumes conséquents.
Attention : Il est possible de créer un projet sans donner de fichiers synonymes ou de
désactiver totalement leur utilisation et cochant les cases correspondantes. Ceci est fortement
déconseillé car l'efficacité des différentes vérifications en dépend en grande partie.
L'item Ouvrir permet d'ouvrir un fichier sauvegardé en mémoire. Pour cela,
sélectionnez simplement le fichier Nom_de_votre_projet.projectdata dans le répertoire de
travail de l'outil.
L'item Éditer ouvre une fenêtre similaire à celle de création de projet. Il est possible
d'y ajouter ou supprimer des textes, ou d'y ajouter des fichiers synonymes. En cliquant sur
Valider l'outil va pré-traiter tous les textes ajoutés, ce qui peut prendre quelques minutes sur
des volumes conséquents. Note : le projet est automatiquement sauvegardé lors du prétraitement.
L'item Re-Traiter ordonne à l'outil de pré-traiter tous les textes du projet, ce qui peut
prendre quelques minutes sur des volumes conséquents. Cela permet notamment de prendre
en compte de nouveaux synonymes ajoutés au projet.
L'item Sauver enregistre l'état courant du projet en mémoire, sous la forme d'un fichier
Nom_de_votre_projet.projectdata et d'un répertoire Nom_de_votre_projet contenant les
divers fichiers créés dans le cadre du projet.
3) Interface principale
L'interface principale permet d'explorer les différents fichiers d'un projet dans les
tableaux de gauche. Un double clic sur un fichier ouvre un onglet détaillant ses différentes
composantes.
La zone supérieure contient la phrase originale soumise à l'outil et sa version
débarrassée des synonymes, articles et prépositions. La zone inférieure contient la phrase mise
sous forme épurée et son masque.
3
Le bouton Modifier Synonyme ouvre une fenêtre permettant de corriger les erreurs de
synonymie. Sélectionnez tout d'abord l'expression mal traduite dans la phrase originale (sans
sélectionner de séparateur dissociant les différents éléments grammaticaux, ni de
ponctuation), puis cliquer sur Trouver. Si l'expression sélectionnée possède un synonyme
dans la base de synonymes du projet, il s'affiche alors à droite de la flèche. Il est alors possible
de le retirer immédiatement de la base en cliquant sur Supprimer. Qu'un synonyme soit déjà
associé ou non, il est possible d'associer un nouveau synonyme à l'expression sélectionnée.
Pour cela, tapez le synonyme désiré dans le champ de texte (qui propose automatiquement les
synonymes proches dans la base de synonymes du projet) et cliquez sur Lier.
Attention : Le nouveau synonyme sera ajouté à la base de synonymes du projet au prochain
re-traitement du projet !
Le bouton Erreur Masque permet de générer un rapport d'erreur de masque. Il ouvre
une fenêtre permettant de spécifier le masque attendu en lieu et place de celui obtenu ainsi
qu'un commentaire. Le rapport d'erreur généré sera automatiquement placé dans un dossier
logs_erreur_masques dans le répertoire de travail de l'outil. Il est conseillé de faire remonter
ces rapports pour permettre des améliorations futures de l'outil.
4) Vérifications
La fonctionnalité principale de l'outil est de permettre différentes vérifications des
exigences et procédures. Avant de procéder, il convient d'ouvrir le projet contenant les
fichiers à tester et de s'assurer de la justesse de leur traduction. Plus le vocabulaire sera
restreint, plus la vérification sera efficace.
a) Test de cohérence
On accède au test de cohérence par le menu Vérifications > Valider cohérence.
Apparaît alors une fenêtre permettant de sélectionner les fichiers à tester parmi ceux du projet.
Le bouton Déterminer les exigences requises permet, après avoir sélectionné des procédures
de sélectionner automatiquement les exigences portant sur les thèmes de ces procédures.
Lancer la vérification en cliquant sur Lancer le test.
Une fois le test terminé, une fenêtre affiche son résultat et permet d'ouvrir un log de la
vérification. Ce dernier affiche une vue détaillée des diverses étapes de traduction des textes
donnés, et, si des incohérences sont apparues, donne l'ensemble de propositions ayant donné
lieu à la première incohérence. Note : les items du log sont extensibles, cliquez dessus pour
accéder aux informations concernées.
Attention : Le log de vérification est un fichier au format xml mis en forme par une feuille de
style xsl. Internet explorer et Mozilla Firefox permettent son affichage de manière conviviale,
mais la plupart des navigateurs devraient également en être capables. Si votre navigateur par
défaut ne permet pas un affichage correct des fichiers logs, vous pouvez les afficher
manuellement dans un navigateur le permettant. Les fichiers logs se trouvent dans
workspace_défini/nom_du_projet/nom_vérification_date/log.xml
4
Exemple de log :
b) Test de complétude
On accède au test de complétude par le menu Vérifications > Valider complétude.
Apparaît alors une fenêtre permettant de sélectionner les fichiers à tester parmi ceux du projet.
Le bouton Déterminer les exigences requises permet, après avoir sélectionné des procédures
de sélectionner automatiquement les exigences portant sur les thèmes de ces procédures.
Lancer la vérification en cliquant sur Lancer le test.
Note : Le test de complétude n'a de sens que si les textes donnés sont cohérents, l'outil
effectuera donc un test de cohérence automatique lors du test de complétude.
Lecture des résultats :
L'échec à un test (en rouge) signifie que son résultat n'a pas été le même sur la
procédure seule et sur la procédure conjuguée aux exigences. Ici par exemple, aucune
instruction de la procédure ne demande de se protéger, de ne pas utiliser de cordes, ou
d'installer des échafaudages, alors que les exigences l'exigent. L'outil mets donc en évidence
trois cas d’incomplétude de la procédure.
5
c) Test de redondance
On accède au test de complétude par le menu Vérifications > Valider non-redondance.
Apparaît alors une fenêtre permettant de sélectionner les fichiers à tester parmi ceux du projet.
Le bouton Déterminer les exigences requises permet, après avoir sélectionné des procédures
de sélectionner automatiquement les exigences portant sur les thèmes de ces procédures.
Lancer la vérification en cliquant sur Lancer le test.
Note : Le test de redondance n'a de sens que si les textes donnés sont cohérents, l'outil
effectuera donc un test de cohérence automatique lors du test de complétude.
Exemple de log :
5) Remarques
Certaines vérifications peuvent s'effectuer sur des plages d'instructions afin de réaliser
des tests en fenêtre glissante. Pour ce faire, ne sélectionnez qu'un seul fichier procédure lors
de la vérification et l'outil vous proposera de n'effectuer le test que sur une plage
d'instructions.
6
6) Annexes
a) Fonctionnement général de l'outil
L'idée exploitée ici est de travailler en deux phases :
 d'abord traduction des informations (en langage naturel) contenues dans les exigences
et/ou les procédures en expressions exprimées dans un langage formel afin
d'automatiser leur traitement ;
 puis utilisation d'un logiciel, appelé « solver », permettant de détecter les
incohérences, incomplétudes et redondances parmi un ensemble d'expressions
formelles, cet ensemble étant appelé « base de connaissances ».
Nous avons choisi d'utiliser un « solver » « open source » disponible sur internet
(http://z3.codeplex.com/). D'autre part, l'outil est un module écrit en Java afin de pouvoir
réaliser facilement une interface graphique permettant de l'utiliser de manière agréable.
b) Définition du langage logique utilisé
Le langage formel choisi est la logique des prédicats (aussi appelée logique du premier ordre).
Les raisons de ce choix sont les suivantes :
 ce langage est particulièrement bien connu et assez expressif ;
 il existe de nombreuses extensions possibles si on veut enrichir la représentation des
connaissances manipulées ;
 il existe aussi de nombreux « solvers » disponibles qui ont bénéficié d'années de mise
au point par de très nombreux chercheurs du domaine et qui sont pour la plupart des
« open source ».
NB : les « solvers » standards ne permettent pas d'utiliser tout l'éventail de la logique du
premier ordre, cependant ils autorisent toutes les formules du premier ordre sans symbole
de fonctions. L'expressivité de ce langage restreint est néanmoins suffisante pour notre
application.
c) Données en entrée de l'outil
Il faut d'abord distinguer deux types de données en entrée :
 les exigences : ensemble de connaissances décrivant le contexte dans lequel la
procédure va s'exécuter,
 les procédures : suite ordonnée d'instructions à faire.
Ces deux aspects correspondront à deux fichiers distincts.
Il faut d'autre part considérer que les exigences ou procédures traitées par l'outil ont déjà subi
un pré-traitement qui a permis un échantillonnage avec des marqueurs linguistiques par l'outil
« TextCoop ».
L'outil prendra donc en entrée des fichiers au format texte, dans lesquels les connaissances
seront exprimées sous la forme de phrases du langage naturel, avec pour chaque phrase le
repérage par balises (du type balise HTML) des éléments linguistiques et logiques suivants :
7











les verbes
les sujets
les compléments d'objet
les compléments de manière
les outils, instruments
les lieux
les thèmes
les valeurs numériques
les intervalles de valeurs
les comparateurs de valeur
les états d'inclusions
Exemple 1 :
<procedure>
procedure 2 :
<predicat> fournir </predicat> aux travailleurs <objet> les équipements appropriés </objet> pour <theme>
manutentionner </theme> des charges en toute sécurité.
lors du levage :
<predicat> encadrer </predicat> <objet> la charge </objet> <instr> avec les pieds </instr>.
<predicat> utiliser </predicat> <objet> la force des jambes </objet>.
<predicat> éviter </predicat> <objet> les mouvements de torsion et de flexion du tronc </objet> lorsque vous êtes
chargés.
<predicat> poser </predicat> <objet> la charge </objet> <maniere> doucement </maniere>.
</procedure>
Exemple 2 :
<exigence>
exigence 2 :<theme> manutentions </theme>
les principes de base sont :
<predicat> garder </predicat> <objet> la colonne vertébrale droite </objet> et <predicat> éviter </predicat>
<objet> les torsions du buste </objet>,
<predicat> utiliser </predicat> principalement <objet> la musculature des jambes </objet>,
<predicat> porter </predicat> <objet> des équipements de protection </objet> tels que <objet> gants </objet>,
<objet> ceinture lombaire </objet> ou <objet> chaussures de sécurité </objet>.
</exigence>
Seront aussi fournis des fichiers de synonymes permettant de simplifier les phrases afin
d'avoir un vocabulaire plus restreint. Ces fichiers de synonymes sont aussi des fichiers au
format texte respectant la syntaxe suivante :
 deux lignes de commentaires en début de fichier donnant le thème traité,
 puis des paquets de lignes commençant par
 une ligne avec la chaîne « SYN = » suivie de l'expression donnant le synonyme
à utiliser,
 des lignes avec sur chaque ligne l'expression à remplacer par le synonyme.
8
Exemple 3 :
theme : manutention
SYN = manutention
manutention
charges
porter des charges
manutentionner
manutention manuelle
Exemple 4 :
VERBES
SYN = mettre
port de
être équipé de
utiliser
se munir de
se protéger par
protection du corps
s'assurer d'une protection efficace
se protéger avec
employer
se protéger à l'aide de
disposer de
se protéger au moyen de
avoir
porter
enfiler
être équipé
d) Traduction des données d'entrée
Le langage formel utilisé étant la logique du premier ordre sans les symboles de fonction,
l'outil de traduction devra traiter chaque phrase de la procédure en plusieurs phases :
 nettoyage de la phrase (remplacement des expressions par leur synonyme, suppression
des articles et des accents) et repérage du thème,
 identification du masque correspondant à la phrase ; il existe plusieurs masques
possibles suivant la sémantique de la phrase (voir en annexe), puis mise en forme de
de la phrase au format du masque repéré,
 traduction au format logique de la phrase ainsi mise en forme.
Exemple 1 (suite) : Le texte devient après nettoyage et repérage du thème (à cette occasion,
tous les morceaux de phrase non balisés vont disparaître) :
<procedure>
<theme> manutention </theme>
<predicat> mettre </predicat> <objet> équipements appropriés </objet>
<predicat> encadrer </predicat> <objet> charge </objet> <instr> avec pieds </instr>
<predicat> utiliser </predicat> <objet> force jambes </objet>.
<predicat> éviter </predicat> <objet> mouvements torsion et flexion tronc </objet>
<predicat> poser </predicat> <objet> charge </objet> <maniere> doucement </maniere>
</procedure>
9
Puis, pour chaque phrase, on identifie un masque et on met la phrase au format correspondant.
Ici, on va obtenir en utilisant deux masques :
<procedure>
<theme> manutention </theme>
theme etre manutention 0
(masque : sujet verbe-état attribut temps)
<predicat> mettre </predicat> <objet> equipements appropries </objet>
NULL mettre equipements_appropries NULL NULL 1
(masque : sujet verbe-action COD manière-outil lieu temps)
<predicat> encadrer </predicat> <objet> charge </objet> <instr> pieds </instr>
NULL encadrer charge avec_pieds NULL 2
(masque : sujet verbe-action COD manière-outil lieu temps)
<predicat> utiliser </predicat> <objet> force jambes </objet>
NULL utiliser force_jambes NULL NULL 3
(masque : sujet verbe-action COD manière-outil lieu temps)
<predicat> eviter </predicat> <objet> mouvements torsion et flexion tronc </objet>
NULL eviter mouvements_torsion_et_flexion_tronc NULL NULL 4
(masque : sujet verbe-action COD manière-outil lieu temps)
<predicat> poser </predicat> <objet> charge </objet> <maniere> doucement </maniere>
NULL poser charge doucement NULL 5
(masque : sujet verbe-action COD manière-outil lieu temps)
</procedure>
Chaque phrase est alors considérée comme une formule logique devant être vraie au moment
correspondant à l'exécution de l'action (rappelons qu'une formule ne peut être que vraie ou
fausse). Cela donnera le code suivant adapté au solver « z3 » qui utilise le formalisme logique
« smt » :
(declare-sort Agent)
(declare-sort Item)
(declare-sort Place)
(declare-sort Attribut)
(declare-sort Outil)
(declare-const it_theme Item)
(declare-const att_theme_manutention Attribut)
(declare-const pl_NULL Place)
(declare-const ag_NULL Agent)
(declare-const ou_NULL Outil)
(echo "<theme> manutention </theme>'')
(assert
(etre_i it_theme att_theme_manutention pl_NULL 0))
(echo "<predicat> fournir </predicat> aux travailleurs <objet> les équipements appropriés </objet> ")
(declare-fun mettre (Agent Item Outil Place Int) Bool)
(declare-const it_equipements_appropries Item)
(assert
(fournir ag_NULL it_equipements_appropries ou_NULL pl_NULL 1))
(echo "<predicat> encadrer </predicat> <objet> la charge </objet> <instr> avec les pieds </instr> ")
(declare-fun encadrer (Agent Item Outil Place Int) Bool)
(declare-const ou_pieds Outil)
(declare-const it_charge Item)
(assert
(encadrer ag_NULL it_charge ou_pieds pl_NULL 2))
(echo "<predicat> utiliser </predicat> <objet> la force des jambes </objet> ")
(declare-const it_force_jambes Item)
(assert
(utiliser ag_NULL it_force_jambes ou_NULL pl_NULL 3))
10
(echo "<predicat> éviter </predicat> les mouvements de torsion et de flexion du tronc lorsque vous êtes chargés ")
(declare-const it_mouvements_torsion_flexion_tronc Item)
(assert
(eviter ag_NULL it_mouvements_torsion_flexion_tronc ou_NULL pl_NULL 4))
(echo "<predicat> poser </predicat> <objet> la charge </objet> <maniere> doucement </maniere> ")
(declare-fun poser (Agent Item Outil Place Int) Bool)
(declare-const ou_doucement Outil)
(assert
(poser ag_NULL it_charge ou_doucement pl_NULL 5))
e) Vérifications des données
Les fonctionnalités que l'outil permet de réaliser sont de trois sortes : détection d'incohérence,
recherche d'incomplétude et vérification de non-redondance.
Cela s'appuie sur la notion de « satisfiabilité » d'une formule (ou d'un ensemble de formules
qui est en fait considéré comme la formule correspondant à la conjonction des formules de
l'ensemble) : une formule est « satisfiable » si et seulement s'il existe un modèle de cette
formule (c'est-à-dire un moyen de la rendre vraie). Et cette vérification de « satisfiabilité » fait
partie des opérations de base de tout « solver » logique.
Dans les paragraphes suivants, nous montrons à quoi correspondent les fonctionnalités de
l'outil en utilisant les notations suivantes :
 Fi dénotera la formule logique correspondant à la ième instruction,
 FE dénotera l'ensemble des formules logiques correspondant aux exigences,
 V(F)={v1, ..., vn} dénotera l'ensemble des littéraux de base positifs ou négatifs issus
d'une formule logique F donnée,
 NEG(F) dénotera la négation logique de la formule F (c'est-à-dire la formule qui est
vraie quand F est fausse et fausse quand F est vraie).
La détection d'incohérence peut se faire :
 soit au niveau des exigences, en vérifiant avec le « solver » la satisfiabilité de la
formule FE, cela correspond à vérifier si elles ne contiennent pas de contradiction
c'est-à-dire qu'elles sont bien applicables.
 soit au niveau d'une instruction Fi ou d'un ensemble d'instructions {F1, ..., Fn}, en
vérifiant avec le « solver » la satisfiabilité de la formule Fi ou de l'ensemble de
formules {F1, ..., Fn}, cela correspond à vérifier que l'on n'applique pas des
instructions incohérentes entre elles.
 soit entre les exigences et une instruction Fi ou d'un ensemble d'instructions {F1, ...,
Fn}, en vérifiant avec le « solver » la satisfiabilité de l'ensemble {FE, Fi} ou celle de
l'ensemble {FE, F1, ..., Fn}, cela correspond à vérifier que les instructions sont bien
compatibles avec les exigences.
La vérification de non-redondance consiste à vérifier que l'ajout d'une instruction Fk à un
ensemble de formules {F1, ..., Fi} permet de déduire de nouveaux faits (si ce n'est pas le cas,
cela signifie que l'instruction n'apporte rien et qu'elle peut donc être retirée). Cela doit se faire
après avoir vérifié que les formules testées sont bien cohérentes (si ce n'est pas le cas alors le
langage logique permet de déduire n'importe quoi et les tests de non-redondance ne sont alors
plus significatifs). Le test de non-redondance peut donc se faire en vérifiant que les ensembles
{F1, ..., Fi, Fk} et {F1, ..., Fi, NEG(Fk)} sont satisfiables.
11
La recherche d'incomplétude présente deux aspects distincts :
 soit les exigences toutes seules (donc en l'absence d'instructions) permettent de
déduire des nouveaux faits ; dans ce cas-là, cela signifie que les exigences sont trop
fortes du point de vue déductif.
 soit l'union des exigences et des instructions permettent de déduire de nouveaux faits
que les instructions seules n'imposaient pas ; cela signifie que les instructions étaient
incomplètes.
Ces deux tests peuvent se faire de la manière suivante :
 pour chaque littéral de base v appartenant à v(FE), il ne faut pas que FE seule permette
de déduire v,
 pour chaque littéral de base v appartenant à v({FE, Fi}) tel que FE n'infère pas v alors
que {FE,Fi} infère v, il faut vérifier que soit Fi infère v, soit les instructions
précédentes à Fi infèrent v tout en étant cohérentes avec Fi.
f) Les phrases logiques prises en compte
Les formules logiques sont obtenues par traduction des phrases du type :
si condition alors conséquence sauf si exception
La phrase à traduire devra donc être un enchaînement des trois composantes séparées par le
symbole ':' :
condition:conséquence:exception
Une seule composante est obligatoire (on peut donc au pire avoir une phrase réduite à cette
composante :
composante
Ensuite, chaque composante peut être soit une conjonction, soit une disjonction de souscomposantes sous la forme suivante :
sous-composante_1<AND>sous-composante_2<AND> ... <AND>sous-composante_n
ou
sous-composante_1<OR>sous-composante_2<OR> ... <OR>sous-composante_n
(Attention, pour l'instant, nous n'autorisons pas des phrases contenant à la fois des <AND> et
des <OR>).
Pour chaque sous-composante, sont pris en compte les formats suivants (avec le masque
associé) :
- Avec verbe d'action, forme active :
"AGENT VERBE_ACTION OBJET MANIERE LIEU TEMPS"
(masque : "s[c,u,e] v[a,an] co[c,u,e] cm[c,u,e] cl[c,u,e]")
- Avec verbe d'action, forme passive :
"OBJET VERBE_ACTION AGENT MANIERE LIEU TEMPS"
(masque : "s[c,u,e] v[p,pn] ca[c,u,e] cm[c,u,e] cl[c,u,e]")
12
- Avec verbe d'état pour objet :
"OBJET VERBE_ETAT ATTRIBUT LIEU TEMPS"
(masque : "s[c,u,e] v[e,en] at[c,u,e] cl[c,u,e]")
- Avec verbe d'état liant deux objets :
"OBJET VERBE_ETAT OBJET LIEU TEMPS"
(masque : "s[c,u,e] v[eo,eon] at[c,u,e] cl[c,u,e]")
- Avec verbe d'état pour agent :
"AGENT VERBE_ETAT ATTRIBUT LIEU TEMPS"
(masque : "s[c,u,e] v[ea,ean] at[c,u,e] cl[c,u,e]")
- Avec un symbole de comparaison (pour traiter le temps) :
"TEMPS COMPARATEUR TEMPS"
(masque : "tu comp tu")
- Avec une comparaison de valeurs :
" VERBE_ACTION OBJET COMPARATEUR VALEUR TEMPS"
(masque : "va co[c,u,e] comp[n] nb[c,u,e]")
" OBJET VERBE_ETAT COMPARATEUR VALEUR TEMPS "
(masque : "co[c,u,e] ve comp[n] nb[c,u,e]")
- Avec une inclusion dans un intervalle :
" VERBE_ACTION OBJET INCLUSION INTERVALLE TEMPS"
(masque : "va co[c,u,e] inc[n] int[c,u,e]")
" OBJET VERBE_ETAT INCLUSION INTERVALLE TEMPS "
(masque : "co[c,u,e] ve inc[n] int[c,u,e]")
la signification des symboles dans les masques est la suivante :
- s : sujet
- v : verbe
- ca : complément d'agent
- co : complément d'objet
- at : attribut
- cm : complément de manière (en fait c'est souvent un outil)
- cl : complément de lieu
- tu : variable temps à quantifier universellement
- comp : comparaison mathématique
- inc : inclusion mathématique (potentiellement stricte)
- nb : valeur numérique
- int : intervalle de valeurs
avec les attributs suivants sur s, ca, cm, co, at, cl, nb et int :
- c : entité constante
- u : entité quantifiée universellement
- e : entité quantifiée existentiellement
13
et avec les attributs suivants sur v :
- a : verbe d'action sous forme active
- an : verbe d'action sous forme active avec une négation
- p : verbe d'action sous forme passive
- pn : verbe d'action sous forme passive avec une négation
- e : verbe d'état pour l'objet
- en : verbe d'état pour l'objet avec une négation
- ea : verbe d'état pour l'agent
- ean : verbe d'état pour l'agent avec une négation
- eo : verbe d'état liant 2 objets
- eon : verbe d'état liant 2 objets avec une négation
et potentiellement la négation pour comp et inc :
- compn : négation du comparateur, utile pour « différent de »
- incn : négation de l'inclusion
Si un élément de la phrase est manquant, on le remplace par la chaîne "NULL".
Il pourra alors être considéré comme constant ou universel dans le masque (mais pas
existentiel).
Exemples :
- l'instruction "toto mange une pomme avec ses doigts dans la cuisine au moment 1" sera à
traduire sous la forme :
toto mange pomme doigt cuisine 1
avec le masque :
sc va coc cmc clc
- l'instruction "la pomme n'est pas mangée avec les doigts dans la cuisine au moment 1"
sera à traduire sous la forme :
pomme mange toto doigt cuisine 1
avec le masque :
sc vpn cac cm clc
- l'instruction "une casserole est un récipient" sera à traduire sous la forme du doublon
suivant
casserole est recipient NULL
avec le masque :
sc veo atc clc
- l'instruction "la pomme est dans la cuisine au moment 1" sera à traduire sous la forme du
doublon suivant :
pomme est NULL cuisine 1
avec le masque :
sc ve atc clc
- l'instruction "si toto mange une pomme dans la cuisine au moment 1 alors toto sera
content au moment 2" sera à traduire sous la forme du doublon suivant :
toto mange pomme NULL cuisine 1:toto est content NULL 2
avec le masque :
sc va coc cmc clc:sc vea atc clc
14
- l'instruction "si toto mange une pomme dans la cuisine au moment 1 alors toto sera
content au moment 2 sauf si la pomme est mauvaise" sera à traduire sous la forme du
triplet suivant :
toto mange pomme NULL cuisine 1:toto est content NULL 2:pomme est mauvaise NULL
avec le masque :
sc va coc cmc clc:sc vea atc clc:sc ve atc clc
- l'instruction "si toto mange une pomme et une poire dans la cuisine au moment 1 alors
sera content au moment 2 sauf si la pomme ou la poire sont mauvaises" sera à traduire
sous la forme du triplet suivant :
toto mange pomme NULL cuisine 1<AND>toto mange poire NULL cuisine 1:toto est
content NULL 2:pomme est mauvaise NULL<OR>poire est mauvaise NULL
avec le masque :
sc va coc cm clc<AND>sc va coc cm clc:sc vea atc clc:sc ve atc clc<OR>sc ve atc clc
- l'instruction "vérifier que la valeur de la sonde est égale à 5" sera à traduire sous la forme
suivante :
verifier valeur_sonde est_egale_a 5
avec le masque :
va coc comp nbc
- l'instruction "la valeur de la sonde doit être toujours strictement comprise entre 5 et
10" sera à traduire sous la forme suivante :
doit_etre valeur_sonde strictement_comprise entre_5_et_10
avec le masque :
va coc inc intc
g) Les balises prises en compte
Les balises traitées par l'outil sont de deux types différents. Celles qui décrivent des éléments
de la phrase destinés à correspondre à un des éléments de masque mentionnés page 13 :
Balise de début
Balise de fin
Élément de masque associé
<predicat>
</predicat>
Verbe d'action sous forme
active positive ou négative (va
ou van)
<sujet>
</sujet>
sujet constant (sc)
<objet>
</objet>
complément d'objet constant
(coc)
<maniere>
</maniere>
complément de manière
constant (cmc)
<location>
</location>
complément de lieu constant
(clc)
<comparateur>
</comparateur>
comparateur (comp, compn)
<inclusion>
</inclusion>
inclusion (inc, incn)
<valeur>
</valeur>
valeur numérique (nb)
<intervalle>
</intervalle>
intervalle (int)
15
Dans ce cas, si une même balise apparaît plusieurs fois dans une phrase, l'outil considère pour
l'instant qu'il s'agit d'un ET.
Une remarque concernant la prise en compte d'un prédicat négatif : cela se fait à l'aide des
fichiers synonymes.
Les autres balises sont destinées à permettre à l'outil de gérer la traduction des thèmes suivant
le type de données traitées (exigence ou procédure). Elles ne correspondent donc pas à des
éléments de masque :
Balise de début
Balise de fin
<exigence>
</exigence>
<procedure>
</procedure>
<theme>
</theme>
Dans le cas d'une exigence, le thème est vu comme une condition alors que dans le cas d'une
procédure, le thème est considéré comme une assertion. Le même morceau de texte balisé
sera donc traduit différemment suivant qu'il est dans une exigence ou dans une procédure.
Exemple :
Dans une procédure, le texte suivant :
<theme> manutention </theme>
<predicat> mettre </predicat> <objet> équipements appropriés </objet>
sera mis en forme comme suit :
theme etre manutention 0
NULL mettre equipements_appropries NULL NULL 1
Alors que dans une exigence, le même texte :
<theme> manutention </theme>
<predicat> mettre </predicat> <objet> équipements appropriés </objet>
sera mis en forme comme suit :
theme etre manutention:NULL mettre equipements_appropries NULL NULL
16
Téléchargement