Software BaseX einrichten - acdh-oeaw/japbib-web GitHub Wiki

Software (BaseX) einrichten

Komponenten und Downloads

Server installieren

BaseX und Komponenten

  • BaseX auf dem Desktop oder unter Dokumente entpacken
  • Aus dem Saxon Archiv saxon9he.jar kopieren nach: BaseX-Pfad\lib\custom
  • Den ContextQL parser kopieren nach: BaseX-Pfad\lib\custom

Webstruktur und Daten

  • Das Datenbackup kopieren nach BaseX-Pfad\data
  • "Git-Repos" kopieren (klonen) nach: BaseX-Pfad\webapp (es sollte ein Verzeichnis \japbib-web entstehen, in der index.htm etc. liegen)
  • Repository mit x-query files kopieren: (vorerst nur intern, noch nicht veröffentlicht)
    • in japbib-web Rechtsklick -> Tortioise Git -> Submodule Update "mass-update": \japbib-web\mass-update wird ergänzt.
    • in \japbib-weg\mass-update: Rechtsklick -> Tortioise Git -> Switch/Checkout: "master"

JS Bibliotheken

  • Benötigte JS Bibliotheken werden mit yarn verwaltet und installiert:
    • node.js und yarn.js lokal installieren (installer s.o.).
    • (Bei der Umstellung von bower: bower_components löschen.)
    • im Verzeichnis BaseX-Pfad\webapp\japbib-web: Rechtsklick, Git Bash Here--> yarn install eingeben und ausführen. Es entsteht das Verzeichnis node-modules\bower_components und eine Verknüpfung zu diesem Verzeichnis im root-Verzeichnis (japbib-web).
    • Auf Webserver kann das Verzeichnis bower_components einfach kopiert werden.

Betrieb

BaseX erstmals starten:

  • Unter BaseX-Pfad \bin die Datei basexhttp(.bat) starten.

Nach Installation oder größeren Änderungen an den Daten:

Die Website ist jetzt erreichbar unter: http://localhost:8984/japbib-web

normaler Betrieb s. [Basex_server]

Tests

Automatisierte Browser Tests

Mit Katalon können Testskripte durch durchklicken von Bedienungsabläufen erstellt werden.

Präsentation hier .

JS testet JS

Automatische Tests mit Karma sind vorgesehen.

  • Alles benötigte wird mit npm install installiert.
  • Die Tests werden mit node_modules\.bin\karma start karma.conf.js gestartet.
  • Beim Speichern von Dateien werden die Tests automatisch wieder ausgeführt.
    • Das Fenster mit Karma muss also offen bleiben. Dort sieht man den Status der einzelnen Tests.
    • Karma öffnet einen ferngesteuerten Browser. Auch dieses Fenster muss geöffnet bleiben, kann aber verkleinert werden.

Funktionsbeschreibung

Welche Programme machen was wann?

Suche im Browser

  • Beim Laden der Seite wird der Thesaurusbaum einmalig vom Server geholt
    • dazu wird <Basis-URL>/thesaurus verwendet
    • die Baseisdaten für den Baum sind in thesaurus.xml
    • diese Daten werden mit dem refresh Schritt von oben mit Anzahl der Vorkommen angereichert.
    • diese wird mittels thesaurus2html.xsl in ein HTML Schnipsel umgewandelt und dieses unter dem Reiter Thesaurus eingesetzt.
  • Im Browser wird eine Context Query Language Suchabfrage
    • eingegeben oder
    • durch Nutzerinteraktion mit diversen Websitelementen generiert
  • Die Abfrage wird an den Server als GET Request an die URL /sru geschickt Dabei werden über die im Standard enthaltenen Parameter noch die folgenden Parameter mitgeschickt:
    • Die möglichen standardisierten Parameter sind im SRU Standard 1.2 dokumentiert.
    • x-style=sru2ajax.xsl : enthält ein beliebiges Stylesheet aus dem xsl-Verzeichnis des Programmcodes. Zur Zeit wird nur sru2ajax.xsl verwendet. Das "Stylesheet" none kann angegeben werden um keine XSLT Transformation zu machen. Damit können Eingangsdaten für das Debuggen des XSLT geladen werden.
    • x-no-search-filter=<bool> : Ob der Suchfilterbaum neu generiert werden soll
  • Die Suche wird von den Routinen im responses/sru Verzeichnis bearbeitet.
  • Die Abfrage wird mit einem ContextQL Parser (in Java vorprogrammiert) in eine XML Form gebracht.
  • Die Abfrage als XML wird in eine XQuery Abfrage umgewandelt.
    • Dabei ist die Konfiguration in maps.xml enthalten. maps.xml wird mittels index.xqm eingebunden.
    • Die Abfrage wird so umgewandelt, dass der Full Text Index von BaseX verwendet wird. Das führt zu viel kürzeren Antwortzeiten.
  • Die generierte XQuery wird ausgeführt und das Ergebnis in einen SRU Rahmen eingepackt.
  • Es werden relevante Trefferzahlen für vorkommende Suchbegriffe dazugepackt.
    • Dabei werden die gecachten Daten aus __sru_cache_de_data__ verwendet.
  • Das XML wird mit dem angegebenen XSLT Stylesheet umgewandelt und das XHTML Ergebnis an den Browser geliefert.
  • Der Browser ersetzt alle Teile der Seite von denen neue Daten in der Antwort enthalten sind.

