The GEDCOM X JSON Serialization Format

August 4, 2024 · View on GitHub

Status

This document specifies a JSON media type for the GEDCOM X Conceptual Model, and requests discussion and suggestions for improvements.

The current state of this document is as a "stable draft", and as such, the document may be subject to limited changes, BUT NOT backwards-incompatible changes, according to the discussion and suggestions for improvement.

Copyright Intellectual Reserve, Inc.

License

This document is distributed under a Creative Commons Attribution-ShareAlike license. For details, see:

http://creativecommons.org/licenses/by-sa/3.0/

Summary

The GEDCOM X JSON Serialization Format spec specifies how to represent the GEDCOM X Conceptual Model in JSON. The spec includes examples, notational conventions, top-level data types, component-level data types, JSON-specific data types, the GEDCOM X object, extensibility, and fragment identifiers.

1. Introduction

The GEDCOM X Conceptual Model is a specification of formal concepts and types that are used to provide a standard model and vocabulary for describing genealogical data.

The GEDCOM X JSON Serialization Format is a specification that defines the media type used to serialize and deserialize the GEDCOM X Conceptual Model to and from JSON.

Table Of Contents

1.1 Identifier, Version, and Dependencies

The identifier for this specification is:

http://gedcomx.org/json/v1

For convenience, the GEDCOM X JSON Format may be referred to as "GEDCOM X JSON 1.0".

The media type defined by this specification is:

application/x-gedcomx-v1+json

This specification depends on the GEDCOM X Conceptual Model specification identified by http://gedcomx.org/conceptual-model/v1.

1.2 Examples

The following example shows an instance of a GEDCOM X serialization in accordance with this specification:

{
  "attribution" : {
    "contributor" : {
      "resource" : "#GGG-GGGG"
    }
  },
  "persons" : [ {
    "names" : [ {
      "nameForms" : [ {
        "fullText" : "George Washington",
        "parts" : [ {
          "value" : "George",
          "type" : "http://gedcomx.org/Given"
        }, {
          "value" : "Washington",
          "type" : "http://gedcomx.org/Surname"
        } ]
      } ],
      "id" : "789"
    } ],
    "gender" : {
      "type" : "http://gedcomx.org/Male"
    },
    "facts" : [ {
      "type" : "http://gedcomx.org/Birth",
      "date" : {
        "original" : "February 22, 1732",
        "formal" : "+1732-02-22"
      },
      "place" : {
        "original" : "pope's creek, westmoreland, virginia, united states",
        "description" : "#888"
      },
      "id" : "123"
    }, {
      "type" : "http://gedcomx.org/Death",
      "date" : {
        "original" : "December 14, 1799",
        "formal" : "+1799-12-14T22:00:00"
      },
      "place" : {
        "original" : "mount vernon, fairfax county, virginia, united states",
        "description" : "#999"
      },
      "id" : "456"
    } ],
    "sources" : [ {
      "description" : "#EEE-EEEE"
    } ],
    "id" : "BBB-BBBB"
  }, {
    "names" : [ {
      "nameForms" : [ {
        "fullText" : "Martha Dandridge Custis",
        "parts" : [ {
          "value" : "Martha Dandridge",
          "type" : "http://gedcomx.org/Given"
        }, {
          "value" : "Custis",
          "type" : "http://gedcomx.org/Surname"
        } ]
      } ],
      "id" : "987"
    } ],
    "gender" : {
      "type" : "http://gedcomx.org/Male"
    },
    "facts" : [ {
      "type" : "http://gedcomx.org/Birth",
      "date" : {
        "original" : "June 2, 1731",
        "formal" : "+1731-06-02"
      },
      "place" : {
        "original" : "chestnut grove, new kent, virginia, united states",
        "description" : "#KKK"
      },
      "id" : "321"
    }, {
      "type" : "http://gedcomx.org/Death",
      "date" : {
        "original" : "May 22, 1802",
        "formal" : "+1802-05-22"
      },
      "place" : {
        "original" : "mount vernon, fairfax county, virginia, united states",
        "description" : "#999"
      },
      "id" : "654"
    } ],
    "sources" : [ {
      "description" : "#FFF-FFFF"
    } ],
    "id" : "CCC-CCCC"
  } ],
  "relationships" : [ {
    "facts" : [ {
      "type" : "http://gedcomx.org/Marriage",
      "date" : {
        "original" : "January 6, 1759",
        "formal" : "+1759-01-06"
      },
      "place" : {
        "original" : "White House Plantation"
      }
    } ],
    "person1" : {
      "resource" : "#BBB-BBBB"
    },
    "person2" : {
      "resource" : "#CCC-CCCC"
    },
    "sources" : [ {
      "description" : "#FFF-FFFF"
    } ],
    "id" : "DDD-DDDD"
  } ],
  "sourceDescriptions" : [ {
    "citations" : [ {
      "value" : "\"George Washington.\" Wikipedia, The Free Encyclopedia. Wikimedia Foundation, Inc. 24 October 2012."
    } ],
    "about" : "http://en.wikipedia.org/wiki/George_washington",
    "id" : "EEE-EEEE"
  }, {
    "citations" : [ {
      "value" : "\"Martha Washington.\" Wikipedia, The Free Encyclopedia. Wikimedia Foundation, Inc. 24 October 2012."
    } ],
    "about" : "http://en.wikipedia.org/wiki/Martha_washington",
    "id" : "FFF-FFFF"
  } ],
  "agents" : [ {
    "names" : [ {
      "value" : "Ryan Heaton"
    } ],
    "id" : "GGG-GGGG"
  } ],
  "places" : [ {
    "names" : [ {
      "value" : "Pope's Creek, Westmoreland, Virginia, United States"
    } ],
    "latitude" : 38.192353,
    "longitude" : -76.904069,
    "id" : "888"
  }, {
    "names" : [ {
      "value" : "Mount Vernon, Fairfax County, Virginia, United States"
    } ],
    "latitude" : 38.721144,
    "longitude" : -77.109461,
    "id" : "999"
  }, {
    "names" : [ {
      "value" : "Chestnut Grove, New Kent, Virginia, United States"
    } ],
    "latitude" : 37.518304,
    "longitude" : -76.984148,
    "id" : "KKK"
  } ]
}

