MyCoRe bietet verschiedene Möglichkeiten an, Persistente Identifier zu generieren. Es ist möglich DOISs, URNs oder PURLs zu erzeugen. Für die Registrierung einer DOI wird aktuell ein XSL-Stylesheet angeboten, das aus MyCoRe-MODS-Objekten ein XML im Datacite-Format generiert, das dann entsprechend zur Registrierung genutzt werden kann.
Um DOIs aus der MyCoRe-Anwendung heraus zu prägen und beispielsweise bei DataCite über die REST-API
zu registrieren stellt MyCoRe in der Komponente mycore-pi
eine entsprechende Implementierung
bereit. Mit der folgenden Konfiguration kann die DOI-Registrierung bei Datacite aktiviert werden. Diese
Beispielkonfiguration geht von MyCoRe-MODS als Datenmodell aus. Für ein anderes Datenmodell müsste entsprechend
ein eigener Transformer und MetadataManager implementiert werden.
|
|
Will man DOI in Abhängigkeit vom Objektidentifikator generieren lassen, bietet sich die folgende Konfiguration an.
|
|
Verwendet man zunächst die Testumgebung von DataCite und möchte dennoch eine korrekte Verlinkung erzielen, so muss noch das folgende Property hinzugefügt werden.
|
|
Nachdem die Anwendung entsprechend konfiguriert wurde, kann über /receive
mittels des URL-Parameters
XSL.Transformer=datacite
das datacite-XML angezeigt werden. Sollte im MODS
bereits eine DOI angegeben sein, wird diese angezeigt.
Die Anwendung MIR stellt diese Funktionalität bereit, wenn das entsprechende Property
MIR.registerDOI=true
gesetzt wird. Dann erscheint im Aktionen-Menü eines
einzelnen Objektes ein weiterer Menüpunkt "DOI Registrieren".
Die Konfiguration für URN erfolgt analog zu DOI. Eine Beispiel für eine Konfiguration kann in den MIR-Properties gefunden werden.
Über das Property .CreationPredicate
kann eine Bedingung festgelegt werden. Wenn diese Bedingung
erfüllt ist, wird ein Persistent Identifier erstellt und registriert.
Falls es nötig ist, zunächst nur ein PI zu reservieren, aber noch nicht zu registrieren kann man das Property
.RegistrationPredicate
setzen, welches eine Bedingung definiert, die für die Registrierung erfüllt sein muss.
Die Bedingung muss auch erfüllt sein, wenn der PI nicht automatisch erstellt wurde!
Das MCRPIStatePredicate
prüft, ob sich das MyCoRe-Objekt in einem gegebenen Zustand befindet.
|
|
Wenn ein Objekt erzeugt wird und im Zustand new
ist, dann wird ein PI angelegt (MCRPIStatePredicate
mit Konfiguration State=new
).
Anschließend wird der PI nicht registriert, da die Bedingung für das Registrieren nicht erfüllt ist (MCRPIStatePredicate
mit Konfiguration State=published
).
Stellt ein Nutzer das Objekt auf den Status published
, dann wird der PI automatisch registriert.
Bei jeder Änderung am Objekt wird die Bedingung durch einen EventHandler geprüft.
Weiterhin gibt es zur Modellierung beliebiger Bedingungen das MCRPIXPathPredicate
.
Damit kann ein XPath-Ausdruck angegeben werden, der einen Wahrheitswert zurückliefert,
z.B. um eine neue DOI nur dann anzulegen, wenn nicht bereits eine DOI in den Metadaten existiert.
|
|
Soll die Entscheidung in Abhängigkeit der Eigenschaften eines vergebenen Klassifikationswertes getroffen werden, kann ein MCRPIClassificationXPathPredicate
verwendet werden.
Hierzu müssen eine Reihe von XPath-Ausdrücken konfiguriert werden. Einen, um ein Basis-Element im Objekt auszuwählen und zwei weitere um ausgehend von diesem Basis-Element die ID der Klassifikation und des vergebenen Klassifikationswertes zu ermitteln.
Anhand dieser beiden Werte wird die entsprechende Kategorie geladen. Der vierte XPath-Ausdruck beschreibt die geforderte Eigenschaft des Klassifikationswertes.
Dieser wird den XPath-Regeln entsprechend zu einem Wahrheitswert ausgewertet, z.B. um eine DOI nur dann anzulegen, wenn das Genre entsprechend gekennzeichnet ist (<label xml:lang="x-doi-service" text="datacite"/>
):
|
|
Es ist auch möglich komplexere Bedingungen mittels MCRPIAndPredicate
oder MCRPIOrPredicate
zu definieren:
|
|
In dem Beispiel wird ein PI nur im Zustand new
erzeugt und wenn eine Institution angegeben ist. Mehr erfährt man im Quellcode.