diff --git a/.github/workflows/generate-files.yml b/.github/workflows/generate-files.yml index 5d9df582..8dbda47a 100644 --- a/.github/workflows/generate-files.yml +++ b/.github/workflows/generate-files.yml @@ -27,7 +27,7 @@ jobs: steps: - name: Check out GEDCOM - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Get the branch name id: extract_branch diff --git a/.github/workflows/propagate-main-to-v7.1.yml b/.github/workflows/propagate-main-to-v7.1.yml index b8511b05..b17d02bc 100644 --- a/.github/workflows/propagate-main-to-v7.1.yml +++ b/.github/workflows/propagate-main-to-v7.1.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Check out GEDCOM - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Set git config env: diff --git a/.github/workflows/validate-yaml.yml b/.github/workflows/validate-yaml.yml index 575f227c..70e2fb92 100644 --- a/.github/workflows/validate-yaml.yml +++ b/.github/workflows/validate-yaml.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout GEDCOM - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Validate YAML run: yamllint . diff --git a/LICENSE b/LICENSE index 8aae145c..2455ff08 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 1984-2025 Intellectual Reserve, Inc. All rights reserved. A service provided by The Church of Jesus Christ of Latter-day Saints. + Copyright 1984-2026 Intellectual Reserve, Inc. All rights reserved. A service provided by The Church of Jesus Christ of Latter-day Saints. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/NOTICE b/NOTICE index d3423d84..576452cf 100644 --- a/NOTICE +++ b/NOTICE @@ -1,7 +1,7 @@ NOTICE: This work comprises, is based on, or is derived from the FAMILYSEARCH GEDCOM™ -Specification, © 1984-2025 Intellectual Reserve, Inc. All rights reserved. +Specification, © 1984-2026 Intellectual Reserve, Inc. All rights reserved. "FAMILYSEARCH GEDCOM™" and "FAMILYSEARCH®" are trademarks of Intellectual Reserve, Inc. and may not be used except as allowed by the Apache 2.0 license diff --git a/build/hyperlink-code.py b/build/hyperlink-code.py index e9fca01d..d8baaf7c 100644 --- a/build/hyperlink-code.py +++ b/build/hyperlink-code.py @@ -44,7 +44,6 @@ def anchorify(m): return full doc = re.sub(r'(g7:[^<]*)\1(g7.1:[^<]*)\1]*ged(?:struct|com)[^>]*>.*?)', doc, flags=re.DOTALL) diff --git a/build/hyperlink.py b/build/hyperlink.py index 1fe7a24e..4dd9abf4 100644 --- a/build/hyperlink.py +++ b/build/hyperlink.py @@ -20,10 +20,6 @@ def slugify(bit): si = bit.rfind('`g7:')+4 ei = bit.find('`', si) slug = bit[si:ei].replace('#','-') - elif '`g7.1:' in bit: - si = bit.rfind('`g7.1:')+6 - ei = bit.find('`', si) - slug = bit[si:ei].replace('#','-') elif '`' in bit: bit = re.search('`[A-Z0-9_`.]+`', bit) slug = bit.group(0).replace('`','').replace('.','-') @@ -91,7 +87,7 @@ def abnf(m): slug = table_tags[m.group(1)] return linkify(m.group(0), slug) return m.group(0) - uried = re.sub(r'(?]+)', txt): - assert prefix_of.get(slug,pfx) == pfx, f"Multiple prefixes for {slug}: {prefix_of[slug]} and {pfx}" - prefix_of[slug] = pfx - def addpfx(tag): - if tag in prefix_of: return prefix_of[tag]+':'+tag - if '-' in tag: - lead = tag[:tag.find('-')+1] - if lead in prefix_of: return prefix_of[lead]+':'+tag - assert False, 'no prefix for '+tag+' in '+str(prefix_of) dtypes = find_data_types(txt, g7) rules = parse_rules(txt) ssp = parse_gedstruct(txt, rules, dtypes) @@ -398,7 +372,7 @@ def addpfx(tag): enums, calendars = find_cat_tables(txt, g7, tagsets) find_enum_by_link(txt, enums, tagsets) for k in enums: - g7[k[k.find(':')+1:]] = ('enumeration set',[]) + g7[k[3:]] = ('enumeration set',[]) enumsets = find_enumsets(txt) find_calendars(txt, g7) dtypes_inv = {expand_prefix(v,prefixes):k for k,v in dtypes.items()} @@ -411,19 +385,17 @@ def addpfx(tag): for tag in g7: print('outputting', tag, '...', end=' ') - prerelease = False maybe = join(dirname(specs[0]),'terms',tag) if exists(maybe): copyfile(maybe, join(dest,tag)) print('by copying', maybe, '...', end=' ') continue - thispath = join(dest,tag.replace('#','-')) - with open(thispath, 'w') as fh: + with open(join(dest,tag.replace('#','-')), 'w') as fh: fh.write('%YAML 1.2\n---\n') print('lang: en-US', file=fh) print('\ntype:',g7[tag][0], file=fh) - uri = expand_prefix(addpfx(tag),prefixes) + uri = expand_prefix('g7:'+tag,prefixes) print('\nuri:', uri, file=fh) if g7[tag][0] in ('structure', 'enumeration', 'calendar', 'month'): @@ -452,7 +424,7 @@ def addpfx(tag): print('\npayload:', payload, file=fh) payload_lookup.append([uri, payload if payload != 'null' else '']) if d['pay'] and 'Enum' in d['pay']: - setname = expand_prefix(enumsets[addpfx(tag)],prefixes) + setname = expand_prefix(enumsets['g7:'+tag],prefixes) print('\nenumeration set: "'+setname+'"', file=fh) enum_lookup.append([uri,setname]) # print('\nenumeration values:', file=fh) @@ -478,7 +450,7 @@ def addpfx(tag): struct_lookup.append(['',ptag,uri]) elif g7[tag][0] == 'calendar': print('\nmonths:', file=fh) - for k in calendars[addpfx(tag)]: + for k in calendars['g7:'+tag]: print(' - "'+expand_prefix(k, prefixes)+'"', file=fh) if len(g7[tag][2]) == 0: print('\nepochs: []', file=fh) @@ -488,11 +460,11 @@ def addpfx(tag): print(' -', epoch, file=fh) elif g7[tag][0] == 'month': print('\ncalendars:', file=fh) - for k in calendars[addpfx(tag)]: + for k in calendars['g7:'+tag]: print(' - "'+expand_prefix(k, prefixes)+'"', file=fh) elif g7[tag][0] == 'enumeration set': print('\nenumeration values:', file=fh) - for k in enums[addpfx(tag)]: + for k in enums['g7:'+tag]: valname = expand_prefix(k, prefixes) print(' - "'+valname+'"', file=fh) enumset_lookup.append([uri, valname]) @@ -501,20 +473,11 @@ def addpfx(tag): # handle use in enumerations (which can include any tag type) is_used_by = False for tag2 in sorted(enums): - if (addpfx(tag)) in enums[tag2]: + if ('g7:'+tag) in enums[tag2]: if not is_used_by: print('\nvalue of:', file=fh) is_used_by = True print(' - "'+expand_prefix(tag2,prefixes)+'"', file=fh) - - if prerelease: - print('\nprerelease: true', file=fh) - - # manually check for v7.1 subsuming v7.0 - if '/v7.1/' in uri: - res = run(['git','show','main:'+thispath], capture_output=True) - if not res.returncode: - print('\nsubsumes:', uri.replace('/v7.1/','/v7/'), file=fh) print('\ncontact: "https://gedcom.io/community/"', file=fh) fh.write('...\n') @@ -542,4 +505,3 @@ def addpfx(tag): for row in data: print('\t'.join(row), file=f) print('done') - diff --git a/changelog.md b/changelog.md index af0df457..a49c3037 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,50 @@ +# Version 7.0.18 + +- Fixed typo in the ABNF for the Longitude data type introduced in 7.0.17. Because ABNF is machine-readable, this typo caused some applications using 7.0.17 to fail to parse valid data. 7.0.17 should not be used by applications utilizing the ABNF in the specification in their tooling. + +# Version 7.0.17 + +- Add URI, Latitude, Longitude, and Tag definition data types. + + Previously the formats permitted for these were specified in plain text with the corresponding structure types. + Those definitions have been moved to the data types section to better match how other data types are defined in the specification. + +- Clarify the deprecation of older extensions that use non-underscore tags. + + These violated the standard in both 7.0 and 5.5.1, but exist in the wild and there was unclear text "deprecating" them when they were never supported to begin with. That has been changed to be more clear about when it is an extension-defined substructure and when it violates the specification. + +- Clarify how file paths encode non-ASCII characters. + +- Clarify rules for pointer-based cycles: + + - A cycle asserting someone is their own ancestor (such as being both the `CHIL` and `FAMS` of the same person) is unlikely to be correct, but is permitted by GEDCOM. + + - A self-referential `ALIA` is (`INDI`.`AILA` pointing to the `INDI`) is meaningless and prohibited. + + - A `SOUR`-`OBJE` cycle (the source of an image is the image itself) is meaningless and prohibited. + +- Clarify that extension media types for notes (such as `text/markdown` that several applications are known to employ) do not require extension tags, being covered by the existing standard. + +- Clarify the wording of the `ELECTRONIC` enumerated value. + +- Clarify the wording of the `AGE` structure generally and `HUSB`.`AGE` and `WIFE`.`AGE` in particular. + +- Add example of `PHRASE` used with a non-`OTHER` enumeration value. + +- Update UUID defintion from RFC 4122 to RFC 9562 + +- Remove redundant and confusing references to RFC 3986, which were subsumed by existing references to WHATWG URL. + +- Note that `FILE` payloads and GEDZIP file paths follow distinct standards, with the former using percent-escaping but the latter not. + +- Note that GEDZIP inherits from zip the ability to have multiple levels of compression, with some suggestions on performance implications of the chosen compression level. + +- Note that GEDZIP inherits from zip the ability to encrypt file contents, but not file names or sizes. + +- Note how `ALIA` is known to be used by existing applications and users. + +- Various typo corrections. + # Version 7.0.16 - Recommend that `ASSO` not be used to replicate other standard structures. diff --git a/specification/gedcom-0-introduction.md b/specification/gedcom-0-introduction.md index 161c21c6..dcbe4769 100644 --- a/specification/gedcom-0-introduction.md +++ b/specification/gedcom-0-introduction.md @@ -1,10 +1,10 @@ --- title: The FamilySearch GEDCOM Specification -subtitle: 7.0.16 +subtitle: 7.0.18 email: GEDCOM@FamilySearch.org copyright: | :::{style="page-break-after: always;page-break-before: always;"} - Copyright 1984–2025 Intellectual Reserve, Inc. All rights reserved. A service provided by The Church of Jesus Christ of Latter-day Saints. + Copyright 1984–2026 Intellectual Reserve, Inc. All rights reserved. A service provided by The Church of Jesus Christ of Latter-day Saints. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ copyright: | > NOTICE: > - > This work comprises, is based on, or is derived from the FAMILYSEARCH GEDCOM™ Specification, © 1984-2025 Intellectual Reserve, Inc. All rights reserved. + > This work comprises, is based on, or is derived from the FAMILYSEARCH GEDCOM™ Specification, © 1984-2026 Intellectual Reserve, Inc. All rights reserved. > > "FAMILYSEARCH GEDCOM™" and "FAMILYSEARCH®" are trademarks of Intellectual Reserve, Inc. and may not be used except as allowed by the Apache 2.0 license that governs this work or as expressly authorized in writing and in advance by Intellectual Reserve, Inc. ::: @@ -147,7 +147,6 @@ is shorthand for a URI beginning with the corresponding URI prefix | Short Prefix | URI Prefix | |:-------------|:------------------------------------| | `g7` | `https://gedcom.io/terms/v7/` | -| `g7.1` | `https://gedcom.io/terms/v7.1/` | | `xsd` | `http://www.w3.org/2001/XMLSchema#` | | `dcat` | `http://www.w3.org/ns/dcat#` | diff --git a/specification/gedcom-1-hierarchical-container-format.md b/specification/gedcom-1-hierarchical-container-format.md index 13fb90b0..fed052af 100644 --- a/specification/gedcom-1-hierarchical-container-format.md +++ b/specification/gedcom-1-hierarchical-container-format.md @@ -176,9 +176,9 @@ The tag `ADOP` is used in this document to represent two structure types. Which one is meant can be identified by the superstructure type as follows: | Superstructure type | Structure type identified by tag `ADOP` | -|---------------------|-----------------------------------------| -| `g7.1:record-INDI` | `g7:ADOP` | -| `g7:ADOP-FAMC` | `g7:FAMC-ADOP` | +|------------------|------------------| +| `g7:record-INDI` | `g7:ADOP` | +| `g7:ADOP-FAMC` | `g7:FAMC-ADOP` | An [extension-defined substructure](#extensions) could also be used to place either of these structure types in extension superstructures. @@ -319,7 +319,7 @@ Extensions cannot change existing meanings, cardinalities, or calendars. A **tagged extension structure** is a structure whose tag matches production `extTag`. Tagged extension structures may appear as records or substructures of any other structure. Their meaning is defined by their tag, as is discussed more fully in the section [Extension Tags]. Any substructure of a tagged extension structure that uses a tag matching `stdTag` is an **extension-defined substructure**. -Substructures of an extension-defined substructure that uses a tag matching `stdTag` are also extension-defined substructures, but this specification deprecates using a `stdTag` with a definition that does not match any standard type with that tag. +Substructures of an extension-defined substructure that uses a tag matching `stdTag` are also extension-defined substructures. The meaning and use of each extension-defined substructure is defined by the tagged extension structure it occurs within, not by its tag alone nor by this specification. :::example @@ -343,7 +343,9 @@ deprecated. - Even though both `DATE`s appear to have `g7:type-DATE` payloads, we can't know that is the intended data type without consulting the defining specifications of `_LOC` and `_POP`, respectively. The first might be a `g7:type-DATE#period` and the second a `g7:type-DATE#exact`, for example. ::: -If an extension-defined substructure has a tag that is also used by one or more standard structures, its meaning and payload type should match at least one of those standard structure types. +Extension-defined substructures should match the structure type, payload, and substructure collection of at least one +standard type with the same tag, though it can add more substructures to the substructure collection. +This specification deprecates using a `stdTag` with a definition that does not match any standard type with that tag. :::example An extension-defined substructure with tag "`DATE`" should provide a date or date period relevant to its superstructure, as do all `DATE`-tagged structures in this specification. Extensions should not use "`DATE`" to tag a structure describing anything else (even something that might reasonably be abbreviated "date", such as someone an individual dated). diff --git a/specification/gedcom-2-data-types.md b/specification/gedcom-2-data-types.md index 08afb038..880aac37 100644 --- a/specification/gedcom-2-data-types.md +++ b/specification/gedcom-2-data-types.md @@ -380,7 +380,7 @@ rather, they are used as machine-readable identifiers with formally-defined mean The payload is a "URI Reference" as defined in [RFC 3986 section 4.1](https://www.rfc-editor.org/rfc/rfc3986#section-4.1) with ABNF production `URI-reference`. The URI Reference is a more restrictive syntax than the URL Strings permitted by the [File Path] data type, -faciltiating easier automated equality tests between URIs. +facilitating easier automated equality tests between URIs. Relative URIs should be avoided in datasets that are expected to be shared on the web or with unknown parties, but may be appropriate for close collaboration between parties with a shared base URI. @@ -433,7 +433,7 @@ Minutes and seconds are not used and should be converted to fractional degrees p The number of degrees is limited by definition to be between 0 (the prime meridian) and 180 (the 180th meridian). ```abnf -Longitude = ("N" / "S") upto180 [ "." 1*digit] +Longitude = ("E" / "W") upto180 [ "." 1*digit] upto180 = "180" / "1" upto7 digit / [["0"] digit] digit upto7 = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" ``` diff --git a/specification/gedcom-3-structures-1-organization.md b/specification/gedcom-3-structures-1-organization.md index 2600d4a9..80aca952 100644 --- a/specification/gedcom-3-structures-1-organization.md +++ b/specification/gedcom-3-structures-1-organization.md @@ -242,7 +242,7 @@ In most cases that would be an error, though it is theoretically possible that s #### `INDIVIDUAL_RECORD` := ```gedstruct -n @XREF:INDI@ INDI {1:1} g7.1:record-INDI +n @XREF:INDI@ INDI {1:1} g7:record-INDI +1 RESN {0:1} g7:RESN +1 <> {0:M} +1 SEX {0:1} g7:SEX @@ -345,8 +345,7 @@ A `MULTIMEDIA_RECORD` may contain a pointer to a `SOURCE_RECORD` and vice versa. #### `REPOSITORY_RECORD` := ```gedstruct -n @XREF:REPO@ REPO {1:1} g7.1:record-REPO - +1 RESN {0:1} g7:RESN +n @XREF:REPO@ REPO {1:1} g7:record-REPO +1 NAME {1:1} g7:NAME +1 <> {0:1} +1 PHON {0:M} g7:PHON @@ -371,8 +370,7 @@ Until such time, it is recommended that the repository record store current cont #### `SHARED_NOTE_RECORD` := ```gedstruct -n @XREF:SNOTE@ SNOTE {1:1} g7.1:record-SNOTE - +1 RESN {0:1} g7:RESN +n @XREF:SNOTE@ SNOTE {1:1} g7:record-SNOTE +1 MIME {0:1} g7:MIME +1 LANG {0:1} g7:LANG +1 TRAN {0:M} g7:NOTE-TRAN @@ -417,8 +415,7 @@ A `SHARED_NOTE_RECORD` may contain a pointer to a `SOURCE_RECORD` and vice versa #### `SOURCE_RECORD` := ```gedstruct -n @XREF:SOUR@ SOUR {1:1} g7.1:record-SOUR - +1 RESN {0:1} g7:RESN +n @XREF:SOUR@ SOUR {1:1} g7:record-SOUR +1 DATA {0:1} g7:DATA +2 EVEN {0:M} g7:DATA-EVEN +3 DATE {0:1} g7:DATA-EVEN-DATE @@ -456,8 +453,7 @@ A `SOURCE_RECORD` may contain a pointer to a `MULTIMEDIA_RECORD` and vice versa. #### `SUBMITTER_RECORD` := ```gedstruct -n @XREF:SUBM@ SUBM {1:1} g7.1:record-SUBM - +1 RESN {0:1} g7:RESN +n @XREF:SUBM@ SUBM {1:1} g7:record-SUBM +1 NAME {1:1} g7:NAME +1 <> {0:1} +1 PHON {0:M} g7:PHON @@ -812,12 +808,12 @@ n FACT {1:1} g7:INDI-FACT ] ```` -Individual attributes; see [Individual Attributes](#individual-attributes) for descriptions of each individual attribute type.. +Individual attributes; see [Individual Attributes](#individual-attributes) for descriptions of each individual attribute type. :::note Individual attribute structures vary as follows: -- `INDI`.`NCHI` and `NMR` have [Integer](#text) payloads; `IDNO` and `SSN` have [Special](#special) payloads; others have [Text](#text) payloads +- `INDI`.`NCHI` and `NMR` have [Integer](#integer) payloads; `IDNO` and `SSN` have [Special](#special) payloads; others have [Text](#text) payloads - `INDI`.`FACT` and `IDNO` require `TYPE`; it's optional for others ::: @@ -854,9 +850,8 @@ n BASM [Y|] {1:1} g7:BASM +1 TYPE {0:1} g7:TYPE +1 <> {0:1} | -n BIRT [Y|] {1:1} g7.1:BIRT +n BIRT [Y|] {1:1} g7:BIRT +1 TYPE {0:1} g7:TYPE - +1 KIND {0:M} g7.1:BIRT-KIND +1 <> {0:1} +1 FAMC @@ {0:1} g7:FAMC | diff --git a/specification/gedcom-3-structures-3-meaning.md b/specification/gedcom-3-structures-3-meaning.md index b06671b4..aebee46e 100644 --- a/specification/gedcom-3-structures-3-meaning.md +++ b/specification/gedcom-3-structures-3-meaning.md @@ -21,7 +21,7 @@ An event structure asserts the event did occur if any of the following are true:
- + Version 5.4 (1995) introduced the "event did occur" meaning of event.`DATE`, so it is now well-established in applications and files. However, it is common for users to enter a date range with no end without intending to indicate that the event occurred. For example, pre 7.0 files sometimes used @@ -41,7 +41,7 @@ An event structure asserts the event did occur if any of the following are true: without intending to imply that `NATU` ever did actually occur. Because this is a "sometimes used" rather than a "formally means" situation, it is likely that data using 5.x "after meaning not before" *de facto* pattern will be transferred as-is into 7.0 and persist in files for the foreseeable future. - +
- There is a `PLAC` substructure @@ -273,9 +273,9 @@ See `ASSOCIATION_STRUCTURE` for more details. The person, agency, or entity who created the record. For a published work, this could be the author, compiler, transcriber, abstractor, or editor. For an unpublished source, this may be an individual, a government agency, church organization, or private organization. -#### `BAPL` (Baptism, Latter-Day Saint) `g7:BAPL` +#### `BAPL` (Baptism, Latter-day Saint) `g7:BAPL` -A [Latter-Day Saint Ordinance](#latter-day-saint-ordinances). +A [Latter-day Saint Ordinance](#latter-day-saint-ordinances). See also `LDS_INDIVIDUAL_ORDINANCE`. #### `BAPM` (Baptism) `g7:BAPM` @@ -298,17 +298,6 @@ See also `INDIVIDUAL_EVENT_STRUCTURE`. An [Individual Event](#individual-events). See also `INDIVIDUAL_EVENT_STRUCTURE`. -#### `KIND` (Birth Kind) `g7.1:BIRT-KIND` - -An enumerated value from set `g7.1:enumset-BIRT-KIND` indicating the type of birth. - -There is some conceptual overlap between `BIRT`.`TYPE` and `BIRT`.`KIND`: - -- `BIRT`.`TYPE` is preferred for general-purpose human-readable information elaborating on the birth type. -- `BIRT`.`KIND` is preferred for information that informs some programmatic behaviors - (such as creating a list of persons who were ever alive) - or to support automated translation into multiple languages. - #### `BLES` (Blessing) `g7:BLES` An [Individual Event](#individual-events). @@ -339,7 +328,7 @@ It is often used subordinate to a death event to show cause of death, such as mi #### `CENS` (Census) `g7:FAM-CENS` -An [Family Event](#family-events). +A [Family Event](#family-events). #### `CENS` (Census) `g7:INDI-CENS` @@ -376,9 +365,9 @@ See `ADDRESS_STRUCTURE` for more details. An [Individual Event](#individual-events). See also `INDIVIDUAL_EVENT_STRUCTURE`. -#### `CONL` (Confirmation, Latter-Day Saint) `g7:CONL` +#### `CONL` (Confirmation, Latter-day Saint) `g7:CONL` -A [Latter-Day Saint Ordinance](#latter-day-saint-ordinances). +A [Latter-day Saint Ordinance](#latter-day-saint-ordinances). See also `LDS_INDIVIDUAL_ORDINANCE`. #### `CONT` (Continued) `g7:CONT` @@ -534,9 +523,9 @@ The version 5.5.1 specification contained a typo where this tag was sometimes wr An [Individual Event](#individual-events). See also `INDIVIDUAL_EVENT_STRUCTURE`. -#### `ENDL` (Endowment, Latter-Day Saint) `g7:ENDL` +#### `ENDL` (Endowment, Latter-day Saint) `g7:ENDL` -A [Latter-Day Saint Ordinance](#latter-day-saint-ordinances). +A [Latter-day Saint Ordinance](#latter-day-saint-ordinances). See also `LDS_INDIVIDUAL_ORDINANCE`. #### `ENGA` (Engagement) `g7:ENGA` @@ -762,13 +751,13 @@ See also `INDIVIDUAL_ATTRIBUTE_STRUCTURE`. An [Individual Event](#individual-events). See also `INDIVIDUAL_EVENT_STRUCTURE`. -#### `INDI` (Individual) `g7.1:record-INDI` +#### `INDI` (Individual) `g7:record-INDI` See `INDIVIDUAL_RECORD`. -#### `INIL` (Initiatory, Latter-Day Saint) `g7:INIL` +#### `INIL` (Initiatory, Latter-day Saint) `g7:INIL` -A [Latter-Day Saint Ordinance](#latter-day-saint-ordinances). +A [Latter-day Saint Ordinance](#latter-day-saint-ordinances). See also `LDS_INDIVIDUAL_ORDINANCE`. Previously, GEDCOM versions 3.0 through 5.3 called this `WAC`; it was not part of 5.4 through 5.5.1. FamilySearch GEDCOM 7.0 reintroduced it with the name `INIL` for consistency with `BAPL`, `CONL`, and `ENDL`. @@ -913,7 +902,7 @@ for this asset, the `FORM`.`MEDI` is recommended to be `PHOTO` rather than `ELEC Indicates the [media type](#media-type) of the payload of the superstructure. -As of version 7.1, three media types are supported by this structure: +As of version 7.0, there are two standard media types for this structure: - `text/plain` shall be presented to the user as-is, preserving all spacing, line breaks, and so forth. @@ -930,59 +919,33 @@ As of version 7.1, three media types are supported by this structure: Supporting more of HTML is encouraged. Unsupported tags should be ignored during display. -
- Applications are welcome to support more XML entities or HTML character references in their user interface. - However, exporting must only use the core XML entities, translating any other entities into their corresponding Unicode characters. -
- -
- Applications are welcome to support additional HTML elements, - but they should ensure that content is meaningful if those extra elements are ignored and only their content text is displayed. -
- - If needed, `text/html` can be converted to `text/plain` using the following steps: - - 1. Replace any sequence of 1 or more spaces, tabs, and line breaks with a single space - 2. Case-insensitively replace each ``, ``, and `` with a line break - 3. Remove all other `<`...`>` tags - 4. Replace each `<` with `<` and `>` with `>` - 5. Replace each `&` with `&` +:::note +Applications are welcome to support more XML entities or HTML character references in their user interface. +However, exporting must only use the core XML entities, translating any other entities into their corresponding Unicode characters. +::: -- `text/markdown` employs a plain text format for creating structured documents, and is designed - to be fairly understandable by users even if only displayed as plain text. - Applications should support the elements specified by [CommonMark](https://commonmark.org). +:::note +Applications are welcome to support additional HTML elements, +but they should ensure that content is meaningful if those extra elements are ignored and only their content text is displayed. +::: - For example: -
+:::note +Media types are also used by external files, as described under `FORM`. External file media types are not limited to `text/plain` and `text/html`. +::: - ````gedcom - 1 NOTE # 1940 US Census for New York, New York - 2 CONT __Individuals located at this address__ - 2 CONT * John **Doe** (age 35) - 2 CONT * Sally (age 32) - 2 CONT * Junior (age 3) - 2 CONT * Betty (age 1) - 2 MIME text/markdown - ```` - -
+If needed, `text/html` can be converted to `text/plain` using the following steps: -
- Applications are welcome to support additional Markdown elements, - but they should ensure that content is meaningful if those extra elements are only displayed as plain text. -
+1. Replace any sequence of 1 or more spaces, tabs, and line breaks with a single space +2. Case-insensitively replace each ``, ``, and `` with a line break +3. Remove all other `<`...`>` tags +4. Replace each `<` with `<` and `>` with `>` +5. Replace each `&` with `&` -:::note Other `text` media types not discussed above are also permitted, though not recommended. If present, they are considered extensions. Such extensions do not require an [extension tag](#extensions) because the definition of `g7:MIME` is sufficient to cover this kind of extension. -::: - -:::note -Media types are also used by external files, as described under `FORM`. External file media types are not limited to `text` types. -::: #### `NAME` (Name) `g7:NAME` @@ -1257,7 +1220,7 @@ This is metadata about the structure itself, not data about its subject. See `SOURCE_REPOSITORY_CITATION`. -#### `REPO` (Repository) `g7.1:record-REPO` +#### `REPO` (Repository) `g7:record-REPO` See `REPOSITORY_RECORD`. @@ -1354,12 +1317,12 @@ An enumerated value from set `g7:enumset-SEX` that indicates the sex of the indi #### `SLGC` (Sealing, child) `g7:SLGC` -A [Latter-Day Saint Ordinance](#latter-day-saint-ordinances). +A [Latter-day Saint Ordinance](#latter-day-saint-ordinances). See also `LDS_INDIVIDUAL_ORDINANCE`. #### `SLGS` (Sealing, spouse) `g7:SLGS` -A [Latter-Day Saint Ordinance](#latter-day-saint-ordinances). +A [Latter-day Saint Ordinance](#latter-day-saint-ordinances). See also `LDS_SPOUSE_SEALING`. #### `SNOTE` (Shared note) `g7:SNOTE` @@ -1367,7 +1330,7 @@ See also `LDS_SPOUSE_SEALING`. A pointer to a note that is shared by multiple structures. See `NOTE_STRUCTURE` for more details. -#### `SNOTE` (Shared note) `g7.1:record-SNOTE` +#### `SNOTE` (Shared note) `g7:record-SNOTE` A note that is shared by multiple structures. See `SHARED_NOTE_RECORD` for more details. @@ -1377,7 +1340,7 @@ See `SHARED_NOTE_RECORD` for more details. A description of the relevant part of a source to support the superstructure's data. See `SOURCE_CITATION` for more details. -#### `SOUR` (Source) `g7.1:record-SOUR` +#### `SOUR` (Source) `g7:record-SOUR` A description of an entire source. See `SOURCE_RECORD` for more details. @@ -1405,18 +1368,18 @@ See `ADDRESS_STRUCTURE` for more details. #### `STAT` (Status) `g7:ord-STAT` -An enumerated value from set `g7:enumset-ord-STAT` assessing of the state or condition of an ordinance. +An enumerated value from set `g7:enumset-ord-STAT` assessing the state or condition of an ordinance. #### `STAT` (Status) `g7:FAMC-STAT` -An enumerated value from set `g7:enumset-FAMC-STAT` assessing of the state or condition of a researcher's belief in a family connection. +An enumerated value from set `g7:enumset-FAMC-STAT` assessing the state or condition of a researcher's belief in a family connection. #### `SUBM` (Submitter) `g7:SUBM` A contributor of information in the substructure. This is metadata about the structure itself, not data about its subject. -#### `SUBM` (Submitter) `g7.1:record-SUBM` +#### `SUBM` (Submitter) `g7:record-SUBM` A description of a contributor of information to the document. See `SUBMITTER_RECORD` for more details. diff --git a/specification/gedcom-3-structures-4-enumerations.md b/specification/gedcom-3-structures-4-enumerations.md index 6663562e..d1398672 100644 --- a/specification/gedcom-3-structures-4-enumerations.md +++ b/specification/gedcom-3-structures-4-enumerations.md @@ -15,13 +15,6 @@ Each set of enumeration values has its own URI. | `WIFE` | Adopted by the `WIFE` of the `FAM` pointed to by `FAMC`.
The URI of this value is `g7:enum-ADOP-WIFE` | | `BOTH` | Adopted by both `HUSB` and `WIFE` of the `FAM` pointed to by `FAMC` | -### `g7.1:enumset-BIRT-KIND` - -| Value | Meaning | -| :---------- | :------ | -| `BORN_DEAD` | Birth of a dead child; died before birth concluded (and possibly before it began), and was not thereafter revived. | -| `BORN_LIVE` | Child was alive after birth. This is often seen as the default meaning of `BIRT`, but in some cases it might be ambiguous and adding `KIND BORN_LIVE` could be beneficial. | - ### `g7:enumset-EVEN` An event-type tag name, but not the generic `EVEN` tag. @@ -125,7 +118,7 @@ The structures for representing the strength of and confidence in various claims | `LOCKED` | Some systems may ignore changes to this data. | | `PRIVACY` | This data is not to be shared outside of a trusted circle, generally because it contains information about living individuals. This definition is known to admit multiple interpretations, so use of the `PRIVACY` restriction notice is not recommended. | -It is recommended that applications allow users to chose how `CONFIDENTIAL` and/or `PRIVACY` data is handled +It is recommended that applications allow users to choose how `CONFIDENTIAL` and/or `PRIVACY` data is handled when interfacing with other users or applications, for example by allowing them to exclude such data when exporting. @@ -205,7 +198,7 @@ The structures for representing the strength of and confidence in various claims ### `g7:enumset-ord-STAT` These values were formerly used by The Church of Jesus Christ of Latter-day Saints for coordinating between temples and members. -They are no longer used in that way, meaning their interpretation is subject to individual user interpretation +They are no longer used in that way, meaning their interpretation is subject to individual user interpretation. The definition of some of these values combined with the official policies of the church mean that some values only make sense under a subset of [ordinance structures](#latter-day-saint-ordinances). @@ -231,7 +224,7 @@ and applications should be prepared to encounter non-current values. | `EXCLUDED` | All | Patron excluded this ordinance from being cleared in this submission. | Deprecated. This status was defined for use with TempleReady which is no longer in use. | | `DNS` | `SLGC`, `SLGS` | This ordinance is not authorized. | Current | | `DNS_CAN` | `SLGS` | This ordinance is not authorized, and the previous ordinance is cancelled. | Current | -| `INFANT` | All but `SLGC` | Died before less than 1 year old, baptism or endowment not required. | Deprecated. Use `CHILD` instead. | +| `INFANT` | All but `SLGC` | Died before 1 year old, baptism or endowment not required. | Deprecated. Use `CHILD` instead. | | `PRE_1970` | All | Ordinance was likely completed because an ordinance for this person was converted from temple records of work completed before 1970. | Deprecated. Use `DATE BEF 1970` instead. | | `STILLBORN` | All | Born dead, so no ordinances are required. | Current | | `SUBMITTED` | All | Ordinance was previously submitted. | Deprecated. This status was defined for use with TempleReady which is no longer in use. |