From 73b3b210175e924f8b0fe9061d20ace5e1601766 Mon Sep 17 00:00:00 2001 From: kempersc Date: Tue, 13 Jan 2026 15:57:26 +0100 Subject: [PATCH] docs: add Rule 52 prohibiting duplicate ontology mappings - Create .opencode/rules/no-duplicate-ontology-mappings.md with detection script - Add Rule 52 to AGENTS.md (after Rule 51) - Fix 29 duplicate mappings: same URI in multiple mapping categories - 26 slot files: remove duplicates keeping most precise mapping - 3 class files: ExhibitionSpace, Custodian, DigitalPlatform - Mapping precedence: exact > close > narrow/broad > related Each ontology URI must appear in only ONE mapping category per schema element, following SKOS semantics where mapping properties are mutually exclusive. --- .../rules/no-duplicate-ontology-mappings.md | 189 ++++++++++++++++++ AGENTS.md | 50 +++++ schemas/20251121/linkml/manifest.json | 2 +- .../linkml/modules/classes/Custodian.yaml | 1 - .../modules/classes/DigitalPlatform.yaml | 1 - .../modules/classes/ExhibitionSpace.yaml | 1 - .../modules/slots/cataloging_standard.yaml | 2 - .../linkml/modules/slots/claim_type.yaml | 2 - .../linkml/modules/slots/claim_value.yaml | 2 - .../modules/slots/collection_description.yaml | 2 - .../modules/slots/collection_scope.yaml | 2 - .../linkml/modules/slots/collection_size.yaml | 2 - .../linkml/modules/slots/collection_type.yaml | 2 - .../modules/slots/confidence_method.yaml | 2 - .../linkml/modules/slots/conflict_status.yaml | 6 +- .../linkml/modules/slots/contact_email.yaml | 2 - .../linkml/modules/slots/event_date.yaml | 2 - .../modules/slots/extraction_method.yaml | 2 - .../linkml/modules/slots/extraction_note.yaml | 2 - .../linkml/modules/slots/geonames_id.yaml | 2 - .../has_or_had_data_service_endpoint.yaml | 2 - .../linkml/modules/slots/html_file.yaml | 2 - .../modules/slots/identifier_value.yaml | 2 - .../slots/is_or_was_encompassed_by.yaml | 3 +- .../linkml/modules/slots/managed_by.yaml | 2 - .../modules/slots/metadata_standard.yaml | 2 - .../modules/slots/observation_source.yaml | 2 - .../linkml/modules/slots/platform_type.yaml | 2 - .../linkml/modules/slots/retrieval_agent.yaml | 2 - .../linkml/modules/slots/source_type.yaml | 2 - .../linkml/modules/slots/source_url.yaml | 2 - .../linkml/modules/slots/wikidata_id.yaml | 2 - 32 files changed, 243 insertions(+), 58 deletions(-) create mode 100644 .opencode/rules/no-duplicate-ontology-mappings.md diff --git a/.opencode/rules/no-duplicate-ontology-mappings.md b/.opencode/rules/no-duplicate-ontology-mappings.md new file mode 100644 index 0000000000..c5736ea840 --- /dev/null +++ b/.opencode/rules/no-duplicate-ontology-mappings.md @@ -0,0 +1,189 @@ +# Rule 52: No Duplicate Ontology Mappings + +## Summary + +Each ontology URI MUST appear in only ONE mapping category per schema element. A URI cannot simultaneously have multiple semantic relationships to the same class or slot. + +## The Problem + +LinkML provides five mapping annotation types based on SKOS vocabulary alignment: + +| Property | SKOS Predicate | Meaning | +|----------|---------------|---------| +| `exact_mappings` | `skos:exactMatch` | "This IS that" (equivalent) | +| `close_mappings` | `skos:closeMatch` | "This is very similar to that" | +| `related_mappings` | `skos:relatedMatch` | "This is conceptually related to that" | +| `narrow_mappings` | `skos:narrowMatch` | "This is MORE SPECIFIC than that" | +| `broad_mappings` | `skos:broadMatch` | "This is MORE GENERAL than that" | + +These relationships are **mutually exclusive**. A URI cannot simultaneously: +- BE the element (`exact_mappings`) AND be broader than it (`broad_mappings`) +- Be closely similar (`close_mappings`) AND be more general (`broad_mappings`) + +## Anti-Pattern (WRONG) + +```yaml +# WRONG - schema:url appears in TWO mapping types +slots: + source_url: + slot_uri: prov:atLocation + exact_mappings: + - schema:url # Says "source_url IS schema:url" + broad_mappings: + - schema:url # Says "schema:url is MORE GENERAL than source_url" +``` + +This is a **logical contradiction**: `source_url` cannot simultaneously BE `schema:url` AND be more specific than `schema:url`. + +## Correct Pattern + +```yaml +# CORRECT - each URI appears in only ONE mapping type +slots: + source_url: + slot_uri: prov:atLocation + exact_mappings: + - schema:url # source_url IS schema:url + close_mappings: + - dcterms:source # Similar but not identical +``` + +## Decision Guide: Which Mapping to Keep + +When a URI appears in multiple categories, keep the **most precise** one: + +### Precedence Order (keep the first match) + +1. **exact_mappings** - Strongest claim: semantic equivalence +2. **close_mappings** - Strong claim: nearly equivalent +3. **narrow_mappings** / **broad_mappings** - Hierarchical relationship +4. **related_mappings** - Weakest claim: conceptual association + +### Decision Matrix + +| If URI appears in... | Keep | Remove | +|---------------------|------|--------| +| exact + broad | exact | broad | +| exact + close | exact | close | +| exact + related | exact | related | +| close + broad | close | broad | +| close + related | close | related | +| related + broad | related | broad | +| narrow + broad | narrow | broad (contradictory!) | + +### Special Case: narrow + broad + +If a URI appears in BOTH `narrow_mappings` AND `broad_mappings`, this is a **data error** - the same URI cannot be both more specific AND more general. Investigate which is correct based on the ontology definition. + +## Real Examples Fixed + +### Example 1: source_url + +```yaml +# BEFORE (wrong) +slots: + source_url: + exact_mappings: + - schema:url + broad_mappings: + - schema:url # Duplicate! + +# AFTER (correct) +slots: + source_url: + exact_mappings: + - schema:url # Keep exact (strongest) + # broad_mappings removed +``` + +### Example 2: Custodian class + +```yaml +# BEFORE (wrong) +classes: + Custodian: + close_mappings: + - cpov:PublicOrganisation + narrow_mappings: + - cpov:PublicOrganisation # Duplicate! + +# AFTER (correct) +classes: + Custodian: + close_mappings: + - cpov:PublicOrganisation # Keep close (Custodian ≈ PublicOrganisation) + # narrow_mappings: use for URIs that are MORE SPECIFIC than Custodian +``` + +### Example 3: geonames_id (narrow + broad conflict) + +```yaml +# BEFORE (wrong - logical contradiction!) +slots: + geonames_id: + narrow_mappings: + - dcterms:identifier # Says geonames_id is MORE SPECIFIC + broad_mappings: + - dcterms:identifier # Says geonames_id is MORE GENERAL + +# AFTER (correct) +slots: + geonames_id: + narrow_mappings: + - dcterms:identifier # geonames_id IS a specific type of identifier + # broad_mappings removed (was contradictory) +``` + +## Detection Script + +Run this to find duplicate mappings in the schema: + +```python +import yaml +from pathlib import Path +from collections import defaultdict + +mapping_types = ['exact_mappings', 'close_mappings', 'related_mappings', + 'narrow_mappings', 'broad_mappings'] + +dirs = [ + Path('schemas/20251121/linkml/modules/slots'), + Path('schemas/20251121/linkml/modules/classes'), +] + +for d in dirs: + for yaml_file in d.glob('*.yaml'): + try: + with open(yaml_file) as f: + content = yaml.safe_load(f) + except Exception: + continue + if not content: + continue + + for section in ['classes', 'slots']: + items = content.get(section, {}) + if not isinstance(items, dict): + continue + for name, defn in items.items(): + if not isinstance(defn, dict): + continue + uri_to_types = defaultdict(list) + for mt in mapping_types: + for uri in defn.get(mt, []) or []: + uri_to_types[uri].append(mt) + for uri, types in uri_to_types.items(): + if len(types) > 1: + print(f"{yaml_file}: {name} - {uri} in {types}") +``` + +## Validation Rule + +**Pre-commit check**: Before committing LinkML schema changes, run the detection script. If any duplicates are found, the commit should fail. + +## References + +- [LinkML Mappings Documentation](https://linkml.io/linkml-model/latest/docs/mappings/) +- [SKOS Mapping Properties](https://www.w3.org/TR/skos-reference/#mapping) +- Rule 50: Ontology-to-LinkML Mapping Convention (parent rule) +- Rule 51: No Hallucinated Ontology References diff --git a/AGENTS.md b/AGENTS.md index 0f061e263b..6808e00959 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1528,6 +1528,56 @@ slots: --- +### Rule 52: No Duplicate Ontology Mappings + +🚨 **CRITICAL**: Each ontology URI MUST appear in only ONE mapping category per schema element. A URI cannot have multiple semantic relationships to the same class or slot. + +**The Problem**: LinkML mapping properties (`exact_mappings`, `close_mappings`, `related_mappings`, `narrow_mappings`, `broad_mappings`) are mutually exclusive based on SKOS semantics. The same URI appearing in multiple categories creates logical contradictions. + +**Anti-Pattern (WRONG)**: + +```yaml +slots: + source_url: + exact_mappings: + - schema:url # Says "source_url IS schema:url" + broad_mappings: + - schema:url # Says "schema:url is MORE GENERAL than source_url" +# CONTRADICTION: source_url cannot both BE schema:url AND be more specific than it +``` + +**Correct Pattern**: + +```yaml +slots: + source_url: + exact_mappings: + - schema:url # Keep only the most precise mapping +``` + +**Decision Guide** - When duplicates found, keep the MOST PRECISE: + +| Precedence | Mapping Type | Meaning | +|------------|--------------|---------| +| 1st (keep) | `exact_mappings` | Semantic equivalence | +| 2nd | `close_mappings` | Nearly equivalent | +| 3rd | `narrow_mappings` | This is more specific | +| 4th | `broad_mappings` | This is more general | +| 5th | `related_mappings` | Conceptual association | + +**Quick Reference**: + +| If URI in... | Action | +|--------------|--------| +| exact + broad | Keep exact, remove broad | +| close + broad | Keep close, remove broad | +| related + broad | Keep related, remove broad | +| narrow + broad | ERROR - investigate (contradictory) | + +**See**: `.opencode/rules/no-duplicate-ontology-mappings.md` for complete documentation + +--- + ## Appendix: Full Rule Content (No .opencode Equivalent) The following rules have no separate .opencode file and are preserved in full: diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index ed2cedcc61..8f471c881b 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-13T12:50:30.701Z", + "generated": "2026-01-13T14:57:26.896Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2886, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/Custodian.yaml b/schemas/20251121/linkml/modules/classes/Custodian.yaml index 66175123f1..6d9a0d11d8 100644 --- a/schemas/20251121/linkml/modules/classes/Custodian.yaml +++ b/schemas/20251121/linkml/modules/classes/Custodian.yaml @@ -146,7 +146,6 @@ classes: - pico:Person - schema:Person - schema:Organization - - cpov:PublicOrganisation - rico:CorporateBody - org:Organization - foaf:Person diff --git a/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml b/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml index ce12ffd90f..8850d0db5c 100644 --- a/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml +++ b/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml @@ -91,7 +91,6 @@ classes: - foaf:homepage close_mappings: - schema:WebApplication - - schema:SoftwareApplication - dcat:Catalog - dcat:DataService - crm:E73_Information_Object diff --git a/schemas/20251121/linkml/modules/classes/ExhibitionSpace.yaml b/schemas/20251121/linkml/modules/classes/ExhibitionSpace.yaml index 602cefb697..e847b06d03 100644 --- a/schemas/20251121/linkml/modules/classes/ExhibitionSpace.yaml +++ b/schemas/20251121/linkml/modules/classes/ExhibitionSpace.yaml @@ -76,7 +76,6 @@ classes: related_mappings: - schema:Museum - schema:ArtGallery - - aat:300005768 slots: - has_or_had_admission_fee - current_exhibition diff --git a/schemas/20251121/linkml/modules/slots/cataloging_standard.yaml b/schemas/20251121/linkml/modules/slots/cataloging_standard.yaml index ab01fe159a..ef794dc667 100644 --- a/schemas/20251121/linkml/modules/slots/cataloging_standard.yaml +++ b/schemas/20251121/linkml/modules/slots/cataloging_standard.yaml @@ -28,5 +28,3 @@ slots: description: Natural history specimen data standard related_mappings: - dcterms:conformsTo - broad_mappings: - - dcterms:conformsTo diff --git a/schemas/20251121/linkml/modules/slots/claim_type.yaml b/schemas/20251121/linkml/modules/slots/claim_type.yaml index ada44b4c5b..a76bf6a7f8 100644 --- a/schemas/20251121/linkml/modules/slots/claim_type.yaml +++ b/schemas/20251121/linkml/modules/slots/claim_type.yaml @@ -29,5 +29,3 @@ slots: ' close_mappings: - dcterms:type - broad_mappings: - - dcterms:type diff --git a/schemas/20251121/linkml/modules/slots/claim_value.yaml b/schemas/20251121/linkml/modules/slots/claim_value.yaml index 9f4053410e..3387d5b22c 100644 --- a/schemas/20251121/linkml/modules/slots/claim_value.yaml +++ b/schemas/20251121/linkml/modules/slots/claim_value.yaml @@ -14,5 +14,3 @@ slots: description: The extracted value from the web source. This is the actual content claimed to exist at the XPath location. close_mappings: - rdf:value - broad_mappings: - - rdf:value diff --git a/schemas/20251121/linkml/modules/slots/collection_description.yaml b/schemas/20251121/linkml/modules/slots/collection_description.yaml index cd05dfaef2..7cc0d677eb 100644 --- a/schemas/20251121/linkml/modules/slots/collection_description.yaml +++ b/schemas/20251121/linkml/modules/slots/collection_description.yaml @@ -14,5 +14,3 @@ slots: - schema:description related_mappings: - dcterms:description - broad_mappings: - - dcterms:description diff --git a/schemas/20251121/linkml/modules/slots/collection_scope.yaml b/schemas/20251121/linkml/modules/slots/collection_scope.yaml index 921e718c3a..458e2959ad 100644 --- a/schemas/20251121/linkml/modules/slots/collection_scope.yaml +++ b/schemas/20251121/linkml/modules/slots/collection_scope.yaml @@ -21,5 +21,3 @@ slots: - dcterms:coverage close_mappings: - schema:about - broad_mappings: - - dcterms:coverage diff --git a/schemas/20251121/linkml/modules/slots/collection_size.yaml b/schemas/20251121/linkml/modules/slots/collection_size.yaml index 560ccf733d..d3d1447e2b 100644 --- a/schemas/20251121/linkml/modules/slots/collection_size.yaml +++ b/schemas/20251121/linkml/modules/slots/collection_size.yaml @@ -71,5 +71,3 @@ slots: - schema:numberOfItems close_mappings: - dcterms:extent - broad_mappings: - - dcterms:extent diff --git a/schemas/20251121/linkml/modules/slots/collection_type.yaml b/schemas/20251121/linkml/modules/slots/collection_type.yaml index 46953f8d9d..dc8780a9ad 100644 --- a/schemas/20251121/linkml/modules/slots/collection_type.yaml +++ b/schemas/20251121/linkml/modules/slots/collection_type.yaml @@ -41,5 +41,3 @@ slots: ' close_mappings: - dcterms:type - broad_mappings: - - dcterms:type diff --git a/schemas/20251121/linkml/modules/slots/confidence_method.yaml b/schemas/20251121/linkml/modules/slots/confidence_method.yaml index 75fed20c27..d014cc07b4 100644 --- a/schemas/20251121/linkml/modules/slots/confidence_method.yaml +++ b/schemas/20251121/linkml/modules/slots/confidence_method.yaml @@ -11,5 +11,3 @@ slots: ' close_mappings: - prov:wasGeneratedBy - broad_mappings: - - prov:wasGeneratedBy diff --git a/schemas/20251121/linkml/modules/slots/conflict_status.yaml b/schemas/20251121/linkml/modules/slots/conflict_status.yaml index b3d48ffeb0..e8dd55ac42 100644 --- a/schemas/20251121/linkml/modules/slots/conflict_status.yaml +++ b/schemas/20251121/linkml/modules/slots/conflict_status.yaml @@ -39,7 +39,7 @@ slots: conflict_status: status: destroyed date: "2023-12-08" - description: "Destroyed by Israeli airstrike\ \ during Gaza conflict" + description: "Destroyed by Israeli airstrike during Gaza conflict" sources: - "LAP Gaza Report 2024" @@ -49,7 +49,7 @@ slots: status: damaged date: "2022-03-01" is_rebuilding: true - description: "Damaged\ \ by shelling, currently under restoration" + description: "Damaged by shelling, currently under restoration" sources: - "UNESCO Ukraine heritage monitoring" @@ -62,5 +62,3 @@ slots: - hc:time_of_destruction - hc:ConflictStatus - hc:ConflictStatusEnum - broad_mappings: - - adms:status diff --git a/schemas/20251121/linkml/modules/slots/contact_email.yaml b/schemas/20251121/linkml/modules/slots/contact_email.yaml index be26b4d6fd..d4429de973 100644 --- a/schemas/20251121/linkml/modules/slots/contact_email.yaml +++ b/schemas/20251121/linkml/modules/slots/contact_email.yaml @@ -26,5 +26,3 @@ slots: exact_mappings: - schema:email - vcard:hasEmail - broad_mappings: - - schema:email diff --git a/schemas/20251121/linkml/modules/slots/event_date.yaml b/schemas/20251121/linkml/modules/slots/event_date.yaml index 250ef9ae33..ea9ef23a09 100644 --- a/schemas/20251121/linkml/modules/slots/event_date.yaml +++ b/schemas/20251121/linkml/modules/slots/event_date.yaml @@ -19,5 +19,3 @@ slots: - schema:startDate related_mappings: - dcterms:date - broad_mappings: - - dcterms:date diff --git a/schemas/20251121/linkml/modules/slots/extraction_method.yaml b/schemas/20251121/linkml/modules/slots/extraction_method.yaml index 568fe326e5..c012b8e212 100644 --- a/schemas/20251121/linkml/modules/slots/extraction_method.yaml +++ b/schemas/20251121/linkml/modules/slots/extraction_method.yaml @@ -38,5 +38,3 @@ slots: - CustodianTimelineEvent overrides range to TimelineExtractionMethodEnum close_mappings: - prov:wasGeneratedBy - broad_mappings: - - prov:wasGeneratedBy diff --git a/schemas/20251121/linkml/modules/slots/extraction_note.yaml b/schemas/20251121/linkml/modules/slots/extraction_note.yaml index 80edbc9cbf..4d4645a317 100644 --- a/schemas/20251121/linkml/modules/slots/extraction_note.yaml +++ b/schemas/20251121/linkml/modules/slots/extraction_note.yaml @@ -16,5 +16,3 @@ slots: ' close_mappings: - skos:note - broad_mappings: - - skos:note diff --git a/schemas/20251121/linkml/modules/slots/geonames_id.yaml b/schemas/20251121/linkml/modules/slots/geonames_id.yaml index cb87b095e2..29ae72fbf0 100644 --- a/schemas/20251121/linkml/modules/slots/geonames_id.yaml +++ b/schemas/20251121/linkml/modules/slots/geonames_id.yaml @@ -38,8 +38,6 @@ slots: - gn:geonamesID narrow_mappings: - dcterms:identifier - broad_mappings: - - dcterms:identifier comments: - Used by Settlement, AuxiliaryPlace, and GeoSpatialPlace classes - 'Lookup URL: https://www.geonames.org/{geonames_id}/' diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_data_service_endpoint.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_data_service_endpoint.yaml index e4617135c4..16b25fbacf 100644 --- a/schemas/20251121/linkml/modules/slots/has_or_had_data_service_endpoint.yaml +++ b/schemas/20251121/linkml/modules/slots/has_or_had_data_service_endpoint.yaml @@ -32,5 +32,3 @@ slots: \n iiif_image_api_version: \"3.0\"\n```\n" close_mappings: - dcat:endpointURL - broad_mappings: - - dcat:endpointURL diff --git a/schemas/20251121/linkml/modules/slots/html_file.yaml b/schemas/20251121/linkml/modules/slots/html_file.yaml index 23796dd2f0..0dab1b6b10 100644 --- a/schemas/20251121/linkml/modules/slots/html_file.yaml +++ b/schemas/20251121/linkml/modules/slots/html_file.yaml @@ -29,5 +29,3 @@ slots: range: string related_mappings: - dcterms:source - broad_mappings: - - dcterms:source diff --git a/schemas/20251121/linkml/modules/slots/identifier_value.yaml b/schemas/20251121/linkml/modules/slots/identifier_value.yaml index e09074383f..df96c9cf42 100644 --- a/schemas/20251121/linkml/modules/slots/identifier_value.yaml +++ b/schemas/20251121/linkml/modules/slots/identifier_value.yaml @@ -9,5 +9,3 @@ slots: \ (ISIL)\n- 'Q190804' (Wikidata)\n- '148691498' (VIAF)\n- '0000 0001 2146 5765' (ISNI with spaces)\n" exact_mappings: - rdf:value - broad_mappings: - - rdf:value diff --git a/schemas/20251121/linkml/modules/slots/is_or_was_encompassed_by.yaml b/schemas/20251121/linkml/modules/slots/is_or_was_encompassed_by.yaml index d0ba6b6ec2..280ea389aa 100644 --- a/schemas/20251121/linkml/modules/slots/is_or_was_encompassed_by.yaml +++ b/schemas/20251121/linkml/modules/slots/is_or_was_encompassed_by.yaml @@ -54,9 +54,8 @@ slots: close_mappings: - schema:parentOrganization - - schema:memberOf - rico:isOrWasSubordinateTo - + broad_mappings: - schema:memberOf diff --git a/schemas/20251121/linkml/modules/slots/managed_by.yaml b/schemas/20251121/linkml/modules/slots/managed_by.yaml index 93fc9c0751..4e38ca0eb1 100644 --- a/schemas/20251121/linkml/modules/slots/managed_by.yaml +++ b/schemas/20251121/linkml/modules/slots/managed_by.yaml @@ -32,5 +32,3 @@ slots: - org:linkedTo close_mappings: - prov:wasAttributedTo - broad_mappings: - - prov:wasAttributedTo diff --git a/schemas/20251121/linkml/modules/slots/metadata_standard.yaml b/schemas/20251121/linkml/modules/slots/metadata_standard.yaml index f2afc7339e..84cbfd3780 100644 --- a/schemas/20251121/linkml/modules/slots/metadata_standard.yaml +++ b/schemas/20251121/linkml/modules/slots/metadata_standard.yaml @@ -37,5 +37,3 @@ slots: ' close_mappings: - dcterms:conformsTo - broad_mappings: - - dcterms:conformsTo diff --git a/schemas/20251121/linkml/modules/slots/observation_source.yaml b/schemas/20251121/linkml/modules/slots/observation_source.yaml index 74c0035dc3..e982d44b03 100644 --- a/schemas/20251121/linkml/modules/slots/observation_source.yaml +++ b/schemas/20251121/linkml/modules/slots/observation_source.yaml @@ -43,5 +43,3 @@ slots: range: string close_mappings: - dcterms:source - broad_mappings: - - dcterms:source diff --git a/schemas/20251121/linkml/modules/slots/platform_type.yaml b/schemas/20251121/linkml/modules/slots/platform_type.yaml index 0c53cb02f7..82fb6a767f 100644 --- a/schemas/20251121/linkml/modules/slots/platform_type.yaml +++ b/schemas/20251121/linkml/modules/slots/platform_type.yaml @@ -19,5 +19,3 @@ slots: \ types (e.g., digital archive + aggregator).\n" close_mappings: - dcterms:type - broad_mappings: - - dcterms:type diff --git a/schemas/20251121/linkml/modules/slots/retrieval_agent.yaml b/schemas/20251121/linkml/modules/slots/retrieval_agent.yaml index a7a43e9383..f4c8bbeb78 100644 --- a/schemas/20251121/linkml/modules/slots/retrieval_agent.yaml +++ b/schemas/20251121/linkml/modules/slots/retrieval_agent.yaml @@ -27,5 +27,3 @@ slots: - PersonWebClaim overrides range to RetrievalAgentEnum close_mappings: - prov:wasAttributedTo - broad_mappings: - - prov:wasAttributedTo diff --git a/schemas/20251121/linkml/modules/slots/source_type.yaml b/schemas/20251121/linkml/modules/slots/source_type.yaml index 01d32c7863..f9a43e6705 100644 --- a/schemas/20251121/linkml/modules/slots/source_type.yaml +++ b/schemas/20251121/linkml/modules/slots/source_type.yaml @@ -13,5 +13,3 @@ slots: ' related_mappings: - dcterms:type - broad_mappings: - - dcterms:type diff --git a/schemas/20251121/linkml/modules/slots/source_url.yaml b/schemas/20251121/linkml/modules/slots/source_url.yaml index 3410f85238..d0ca0043da 100644 --- a/schemas/20251121/linkml/modules/slots/source_url.yaml +++ b/schemas/20251121/linkml/modules/slots/source_url.yaml @@ -46,8 +46,6 @@ slots: exact_mappings: - schema:url - dcterms:source - broad_mappings: - - schema:url comments: - Maps to pav:retrievedFrom for provenance tracking - Essential for web claim verification workflows diff --git a/schemas/20251121/linkml/modules/slots/wikidata_id.yaml b/schemas/20251121/linkml/modules/slots/wikidata_id.yaml index f07deff942..7c2c7df354 100644 --- a/schemas/20251121/linkml/modules/slots/wikidata_id.yaml +++ b/schemas/20251121/linkml/modules/slots/wikidata_id.yaml @@ -40,5 +40,3 @@ slots: - schema:sameAs narrow_mappings: - dcterms:identifier - broad_mappings: - - dcterms:identifier