Outils pour utilisateurs

Outils du site


public:specs_ajout_moteur_resolution_annotation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
public:specs_ajout_moteur_resolution_annotation [2019/05/23 11:18]
matthieu.decorde@ens-lyon.fr
public:specs_ajout_moteur_resolution_annotation [2019/05/23 11:32]
matthieu.decorde@ens-lyon.fr
Ligne 11: Ligne 11:
   * XQuery : finesse d'​expression de contraintes sur les balises XML source ou pivot (gestion min/maj, accents, etc.), langage XPath de navigation dans l'​arbre DOM   * XQuery : finesse d'​expression de contraintes sur les balises XML source ou pivot (gestion min/maj, accents, etc.), langage XPath de navigation dans l'​arbre DOM
   * TIGERSearch : langage de requête adapté à la syntaxe, assistant graphique de construction de requête   * TIGERSearch : langage de requête adapté à la syntaxe, assistant graphique de construction de requête
 +  * URS
  
 Moteurs intégrables : TIGERSearch,​ XSLT, XQuery, SPARQL, SQL... Moteurs intégrables : TIGERSearch,​ XSLT, XQuery, SPARQL, SQL...
Ligne 26: Ligne 27:
  
 ====== Solution ====== ====== Solution ======
 +
 +
 +===== Architecture des moteurs =====
 +
 +==== Architecture du code ====
 +
 +Une extension qui propose des services de recherche implémente les classes :
 +  * "​SearchEngine"​ : résout sous la forme d'une liste de "​Match",​ une "​Selection",​ une requête "​Query"​ pour un corpus "​CorpuBuild"​
 +  * "​Query"​ : type la requête pour identifier le moteur à utiliser
 +  * "​Selection"​ : décrit une liste de "​Match"​
 +  * "​Match"​ : décrit un start, end et éventuellement un target
 +
 +Le SearchEngine doit être déclaré dans le fichier plugin.xml de l'​extension.
 +
 +==== UI ====
 +
 +Pour pouvoir combiner l'​usage simultané de plusieurs moteurs, on peut étendre les UI actuelles. Pour la zone de saisie de requête CQL actuelle, par exemple dans l'​Index,​ cela peut donner :\\ {{:​public:​combinaison-de-moteurs-ui.png?​600|UI de combinaison de moteurs}}
 +  * A) la zone de saisie de base, composée :
 +    * de la désignation du moteur de résolution concerné
 +    * de la zone de saisie
 +    * de contrôles de changement de taille de la zone de saisie
 +    * d'​ajout de requête supplémentaire
 +  * B) on peut choisir à gauche le moteur de résolution correspondant à la requête saisie. Dans cet exemple on est passé du moteur CQP au moteur XQuery
 +  * C) on peut augmenter ou réduire la taille de la zone de saisie. Certains langages de requêtes ont besoin d'​espace pour la saisie
 +  * D) on ajoute des requêtes pour combiner avec d'​autres moteurs ou avec le même moteur avec un bouton [+]. Par défaut les requêtes sont combinées (&) mais peuvent être des alternatives (|). Un bouton [-] permet de supprimer une requête.
 +
 +Remarques :
 +  * la possibilité D) permet d'​étendre l'​Index à n requêtes CQL -> il faut définir les fonctionnalités correspondantes,​ notamment en utilisant l'​expression de l'​alternative (|)
 +  * l'​interface d'​ajout de requêtes ressemble à celle de la Progression,​ mais pour cette dernière il faut une double interface d'​ajout (ajout de requêtes + ajout de requêtes par moteur)
 +  * l'​interface doit bien sûr comprendre le bouton d'​accès à l'​assistant de saisie de chaque moteur pour une requête donnée
 +
 +===== XSLT =====
 +
 +La plateforme TXM utilise le moteur XSLT 2 Saxon notamment dans les modules d'​import XML et la macro ApplyXSL.
 +
 +L'​idée est d'​utiliser la transformation de la représentation XML pivot des textes d'un corpus en une liste d'id des mots des textes correspondants à une extraction donnée comme "​moteur de recherche"​ : faisant correspondre une "​requête"​ (une feuille XSL) à une "liste de matches"​ (de type CQP) interfaçable ensuite avec les commandes prenant en entrée des listes de matches CQP habituellement.
 +
 +La requête est soit :
 +  * V1) un fichier XSL complet donné en paramètre ou son contenu édité dans un éditeur XML de TXM ;
 +  * V2) un bout de la XSL saisi dans un champ de paramètre de macro ou de commande. La XSL est finalisée avant l'​appel de la XSL ;
 +  * V3) un bout de la XSL utilisant des fonctions XSL et des éléments de syntaxe XQuery (peut-être plus concis qu'une série de templates comme ci-dessus) saisi dans un champ de paramètre de macro ou de commande. La XSL est finalisée avant l'​appel de la XSL ;
 +
 +La requête (XSL) s'​applique soit :
 +  * V1) à un fichier XML-TEI TXM de corpus binaire (contenant toutes les structures TEI d'​origine + les mots avec @id et annotés) ;
 +  * V2) à un répertoire '​txm'​ contenant les fichiers
 +
 +La XSL retourne la liste de tous les identifiants de mots correspondant à la requête d'​extraction :
 +  * soit sous forme XML : <​matches><​match><​wRef id="​ID1"/><​wRef id="​ID2"/>​...</​match>​...<​matches>​
 +  * soit sous forme TXT : un ID de mot par ligne
 +
 +Ensuite le contexte d'​appel (une macro pour l'​instant) transforme cette liste en requête CQL utilisant des ID ou des positions de mots (et donc avant il faut calculer la liste des matchs CQP équivalente ([start, end], [start, end]...), pour pouvoir faire ensuite une Concordance ou un Index.
 +
 +Dans une version ultérieure on verra comment pouvoir calculer la Concordance ou l'​Index dans la foulée (voir aussi les exemples ci-dessous pour le cas TIGERSearch).
 +
 +On commence par faire une macro prototype appelée XSL2CQL :
 +  * prenant comme paramètres :
 +    * une sélection de corpus dans la vue Corpus ;
 +    * un bout de requête XSL ou le chemin vers une feuille XSL complète
 +  * retournant une CQL de sélection des mots dont la liste des IDs est retournée par la XSL
 +
 +===== TIGERSearch =====
  
 On s'​appuie sur TIGERSearch (TS) pour démontrer la faisabilité. On s'​appuie sur TIGERSearch (TS) pour démontrer la faisabilité.
Ligne 86: Ligne 148:
   * à l'aide d'une commande "​Lier/​Ajouter/​Charger"​ lancé sur un corpus sélectionné dans la vue Corpus et une archive d'un corpus TIGERSearch.   * à l'aide d'une commande "​Lier/​Ajouter/​Charger"​ lancé sur un corpus sélectionné dans la vue Corpus et une archive d'un corpus TIGERSearch.
  
-==== UI ==== 
- 
-Pour pouvoir combiner l'​usage simultané de plusieurs moteurs, on peut étendre les UI actuelles. Pour la zone de saisie de requête CQL actuelle, par exemple dans l'​Index,​ cela peut donner :\\ {{:​public:​combinaison-de-moteurs-ui.png?​600|UI de combinaison de moteurs}} 
-  * A) la zone de saisie de base, composée : 
-    * de la désignation du moteur de résolution concerné 
-    * de la zone de saisie 
-    * de contrôles de changement de taille de la zone de saisie 
-    * d'​ajout de requête supplémentaire 
-  * B) on peut choisir à gauche le moteur de résolution correspondant à la requête saisie. Dans cet exemple on est passé du moteur CQP au moteur XQuery 
-  * C) on peut augmenter ou réduire la taille de la zone de saisie. Certains langages de requêtes ont besoin d'​espace pour la saisie 
-  * D) on ajoute des requêtes pour combiner avec d'​autres moteurs ou avec le même moteur avec un bouton [+]. Par défaut les requêtes sont combinées (&) mais peuvent être des alternatives (|). Un bouton [-] permet de supprimer une requête. 
- 
-Remarques : 
-  * la possibilité D) permet d'​étendre l'​Index à n requêtes CQL -> il faut définir les fonctionnalités correspondantes,​ notamment en utilisant l'​expression de l'​alternative (|) 
-  * l'​interface d'​ajout de requêtes ressemble à celle de la Progression,​ mais pour cette dernière il faut une double interface d'​ajout (ajout de requêtes + ajout de requêtes par moteur) 
-  * l'​interface doit bien sûr comprendre le bouton d'​accès à l'​assistant de saisie de chaque moteur pour une requête donnée 
- 
-===== XSLT ===== 
- 
-La plateforme TXM utilise le moteur XSLT 2 Saxon notamment dans les modules d'​import XML et la macro ApplyXSL. 
- 
-L'​idée est d'​utiliser la transformation de la représentation XML pivot des textes d'un corpus en une liste d'id des mots des textes correspondants à une extraction donnée comme "​moteur de recherche"​ : faisant correspondre une "​requête"​ (une feuille XSL) à une "liste de matches"​ (de type CQP) interfaçable ensuite avec les commandes prenant en entrée des listes de matches CQP habituellement. 
- 
-La requête est soit : 
-  * V1) un fichier XSL complet donné en paramètre ou son contenu édité dans un éditeur XML de TXM ; 
-  * V2) un bout de la XSL saisi dans un champ de paramètre de macro ou de commande. La XSL est finalisée avant l'​appel de la XSL ; 
-  * V3) un bout de la XSL utilisant des fonctions XSL et des éléments de syntaxe XQuery (peut-être plus concis qu'une série de templates comme ci-dessus) saisi dans un champ de paramètre de macro ou de commande. La XSL est finalisée avant l'​appel de la XSL ; 
- 
-La requête (XSL) s'​applique soit : 
-  * V1) à un fichier XML-TEI TXM de corpus binaire (contenant toutes les structures TEI d'​origine + les mots avec @id et annotés) ; 
-  * V2) à un répertoire '​txm'​ contenant les fichiers 
- 
-La XSL retourne la liste de tous les identifiants de mots correspondant à la requête d'​extraction : 
-  * soit sous forme XML : <​matches><​match><​wRef id="​ID1"/><​wRef id="​ID2"/>​...</​match>​...<​matches>​ 
-  * soit sous forme TXT : un ID de mot par ligne 
- 
-Ensuite le contexte d'​appel (une macro pour l'​instant) transforme cette liste en requête CQL utilisant des ID ou des positions de mots (et donc avant il faut calculer la liste des matchs CQP équivalente ([start, end], [start, end]...), pour pouvoir faire ensuite une Concordance ou un Index. 
- 
-Dans une version ultérieure on verra comment pouvoir calculer la Concordance ou l'​Index dans la foulée (voir aussi les exemples ci-dessous pour le cas TIGERSearch). 
- 
-On commence par faire une macro prototype appelée XSL2CQL : 
-  * prenant comme paramètres : 
-    * une sélection de corpus dans la vue Corpus ; 
-    * un bout de requête XSL ou le chemin vers une feuille XSL complète 
-  * retournant une CQL de sélection des mots dont la liste des IDs est retournée par la XSL 
- 
-===== TIGERSearch ===== 
  
 ==== Index ==== ==== Index ====
public/specs_ajout_moteur_resolution_annotation.txt · Dernière modification: 2019/05/23 11:32 par matthieu.decorde@ens-lyon.fr