## Le Format Gedcom

Gedcom est une norme dans le monde de l'informatique, permettant l'échange d'informations généalogiques. Cette norme ressemble à la norme XML dans sa structure. Elle est définie selon un modèle arborescent.

Généralement toute information Gedcom est structurée de manière hiérarchique. Une entité (comme un Individu, une Famille, une Note) a plusieurs propriétés qui, à leur tour peuvent avoir eux-mêmes plusieurs autres propriétés (ici le mot "propriété" doit être pris dans le sens "objet", "élément"). Il y a une limitation au nombre de niveaux, c'est 99, donc autant dire que dans la pratique cette limite n'est jamais atteinte. En plus des propriété standards (Date, Nom, Sexe, etc.) vous pouvez ajouter vos propres propriétés pour répondre à vos besoins personnels, cependant, attention, créer des propriétés propres, va à l'encontre du format universel. Il est vivement découragé de faire de la sorte. Si vous devez quand même créer vos propres balises, vous devez les faire débuter par ce qu'on appelle un "underscore", exemple : "_EMAIL" et sa longueur ne doit pas dépasser 15 caractères

Gedcom ne possède pas la notion d'étiquettes (de balises) de fermeture et d'arrêt (comme le format XML) au sens strict du terme, il utilise des lignes ayant un découpage différent. Ce découpage est définie par un nombre entier qui est suivi d'une étiquette définissant le type de propriété. On pourrait dire qu'une ligne commence par un niveau hièrarchique, se poursuit par une balise, et se termine par un retour ligne (elle-même pouvant être considérée comme une balise implicite de fermeture).
Ci-dessous se trouve un exemple (les sous-propriétés sont mis en retrait dans la présentation, seulement pour une meilleure lisibilité) :

    0 INDI @I001@
      1 NAME Nils /Meier/
      1 SEX M
      1 BIRT
        2 DATE 25 May 1970
        2 PLAC Rendsburg, Germany
      1 GRAD
        2 DATE 10 Dec 1996
        2 PLAC Friedrich Wilhelm University Bonn
        2 TYPE Diplom Informatiker
      1 RESI
        2 DATE FROM Jul 1999 TO DEC 2000
        2 ADDR 202-1241 Kilborn Place
          3 CONT Ontario, Canada
          3 CITY Ottawa
          3 POST K1H1A5
      1 NOTE @N003@

Certaines propriétés ont un format spécifique du fait des données qu'elles contiennent (par exemple Nom /Prénom/). D'autres propriétés renvoient à d'autres entités - ici la propriété NOTE renvoie par un lien à une note dans le même fichier Gedcom.

La puissance de GenealogyJ est due au fait qu'il permet d'éditer des informations organisées en "poupées russes" avec une vue qu'on pourrait qualifier de hiérarchique. De la même manière toutes les propriétés connues sont traités de façon spécifique permettant l'édition grâce à des masques de saisie dédiés. Puisque GenJ connait les attributs qui référencent d'autres entités, il gère également l'intégrité référentielle.

L'utilisateur peut définir de nouvelles propriétés pour des besoins particuliers. Une grande attention doit cependant être apportée à leur conception car un écart par rapport à la norme Gedcom peut rendre les données entrées difficile à interpréter. Comme indiqué dans le paragraphe traitant des Rapports (scripts utilisant les données contenues dans le fichier Gedcom) elles peuvent (ces propriétés) être écrites par quelqu'un qui posséde un SDK (Standard Development Kit) Java à l'aide de l'infrastructure que GenJ fournit.
Mais si chaque utilisateur final bâtit sa propre structure l'information est difficile à retrouver - par exemple : est-ce que la propriété-ADDR est une adresse ou quelqu'un a vécu un jour, ou est-ce son adresse actuelle ? Gedcom propose l'événement RESI à cette fin : il décrit l'événement de demeurer à un certain endroit pendant un certain temps (voir ci-dessus).
GenJ connait la norme Gedcom et proposera des sous-attributs à ajouter aux attributs. Nous discuterons ceci plus en détail dans le paragraphe sur les différentes Entités supportées.

Dans le futur on peut s'attendre à une nouvelle norme (probablement en XML) destinée à gérer et conserver les informations généalogiques. Mais la mise en place d'une nouvelle norme internationale n'est pas une chose facile. Aussi nous devons essayer de coller le plus près possible à la norme Gedcom. Si on veut le dire autrement : le passage à la nouvelle norme sera plus facile si nous adhérons à une base commune dès maintenant.

La version Gedcom actuellement supportée par GenJ est la 5.5. Si vous souhaitez en apprendre plus sur le format Gedcom, vous êtes fortement encouragé à parcourir les spécifications - C'est un effort continuel de maintenir GenJ aussi proche que possible de ce standard.