refactor: update tax deductibility schema and migrate slots per Rule 48

This commit is contained in:
kempersc 2026-01-17 21:45:52 +01:00
parent 2f707d224b
commit aac0372aaa
10 changed files with 312 additions and 62 deletions

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-17T20:10:50.954Z",
"generated": "2026-01-17T20:11:23.675Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2968,
"categoryCounts": {

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-17T20:11:23.675Z",
"generated": "2026-01-17T20:45:52.691Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2968,
"categoryCounts": {

View file

@ -19,7 +19,10 @@ imports:
# REMOVED 2026-01-17: ../slots/publisher - migrated to has_or_had_publisher + Publisher (Rule 53/56)
- ../slots/has_or_had_publisher
- ./Publisher
- ../slots/publication_date
# - ../slots/publication_date # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_at # was: publication_date - migrated per Rule 53/56 (2026-01-17)
- ./PublicationEvent # for is_or_was_published_at range
- ./TimeSpan # for PublicationEvent.temporal_extent
- ../slots/isbn
- ../slots/language
- ../slots/price
@ -123,7 +126,7 @@ classes:
- page
- pdf_url
- price
- publication_date
- is_or_was_published_at # was: publication_date - migrated per Rule 53/56 (2026-01-17)
- publication_place
- has_or_had_publisher # was: publisher - migrated per Rule 53/56 (2026-01-17)
- specificity_annotation

View file

@ -56,7 +56,9 @@ imports:
# REMOVED 2026-01-17: ../slots/publisher - migrated to has_or_had_publisher + Publisher (Rule 53/56)
- ../slots/has_or_had_publisher
- ./Publisher
- ../slots/publication_date
# - ../slots/publication_date # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_at # was: publication_date - migrated per Rule 53/56 (2026-01-17)
- ./PublicationEvent # for is_or_was_published_at range
- ../slots/isbn
- ../slots/has_or_had_access_condition
- ../slots/is_or_was_access_restricted
@ -270,7 +272,7 @@ classes:
- note
- has_or_had_page_section
- provenance
- publication_date
- is_or_was_published_at # was: publication_date - migrated per Rule 53/56 (2026-01-17)
- has_or_had_publisher # was: publisher - migrated per Rule 53/56 (2026-01-17)
- has_or_had_related_archive
- has_or_had_related_guide

View file

@ -11,14 +11,15 @@ imports:
- ../slots/has_or_had_type
- ../slots/has_or_had_label
- ../slots/has_or_had_description
# Status slot - defined locally as it's specific to this class
# Conditions slot - defined locally as it's specific to this class
# Minimum donation slot - defined locally as it's specific to this class
- ../slots/deductibility_status # Centralized per Rule 48 (2026-01-17)
- ../slots/deductibility_conditions # Centralized per Rule 48 (2026-01-17)
- ../slots/minimum_donation # Centralized per Rule 48 (2026-01-17)
- ../slots/jurisdiction
- ../slots/deductible_percentage
- ../slots/effective_from
- ../slots/effective_until
- ./Jurisdiction
- ../enums/DeductibilityStatusEnum # Enum moved to separate file per Rule 48 (2026-01-17)
default_prefix: hc
classes:
@ -46,11 +47,11 @@ classes:
```
TaxDeductibility
├── status ──→ DeductibilityStatusEnum (FULLY_DEDUCTIBLE, etc.)
├── deductibility_status ──→ DeductibilityStatusEnum (FULLY_DEDUCTIBLE, etc.)
├── jurisdiction ──→ Jurisdiction class
├── conditions ──→ "Donation must exceed €25"
├── deductibility_conditions ──→ "Donation must exceed €25"
└── effective_from / effective_until ──→ dates
```
@ -77,15 +78,15 @@ classes:
close_mappings:
- prov:Entity
slots:
- status
- deductibility_status
- jurisdiction
- conditions
- deductibility_conditions
- deductible_percentage
- minimum_donation
- effective_from
- effective_until
slot_usage:
status:
deductibility_status:
range: DeductibilityStatusEnum
required: true
description: The deductibility classification.
@ -104,7 +105,7 @@ classes:
jurisdiction_code: UK
jurisdiction_name: United Kingdom
description: United Kingdom
conditions:
deductibility_conditions:
range: string
description: |
Conditions that must be met for tax deductibility.
@ -136,35 +137,35 @@ classes:
- https://www.gov.uk/donating-to-charity/gift-aid
examples:
- value:
status: FULLY_DEDUCTIBLE
deductibility_status: FULLY_DEDUCTIBLE
jurisdiction:
jurisdiction_code: NL
jurisdiction_name: Netherlands
conditions: Donation must exceed €25 minimum
deductibility_conditions: Donation must exceed €25 minimum
deductible_percentage: 100
description: Dutch ANBI fully deductible donation
- value:
status: CONDITIONALLY_DEDUCTIBLE
deductibility_status: CONDITIONALLY_DEDUCTIBLE
jurisdiction:
jurisdiction_code: UK
jurisdiction_name: United Kingdom
conditions: Donor must complete Gift Aid declaration
deductibility_conditions: Donor must complete Gift Aid declaration
deductible_percentage: 100
description: UK Gift Aid conditional deductibility
- value:
status: PARTIALLY_DEDUCTIBLE
deductibility_status: PARTIALLY_DEDUCTIBLE
jurisdiction:
jurisdiction_code: US
jurisdiction_name: United States
conditions: Fair market value of benefits received is subtracted
deductibility_conditions: Fair market value of benefits received is subtracted
deductible_percentage: 70
description: US gala ticket with partial deductibility
- value:
status: NOT_DEDUCTIBLE
deductibility_status: NOT_DEDUCTIBLE
jurisdiction:
jurisdiction_code: NL
jurisdiction_name: Netherlands
conditions: Membership benefits exceed donation value
deductibility_conditions: Membership benefits exceed donation value
description: Museum membership not tax-deductible
annotations:
specificity_score: 0.50
@ -173,41 +174,3 @@ classes:
donation-focused queries.
replaces_slot: tax_deductible
migration_date: "2026-01-16"
# Define local slots specific to TaxDeductibility
slots:
status:
slot_uri: schema:itemCondition
range: DeductibilityStatusEnum
description: |
The deductibility classification status.
conditions:
slot_uri: schema:eligibleRegion
range: string
description: |
Conditions or requirements for tax deductibility.
minimum_donation:
slot_uri: schema:minPrice
range: decimal
description: |
Minimum donation amount for tax deductibility to apply.
# Define the deductibility status enum
enums:
DeductibilityStatusEnum:
description: Classification of tax deductibility status.
permissible_values:
FULLY_DEDUCTIBLE:
description: 100% of donation is tax-deductible.
PARTIALLY_DEDUCTIBLE:
description: Only a portion of the donation is tax-deductible.
NOT_DEDUCTIBLE:
description: Donation provides no tax benefit to donor.
CONDITIONALLY_DEDUCTIBLE:
description: Tax-deductible only if specific conditions are met.
JURISDICTION_DEPENDENT:
description: Deductibility varies based on donor's tax jurisdiction.
UNKNOWN:
description: Deductibility status has not been determined.

View file

@ -0,0 +1,34 @@
# DeductibilityStatusEnum - Tax deductibility status classifications
#
# Created: 2026-01-17
# Purpose: Centralized enum for TaxDeductibility.deductibility_status per Rule 48
id: https://nde.nl/ontology/hc/enum/DeductibilityStatusEnum
name: DeductibilityStatusEnum
title: Deductibility Status Enumeration
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
default_prefix: hc
enums:
DeductibilityStatusEnum:
description: Classification of tax deductibility status.
permissible_values:
FULLY_DEDUCTIBLE:
description: 100% of donation is tax-deductible.
PARTIALLY_DEDUCTIBLE:
description: Only a portion of the donation is tax-deductible.
NOT_DEDUCTIBLE:
description: Donation provides no tax benefit to donor.
CONDITIONALLY_DEDUCTIBLE:
description: Tax-deductible only if specific conditions are met.
JURISDICTION_DEPENDENT:
description: Deductibility varies based on donor's tax jurisdiction.
UNKNOWN:
description: Deductibility status has not been determined.

View file

@ -0,0 +1,26 @@
# deductibility_conditions - Conditions for tax deductibility
#
# Created: 2026-01-17
# Purpose: Replaces inline 'conditions' slot from TaxDeductibility class per Rule 48
id: https://nde.nl/ontology/hc/slot/deductibility_conditions
name: deductibility_conditions
title: Deductibility Conditions Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
deductibility_conditions:
slot_uri: schema:eligibleRegion
range: string
description: |
Conditions or requirements for tax deductibility to apply.
Examples: "Donation must exceed €25 minimum", "Must complete Gift Aid declaration"

View file

@ -0,0 +1,27 @@
# deductibility_status - Tax deductibility classification status
#
# Created: 2026-01-17
# Purpose: Replaces inline 'status' slot from TaxDeductibility class per Rule 48
id: https://nde.nl/ontology/hc/slot/deductibility_status
name: deductibility_status
title: Deductibility Status Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
deductibility_status:
slot_uri: schema:itemCondition
range: string # Will be narrowed to DeductibilityStatusEnum in class
description: |
The tax deductibility classification status.
Values: FULLY_DEDUCTIBLE, PARTIALLY_DEDUCTIBLE, NOT_DEDUCTIBLE,
CONDITIONALLY_DEDUCTIBLE, JURISDICTION_DEPENDENT, UNKNOWN

View file

@ -0,0 +1,26 @@
# minimum_donation - Minimum donation amount for tax deductibility
#
# Created: 2026-01-17
# Purpose: Replaces inline 'minimum_donation' slot from TaxDeductibility class per Rule 48
id: https://nde.nl/ontology/hc/slot/minimum_donation
name: minimum_donation
title: Minimum Donation Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
minimum_donation:
slot_uri: schema:minPrice
range: decimal
description: |
Minimum donation amount for tax deductibility to apply.
Currency assumed to be the jurisdiction's local currency.

View file

@ -8704,4 +8704,173 @@ fixes:
This is a display/serialization format derived from chapter_start_seconds.
ISO 8601 duration strings are the standard for time representation.
Creating TimeInterval+Timestamp classes would be OVER-ENGINEERING.
Retaining with existing structure.
Retaining with existing structure.
- original_slot_id: https://nde.nl/ontology/hc/slot/chapter_thumbnail_timestamp
revision:
- label: has_or_had_thumbnail
type: slot
- label: Thumbnail
type: class
- label: derives_or_derived_from
type: slot
- label: Video
type: class
- label: has_or_had_time_interval
type: slot
- label: TimeInterval
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/chapter_thumbnail_url
revision:
- label: has_or_had_thumbnail
type: slot
- label: Thumbnail
type: class
- label: has_or_had_url
type: slot
- label: URL
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/chapter_title
revision:
- label: has_or_had_label
type: slot
- label: Label
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/chapters_generated_at
revision:
- label: is_or_was_generated
type: slot
- label: GenerationEvent
type: class
- label: has_or_had_provenance
type: slot
link_branch: 1
- label: Provenance
type: class
link_branch: 1
- label: temporal_extent
type: slot
link_branch: 2
- label: TimeSpan
type: class
link_branch: 2
- original_slot_id: https://nde.nl/ontology/hc/slot/chapters_source
revision:
- label: has_or_had_source
type: slot
- label: Source
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/character_count
revision:
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- label: has_or_had_unit
type: slot
- label: Unit
type: class
value: character
- orignal_slot_id: https://nde.nl/ontology/hc/slot/circumstances_of_death
revision:
- label: is_deceased
type: slot
- label: DeceasedStatus
type: class
- label: is_or_was_caused_by
type: slot
- label: CauseOfDeath
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/cites_appendix
revision:
- label: is_or_was_listed_in
type: slot
- label: CITESAppendix
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/city
revision:
- label: is_or_was_located_in
type: slot
- label: City
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/claim
revision:
- label: warrants_or_warranted
type: slot
- label: Claim
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/claim_extraction_method
revision:
- label: is_or_was_extracted_using
type: slot
- label: ExtractionMethod
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/claim_id
revision:
- label: has_or_had_identifier
type: slot
- label: Identifier
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/claim_note
revision:
- label: has_or_had_note
type: slot
- label: Note
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/claim_source_url
revision:
- label: has_or_had_url
type: slot
- label: URL
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/claim_type
revision:
- label: has_or_had_type
type: slot
- label: ClaimType
type: class
- label: includes_or_included
type: slot
- label: ClaimTypes
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/claim_value
revision:
- label: has_or_had_content
type: slot
- label: Content
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/claims_count
revision:
- label: has_or_had_provenance
type: slot
- label: Provenance
type: class
- label: based_on_claim
type: slot
- label: Claim
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/classification_status
revision:
- label: has_or_had_status
type: slot
- label: ClassificationStatus
type: class
- label: has_or_had_type
type: slot
- label: ClassificationStatusType
type: class
- label: includes_or_included
type: slot
- label: ClassificationStatusTypes
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/classifies_place
revision:
- label: classifies_or_classified
type: slot
- label: CustodianPlace
type: class
# https://nde.nl/ontology/hc/slot/classroom_count>