## Gedcom

Gedcom is a standard for exchanging genealogical information in an electronic format. This is important because GenJ's core is modelled around it. That's not necessarily visible at the surface but knowing about Gedcom helps to understand why the things in GenJ work the way they do.

Generally all Gedcom information is hierarchically structured. An entity (Individual, Family, Media, Note, Source, Submitter or Repository) is comprised of a tree of properties without an inherent limit on depth or number of nodes. There's a large set of well-defined properties (like Date, Name, Sex, etc.) for each entity, each capturing values understood by all applications supporting the standard.

The Gedcom file is a simple text file with one line per property. There's no notion of closing and ending Tags (like in XML) - lines have different marked levels instead. The level is specified by a number - then follows a tag identifying the property. Here is an example of a record for an individual (different levels are textually indented for readability only):

>     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@

The power of GenealogyJ is that it allows this nested information to be edited in its hierarchical form. All defined properties are treated in a way that offers specific input for editing - no need to look at the text file. Since GenJ knows about properties which reference entities, it handles the referential integrity and allows for easy construction of relationships (like adding a child to a parent or adding a spouse to an individual). GenJ knows about the Gedcom standard and will suggest sub-properties to add to properties if desired.

The current Gedcom version supported by GenJ is 5.5. If you feel like learning more about Gedcom please feel encouraged to browse the specification - it's an ongoing effort to align GenJ as closely as possible with this standard.