Centurial en de GEDCOM

zaterdag 5 januari 2019 door Fouke Boss, vertaling door Marc Engel.

Een belangrijke nieuwe functie van Centurial - vanaf versies 1.7 en 1.8 - is de ondersteuning voor GEDCOM. De specificatie voor GEDCOM is echter meer dan 20 jaar oud en kan niet erg evidence-based worden genoemd. Deze blog geeft de ontwerpprincipes weer voor de implementatie van GEDCOM-ondersteuning in Centurial.

Het GEDCOM-formaat

De eerste versie van GEDCOM werd geïntroduceerd in 1984 en heeft zich op een wonderbaarlijke manier ontwikkeld tot de industriestandaard voor het uitwisselen van genealogische informatie tussen softwareapplicaties. De meest recente versie van de GEDCOM-specificatie, v5.5.1, vierde zijn 20e verjaardag aan het einde van 2019. In zijn basisvorm is het GEDCOM-formaat vrij eenvoudig. Dit is bijvoorbeeld een kort fragment van de manier waarop een persoon wordt gedefinieerd in GEDCOM:

0 @I1@ INDI
1 NAME Vincent Willem /Van Gogh/
2 SURN Van Gogh
2 GIVN Vincent Willem
1 SEX M
1 BIRT
2 DATE 30 MAR 1853
2 PLAC Zundert, Nederland
1 DEAT
2 DATE 29 JUL 1890
2 PLAC Auvers-sur-Oise, Frankrijk
1 BURI
2 DATE 30 JUL 1890
2 PLAC Auvers-sur-Oise, Frankrijk
1 OCCU painter

Toen ik begon met het implementeren van GEDCOM-ondersteuning voor Centurial, kwam ik er al snel achter dat het werken met GEDCOM-bestanden veel, soms zeer intrigerende details met zich meebrengt. GEDCOM-bestanden kunnen bijvoorbeeld op allerlei verschillende manieren worden gecodeerd. En het blijkt dat er veel versies van de GEDCOM-specificatie zijn, en nog meer softwaretoepassingen die deze specificaties implementeren, elk met hun eigen unieke versie ervan.

Uiteindelijk besloot ik de GEDCOM-import in Centurial te beperken tot de specificaties van GEDCOM-versies 5.5 (1996) en 5.5.1 (1999). Ten eerste bestaan deze versies al 20 jaar, dus de meeste software leveranciers implementeren al een van deze 2 versies. En er bestaan ook enkele tools die oudere versies van GEDCOM kunnen omzetten naar versie 5.5 of 5.5.1. Op deze manier kan Centurial bijna elk onderzoek uit een GEDCOM-bestand importeren.

Voor export ondersteunt Centurial alleen GEDCOM v5.5.1.

Verschillen tussen gegevensmodellen van GEDCOM en Centurial

GEDCOM hanteert een vrij uitgebreid datamodel voor genealogische gegevens. Ik realiseerde me al snel dat veel genealogische softwaretoepassingen hun datamodel volledig baseren op het GEDCOM-datamodel. GEDCOM definieert een geboortedatum als een eigendom van een persoon? Dat doet de software ook. GEDCOM definieert een 'testament' gebeurtenis? Dat geldt ook voor de software. GEDCOM komt met een 'circa' datum op de proppen? Dan doet de software dat ook, zelfs als een 'circa' datum niet eenduidig gedefinieerd is. (als een kanttekening: kan iemand me vertellen of 1 januari 1533 deel uitmaakt van 'ABT 1532'? En zo ja, hoe zit het met 1 januari? 1540?).

Sommige van die softwaretoepassingen maken echt gebruik van een één-op-één implementatie van GEDCOM. Ze zijn misschien meer wat je een GEDCOM-editor zou kunnen noemen dan een genealogietoepassing. Sommigen ervan zijn zeer geavanceerd, zeer gemakkelijk te gebruiken en werken mooi. Ik zou ze iedereen aanbevelen. Als je een GEDCOM-editor nodig hebt, welteverstaan.

Voor deze GEDCOM-editors is het belangrijk dat wanneer een project wordt geëxporteerd naar GEDCOM en vervolgens opnieuw wordt geïmporteerd, het resulterende project exact hetzelfde is als het oorspronkelijke project. En waarom ook niet? Wanneer het gegevensmodel exact hetzelfde is als de GEDCOM-specificatie, kan elk detail van de gegevens worden overgedragen naar GEDCOM en vice versa.

GEDCOM is gebaseerd op conclusies

Centurial heeft een eigen datamodel. Op sommige gebieden, zoals het beheer van bronnen en citaten, is GEDCOM veel minder gedetailleerd dan Centurial, met name omdat het op conclusies is gebaseerd. Dit geldt vooral daar waar het gaat om het terug volgen van conclusies naar beweringen en bewijs. Hoewel GEDCOM toestaat dat voor veel entiteiten en eigenschappen de bronverwijzingen worden opgegeven, doet het dit niet voor iedereen. Bijvoorbeeld:

  • Met GEDCOM kunnen bronverwijzingen alleen worden opgegeven voor de combinatie van namen van een persoon. Maar wat als bron 1 de juiste voornaam van een persoon bevat, terwijl bron 2 de juiste familienaam bevat? Er is geen manier om deze nuance in GEDCOM op te nemen.
  • Voor sommige eigenschappen staat GEDCOM helemaal geen bronverwijzingen toe. Er is bijvoorbeeld geen manier om het bewijs voor het geslacht van een individu te specificeren.
  • En wat als bron 1 aangeeft dat personen A en B partners zijn, terwijl bron 2 aangeeft dat persoon C een kind is van A en B? In GEDCOM kan alleen de conclusie worden overgedragen dat personen A en B een gezin met kind C zijn. Er is geen directe manier om alle verschillende bronnen voor elk van deze gedeeltelijke relaties te specificeren.

