Dieses Dokument beschreibt die benötigten technischen Komponenten zur Umsetzung der Anforderungen für themenspezifische Zugänge im Archivportal-D sowie für das Zugehörige Schlagworttool. Als Grundlage dienten die Konzepte und Mockups des Themenportals Weimar.
Funktionsblöcke und Technische Implementierung
Zuordnungstool-Backend
Das Zuordnungstool-Backend ist eine Serverkomponente, die mittels HTTP-REST-Aufrufen angesprochen wird und die das Anlegen und Bearbeiten von Systematiken, Schlagwörtern, nutzerspezifischen Merklisten, Bestandsselektionen und Schlagwortzuordnungen ermöglicht. Die Endpunkte werden vom Zuordnungstool und vom APD-Frontend verwendet.
Bevor Schlagwörter Objekten zugeordnet werden können, müssen die Systematiken und Schlagwörter ins System geladen werden. Die Systematiken/Schlagwörter werden dazu mit dem Werkzeug xTree erzeugt und als RDF in das System hochgeladen. Die oberste Hierarchie der Systematik ist das Themenportal. Die Hierarchie darunter enthält die Wurzelknoten der Systematiken mit dem Namen der Systematik (z.B. "Schlagwörter" oder "Regionen"). Auf der dritten Hierarchiestufe beginnen dann die eigentlichen Hierarchien der jeweiligen Systematiken.
Systematiken können geändert werden. Dazu muss immer der komplette Systematik/Schlagwort-Baum neu ins System geladen werden. Wenn dann im Baum Schlagwörter fehlen die schon Objekten zugeordnet wurden dann wird der geänderte Systematik-Baum nicht im System. abgespeichert.
Themenportal und Systematikknoten werden mit internen Primärschlüsseln im System abgespeichert, bei Schlagwörtern ist die xTree-Uri der Primärschlüssel. Die xTree-URI muss bei Schlagwörtern eindeutig und stabil sein!
Beschreibung eines Zuordnungs-Workflows:
- Ein Nutzer loggt sich in APD ein, sucht und legt Objekte in seine Merkliste.
- Merklisten werden mit den Nutzerdaten in Elasticsearch gespeichert (vorhandene Funktionalität)
- Der Nutzer loggt sich im Verknüpfungstool ein und wählt eine seiner Merklisten aus.
- Alle Objekte der Merkliste werden mit den schon zugeordneten Schlagwörtern angezeigt.
- Es werden Schlagwörter angezeigt, die der eingeloggte Nutzer zugeordnet hat. Diese können editiert werden.
- Es werden Schlagwörter angezeigt, die von anderen Nutzern zugeordnet wurden. Diese sind nicht editierbar (oder nur vom Administrator).
- Auswahl der Schlagwörter durch Auswahl des Themenportals und Browsen durch die Systematik
- Schlagwörter können mit einem "Status" zugeordnet werden (AUTOSUGGESTED, SUGGESTED, DELETESUGGESTED, ACCEPTED, REJECTED, PUBLISHED, DELETED)
- Der Status einer Schlagwort-Zuordnung kann später verändert werden.
- Einzelnen Objekten aus der Merkliste lassen sich Schlagwörter zuordnen oder der Status schon zugeordneter Schlagwörter lässt sich ändern.
- Allen Objekten aus der Merkliste, die einem gemeinsamen Aggregationsknoten zugehören, können über diesen in einem Schritt Schlagwörtern zugeordnet werden.
Endpunkte
Assignment-Tool-Backend Endpoints
Sekundäre Datenhaltung, Tabellenstruktur der Datenbank
Assignment-Tool-Backend Database
Schlagwort-App
Die Schlagwort-App ordnet anhand von Schlagwortvorschlägen Schlagwörter zu. Die Schlagwortvorschläge werden automatisch erzeugt und als RDF abgelegt. Die Schlagwort-App liest die automatisch erzeugten RDF-Triples ein und ruft mit den Informationen den Endpunkt des Zuordnungstool-Backends auf, um die Schlagwörter in der Tabelle objects_keywords mit dem Status "AUTOSUGGESTED" zu speichern.
Themenportal-Frontend
Im Themenportal bewegen sich Nutzende in der Regel browsend, d.h. sie schränken die Liste der angezeigten Objekte über Schlagwort-Facetten ein. Achtung: eine Einschränkung über die Systematik-Facetten ist nicht vorgesehen. Es soll auch möglich sein, alle Objekte einer Kategorie zu finden, egal auf welcher Hierarchiestufe sich die Kategorie befindet. Technisch wird das über eine Einschränkung auf alle Schlagwörter umgesetzt, die sich in der Hierarchie unterhalb der ausgewählten Kategorie befinden.
Achtung: Dieselben Schlagwörter können zusätzlich noch in einem anderen Teilbaum verortet sein. Daher werden auch Objekte gefunden, denen das Schlagwort durch Auswahl dieses anderen Teilbaums zugeordnet wurde.
Im Themenportal-Frontend werden auch Kategorien angezeigt, denen keine Objekte zugeordnet sind (also keine Schlagwörter aus der darunter liegenden HIerarchie des Teilbaums zugeordnet bekommen haben).
Zusätzlich können Objekte über einen Suchschlitz gesucht und anschließend das Suchergebnis über Facetten eingeschränkt werden. DIe geforderte gleichzeitige Freitext-Suche und Einschränkung auf Schlagwort-Facetten bedingt, dass die Facetten im normalen Suchindex der DDB enthalten sein müssen. Die Suche wird im Themenportal dann immer eingeschränkt auf die top-level category_id erfolgen.
Backend-Zugriffe
Das Themenportal-Frontend greift zu auf:
- Schlagwort-Backend
- Hierarchiestufen der Systematiken
- Umsetzung keywordIds in label für die Facettenwerte
- Suchindex
- Suche und Facettenwerte
- DDB-Backend
- Einzelobjekt-Anzeige
Neue Indexfelder im DDB Suchindex
- tp_keyword_id_<category_id> (Schlagwort mit gegebener category_id in der 2. Ebene der Hierarchie)
- tp_category_id (oberste Ebene der Hierarchie, d.h. Themenportal)
Indexierung der Schlagwörter im Suchindex
Schlagwörter werden von der IngestApp mit in die zu indexierenden Daten geschrieben. Dazu wird für das Themenportal ein neuer Worker in den IngestApp-Workflow integriert, der für die prozessierte ddbId die zugeordneten Schlagwörter aus den Datenbanktabellen des Schlagwort-Backends liest und in die zu indexierenden Daten schreibt. Dadurch wird sichergestellt, dass die Schlagwörter auch dann neu indexiert werden, wenn das Objekt über die Dash-Oberfläche neu geladen wird.
- Workflow des Worker
- für die gegebene ddbId die Schlagwörter aus der Tabelle objects_keywords lesen (nur status PUBLISHED)
Für zukünftige zusätzliche Themenportale lassen sich weitere Worker in den IngestApp-Workflow integrieren. Die Schlagwörter aus der Tabelle objects_keywords werden in regelmäßigen Abständen per cronjob mit einem neu zu erstellenden Job prozessiert (z.B. zweimal täglich).
- Workflow
- Lesen der ddb_ids aus der Tabelle objects_keywords (eingeschränkt auf modified_at > <letzter Lauf des cronjobs> und status=PUBLISHED oder DELETED)
- ddbIds in eine temporäre Tabelle schreiben
- Aufruf der ReindexApp mit dem Namen der temporären Tabelle