1.3 Notational Conventions

1.3.1 Keywords

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC2119, as scoped to those conformance targets.

1.3.2 Data Types

For each data type specified by the GEDCOM X Conceptual Model, a JSON data format is supplied which specifies how each of the properties of the data type are to be serialized in JSON. Each instance of a data type is serialized as a JSON object. The properties of each data type are serialized as members of the JSON object.

1.4 Compliance

In addition to the compliance requirements provided by this specification, all compliance requirements provided by the GEDCOM X Conceptual Model identified by http://gedcomx.org/conceptual-model/v1 are inherited.

2. Top-Level Data Types

This section specifies JSON types for each top-level data type defined by the GEDCOM X Conceptual Model specification.

2.1 The "Person" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Person data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
privateWhether this instance of Person has been designated for limited distribution or display.privateboolean
genderThe sex of the person as assigned at birthgenderGender
namesThe names of the person.namesarray of Name
factsThe facts of the person.factsarray of Fact

examples

{

  //...the members of [Subject](#subject)/*...*/,

  "private" : false,
  "gender" : { /*...*/ },
  "names" : [ { /*...*/ }, { /*...*/ } ],
  "facts" : [ { /*...*/ }, { /*...*/ } ]
}

2.2 The "Relationship" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Relationship data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the type of the relationship.typeURI
person1Reference to the first person in the relationship.person1ResourceReference
person2Reference to the second person in the relationship.person2ResourceReference
factsThe facts about the relationship.factsarray of Fact

examples

{

  //...the members of [Subject](#subject)/*...*/,

  "type" : "http://gedcomx.org/Couple",
  "person1" : {
    "resource" : "http://identifier/for/person/1"
  },
  "person2" : {
    "resource" : "http://identifier/for/person/2"
  },
  "facts" : [ { /*...*/ }, { /*...*/ } ]
}

