Die Normalisierung von Datumsangaben ist Teil des Schritts “Metadata Enrichment and Normalization”. Dabei werden die im Mapping generierten rico:DateSet in rico:SingleDate oder rico:DateRange transformiert und die Daten in die korrekten Felder geschrieben. Die Normalisierung ist regelbasiert und kann konfiguriert werden. Wenn eine Normalisierung nicht möglich ist, kann das Datum nicht facetiert werden.
Normalisierung basiert auf ISO 8601.
Ein Tagesdatum wird als Entität vom Typ
rico:SingleDate
modelliert.Alles andere wird mit einer Entität vom Typ
rico:DateRange
modelliert.Normalisierte Datumsangaben sind in
rico:normalizedDateValue
zu finden.Qualifizierender Text kann aus dem Datum entfernt und in einem von zwei zusätzlichen Feldern gespeichert werden:
rico:dateQualifier
: Text welcher auf eine Schätzung des Datums hindeutet (z.B.ca.
,um
, etc.)rico:certainty
: Text welcher zusätzliche Informationen zum Datum enthält (z.B.Datiert nach Inschrift
,genaues Datum nicht eruierbar
, etc.)
Wenn die Normalisierung scheitert dann wird der Wert in
rico:expressedDate
gespeichert und als Entitätrico:DateRange
.
Prozess
Alle Entitäten mit dem Typ
rico:DateSet
werden ausgewählt.Überprüfe ob das Attribut
rico:expressedDate
definiert ist.Entität ohne werden ignoriert und ein Report generiert.
Entferne alle Leerzeichen am Anfang und am Ende des Wertes.
Versuche jeden SingleDate Matcher in Reihenfolge mit einem vollen Abgleich.
Abbruch bei Erfolg
Suche Text mit dem Qualifier Filter.
Gefundene Übereinstimmungen werden vom Wert entfernt und im Feld
rico:dateQualifier
angelegt.
Suche Text mit dem Certainty Filter.
Gefundene Übereinstimmungen werden vom Wert entfernt und im Feld
rico:certainty
angelegt.
Entferne alle Leerzeichen im Wert.
Versuche jeden DateRange Matcher in Reihenfolge mit einem vollen Abgleich.
Konfiguration
Besteht aus vier Teilen. Jeder wird in einem separaten Schritt angewendet. Beim Erstellen muss unbedingt die Reihenfolge bedacht werden.
SingleDate Matcher
File: single-date-matchers.txt
Beispiel: (?<year>\d{4})-(?<month>[0-2][0-9])-(?<day>[0-3][0-9])
Muss die Gruppen year
, month
und day
enthalten.
DateRange Matcher
File: date-range-matchers.txt
Beispiel: (?<singleYear>[0-2][0-9]{3})
Muss entweder die Gruppe singleYear
enthalten oder mindestens die Gruppen fromYear
und untilYear
. Bei den letzten beiden kann auch fromMonth
, fromDay
, untilMonth
und untilDay
verwendet werden.
Certainty Filter
File: certainty.txt:
Beispiel: \(?(?<certainty>Datiert nach Inschrift)\)?
Jede Regex muss die Gruppe certainty
enthalten.
Qualifier Filter
File: qualifier.txt
Beispiel: [\s+]\(?(?<qualifier>um)\)?[^a-zA-Z]
Jede Regex muss die Gruppe qualifier
enthalten.
Namen von Monaten
Für die Normalisierung von Daten in Textform zu ISO 8601 werden aktuell die folgenden Namen verstanden und verarbeitet. Der Code kann mit zusätzlichen Varianten ergänzt werden. Diese werden angewendet wenn die Werte in den Gruppen month, fromMonth & untilMonth
nicht numerisch sind.
Januar, Jan, janvier, janv., gennaio, gen
Februar, Feb, février, févr., febbraio, feb
März, Mär, mars, mars, marzo, mar
April, Apr, avril, avr., aprile, apr
Mai, Mai, mai, mai, maggio, mag
Juni, Jun, juin, juin, giugno, giu
Juli, Jul, juillet, juil., luglio, lug
August, Aug, août, août, agosto, ago
September, Sep, septembre, sept., settembre, set
Oktober, Okt, octobre, oct., ottobre, ott
November, Nov, novembre, nov., novembre, nov
Dezember, Dez, décembre, déc., dicembre, dic
Beispiele
Input | Class | Attributes and Values |
---|---|---|
19230817 | rico:SingleDate | rico:normalizedDateValue: 1923-08-17 |
ca. 1970 er - 1980 er | rico:DateRange | rico:expressedDate: 1970 er - 1980 er rico:qualifier: ca. |
1987 - 1994 | rico:DateRange | rico:normalizedDateValue: 1987/1994 |
1978 | rico:DateRange | rico:normalizedDateValue: 1978 |
1961 ou avant | rico:DateRange | rico:expressedDate: 1961 ou avant |
1930-1939, genaues Datum nicht eruierbar | rico:DateRange | rico:normalizedDateValue: 1930/1939 rico:certainty: genaues Datum nicht eruierbar |
02.10.1999 | rico:SingleDate | rico:normalizedDateValue: 1999-10-02 |
1.- 12. 8. 1996 | rico:DateRange | rico:normalizedDateValue: 1996-08-07/12 |
1913 - 1919 (Datiert nach Inschrift) | rico:DateRange | rico:normalizedDateValue: 1913/1919 rico:certainty: Datiert nach Inschrift |
(Keine Datumsangabe) | rico:DateRange | rico:expressedDate: Keine Datumsangabe |
1941 (Um) | rico:DateRange | rico:normalizedDateValue: 1941 rico:qualifier: Um |
Dezember 1996 | rico:DateRange | rico:normalizedDateValue: 1996-12 |
11 avril 1992 | rico:SingleDate | rico:normalizedDateValue: 1992-04-11 |
17-22 ottobre 1930 | rico:DateRange | rico:normalizedDateValue: 1930-10-17/22 |
01 février 1967-02 avril 1967 | rico:DateRange | rico:normalizedDateValue: 1967-02-01/1967-04-02 |
Octobre-novembre 1925 | rico:DateRange | rico:normalizedDateValue: 1925-10/11 |
29 au 31 mars 1926 | rico:DateRange | rico:normalizedDateValue: 1926-03-29/31 |
Mittelalter | rico:DateRange | rico:expressedDate: Mittelalter |