This is the GEDCOM X file format, as best as can be extracted from the GEDCOM X site. All the RDF and standardization parts of the GEDCOM X definition have been removed so that the data structures themselves are clearly revealed and can be discussed.
NOTE: This document is far from perfect. It needs the scrutiny and review of the primary GEDCOM X developers to see if it matches the spec. Such a review by them would be highly worthwhile, as this document was very difficult to produce from their specs, which are in places unclear, ambiguous, and incomplete.
GEDCOM X has both Elements (that begin with a lower case letter) and Data Types (that begin with an upper case letter). In some cases the same name (e.g. Person) will be defined as both an element and a data type. Despite efforts of GEDCOM X to explain the difference, it is not clear in their examples and descriptions when to use which and it is confusing. This document will not differentiate and items will be named with their lower case versions. For GEDCOM X's definition of "Types and Elements", see:
http://www.gedcomx.org/Developers-Guide.html
GEDCOM X assigns ID's to items, and defined with ID="...". Links to these ID's are through resource="...".
Anything with "..." still needs to be discovered in GEDCOM X and expanded upon.
Please comment on an appropriate discussion page. There is one for general discussion, as well as one for the various model parts, and one for each item of the model. If you want to discuss one item in the model, please make a new page for that.
In March 2012, the purpose of GEDCOM X was stated as:
- "To define an open data model and an open serialization format for exchanging the components of the genealogical proof standard."
When they talk about "the components of the genealogical proof standard," they mean these:
- Search Reliable Sources
- Cite Each Source
- Analyze Sources, Information, and Evidence
- Resolve Conflicts
- Make a Soundly-Reasoned Conclusion\\
See:
https://github.com/FamilySearch/gedcomx/issues/156#issuecomment-4848666
On August 14, 2012, the one REQUIREMENT for GEDCOM X was stated as:
- "GEDCOM X must be able to accommodate FamilySearch's Platform API."
See:
http://familysearch.github.com/gedcomx/2012/08/14/requirements.html
The Conclusion Model
Ref:
http://www.gedcomx.org/Conclusion-Model.html
Ref:
http://www.gedcomx.org/gxc.html
The Record Model:
Ref:
http://record.gedcomx.org/Record-Model.html
Conclusion/Record Distinction:
Ref:
http://record.gedcomx.org/Conclusion-Record-Distinction.html
Ref:
http://record.gedcomx.org/twomodels-whitepaper.pdf
In GEDCOMX, Conclusions link via the "source" item to the records in the Record Model. The "attribution" item contains the proof statement for conclusions. This document will includes both models.
Note that some items are named the same in the two models but are not defined the same, e.g. name, gender, relationship. To distinguish, in this document, the similar items in the record model will be suffixed by "-record".
Multimedia objects are somehow covered in the "source" item. That's not been expanded in this document.
There are three top-level records:
person - in the conclusion model,
relationship - in the conclusion model.
record - in the record model.
It likely can be argued whether there should be other top-level records that can have their own facts attached, e.g:
place - in the conclusion model
group - in the conclusion model (for a group of people, or an organization)
PERSON :=
- <person ID="XREF:PERSON">
- <<IDENTIFIER>> {0:M}
- <<LIVING>> {0:1}
- <<GENDER>> {0:1}
- <<NAME>> {0:M}
- <<FACT>> {0:M}
- <<SOURCE>> {0:M}
- <<NOTE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </person>
Ref:
http://www.gedcomx.org/gxc_el_person.html
Ref:
http://www.gedcomx.org/gxc_Person.html
RELATIONSHIP :=
- <relationship ID="XREF:RELATIONSHIP">
- <type><<RELATIONSHIP_TYPE>></type> {1:1}
- <person1 resource="XREF:PERSON" /> {1:1}
- <person2 resource="XREF:PERSON" /> {1:1}
- <<FACT>> {0:M}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </relationship>
Ref:
http://www.gedcomx.org/gxc_el_relationship.html
Ref:
http://www.gedcomx.org/gxc_Relationship.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/RelationshipType.html#values()
RELATIONSHIP_TYPE :=
- [ Couple | ParentChild | OTHER ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/RelationshipType.html
RECORD :=
- <record ID="XREF:RECORD">
- <<PERSISTENT_ID>> {0:1}
- <<ALTERNATE_ID>> {0:M}
- <source-record resource="XREF:RECORD" /> {0:M}
- <type><<RECORD_TYPE>></type> {0:1}
- <<PERSONA>> {0:M}
- <<RELATIONSHIP_RECORD>> {0:M}
- <<FACT_RECORD>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </record>
Ref:
http://record.gedcomx.org/gxr_el_record.html
Ref:
http://record.gedcomx.org/gxr_Record.html
Note: Not sure why there would be attribution here. Attribution is only for conclusions.
RECORD_TYPE :=
- [ Bank | Birth | Census | Death | Draft | Land | Legal | Marriage | Migration
- | Military | Pension | Probate | Roll | Tax | Vital | OTHER ]
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/RecordType.html
Below are the substructures of GEDCOM X that could be identified.
AGE_PART_TYPE :=
- [ Days | Hours | Minutes | Months | Years | OTHER ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/AgePartType.html
AGE_RECORD :=
- <age ID="XREF:AGE_RECORD">
- <<AGE_RECORD_PART>> {0:M}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </age>
Ref:
http://record.gedcomx.org/gxr_Name.html
AGE_RECORD_PART :=
- <part ID=XREF:AGE_RECORD_PART>
- <type><<AGE_PART_TYPE>></type> {0:1}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- </part>
http://record.gedcomx.org/gxr_Age.html
ALTERNATEID :=
- <alternateId> {1:1}
- <type>...</type> {1:1}
- <value>...</value> {1:1}
- </alternateId> {1:1}
Ref:
http://record.gedcomx.org/gxr_el_record.html
Ref:
http://record.gedcomx.org/gxr_Record.html
Ref:
http://record.gedcomx.org/gxr_Persona.html
ATTRIBUTION :=
- <attribution> {1:1}
- <modified>{datetime}</modified> {0:1}
- <proofStatement>{string}</proofStatement> {0:1}
- <confidence resource="<<CONFIDENCE_LEVEL>>" /> {0:1}
- <contributor resource="..." /> {0:1}
- </attribution> {1:1}
http://www.gedcomx.org/gx_Attribution.html
Note: Why would the proof statement appear in the Document model?
Note: Confidence is a subjective part of a conclusion.
Note: Why would the confidence appear in the Document model?
Note: Likely, only modified and contributor should be in the Document model.
CONCLUSION :=
- <conclusion ID="...">
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </conclusion>
Ref:
http://www.gedcomx.org/gxc_Conclusion.html
Note: Haven't found where this is used in the rest of the grammer yet.
CONFIDENCE_LEVEL :=
- [ Certainly | Probably | Possibly | Likely | Apparently | Perhaps | OTHER ]
Ref:
http://www.gedcomx.org/gx_confidenceLevel.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/ConfidenceLevel.html
Note: They should probably add the negatives of each, i.e. Certainly not, Probably not, etc.
DATE :=
- <date>
- <original>...</original>
- <formal resource="..." datatype="...">{string}</formal>
- </date>
Ref:
http://www.gedcomx.org/gxc_Date.html
DATE_PART_TYPE :=
- [ Days | Months | Years | OTHER ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/DatePartType.html
DATE_RECORD :=
- <date ID="XREF:DATE_RECORD">
- <<DATE_RECORD_PART>> {0:M}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </date>
Ref:
http://record.gedcomx.org/gxr_Date.html
DATE_RECORD_PART :=
- <datePart ID="XREF:DATE_RECORD_PART">
- <type><<DATE_PART_TYPE>></type> {0:1}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </datePart>
Ref:
http://record.gedcomx.org/gxr_DatePart.html
FACT :=
- <fact ID="XREF:FACT">
- <type>FACT_TYPE</type> {1:1}
- <<DATE>> {0:1}
- <<PLACE>> {0:1}
- <original>...</original> {0:1}
- <formal>...</formal> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </fact>
Ref:
http://www.gedcomx.org/gxc_el_fact.html
Ref:
http://www.gedcomx.org/gxc_Fact.html
Note: No distinction is made between events and facts. They are all called facts.
Note: That is a good thing!
FACT_RECORD :=
- <fact ID="XREF:FACT_RECORD">
- <type>FACT_TYPE</type> {1:1}
- <<DATE_RECORD>> {0:1}
- <<PLACE_RECORD>> {0:1}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <formal>...</formal> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </fact>
Ref:
http://record.gedcomx.org/gxr_Fact.html
Note: No distinction is made between events and facts. They are all called facts.
FACT_TYPE := { FACT_TYPE_PERSON | FACT_TYPE_COUPLE | FACT_TYPE_PARENT_CHILD }
Ref:
http://www.gedcomx.org/gx_factType.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/FactType.html
FACT_TYPE_PERSON :=
- [ Adoption | AdultChristening | Affiliation | Age | Baptism | BarMitzvah | BatMitzvah | Birth
- | Blessing | Burial | CasteName | Census | Christening | Circumcision | Citizenship | ClanName
- | Confirmation | CountOfChildren | CountOfMarriages | Cremation | Death | DiedBeforeEight
- | Dwelling | Emigration | Ethnicity | Excommunication | FirstCommunion | Flourish | Funeral
- | GedcomUUID | Graduation | Illness | Immigration | Interment | Living | MaritalStatus
- | MilitaryAward | MilitaryCompany | MilitaryDischarge | MilitaryRank | MilitaryRegiment
- | MilitaryService | MilitaryServiceBranch | Mission | Move | NameOfShip | Naturalization
- | Namesake | NationalId | NationalOrigin | NeverHadChildren | NeverMarried | NotAccountable
- | Occupation | Ordinance | Ordination | PhysicalDescription | PortOfDeparture | PreviousResidence
- | Probate | Possessions | Race | RelationshipToHead | ReligiousAffiliation | Residence
- | Retirement | ScholasticAchievement | SocialSecurityNumber | Stillborn | TitleOfNobility
- | TribeName | Twin | Will ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/FactType.Person.html
FACT_TYPE_COUPLE :=
- [ Annulment | CommonLawMarriage | CurrentlySpouses | Divorce | DivorceFiling | Engagement
- | Marriage | MarriageBanns | MarriageContract | MarriageIntent | MarriageLicense
- | MarriageNotice | MarriageSettlement | NumberOfChildren | Separation | UniversalId ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/FactType.Couple.html
FACT_TYPE_PARENT_CHILD :=
- [ Biological | Adopted | Step | Foster | Guardianship ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/FactType.ParentChild.html
FORMAL :=
- <formalValue resource="..." datatype="...">...</formalValue>
Ref:
http://www.gedcomx.org/gx_FormalValue.html
GENDER :=
- <gender>
- <type><<GENDER_TYPE>></type> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </gender>
Ref:
http://www.gedcomx.org/gxc_el_gender.html
Ref:
http://www.gedcomx.org/gxc_Gender.html
GENDER_RECORD :=
- <gender ID="XREF:GENDER_RECORD">
- <type><<GENDER_TYPE>></type> {0:1}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </gender>
Ref:
http://www.gedcomx.org/gxc_el_gender.html
Ref:
http://www.gedcomx.org/gxc_Gender.html
GENDER_TYPE :=
- [ Female | Male | Unknown | OTHER ]
http://www.gedcomx.org/gx_genderType.html
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/GenderType.html
IDENTIFIER :=
- <identifier>
- <type><<IDENTIFIER_TYPE>></type>
- <value>...</value>
- </identifier>
Ref:
http://www.gedcomx.org/gx_Identifier.html
IDENTIFIER_TYPE :=
- [ Primary | Forwarded | OTHER ]
Ref:
http://www.gedcomx.org/gx_identifierType.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/IdentifierType.html
LIVING :=
- <living>[ true | false ]</living> {1:1}
Ref:
http://www.gedcomx.org/gxc_Person.html
NAME :=
- <name ID="XREF:NAME">
- <type><<NAME_TYPE>></type> {0:1}
- <preferred>[ true | false ]</preferred> {0:1}
- <<NAME_FORM_PRIMARY>> {0:1}
- <<NAME_FORM_ALTERNATE>> {0:M}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </name>
Ref:
http://www.gedcomx.org/gxc_el_name.html
Ref:
http://www.gedcomx.org/gxc_Name.html
NAME_FORM_ALTERNATE :=
- <alternateForm>
- <fullText>...</fullText> {0:1}
- <<NAME_PART>> {0:M}
- </alternateForm>
Ref:
http://www.gedcomx.org/gxc_el_name.html
Ref:
http://www.gedcomx.org/gxc_NameForm.html
NAME_FORM_PRIMARY :=
- <primaryForm>
- <fullText>...</fullText> {0:1}
- <<NAME_PART>> {0:M}
- </primaryForm>
Ref:
http://www.gedcomx.org/gxc_el_name.html
Ref:
http://www.gedcomx.org/gxc_NameForm.html
NAME_PART :=
- <part>
- <type><<NAME_PART_TYPE>></type> {0:1}
- <text>...</type> {0:1}
- </part>
Ref:
http://www.gedcomx.org/gxc_el_name.html
NAME_PART_TYPE :=
- [ Given | Prefix | Suffix | Surname | OTHER ]
Ref:
http://www.gedcomx.org/gx_namePartType.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/NamePartType.html
NAME_RECORD :=
- <name ID="XREF:NAME_RECORD">
- <type><<NAME_RECORD_TYPE>></type> {0:1}
- <preferred>[ true | false ]</preferred> {0:1}
- <<NAME_RECORD_PART>> {0:M}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </name>
Ref:
http://record.gedcomx.org/gxr_Name.html
NAME_RECORD_PART :=
- <part ID=XREF:NAME_RECORD_PART>
- <type>NAME_PART_TYPE</type> {0:1}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </part>
http://record.gedcomx.org/gxr_NamePart.html
NAME_TYPE :=
- [ Adoptive | AlsoKnownAs | BirthName | DeathName | Formal | MaidenName
- | MarriedName | Name | Nickname | Religious | OTHER ]
Ref:
http://www.gedcomx.org/gx_nameType.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/NameType.html
NOTE :=
- <note ID="XREF:NOTE"> {1:1}
- <text>...</text> {0:1}
- <<ATTRIBUTION>> {0:1}
- </note> {1:1}
Ref:
http://www.gedcomx.org/gx_el_note.html
Ref:
http://www.gedcomx.org/gx_Note.html
Note: In the GEDCOM X Common Model, presumably can be added anywhere.
PERSISTENT_ID :=
- <persistentId>...</persistentId>
Ref:
http://record.gedcomx.org/gxr_Record.html
Ref:
http://record.gedcomx.org/gxr_Persona.html
PERSONA :=
- <persona principal="..." ID="XREF:PERSONA">
- <<PERSISTENT_ID>> {0:1}
- <<ALTERNATE_ID>> {0:M}
- <<GENDER_RECORD>> {0:1}
- <<AGE_RECORD>> {0:1}
- <<NAME_RECORD>> {0:M}
- <<FACT_RECORD>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </persona>
Ref:
http://record.gedcomx.org/gxr_Persona.html
Ref:
http://record.gedcomx.org/gxr_Record.html
Note: Not sure why there would be attribution here. Attribution is only for conclusions.
PLACE :=
- <place>
- <original>...</original>
- <formal resource="..." datatype="...">{string}</formal>
- </place>
Ref:
http://www.gedcomx.org/gxc_Place.html
PLACE_PART_TYPE :=
- [ Address | Cemetery | Church | City | Country | County | District
- | Hospital | Island | MilitaryBase | Mortuary | Parish | PlotNumber
- | PostalCode | PostOffice | Prison | Province | Section | Ship
- | State | Territory | Town | Township | Ward ]
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/PlacePartType.html
PLACE_RECORD :=
- <place ID="XREF:PLACE_RECORD">
- <<PLACE_RECORD_PART>> {0:M}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </place>
Ref:
http://record.gedcomx.org/gxr_Date.html
PLACE_RECORD_PART :=
- <placePart ID="XREF:PLACE_RECORD_PART">
- <type><<PLACE_PART_TYPE>></type> {0:1}
- <original>...</original> {0:1}
- <interpreted>...</interpreted> {0:1}
- <<FORMAL>> {0:1}
- <<SOURCE>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </placePart>
Ref:
http://record.gedcomx.org/gxr_PlacePart.html
RELATIONSHIP_RECORD :=
- <relationship ID="XREF:RELATIONSHIP_RECORD">
- <type><<RELATIONSHIP_TYPE>></type> {1:1}
- <person1 resource="XREF:PERSONA" /> {1:1}
- <person2 resource="XREF:PERSONA" /> {1:1}
- <<FACT_RECORD>> {0:M}
- <<ATTRIBUTION>> {0:1}
- </relationship>
Ref:
http://record.gedcomx.org/gxr_Relationship.html
RELATIONSHIP_TYPE :=
- [ Couple | ParentChild | OTHER ]
Ref:
http://www.gedcomx.org/gx_relationshipType.html
Ref:
http://www.gedcomx.org/java/apidocs/org/gedcomx/types/RelationshipType.html
SOURCE :=
- <source resource="XREF:RECORD">
- <<ATTRIBUTION>> {0:1}
- <description resource="..." /> {0:1}
- <type>...</type> {0:1}
- </source>
Ref:
http://www.gedcomx.org/gxc_el_source.html
Ref:
http://www.gedcomx.org/gxc_SourceReference.html
Note: The data type "sourcereference" seems to be the same thing as the element "source" and is being treated as the same.
Primitive types
{datetime} :=
{string} :=
Thank you for setting this up.
I'm still reading through the materials.
Do you know if there is a "research process" outline (or a similar set of assumptions) associated with GedcomX?
The one we worked on is here:
http://bettergedcom.wikispaces.com/Research+Process%2C+Evidence+%26+GPS
I'm asking in part because I'm interested and it would probably help me understand some of the objectives. Also, though, because I assume there are particular requirements behind GedcomX that are unique to FS and/or FS-like organizations that administer these large multi-user trees.
GeneJ:
Right on their home page: http://www.gedcomx.org/Home.html they state they want to support the genealogical proof standard (which I presume is through their "attribution" mechanism).
On that page, they also show off Mark Tucker's Genealogy Research Process Map, but you'll notice that they state: "Note that a model for defining research goals is not currently within the scope of the core GEDCOM X project, but it might be a good candidate for a future GEDCOM X extension."
Louis
Thank you.
I have seen their reference to Mark Tucker's map, but I had forgotten the note "... not currently within the scope ..."
From FS's perspective, I suppose their administrators aren't setting focused goals. per se.
Maybe because we considered so different viewpoints in developing it, I rather like Adrian's outline. These kinds of diagrams do seem to help keep the work grounded in genealogy, too.
Other than in "general questions" is there a place questions about the assumed process should go in our outline? --GeneJ
You've done a great job distilling out the model underneath GEDCOMX. Thanks.
Tom
Adrian
http://bettergedcom.wikispaces.com/message/view/GEDCOM+X+Framework/54954018
Reading "Two Genealogy Models" (twomodels-whitepaper.pdf), n.d. [cApril 2012], I'm led to believe someone boils down issues to two problems.
http://record.gedcomx.org/twomodels-whitepaper.pdf
The first is the lack of "a common repository of conclusions." The second problem expressed seemed to confuse a "bibliographic citation" with a reference note, so it seemed at best a badly devised "problem." [See Evidence Explained (2007), p. 820 for "citation" (including the forms thereof) and p. 819 for "bibliography."] So that brings us back to the first problem, which is bothersome to me.
Does anyone else question that the lack of a common repository of conclusions is a problem? What is the business about "a" common repository. --GeneJ
P.S. Does anyone know who collaborated on and/or authored the document? The work does refer to we, they, etc. When was it written? Where are the materials, references, documentation that support the many premise set out in the white paper? Ha! Where's the body of evidence?
Tom
Assume GedcomX originates as the API to access the yet to be public FamilySearch version of the online world tree. FamilySearch has said they want that to have a better reputation than its predessesor, but that is not necessarily saying too much as far as genealogical practices are concerned.
The whitepaper defines "modern technologies" as web services.
I've heard officials with FamilySearch say more than once that meeting 80% of users needs is a target. It is an outstanding question about how they define that 80% (and after all, they are the dictators).
I wonder if FamilySearch intends for GedcomX to much support desktop software. Maybe GedcomX mostly about getting your conclusion data into FamilySearch's online tree.
http://www.gedcomx.org/
then clicking the Community link, and from the Community page clicking the Issues link.
I have posted here a few times with opinions and questions. There's a lot of GEDCOMX's "historical thinking" available here.