2.3 The "SourceDescription" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/SourceDescription data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
idThe identifier for the JSON object holding the source description data. The id attribute MUST conform to the constraints defined in Section 7, "Fragment Identifiers".idstring
resourceTypeURI identifying the type of resource being described.resourceTypeURI
citationsThe citation(s) for this source.citationsarray of SourceCitation
mediaTypeA hint about the media type of the resource being described.mediaTypestring
aboutA uniform resource identifier (URI) for the resource being described.aboutURI
mediatorA reference to the entity that mediates access to the described source.mediatorResourceReference
publisherA reference to the entity responsible for making the described source available.publisherResourceReference
authorsA list of references to the entities that authored the described source.authorsarray of ResourceReference
sourcesA list of references to any sources from which this source is derived.sourcesarray of SourceReference
analysisA reference to a document containing analysis about this source.analysisResourceReference
componentOfA reference to the source that contains this source.componentOfSourceReference
titlesThe display name(s) for this source.titlesarray of TextValue
notesA list of notes about a sourcenotesarray of Note
attributionThe attribution of this source.attributionAttribution
rightsThe rights for this resource.rightsarray of ResourceReference
coverageThe coverage of the resource.coveragearray of Coverage
descriptionsHuman-readable descriptions of this source.descriptionsarray of TextValue
identifiersA list of identifiers for the resource being described.identifiersIdentifier
createdTimestamp of when the resource being described was created.creatednumber (milliseconds since epoch)
modifiedTimestamp of when the resource being described was modified.modifiednumber (milliseconds since epoch)
publishedTimestamp of when the resource being described was published.publishednumber (milliseconds since epoch)
repositoryA reference to the repository that contains the described resource.repositoryResourceReference

examples

{
  "id" : "local_id",
  "resourceType" : "...",
  "citations" : [ { /*...*/ }, { /*...*/ } ],
  "mediaType" : "...",
  "about" : "http://identifier/for/the/source/being/described",
  "mediator" : {
    "resource" : "http://identifier/for/the/mediator/of/source/being/described"
  },
  "publisher" : {
    "resource" : "http://identifier/for/the/publisher/of/source/being/described"
  },
  "sources" : [ { /*...*/ }, { /*...*/ } ],
  "analysis" : {
    "resource" : "http://identifier/for/analysis/document"
  },
  "componentOf" : { /*...*/ },
  "titles" : [ { /*...*/ }, { /*...*/ } ],
  "notes" : [ { /*...*/ }, { /*...*/ } ],
  "attribution" : { /*...*/ },
  "rights" : [ { /*...*/ }, { /*...*/ }],
  "coverage" : [ { /*...*/ }, { /*...*/ }],
  "descriptions" : [ { /*...*/ }, { /*...*/ } ],
  "identifiers" : [ { /*...*/ }, { /*...*/ } ],
  "created" : /*...*/,
  "modified" : /*...*/,
  "published" : /*...*/,
  "repository" : {
    "resource" : "http://identifier/for/agent/of/the/repository/containing/the/resource"
  },

  //...possibility of extension elements...

}

2.4 The "Agent" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Agent data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
idAn identifier for the JSON object holding the agent data. The id attribute MUST conform to the constraints defined in Section 7, "Fragment Identifiers".idstring
identifiersIdentifiers for this agent.identifiersIdentifier
namesThe name(s) of the person or organization.namesarray of TextValue
homepageThe homepage of the person or organization.homepageResourceReference
openidThe openid of the person or organization.openidResourceReference
accountsThe online account(s) of the person or organization.accountsarray of OnlineAccount
emailsThe email address(es) of the person or organization.emailsarray of ResourceReference
phonesThe phone(s) (voice, fax, mobile) of the person or organization.phonesarray of ResourceReference
addressesThe address(es) of the person or organization.addressesarray of Address
personA reference to the person that describes this agent.personResourceReference

examples

{
  "id" : "local_id",
  "identifiers" : { /*...*/ }
  "names" : [ { /*...*/ }, { /*...*/ } ],
  "homepage" : {
    "resource" : "..."
  },
  "openid" : {
    "resource" : "..."
  },
  "accounts" : [ { /*...*/ }, { /*...*/ } ],
  "emails" : [ { "resource" : "mailto:someone@gedcomx.org" } , { "resource" : "mailto:someone@somewhere-else.org" } ],
  "phones" : [ { "resource" : "tel:+1-201-555-0123" } , { "resource" : "fax:+1-201-555-5555" } ],
  "addresses" : [ { /*...*/ }, { /*...*/ } ],
  "person" : { "resource" : "..." }

  //...possibility of extension elements...

}

