Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

« Import-export de thesaurus dans ThesX » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[category:ThesX]]== Introduction ==
[[category:ThesX]][[category:Conversion thesaurus pour Thesx]]
== Introduction ==
ThesX n'est plus accessible depuis son interface depuis longtemps car il n'a pas été mis à jour.  
ThesX n'est plus accessible depuis son interface depuis longtemps car il n'a pas été mis à jour.  
Seule la page de login est accessible. Mais, une fois logué, l'interface de ThesX renvoie des erreurs et n'est pas utilisable. Il n'est donc plus possible de créer, d'éditer ou de modifier un thesaurus depuis l'interface WEB.
Seule la page de login est accessible. Mais, une fois logué, l'interface de ThesX renvoie des erreurs et n'est pas utilisable. Il n'est donc plus possible de créer, d'éditer ou de modifier un thesaurus depuis l'interface WEB.
Ligne 6 : Ligne 7 :


Enfin, il est possible de faire plusieurs opérations, comme exporter, supprimer ou importer un thesaurus dans thesX, sans passer par l'interface, uniquement en ligne de commande. Cette courte documentation décrit ces opérations.
Enfin, il est possible de faire plusieurs opérations, comme exporter, supprimer ou importer un thesaurus dans thesX, sans passer par l'interface, uniquement en ligne de commande. Cette courte documentation décrit ces opérations.
(Voir aussi [[Conversion_thesaurus_SKOS_(ttl)_en_ThesX]])
== Commandes utiles ==
== Commandes utiles ==
Les commandes suivantes sont lancées sur le serveur où est installé eXist et suppose que le module-thesaurus est installé et paramétré.
Les commandes suivantes sont lancées sur le serveur où est installé eXist et suppose que le module-thesaurus est installé et paramétré.
Ligne 80 : Ligne 83 :
</syntaxhighlight>
</syntaxhighlight>
Si OK :
Si OK :
<syntaxhighlight lang="bash">       <exist:resource name="thesaurus-matiere-exist.xml" created="2026-01-21T10:02:00.58+01:00" last-modified="2026-01-21T10:02:00.58+01:00" owner="admin" group="dba" permissions="rw-r--r--"/></syntaxhighlight>
<syntaxhighlight lang="bash"><exist:resource name="thesaurus-matiere-exist.xml" created="2026-01-21T10:02:00.58+01:00" last-modified="2026-01-21T10:02:00.58+01:00" owner="admin" group="dba" permissions="rw-r--r--"/></syntaxhighlight>
===== Vérifier que l'id (mat) est bien détecté par les requêtes (le plus important) =====
<syntaxhighlight lang="bash">curl -sS -u admin:MP.. -G \
  --data-urlencode '_query=for $t in collection("/db/thesx")/thesaurus[@id="mat"] return <ok uri="{base-uri($t)}"/>' \
  http://127.0.0.1:18004/exist/rest/db
</syntaxhighlight>
Si OK :
<syntaxhighlight lang="bash"><exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="1" exist:start="1" exist:count="1">
    <ok uri="/db/thesx/thesaurus-matiere-exist.xml"/></syntaxhighlight>
===== Test de la présence du nouveau thesaurus =====
<syntaxhighlight lang="bash">curl -sS -u admin:MP.. -G \
  --data-urlencode '_query=for $t in collection("/db/thesx")/thesaurus return string($t/@id)' \
  http://127.0.0.1:18004/exist/rest/db
 
<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="3" exist:start="1" exist:count="3">
    <exist:value exist:type="xs:string">pleade-singulier-pluriel</exist:value>
    <exist:value exist:type="xs:string">wm</exist:value>
    <exist:value exist:type="xs:string">mat</exist:value>
</syntaxhighlight>
----
----



Dernière version du 27 janvier 2026 à 13:55

ThesX n'est plus accessible depuis son interface depuis longtemps car il n'a pas été mis à jour. Seule la page de login est accessible. Mais, une fois logué, l'interface de ThesX renvoie des erreurs et n'est pas utilisable. Il n'est donc plus possible de créer, d'éditer ou de modifier un thesaurus depuis l'interface WEB.

Cependant, après le démarrage de eXist et le paramétrage du pleade/module-thesaurus, l'intégration et l'utilisation de thesaurus dans les formulaires de recherche de Pleade fonctionnent toujours.

Enfin, il est possible de faire plusieurs opérations, comme exporter, supprimer ou importer un thesaurus dans thesX, sans passer par l'interface, uniquement en ligne de commande. Cette courte documentation décrit ces opérations.

