Chapitre 2 : Complet au GEDCOM

Blog Généalogie

Chapitre 2 : Complet au GEDCOM

Chapitre 2 : Complet au GEDCOM 2560 1707 Julien

Préambule

Ce chapitre est le deuxième d’une série sur le format GEDCOM. Il est nécessaire d’avoir suivi le premier (disponible ici : GEDCOM – Chapitre 1 : Initiation ) pour comprendre celui-ci. Tout au long de cet article nous utiliserons comme référence la version 5.5.1 de la norme GEDCOM. Le lien de la norme officielle est disponible ici : GEDCOM 5.5.1

Grammaire : Une question de poids

Lors du premier article, nous avons pu comprendre comment le format GEDCOM permet de représenter des structures au sein d’une hiérarchie. Ce qui nous a permis de voir comment représenter des données généalogiques.

Si pourtant elle nous permet de décrire pleinement beaucoup de choses, cette grammaire reste pour l’instant empreinte d’un défaut de taille.

En effet, imaginons un peu que nous ayons à décrire un individu qui aurait plusieurs familles :

Décrire cette structure telle qu’elle est représentée est possible avec seulement les éléments que nous avons déjà vus. Mais il faudrait décrire l’individu et toutes ses données à chaque fois qu’il apparaîtrait dans une famille. Cela rendrait l’écriture beaucoup plus lourde et redondante.

Heureusement pour nous, la norme a prévu ce cas. C’est ce que nous allons voir maintenant.

Reprenons le format d’une ligne GEDCOM :

<NIVEAU> <IDENTIFIANT*> <TAG> <VALEUR*>

Les éléments qui vont nous intéresser maintenant sont ceux que nous avions laissés de côté sur l’article précédent.

L’IDENTIFIANT

L’identifiant, comme son nom l’indique, permet d’identifier un objet, individu, famille, etc… Puis, de pouvoir référencer cet objet dans les éléments où il apparaît sans avoir besoin de le redécrire dans sa globalité.

C’est comme lorsque vous allez à la mairie, et que vous prenez un ticket numéroté pour attendre votre tour. Le numéro de votre ticket est une référence à vous. Et ainsi, lorsqu’un employé de mairie aura besoin de vous désigner il vous appellera par ce numéro.

C’est l’exact principe d’un identifiant GEDCOM : on va nommer un objet pour pouvoir, ailleurs, faire référence à cet objet plus facilement.

Pour reprendre notre analogie de la mairie : il faut forcément s’identifier au début, quand on rentre dans la mairie. Dans un fichier GEDCOM c’est la même chose, c’est lorsqu’on définit un objet que l’on va lui donner son identifiant.

Comme nous l’avons vu dans l’article précédent, la définition des objets se fait toujours au niveau 0, et le tag pour les individus est INDI. Donc si on suit le schéma de la ligne GEDCOM cela pourrait donner ça :

Ainsi, l’individu déclaré aura pour identifiant : @42@ .

La norme GEDCOM nous donne comme impératif que chaque identifiant soit composé de n’importe quelle suite de caractères alphanumériques (donc uniquement des lettres et des chiffres) commençant et se terminant par le caractère @ .

Exemples valides :

  • @42@
  • @ABC@
  • @A42BC@
  • @I42@
  • @INDI42@

Exemples invalides :

  • @42?@
  • @@
  • @@@@
  • @__@
  • @    @

La norme GEDCOM va aussi définir quels objets peuvent être identifiés ou non. Car si la grammaire permet techniquement de faire ce que l’on veut, la norme impose certaines règles.

LA VALEUR

Nous savons maintenant comment désigner simplement les objets présents dans un fichier GEDCOM. Il ne nous reste plus qu’à apprendre comment désigner ces objets lorsque nous en avons besoin.

Le champ valeur n’est pas nécessairement dédié à cet effet. En réalité, comme son nom l’indique, il sert à indiquer la valeur d’une ligne.

Par exemple, la valeur d’un patronyme :

2 NAME Jacques

Ou bien le contenu d’une note :

1 NOTE Cet individu est probablement le parrain de Jacques

Ou encore une date :

2 DATE 17 FEB 1987

Mais la valeur pourra aussi désigner un individu, via son identifiant, lorsque cela est nécessaire et valide. Pour reprendre l’exemple du début de l’article, nous pourrons ainsi définir un individu puis désigner cet individu lors de la définition d’une famille.

Dans ce morceau de GEDCOM, on peut maintenant voir que l’individu Jacques Duchamp est défini et identifié par l’identifiant @42@ . Ensuite on a une famille dont le mari est désigné par l’identifiant @42@. Donc le mari est Jacques Duchamp.

Essayons maintenant de comprendre comment définir le fait que Jacques Duchamp a eu deux conjoints (et donc deux familles) dans sa vie.

Exemple

Voilà ce que l’on veut représenter :

Et voilà maintenant son équivalent au format GEDCOM :

La taille, ça compte

Le champ valeur est donc un texte, qui peut être court (comme un patronyme) ou long. Parfois même très long. Prenons l’exemple d’une transcription d’acte, cela peut représenter un texte composé de plusieurs milliers de caractères. Cela peut engendrer, parfois, certains problèmes techniques.

La norme 5.5 du format GEDCOM nous impose donc qu’une ligne ne doit pas dépasser les 255 caractères. Et ce, tout compris : niveau, tag, espaces, valeurs, etc…

Alors comment faire lorsque notre valeur est trop grande ? C’est à ce moment qu’interviennent deux tags bien spécifiques : CONC et CONT

Contrairement aux autres tags, ceux-ci sont utilisables à n’importe quel moment du fichier pour découper une VALEUR.

Le tag CONC (pour “concaténation”) permet d’indiquer qu’une valeur ne se termine pas à la fin de la ligne et continue sur la ligne en dessous.

Le tag CONT (pour “continue”) est presque similaire mais il indique qu’un saut de ligne est présent entre les deux portions de texte.

Exemple 1 :

Essayons de le visualiser. Pour l’illustration et l’exemple nous imaginerons que la limite de la ligne est à 20 caractères. Mais la vraie limite donnée par la norme GEDCOM est bien 255 caractères.

Cette note contient 47 caractères, pour la transformer au format GEDCOM, il faudra donc découper la phrase en morceaux de 20 caractères. Ce qui, pour cet exemple, donnerait trois morceaux :

Le premier étant le tag NOTE, et chacun des rectangles violet étant des blocs CONC. Pour les hiérarchiser au format GEDCOM, rien de plus simple :

Exemple 2 :

Essayons maintenant de comprendre le tag CONT avec le même exemple mais un peu plus complet :

Nous avons vu comment découper la première ligne de cette note avec des tags CONC. Le tag CONT permet de continuer la note avec un saut de ligne. On peut donc découper le reste de la note comme ceci :

Enfin, comme précédemment, il faut hiérarchiser de la même manière qu’avec les tags CONC :

Conclusion

Voilà, vous êtes maintenant capable de décoder n’importe quel fichier GEDCOM. Si vous voulez vous entraîner vous pouvez ouvrir votre logiciel Heredis et exporter un fichier GEDCOM de taille limitée (2 ou 3 générations), ouvrir ce fichier avec un logiciel d’édition de texte simple (comme le Bloc-Note par exemple), et tenter de comprendre les informations qu’il contient.

Vous pourrez ainsi comparer le fichier GEDCOM généré avec le fichier Heredis pour bien comprendre comment sont encodées les informations. Mais attention, prenez bien soin de ne rien modifier dans un fichier GEDCOM sous peine de corrompre ce dernier et de le rendre illisible dans votre logiciel.