2.5 The "Event" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Event data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the type of the event.typeURI
dateThe date of the event.dateDate
placeThe place of the event.placePlaceReference
rolesInformation about how persons participated in the event.rolesarray of EventRole

examples

{

  //...the members of [Subject](#subject)...,

  "type" : "http://gedcomx.org/Marriage",
  "date" : { /*...*/ },
  "place" : { /*...*/ },
  "roles" : [ { /*...*/ }, { /*...*/ } ]
}

2.6 The "Document" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Document data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the type of the document.typeURI
extractedWhether this document is to be constrained as an extracted conclusion.extractedboolean
textTypeThe type of text in the text property.textTypestring
textThe text of the document.textstring
attributionThe attribution of this document.attributionAttribution

examples

{

  //...the members of [Conclusion](#conclusion)...,

  "extracted" : false,
  "type" : "http://gedcomx.org/Analysis",
  "attribution" : { /*...*/ },
  "textType" : "plain",
  "text" : "...text of the document..."
}

2.7 The "PlaceDescription" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/PlaceDescription data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
namesA list of standardized (or normalized), fully-qualified (in terms of what is known of the applicable jurisdictional hierarchy) names for this place that are applicable to this description of this place.namesarray of TextValue
typeA uniform resource identifier (URI) identifying the type of the place as it is applicable to this description.typeURI
placeAn identifier for the place being described.placeResourceReference
jurisdictionA reference to a description of the jurisdiction of this place.jurisdictionResourceReference
latitudeAngular distance, in degrees, north or south of the Equator.latitudenumber
longitudeAngular distance, in degrees, east or west of the Prime Meridian.longitudenumber
temporalDescriptionA description of the time period to which this place description is relevant.temporalDescriptionDate
spatialDescriptionA reference to a geospatial description of this place.spatialDescriptionResourceReference

examples

{

  //...the members of [Subject](#subject)...,

  "names" : [ {
    "lang" : "en",
    "value" : "Pope's Creek, Westmoreland, Virginia, United States"
  } ,
  {
    "lang" : "zh",
    "value" : "教皇的小河,威斯特摩兰,弗吉尼亚州,美国"
  } ],
  "type" : "http://identifier/for/the/place/type",
  "place" : { "resource" : "..." },
  "jurisdiction" : { "resource" : "..." },
  "latitude" : "27.9883575",
  "latitude" : "86.9252014",
  "temporalDescription" : { /*...*/ },
  "spatialDescription" : {
    "resource" : "http://uri/for/KML/document"
  }
}

2.8 The "Group" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Group data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
namesA list of names of the group.namesarray of TextValue
dateThe date of applicability of the group.dateDate
placeThe place of applicability of the group.placePlaceReference
rolesInformation about how persons participated in the event.rolesarray of EventRole

examples

{

  //...the members of [Subject](#subject)...,

  "names" : [ {
    "lang" : "en",
    "value" : "Monticello Plantation"
  } ,
  {
    "lang" : "zh",
    "value" : "monticello种植园"
  } ],
  "date" : { /*...*/ },
  "place" : { /*...*/ },
  "roles" : [ { /*...*/ }, { /*...*/ } ]
}

examples

{

  //...the members of [Subject](#subject)...,

  "names" : [ {
    "lang" : "en",
    "value" : "Pope's Creek, Westmoreland, Virginia, United States"
  } ,
  {
    "lang" : "zh",
    "value" : "教皇的小河,威斯特摩兰,弗吉尼亚州,美国"
  } ],
  "type" : "http://identifier/for/the/place/type",
  "place" : { "resource" : "..." },
  "jurisdiction" : { "resource" : "..." },
  "latitude" : "27.9883575",
  "latitude" : "86.9252014",
  "temporalDescription" : { /*...*/ },
  "spatialDescription" : {
    "resource" : "http://uri/for/KML/document"
  }
}

3. Component-Level Data Types

This section specifies JSON types for each component-level data type defined by the conceptual model specification.

3.1 The "Identifier" Data Type