(Voir aussi Conversion_thesaurus_SKOS_(ttl)_en_ThesX)

Commandes utiles

[modifier | modifier le wikicode]

Les commandes suivantes sont lancées sur le serveur où est installé eXist et suppose que le module-thesaurus est installé et paramétré.

Lancement/Arrêt de eXist

[modifier | modifier le wikicode]

Habituellement, ces commandes sont lancées depuis un cron.

Démarrage eXist

[modifier | modifier le wikicode]
bash /chemin/vers/exist/src/bin/startup.sh

Par exemple :

bash /home/ajlsm/production/exist-db-2.1/src/bin/startup.sh

Voir un exemple de réponse renvoyé par le prompt lors du démarrage <ref>Exemple de réponse dans le prompt</ref>

bash /chemin/vers/exist/src/bin/shutdown.sh -u admin -p MOT-DE-PASSE -l xmldb:exist://localhost:[port]/exist/xmlrpc

Par exemple :

bash /home/ajlsm/production/exist-db-2.1/src/bin/shutdown.sh -u admin -p MOT-DE-PASSE -l xmldb:exist://localhost:18004/exist/xmlrpc

Voir un exemple de réponse renvoyé par le prompt lors de l'arrêt <ref>Exemple de réponse dans le prompt</ref>

Commandes ThesX

[modifier | modifier le wikicode]

Lister les thesaurus utilisés

[modifier | modifier le wikicode]
curl -sS -u admin:MOT-DE-PASSE -H "Accept: application/xml"   -L -D - http://127.0.0.1:(port)/exist/rest/db/thesx

Par exemple :

curl -sS -u admin:MOT-DE-PASSE -H "Accept: application/xml"   -L -D - http://127.0.0.1:18004/exist/rest/db/thesx

HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 07:46:21 GMT
Set-Cookie: JSESSIONID=1xqknq52jzwuw1nx1bg9po9dk;Path=/exist
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/xml; charset=UTF-8
Last-Modified: Wed, 10 Jul 2019 16:55:27 GMT
Created: Wed, 10 Jul 2019 16:55:27 GMT
Transfer-Encoding: chunked
Server: Jetty(8.1.9.v20130131)

<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist">
    <exist:collection name="/db/thesx" created="2019-07-10T18:55:26.371+02:00" owner="admin" group="dba" permissions="rwxr-xr-x">
        <exist:resource name="dic-sing-plu-ad44.xml" created="2019-09-24T12:58:46.433+02:00" last-modified="2019-09-24T12:58:46.433+02:00" owner="admin" group="dba" permissions="rw-r--r--"/>
        <exist:resource name="thesaurus-w-minuscules.xml" created="2019-09-19T08:52:29.77+02:00" last-modified="2019-09-19T08:52:29.77+02:00" owner="admin" group="dba" permissions="rw-r--r--"/>
    </exist:collection>

REST : Vérifier la présence d'un thesaurus par son nom et son ID

[modifier | modifier le wikicode]
curl -sS -u admin:MOT-DE-PASSE   --data-urlencode "_query=for \$t in doc('/db/thesx/thesaurus-w-minuscules.xml')/thesaurus[@id='wm'] return <ok uri='{base-uri(\$t)}'/>"   http://127.0.0.1:18004/exist/rest/db

<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="1" exist:start="1" exist:count="1">
    <ok uri="/db/thesx/thesaurus-w-minuscules.xml"/>

Exporter un thesaurus

[modifier | modifier le wikicode]

Exportation du fichier thesaurus-w-minuscule.xml

curl -sS -u admin:MOT-DE-PASSE http://127.0.0.1:18004/exist/webdav/db/thesx/thesaurus-w-minuscules.xml -o thesaurus-w-minuscules.xml

Importer un thesaurus

[modifier | modifier le wikicode]

Avant d'importer, on fvérifie qu'il n'existe pas déjà un thesaurus avec le même ID.

Vérifier d’abord qu’il n’existe pas déjà un @id="ID"
[modifier | modifier le wikicode]

Par exemple, ici, l'ID à vérifier est "mat".

curl -sS -u admin:MP.. -G \
  --data-urlencode '_query=count(collection("/db/thesx")/thesaurus[@id="mat"])' \
  http://127.0.0.1:18004/exist/rest/db

<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="1" exist:start="1" exist:count="1">
    <exist:value exist:type="xs:integer">0</exist:value>
