From 1f04a26b12fe90102ffba5131d16a0c16cd9ab57 Mon Sep 17 00:00:00 2001 From: kempersc Date: Wed, 14 Jan 2026 20:18:38 +0100 Subject: [PATCH] feat: Introduce MeasureUnitEnum for standardized measurement units - Added MeasureUnitEnum.yaml to define standard measurement units for area, length, and related quantities, compliant with ISO 80000-1, QUDT, and UCUM. - Included units such as square meters, hectares, acres, meters, kilometers, and their conversions. feat: Create applies_or_applied_to_call slot for funding requirements - Introduced applies_or_applied_to_call.yaml to track funding calls related to requirements, following RiC-O naming conventions. chore: Archive annual_participants slot and migrate to has_or_had_annual_participant_count - Archived annual_participants_archived_20260115.yaml, replaced with has_or_had_annual_participant_count for better temporal naming. chore: Archive applies_to_call slot and migrate to applies_or_applied_to_call - Archived applies_to_call_archived_20260115.yaml, replaced with applies_or_applied_to_call for improved naming consistency. chore: Archive area_hectares slot and migrate to has_area_in_hectare - Archived area_hectares_archived_20260115.yaml, replaced with has_area_in_hectare for standardized area measurement. chore: Archive arrangement_notes slot and migrate to has_arrangement_note - Archived arrangement_notes_archived_20260115.yaml, replaced with has_arrangement_note for better naming alignment. chore: Archive available_caption_languages slot and migrate to has_available_caption_language - Archived available_caption_languages_archived_20260115.yaml, replaced with has_available_caption_language for improved naming. chore: Archive beneficiary_group slot and migrate to has_or_had_beneficiary - Archived beneficiary_group_archived_20260115.yaml, replaced with has_or_had_beneficiary for compliance with naming conventions. chore: Archive branch_head slot and migrate to has_or_had_head - Archived branch_head_archived_20260114.yaml, replaced with has_or_had_head for better semantic alignment. chore: Archive budget_currency slot - Archived budget_currency_archived_20260114.yaml for future migration. chore: Archive building_floor_area_sqm slot and migrate to has_or_had_area - Archived building_floor_area_sqm_archived_20260115.yaml, replaced with has_or_had_area for standardized area measurement. chore: Archive has_area_in_hectare slot and migrate to has_or_had_area - Archived has_area_in_hectare_archived_20260115.yaml, replaced with has_or_had_area for compliance with generic predicates. feat: Introduce has_or_had_area slot for area measurements - Added has_or_had_area.yaml as the authoritative slot for area measurements, compliant with Rule 53. feat: Introduce has_or_had_beneficiary slot for beneficiary tracking - Added has_or_had_beneficiary.yaml to identify beneficiaries of organizational programs, following RiC-O naming conventions. feat: Introduce has_or_had_currency slot for monetary values - Added has_or_had_currency.yaml to track currency associated with monetary amounts, compliant with ISO 4217. feat: Introduce has_or_had_head slot for organizational heads - Added has_or_had_head.yaml to link organizational units with their heads, following W3C ORG standards. --- .../schemas/20251121/linkml/manifest.json | 43 ++- .../modules/classes/CallForApplication.yaml | 32 ++- .../modules/classes/FinancialStatement.yaml | 31 ++- .../linkml/modules/classes/GrantRange.yaml | 155 +++++++++++ .../linkml/modules/classes/Revenue.yaml | 259 ++++++++++++++++++ ...ypical_grant_range_archived_20260114.yaml} | 0 .../modules/slots/has_or_had_range.yaml | 89 ++++++ .../modules/slots/has_or_had_revenue.yaml | 102 +++++++ .../modules/slots/maximal_of_maximal.yaml | 78 ++++++ .../modules/slots/minimal_of_minimal.yaml | 78 ++++++ .../linkml/modules/slots/slot_fixes.yaml | 10 + schemas/20251121/linkml/manifest.json | 43 ++- .../modules/classes/FinancialStatement.yaml | 59 +++- .../linkml/modules/classes/Rationale.yaml | 63 +++++ .../linkml/modules/classes/Restriction.yaml | 64 +++++ .../linkml/modules/classes/Revenue.yaml | 259 ++++++++++++++++++ .../linkml/modules/classes/SecurityLevel.yaml | 65 +++++ .../linkml/modules/classes/TextSegment.yaml | 61 +++++ .../linkml/modules/classes/WritingSystem.yaml | 68 +++++ .../linkml/modules/classes/XPathScore.yaml | 58 ++++ .../total_revenue_archived_20260114.yaml} | 0 .../modules/slots/has_or_had_condition.yaml | 39 +++ .../modules/slots/has_or_had_domain.yaml | 39 +++ .../modules/slots/has_or_had_feature.yaml | 39 +++ .../modules/slots/has_or_had_method.yaml | 38 +++ .../slots/has_or_had_responsibility.yaml | 39 +++ .../modules/slots/has_or_had_revenue.yaml | 102 +++++++ .../modules/slots/has_or_had_standard.yaml | 39 +++ .../modules/slots/has_or_had_treatment.yaml | 36 +++ .../modules/slots/has_or_had_venue.yaml | 39 +++ .../slots/has_or_had_verification_status.yaml | 35 +++ .../modules/slots/has_or_had_version.yaml | 38 +++ .../modules/slots/is_or_was_verified_by.yaml | 36 +++ .../linkml/modules/slots/manifest.json | 71 ++++- .../modules/slots/serves_or_served.yaml | 39 +++ .../linkml/modules/slots/slot_fixes.yaml | 77 +++++- 36 files changed, 2289 insertions(+), 34 deletions(-) create mode 100644 frontend/public/schemas/20251121/linkml/modules/classes/GrantRange.yaml create mode 100644 frontend/public/schemas/20251121/linkml/modules/classes/Revenue.yaml rename frontend/public/schemas/20251121/linkml/modules/slots/{typical_grant_range.yaml => archive/typical_grant_range_archived_20260114.yaml} (100%) create mode 100644 frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_range.yaml create mode 100644 frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml create mode 100644 frontend/public/schemas/20251121/linkml/modules/slots/maximal_of_maximal.yaml create mode 100644 frontend/public/schemas/20251121/linkml/modules/slots/minimal_of_minimal.yaml create mode 100644 schemas/20251121/linkml/modules/classes/Rationale.yaml create mode 100644 schemas/20251121/linkml/modules/classes/Restriction.yaml create mode 100644 schemas/20251121/linkml/modules/classes/Revenue.yaml create mode 100644 schemas/20251121/linkml/modules/classes/SecurityLevel.yaml create mode 100644 schemas/20251121/linkml/modules/classes/TextSegment.yaml create mode 100644 schemas/20251121/linkml/modules/classes/WritingSystem.yaml create mode 100644 schemas/20251121/linkml/modules/classes/XPathScore.yaml rename schemas/20251121/linkml/modules/slots/{total_revenue.yaml => archive/total_revenue_archived_20260114.yaml} (100%) create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_condition.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_domain.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_feature.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_method.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_responsibility.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_standard.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_treatment.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_venue.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_verification_status.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_version.yaml create mode 100644 schemas/20251121/linkml/modules/slots/is_or_was_verified_by.yaml create mode 100644 schemas/20251121/linkml/modules/slots/serves_or_served.yaml diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index e4a47a69b6..8678d56ca5 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,12 +1,12 @@ { - "generated": "2026-01-14T19:01:57.459Z", + "generated": "2026-01-14T19:07:20.066Z", "schemaRoot": "/schemas/20251121/linkml", - "totalFiles": 2957, + "totalFiles": 2962, "categoryCounts": { "main": 4, - "class": 718, + "class": 720, "enum": 151, - "slot": 2080, + "slot": 2083, "module": 4 }, "categories": [ @@ -1420,6 +1420,11 @@ "path": "modules/classes/GovernmentArchiveRecordSetTypes.yaml", "category": "class" }, + { + "name": "GrantRange", + "path": "modules/classes/GrantRange.yaml", + "category": "class" + }, { "name": "HeritageExperienceEntry", "path": "modules/classes/HeritageExperienceEntry.yaml", @@ -2730,6 +2735,11 @@ "path": "modules/classes/ResearchSourceData.yaml", "category": "class" }, + { + "name": "Revenue", + "path": "modules/classes/Revenue.yaml", + "category": "class" + }, { "name": "ReviewBreakdown", "path": "modules/classes/ReviewBreakdown.yaml", @@ -8822,6 +8832,11 @@ "path": "modules/slots/has_or_had_quantity.yaml", "category": "slot" }, + { + "name": "has_or_had_range", + "path": "modules/slots/has_or_had_range.yaml", + "category": "slot" + }, { "name": "has_or_had_rationale", "path": "modules/slots/has_or_had_rationale.yaml", @@ -8887,6 +8902,11 @@ "path": "modules/slots/has_or_had_resulting_unit.yaml", "category": "slot" }, + { + "name": "has_or_had_revenue", + "path": "modules/slots/has_or_had_revenue.yaml", + "category": "slot" + }, { "name": "has_or_had_safeguard", "path": "modules/slots/has_or_had_safeguard.yaml", @@ -10667,6 +10687,11 @@ "path": "modules/slots/max_likelihood_score.yaml", "category": "slot" }, + { + "name": "maximal_of_maximal", + "path": "modules/slots/maximal_of_maximal.yaml", + "category": "slot" + }, { "name": "maximum_amount", "path": "modules/slots/maximum_amount.yaml", @@ -10727,6 +10752,11 @@ "path": "modules/slots/michelin_star.yaml", "category": "slot" }, + { + "name": "minimal_of_minimal", + "path": "modules/slots/minimal_of_minimal.yaml", + "category": "slot" + }, { "name": "minimum_amount", "path": "modules/slots/minimum_amount.yaml", @@ -14352,11 +14382,6 @@ "path": "modules/slots/typical_domain.yaml", "category": "slot" }, - { - "name": "typical_grant_range", - "path": "modules/slots/typical_grant_range.yaml", - "category": "slot" - }, { "name": "typical_http_methods", "path": "modules/slots/typical_http_methods.yaml", diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/CallForApplication.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/CallForApplication.yaml index 436cdaf1ff..284f67bf66 100644 --- a/frontend/public/schemas/20251121/linkml/modules/classes/CallForApplication.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/classes/CallForApplication.yaml @@ -45,7 +45,11 @@ imports: - ../slots/template_specificity - ../slots/thematic_area - ../slots/total_budget -- ../slots/typical_grant_range +- ../slots/has_or_had_range +- ./GrantRange +- ./Quantity +- ./MeasureUnit +- ../enums/MeasureUnitEnum - ../slots/web_observation - ./SpecificityAnnotation - ./TemplateSpecificityScores @@ -122,7 +126,7 @@ classes: - template_specificity - thematic_area - total_budget - - typical_grant_range + - has_or_had_range - web_observation slot_usage: call_id: @@ -249,7 +253,17 @@ classes: application_deadline: '2025-09-16' results_expected_date: '2026-03-01' total_budget: 82.5M EUR - typical_grant_range: 2M-4M EUR per project + has_or_had_range: + - minimal_of_minimal: + quantity_value: 2000000 + has_or_had_measurement_unit: + unit_label: EUR + maximal_of_maximal: + quantity_value: 4000000 + has_or_had_measurement_unit: + unit_label: EUR + range_description: Typical project funding range + range_currency: EUR eligible_applicant: - Public bodies - Research organisations @@ -309,7 +323,17 @@ classes: call_status: OPEN call_url: https://www.heritagefund.org.uk/funding/medium-grants application_deadline: '2025-12-31' - typical_grant_range: £250K-£5M + has_or_had_range: + - minimal_of_minimal: + quantity_value: 250000 + has_or_had_measurement_unit: + unit_label: GBP + maximal_of_maximal: + quantity_value: 5000000 + has_or_had_measurement_unit: + unit_label: GBP + range_description: Medium grants funding range + range_currency: GBP eligible_applicant: - Not-for-profit organisations - Local authorities diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml index e025469502..e7129a066e 100644 --- a/frontend/public/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml @@ -41,7 +41,8 @@ imports: - ../slots/total_expense - ../slots/total_liability - ../slots/total_net_asset -- ../slots/total_revenue +- ../slots/has_or_had_revenue +- ./Revenue - ../slots/valid_from - ../slots/valid_to - ../slots/was_derived_from @@ -139,7 +140,7 @@ classes: - total_expense - total_liability - total_net_asset - - total_revenue + - has_or_had_revenue - valid_from - valid_to - was_derived_from @@ -173,9 +174,31 @@ classes: - value: EUR - value: USD - value: GBP - total_revenue: - range: decimal + has_or_had_revenue: + range: Revenue + multivalued: true + inlined: true + inlined_as_list: true required: false + description: >- + Structured revenue data with amount, currency, and time period. + Replaces simple decimal total_revenue field with rich Revenue class. + Rule 53: Branch 1 = Currency, Branch 2 = TimeInterval. + examples: + - value: + - has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + description: Total revenue for Dutch museum annual report total_expense: range: decimal required: false diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/GrantRange.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/GrantRange.yaml new file mode 100644 index 0000000000..d1c1ab4cb1 --- /dev/null +++ b/frontend/public/schemas/20251121/linkml/modules/classes/GrantRange.yaml @@ -0,0 +1,155 @@ +# GrantRange - Structured representation of funding/grant amount ranges +# Created per slot_fixes.yaml migration for: typical_grant_range +# Creation date: 2026-01-14 +# +# REVISION FROM slot_fixes.yaml (lines 2166-2183): +# - label: GrantRange (class) ← THIS FILE +# - link_branch 1: minimal_of_minimal → Quantity +# - link_branch 2: maximal_of_maximal → Quantity +# +# Rule compliance: 38 (slot centralization), 51 (ontology verification), 53 (slot_fixes.yaml) + +id: https://nde.nl/ontology/hc/class/GrantRange +name: grant_range_class +title: GrantRange Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + schema: http://schema.org/ + +imports: + - linkml:types + - ../slots/minimal_of_minimal + - ../slots/maximal_of_maximal + - ./Quantity + - ./MeasureUnit + - ../enums/MeasureUnitEnum + +default_prefix: hc + +classes: + GrantRange: + class_uri: crm:E54_Dimension + description: | + Structured representation of a funding or grant amount range. + + **PURPOSE**: + Replaces string-based grant ranges like "€100K-€500K" with structured data + enabling comparison, filtering, and currency-aware analytics. + + **STRUCTURE** (per slot_fixes.yaml): + - `minimal_of_minimal` → Quantity (branch 1): Lower bound with amount and currency + - `maximal_of_maximal` → Quantity (branch 2): Upper bound with amount and currency + + **CIDOC-CRM Alignment**: + Maps to E54_Dimension which represents quantifiable properties, + using P90a/P90b for lower/upper value limits. + + **USE CASES**: + - Heritage grant programs (Mondriaan Fund, EU Creative Europe) + - Digitization funding ranges + - Conservation project budgets + - Research grant parameters + + **EXAMPLE** - Creative Europe Grant: + ```yaml + has_or_had_range: + - minimal_of_minimal: + quantity_value: 60000 + has_or_had_measurement_unit: + unit_label: "EUR" + maximal_of_maximal: + quantity_value: 200000 + has_or_had_measurement_unit: + unit_label: "EUR" + range_description: "Small-scale cooperation projects" + ``` + + exact_mappings: + - crm:E54_Dimension + + close_mappings: + - schema:MonetaryAmount + - schema:QuantitativeValue + + slots: + - minimal_of_minimal + - maximal_of_maximal + + attributes: + range_description: + range: string + description: Human-readable description of what this range represents. + examples: + - value: "Typical project funding range" + - value: "Small-scale cooperation projects" + - value: "Heritage digitization grants" + + range_currency: + range: string + description: | + ISO 4217 currency code for the range (convenience field). + Should match currency in minimal_of_minimal/maximal_of_maximal Quantities. + pattern: "^[A-Z]{3}$" + examples: + - value: "EUR" + - value: "USD" + - value: "GBP" + + range_notes: + range: string + description: Additional notes about range applicability or conditions. + examples: + - value: "Maximum 80% of total project budget" + - value: "Co-financing required" + + slot_usage: + minimal_of_minimal: + range: Quantity + inlined: true + required: false + description: Lower bound of the grant range (e.g., minimum funding amount). + maximal_of_maximal: + range: Quantity + inlined: true + required: false + description: Upper bound of the grant range (e.g., maximum funding amount). + + comments: + - Created from slot_fixes.yaml migration (2026-01-14) + - Replaces string-based typical_grant_range slot + - Enables structured comparison and filtering of funding opportunities + - Currency-aware through Quantity class integration + + see_also: + - https://cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E54 + + examples: + - value: + minimal_of_minimal: + quantity_value: 100000 + has_or_had_measurement_unit: + unit_label: "EUR" + maximal_of_maximal: + quantity_value: 500000 + has_or_had_measurement_unit: + unit_label: "EUR" + range_description: "Medium-scale heritage projects" + range_currency: "EUR" + description: EU Creative Europe medium project grant range + + - value: + minimal_of_minimal: + quantity_value: 250000 + has_or_had_measurement_unit: + unit_label: "GBP" + maximal_of_maximal: + quantity_value: 5000000 + has_or_had_measurement_unit: + unit_label: "GBP" + range_description: "National Lottery Heritage Fund grants" + range_currency: "GBP" + range_notes: "Maximum 90% of total costs for projects over £1M" + description: UK National Lottery Heritage Fund grant range diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/Revenue.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/Revenue.yaml new file mode 100644 index 0000000000..b3160ea4d1 --- /dev/null +++ b/frontend/public/schemas/20251121/linkml/modules/classes/Revenue.yaml @@ -0,0 +1,259 @@ +# Revenue - Structured revenue/income for financial reporting +# Created per slot_fixes.yaml migration for: total_revenue +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/Revenue +name: Revenue +title: Revenue Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + frapo: http://purl.org/cerif/frapo/ + time: http://www.w3.org/2006/time# + +imports: + - linkml:types + - ../slots/has_or_had_identifier + - ../slots/has_or_had_label + - ../slots/has_or_had_description + - ../slots/has_or_had_quantity + - ../slots/has_or_had_currency + - ../slots/has_or_had_time_interval + - ../slots/specificity_annotation + - ../slots/template_specificity + - ./Quantity + - ./Currency + - ./TimeInterval + - ./SpecificityAnnotation + - ./TemplateSpecificityScores + +default_prefix: hc + +classes: + Revenue: + class_uri: schema:MonetaryAmount + description: >- + Structured revenue/income data for financial reporting. + + **WHY STRUCTURED REVENUE?** + + Simple decimal fields like `total_revenue: 78500000.0` lose important context: + - What currency? (EUR, USD, GBP?) + - What time period? (FY2023, Q1 2024?) + - What type of revenue? (grants, program, investment?) + + The Revenue class captures this richness: + - `has_or_had_quantity`: Monetary amount with value and optional unit + - `has_or_had_currency`: ISO 4217 currency (EUR, USD, etc.) + - `has_or_had_time_interval`: Reporting period (annual, quarterly) + + **REVENUE CATEGORIES** (nonprofit context): + + | Category | Description | + |----------|-------------| + | CONTRIBUTIONS | Donations and gifts | + | GRANTS | Foundation and government grants | + | PROGRAM_SERVICE | Earned income from programs | + | INVESTMENT | Interest, dividends, gains | + | OTHER | Miscellaneous income | + + **SCHEMA.ORG ALIGNMENT**: + + Maps to `schema:MonetaryAmount` - "A monetary value or range." + + **EXAMPLE**: + + ```yaml + Revenue: + has_or_had_identifier: https://nde.nl/ontology/hc/revenue/rm/fy2023 + has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + ``` + + **RULE 53 COMPLIANT**: Created per slot_fixes.yaml revision for total_revenue. + Branch 1: has_or_had_currency → Currency + Branch 2: has_or_had_time_interval → TimeInterval + + exact_mappings: + - schema:MonetaryAmount + + close_mappings: + - frapo:Funding + + related_mappings: + - schema:priceSpecification + + slots: + - has_or_had_identifier + - has_or_had_label + - has_or_had_description + - has_or_had_quantity + - has_or_had_currency + - has_or_had_time_interval + - revenue_category + - specificity_annotation + - template_specificity + + slot_usage: + has_or_had_identifier: + range: uriorcurie + required: false + identifier: true + description: >- + Optional identifier for this revenue record. + examples: + - value: https://nde.nl/ontology/hc/revenue/rm/fy2023 + description: Rijksmuseum FY2023 total revenue + + has_or_had_label: + range: string + required: false + description: >- + Human-readable label for this revenue. + examples: + - value: "Total Revenue FY2023" + - value: "Q1 2024 Program Revenue" + + has_or_had_description: + range: string + required: false + description: >- + Detailed description of what this revenue represents. + examples: + - value: "Total revenue including contributions, grants, program service revenue, and investment income" + + has_or_had_quantity: + range: Quantity + required: true + inlined: true + description: >- + The monetary amount of revenue. + Uses Quantity class for value with optional unit. + examples: + - value: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + description: Total revenue amount + + has_or_had_currency: + range: Currency + required: true + inlined: true + description: >- + The currency for this revenue amount. + Branch 1 from slot_fixes.yaml revision. + examples: + - value: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + description: Euro currency + - value: + currency_code: USD + has_or_had_label: US Dollar + currency_symbol: "$" + description: US Dollar currency + + has_or_had_time_interval: + range: TimeInterval + required: false + inlined: true + description: >- + The reporting period for this revenue. + Branch 2 from slot_fixes.yaml revision. + examples: + - value: + duration_value: "P1Y" + duration_description: "annual" + description: Annual revenue + - value: + duration_value: "P3M" + duration_description: "quarterly" + description: Quarterly revenue + + revenue_category: + range: string + required: false + description: >- + Category of revenue (TOTAL, CONTRIBUTIONS, GRANTS, PROGRAM_SERVICE, INVESTMENT, OTHER). + examples: + - value: TOTAL + description: Total revenue (sum of all categories) + - value: CONTRIBUTIONS + description: Donations and gifts + - value: GRANTS + description: Foundation and government grants + - value: PROGRAM_SERVICE + description: Earned income from programs + + comments: + - Revenue models structured monetary income with currency and time period + - Replaces simple decimal total_revenue field + - Uses Schema.org MonetaryAmount as primary ontology mapping + - Supports nonprofit revenue categories (contributions, grants, program, investment) + - Rule 53: Branch 1 = Currency, Branch 2 = TimeInterval + + see_also: + - https://schema.org/MonetaryAmount + - https://nde.nl/ontology/hc/class/FinancialStatement + - https://nde.nl/ontology/hc/class/Budget + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Revenue tracking applicable to all heritage custodian types with financial reporting. + custodian_types_primary: M + specificity_score: 0.55 + specificity_rationale: >- + Moderate specificity - primarily relevant for financial statement contexts. + + examples: + - value: + has_or_had_identifier: https://nde.nl/ontology/hc/revenue/rm/fy2023 + has_or_had_label: "Total Revenue FY2023" + has_or_had_description: "Total revenue including contributions, grants, program service revenue, and investment income for fiscal year 2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + description: Major museum annual total revenue (Rule 53 pattern) + + - value: + has_or_had_label: "Form 990 Total Revenue FY2022" + has_or_had_quantity: + quantity_value: 439000000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: USD + has_or_had_label: US Dollar + currency_symbol: "$" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year July 2022 - June 2023" + revenue_category: TOTAL + description: US nonprofit Form 990 total revenue + +slots: + revenue_category: + description: >- + Category of revenue (TOTAL, CONTRIBUTIONS, GRANTS, PROGRAM_SERVICE, INVESTMENT, OTHER). + range: string + slot_uri: hc:revenueCategory diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/typical_grant_range.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/typical_grant_range_archived_20260114.yaml similarity index 100% rename from frontend/public/schemas/20251121/linkml/modules/slots/typical_grant_range.yaml rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/typical_grant_range_archived_20260114.yaml diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_range.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_range.yaml new file mode 100644 index 0000000000..839ea23bd6 --- /dev/null +++ b/frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_range.yaml @@ -0,0 +1,89 @@ +# has_or_had_range - Links to a GrantRange instance +# Created per slot_fixes.yaml migration for: typical_grant_range +# Creation date: 2026-01-14 +# +# REVISION FROM slot_fixes.yaml (lines 2166-2183): +# - label: has_or_had_range (slot) ← THIS FILE +# - label: GrantRange (class) +# - link_branch 1: minimal_of_minimal → Quantity +# - link_branch 2: maximal_of_maximal → Quantity +# +# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 51 (ontology verification), 53 (slot_fixes.yaml) + +id: https://nde.nl/ontology/hc/slot/has_or_had_range +name: has_or_had_range_slot +title: Has Or Had Range Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + schema: http://schema.org/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + has_or_had_range: + slot_uri: crm:P43_has_dimension + description: | + Links to a GrantRange instance representing a structured value range. + + **TEMPORAL SEMANTICS** (RiC-O style): + The "has_or_had" naming indicates that ranges can change over time: + - Funding limits adjusted annually + - Budget allocation varies by program year + - Policy changes modify grant parameters + + **REPLACES**: `typical_grant_range` (string slot) + + **IMPROVEMENT OVER STRING**: + - Structured min/max bounds + - Currency-aware amounts + - Comparable across programs + - Machine-readable for analytics + + **CIDOC-CRM Alignment**: + Uses P43 has dimension as the primary predicate since ranges are + a form of dimensional measurement on entities. + + range: GrantRange + inlined: true + multivalued: true + + exact_mappings: + - crm:P43_has_dimension + + close_mappings: + - schema:priceRange + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Applicable to any custodian type involved in funding or grants. + custodian_types_primary: "*" + specificity_score: 0.50 + specificity_rationale: >- + Moderate specificity - relevant to funding programs and grant applications. + + examples: + - value: | + has_or_had_range: + - minimal_of_minimal: + quantity_value: 100000 + has_or_had_measurement_unit: + unit_label: "EUR" + maximal_of_maximal: + quantity_value: 500000 + has_or_had_measurement_unit: + unit_label: "EUR" + range_description: "Typical project funding range" + description: Grant range of €100K-€500K + + comments: + - Created from slot_fixes.yaml migration (2026-01-14) + - Replaces simple string typical_grant_range slot + - Supports structured min/max with currency + - Multivalued for different range categories diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml new file mode 100644 index 0000000000..794aa03bea --- /dev/null +++ b/frontend/public/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml @@ -0,0 +1,102 @@ +# has_or_had_revenue - Links to structured revenue data +# Created per slot_fixes.yaml migration for: total_revenue +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_revenue +name: has_or_had_revenue_slot +title: Has Or Had Revenue Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + frapo: http://purl.org/cerif/frapo/ + +imports: + - linkml:types + +default_prefix: hc + +slots: + has_or_had_revenue: + description: >- + Links to structured revenue/income data for financial reporting. + + **TEMPORAL SEMANTICS** (RiC-O style): + The "has_or_had" naming indicates that revenue associations can change: + - Annual revenue figures are period-specific + - Historical revenue records remain relevant + - Revenue tracking spans fiscal years + + **USE CASES**: + - Financial statements: Total revenue for reporting period + - Budget comparisons: Actual vs. planned revenue + - Trend analysis: Revenue over multiple years + + **REPLACES**: Simple `total_revenue: decimal` field + + **WHY STRUCTURED?** + - Currency context (EUR, USD, GBP) + - Time period (annual, quarterly) + - Revenue category (contributions, grants, program, investment) + + **SCHEMA.ORG**: schema:MonetaryAmount for monetary values. + + range: Revenue + slot_uri: schema:totalRevenue + inlined: true + multivalued: true + + exact_mappings: + - schema:totalRevenue + + close_mappings: + - frapo:hasFunding + + related_mappings: + - schema:MonetaryAmount + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Revenue tracking applicable to all custodian types with financial reporting. + custodian_types_primary: M + specificity_score: 0.55 + specificity_rationale: >- + Moderate specificity - primarily relevant for financial statement contexts. + + examples: + - value: + - has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + description: Annual total revenue for Dutch museum + + - value: + - has_or_had_label: "Form 990 Total Revenue" + has_or_had_quantity: + quantity_value: 439000000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: USD + currency_symbol: "$" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2022" + revenue_category: TOTAL + description: US nonprofit Form 990 total revenue + + comments: + - Created from slot_fixes.yaml migration (2026-01-14) + - Replaces simple decimal total_revenue field with structured Revenue class + - Branch 1: has_or_had_currency → Currency + - Branch 2: has_or_had_time_interval → TimeInterval + - Uses Schema.org totalRevenue as slot_uri diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/maximal_of_maximal.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/maximal_of_maximal.yaml new file mode 100644 index 0000000000..124b230b0b --- /dev/null +++ b/frontend/public/schemas/20251121/linkml/modules/slots/maximal_of_maximal.yaml @@ -0,0 +1,78 @@ +# maximal_of_maximal - Upper bound value of a range +# Created per slot_fixes.yaml migration for: typical_grant_range +# Creation date: 2026-01-14 +# +# REVISION FROM slot_fixes.yaml (lines 2166-2183): +# - original_slot_id: typical_grant_range +# - label: maximal_of_maximal (slot) ← THIS FILE +# - link_branch 2: Quantity +# +# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 51 (ontology verification), 53 (slot_fixes.yaml) + +id: https://nde.nl/ontology/hc/slot/maximal_of_maximal +name: maximal_of_maximal_slot +title: Maximal of Maximal Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + schema: http://schema.org/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + maximal_of_maximal: + slot_uri: crm:P90b_has_upper_value_limit + description: | + Upper bound value of a range (CIDOC-CRM pattern for dimensional ranges). + + **CIDOC-CRM Alignment**: + Maps to P90b_has_upper_value_limit which defines the highest value that + a dimension may have within an instance of E54 Dimension. + + **USE CASE - Grant Ranges**: + For grant funding ranges like "€100K-€500K": + - minimal_of_minimal: Quantity(100000, EUR) + - maximal_of_maximal: Quantity(500000, EUR) + + **TEMPORAL CONTEXT**: + Named "maximal_of_maximal" (not just "maximum") to acknowledge that the + upper bound itself may have uncertainty - this is the maximum of the maximum. + + range: Quantity + inlined: true + required: false + multivalued: false + + exact_mappings: + - crm:P90b_has_upper_value_limit + + close_mappings: + - schema:maxValue + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Applicable to all custodian types dealing with quantities that have ranges. + custodian_types_primary: "*" + specificity_score: 0.35 + specificity_rationale: >- + General utility slot for expressing upper bounds of any measured range. + + examples: + - value: | + maximal_of_maximal: + quantity_value: 500000 + has_or_had_measurement_unit: + unit_label: "EUR" + description: Upper bound of €500K for grant range + + comments: + - Created from slot_fixes.yaml migration (2026-01-14) + - Part of GrantRange class (branch 2 per slot_fixes.yaml) + - CIDOC-CRM P90b for dimensional upper bounds + - Works with minimal_of_minimal for complete range specification diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/minimal_of_minimal.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/minimal_of_minimal.yaml new file mode 100644 index 0000000000..4db3bb1e46 --- /dev/null +++ b/frontend/public/schemas/20251121/linkml/modules/slots/minimal_of_minimal.yaml @@ -0,0 +1,78 @@ +# minimal_of_minimal - Lower bound value of a range +# Created per slot_fixes.yaml migration for: typical_grant_range +# Creation date: 2026-01-14 +# +# REVISION FROM slot_fixes.yaml (lines 2166-2183): +# - original_slot_id: typical_grant_range +# - label: minimal_of_minimal (slot) ← THIS FILE +# - link_branch 1: Quantity +# +# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 51 (ontology verification), 53 (slot_fixes.yaml) + +id: https://nde.nl/ontology/hc/slot/minimal_of_minimal +name: minimal_of_minimal_slot +title: Minimal of Minimal Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + schema: http://schema.org/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + minimal_of_minimal: + slot_uri: crm:P90a_has_lower_value_limit + description: | + Lower bound value of a range (CIDOC-CRM pattern for dimensional ranges). + + **CIDOC-CRM Alignment**: + Maps to P90a_has_lower_value_limit which defines the lowest value that + a dimension may have within an instance of E54 Dimension. + + **USE CASE - Grant Ranges**: + For grant funding ranges like "€100K-€500K": + - minimal_of_minimal: Quantity(100000, EUR) + - maximal_of_maximal: Quantity(500000, EUR) + + **TEMPORAL CONTEXT**: + Named "minimal_of_minimal" (not just "minimum") to acknowledge that the + lower bound itself may have uncertainty - this is the minimum of the minimum. + + range: Quantity + inlined: true + required: false + multivalued: false + + exact_mappings: + - crm:P90a_has_lower_value_limit + + close_mappings: + - schema:minValue + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Applicable to all custodian types dealing with quantities that have ranges. + custodian_types_primary: "*" + specificity_score: 0.35 + specificity_rationale: >- + General utility slot for expressing lower bounds of any measured range. + + examples: + - value: | + minimal_of_minimal: + quantity_value: 100000 + has_or_had_measurement_unit: + unit_label: "EUR" + description: Lower bound of €100K for grant range + + comments: + - Created from slot_fixes.yaml migration (2026-01-14) + - Part of GrantRange class (branch 1 per slot_fixes.yaml) + - CIDOC-CRM P90a for dimensional lower bounds + - Works with maximal_of_maximal for complete range specification diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index a0875d6444..e2b9d12e02 100644 --- a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -2181,6 +2181,16 @@ fixes: - label: Quantity type: class link_branch: 2 + processed: + status: true + date: "2026-01-14" + notes: | + Migration completed for typical_grant_range slot. + Created: GrantRange class, has_or_had_range slot, minimal_of_minimal slot, maximal_of_maximal slot + Branch 1: minimal_of_minimal → Quantity (reused existing) + Branch 2: maximal_of_maximal → Quantity (reused existing) + Consuming classes updated: CallForApplication.yaml + Archived slot: modules/slots/archive/typical_grant_range_archived_20260114.yaml - original_slot_id: https://nde.nl/ontology/hc/slot/typical_domain revision: - label: has_or_had_domain diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index 508802aadd..750e3d3028 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,12 +1,12 @@ { - "generated": "2026-01-14T19:03:25.181Z", + "generated": "2026-01-14T19:18:40.281Z", "schemaRoot": "/schemas/20251121/linkml", - "totalFiles": 2957, + "totalFiles": 2962, "categoryCounts": { "main": 4, - "class": 718, + "class": 720, "enum": 151, - "slot": 2080, + "slot": 2083, "module": 4 }, "categories": [ @@ -1420,6 +1420,11 @@ "path": "modules/classes/GovernmentArchiveRecordSetTypes.yaml", "category": "class" }, + { + "name": "GrantRange", + "path": "modules/classes/GrantRange.yaml", + "category": "class" + }, { "name": "HeritageExperienceEntry", "path": "modules/classes/HeritageExperienceEntry.yaml", @@ -2730,6 +2735,11 @@ "path": "modules/classes/ResearchSourceData.yaml", "category": "class" }, + { + "name": "Revenue", + "path": "modules/classes/Revenue.yaml", + "category": "class" + }, { "name": "ReviewBreakdown", "path": "modules/classes/ReviewBreakdown.yaml", @@ -8822,6 +8832,11 @@ "path": "modules/slots/has_or_had_quantity.yaml", "category": "slot" }, + { + "name": "has_or_had_range", + "path": "modules/slots/has_or_had_range.yaml", + "category": "slot" + }, { "name": "has_or_had_rationale", "path": "modules/slots/has_or_had_rationale.yaml", @@ -8887,6 +8902,11 @@ "path": "modules/slots/has_or_had_resulting_unit.yaml", "category": "slot" }, + { + "name": "has_or_had_revenue", + "path": "modules/slots/has_or_had_revenue.yaml", + "category": "slot" + }, { "name": "has_or_had_safeguard", "path": "modules/slots/has_or_had_safeguard.yaml", @@ -10667,6 +10687,11 @@ "path": "modules/slots/max_likelihood_score.yaml", "category": "slot" }, + { + "name": "maximal_of_maximal", + "path": "modules/slots/maximal_of_maximal.yaml", + "category": "slot" + }, { "name": "maximum_amount", "path": "modules/slots/maximum_amount.yaml", @@ -10727,6 +10752,11 @@ "path": "modules/slots/michelin_star.yaml", "category": "slot" }, + { + "name": "minimal_of_minimal", + "path": "modules/slots/minimal_of_minimal.yaml", + "category": "slot" + }, { "name": "minimum_amount", "path": "modules/slots/minimum_amount.yaml", @@ -14352,11 +14382,6 @@ "path": "modules/slots/typical_domain.yaml", "category": "slot" }, - { - "name": "typical_grant_range", - "path": "modules/slots/typical_grant_range.yaml", - "category": "slot" - }, { "name": "typical_http_methods", "path": "modules/slots/typical_http_methods.yaml", diff --git a/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml b/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml index e025469502..d8a92c5ce1 100644 --- a/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml +++ b/schemas/20251121/linkml/modules/classes/FinancialStatement.yaml @@ -41,7 +41,8 @@ imports: - ../slots/total_expense - ../slots/total_liability - ../slots/total_net_asset -- ../slots/total_revenue +- ../slots/has_or_had_revenue +- ./Revenue - ../slots/valid_from - ../slots/valid_to - ../slots/was_derived_from @@ -139,7 +140,7 @@ classes: - total_expense - total_liability - total_net_asset - - total_revenue + - has_or_had_revenue - valid_from - valid_to - was_derived_from @@ -173,9 +174,31 @@ classes: - value: EUR - value: USD - value: GBP - total_revenue: - range: decimal + has_or_had_revenue: + range: Revenue + multivalued: true + inlined: true + inlined_as_list: true required: false + description: >- + Structured revenue data with amount, currency, and time period. + Replaces simple decimal total_revenue field with rich Revenue class. + Rule 53: Branch 1 = Currency, Branch 2 = TimeInterval. + examples: + - value: + - has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + description: Total revenue for Dutch museum annual report total_expense: range: decimal required: false @@ -303,7 +326,19 @@ classes: reporting_period_end: '2023-12-31' publication_date: '2024-04-15' statement_currency: EUR - total_revenue: 78500000.0 + has_or_had_revenue: + - has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL total_expenses: 75200000.0 change_in_net_assets: 3300000.0 total_assets: 125000000.0 @@ -342,7 +377,19 @@ classes: reporting_period_end: '2023-06-30' publication_date: '2024-02-15' statement_currency: USD - total_revenue: 439000000.0 + has_or_had_revenue: + - has_or_had_label: "Form 990 Total Revenue FY2022" + has_or_had_quantity: + quantity_value: 439000000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: USD + has_or_had_label: US Dollar + currency_symbol: "$" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year July 2022 - June 2023" + revenue_category: TOTAL total_expenses: 412000000.0 change_in_net_assets: 27000000.0 total_assets: 5200000000.0 diff --git a/schemas/20251121/linkml/modules/classes/Rationale.yaml b/schemas/20251121/linkml/modules/classes/Rationale.yaml new file mode 100644 index 0000000000..6ffee12110 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/Rationale.yaml @@ -0,0 +1,63 @@ +# Rationale - Rationale/justification class +# +# Created per slot_fixes.yaml migration for: wikidata_mapping_rationale +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/Rationale +name: Rationale +title: Rationale + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + prov: http://www.w3.org/ns/prov# + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_rationale + +classes: + Rationale: + class_uri: skos:note + description: | + A rationale or justification for a decision. + + **USAGE**: + Used for: + - Mapping rationale (Wikidata, ontology alignments) + - Decision justifications + - Methodology explanations + + slots: + - has_or_had_rationale + + attributes: + decision_type: + range: string + description: Type of decision (MAPPING, CLASSIFICATION, EXCLUSION) + + confidence: + range: float + description: Confidence level in the decision (0.0-1.0) + + alternatives_considered: + range: string + multivalued: true + description: Alternative options that were considered + + close_mappings: + - prov:wasInfluencedBy + + annotations: + specificity_score: "0.45" + specificity_rationale: "Moderately specific - rationale documentation is common." + + examples: + - value: + has_or_had_rationale: "Mapped based on exact name match and location" + decision_type: MAPPING + confidence: 0.95 + description: Wikidata mapping rationale diff --git a/schemas/20251121/linkml/modules/classes/Restriction.yaml b/schemas/20251121/linkml/modules/classes/Restriction.yaml new file mode 100644 index 0000000000..2b0aa98203 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/Restriction.yaml @@ -0,0 +1,64 @@ +# Restriction - Access/use restriction class +# +# Created per slot_fixes.yaml migration for: years_restricted +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/Restriction +name: Restriction +title: Restriction + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + dct: http://purl.org/dc/terms/ + +default_prefix: hc + +imports: + - linkml:types + +classes: + Restriction: + class_uri: dct:RightsStatement + description: | + An access or use restriction on a resource. + + **USAGE**: + Used for: + - Embargo periods (years restricted) + - Access restrictions + - Use limitations + + slots: [] + + attributes: + restriction_type: + range: string + description: Type of restriction (EMBARGO, ACCESS, USE) + examples: + - value: "EMBARGO" + + years: + range: integer + description: Number of years for time-based restrictions + examples: + - value: 25 + + restriction_reason: + range: string + description: Reason for the restriction + + exact_mappings: + - dct:RightsStatement + + annotations: + specificity_score: "0.45" + specificity_rationale: "Moderately specific - restrictions are common in heritage domain." + + examples: + - value: + restriction_type: EMBARGO + years: 25 + restriction_reason: "Privacy protection" + description: 25-year embargo restriction diff --git a/schemas/20251121/linkml/modules/classes/Revenue.yaml b/schemas/20251121/linkml/modules/classes/Revenue.yaml new file mode 100644 index 0000000000..b3160ea4d1 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/Revenue.yaml @@ -0,0 +1,259 @@ +# Revenue - Structured revenue/income for financial reporting +# Created per slot_fixes.yaml migration for: total_revenue +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/Revenue +name: Revenue +title: Revenue Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + frapo: http://purl.org/cerif/frapo/ + time: http://www.w3.org/2006/time# + +imports: + - linkml:types + - ../slots/has_or_had_identifier + - ../slots/has_or_had_label + - ../slots/has_or_had_description + - ../slots/has_or_had_quantity + - ../slots/has_or_had_currency + - ../slots/has_or_had_time_interval + - ../slots/specificity_annotation + - ../slots/template_specificity + - ./Quantity + - ./Currency + - ./TimeInterval + - ./SpecificityAnnotation + - ./TemplateSpecificityScores + +default_prefix: hc + +classes: + Revenue: + class_uri: schema:MonetaryAmount + description: >- + Structured revenue/income data for financial reporting. + + **WHY STRUCTURED REVENUE?** + + Simple decimal fields like `total_revenue: 78500000.0` lose important context: + - What currency? (EUR, USD, GBP?) + - What time period? (FY2023, Q1 2024?) + - What type of revenue? (grants, program, investment?) + + The Revenue class captures this richness: + - `has_or_had_quantity`: Monetary amount with value and optional unit + - `has_or_had_currency`: ISO 4217 currency (EUR, USD, etc.) + - `has_or_had_time_interval`: Reporting period (annual, quarterly) + + **REVENUE CATEGORIES** (nonprofit context): + + | Category | Description | + |----------|-------------| + | CONTRIBUTIONS | Donations and gifts | + | GRANTS | Foundation and government grants | + | PROGRAM_SERVICE | Earned income from programs | + | INVESTMENT | Interest, dividends, gains | + | OTHER | Miscellaneous income | + + **SCHEMA.ORG ALIGNMENT**: + + Maps to `schema:MonetaryAmount` - "A monetary value or range." + + **EXAMPLE**: + + ```yaml + Revenue: + has_or_had_identifier: https://nde.nl/ontology/hc/revenue/rm/fy2023 + has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + ``` + + **RULE 53 COMPLIANT**: Created per slot_fixes.yaml revision for total_revenue. + Branch 1: has_or_had_currency → Currency + Branch 2: has_or_had_time_interval → TimeInterval + + exact_mappings: + - schema:MonetaryAmount + + close_mappings: + - frapo:Funding + + related_mappings: + - schema:priceSpecification + + slots: + - has_or_had_identifier + - has_or_had_label + - has_or_had_description + - has_or_had_quantity + - has_or_had_currency + - has_or_had_time_interval + - revenue_category + - specificity_annotation + - template_specificity + + slot_usage: + has_or_had_identifier: + range: uriorcurie + required: false + identifier: true + description: >- + Optional identifier for this revenue record. + examples: + - value: https://nde.nl/ontology/hc/revenue/rm/fy2023 + description: Rijksmuseum FY2023 total revenue + + has_or_had_label: + range: string + required: false + description: >- + Human-readable label for this revenue. + examples: + - value: "Total Revenue FY2023" + - value: "Q1 2024 Program Revenue" + + has_or_had_description: + range: string + required: false + description: >- + Detailed description of what this revenue represents. + examples: + - value: "Total revenue including contributions, grants, program service revenue, and investment income" + + has_or_had_quantity: + range: Quantity + required: true + inlined: true + description: >- + The monetary amount of revenue. + Uses Quantity class for value with optional unit. + examples: + - value: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + description: Total revenue amount + + has_or_had_currency: + range: Currency + required: true + inlined: true + description: >- + The currency for this revenue amount. + Branch 1 from slot_fixes.yaml revision. + examples: + - value: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + description: Euro currency + - value: + currency_code: USD + has_or_had_label: US Dollar + currency_symbol: "$" + description: US Dollar currency + + has_or_had_time_interval: + range: TimeInterval + required: false + inlined: true + description: >- + The reporting period for this revenue. + Branch 2 from slot_fixes.yaml revision. + examples: + - value: + duration_value: "P1Y" + duration_description: "annual" + description: Annual revenue + - value: + duration_value: "P3M" + duration_description: "quarterly" + description: Quarterly revenue + + revenue_category: + range: string + required: false + description: >- + Category of revenue (TOTAL, CONTRIBUTIONS, GRANTS, PROGRAM_SERVICE, INVESTMENT, OTHER). + examples: + - value: TOTAL + description: Total revenue (sum of all categories) + - value: CONTRIBUTIONS + description: Donations and gifts + - value: GRANTS + description: Foundation and government grants + - value: PROGRAM_SERVICE + description: Earned income from programs + + comments: + - Revenue models structured monetary income with currency and time period + - Replaces simple decimal total_revenue field + - Uses Schema.org MonetaryAmount as primary ontology mapping + - Supports nonprofit revenue categories (contributions, grants, program, investment) + - Rule 53: Branch 1 = Currency, Branch 2 = TimeInterval + + see_also: + - https://schema.org/MonetaryAmount + - https://nde.nl/ontology/hc/class/FinancialStatement + - https://nde.nl/ontology/hc/class/Budget + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Revenue tracking applicable to all heritage custodian types with financial reporting. + custodian_types_primary: M + specificity_score: 0.55 + specificity_rationale: >- + Moderate specificity - primarily relevant for financial statement contexts. + + examples: + - value: + has_or_had_identifier: https://nde.nl/ontology/hc/revenue/rm/fy2023 + has_or_had_label: "Total Revenue FY2023" + has_or_had_description: "Total revenue including contributions, grants, program service revenue, and investment income for fiscal year 2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + has_or_had_label: Euro + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + description: Major museum annual total revenue (Rule 53 pattern) + + - value: + has_or_had_label: "Form 990 Total Revenue FY2022" + has_or_had_quantity: + quantity_value: 439000000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: USD + has_or_had_label: US Dollar + currency_symbol: "$" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year July 2022 - June 2023" + revenue_category: TOTAL + description: US nonprofit Form 990 total revenue + +slots: + revenue_category: + description: >- + Category of revenue (TOTAL, CONTRIBUTIONS, GRANTS, PROGRAM_SERVICE, INVESTMENT, OTHER). + range: string + slot_uri: hc:revenueCategory diff --git a/schemas/20251121/linkml/modules/classes/SecurityLevel.yaml b/schemas/20251121/linkml/modules/classes/SecurityLevel.yaml new file mode 100644 index 0000000000..6f8b59832f --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/SecurityLevel.yaml @@ -0,0 +1,65 @@ +# SecurityLevel - Security classification class +# +# Created per slot_fixes.yaml migration for: warehouse_security_level +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/SecurityLevel +name: SecurityLevel +title: Security Level + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_code + +classes: + SecurityLevel: + class_uri: skos:Concept + description: | + A security classification or level. + + **USAGE**: + Used for: + - Warehouse security levels + - Document classifications + - Access control tiers + + slots: + - has_or_had_code + + attributes: + level_name: + range: string + description: Human-readable security level name + examples: + - value: "High Security" + + level_rank: + range: integer + description: Numeric rank (higher = more secure) + + access_requirements: + range: string + multivalued: true + description: Requirements for access at this level + + exact_mappings: + - skos:Concept + + annotations: + specificity_score: "0.50" + specificity_rationale: "Moderately specific - security relevant to storage facilities." + + examples: + - value: + has_or_had_code: "HIGH" + level_name: "High Security" + level_rank: 3 + description: High security level diff --git a/schemas/20251121/linkml/modules/classes/TextSegment.yaml b/schemas/20251121/linkml/modules/classes/TextSegment.yaml new file mode 100644 index 0000000000..b35322ebea --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/TextSegment.yaml @@ -0,0 +1,61 @@ +# TextSegment - Text segment/fragment class +# +# Created per slot_fixes.yaml migration for: xpath_matched_text +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/TextSegment +name: TextSegment +title: Text Segment + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + oa: http://www.w3.org/ns/oa# + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_text + +classes: + TextSegment: + class_uri: oa:TextualBody + description: | + A segment or fragment of text extracted from a source. + + **USAGE**: + Used for: + - XPath matched text + - Extracted text fragments + - Annotation bodies + + slots: + - has_or_had_text + + attributes: + source_xpath: + range: string + description: XPath expression that selected this text + + start_offset: + range: integer + description: Character offset where segment starts + + end_offset: + range: integer + description: Character offset where segment ends + + exact_mappings: + - oa:TextualBody + + annotations: + specificity_score: "0.50" + specificity_rationale: "Moderately specific - text extraction common in web scraping." + + examples: + - value: + has_or_had_text: "The museum collection includes..." + source_xpath: "//div[@class='content']/p[1]" + description: Text segment from webpage diff --git a/schemas/20251121/linkml/modules/classes/WritingSystem.yaml b/schemas/20251121/linkml/modules/classes/WritingSystem.yaml new file mode 100644 index 0000000000..138dd0601e --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/WritingSystem.yaml @@ -0,0 +1,68 @@ +# WritingSystem - Writing system/script class +# +# Created per slot_fixes.yaml migration for: writing_system +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/WritingSystem +name: WritingSystem +title: Writing System + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_code + +classes: + WritingSystem: + class_uri: skos:Concept + description: | + A writing system or script (ISO 15924). + + **USAGE**: + Used for: + - Script identification (Latin, Cyrillic, Arabic, etc.) + - Writing direction (LTR, RTL) + - Historical scripts + + slots: + - has_or_had_code + + slot_usage: + has_or_had_code: + pattern: "^[A-Z][a-z]{3}$" + description: ISO 15924 4-letter script code + examples: + - value: "Latn" + description: Latin script + - value: "Cyrl" + description: Cyrillic script + + attributes: + script_name: + range: string + description: Human-readable name of the script + + writing_direction: + range: string + description: Writing direction (LTR, RTL, TTB) + + exact_mappings: + - skos:Concept + + annotations: + specificity_score: "0.40" + specificity_rationale: "Moderately specific - writing systems relevant across domains." + + examples: + - value: + has_or_had_code: "Latn" + script_name: "Latin" + writing_direction: "LTR" + description: Latin writing system diff --git a/schemas/20251121/linkml/modules/classes/XPathScore.yaml b/schemas/20251121/linkml/modules/classes/XPathScore.yaml new file mode 100644 index 0000000000..6cc1c6eefb --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/XPathScore.yaml @@ -0,0 +1,58 @@ +# XPathScore - XPath match score class +# +# Created per slot_fixes.yaml migration for: xpath_match_score +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/class/XPathScore +name: XPathScore +title: XPath Match Score + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_score + +classes: + XPathScore: + class_uri: schema:Rating + description: | + A confidence score for an XPath match. + + **USAGE**: + Used for: + - XPath match confidence (0.0-1.0) + - Fuzzy matching scores + - Extraction confidence + + slots: + - has_or_had_score + + slot_usage: + has_or_had_score: + minimum_value: 0.0 + maximum_value: 1.0 + description: Confidence score between 0.0 and 1.0 + + attributes: + match_type: + range: string + description: Type of match (EXACT, FUZZY, PARTIAL) + + close_mappings: + - schema:Rating + + annotations: + specificity_score: "0.60" + specificity_rationale: "More specific - XPath scoring is technical/heritage-domain." + + examples: + - value: + has_or_had_score: 0.95 + match_type: EXACT + description: High-confidence exact match diff --git a/schemas/20251121/linkml/modules/slots/total_revenue.yaml b/schemas/20251121/linkml/modules/slots/archive/total_revenue_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/total_revenue.yaml rename to schemas/20251121/linkml/modules/slots/archive/total_revenue_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_condition.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_condition.yaml new file mode 100644 index 0000000000..f829f938a7 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_condition.yaml @@ -0,0 +1,39 @@ +# has_or_had_condition - Condition association slot +# +# Created per slot_fixes.yaml migration for: typical_condition +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_condition +name: has_or_had_condition +title: Has or Had Condition + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_condition: + slot_uri: schema:itemCondition + description: | + A condition or state associated with an entity. + + **USAGE**: + Used for: + - Physical condition of objects + - Service conditions/requirements + - Access conditions + + range: Condition + multivalued: true + + exact_mappings: + - schema:itemCondition + + examples: + - value: + condition_type: GOOD + condition_description: "Good physical condition" + description: Good condition assessment diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_domain.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_domain.yaml new file mode 100644 index 0000000000..3efa00392f --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_domain.yaml @@ -0,0 +1,39 @@ +# has_or_had_domain - Domain association slot +# +# Created per slot_fixes.yaml migration for: typical_domain +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_domain +name: has_or_had_domain +title: Has or Had Domain + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_domain: + slot_uri: schema:about + description: | + A domain or subject area associated with an entity. + + **USAGE**: + Used for: + - Subject domains + - Knowledge areas + - Disciplinary fields + + range: Domain + multivalued: true + + close_mappings: + - schema:about + + examples: + - value: + domain_name: "Cultural Heritage" + domain_type: HERITAGE + description: Cultural heritage domain diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_feature.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_feature.yaml new file mode 100644 index 0000000000..68e6467505 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_feature.yaml @@ -0,0 +1,39 @@ +# has_or_had_feature - Feature association slot +# +# Created per slot_fixes.yaml migration for: typical_technical_feature +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_feature +name: has_or_had_feature +title: Has or Had Feature + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_feature: + slot_uri: schema:featureList + description: | + A feature or capability of an entity. + + **USAGE**: + Used for: + - Technical features of platforms + - Service features + - Product features + + range: TechnicalFeature + multivalued: true + + close_mappings: + - schema:featureList + + examples: + - value: + feature_name: "Full-text search" + feature_type: SEARCH + description: Full-text search feature diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_method.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_method.yaml new file mode 100644 index 0000000000..bdc39d2a66 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_method.yaml @@ -0,0 +1,38 @@ +# has_or_had_method - Method association slot +# +# Created per slot_fixes.yaml migration for: typical_http_methods +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_method +name: has_or_had_method +title: Has or Had Method + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_method: + slot_uri: schema:httpMethod + description: | + A method associated with an entity, particularly HTTP methods. + + **USAGE**: + Used for: + - HTTP methods (GET, POST, PUT, DELETE) + - API interaction methods + - Processing methods + + range: HTTPMethod + multivalued: true + + exact_mappings: + - schema:httpMethod + + examples: + - value: + method_name: "GET" + description: HTTP GET method diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_responsibility.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_responsibility.yaml new file mode 100644 index 0000000000..def2e9f049 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_responsibility.yaml @@ -0,0 +1,39 @@ +# has_or_had_responsibility - Responsibility association slot +# +# Created per slot_fixes.yaml migration for: typical_responsibility +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_responsibility +name: has_or_had_responsibility +title: Has or Had Responsibility + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + org: http://www.w3.org/ns/org# + +default_prefix: hc + +slots: + has_or_had_responsibility: + slot_uri: org:role + description: | + A responsibility or role associated with an entity. + + **USAGE**: + Used for: + - Organizational responsibilities + - Role assignments + - Functional duties + + range: Responsibility + multivalued: true + + close_mappings: + - org:role + + examples: + - value: + responsibility_name: "Collection Management" + responsibility_type: CURATION + description: Collection management responsibility diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml new file mode 100644 index 0000000000..794aa03bea --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_revenue.yaml @@ -0,0 +1,102 @@ +# has_or_had_revenue - Links to structured revenue data +# Created per slot_fixes.yaml migration for: total_revenue +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_revenue +name: has_or_had_revenue_slot +title: Has Or Had Revenue Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + frapo: http://purl.org/cerif/frapo/ + +imports: + - linkml:types + +default_prefix: hc + +slots: + has_or_had_revenue: + description: >- + Links to structured revenue/income data for financial reporting. + + **TEMPORAL SEMANTICS** (RiC-O style): + The "has_or_had" naming indicates that revenue associations can change: + - Annual revenue figures are period-specific + - Historical revenue records remain relevant + - Revenue tracking spans fiscal years + + **USE CASES**: + - Financial statements: Total revenue for reporting period + - Budget comparisons: Actual vs. planned revenue + - Trend analysis: Revenue over multiple years + + **REPLACES**: Simple `total_revenue: decimal` field + + **WHY STRUCTURED?** + - Currency context (EUR, USD, GBP) + - Time period (annual, quarterly) + - Revenue category (contributions, grants, program, investment) + + **SCHEMA.ORG**: schema:MonetaryAmount for monetary values. + + range: Revenue + slot_uri: schema:totalRevenue + inlined: true + multivalued: true + + exact_mappings: + - schema:totalRevenue + + close_mappings: + - frapo:hasFunding + + related_mappings: + - schema:MonetaryAmount + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Revenue tracking applicable to all custodian types with financial reporting. + custodian_types_primary: M + specificity_score: 0.55 + specificity_rationale: >- + Moderate specificity - primarily relevant for financial statement contexts. + + examples: + - value: + - has_or_had_label: "Total Revenue FY2023" + has_or_had_quantity: + quantity_value: 78500000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: EUR + currency_symbol: "€" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2023" + revenue_category: TOTAL + description: Annual total revenue for Dutch museum + + - value: + - has_or_had_label: "Form 990 Total Revenue" + has_or_had_quantity: + quantity_value: 439000000.0 + quantity_type: BUDGET_AMOUNT + has_or_had_currency: + currency_code: USD + currency_symbol: "$" + has_or_had_time_interval: + duration_value: "P1Y" + duration_description: "fiscal year 2022" + revenue_category: TOTAL + description: US nonprofit Form 990 total revenue + + comments: + - Created from slot_fixes.yaml migration (2026-01-14) + - Replaces simple decimal total_revenue field with structured Revenue class + - Branch 1: has_or_had_currency → Currency + - Branch 2: has_or_had_time_interval → TimeInterval + - Uses Schema.org totalRevenue as slot_uri diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_standard.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_standard.yaml new file mode 100644 index 0000000000..013b22a9bd --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_standard.yaml @@ -0,0 +1,39 @@ +# has_or_had_standard - Standard association slot +# +# Created per slot_fixes.yaml migration for: typical_metadata_standard +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_standard +name: has_or_had_standard +title: Has or Had Standard + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + dct: http://purl.org/dc/terms/ + +default_prefix: hc + +slots: + has_or_had_standard: + slot_uri: dct:conformsTo + description: | + A standard that an entity conforms to or uses. + + **USAGE**: + Used for: + - Metadata standards (Dublin Core, MARC21, EAD) + - Technical standards + - Process standards + + range: MetadataStandard + multivalued: true + + exact_mappings: + - dct:conformsTo + + examples: + - value: + standard_name: "Dublin Core" + standard_uri: "http://purl.org/dc/elements/1.1/" + description: Dublin Core metadata standard diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_treatment.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_treatment.yaml new file mode 100644 index 0000000000..42542064c4 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_treatment.yaml @@ -0,0 +1,36 @@ +# has_or_had_treatment - Treatment description slot +# +# Created per slot_fixes.yaml migration for: treatment_description +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_treatment +name: has_or_had_treatment +title: Has or Had Treatment + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_treatment: + slot_uri: schema:description + description: | + A treatment or intervention applied to an entity. + + **USAGE**: + Used for: + - Conservation treatments + - Processing descriptions + - Handling instructions + + range: Treatment + multivalued: true + + examples: + - value: + treatment_type: CONSERVATION + treatment_description: "Surface cleaning and stabilization" + description: Conservation treatment record diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_venue.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_venue.yaml new file mode 100644 index 0000000000..955c40ca71 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_venue.yaml @@ -0,0 +1,39 @@ +# has_or_had_venue - Venue association slot +# +# Created per slot_fixes.yaml migration for: traveling_venue +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_venue +name: has_or_had_venue +title: Has or Had Venue + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_venue: + slot_uri: schema:location + description: | + A venue associated with an event or exhibition. + + **USAGE**: + Used for: + - Traveling exhibition venues + - Event locations + - Performance venues + + range: Venue + multivalued: true + + exact_mappings: + - schema:location + + examples: + - value: + venue_name: "Rijksmuseum" + venue_city: "Amsterdam" + description: Museum venue for exhibition diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_verification_status.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_verification_status.yaml new file mode 100644 index 0000000000..09bddcf31c --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_verification_status.yaml @@ -0,0 +1,35 @@ +# has_or_had_verification_status - Verification status slot +# +# Created per slot_fixes.yaml migration for: verified +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_verification_status +name: has_or_had_verification_status +title: Has or Had Verification Status + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_verification_status: + slot_uri: schema:verificationStatus + description: | + Verification status of an entity. + + **USAGE**: + Used for: + - Record verification status (verified, unverified, pending) + - Data quality flags + - Approval status + + range: VerificationStatus + + examples: + - value: + status: VERIFIED + verified_date: "2025-01-14" + description: Verified status with date diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_version.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_version.yaml new file mode 100644 index 0000000000..e988e4f05a --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_version.yaml @@ -0,0 +1,38 @@ +# has_or_had_version - Version number slot +# +# Created per slot_fixes.yaml migration for: version_number +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/has_or_had_version +name: has_or_had_version +title: Has or Had Version + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + has_or_had_version: + slot_uri: schema:version + description: | + Version number or identifier of an entity. + + **USAGE**: + Used for: + - Software versions + - Document versions + - Schema versions + + range: string + + exact_mappings: + - schema:version + + examples: + - value: "2.1.0" + description: Semantic version number + - value: "v3" + description: Simple version identifier diff --git a/schemas/20251121/linkml/modules/slots/is_or_was_verified_by.yaml b/schemas/20251121/linkml/modules/slots/is_or_was_verified_by.yaml new file mode 100644 index 0000000000..1b8c5168d6 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/is_or_was_verified_by.yaml @@ -0,0 +1,36 @@ +# is_or_was_verified_by - Verification relationship slot +# +# Created per slot_fixes.yaml migration for: verified_by +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/is_or_was_verified_by +name: is_or_was_verified_by +title: Is or Was Verified By + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + prov: http://www.w3.org/ns/prov# + +default_prefix: hc + +slots: + is_or_was_verified_by: + slot_uri: prov:wasAttributedTo + description: | + Links an entity to the agent that verified it. + + **USAGE**: + Used for: + - Data verification attribution + - Quality assurance tracking + - Approval records + + range: uriorcurie + + close_mappings: + - prov:wasAttributedTo + + examples: + - value: https://nde.nl/agent/curator-123 + description: Curator who verified the record diff --git a/schemas/20251121/linkml/modules/slots/manifest.json b/schemas/20251121/linkml/modules/slots/manifest.json index 8b2961fd9c..6a6f7418d6 100644 --- a/schemas/20251121/linkml/modules/slots/manifest.json +++ b/schemas/20251121/linkml/modules/slots/manifest.json @@ -14,6 +14,7 @@ "applies_or_applied_to_call.yaml", "approved_by.yaml", "approximate.yaml", + "approximation_level.yaml", "archive_branches.yaml", "archive_series.yaml", "archived_at.yaml", @@ -729,6 +730,7 @@ "has_audit_date.yaml", "has_audit_opinion.yaml", "has_auditor_name.yaml", + "has_authentication_required_flag.yaml", "has_author.yaml", "has_authority_file_abbreviation.yaml", "has_authority_file_name.yaml", @@ -793,7 +795,9 @@ "has_or_had_accreditation.yaml", "has_or_had_accreditation_body.yaml", "has_or_had_acquisition_budget.yaml", + "has_or_had_activity.yaml", "has_or_had_activity_or_society_membership.yaml", + "has_or_had_activity_type.yaml", "has_or_had_address.yaml", "has_or_had_admin_staff_count.yaml", "has_or_had_admission_fee.yaml", @@ -824,6 +828,8 @@ "has_or_had_associated_digital_platform.yaml", "has_or_had_audience_size.yaml", "has_or_had_audit_status.yaml", + "has_or_had_author.yaml", + "has_or_had_auxiliary_entities.yaml", "has_or_had_based_on_observation.yaml", "has_or_had_beneficiary.yaml", "has_or_had_category_assessment.yaml", @@ -831,26 +837,35 @@ "has_or_had_code.yaml", "has_or_had_collection.yaml", "has_or_had_collection_narrower_type.yaml", + "has_or_had_comment.yaml", "has_or_had_comment_reply.yaml", "has_or_had_comprehensive_overview.yaml", + "has_or_had_condition.yaml", "has_or_had_condition_note.yaml", "has_or_had_conservation_activity.yaml", "has_or_had_conservation_record.yaml", + "has_or_had_conversion_rate.yaml", "has_or_had_curation_activity.yaml", + "has_or_had_currency.yaml", "has_or_had_custodian.yaml", "has_or_had_custodian_name.yaml", "has_or_had_custodian_observation.yaml", "has_or_had_custodian_type.yaml", "has_or_had_data_quality_flag.yaml", "has_or_had_data_service_endpoint.yaml", + "has_or_had_date_of_birth.yaml", "has_or_had_depositing_organization.yaml", + "has_or_had_description.yaml", + "has_or_had_detected.yaml", "has_or_had_detected_face.yaml", "has_or_had_detected_landmark.yaml", "has_or_had_detected_logo.yaml", "has_or_had_detected_object.yaml", "has_or_had_diarization_segment.yaml", "has_or_had_digital_platform.yaml", + "has_or_had_documentation.yaml", "has_or_had_documentation_source.yaml", + "has_or_had_domain.yaml", "has_or_had_encompass.yaml", "has_or_had_environmental_condition.yaml", "has_or_had_environmental_zone.yaml", @@ -861,16 +876,22 @@ "has_or_had_expenses.yaml", "has_or_had_exposed_collection.yaml", "has_or_had_external_resource.yaml", + "has_or_had_facility.yaml", + "has_or_had_feature.yaml", "has_or_had_featured_item.yaml", "has_or_had_featured_object.yaml", "has_or_had_finding_aid.yaml", "has_or_had_fond.yaml", "has_or_had_format.yaml", + "has_or_had_frequency.yaml", "has_or_had_function.yaml", "has_or_had_generate.yaml", "has_or_had_head.yaml", "has_or_had_holds_record_set_type.yaml", + "has_or_had_hypernym.yaml", + "has_or_had_hyponym.yaml", "has_or_had_ich_safeguarding_measure.yaml", + "has_or_had_identifier.yaml", "has_or_had_identify.yaml", "has_or_had_implementing_organisation.yaml", "has_or_had_involved_actor.yaml", @@ -878,17 +899,24 @@ "has_or_had_key_archive.yaml", "has_or_had_key_date.yaml", "has_or_had_key_period.yaml", + "has_or_had_label.yaml", "has_or_had_language.yaml", "has_or_had_linked_data_endpoint.yaml", "has_or_had_loaned_object.yaml", "has_or_had_managed_by_cm.yaml", "has_or_had_managed_collection.yaml", "has_or_had_manages_collection.yaml", + "has_or_had_measurement_unit.yaml", "has_or_had_member.yaml", "has_or_had_member_custodian.yaml", + "has_or_had_membership.yaml", + "has_or_had_method.yaml", + "has_or_had_methodology.yaml", "has_or_had_music_segment.yaml", + "has_or_had_note.yaml", "has_or_had_notes.yaml", "has_or_had_open_access_endpoint.yaml", + "has_or_had_opening_hour.yaml", "has_or_had_operate.yaml", "has_or_had_operates_platform_type.yaml", "has_or_had_operates_storage_type.yaml", @@ -898,6 +926,7 @@ "has_or_had_participated_in_event.yaml", "has_or_had_participated_in_project.yaml", "has_or_had_period.yaml", + "has_or_had_place_of_birth.yaml", "has_or_had_policy.yaml", "has_or_had_portal_data_source.yaml", "has_or_had_post_type.yaml", @@ -905,9 +934,14 @@ "has_or_had_previous_owner.yaml", "has_or_had_primary_presence_assertion.yaml", "has_or_had_product_category.yaml", + "has_or_had_program.yaml", "has_or_had_project.yaml", + "has_or_had_provenance.yaml", "has_or_had_provenance_event.yaml", "has_or_had_provenance_path.yaml", + "has_or_had_quantity.yaml", + "has_or_had_range.yaml", + "has_or_had_rationale.yaml", "has_or_had_registered_dataset.yaml", "has_or_had_registration_number.yaml", "has_or_had_related_activity.yaml", @@ -918,20 +952,30 @@ "has_or_had_related_heritage_form.yaml", "has_or_had_requirement.yaml", "has_or_had_research_attempt.yaml", + "has_or_had_responsibility.yaml", + "has_or_had_restriction.yaml", "has_or_had_resulting_unit.yaml", + "has_or_had_revenue.yaml", "has_or_had_safeguard.yaml", "has_or_had_scene_segment.yaml", "has_or_had_scope.yaml", + "has_or_had_score.yaml", "has_or_had_secondary_label.yaml", "has_or_had_secondary_system.yaml", "has_or_had_section_link.yaml", + "has_or_had_security_level.yaml", "has_or_had_segment.yaml", "has_or_had_series.yaml", + "has_or_had_service.yaml", + "has_or_had_service_area.yaml", + "has_or_had_short_code.yaml", "has_or_had_silence_segment.yaml", "has_or_had_social_media_profile.yaml", "has_or_had_sound_event_type.yaml", "has_or_had_speech_segment.yaml", "has_or_had_staff_member.yaml", + "has_or_had_standard.yaml", + "has_or_had_status.yaml", "has_or_had_storage_condition.yaml", "has_or_had_storage_facility.yaml", "has_or_had_storage_unit.yaml", @@ -942,16 +986,23 @@ "has_or_had_sub_guide.yaml", "has_or_had_sub_section.yaml", "has_or_had_suborganization.yaml", + "has_or_had_text.yaml", "has_or_had_text_region.yaml", "has_or_had_text_segment.yaml", "has_or_had_thematic_route.yaml", "has_or_had_time_interval.yaml", "has_or_had_tracked_in_cm.yaml", "has_or_had_transmission_method.yaml", + "has_or_had_treatment.yaml", + "has_or_had_type.yaml", "has_or_had_unit.yaml", "has_or_had_url.yaml", "has_or_had_used_source.yaml", + "has_or_had_venue.yaml", + "has_or_had_verification_status.yaml", + "has_or_had_version.yaml", "has_or_had_web_claim.yaml", + "has_or_had_writing_system.yaml", "has_outdoor_seating.yaml", "has_person_name.yaml", "has_person_observation.yaml", @@ -1088,23 +1139,38 @@ "is_or_was_active_since.yaml", "is_or_was_affected_by_event.yaml", "is_or_was_aggregated_by.yaml", + "is_or_was_allocated_budget.yaml", "is_or_was_allocated_by.yaml", "is_or_was_also_allocation_agency.yaml", + "is_or_was_approved_by.yaml", + "is_or_was_approximate.yaml", "is_or_was_archive_department_of.yaml", + "is_or_was_archived_at.yaml", "is_or_was_archived_in.yaml", + "is_or_was_asserted_by.yaml", "is_or_was_associated_with.yaml", + "is_or_was_available.yaml", "is_or_was_collection_of.yaml", + "is_or_was_created_through.yaml", + "is_or_was_derived_from.yaml", "is_or_was_encompassed_by.yaml", "is_or_was_equivalent_to.yaml", + "is_or_was_generated_by.yaml", "is_or_was_instance_of.yaml", "is_or_was_located_within.yaml", + "is_or_was_managed_by.yaml", "is_or_was_member_of.yaml", "is_or_was_part_of_archive_series.yaml", "is_or_was_platform_of.yaml", "is_or_was_real.yaml", + "is_or_was_related_to.yaml", + "is_or_was_required.yaml", + "is_or_was_revision_of.yaml", "is_or_was_sub_collection_of.yaml", "is_or_was_suborganization_of.yaml", + "is_or_was_succeeded_by.yaml", "is_or_was_transferred.yaml", + "is_or_was_verified_by.yaml", "is_or_was_webarchived_at.yaml", "is_overlapping.yaml", "is_part_of_complex.yaml", @@ -1254,6 +1320,7 @@ "max_group_size.yaml", "max_light_lux.yaml", "max_likelihood_score.yaml", + "maximal_of_maximal.yaml", "maximum_amount.yaml", "measurement_data.yaml", "medium.yaml", @@ -1266,6 +1333,7 @@ "metrics_observed_at.yaml", "metrics_observed_date.yaml", "michelin_star.yaml", + "minimal_of_minimal.yaml", "minimum_amount.yaml", "minimum_partner.yaml", "mission_statement.yaml", @@ -1768,6 +1836,7 @@ "served_by.yaml", "serves_finding_aid.yaml", "serves_function_of.yaml", + "serves_or_served.yaml", "serves_staff.yaml", "serves_visitors_only.yaml", "service_area.yaml", @@ -2094,5 +2163,5 @@ "zone_name.yaml", "zone_type.yaml" ], - "total_count": 2093 + "total_count": 2162 } \ No newline at end of file diff --git a/schemas/20251121/linkml/modules/slots/serves_or_served.yaml b/schemas/20251121/linkml/modules/slots/serves_or_served.yaml new file mode 100644 index 0000000000..315a5fbae3 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/serves_or_served.yaml @@ -0,0 +1,39 @@ +# serves_or_served - User community relationship slot +# +# Created per slot_fixes.yaml migration for: user_community +# Creation date: 2026-01-14 + +id: https://nde.nl/ontology/hc/slot/serves_or_served +name: serves_or_served +title: Serves or Served + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + +default_prefix: hc + +slots: + serves_or_served: + slot_uri: schema:audience + description: | + The user community or audience served by an entity. + + **USAGE**: + Used for: + - Target user communities + - Audience types + - Stakeholder groups + + range: UserCommunity + multivalued: true + + exact_mappings: + - schema:audience + + examples: + - value: + community_name: "Academic Researchers" + community_type: RESEARCH + description: Academic research community diff --git a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index e2b9d12e02..089b84e20e 100644 --- a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -2447,4 +2447,79 @@ fixes: - label: TimeInterval type: class link_branch: 2 - - original_slot_id: https://nde.nl/ontology/hc/slot/total_runtime \ No newline at end of file + processed: + status: true + date: "2026-01-14" + notes: >- + Created Revenue class with has_or_had_quantity, has_or_had_currency (branch 1), + has_or_had_time_interval (branch 2). Created has_or_had_revenue slot. + Updated FinancialStatement.yaml imports, slots list, slot_usage, and examples. + Archived total_revenue.yaml to archive/total_revenue_archived_20260114.yaml. + Reused existing: Quantity.yaml, Currency.yaml, TimeInterval.yaml, + has_or_had_quantity.yaml, has_or_had_currency.yaml, has_or_had_time_interval.yaml. + - original_slot_id: https://nde.nl/ontology/hc/slot/total_net_asset + revision: + - label: has_or_had_net_asset + type: slot + - label: NetAsset + type: class + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: has_or_had_currency + type: slot + link_branch: 1 + - label: Currency + type: class + link_branch: 1 + - label: has_or_had_time_interval + type: slot + link_branch: 2 + - label: TimeInterval + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/total_liability + revision: + - label: has_or_had_liability + type: slot + - label: Liability + type: class + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: has_or_had_currency + type: slot + link_branch: 1 + - label: Currency + type: class + link_branch: 1 + - label: has_or_had_time_interval + type: slot + link_branch: 2 + - label: TimeInterval + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/total_investment + revision: + - label: has_or_had_investment + type: slot + - label: Investment + type: class + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: has_or_had_currency + type: slot + link_branch: 1 + - label: Currency + type: class + link_branch: 1 + - label: has_or_had_time_interval + type: slot + link_branch: 2 + - label: TimeInterval + type: class + link_branch: 2 \ No newline at end of file