In JSON, the http://gedcomx.org/v1/Identifier data type is always serialized in the context of a set of identifiers, which is represented using a JSON object. The name of each member of the object is the identifier type. The value of each member carries the string values of the identifiers of that type. All known GEDCOM X identifier types MAY carry multiple values, so the value of the member for each known identifier type MUST be an array of strings.

Some custom identifier types MAY specify that the identifier type is "single-valued", meaning there MUST NOT be more than one value of the specified identifier type, per entity. If an identifier type is specified as a "single-valued" identifier type, the value of the member named by that identifier type MAY forgo the array and use a single string.

Since the identifier type is an OPTIONAL property, the name of the member that carries untyped identifiers SHALL be "$".

example: set of identifiers

{
  "$" : [ "value_of_untyped_identifier" ],
  "http://gedcomx.org/IdentifierType" : [ "value_of_identifier" ],
  "http://gedcomx.org/OtherIdentifierType" : [ "value_of_identifier" ],
  "http://custom.org/SingleValuedIdentifierType" : "value_of_identifier",
  ...
}

3.2 The "Attribution" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Attribution data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
contributorReference to the contributor to whom the attributed data is attributed.contributorResourceReference
modifiedTimestamp of when the attributed data was contributed.modifiednumber (milliseconds since epoch)
changeMessageA statement of why the attributed data is being provided by the contributor.changeMessagestring
creatorReference to the agent that created the attributed data. The creator MAY be different from the contributor if changes were made to the attributed data.creatorResourceReference
createdTimestamp of when the attributed data was contributed.creatednumber (milliseconds since epoch)

examples

{
  "contributor" : {
    "resource" : "http://identifier/for/contributor"
  },
  "modified" : 1338494969,
  "changeMessage" : "...change message here..."
  "creator" : {
    "resource" : "http://identifier/for/creator"
  },
  "created" : 1338394969,

  //...possibility of extension elements...

}

3.3 The "Note" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Note data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
langThe locale identifier for the note.langIETF BCP 47 locale tag
subjectA subject or title for the note.subjectstring
textThe text of the note.textstring
attributionThe attribution of this note.attributionAttribution

examples

{
  "lang" : "en",
  "subject" : "...",
  "text" : "...",
  "attribution" : { /*...*/ }

  //...possibility of extension elements...

}

3.4 The "TextValue" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/TextValue data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
langThe locale identifier for the value of the text.langIETF BCP 47 locale tag
valueThe text value.valuestring

examples

A value that can be specified as a string:

{
  "lang" : "en",
  "value" : "...text of the value..."
}

3.5 The "SourceCitation" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/SourceCitation data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
langThe locale identifier for the citation.langIETF BCP 47 locale tag
valueA rendering of the full citation as a string.valuestring

examples

{
  "lang" : "en",
  "value" : "...a rendering of the full citation as a string..."

  //...possibility of extension elements...

}

3.6 The "SourceReference" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/SourceReference data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
descriptionRefReference to a description of the source being referenced.descriptionURI
descriptionIdThe id of the target source.descriptionIdstring
attributionThe attribution of this source reference.attributionAttribution
qualifiersQualifiers for the reference, used to identify specific fragments of the source that are being referenced.qualifiersarray of Qualifier

examples

{
  "description" : "http://identifier/for/description/of/source/being/referenced",
  "descriptionId" : "...",
  "attribution" : { /*...*/ },
  "qualifiers" : [ { "name" : "http://gedcomx.org/RectangleRegion", "value" : "..." } ],

  //...possibility of extension elements...

}

3.7 The "EvidenceReference" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/EvidenceReference data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
resourceReference to the supporting data.resourceURI
attributionThe attribution of this evidence reference.attributionAttribution

examples

{
  "resource" : "http://identifier/for/data/being/referenced",
  "attribution" : { /*...*/ }

  //...possibility of extension elements...

}

3.8 The "OnlineAccount" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/OnlineAccount data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
serviceHomepageThe URI identifying the online service provider that holds the account being described.serviceHomepageResourceReference
accountNameThe name, label, or id that uniquely identifies the account maintained by the online service provider.accountNamestring

examples

{
  "serviceHomepage" : {
    "resource" : "http://familysearch.org/"
  },
  "accountName" : "..."

  //...possibility of extension elements...

}