</exist:result>
  • Si ça renvoie 0 → OK, on peut importer
  • Si 1 ou plus → il faudra éviter les doublons (sinon get.xq peut devenir ambigu).
Importer le fichier dans /db/thesx
[modifier | modifier le wikicode]

Le fichier s'appelle thesaurus-matiere-exist.xml et son @id="mat"

Importation en REST :

curl -sS -u admin:MP.. \
  -T /chemin/vers/thesaurus-matiere-exist.xml \
  -H "Content-Type: application/xml" \
  http://127.0.0.1:18004/exist/rest/db/thesx/thesaurus-matiere-exist.xml
Vérifier que le document est bien là
[modifier | modifier le wikicode]
curl -sS -u admin:MP.. \
  http://127.0.0.1:18004/exist/rest/db/thesx \
  | grep -F "thesaurus-matiere-exist.xml"

Si OK :

<exist:resource name="thesaurus-matiere-exist.xml" created="2026-01-21T10:02:00.58+01:00" last-modified="2026-01-21T10:02:00.58+01:00" owner="admin" group="dba" permissions="rw-r--r--"/>
Vérifier que l'id (mat) est bien détecté par les requêtes (le plus important)
[modifier | modifier le wikicode]
curl -sS -u admin:MP.. -G \
  --data-urlencode '_query=for $t in collection("/db/thesx")/thesaurus[@id="mat"] return <ok uri="{base-uri($t)}"/>' \
  http://127.0.0.1:18004/exist/rest/db

Si OK :

<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="1" exist:start="1" exist:count="1">
    <ok uri="/db/thesx/thesaurus-matiere-exist.xml"/>
Test de la présence du nouveau thesaurus
[modifier | modifier le wikicode]
curl -sS -u admin:MP.. -G \
  --data-urlencode '_query=for $t in collection("/db/thesx")/thesaurus return string($t/@id)' \
  http://127.0.0.1:18004/exist/rest/db

<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="3" exist:start="1" exist:count="3">
    <exist:value exist:type="xs:string">pleade-singulier-pluriel</exist:value>
    <exist:value exist:type="xs:string">wm</exist:value>
    <exist:value exist:type="xs:string">mat</exist:value>

Démarrage eXist : réponse dans le prompt :

20 janv. 2026 14:38:10,904 [main] INFO  (JettyStart.java [run]:117) - Configuring eXist from /home/ajlsm/production/exist-db-2.1/src/conf.xml 
20 janv. 2026 14:38:10,905 [main] INFO  (JettyStart.java [run]:119) - Running with Java 1.8.0_422 [Private Build (OpenJDK 64-Bit Server VM) in /usr/lib/jvm/java-8-openjdk-amd64/jre] 
20 janv. 2026 14:38:10,905 [main] INFO  (JettyStart.java [run]:125) - Running as user 'ajlsm' 
20 janv. 2026 14:38:10,921 [main] INFO  (JettyStart.java [run]:128) - [eXist Version : 2.1] 
20 janv. 2026 14:38:10,922 [main] INFO  (JettyStart.java [run]:130) - [eXist Build : 20130717] 
20 janv. 2026 14:38:10,922 [main] INFO  (JettyStart.java [run]:132) - [eXist Home : unknown] 
20 janv. 2026 14:38:10,922 [main] INFO  (JettyStart.java [run]:134) - [SVN Revision : 18721] 
20 janv. 2026 14:38:10,922 [main] INFO  (JettyStart.java [run]:137) - [Operating System : Linux 5.4.0-198-generic amd64] 
20 janv. 2026 14:38:10,922 [main] INFO  (JettyStart.java [run]:142) - [jetty.home : /home/ajlsm/production/exist-db-2.1/src/tools/jetty] 
20 janv. 2026 14:38:10,922 [main] INFO  (JettyStart.java [run]:144) - [log4j.configuration : file:/home/ajlsm/production/exist-db-2.1/src/log4j.xml] 
janv. 20, 2026 2:38:11 PM org.expath.pkg.repo.util.Logger info
INFOS: Create a new repository with storage: File system storage in /home/ajlsm/production/exist-db-2.1/datadir/expathrepo
20 janv. 2026 14:38:12,368 [main] INFO  (JettyStart.java [lifeCycleStarting]:404) - Jetty server starting... 
20 janv. 2026 14:38:12,371 [main] INFO  (Server.java [doStart]:270) - jetty-8.1.9.v20130131 
Logging already initialized. Skipping...
20 janv. 2026 14:38:13,467 [main] INFO  (NCSARequestLog.java [doStart]:649) - Opened /home/ajlsm/production/exist-db-2.1/src/tools/jetty/logs/2026_01_20.request.log 
20 janv. 2026 14:38:13,473 [main] INFO  (ScanningAppProvider.java [doStart]:113) - Deployment monitor /home/ajlsm/production/exist-db-2.1/src/tools/jetty/contexts at interval 10 
20 janv. 2026 14:38:13,476 [main] INFO  (ScanningAppProvider.java [doStart]:113) - Deployment monitor /home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps at interval 10 
20 janv. 2026 14:38:13,479 [main] INFO  (DeploymentManager.java [addApp]:132) - Deployable added: /home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/homepage 
20 janv. 2026 14:38:13,571 [main] INFO  (DeploymentManager.java [addApp]:132) - Deployable added: /home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/portal 
20 janv. 2026 14:38:13,630 [main] INFO  (AbstractConnector.java [doStart]:338) - Started SelectChannelConnector@0.0.0.0:18004 
20 janv. 2026 14:38:13,734 [main] INFO  (SslContextFactory.java [doStart]:300) - Enabled Protocols [TLSv1.3, TLSv1.2] of [TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, SSLv3, SSLv2Hello] 
20 janv. 2026 14:38:13,735 [main] INFO  (AbstractConnector.java [doStart]:338) - Started SslSelectChannelConnector@0.0.0.0:18005 
20 janv. 2026 14:38:13,735 [main] INFO  (JettyStart.java [lifeCycleStarted]:410) - Jetty server started. 
20 janv. 2026 14:38:13,736 [main] INFO  (JettyStart.java [run]:224) - ----------------------------------------------------- 
20 janv. 2026 14:38:13,736 [main] INFO  (JettyStart.java [run]:225) - Server has started on ports 18004 18005. Configured contexts: 
20 janv. 2026 14:38:13,737 [main] INFO  (JettyStart.java [run]:234) - '/exist' 
20 janv. 2026 14:38:13,737 [main] INFO  (JettyStart.java [run]:272) - -----------------------------------------------------

