2015.05 2016.06 2017.06

Das Klassifikationen-Datenmodell

In diesem Abschnitt wird die Struktur einer Klassifikation und ihre Repräsentation im XML-Format beschrieben.

Das Klassifikationen-Datenmodell

Für das Importieren und Exportieren von Klassifikationen wird in MyCoRe ein XML-Format verwendet.

Elemente einer Klassifikation

Eine Klassifikation besteht aus:

Rootelement

Das Rootelement (<mycoreclass>) enthält die ID der Klassifikation, ein oder mehrere Bezeichner labelin verschiedenen Sprachen und einen Container categories, der die Einträge der Klassifikation speichert.

Die ID kann maximal 32 Zeichen lang sein und darf die Zeichen :, $, {, } nicht enhalten.

Kategorie

Als Kategorien (<category>) bezeichnen man die Einträge der Klassifikation. Kategorien können hierarchisch geschachtelt werden. Sie enthalten eine ID, einen oderer mehrere Bezeichner label für verschiedene Sprachen und optional eine URL url. Diese kann verwendet werden, um auf eine Webseite mit weiteren Informationen oder der Beschreibung des Klassifikationseintrages zu verlinken.

Die ID kann maximal 128 Zeichen lang sein und darf die Zeichen :, $, {, } nicht enhalten.

Bezeichner

Bezeichner (<label>) werden verwendet, um die Klassifikation und ihre Einträge zu bennennen. Label sind wiederholbar, um auch Übersetzungen des Begriffes speichern zu können. Sie bestehen aus einem Sprachattribut xml:lang und einem Textfeld text. Optional können zusätzliche Angaben zur Verwendung des Eintrages in einem Beschreibungsfeld description abgelegt werden.

Die Länge von Text und Beschreibung kann jeweils maximal 4096 Zeichen betragen. Das Sprachattribut kann maximal 255 Zeichen lang sein und muss gemäß den Regeln des RFC 4646 aufgebaut sein.

Folgende Grafik soll die Beziehung zwischen den Klassifikationselementen verdeutlichen:

Datenmodell-Graphik

Besonderheiten

x- Sprachcodes

In MyCoRe wird das Label zur Speicherung zusätzlicher Informationen für die Weiterverabeitung der Klassifikationen verwendet. Dazu werden zusätzliche Label mit privaten Sprachcodes (gemäß den Regeln des RFC4646) definiert. Die Sprachcodes bestehen aus dem Prefix x- und weiteren Blöcken aus jeweils max. 8 Zeichen (Zahlen oder Buchstaben), die durch - getrennt werden.

Folgende Sprachcodes werden verwendet:

  • x-uri für Bezeichner in Form einer URI.
    URIs sind mit URLs (HTTP-Adressen) verwandt und werden vor allem im Context von Linked Data eingesetzt.
    Im MODS-Metadatenmodell werden sie zur Speicherung von Klassifikationen in Form von authorityURI und valueURI Attributen verwendet. Anhand des x-uri-Labels kann MyCoRe diese Klassifikationen erkennen und verarbeiten.

  • x-auth als Marker für Klassifikationen, die im MODS-Metadatenmodell mit dem Attribut authority gekennzeichnet wurden.

  • x-mapping für das Klassifikationsmapping.
    Wenn Metadaten z.B. über die OAI-Schnittstelle an externe Services ausgeliefert werden, 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 wird. MyCoRe trägt dann die äquivalenten Einträge der anderen Klassifikation automatisch dazu.
    Die Werte werden als Leerzeichen-getrennte Liste von Klassifikationseinträgen der Form classid:categid gespeichert.

Format von IDs

In hierarchischen Klassifikationen kann es sinnvoll sein, die Hierarchiestufen beispielsweise durch einen Punkt (.) oder Numerierung in den IDs abzubilden:

  • Institutionen: UnisUnis.RostockUnis.Rostock.UB
  • DDC:     556567

Für das Funktionieren des Klassifikationssystems ist das jedoch keine Voraussetzung.

XML Format

Das folgende XML-Grundgerüst kann für das Schreiben eigener Klassifikationen verwendet werden:

<?xml version="1.0" encoding="UTF-8" ?>
    <mycoreclass
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="MCRClassification.xsd"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      ID="..." >
     <label xml:lang="de"    text="..." description="..."/>
     <label xml:lang="en"    text="..." description="..."/>
     <label xml:lang="x-uri" text="..." description="..."/>
     ...
     <categories>
      <category ID="...">
         <label xml:lang="..." text="..." description="..."/>
         ...
         <url xlink:href="..." />
         <category ID="...">
           <label xml:lang="..." text="..." description="..."/>
           ...
         </category>
         <category ID="...">
           <label xml:lang="..." text="..." description="..."/>
           ...
         </category>
     </category>
   </categories>
</mycoreclass>

Für die Validierung kann die XML-Schema Datei MCRClassification.xsd aus dem SVN verwendet werden.

Für Entwickler

Intern erfolgt die Speicherung der Klassifikationen in mehreren verknüpften Datenbanktabellen:

  • In der Tabelle mcrcategory werden Klassifikationseinträge und ihre hierarchische Struktur gespeichert. Die Hierarchie wird als Nested Set Model (s. Wikipedia) abgebildet.
  • Die Tabelle mcrcategorylabels enthält die mehrsprachigen Bezeichner und Beschreibungen der Klassifikationseinträge
  • Das Mapping von MyCoRe-Objekten zu Klassifikationseinträgen wird in der Tabelle mcrcategorylink gespeichert

 Robert Stephan, Jens Kupferschmidt - 2016-03-18