3.9 The "Address" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Address data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
valueA full representation of the complete address.valuestring
cityThe city.citystring
countryThe country.countrystring
postalCodeThe postal code.postalCodestring
stateOrProvinceThe state or province.stateOrProvincestring
streetThe street.streetstring
street2The street (second line).street2string
street3The street (third line).street3string
street4The street (fourth line).street4string
street5The street (fifth line).street5string
street6The street (sixth line).street6string

examples

{
  "value" : "...",
  "city" : "...",
  "country" : "...",
  "postalCode" : "...",
  "stateOrProvince" : "...",
  "street" : "...",
  "street2" : "...",
  "street3" : "...",
  "street4" : "...",
  "street5" : "...",
  "street6" : "..."

  //...possibility of extension elements...

}

3.10 The "Conclusion" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Conclusion data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
idAn identifier for the JSON object holding this conclusion's data. The id attribute MUST conform to the constraints defined in Section 7, "Fragment Identifiers".idstring
langThe locale identifier for the conclusion.langIETF BCP 47 locale tag
sourcesThe list of references to sources related to this conclusion.sourcesarray of SourceReference.
analysisReference to a document containing analysis supporting this conclusion.analysisResourceReference
notesA list of notes about this conclusion.notesarray of Note
confidenceReference to a confidence level for this conclusion.confidenceURI
attributionThe attribution of this conclusion.attributionAttribution

examples

{
  "id" : "local_id",
  "lang" : "en",
  "sources" : [ { /*...*/ }, { /*...*/ } ],
  "analysis" : {
    "resource" : "http://identifier/for/analysis/document"
  },
  "notes" : [ { /*...*/ }, { /*...*/ } ],
  "confidence" : "http://gedcomx.org/High"
  "attribution" : { /*...*/ }

  //...possibility of extension elements...

}

3.11 The "Subject" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Subject data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
extractedWhether this subject is to be constrained as an extracted conclusion.extractedboolean
evidenceReferences to other subjects that support this subject.evidencearray of EvidenceReference
mediaReferences to multimedia resources for this subject, such as photos or videos.mediaarray of SourceReference
identifiersIdentifiers for this subject.identifiersIdentifier

examples

{

  //...the members of [Conclusion](#conclusion)...,

  "extracted" : false,
  "evidence" : [ { /*...*/ }, { /*...*/ } ],
  "media" : [ { /*...*/ }, { /*...*/ } ],
  "identifiers" : { /*...*/ }
}

3.12 The "Gender" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Gender data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the gender.typeURI

examples

{

  //...the members of [Conclusion](#conclusion)...,

  "type" : "http://gedcomx.org/Male"
}

3.13 The "Name" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Name data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the name type.typeURI
dateThe date of applicability of the name.dateDate
nameFormsThe name form(s) that best represents this name; representations of the same name—not name variants (i.e., not nicknames or spelling variations).nameFormsarray of NameForm

examples

