Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
minLevel1
maxLevel7

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.

Generelles

...

Nur Tagesdaten werden in rico:SingleDate geschrieben, alle anderen Daten werden in rico:DateRange geschrieben.

...

Wenn möglich werden Daten nach ISO 8601 normalisiert und in rico:normalizedDateValue geschrieben. Ansonsten stehen sie in rico:expressedDate.

Wenn möglich werden qualifizierende Texte in rico:dateQualifier oder rico:certainty geschrieben. Ansonsten werden nicht normalisierbare Datumsangaben und Texte in rico:expressedDate geschrieben.

...

Häufig vorkommende Texte, die auf eine Schätzung eines Datums hindeuten (ca., um, …) werden in rico:dateQualifier 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, wohl um, vermutlich, nach, frühestens, etc.)

    • rico:certainty: Text welcher zusätzliche Informationen zum Datum enthält (z.B. Datiert nach Inschrift, genaues Datum nicht eruierbar, …) werden in rico:certainty geschrieben.

  • rico:DateSet wird für dct:created/dct:issued höchstwahrscheinlich nicht verwendet. Evtl. ist rico:DateSet für dct:temporal notwendig (zur Zeit nicht implementiert).

Konfiguration

Welche Daten und Texte aus einem string wie behandelt werden, kann mit regex in vier Konfigurationsdateien festgelegt werden.

date-range-matchers.txt: Enthält die Muster, die als rico:DateRange behandelt werden.

single-date-matchers.txt: Enthält die Muster, die als rico:SingleDate behandelt werden.

certainty.txt: Enthält die Muster, die als rico:certainty behandelt werden.

...

    • Estimée, etc.)

  • Wenn die Normalisierung scheitert dann wird der Wert in rico:expressedDate gespeichert und als Entität rico:DateRange.

Prozess

  1. Alle Entitäten mit dem Typ rico:DateSet werden ausgewählt.

  2. Überprüfe ob das Attribut rico:expressedDate definiert ist.

    1. Entität ohne werden ignoriert und ein Report generiert.

  3. Entferne alle Leerzeichen am Anfang und am Ende des Wertes.

  4. Versuche jeden SingleDate Matcher in Reihenfolge mit einem vollen Abgleich.

    1. Abbruch bei Erfolg

  5. Suche Text mit dem Qualifier Filter.

    1. Gefundene Übereinstimmungen werden vom Wert entfernt und im Feld rico:dateQualifier angelegt.

  6. Suche Text mit dem Certainty Filter.

    1. Gefundene Übereinstimmungen werden vom Wert entfernt und im Feld rico:certainty angelegt.

  7. Entferne alle Leerzeichen im Wert.

  8. Versuche jeden DateRange Matcher in Reihenfolge mit einem vollen Abgleich.

    1. Abbruch bei Erfolg

Konfiguration

Besteht aus vier Teilen. Jeder wird in einem separaten Schritt angewendet. Beim Erstellen muss unbedingt die Reihenfolge bedacht werden.

Auf stage im Bestand mav-101 liegt eine Excel-Datei datumswerte.xlsx mit Beispielen, die bei Anpassungen an der Konfiguration zum Testen verwendet werden können.

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.

Erkannt werden Tagesdaten mit Trennzeichen .-, mit ausgeschriebenen Monatsnamen. Daten können in eckigen Klammern stehen.

DateRange Matcher

File: date-range-matchers.txt

Beispiel: (?<singleYear>[0-2][0-9]{3})

  • Muss die Gruppe singleYear, fromYear, oder untilYear enthalten.

  • singleYear kann optional mit singleMonth oder fromMonth und untilMonth und optional fromDay und untilDay kombiniert werden.

  • fromYear und untilYear kann mit fromMonth, fromDay, untilMonth und untilDay kombiniert werden.

Erkannt werden verschiedene Kombinationen von Zeiträumen, vgl. Beispiele. Daten können Monatsnamen enthalten und in eckigen Klammern stehen.

Certainty Filter

File: certainty.txt:

Beispiel: \(?(?<certainty>Datiert nach Inschrift)\)?

Jede Regex muss die Gruppe certainty enthalten.

Die Texte können in eckigen oder runden Klammern und i.d.R. vor oder nach dem Datum stehen. Erkannt werden die folgenden Texte: Datiert *, Datiert nach Inschrift, Datiert nach Quelle, genaues Datum nicht eurierbar, unsichere Datierung, Estimation de *, Estimée *

Qualifier Filter

File: qualifier.txt

Beispiel: [\s+]\(?(?<qualifier>um)\)?[^a-zA-Z]

Jede Regex muss die Gruppe qualifier enthalten.

Die Texte können in eckigen oder runden Klammern und i.d.R. vor oder nach dem Datum stehen. Erkannt werden die folgenden Texte: um, wohl *, zwischen, wahrscheinlich, ca, ca., circa, ou avant, avant, vor, nach, before, after, vermutlich, vers, env.

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.