h4. Massenersetzungen in den Daten

  • Ordner mass-updates
  • template.xq : eine Vorlage für das Finden von Einträgen und Ersetzen/Verbessern als Vorschau
  • template-write.xq : eine Vorlage für das Ausführen der in der Vorschau erprobten Ersetzungen/Verbesserungen
  • <issue-id>-<description>.xq : Eine konkrete Umsetzung der Vorschau
  • <issue-id>-<description>-write.xq : Eine konkrete Umsetzung eines Skripts, das in die Datenbank schreibt
  • writer-to-db-in-junks.xq : führt ein Paar Vorschau + Schreiben Skripte auf der gesamten Datenbank aus.

h3. Welches sind die entscheidenden Files?

  • maps.xml : Ordnet Abfrageschlüsselwörter XPath-Ausdrücken zu
  • __sru_cache_de_data__ : Enthält Listen von Suchbegriffen mit ihrer Häufigkeit um Zählungen zu beschleunigen.
  • japbib_06 : Die MODS Daten (mit eingebetteten LIDOS Daten)
  • japbib_06__hist : Alle Änderungen durch den VLE und durch die mass-update Skripte
  • japbib_06__lcks : Sperren von einzelnen MODS Einträgen für das Bearbeiten im VLE
  • japbib_06__prof : Konfigurationsdatei für den VLE
  • dict_de.xml : Enthält Übersetzungslisten von englischen Worten und Kürzeln zu Deutschen.
  • responses/http.xqm : Liefert HTML, JS und CSS Dateien aus und sorgt für informativere Fehlermeldungen
  • responses/sru.xqm und responses/sru/* : Suche.
  • responses/thesaurus : Thesaurus anzeige und Funktion zum Einfügen von Zählergebnissen in den Thesaurusbaum.

Bekannte Fehlerbilder

Fehlermeldung bei Suche

diag:noAnchor: Anchor term XYZ was not found in scan using ....

Kann durch Aufruf von https://www.oeaw.ac.at/jb80/sru/refresh-scans behoben werden, der die internen Register neu generiert.

Saxon nicht (richtig) installiert

Tritt etwa auf bei: http://localhost:8984/japbib-web/sru?query=author%3DA*&version=1.2&operation=searchRetrieve&maximumRecords=10&x-style=sru2ajax.xsl

ERROR: '...japbib-web/xsl/sru2ajax.xsl: line 1: Das "method"-Attribut eines <xsl:output>-Elements hatte den Wert "xhtml". Der Wert muss "xml", "html", "text" oder qname-but-not-ncname sein' [...]

japbib_06 Daten nicht eingespielt

Leeres Resultat tritt etwa auf bei: http://localhost:8984/japbib-web/sru?query=author%3DA*&version=1.2&operation=searchRetrieve&maximumRecords=10&x-style=sru2ajax.xsl

<div xmlns="http://www.w3org/1999/xhtml" class="ajax-result">
   <div class="search-result"/>
   <div class="categoryFilter"/>
</div>

Fehler bei der Transformatoin von Suchresultaten

Siehe [Diagnose von XSLT-Fehlern]

⚠️ **GitHub.com Fallback** ⚠️