Transformatie

Overzicht

De transformatielaag voert kritieke gegevenshomogenisering uit. Dit onderdeel zorgt ervoor dat gegevens uit diverse bronnen naar één gemeenschappelijk format worden omgezet en dat semantische variaties worden genormaliseerd.

Kernfunctionaliteiten

1. ABR Thesaurus Afstemming

De ABR (Archeologische Basisregistratie) thesaurus vormt de basis voor standaardisering. De transformatielaag brengt alle periodebetekeningen in kaart naar officiële ABR-termen:

Originele waarde      →    ABR Term
────────────────────     ──────────
"Bronstijd"           →    "Bronstijd" (3000-800 vC)
"Bronze Age"          →    "Bronstijd"
"Brons periode"       →    "Bronstijd"
"3000-800 vC"         →    "Bronstijd"

ABR Standaard

De ABR biedt gestandaardiseerde termen voor periodes, monumenttypen, materialen en andere archeologische concepten.

2. Spellingsnotering

Systematische correctie van spellingsfouten en inconsistenties:

from transformatie import SpellingNormalizer

normalizer = SpellingNormalizer()

# Variaties worden naar standaardspelling omgezet
normalizer.normalize("aerdewerk")  "aardewerk"
normalizer.normalize("potscherf")  "potscherf"
normalizer.normalize("grondwerken")  "grondwerken"

Ondersteuning voor Diakritische Tekens

  • Accenten: é, è, ê → e
  • Umlauts: ü, ö, ä → u, o, a
  • Aanhalingstekens: " " ' ' → "standaard

3. Harmonisering van Sleutels

Verschillende bronnen gebruiken verschillende naamgeving voor hetzelfde concept:

Bron A              Bron B              Genormaliseerd
──────              ──────              ──────────────
FIND_ID            ObjectID          object_id
GRONDWERK          Werktype          werk_type
DATUM_VONDST       DiscoveryDate     discovery_date
COORDS_X           lon               longitude
COORDS_Y           lat               latitude

4. Datumnotering

Alle datums worden naar ISO 8601-format omgezet voor consistentie:

Invoer                      Genormaliseerd
──────                      ──────────────
"03-06-2024"           →    "2024-06-03"
"June 3, 2024"         →    "2024-06-03"
"3 juni 2024"          →    "2024-06-03"
"2024-06-03T14:30:00Z" →    "2024-06-03"

Onvolledig gespecificeerde datums:

{
  "datum_exacte": null,
  "datum_jaar": 2024,
  "datum_seizoen": "zomer",
  "datum_geschatte_periode": "Vroeg Middeleeuwen"
}

5. Locatienotering

Normalisatie van coördinatensystemen en localiteitsaanduidingen:

Coördinatensystemen

from transformatie import CoordinateNormalizer

normalizer = CoordinateNormalizer()

# Alle coördinaten worden naar WGS84 (EPSG:4326) omgezet
normalizer.convert(
  x=120000, y=400000,
  from_crs="EPSG:28992"  # RD Nieuw
)  (52.3702, 4.8952)    # WGS84

Ondersteunde coördinatensystemen: - WGS84 (EPSG:4326) - standaard - RD Nieuw (EPSG:28992) - Nederlands coördinatensysteem - UTM Zone 31N (EPSG:32631) - ETRS89 (EPSG:4258)

Plaats- en Adresbeschrijvingen

{
  "plaats_omschrijving": "Waterlooplein, Amsterdam",
  "plaats_genormaliseerd": "Amsterdam",
  "gemeente": "Amsterdam",
  "provincie": "Noord-Holland",
  "land": "Nederland"
}

6. Deduplicatie

Identificatie en afhandeling van duplicaten:

Invoer records:
┌─────────────┬─────────────┬──────────────┐
 Bron A       Bron B       Bron C       
├─────────────┼─────────────┼──────────────┤
 Object 001   Artefact 47  WSTR-2024-01 
 Fragmentair  Fragment     Fragmentair  
 aardewerk    pottery      aardewerk    
 Amsterdam    Amsterdam    Amsterdam    
 52.3702,     52.37,       52.37,       
 4.8952       4.89         4.90         
└─────────────┴─────────────┴──────────────┘
                                
        └─────────┴───────────────┘
                
        Deduplicatie-analyse
                
                
        ┌──────────────────────┐
         Geconsolideerd record 
         ID: WSTR-2024-001    
         [bron geïntegreerd]  
        └──────────────────────┘

Deduplicatie Voorzichtigheid

Deduplicatie vereist zorgvuldige validatie. Foutieve deduplicatie kan tot verlies van informatie leiden. Alle consolidaties worden vastgelegd met bronverwijzingen.

Architectuur

┌─────────────────────────────────┐
│  Ruwe Data uit SingleStore       │
└────────────┬────────────────────┘
             │
             ▼
┌─────────────────────────────────┐
│  ABR Thesaurus Afstemming       │
│  (Standaardisering)             │
└────────────┬────────────────────┘
             │
             ▼
┌─────────────────────────────────┐
│  Spellingsnotering & Tekens      │
│  (Normalisatie)                 │
└────────────┬────────────────────┘
             │
             ▼
┌─────────────────────────────────┐
│  Sleutel- en Datumharmonisering │
├─────────────────────────────────┤
│  Coördinaat Transformatie       │
│  Deduplicatie                   │
└────────────┬────────────────────┘
             │
             ▼
┌─────────────────────────────────┐
│  Getransformeerde Data          │
└─────────────────────────────────┘

Configuratie

Transformatiestappen kunnen per bron worden geconfigureerd:

{
  "bron": "Amsterdam Gemeente",
  "transformatie_regels": {
    "periode": {
      "invoerkolom": "PERIODE_CODE",
      "transformatie": "abr_alignment",
      "mapping": {
        "PA": "Paleolithicum",
        "BA": "Bronstijd"
      }
    },
    "datum": {
      "invoerkolom": "VONDSTDATUM",
      "format": "DD-MM-YYYY",
      "transformatie": "iso8601_normalisatie"
    },
    "coördinaten": {
      "invoerkolonX": "X_RD",
      "invoerkolonY": "Y_RD",
      "invoer_crs": "EPSG:28992",
      "uitvoer_crs": "EPSG:4326"
    }
  }
}

Foutafhandeling

De transformatielaag registreert alle transformaties en mogelijke fouten:

Kritieke Fouten

  • Onleesbare data (geen parsering mogelijk)
  • Conflicterende waarden in deduplicatie
  • Onherkenbare coördinatensystemen

Waarschuwingen

  • Onbekende thesaurustermen
  • Potentiële spellingsfouten
  • Coördinaten buiten verwachte grenzen
  • Datums in toekomst of te ver verleden

Informatie

  • Succesvol getransformeerde records
  • Gemaakte deduplicaties
  • Geïnterpreteerde waarden

Best Practices

  • Controleer transformatieregels vóór volledige batch-verwerking
  • Test met kleine datasets eerst
  • Behoud logboeken van alle transformaties
  • Valideer het resultado na transformatie