Mapping gedcom to topoged - m0smith/topoged GitHub Wiki

Initialization

Before parsing the GEDCOM, do the following:

  • Create Channels
    • Source
    • HEAD Records
    • SUBM Records
    • INDI Records
    • FAM Recods
    • SOUR Records
    • TRLR Records

HEAD

HEAD Graph Diagram

Overview of HEAD

The GEDCOM file itself is considered to be a source. The information in the HEAD section will be used to create the Source Document and Place Documents corresponding to publisher and repository.

If there is a submitter (SUBM), it will be used as another repository place associated with this source.

The contributor is the Type Document for the current version of the gedcom importer.

Channels for Head

  • Input Channels
    • HEAD Records
  • Output Channels
    • Source

Graph Element for HEAD

  • Media Document

    • media.type = gedcom
  • Create Source Document S

    • source.media = :gedcom
    • contributor.date =
    • source.medium :web
    • HEAD.DEST => media.destination
    • HEAD.DATE => source.date
    • HEAD.SOUR => source.publisher
    • HEAD.SOUR.VERS => publisher.version
    • HEAD.SOUR.NAME => source.publisher (replace the HEAD.SOUR)
    • HEAD.SOUR.CORP => publisher.name
    • HEAD.SOUR.CORP.ADDR => publisher.address
    • HEAD.SOUR.DATA.DATE => source.date
    • HEAD.SOUR.DATA.DATE.TIME => apply to source.date
    • HEAD.FILE => source.title
    • HEAD.DATE => source.accessedDate
    • HEAD.DATE.TIME => apply to source.accessedDate
    • HEAD.GEDC
    • HEAD.GEDC.VERS => media.version
    • HEAD.GEDC.FORM => media.form
    • HEAD.CHAR => media.charset
    • HEAD.SUBM -

SUBM

SUBM Graph Diagram

Channels for Head

  • Input Channels
    • SUBM Records
    • Source

Data Graph for SUBM

Use for additional details on the source S.

  • SUBM.NAME => source.author
  • SUBM.ADDR => place.address
  • SUBM.COMM => place.notes
  • SUBM.PHONE => place.phone
  • SUBM._EMAIL => place.email
  • SUBM.DEST => media.destination

INDI

INDI Graph Diagram

An INDI recored is mapped to a Persona Document which is then used as the basis of an Individual Document through a Conclusion Document with a rational of "member". All of the attributes will be add to both the Persona and Individual documents. All the events (birth, death, christening, etc) will be created as Event Documents, one for each event, the place and date are linked to the event. If there are sources mentioned in the INDI record, each source will become a new Persona Document with corresponding Conclusions to combine the personas to the individual.

  • Create Persona Document persona

    • INDI.NAME =>
      • persona.name
      • persona.attribute.value (type=name)
    • INDI.NAME.GIVN => persona.attribute.value (type=given-name)
    • INDI.NAME.SURN => persona.attribute.value (type=surname)
    • INDI.NAME.NSFX => persona.attribute.value (type=suffix)
    • INDI.TITL => persona.attribute.value (type=title)
    • INDI.SEX => persona.attribute.value (type=gender)
    • INDI.BIRT - persona.event (type=birth)
    • INDI.BIRT.DATE => persona.event.attribute.value (type=date)
    • INDI.BIRT.PLAC => persona.event.attribute.value (type=place)
    • INDI.BIRT.NOTE => persona.event.notes
    • INDI.CHR -persona.event (type=christening)
    • INDI.CHR.DATE => persona.event.attribute.value (type=date)
    • INDI.CHR.PLAC => persona.event.attribute.value (type=place)
    • INDI.CHR.NOTE => persona.event.notes
    • INDI.DEAT - persona.event (type=death)
    • INDI.DEAT.DATE => persona.event.attribute.value (type=date)
    • INDI.DEAT.PLAC => persona.event.attribute.value (type=place)
    • INDI.DEAT.NOTE => persona.event.notes
    • INDI.BURI - persona.event (type=burial)
    • INDI.BURI.DATE => persona.event.attribute.value (type=date)
    • INDI.BURI.PLAC => persona.event.attribute.value (type=place)
    • INDI.BURI.NOTE => persona.event.notes
    • INDI.SOUR

FAM

Evidence

FAM Evidence Graph Diagram

Conclusion

FAM Conclusion Graph Diagram

For each FAM create a Group Document. If there is not a source, use the Persona Document for the INDI records and use the GEDCOM as the source.

If there is a source, create a new Persona Document for each person in the FAM record and create a Conclusion Document for each, combining them with the INDI Persona Document.

  • Create a Group Document

    • FAM.HUSB => edge from group to persona with label parent and order=0
    • FAM.WIFE => edge from group to persona with label parent and order=1
    • FAM.CHIL => edge from group to persona with label child and order starting at 0 and incerementing for each instance.
    • FAM.MARR => create group.event with type=marriage
    • FAM.MARR.DATE => group.event.attribute.value (type=date)
    • FAM.MARR.PLAC => group.event.attribute.value (type=date)
    • FAM.DIV => create group.event with type=marriage

SOUR

Use as the basis of a Source Document and any other related documents as needed.

  • Using the refenced S2

    • SOUR.TITL => S2 :name
    • SOUR.ABBR => S2 :abbreviation
    • SOUR.AUTH => S2 :author
    • SOUR.PUBL => S2 :publisher
    • SOUR._PAREN => S2 :parentheses
    • S :city
    • S :accessedDate

TRLR

Ignored

⚠️ **GitHub.com Fallback** ⚠️