Doelen

GEDCOM is uitbreidbaar. Sommigen van de softwarepakketten die het aandurven gedetailleerder te zijn dan GEDCOM, breiden dit dan ook uit om alle rijkdom van hun gegevensmodel in hun GEDCOM-export op te kunnen nemen. Op die manier, wanneer die GEDCOM vervolgens opnieuw wordt geïmporteerd, is het resulterende project nog steeds precies hetzelfde als het oorspronkelijke project.

Voor Centurial besloot ik niet die kant op te gaan. Het is op zichzelf geen doel om ervoor te zorgen dat een geëxporteerd-dan-geïmporteerd project een exacte kopie is van het oorspronkelijke project. In plaats daarvan wilde ik voldoen aan deze 3 doelen:

  1. Wanneer een gebruiker veel moeite heeft gedaan om bronnen en citaten toe te voegen aan een GEDCOM-project, wil Centurial de mogelijkheid bieden om deze bronnen en citaten zo goed mogelijk te importeren. Vanaf Centurial v1.8 biedt Centurial import als een project aan.
  2. Wanneer een gebruiker een onderzoeksproject in Centurial heeft gemaakt en onderzoek van een andere genealoog uit een GEDCOM-bestand wil importeren, biedt Centurial import aan als bron aan, beschikbaar bij Centurial v1.7. Deze functie verwerkt alle informatie in de GEDCOM als afkomstig van één enkele bron: het GEDCOM-bestand zelf.
  3. Een gebruiker kan alle informatie in een Centurial-project exporteren naar GEDCOM, hetzij voor migratie naar een andere genealogische toepassing of voor het genereren van rapporten en diagrammen met behulp van andere software.

Ontwerpprincipes

Op basis van deze doelen kwam ik tot de volgende ontwerpprincipes:

  1. Centurial omarmt GEDCOM als een eigen indeling, inclusief de voor- en nadelen.
  2. Centurial ondersteunt GEDCOM-specificatie v5.5 en v5.5.1 voor import.
  3. Centurial ondersteunt GEDCOM-specificatie v5.5.1 voor export.
  4. Het is de verantwoordelijkheid van Centurial om de import van en de export naar GEDCOM op de best mogelijke uit te voeren, ook al kan dat - vanwege de verschillen in het datamodel - het nooit perfect worden gedaan.
  5. Tijdens het importeren mag Centurial applicatie-specifieke GEDCOM-extensies lezen om de gegevens op de best mogelijke manier te importeren.
  6. Tijdens de export gebruikt Centurial geen Centurial-specifieke tags in de GEDCOM, waarmee wordt benadrukt dat alleen het generieke deel van de GEDCOM-specificatie wordt ondersteund door andere softwaretoepassingen.
  7. Het is op zichzelf geen doel om de import-export-cirkel perfect uit te voeren. Centurial zal dit echter zo goed mogelijk proberen uit te voeren.

Implementatie van import

Het specificeren van een bron voor een conclusie is een ingewikkelde aangelegenheid in de meeste softwaretoepassingen, en zelfs als een gebruiker veel moeite heeft gedaan om dit te doen, zal het nog steeds niet volledig mogelijk zijn om alle bronnen te specificeren vanwege de beperkingen van de GEDCOM-specificatie zoals hierboven vermeld. Daarom zal er altijd informatie in een GEDCOM zijn die niet aan een bron kan worden toegeschreven.

Om dit te verhelpen maakt Centurial altijd een afzonderlijke bron voor de geïmporteerde GEDCOM zelf. Als een GEDCOM n bronverwijzingen bevat, heeft het geïmporteerde Centurial-bestand (n + 1) bronnen. Deze aanvullende bron bevat elke bewering waarvoor geen bronvermelding is opgegeven.

Implementatie van export

Tijdens de export naar GEDCOM, zal Centurial zowel de conclusies als het bewijs waarop het was gebaseerd exporteren. Waar van toepassing geeft Centurial de bron voor elke waarde aan.

Als bron 1 bijvoorbeeld de naam 'Vincent van Gogh' vermeldt, bronnen 2 en 3 'Vincent Willem van Gogh' en de gebruiker concludeert dat 'Vincent Willem van Gogh' de meest waarschijnlijke volledige naam is, exporteert Centurial 2 namen voor deze persoon: 'Vincent Willem van Gogh' eerst, want het is ook de conclusie, inclusief 2 bronvermeldingen. En 'Vincent van Gogh' als tweede, met één bronvermelding erbij. Op deze manier worden alle beschikbare gegevens geëxporteerd.

Ruimte voor toekomstige verbetering

De import van en export naar GEDCOM in Centurial zal altijd een zo goed mogelijke benadering blijven, hetgeen betekent dat er altijd ruimte voor verbetering is. Speel met de import/export-mogelijkheden en neem contact op als u suggesties hebt!

;