From 68c2274e5f0a252cb338a82af1830054fe57eedd Mon Sep 17 00:00:00 2001 From: kempersc Date: Wed, 28 Jan 2026 15:58:44 +0100 Subject: [PATCH] Refactor IdentificationEvent and StorageConditionPolicy schemas; remove attributes from IdentificationEvent and update humidity settings in StorageConditionPolicy. Add comprehensive ghost slots list. --- .../schemas/20251121/linkml/manifest.json | 2 +- ghost_slots_comprehensive.txt | 622 ++++++++++++++++++ schemas/20251121/linkml/manifest.json | 2 +- .../linkml/modules/classes/AccessPolicy.yaml | 16 +- .../modules/classes/AllocationAgency.yaml | 10 - .../modules/classes/CallForApplication.yaml | 5 +- .../classes/CollectionManagementSystem.yaml | 9 - .../modules/classes/DonationScheme.yaml | 12 +- .../modules/classes/IdentificationEvent.yaml | 15 +- .../modules/classes/LinkedInProfile.yaml | 1 - .../modules/classes/PersonObservation.yaml | 5 - .../linkml/modules/classes/Project.yaml | 9 +- .../classes/StorageConditionPolicy.yaml | 16 +- 13 files changed, 651 insertions(+), 73 deletions(-) create mode 100644 ghost_slots_comprehensive.txt diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index 162fbf5973..62fe422d66 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-28T14:04:12.253Z", + "generated": "2026-01-28T14:11:21.183Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 3000, "categoryCounts": { diff --git a/ghost_slots_comprehensive.txt b/ghost_slots_comprehensive.txt new file mode 100644 index 0000000000..f8e04a4a5d --- /dev/null +++ b/ghost_slots_comprehensive.txt @@ -0,0 +1,622 @@ +UNESCODomain +ViabilityStatus +_type +abbreviation +about_text +academic_affiliation +access_control +access_level +access_policy +access_restrictions +accession_number +account_name +account_status +accreditation_body +acquisition_budget +acquisition_date_text +acquisition_method +activity_type +address_type +advocacy_activities +affected_units +agenda_description +agenda_document_url +agenda_short_name +agenda_title +agenda_url +agent_name +agent_role +agent_type +agreement_signed_date +alpha_2 +alpha_3 +altitude +amount +annex_name +annex_reason +api_endpoint +application_deadline +application_opening_date +appointment_id +appointment_required +appreciation_count +appreciation_type +approval_date +approver_name +approximation_level +archdiocese_name +archive_scope +area_value +arrangement +arrangement_level +articles_archival_stage +artist_representation +assertor_name +assertor_type +assertor_uri +assessed_by +assessment_date +assessor +associated_digital_platform +audience_size +audio_quality_score +audit_date +audit_opinion +auditor_name +author_affiliation +author_name +author_role +authorship +auxiliary_id +auxiliary_name +auxiliary_place_type +auxiliary_platform_type +auxiliary_type +auxiliary_url +av_equipped +base_value +basionym_authority +binding_type +booking_contact +booking_method +branch_type +build_metadata +business_name +cancellation_notice_hours +canonical_access_rules +capacity +capacity_seats +capacity_type +capacity_value +caption_format +caption_url +carrier_type_code +carrier_type_label +category_name +category_type +citation_text +city +closes +cms_category +cms_id +cms_name +cms_product_name +cms_product_version +code +collection_description +collection_type +colonizing_power +comment_date +community_description +community_name +completion_status +compliance_gaps +condition_policy_code +condition_policy_name +condition_status +confidence +confidence_threshold +confirmation_required +conflict_description +contact_email +contains_or_contained_en +content_date_range +content_description +content_extent +content_language +content_text +courier_details +creation_method +custodian_uri +damage_description +damage_noted +data_licenses +data_source +day_of_week +days +decision_type +deductible_percentage +default_license +deliverable_description +deliverable_title +deliverable_type +deliverable_url +denomination +department_name +deployment_date +derived_from_entity +derived_from_observation +description +description_text +destination_url +destruction_date +detected_at +detection_method +deviation_direction +deviation_value +digital_surrogate_url +digitization_status +diocese_id +diocese_name +display_date +display_name +document_type +documentation_url +documented_by +domain_name +dual_class_link +due_date +duration +duration_description +duration_value +education +elf_code +eligibility +eligible_applicant +embargo_end_date +embargo_reason +end_date +enriched_date +enrichment_metadata_whatsapp +enrichment_method_whatsapp +entry_label +entry_level +entry_page +environmental_requirement +environmental_zone_type_code +error_count +established_date +estimated_size +event_type +evidence_gap +example_instance +exemption_note +exhibition_type +expected_transfer_date +expense_type +expression +extent_text +extraction_agent +extraction_confidence +extraction_date +extraction_method +extraction_note +extraction_notes +extraction_timestamp +facility_description +facility_name +facility_type +feature_description +feature_name +feature_note +feature_type +featured_work +fee_required +fellows_count +fetch_complete +fetched_count +field_number +file_extension +financial_document_format +financial_document_url +finding_aid_id +finding_aid_type_ref +fiscal_year +fiscal_year_end +fiscal_year_start +fixity_info +flexible_seating +flood_protection_required +follower_count +following_count +fonds +format +format_id +format_name +format_specification_url +founded_by +founding_date +founding_description +founding_location +frequency_description +full_extracted_text +function_category +function_name +funding_focus +funding_program +funding_scheme +funding_source +funding_sources +gbif_id +genbank_accession +generated_by +geographic_coverage +geographic_restriction +geographic_scope +geometry_type +geometry_wkt +geonames_id +geospatial_id +geospatial_source +gift_shop +glamorcubesfixphdnt_code +gleif_ra_code +governance_clause +group_name +group_type +habitat_description +had_or_had_hyponym +had_or_had_level +has_accuracy_in_meters +has_administration +has_agreement_signed_date +has_allocation_date +has_amendment_history +has_api_version +has_appellation_language +has_appellation_type +has_appellation_value +has_applicable_country +has_approval_date +has_archive_memento_uri +has_archive_path +has_arrangement +has_articles_archival_stage +has_articles_document_format +has_articles_document_url +has_audit_date +has_audit_opinion +has_auditor_name +has_authority_file_url +has_av_equipment +has_availability_timespan +has_average_scene_duration_seconds +has_boundary +has_budget +has_climate_control +has_clipping +has_computer_terminal +has_computer_terminals +has_deacidification_facility +has_feature_type +has_fellows_program +has_forklift_access +has_fume_hood +has_fume_hoods +has_geospatial_location +has_lockers +has_microfilm_readers +has_or_had_academic_affiliation +has_or_had_access_condition +has_or_had_access_control +has_or_had_access_frequency +has_or_had_activity_text +has_or_had_address +has_or_had_amount +has_or_had_archival_status +has_or_had_area_served +has_or_had_arrangement_system +has_or_had_assigned_processor +has_or_had_audience_size +has_or_had_convention +has_or_had_country +has_or_had_creator +has_or_had_date +has_or_had_encoding +has_or_had_environmental_condition +has_or_had_environmental_zone +has_or_had_essay +has_or_had_examination_method +has_or_had_exhibition_catalog +has_or_had_expenses +has_or_had_exposed_collection +has_or_had_external_resource +has_or_had_featured_item +has_or_had_featured_object +has_or_had_finding_aid +has_or_had_geographic_scope +has_or_had_ich_safeguarding_measure +has_or_had_implementing_organisation +has_or_had_index_type +has_or_had_involved_actor +has_or_had_jurisdiction +has_or_had_key_archive +has_or_had_key_date +has_or_had_key_period +has_or_had_likelihood_score +has_or_had_linked_data_endpoint +has_or_had_loaned_object +has_or_had_managed_by_cm +has_or_had_managed_collection +has_or_had_manages_collection +has_or_had_material_type +has_or_had_media_type +has_or_had_member_custodian +has_or_had_music_segment +has_or_had_net_asset +has_or_had_notes +has_or_had_numeric_value +has_or_had_open_access_endpoint +has_or_had_operates_platform_type +has_or_had_operates_storage_type +has_or_had_organizational_change_event +has_or_had_overview +has_or_had_participant +has_or_had_program +has_or_had_project +has_or_had_schema_url +has_or_had_system +has_or_had_target +has_or_had_uri +height +height_pixels +horizontal_alignment +html_file +humidity_tolerance +ich_domain +ich_transmission_method +iconography +id +identification_method +identification_qualifier +identification_references +identified_by +identifier +identifier_format +identifier_format_used +identifier_scheme +identifier_url +identifier_value +iiif_compatible +iiif_support +illustration +illustrations +image_format +image_url +impact_measurement +implements_agenda +implements_auxiliary_platform +index_entry +inscription_date +interpretation_notes +involvement_status +is_available +is_business_account +is_commercial +is_completed +is_default +is_deterministic +is_digital_access +is_hashtag +is_or_was_designated_on +is_or_was_located_at +is_or_was_recombined +is_or_was_stored_in +is_preserved +is_required +is_streaming +jurisdiction_code +jurisdiction_name +keywords +label +label_text +label_value +lead_time_hours +level_code +level_name +level_rank +license_id +license_name +license_notes +license_scope +list_name +listing_authority +local_name +major +major_version +manager_since +market_type +match_score +match_type +matched_text +material_description +maximum_of_maximum +measurement_value +member_count +method_type +mime_type +minimum_of_minimum +minor +minor_version +mode_value +modern_equivalent +name_without_type +nomenclatural_code +normalization_rule +notes +number +objective_type +observation_notes +open_data_principles +opening_hours +openness_stance +opens +operating_hours +organizer_contribution +organizer_entity +original_language +pages +participating_institutions +patch +patch_version +percentage_context +percentage_display +percentage_max +percentage_min +percentage_value +person_reference +phone_number +place_type +platform +platform_type_code +platform_type_label +platform_user_id +platform_username +policy_effective_from +policy_effective_to +population_specific +position_unit +position_value +precision +prerelease_tag +profit_model +program_description +program_name +program_type +project_description +project_id +project_name +project_period +publication_date_string +publisher +qid +range_currency +range_description +range_notes +rate_description +rate_type +reading_room_annex_id +received_by +release_date +remediation_deadline +reply_count +reply_type +resolution_label +resolution_type +retention_period_years +return_date +return_report_url +revision_notes +role_description +role_type +sampling_protocol +schema_url +scientific_name +scope_type +script_name +sells_or_sold +service_description +service_name +service_specific_licenses +source_api +source_document +source_format +source_location +source_title +species_covered +standard_domain +standard_name +standard_reference +standard_uri +start_date +state_date +status +status_code +status_type +status_value +stipend_available +street_address +subject_coverage +subregion_code +subtype_code +subtype_label +superseded_by_articles +superseded_by_name +system_code +system_name +system_uri +tag_platform +tag_value +tax_status +taxonomic_rank +temporal_validity +terminal_count +territory_name +threshold +threshold_description +threshold_operator +threshold_type +threshold_value +title +title_proper +title_text +title_type +token_count +total_assets +total_count +total_expenses +total_liabilities +total_net_assets +trade_register +transmission_methods +treated_by +treatment_date +treatment_description +treatment_type +turn_number +type +type_id +type_label +typical_condition +uniform_title +unit +unit_id +unit_identifier +unit_label +unit_name +unit_symbol +unit_type +unit_value +url +url_type +url_value +valid_from +valid_from_date +valid_to +validation_date +value +verbatim_text +verified_date +verifier +verifier_name +verifier_type +version_string +vertical_alignment +website +width +width_pixels +wikidata_id +wikidata_qid +work_type +writing_direction +years diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index 62fe422d66..61711ba2c9 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-28T14:11:21.183Z", + "generated": "2026-01-28T14:58:45.119Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 3000, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/AccessPolicy.yaml b/schemas/20251121/linkml/modules/classes/AccessPolicy.yaml index 66ba8b45e5..d9fed6b1ad 100644 --- a/schemas/20251121/linkml/modules/classes/AccessPolicy.yaml +++ b/schemas/20251121/linkml/modules/classes/AccessPolicy.yaml @@ -16,7 +16,6 @@ imports: - ../slots/temporal_extent - ./TimeSpan - ../slots/embargo_end_date -- ../slots/contact_email - ../slots/policy_id - ../slots/policy_name - ../slots/has_or_had_description @@ -69,7 +68,6 @@ classes: - poses_or_posed_condition - condition_of_access - requires_or_required - - contact_email - credentials_required - cultural_protocol_url - embargo_end_date @@ -261,11 +259,6 @@ classes: examples: - value: '2025-12-31' description: Annual review date - contact_email: - range: string - examples: - - value: access@nationaalarchief.nl - description: Access request contact temporal_extent: description: 'Validity period for this access policy using CIDOC-CRM TimeSpan. @@ -356,7 +349,8 @@ classes: registration_required: true requires_appointment: false fee_required: false - contact_email: studiezaal@nationaalarchief.nl + has_or_had_contact_point: + email: studiezaal@nationaalarchief.nl description: Standard archive public access policy - value: policy_id: https://nde.nl/ontology/hc/access-policy/donor-embargo-2050 @@ -386,7 +380,8 @@ classes: description_text: Access may be arranged for urgent research needs requires_appointment: true credentials_required: PROFESSIONAL - contact_email: preservation@archive.org + has_or_had_contact_point: + email: preservation@archive.org description: Dark archive / DIM access policy - value: policy_id: https://nde.nl/ontology/hc/access-policy/special-collections-rich @@ -420,7 +415,8 @@ classes: registration_required: true credentials_required: INSTITUTIONAL fee_required: false - contact_email: special.collections@archive.nl + has_or_had_contact_point: + email: special.collections@archive.nl description: Rich appointment modeling with structured Appointment entity annotations: specificity_score: 0.1 diff --git a/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml b/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml index a5afbf2ab2..0481792b64 100644 --- a/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml +++ b/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml @@ -15,7 +15,6 @@ imports: - ./Country - ./Subregion - ../slots/description -- ../slots/contact_email - ../slots/specificity_annotation - ../slots/has_or_had_score - ./SpecificityAnnotation @@ -211,15 +210,6 @@ classes: range: uri close_mappings: - schema:url - contact_email: - slot_uri: schema:email - description: 'Contact email for identifier allocation requests. - - - Examples: "isil@kb.nl", "isni@dnb.de" - - ' - range: string allocation_policy_url: slot_uri: schema:usageInfo description: 'URL to the allocation policy documentation. diff --git a/schemas/20251121/linkml/modules/classes/CallForApplication.yaml b/schemas/20251121/linkml/modules/classes/CallForApplication.yaml index 37b65a1a80..2ec8199e5a 100644 --- a/schemas/20251121/linkml/modules/classes/CallForApplication.yaml +++ b/schemas/20251121/linkml/modules/classes/CallForApplication.yaml @@ -15,7 +15,6 @@ imports: - ../enums/CallForApplicationStatusEnum - ../enums/FundingRequirementTypeEnum - ./FundingRequirement - - ../slots/contact_email - ../slots/keyword - ../slots/is_or_was_due_on - ../slots/end_of_the_end @@ -340,8 +339,10 @@ classes: issuing_organisation: https://nde.nl/ontology/hc/encompassing-body/funding/ec-rea parent_programme: Horizon Europe Cluster 2 programme_year: 2025 - contact_email: REA-C2@ec.europa.eu + has_or_had_contact_point: + email: REA-C2@ec.europa.eu info_session_date: + - 2025-02-15 - Virtual info day - 2025-04-10 - Brokerage event Brussels keywords: diff --git a/schemas/20251121/linkml/modules/classes/CollectionManagementSystem.yaml b/schemas/20251121/linkml/modules/classes/CollectionManagementSystem.yaml index 4b8d33a3a8..ee3155d2bb 100644 --- a/schemas/20251121/linkml/modules/classes/CollectionManagementSystem.yaml +++ b/schemas/20251121/linkml/modules/classes/CollectionManagementSystem.yaml @@ -131,15 +131,6 @@ classes: identifier_scheme: CMS_URI identifier_value: https://nde.nl/ontology/hc/cms/nationaal-archief-mais description: National Archives MAIS deployment - cms_id: - description: 'DEPRECATED 2026-01-18: Migrated to has_or_had_identifier slot with Identifier class. - - This slot_usage entry retained for documentation only. - - See has_or_had_identifier slot_usage for current pattern. - - ' - deprecated: Use has_or_had_identifier with Identifier class cms_product_name: description: 'DEPRECATED 2026-01-18: Migrated to has_or_had_label slot with Label class diff --git a/schemas/20251121/linkml/modules/classes/DonationScheme.yaml b/schemas/20251121/linkml/modules/classes/DonationScheme.yaml index 60185ac0c8..9d49008d40 100644 --- a/schemas/20251121/linkml/modules/classes/DonationScheme.yaml +++ b/schemas/20251121/linkml/modules/classes/DonationScheme.yaml @@ -14,7 +14,6 @@ imports: - linkml:types - ../enums/DonationSchemeTypeEnum - ../slots/extraction_note -- ../slots/contact_email - ../slots/observed_in - ../slots/has_or_had_benefit - ../slots/currency @@ -62,7 +61,6 @@ classes: - schema:itemOffered slots: - has_or_had_benefit - - contact_email - currency - extraction_note - maximum_amount @@ -257,13 +255,6 @@ classes: - has_or_had_percentage: percentage_value: 100 description: German charitable status - contact_email: - range: string - examples: - - value: vrienden@rijksmuseum.nl - description: Friends scheme contact - - value: development@bl.uk - description: Development office observed_in: required: true range: uriorcurie @@ -436,7 +427,8 @@ classes: - has_or_had_percentage: percentage_value: 100 regulatory_body: Belastingdienst - contact_email: ontwikkeling@kb.nl + has_or_had_contact_point: + email: ontwikkeling@kb.nl observed_in: https://nde.nl/ontology/hc/observation/web/2026-01-01/kb-support extraction_confidence: 0.85 extraction_notes: Legacy giving page with limited detail. Estate tax benefits apply. diff --git a/schemas/20251121/linkml/modules/classes/IdentificationEvent.yaml b/schemas/20251121/linkml/modules/classes/IdentificationEvent.yaml index dff35fa01e..2c32716699 100644 --- a/schemas/20251121/linkml/modules/classes/IdentificationEvent.yaml +++ b/schemas/20251121/linkml/modules/classes/IdentificationEvent.yaml @@ -86,19 +86,8 @@ classes: description: References consulted for identification. examples: - value: Flora of North America, Vol. 3 - attributes: - identified_by: - range: Agent - multivalued: true - inlined_as_list: true - description: Person(s) who performed the identification. - identification_method: - range: string - description: Method used for identification. - identification_references: - range: string - multivalued: true - description: References consulted. + attributes: {} + annotations: custodian_types: '["M", "R", "B"]' diff --git a/schemas/20251121/linkml/modules/classes/LinkedInProfile.yaml b/schemas/20251121/linkml/modules/classes/LinkedInProfile.yaml index f15db41119..220930ac15 100644 --- a/schemas/20251121/linkml/modules/classes/LinkedInProfile.yaml +++ b/schemas/20251121/linkml/modules/classes/LinkedInProfile.yaml @@ -165,7 +165,6 @@ classes: close_mappings: - foaf:Person slots: - - about_text - connections_text - education - indicates_or_indicated diff --git a/schemas/20251121/linkml/modules/classes/PersonObservation.yaml b/schemas/20251121/linkml/modules/classes/PersonObservation.yaml index 847cb25334..2352ae2266 100644 --- a/schemas/20251121/linkml/modules/classes/PersonObservation.yaml +++ b/schemas/20251121/linkml/modules/classes/PersonObservation.yaml @@ -40,7 +40,6 @@ imports: - ../slots/observation_source - ../slots/has_or_had_provenance - ../slots/is_or_was_affected_by_event -- ../slots/contact_email - ../slots/has_or_had_expertise_in - ./ExpertiseArea - ../slots/refers_to_person @@ -151,10 +150,6 @@ classes: is_or_was_affected_by_event: range: OrganizationalChangeEvent required: false - contact_email: - range: string - required: false - pattern: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ has_or_had_expertise_in: range: ExpertiseArea multivalued: true diff --git a/schemas/20251121/linkml/modules/classes/Project.yaml b/schemas/20251121/linkml/modules/classes/Project.yaml index 6ad2693fe3..9947639cb9 100644 --- a/schemas/20251121/linkml/modules/classes/Project.yaml +++ b/schemas/20251121/linkml/modules/classes/Project.yaml @@ -21,7 +21,6 @@ imports: - ./TemplateSpecificityTypes # Slot imports - migrated to RiC-O style (2026-01-16 per Rule 53) - - ../slots/contact_email # MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53) - ../slots/has_or_had_objective - ./Deliverable @@ -98,7 +97,6 @@ classes: - org:Organization - schema:Grant slots: - - contact_email # MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53) - has_or_had_objective - documentation_url @@ -295,10 +293,6 @@ classes: description: Final report on Zenodo - value: https://github.com/nde-project/versnellen-2024 description: GitHub repository with deliverables - contact_email: - range: string - examples: - - value: versnellen@netwerkdigitaalerfgoed.nl keyword: range: string multivalued: true @@ -406,7 +400,8 @@ classes: - https://nde.nl/ontology/hc/nl-nh-ams-m-rm related_project: - https://nde.nl/ontology/hc/project/nde/versnellen-2023 - contact_email: versnellen@netwerkdigitaalerfgoed.nl + has_or_had_contact_point: + email: versnellen@netwerkdigitaalerfgoed.nl keyword: - digital heritage - infrastructure diff --git a/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml b/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml index 418c580eba..33af9aec37 100644 --- a/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml +++ b/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml @@ -210,9 +210,13 @@ classes: setpoint_tolerance: 2.0 setpoint_unit: DEGREE_CELSIUS iso_standard_reference: EN 15757:2010 - humidity_target: 50.0 - humidity_tolerance: 5.0 + - setpoint_type: RELATIVE_HUMIDITY + setpoint_value: 50.0 + setpoint_tolerance: 5.0 + setpoint_unit: PERCENT + iso_standard_reference: EN 15757:2010 light_max_lux: 50.0 + has_or_had_requirement_status: is_required: true requirement_type: uv_filtered_lighting @@ -251,9 +255,13 @@ classes: setpoint_tolerance: 2.0 setpoint_unit: DEGREE_CELSIUS iso_standard_reference: ISO 18911:2010 - humidity_target: 30.0 - humidity_tolerance: 5.0 + - setpoint_type: RELATIVE_HUMIDITY + setpoint_value: 30.0 + setpoint_tolerance: 5.0 + setpoint_unit: PERCENT + iso_standard_reference: ISO 18911:2010 light_max_lux: 0.0 + has_or_had_requirement_status: is_required: true requirement_type: uv_filtered_lighting