Arrêt eXist : réponse dans le prompt :

20 janv. 2026 14:37:08,562 [Thread-4] INFO  (JettyStart.java [lifeCycleStopping]:419) - Jetty server stopping... 
20 janv. 2026 14:37:08,564 [Thread-4] INFO  (Server.java [doStop]:320) - Graceful shutdown SslSelectChannelConnector@0.0.0.0:18005 
20 janv. 2026 14:37:08,564 [Thread-4] INFO  (Server.java [doStop]:320) - Graceful shutdown SelectChannelConnector@0.0.0.0:18004 
20 janv. 2026 14:37:08,564 [Thread-4] INFO  (Server.java [doStop]:329) - Graceful shutdown eXist-db Open Source Native XML Database 
20 janv. 2026 14:37:08,565 [Thread-4] INFO  (Server.java [doStop]:329) - Graceful shutdown o.e.j.w.WebAppContext{/homepage,file:/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/homepage/},/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/homepage 
20 janv. 2026 14:37:08,565 [Thread-4] INFO  (Server.java [doStop]:329) - Graceful shutdown o.e.j.w.WebAppContext{/,file:/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/portal/},/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/portal 
20 janv. 2026 14:37:08,571 [Shutdown] INFO  (JettyStart.java [shutdown]:367) - Database shutdown: stopping server in 1sec ... 
20 janv. 2026 14:37:09,608 [Thread-4] INFO  (ContextHandler.java [doStop]:832) - stopped o.e.j.w.WebAppContext{/,file:/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/portal/},/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/portal 
20 janv. 2026 14:37:09,609 [Thread-4] INFO  (ContextHandler.java [doStop]:832) - stopped o.e.j.w.WebAppContext{/homepage,file:/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/homepage/},/home/ajlsm/production/exist-db-2.1/src/tools/jetty/webapps/homepage 
20 janv. 2026 14:37:09,622 [Thread-4] INFO  (ContextHandler.java [doStop]:832) - stopped eXist-db Open Source Native XML Database 
20 janv. 2026 14:37:09,676 [Thread-4] INFO  (ShutdownThread.java [unhook]:82) - shutdown already commenced 
20 janv. 2026 14:37:09,676 [Thread-4] INFO  (JettyStart.java [lifeCycleStopped]:425) - Jetty server stopped

<references/>