Dieser Vergleich macht aus allen Buchstaben auf beiden Seiten Kleinbuchstaben. Es werden also jeweils beide Varianten gefunden.

  • januar, jan, janvier, janv., gennaio, gen

  • Februarfebruar, Febfeb, février, févr., febbraio, feb

  • Märzmärz, Märmär, mars, mars, marzo, mar

  • Aprilapril, Aprapr, avril, avr., aprile, apr

  • Maimai, Maimai, mai, mai, maggio, mag

  • Junijuni, Junjun, juin, juin, giugno, giu

  • Julijuli, Juljul, juillet, juil., luglio, lug

  • Augustaugust, Augaug, août, août, agosto, ago

  • Septemberseptember, sep, Sepsept, septembre, sept., settembre, set

  • Oktoberoktober, Oktokt, octobre, oct., ottobre, ott

  • Novembernovember, Novnov, novembre, nov., novembre, nov

  • Dezemberdezember, Dezdez, décembre, déc., dicembre, dic

Beispiele Single Dates

Input

Regex Group Names

Class

Attributes and Values

19230817

Normalized Value

02.10.1999

day, month, year

rico:SingleDate

rico:normalizedDateValue

: 1923

1999-

08-17ca. 1970 er - 1980 er

10-02

4 avril 1954

day, month, year

rico:

DateRange

SingleDate

rico:

expressedDate: 1970 er - 1980 er

rico:qualifier: ca.

1987 - 1994

rico:DateRange

rico:normalizedDateValue: 1987/1994

1978

normalizedDateValue 1954-04-04

[28.5.1928]

day, month, year

rico:SingleDate

rico:normalizedDateValue 1928-05-28

Beispiele Date Ranges

Input

Regex Group Names

Class

Normalized Value

1939

singleYear

rico:DateRange

rico:normalizedDateValue

: 19781961 ou avant

1939

April 1939

singleMonth, singleYear

rico:DateRange

rico:

expressedDate: 1961 ou avant1930-1939, genaues Datum nicht eruierbar

normalizedDateValue 1939-04

April - September 1939

fromMonth, untilMonth, singleYear

rico:DateRange

rico:normalizedDateValue

: 1930/1939

rico:certainty: genaues Datum nicht eruierbar

02.10.1999

rico:SingleDate

1939-04/09

1.-8.10.1939

fromDay,untilDay singleMonth, singleYear

rico:DateRange

rico:normalizedDateValue

: 1999

1939-10-

02- 12. 8. 1996

01/08

01.02.-08.10.1939

fromDay,untilDay, fromMonth, untilMonth,singleYear

rico:DateRange

rico:normalizedDateValue

: 1996

1939-

08

02-

07

01/

12

10-08

1913 - 1919 (Datiert nach Inschrift)

1987-1994

fromYear, untilYear

rico:DateRange

rico:normalizedDateValue

: 1913/1919

1987/1994

1917 bis 1924

fromYear, untilYear

rico:

certainty: Datiert nach Inschrift(Keine Datumsangabe)

DateRange

rico:normalizedDateValue 1917/1924

April 1987 - Oktober 2001

fromMonth, untilMonth, fromYear, untilYear

rico:DateRange

rico:

expressedDate: Keine Datumsangabe1941 (Um)

normalizedDateValue 1987-04/2001-10

01. April 1987 - 05. Oktober 2001

fromDay, untilDay, fromMonth, untilMonth, fromYear, untilYear

rico:DateRange

rico:normalizedDateValue

: 1941

rico:qualifier: Um

Dezember 1996

1987-04-01/2001-10-05

[Entre 1948 et 1949]

fromYear, untilYear

rico:DateRange

rico:normalizedDateValue 1948/1949

Beispiele mit Qualifiers & Certainties

Input

Regex Group Names

Class

Normalized Value

ca. 1970 er - 1980 er

rico:DateRange

rico:

normalizedDateValue: 1996-1211 avril 1992

expressedDate 1970 er - 1980 er

rico:qualifier ca.

1961 ou avant

rico:

SingleDate

DateRange

rico:normalizedDateValue

: 1992-04-1117-22 ottobre 1930

1961

rico:qualifier ou avant

1941 (Um)

rico:DateRange

rico:normalizedDateValue

: 1930-10-17/2201 février 1967-02 avril 1967

1941

rico:qualifier Um

Estimation de l'âge 1943

rico:DateRange

rico:normalizedDateValue

: 1967-02-01/1967-04-02Octobre-novembre 1925

1943

rico:certainty Estimation de l'âge

1930-1939, genaues Datum nicht eruierbar

rico:DateRange

rico:normalizedDateValue

: 1925-10/11

29 au 31 mars 1926

1930/1939

rico:certainty genaues Datum nicht eruierbar

1913 - 1919 (Datiert nach Inschrift)

rico:DateRange

rico:normalizedDateValue

: 1926-03-29/31

1913/1919

rico:certainty Datiert nach Inschrift