From 5196a120c083b77c0e5ef424cb55b3b021c954a0 Mon Sep 17 00:00:00 2001 From: lamco-office Date: Tue, 5 Aug 2025 01:17:04 +0300 Subject: [PATCH 1/3] Add GEDCOM Extended ASSO structures This extension enhances the GEDCOM 7 ASSO (association) structure to support: - Time-bounded relationships (_PERIOD with _START/_END) - Confidence levels in relationship assertions (_CONF) - Specific relationship types (_TYPE) - Relationship-specific privacy (_PRIV) All structures are extension substructures of the standard ASSO tag. The extension maintains backward compatibility - applications that don't support it will simply ignore the extension tags. Specification: https://github.com/glamberson/gedcom-extended-ASSO Contact: Greg Lamberson --- structure/extension/_CONF.yaml | 41 ++++++++++++++++++++++++++++++++ structure/extension/_END.yaml | 35 +++++++++++++++++++++++++++ structure/extension/_PERIOD.yaml | 38 +++++++++++++++++++++++++++++ structure/extension/_PRIV.yaml | 38 +++++++++++++++++++++++++++++ structure/extension/_START.yaml | 35 +++++++++++++++++++++++++++ structure/extension/_TYPE.yaml | 39 ++++++++++++++++++++++++++++++ 6 files changed, 226 insertions(+) create mode 100644 structure/extension/_CONF.yaml create mode 100644 structure/extension/_END.yaml create mode 100644 structure/extension/_PERIOD.yaml create mode 100644 structure/extension/_PRIV.yaml create mode 100644 structure/extension/_START.yaml create mode 100644 structure/extension/_TYPE.yaml diff --git a/structure/extension/_CONF.yaml b/structure/extension/_CONF.yaml new file mode 100644 index 00000000..b03fbbd8 --- /dev/null +++ b/structure/extension/_CONF.yaml @@ -0,0 +1,41 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure + +uri: https://github.com/glamberson/gedcom-extended-ASSO/_CONF + +extension tags: [ _CONF ] + +specification: + - Association Confidence + - | + Indicates the confidence level in the association assertion. + Uses an integer scale from 0 to 4: + + 0 = Unreliable evidence or estimated data + 1 = Questionable reliability of evidence + 2 = Secondary evidence, data probably reliable + 3 = Direct source, primary evidence, data considered reliable + 4 = Well-supported conclusion from primary evidence + + This scale matches GEDCOM 7's QUAY (quality) values for consistency. + + Examples: + - 4: Business partnership documented in legal records + - 3: Godparent relationship from church baptism record + - 1: Possible sibling based on census proximity and ages + - 0: Family legend of relationship, no documentation + +label: 'Confidence Level' + +payload: https://gedcom.io/terms/v7/type-Integer + +substructures: {} + +superstructures: + "https://gedcom.io/terms/v7/ASSO": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/_END.yaml b/structure/extension/_END.yaml new file mode 100644 index 00000000..af716b7e --- /dev/null +++ b/structure/extension/_END.yaml @@ -0,0 +1,35 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure + +uri: https://github.com/glamberson/gedcom-extended-ASSO/_END + +extension tags: [ _END ] + +specification: + - Association End Date + - | + The date when an association ended. Uses standard GEDCOM 7 date format, + allowing for exact dates, date ranges, and approximate dates. + + Examples: + - "15 MAY 1868" - Exact date ward reached majority + - "JUN 1867" - Month business partnership dissolved + - "8 MAY 1945" - End of military service (VE Day) + - "BEF 1960" - Friendship ended sometime before this date + +label: 'End Date' + +payload: https://gedcom.io/terms/v7/type-Date + +substructures: + "https://gedcom.io/terms/v7/PHRASE": "{0:1}" + "https://gedcom.io/terms/v7/TIME": "{0:1}" + +superstructures: + "https://github.com/glamberson/gedcom-extended-ASSO/_PERIOD": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/_PERIOD.yaml b/structure/extension/_PERIOD.yaml new file mode 100644 index 00000000..49c1f509 --- /dev/null +++ b/structure/extension/_PERIOD.yaml @@ -0,0 +1,38 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure + +uri: https://github.com/glamberson/gedcom-extended-ASSO/_PERIOD + +extension tags: [ _PERIOD ] + +specification: + - Association Time Period + - | + Container structure for defining the time boundaries of an association. + Allows specification of when an association began and/or ended. + + Either START or END may be omitted if unknown. If both are omitted, + the PERIOD structure should not be used. + + Examples: + - Godparent relationship: START at baptism, END at ward's majority + - Employment: START date of hire, END date of termination + - Military service: START at enlistment, END at discharge + - Friendship: May have only START if still ongoing + +label: 'Association Time Period' + +payload: null + +substructures: + "https://github.com/glamberson/gedcom-extended-ASSO/_START": "{0:1}" + "https://github.com/glamberson/gedcom-extended-ASSO/_END": "{0:1}" + +superstructures: + "https://gedcom.io/terms/v7/ASSO": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/_PRIV.yaml b/structure/extension/_PRIV.yaml new file mode 100644 index 00000000..5adf4a30 --- /dev/null +++ b/structure/extension/_PRIV.yaml @@ -0,0 +1,38 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure + +uri: https://github.com/glamberson/gedcom-extended-ASSO/_PRIV + +extension tags: [ _PRIV ] + +specification: + - Association Privacy Flag + - | + Indicates whether this specific association should be treated as private, + independent of the privacy settings of the individuals involved. + + Use cases: + - Sensitive professional relationships + - Confidential informant relationships + - Medical or legal associations + - Any relationship where disclosure could be harmful + + Applications should respect this flag by: + - Excluding private associations from public reports + - Requiring additional authentication to view + - Masking or redacting in exports + +label: 'Privacy Flag' + +payload: Y| + +substructures: {} + +superstructures: + "https://gedcom.io/terms/v7/ASSO": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/_START.yaml b/structure/extension/_START.yaml new file mode 100644 index 00000000..c441802f --- /dev/null +++ b/structure/extension/_START.yaml @@ -0,0 +1,35 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure + +uri: https://github.com/glamberson/gedcom-extended-ASSO/_START + +extension tags: [ _START ] + +specification: + - Association Start Date + - | + The date when an association began. Uses standard GEDCOM 7 date format, + allowing for exact dates, date ranges, and approximate dates. + + Examples: + - "15 MAY 1850" - Exact date of baptism for godparent relationship + - "1845" - Year-only for business partnership + - "ABT 1920" - Approximate date for friendship + - "BEF 1863" - Known to have started before a certain date + +label: 'Start Date' + +payload: https://gedcom.io/terms/v7/type-Date + +substructures: + "https://gedcom.io/terms/v7/PHRASE": "{0:1}" + "https://gedcom.io/terms/v7/TIME": "{0:1}" + +superstructures: + "https://github.com/glamberson/gedcom-extended-ASSO/_PERIOD": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/_TYPE.yaml b/structure/extension/_TYPE.yaml new file mode 100644 index 00000000..2279723f --- /dev/null +++ b/structure/extension/_TYPE.yaml @@ -0,0 +1,39 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure + +uri: https://github.com/glamberson/gedcom-extended-ASSO/_TYPE + +extension tags: [ _TYPE ] + +specification: + - Association Type + - | + Specifies the type of association or relationship beyond the standard ROLE. + This provides more specific categorization of the relationship between + two individuals. + + Unlike ROLE which uses a controlled vocabulary, TYPE allows free-text + description to accommodate various relationship types across cultures + and time periods. + + Examples: + - "Godparent" (with ROLE "Godfather" or "Godmother") + - "Business Partnership" (with ROLE "Business Partner") + - "Military Service" (with ROLE "Fellow Soldier") + - "Childhood Friend" (with ROLE "Friend") + - "Neighbor" (with ROLE "Neighbor") + +label: 'Association Type' + +payload: https://gedcom.io/terms/v7/type-Text + +substructures: {} + +superstructures: + "https://gedcom.io/terms/v7/ASSO": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file From ab54e984ee63bd8e1418f9e017f5cea8f2cdb7b1 Mon Sep 17 00:00:00 2001 From: lamco-office Date: Thu, 7 Aug 2025 19:09:19 +0300 Subject: [PATCH 2/3] Address Dave Thaler's review feedback on Extended ASSO PR #185 - Changed _CONF to use standard QUAY enumeration instead of custom integer - Replaced _PRIV with RESN_relocated (standard RESN structure relocated to ASSO) - Replaced _TYPE with TYPE_relocated (standard TYPE structure relocated to ASSO) - Updated _PERIOD to be more general-purpose for any date period - Using structure relocation for standard GEDCOM structures per review guidance --- registry_tools/GEDCOM.io | 2 +- structure/extension/RESN_relocated.yaml | 38 ++++++++++++++++++++++++ structure/extension/TYPE_relocated.yaml | 39 +++++++++++++++++++++++++ structure/extension/_CONF.yaml | 12 +++++--- structure/extension/_PERIOD.yaml | 27 +++++++++++++---- structure/extension/_PRIV.yaml | 38 ------------------------ structure/extension/_TYPE.yaml | 39 ------------------------- 7 files changed, 107 insertions(+), 88 deletions(-) create mode 100644 structure/extension/RESN_relocated.yaml create mode 100644 structure/extension/TYPE_relocated.yaml delete mode 100644 structure/extension/_PRIV.yaml delete mode 100644 structure/extension/_TYPE.yaml diff --git a/registry_tools/GEDCOM.io b/registry_tools/GEDCOM.io index da76dfe9..ab7c415e 160000 --- a/registry_tools/GEDCOM.io +++ b/registry_tools/GEDCOM.io @@ -1 +1 @@ -Subproject commit da76dfe933b22833035e005e7092ba1a91be0140 +Subproject commit ab7c415e4437831ee40576081705f6f03dd67a47 diff --git a/structure/extension/RESN_relocated.yaml b/structure/extension/RESN_relocated.yaml new file mode 100644 index 00000000..01dc6778 --- /dev/null +++ b/structure/extension/RESN_relocated.yaml @@ -0,0 +1,38 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure relocation + +uri: https://github.com/glamberson/gedcom-extended-ASSO/RESN + +# This relocates the standard RESN structure to ASSO context +# No custom extension tag needed - uses standard RESN + +specification: + - Association Privacy Restriction + - | + Uses the standard GEDCOM 7 RESN (restriction) structure relocated + to the ASSO context. This indicates privacy or access restrictions + for this specific association. + + Standard RESN values apply: + - CONFIDENTIAL: This association is confidential + - LOCKED: This association should not be changed + - PRIVACY: This association should be treated as private + + Applications should respect these restrictions by: + - Excluding restricted associations from public reports + - Requiring additional authentication to view + - Preventing changes to LOCKED associations + + This approach reuses the standard RESN structure and enumeration, + providing consistency with existing GEDCOM 7 privacy mechanisms. + +relocated from: https://gedcom.io/terms/v7/RESN + +superstructures: + "https://gedcom.io/terms/v7/ASSO": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/TYPE_relocated.yaml b/structure/extension/TYPE_relocated.yaml new file mode 100644 index 00000000..762baef5 --- /dev/null +++ b/structure/extension/TYPE_relocated.yaml @@ -0,0 +1,39 @@ +%YAML 1.2 +--- +lang: en-US + +type: structure relocation + +uri: https://github.com/glamberson/gedcom-extended-ASSO/TYPE + +# This relocates the standard TYPE structure to ASSO context +# No custom extension tag needed - uses standard TYPE + +specification: + - Association Type + - | + Uses the standard GEDCOM 7 TYPE structure relocated to the ASSO context. + This provides a user-defined classification or type of the association + to supplement the ROLE value. + + TYPE provides free-text description to accommodate various relationship + types across cultures and time periods, while ROLE provides the + standardized relationship term. + + Examples: + - TYPE "Godparent" with ROLE "GODP" + - TYPE "Business Partnership" with ROLE "OTHER" + - TYPE "Military Service" with ROLE "OTHER" + - TYPE "Childhood Friend" with ROLE "FRIEND" + - TYPE "Next-door Neighbor" with ROLE "NGHBR" + + This approach reuses the standard TYPE structure, maintaining + consistency with how TYPE is used elsewhere in GEDCOM 7. + +relocated from: https://gedcom.io/terms/v7/TYPE + +superstructures: + "https://gedcom.io/terms/v7/ASSO": "{0:1}" + +contact: lamberson@yahoo.com +... \ No newline at end of file diff --git a/structure/extension/_CONF.yaml b/structure/extension/_CONF.yaml index b03fbbd8..8462ba94 100644 --- a/structure/extension/_CONF.yaml +++ b/structure/extension/_CONF.yaml @@ -6,13 +6,14 @@ type: structure uri: https://github.com/glamberson/gedcom-extended-ASSO/_CONF -extension tags: [ _CONF ] +extension tags: + - _CONF specification: - Association Confidence - | Indicates the confidence level in the association assertion. - Uses an integer scale from 0 to 4: + Uses the standard GEDCOM 7 QUAY (quality) enumeration: 0 = Unreliable evidence or estimated data 1 = Questionable reliability of evidence @@ -20,7 +21,8 @@ specification: 3 = Direct source, primary evidence, data considered reliable 4 = Well-supported conclusion from primary evidence - This scale matches GEDCOM 7's QUAY (quality) values for consistency. + This reuses the standard QUAY enumeration for consistency with + GEDCOM 7 and to benefit from existing language translations. Examples: - 4: Business partnership documented in legal records @@ -30,7 +32,9 @@ specification: label: 'Confidence Level' -payload: https://gedcom.io/terms/v7/type-Integer +payload: https://gedcom.io/terms/v7/type-Enum + +enumeration set: "https://gedcom.io/terms/v7/enumset-QUAY" substructures: {} diff --git a/structure/extension/_PERIOD.yaml b/structure/extension/_PERIOD.yaml index 49c1f509..cca2ae77 100644 --- a/structure/extension/_PERIOD.yaml +++ b/structure/extension/_PERIOD.yaml @@ -6,24 +6,36 @@ type: structure uri: https://github.com/glamberson/gedcom-extended-ASSO/_PERIOD -extension tags: [ _PERIOD ] +extension tags: + - _PERIOD specification: - - Association Time Period + - Date Period Container - | - Container structure for defining the time boundaries of an association. - Allows specification of when an association began and/or ended. + Container structure for defining the time boundaries of any dateable item. + Allows specification of when something began and/or ended using full + GEDCOM 7 Date syntax (including ranges and approximations). Either START or END may be omitted if unknown. If both are omitted, the PERIOD structure should not be used. - Examples: + This structure can be used with any context that needs to express + a time period with explicit start and/or end dates, not limited to + associations. + + Examples in ASSO context: - Godparent relationship: START at baptism, END at ward's majority - Employment: START date of hire, END date of termination - Military service: START at enlistment, END at discharge - Friendship: May have only START if still ongoing + + Could also be used with other contexts like: + - Residence periods + - Educational enrollments + - Memberships + - Any time-bounded relationship or status -label: 'Association Time Period' +label: 'Date Period Container' payload: null @@ -33,6 +45,9 @@ substructures: superstructures: "https://gedcom.io/terms/v7/ASSO": "{0:1}" + "https://gedcom.io/terms/v7/DATE": "{0:1}" + +prerelease: true contact: lamberson@yahoo.com ... \ No newline at end of file diff --git a/structure/extension/_PRIV.yaml b/structure/extension/_PRIV.yaml deleted file mode 100644 index 5adf4a30..00000000 --- a/structure/extension/_PRIV.yaml +++ /dev/null @@ -1,38 +0,0 @@ -%YAML 1.2 ---- -lang: en-US - -type: structure - -uri: https://github.com/glamberson/gedcom-extended-ASSO/_PRIV - -extension tags: [ _PRIV ] - -specification: - - Association Privacy Flag - - | - Indicates whether this specific association should be treated as private, - independent of the privacy settings of the individuals involved. - - Use cases: - - Sensitive professional relationships - - Confidential informant relationships - - Medical or legal associations - - Any relationship where disclosure could be harmful - - Applications should respect this flag by: - - Excluding private associations from public reports - - Requiring additional authentication to view - - Masking or redacting in exports - -label: 'Privacy Flag' - -payload: Y| - -substructures: {} - -superstructures: - "https://gedcom.io/terms/v7/ASSO": "{0:1}" - -contact: lamberson@yahoo.com -... \ No newline at end of file diff --git a/structure/extension/_TYPE.yaml b/structure/extension/_TYPE.yaml deleted file mode 100644 index 2279723f..00000000 --- a/structure/extension/_TYPE.yaml +++ /dev/null @@ -1,39 +0,0 @@ -%YAML 1.2 ---- -lang: en-US - -type: structure - -uri: https://github.com/glamberson/gedcom-extended-ASSO/_TYPE - -extension tags: [ _TYPE ] - -specification: - - Association Type - - | - Specifies the type of association or relationship beyond the standard ROLE. - This provides more specific categorization of the relationship between - two individuals. - - Unlike ROLE which uses a controlled vocabulary, TYPE allows free-text - description to accommodate various relationship types across cultures - and time periods. - - Examples: - - "Godparent" (with ROLE "Godfather" or "Godmother") - - "Business Partnership" (with ROLE "Business Partner") - - "Military Service" (with ROLE "Fellow Soldier") - - "Childhood Friend" (with ROLE "Friend") - - "Neighbor" (with ROLE "Neighbor") - -label: 'Association Type' - -payload: https://gedcom.io/terms/v7/type-Text - -substructures: {} - -superstructures: - "https://gedcom.io/terms/v7/ASSO": "{0:1}" - -contact: lamberson@yahoo.com -... \ No newline at end of file From 9c00fb8559b9661450dcb5dceb3d59f6fe19aac6 Mon Sep 17 00:00:00 2001 From: lamco-office Date: Tue, 12 Aug 2025 12:59:17 +0300 Subject: [PATCH 3/3] Reset submodule to match upstream - Reset registry_tools/GEDCOM.io submodule to match upstream main branch --- registry_tools/GEDCOM.io | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry_tools/GEDCOM.io b/registry_tools/GEDCOM.io index ab7c415e..45791f0a 160000 --- a/registry_tools/GEDCOM.io +++ b/registry_tools/GEDCOM.io @@ -1 +1 @@ -Subproject commit ab7c415e4437831ee40576081705f6f03dd67a47 +Subproject commit 45791f0a61ae7375bca211019fdaeb12179c3925