diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0808eb3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,43 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.2.1] - 2025-01-28 + +### Added +- Registry-compliant YAML files in `registry-yaml/` directory +- CHANGELOG.md file +- Link to GEDCOM Registry PR #173 in README + +### Changed +- Updated README to reference registry submission status + +### Technical Details +- Added 9 YAML files validated by official GEDCOM registry validator: + - 5 structure definitions (_OCUR, _OCREF, _PART, _PRESENCE, _ATTR) + - 3 enumeration definitions (Present, Absent, Unknown) + - 1 enumeration-set definition (Presence) + +## [0.2.0] - 2025-01-27 + +### Changed +- **BREAKING**: Switched to container-only model +- _OCUR now contains only event data, no participant information +- _PART simplified to just person pointer (no role/attributes) +- Participant data moved to _OCREF under individual records + +### Added +- Migration guide for upgrading from v0.1.0 +- Compatibility examples showing hybrid approach + +## [0.1.0] - 2025-01-26 + +### Added +- Initial release +- _OCUR occurrence record +- _PART participant substructure +- _OCREF occurrence reference +- Basic examples \ No newline at end of file diff --git a/README.md b/README.md index b123820..5da2405 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,9 @@ with the corresponding URI prefix ## Status -**Draft** - Seeking community feedback +**Published** - v0.2.0 released + +**Registry Submission** - Submitted to [GEDCOM Registry PR #173](https://github.com/FamilySearch/GEDCOM-registries/pull/173) ## See Also @@ -102,4 +104,5 @@ with the corresponding URI prefix - [Glossary](GLOSSARY.md) - [Compatibility Guide](compatibility.md) - [Examples](examples/) -- [YAML Definitions](yaml/) \ No newline at end of file +- [YAML Definitions](yaml/) +- [Registry-Compliant YAML](registry-yaml/) \ No newline at end of file diff --git a/VERSION b/VERSION index 341cf11..7dff5b8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.0 \ No newline at end of file +0.2.1 \ No newline at end of file diff --git a/registry-yaml/README.md b/registry-yaml/README.md new file mode 100644 index 0000000..a602164 --- /dev/null +++ b/registry-yaml/README.md @@ -0,0 +1,28 @@ +# Registry-Compliant YAML Files + +This directory contains the GEDCOM registry-compliant YAML files for the gedcom-occurrences extension. + +These files were submitted to the official GEDCOM registry via PR #173: +https://github.com/FamilySearch/GEDCOM-registries/pull/173 + +## Structure + +The files follow the official GEDCOM registry structure: + +- `structure/` - Extension tag definitions (_OCUR, _OCREF, etc.) +- `enumeration/` - Individual enumeration values (Present, Absent, Unknown) +- `enumeration-set/` - Enumeration set definition (Presence) + +## Key Differences from Original yaml/ Directory + +The original `yaml/` directory files had several issues that prevented registry acceptance: +- Used `type: record` instead of `type: structure` +- Missing enumeration definitions +- Incorrect payload URIs + +These registry-compliant versions have been validated and accepted by the GEDCOM registry validator. + +## Usage + +These files are the authoritative definitions for the gedcom-occurrences extension tags. +Applications implementing this extension should reference these definitions. \ No newline at end of file diff --git a/registry-yaml/enumeration-set/enumset-Presence.yaml b/registry-yaml/enumeration-set/enumset-Presence.yaml new file mode 100644 index 0000000..095483f --- /dev/null +++ b/registry-yaml/enumeration-set/enumset-Presence.yaml @@ -0,0 +1,15 @@ +%YAML 1.2 +--- +lang: en-US + +type: enumeration set + +uri: https://github.com/glamberson/gedcom-occurrences/enumset-Presence + +enumeration values: + - "https://github.com/glamberson/gedcom-occurrences/enum-Present" + - "https://github.com/glamberson/gedcom-occurrences/enum-Absent" + - "https://github.com/glamberson/gedcom-occurrences/enum-Unknown" + +contact: "https://github.com/glamberson/gedcom-occurrences" +... \ No newline at end of file diff --git a/registry-yaml/enumeration/enum-Absent.yaml b/registry-yaml/enumeration/enum-Absent.yaml new file mode 100644 index 0000000..2d8f6c7 --- /dev/null +++ b/registry-yaml/enumeration/enum-Absent.yaml @@ -0,0 +1,11 @@ +lang: en-US +type: enumeration +uri: https://github.com/glamberson/gedcom-occurrences/enum-Absent +extension tags: +- _ABSENT +specification: +- Absent +- Person was listed or referenced but not physically present +value of: +- https://github.com/glamberson/gedcom-occurrences/enumset-Presence +contact: https://github.com/glamberson/gedcom-occurrences diff --git a/registry-yaml/enumeration/enum-Present.yaml b/registry-yaml/enumeration/enum-Present.yaml new file mode 100644 index 0000000..c3cca12 --- /dev/null +++ b/registry-yaml/enumeration/enum-Present.yaml @@ -0,0 +1,11 @@ +lang: en-US +type: enumeration +uri: https://github.com/glamberson/gedcom-occurrences/enum-Present +extension tags: +- _PRESENT +specification: +- Present +- Person was physically present at the occurrence +value of: +- https://github.com/glamberson/gedcom-occurrences/enumset-Presence +contact: https://github.com/glamberson/gedcom-occurrences diff --git a/registry-yaml/enumeration/enum-Unknown.yaml b/registry-yaml/enumeration/enum-Unknown.yaml new file mode 100644 index 0000000..3dafa74 --- /dev/null +++ b/registry-yaml/enumeration/enum-Unknown.yaml @@ -0,0 +1,11 @@ +lang: en-US +type: enumeration +uri: https://github.com/glamberson/gedcom-occurrences/enum-Unknown +extension tags: +- _UNKNOWN +specification: +- Unknown +- Presence status cannot be determined from the source +value of: +- https://github.com/glamberson/gedcom-occurrences/enumset-Presence +contact: https://github.com/glamberson/gedcom-occurrences diff --git a/registry-yaml/structure/_ATTR.yaml b/registry-yaml/structure/_ATTR.yaml new file mode 100644 index 0000000..9dada8a --- /dev/null +++ b/registry-yaml/structure/_ATTR.yaml @@ -0,0 +1,23 @@ +%YAML 1.2 +--- +contact: https://github.com/glamberson/gedcom-occurrences +extension tags: +- _ATTR +label: Occurrence Attribute +lang: en-US +payload: null +specification: +- Attribute +- 'A custom attribute for an occurrence reference. Used to store + + occurrence-specific participant attributes such as dwelling number, + + enumeration district, or other structured data from historical records.' +substructures: + https://gedcom.io/terms/v7/TEXT: '{1:1}' + https://gedcom.io/terms/v7/TYPE: '{1:1}' +superstructures: + https://github.com/glamberson/gedcom-occurrences/_OCREF: '{0:M}' +type: structure +uri: https://github.com/glamberson/gedcom-occurrences/_ATTR +... diff --git a/registry-yaml/structure/_OCREF.yaml b/registry-yaml/structure/_OCREF.yaml new file mode 100644 index 0000000..4af670d --- /dev/null +++ b/registry-yaml/structure/_OCREF.yaml @@ -0,0 +1,36 @@ +%YAML 1.2 +--- +contact: https://github.com/glamberson/gedcom-occurrences +extension tags: +- _OCREF +label: Occurrence Reference +lang: en-US +payload: '@@' +specification: +- Occurrence Reference +- 'A reference from an individual or family to an occurrence record (_OCUR). + + This structure contains all participant-specific data such as role, age, + + and participation details. + + + In the container-only model (v0.2.0+), all participant data is stored + + exclusively in _OCREF structures to avoid data duplication and synchronization + + issues.' +substructures: + https://gedcom.io/terms/v7/AGE: '{0:1}' + https://gedcom.io/terms/v7/NOTE: '{0:M}' + https://gedcom.io/terms/v7/ROLE: '{1:1}' + https://gedcom.io/terms/v7/SNOTE: '{0:M}' + https://gedcom.io/terms/v7/SOUR: '{0:M}' + https://github.com/glamberson/gedcom-occurrences/_ATTR: '{0:M}' + https://github.com/glamberson/gedcom-occurrences/_PRESENCE: '{0:1}' +superstructures: + https://gedcom.io/terms/v7/record-FAM: '{0:M}' + https://gedcom.io/terms/v7/record-INDI: '{0:M}' +type: structure +uri: https://github.com/glamberson/gedcom-occurrences/_OCREF +... diff --git a/registry-yaml/structure/_OCUR.yaml b/registry-yaml/structure/_OCUR.yaml new file mode 100644 index 0000000..33565aa --- /dev/null +++ b/registry-yaml/structure/_OCUR.yaml @@ -0,0 +1,49 @@ +%YAML 1.2 +--- +contact: https://github.com/glamberson/gedcom-occurrences +extension tags: +- _OCUR +label: Occurrence +lang: en-US +payload: null +specification: +- Occurrence Record +- 'An _OCUR record represents an occurrence as an independent, first-class object + + that can involve multiple participants with different roles. This allows + + the same occurrence (such as a census, burial, or ceremony) to be referenced + + by multiple people without duplication of occurrence data. + + + Unlike embedded events (EVEN) in INDI or FAM records, _OCUR records exist at + + the top level and are referenced using _OCREF from participants. + + + This extension addresses the synchronization problems that occur when multiple + + people participate in the same event, providing a clean separation between + + event data (date, place, type) and participation data (role, age).' +substructures: + https://gedcom.io/terms/v7/ADDR: '{0:1}' + https://gedcom.io/terms/v7/AGNC: '{0:1}' + https://gedcom.io/terms/v7/CAUS: '{0:1}' + https://gedcom.io/terms/v7/CHAN: '{0:1}' + https://gedcom.io/terms/v7/DATE: '{0:1}' + https://gedcom.io/terms/v7/EXID: '{0:M}' + https://gedcom.io/terms/v7/NOTE: '{0:M}' + https://gedcom.io/terms/v7/OBJE: '{0:M}' + https://gedcom.io/terms/v7/PLAC: '{0:1}' + https://gedcom.io/terms/v7/RELI: '{0:1}' + https://gedcom.io/terms/v7/SNOTE: '{0:M}' + https://gedcom.io/terms/v7/SOUR: '{0:M}' + https://gedcom.io/terms/v7/TYPE: '{1:1}' + https://gedcom.io/terms/v7/UID: '{0:M}' + https://github.com/glamberson/gedcom-occurrences/_PART: '{0:M}' +superstructures: {} +type: structure +uri: https://github.com/glamberson/gedcom-occurrences/_OCUR +... diff --git a/registry-yaml/structure/_PART.yaml b/registry-yaml/structure/_PART.yaml new file mode 100644 index 0000000..bbcedc3 --- /dev/null +++ b/registry-yaml/structure/_PART.yaml @@ -0,0 +1,24 @@ +%YAML 1.2 +--- +contact: https://github.com/glamberson/gedcom-occurrences +extension tags: +- _PART +label: Participant +lang: en-US +payload: '@@ | @@' +specification: +- Participant +- 'A reference to an individual or family that participated in an occurrence. + + + In the container-only model (v0.2.0+), _PART contains only the pointer + + to the participant. All participant-specific data (role, age, etc.) is + + stored in the corresponding _OCREF structure to avoid data duplication.' +substructures: {} +superstructures: + https://github.com/glamberson/gedcom-occurrences/_OCUR: '{0:M}' +type: structure +uri: https://github.com/glamberson/gedcom-occurrences/_PART +... diff --git a/registry-yaml/structure/_PRESENCE.yaml b/registry-yaml/structure/_PRESENCE.yaml new file mode 100644 index 0000000..fa6ce8d --- /dev/null +++ b/registry-yaml/structure/_PRESENCE.yaml @@ -0,0 +1,21 @@ +%YAML 1.2 +--- +contact: https://github.com/glamberson/gedcom-occurrences +extension tags: +- _PRESENCE +label: Presence Status +lang: en-US +payload: https://github.com/glamberson/gedcom-occurrences/enumset-Presence +specification: +- Presence Status +- 'Indicates the presence status of a participant in an occurrence. + + Used to distinguish between participants who were physically present + + versus those who were listed but absent.' +substructures: {} +superstructures: + https://github.com/glamberson/gedcom-occurrences/_OCREF: '{0:1}' +type: structure +uri: https://github.com/glamberson/gedcom-occurrences/_PRESENCE +...