DH2016 – notes des workshops eXist-db : Installer eXist-db & créer sa propre application

Notes prises aux Digital Humanities 2016, pendant le workshop du 11/07/2016 : « eXist-db: more than a database. A basic Introduction to eXist-db and XQuery » par Wolfgang Meier, Magdalena Turska, Alexander Czmiel.

Pour compléter, voir la documentation officielle du quick start et du development starter.

Installation

Installer la dernière version, celle en cours de développement : la 3.0

eXist DB 3.0

Lancer le .dmg si vous êtes sur mac.
Sinon le .jar : vérifier votre version de java, 8

Vérifier les paramétrages sur la mémoire et le cache proposés dans la première fenêtre de dialogue (ne pas hésitez à augmenter les paramètres par défaut dans la limite des capacités de votre ordi), avant de lancer l’installation. Laisser tourner, sans interrompre.

Ouvrir le menu principal d’eXist

Une icône devrait maintenant apparaître dans la barre d’outil en haut de votre ordi, à droite (Mac) : cliquer dessus pour ouvrir le menu d’eXist-db :

existDB icone

Cliquer sur Open Dashboard :

exist menu

Dans le Dashboard, chercher l’icône « eXide », où on pourra configurer nos programmes / applications XQuery :

eXist dashboard

Créer sa propre application

eXide est ouvert :

eXide

Pour cela, à partir de la barre de menu supérieure, aller dans :
Application > New application

new application
Remplir le formulaire de saisie en plusieurs parties.

Une fois l’application créée, on peut la retrouver en allant dans :
File > Manage

Manage
Là, une boite de navigation permet de retrouver son applications dans db/apps/
Par exemple db/apps/dhTestSam

apps

Dans ce dossier on a par défaut 3 sous-dossiers
– un dossier modules qui comprendra les différents module xquery (extension utilisée au choix .xqm ou .xql, .xqm seraient pas mal our des modules)
– un dossier resources : css, js, img
– un dossier templates : html

Moteur Lucene

A la racine, à noter un fichier important collection.xconf qui permet de paramétrer le fonctionnement du moteur de recherche Lucene pour notre application :
par défaut on y trouve :

<collection xmlns="http://exist-db.org/collection-config/1.0">
<index xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<lucene>
<fulltext default="none" attributes="false"/>
</lucene>
</index>
</collection>

Mais on peut le paramétrer comme suit (en indiquant les éléments tei où le moteur peut trouver notre contenu textuel dans nos ressources XML, ici dans le cas de morand : div1 et p :

<collection xmlns="http://exist-db.org/collection-config/1.0">
   <index xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <lucene>
      <text qname="tei:div1"/>
      <text qname="tei:p"/>
    </lucene>
  </index>
</collection>

Toujours à la racine, on peut charger notre propre ressource XML TEI, même si c’est un fichier teiCorpus :

DB Manager 1

Et là, cliquer sur l’icone updload (nuage) :

une autre boite de dialogue s’ouvre, le DB Manager :

DB Manager 2

Charger votre fichier XML TEI, dans notre exemple le fichier teiCorpus de la 1ère vague du projet Morand :

NB : le « drag & drop » fonctionne, mais je note un bug quand on passe via le bouton « upload file ».

On devrait donc maintenant avoir son fichier XML à la racine de notre application.

Créer son premier fichier xquery :

File > New

On obtient alors cette boite de dialogue, on sélectionne XQuery :

create new file exist db

Voici la syntaxe d’une requête simple dans exist :

xquery version "3.0";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization";

declare option output:method "html5";
declare option output:media-type "text/html";

(: doc("/db/apps/dhTestSam3/teiCorpus_Morand_1ere_vague.xml")//tei:TEI//tei:persName[@type='destinataire'][starts-with(., 'M') ] :)
(: build a list with a loop - in this case the destinataire starting by M : a simple for iteration :)
 <table>
        <tr>
            <th>
            {
            for $expediteur in doc("/db/apps/dhTestSam3/teiCorpus_Morand_1ere_vague.xml")//tei:TEI//tei:persName[@type='expediteur']
            return
                <li>{$expediteur/text()}</li>
            }
            </th>
        </tr>
        </table>

Pour faire fonctionner le moteur de recherche Lucene, voici un exemple de syntaxe :

xquery version "3.0";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization";

declare option output:method "html5";
declare option output:media-type "text/html";

<html>
    <head></head>
    <body>
        <h1>Les correspondants du Roman des Morand</h1>
        <form action="">
            <input type="text" name="qu"/>
            <button type="submit">query</button>
        </form>

        <ul>
                {
                    let $query := request:get-parameter("qu",())
                for $text in
                    if (empty($query))  then
                        <li>Please type a query term</li>
                    else
                        doc("/db/apps/dhTestSam3/teiCorpus_Morand_1ere_vague.xml")//tei:p[ft:query(., $query)]
    
                return
                    <li>{$text/string()}</li>
                }

        </ul>
        
    
    </body>
</html>

 

Ce code devrait faire apparaître le petit moteur de recherche suivant :

 

moteur Lucene morand

Voilà pour la première étape. Dans un prochain billet, nous parlerons de l’atelier suivant et de l’utilisation de la TEI Processing Model Toolbox.

Pour compléter, voir la documentation officielle du quick start et du development starter.


Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *