2020.06 2021.06

Mapping von Klassifikationen

Allgemein

Wenn Metadaten z.B. über die OAI-Schnittstelle an externe Services ausgeliefert werden sollen, werden häufige andere Klassifikationseinträge benötigt. Um Mehrfacheingaben zu vermeiden, bietet MyCoRe mit dem Klassifikationsmapping die Möglichkeit, dass nur eine primäre Klassifikation erfasst werden muss. MyCoRe ergänzt dann die äquivalenten Einträge der anderen Klassifikationen automatisch.

Für einen DINI-konformen Betrieb der OAI-Schnittstelle müssen verschiedene Sets unterstützt werden. Sets werden im OAI-PMH Standard verwendet, um Dokumente zu gruppieren. Sie ermöglichen selektives Harvesting und entsprechen konzeptionell den Klassifikationen in MyCoRe. Deshalb wurden zunächst Klassifikationen für die Sets erstellt, die für das DINI-Zertifikat zu implementieren sind. Sie stehen auf mycore.de/classifications als ddc.xml, diniPublType.xml und diniVersion.xml zur Verfügung und müssen in die eigene Anwendung übernommen werden.

Sollen Dokumente im xMetaDissPlus-Format ausgeliefert werden, sind weitere Klassifikationen zu verwenden: dctermsDCMIType.xml und XMetaDissPlusThesisLevel.xml

Im einfachsten Fall lassen sich diese Klassifikationen direkt in einem MyCoRe-Datenmodell verwenden. Allerdings werden die meisten MyCoRe-Anwendungen eigene Klassifikationen besitzen, z.B eine detaillierte DDC oder detailliertere Klassifikation für Dokumententypen. Für solche Fälle wurde das Klassifikationsmapping implementiert.

Anreicherung der Klassifikation

Die Definition des Mappings erfolgt, indem die Klassifikationseinträge um ein Label mit dem künstlichen Sprach-Attribut x-mapping erweitert werden. Als Wert wird Klassifikations-ID und Kategorie-ID getrennt durch einen Doppelpunkt dort eingetragen. Mehre Werte können durch Leerzeichen getrennt werden. z.B.:

1
2
3
4
5
6
7
  <category ID="TYPE0003.006">
         <label xml:lang="de" text="Dissertation" />
         <label xml:lang="en" text="dissertation" />
         <label xml:lang="x-mapping"
                text="diniPublType:doctoralThesis dctermsDCMIType:Text
    XmetaDissPlusThesisLevel:thesis.doctoral diniVersion:publishedVersion" />
  </category>

Technische Umsetzung

in einer "klassischen" MyCoRe-Anwendung

Das Datenmodell wird um ein Datenfeld mappings/mapping ergänzt werden. Dieses Feld wird dann beim Einfügen oder Aktualisieren der Dokumente automatisch befüllt.

1
2
3
4
    <element name="mappings" minOccurs='0' maxOccurs='1'>
      <mcrmetaclassification name="mapping"
        class="MCRMetaClassification" minOccurs='1' maxOccurs='unbounded' />
    </element>

Das Mapping wird per EventHandler aktiviert und sollte möglichst früh aufgerufen werden, zumindest noch vor dem Start der Indexierung.

1
2
3
  MCR.EventHandler.MCRObject.015.Class
      =org.mycore.oai.classmapping.MCRClassificationMappingEventHandler
    

in einer MyCoRe-Anwendung mit MODS-Datenmodell

Wird das MODS-Datenmodell genutzt, muss kein zusätzlichen Datenfeld ergänzt werden. In diesem Fall werden die generierten Einträge als zusätzliche mods:classification Elemente abgespeichert.

Für dieses Verhalten wurde ein weiterer Eventhandler implementiert:

1
2
3
  MCR.EventHandler.MCRObject.016.Class
      =org.mycore.mods.classification.MCRClassificationMappingEventHandler
    

Im resultierenden MODS wird der Eintrag durch das Attribut generator eindeutig identifizierbar. Dieses enthält immer das Suffix -mycore und setzt sich weiterhin aus Quell-Klassifikations-ID und Ziel-Klassifikations-ID zusammen. Siehe dazu nachfolgendes Beispiel:

1
2
3
4
  <mods:classification
    generator="mir_genres2diniPublType-mycore"
    authorityURI="http://localhost:8291/mir/classifications/diniPublType"
    valueURI="http://localhost:8291/mir/classifications/diniPublType#doctoralThesis"/>