{

  ...the members of [Conclusion](#conclusion)...,

  "type" : "http://gedcomx.org/BirthName",
  "date" : { /*...*/ },
  "nameForms" : [ { /*...*/ }, { /*...*/ } ]
}

3.14 The "Fact" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Fact data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the type of the fact.typeURI
dateThe date of applicability of the fact.dateDate
placeThe place of applicability of the fact.placePlaceReference
valueThe value of the fact.valuestring
qualifiersQualifiers to add additional details about the fact.qualifiersarray of Qualifier

examples

{

  //...the members of [Conclusion](#conclusion)...,

  "type" : "http://gedcomx.org/Birth",
  "date" : { /*...*/ },
  "place" : { /*...*/ },
  "value" : "...the original value of the fact...",
  "qualifiers" : [ { "name" : "http://gedcomx.org/Age", "value" : "..." } ]
}

3.15 The "EventRole" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/EventRole data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
personReference to the event participant.personResourceReference
typeURI identifying the participant's role.typeURI
detailsDetails about the role of participant in the event.detailsstring

examples

{

  //...the members of [Conclusion](#conclusion)...,

  "person" : {
    "resource" : "http://identifier/for/person/1"
  },
  "type" : "http://gedcomx.org/Witness",
  "details" : "..."
}

3.16 The "Date" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Date data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
originalThe original value of the date as supplied by the contributor.originalstring
formalThe standardized, formal representation of the date.formalGEDCOM X Date

examples

{
  "original" : "...the original text...",
  "formal" : "..."

  //...possibility of extension elements...

}

3.17 The "PlaceReference" Data Type

the JSON object used to (de)serialize the http://gedcomx.org/v1/PlaceReference data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
originalThe original place name text as supplied by the contributor.originalstring.
descriptionRefA reference to a description of this place.descriptionURI

examples

{
  "original" : "...the original text...",
  "description" : "http://identifier/of/place-description/being/referenced",

  //...possibility of extension elements...

}

3.18 The "NamePart" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/NamePart data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
typeURI identifying the type of the name part.typeURI
valueThe term(s) from the name that make up this name part.valuestring
qualifiersQualifiers to add additional semantic meaning to the name part.qualifiersarray of Qualifier

examples

{
  "type" : "http://gedcomx.org/Surname",
  "value" : "...value of the name part..."
  "qualifiers" : [ { "name" : "http://gedcomx.org/Family" }, { "name" : "http://gedcomx.org/Patronymic" } ]

  //...possibility of extension elements...

}

3.19 The "NameForm" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/NameForm data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
langThe locale identifier for the name form.langIETF BCP 47 locale tag
fullTextA full rendering of the name.fullTextstring
partsAny identified name parts from the name.partsarray of NamePart

examples

{
  "lang" : "en",
  "fullText" : "...full text of the name form...",
  "parts" : [ { /*...*/ }, { /*...*/ } ]

  //...possibility of extension elements...

}

3.20 The "Qualifier" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/Qualifier data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
nameThe name of the qualifier.nameURI
valueThe value of the qualifier.valuestring

examples

{
  "name" : "http://gedcomx.org/QualifierName",
  "value" : "..."
}

3.21 The "Coverage" Data Type

The gx:Coverage JSON type is used to (de)serialize the http://gedcomx.org/v1/Coverage data type.

properties

namedescriptionJSON memberJSON object type
spatialThe spatial (i.e., geographic) coverage.spatialPlaceReference
temporalThe temporal coverage.temporalDate

examples

{
  "spatial" : { /*...*/ },
  "temporal" : { /*...*/ }
}

3.22 The "GroupRole" Data Type

The JSON object used to (de)serialize the http://gedcomx.org/v1/GroupRole data type is defined as follows:

properties

namedescriptionJSON memberJSON object type
personReference to the group participant.personResourceReference
typeURI identifying the participant's role.typeURI
dateThe date of applicability of the role.dateDate
detailsDetails about the role of participant in the group.detailsstring

examples

{

  //...the members of [Conclusion](#conclusion)...,

  "person" : {
    "resource" : "http://identifier/for/person/1"
  },
  "type" : "...",
  "date" : { /*...*/ },
  "details" : "..."
}

4 JSON-Specific Data Types

This section describes a set of data types that are specific to the GEDCOM X JSON media type, used for the convenience of serialization.

4.1 The URI

URIs are supplied as JSON strings and are interpreted according to RFC 3986: Uniform Resource Identifier (URI): Generic Syntax.

4.2 The "ResourceReference" Data Type

The ResourceReference JSON type is used for properties that reference other resources. It uses the resource member to refer to other resources.

properties

namedescriptionJSON memberJSON object type
resourceThe URI to the resource being referenced.resourceURI

examples

{
  "resource" : "http://uri/to/resource/being/referenced"
}

4.3 The "Gedcomx" Data Type

The Gedcomx JSON type is used as a container for a set of GEDCOM X data.

properties

namedescriptionJSON memberJSON object typeconstraints
idAn identifier for the data set.idstringOPTIONAL. If provided, the id attribute MUST conform to the constraints defined in Section 7, "Fragment Identifiers".
langThe locale identifier for the data set.langIETF BCP 47 locale tagOPTIONAL. If not provided, the locale is determined per Internationalization Considerations.
attributionThe attribution of this data set.attributionAttributionOPTIONAL.
personsThe list of persons contained in the data set.personsarray of PersonOPTIONAL.
relationshipsThe list of relationships contained in the data set.relationshipsarray of RelationshipOPTIONAL.
sourceDescriptionsThe list of source descriptions contained in the data set.sourceDescriptionsarray of SourceDescriptionOPTIONAL.
agentsThe list of agents contained in the data set.agentsarray of AgentOPTIONAL.
eventsThe list of events contained in the data set.eventsarray of EventOPTIONAL.
documentsThe list of documents contained in the data set.documentsarray of DocumentOPTIONAL.
placesThe list of places contained in the data set.placesarray of PlaceDescriptionOPTIONAL.
groupsThe list of groups contained in the data set.groupsarray of GroupOPTIONAL.
descriptionReference to the description of this data set.descriptionURIOPTIONAL. If provided, MUST resolve to an instance of SourceDescription.

examples

{
  "id" : "local_id",
  "description" : "...",
  "attribution" : { /*...*/ },
  "persons" : [ { /*...*/ }, { /*...*/ } ],
  "relationships" : [ { /*...*/ }, { /*...*/ }, ],
  "sourceDescriptions" : [ { /*...*/ }, { /*...*/ } ],
  "agents" : [ { /*...*/ } , { /*...*/ } ],
  "events" : [ { /*...*/ } , { /*...*/ } ],
  "documents" : [ { /*...*/ } , { /*...*/ } ],
  "places" : [ { /*...*/ } , { /*...*/ } ],
  "groups" : [ { /*...*/ } , { /*...*/ } ],

  //...possibility of extension elements...

}

5. The GEDCOM X Object

The body of a document compliant with the GEDCOM X JSON media type MUST be an instance of the GEDCOM X Object, which is defined by an JSON object of the Gedcomx data type.

Example

The following is an example of the structure of a GEDCOM X JSON Element:

{
  "id" : "local_id",
  "attribution" : { /*...*/ },
  "persons" : [ { /*...*/ }, { /*...*/ } ],
  "relationships" : [ { /*...*/ }, { /*...*/ }, ],
  "sourceDescriptions" : [ { /*...*/ }, { /*...*/ } ],
  "agents" : [ { /*...*/ } , { /*...*/ } ],
  "events" : [ { /*...*/ } , { /*...*/ } ],
  "documents" : [ { /*...*/ } , { /*...*/ } ],
  "places" : [ { /*...*/ } , { /*...*/ } ],
  "groups" : [ { /*...*/ } , { /*...*/ } ],

  //...possibility of extension elements...

}

6. Extensibility

In accordance with the extensibility provisions of the GEDCOM X Conceptual Model, extensions MAY be provided as JSON members on data types where extensions are not explicitly prohibited.

6.1 Data Type Extensions

New data types MAY be defined as extensions to the GEDCOM X JSON Serialization Format by providing the following:

  • A conceptual data type definition as specified by the GEDCOM X Conceptual Model Section 5.1.
  • A JSON member name for each property of the data type.

Specifications that define new data types as GEDCOM X JSON extensions MUST be published and made freely available and compatible with the terms and constraints that govern the GEDCOM X JSON Serialization Format.

6.2 Known JSON Extension Members

GEDCOM X defines a set of JSON members that are explicitly associated with a data type such that GEDCOM X JSON parsers MAY interpret the members correctly if they are included as an extension member in a valid data type as defined by the conceptual model. The following members are identified:

nameJSON object type
personsarray of Person
relationshipsarray of Relationship
sourceDescriptionsarray of SourceDescription
agentsarray of Agent
eventsarray of Event
documentsarray of Document
placeDescriptionsarray of PlaceDescription
attributionarray of Attribution
notesarray of Note
sourceReferencesarray of SourceReference
gendersarray of Gender
namesarray of Name
factsarray of Fact

7. Fragment Identifiers

Fragment identifiers are used to identify specific objects (i.e. "fragments") within a JSON document. The GEDCOM X JSON serialization format specifies the use of the "id" member as the fragment identifier for any object in a given JSON document. Note that some data types explicitly define an "id" property, but the JSON serialization format allows the option of an "id" property on all objects for the purpose of identifying fragments of the JSON document. The values of all fragment identifiers within a single JSON document MUST be unique.

For more information about fragment identifiers, see RFC 3986, Section 3.5.