diff --git a/.opencode/rules/wikidata-mapping-verification-rule.md b/.opencode/rules/wikidata-mapping-verification-rule.md new file mode 100644 index 0000000000..09197c7fbf --- /dev/null +++ b/.opencode/rules/wikidata-mapping-verification-rule.md @@ -0,0 +1,97 @@ +# Wikidata Mapping Verification Rule + +## Rule: Always Verify Wikidata Mappings Using Authenticated Tools + +When adding or reviewing Wikidata mappings (wd:Qxxxxx), you MUST verify the entity exists and is semantically appropriate using the available tools. + +### Verification Methods (in order of preference) + +#### 1. Wikidata SPARQL Query (Primary) + +Use `wikidata-authenticated_execute_sparql` to verify entity labels and descriptions: + +```sparql +SELECT ?item ?itemLabel ?itemDescription WHERE { + VALUES ?item { wd:Q38723 wd:Q2385804 } + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +``` + +#### 2. Wikidata Metadata API + +Use `wikidata-authenticated_get_metadata` to retrieve label and description: + +``` +entity_id: Q38723 +language: en +``` + +#### 3. Web Search as Fallback + +If authenticated tools fail, use `linkup_linkup-search` or `exa_web_search_exa`: +``` +query: "Wikidata Q38723 higher education institution" +``` + +### Common Errors to Avoid + +| Error | Example | Fix | +|-------|---------|-----| +| **Wrong QID** | Q600875 (a person) for "academic program" | Q600134 (course) | +| **Too broad** | Q35120 (entity) for specific class | Use appropriate subclass | +| **Too narrow** | Q3918 (university) for general academic institution | Use Q38723 (higher education institution) | +| **Different concept** | Q416703 (museum building) for museum organization | Use appropriate organizational class | + +### Verification Checklist + +Before committing any Wikidata mapping: + +- [ ] QID exists (not 404) +- [ ] Label matches expected concept +- [ ] Description confirms semantic alignment +- [ ] Mapping specificity follows Rule 63 (exact/broad/narrow/close) +- [ ] Not a duplicate of another mapping in the same class + +### Example Verification + +**WRONG:** +```yaml +# Q600875 was not verified - it's actually a person +close_mappings: + - wd:Q600875 # Juan Lindolfo Cuestas - President of Uruguay! +``` + +**CORRECT:** +```yaml +# Verified via SPARQL: Q600134 = "course" +close_mappings: + - wd:Q600134 # program of study, or unit of teaching +``` + +### SPARQL Query Template + +```sparql +SELECT ?item ?itemLabel ?itemDescription ?itemAltLabel WHERE { + VALUES ?item { wd:Q38723 } + OPTIONAL { ?item skos:altLabel ?itemAltLabel. FILTER(LANG(?itemAltLabel) = "en") } + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +``` + +### Batch Verification + +For multiple QIDs in a file, verify all at once: + +```sparql +SELECT ?item ?itemLabel ?itemDescription WHERE { + VALUES ?item { wd:Q38723 wd:Q2385804 wd:Q600134 wd:Q3918 } + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +} +``` + +### Integration with Other Rules + +This rule complements: +- **Rule 63** (mapping-specificity-hypernym-rule.md): Determines mapping type (exact/broad/narrow) +- **no-hallucinated-ontology-references.md**: Prevents fake ontology terms +- **verified-ontology-terms.md**: General ontology verification diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index 5a25130f6d..2023f5a752 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-02-14T19:11:47.040Z", + "generated": "2026-02-14T21:22:57.846Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2369, "categoryCounts": { diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index 2023f5a752..a8781e1867 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-02-14T21:22:57.846Z", + "generated": "2026-02-14T21:37:12.868Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2369, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/AcademicArchive.yaml b/schemas/20251121/linkml/modules/classes/AcademicArchive.yaml index 6429d647e1..1e66af5964 100644 --- a/schemas/20251121/linkml/modules/classes/AcademicArchive.yaml +++ b/schemas/20251121/linkml/modules/classes/AcademicArchive.yaml @@ -153,7 +153,6 @@ classes: - wd:Q27032435 close_mappings: - rico:CorporateBody - - skos:Concept broad_mappings: - wd:Q166118 narrow_mappings: diff --git a/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetType.yaml b/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetType.yaml index aef140a1bd..738e5cb30a 100644 --- a/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetType.yaml +++ b/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetType.yaml @@ -110,7 +110,6 @@ classes: inlined: true broad_mappings: - rico:RecordSetType - - skos:Concept close_mappings: - wd:Q27032435 see_also: diff --git a/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetTypes.yaml b/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetTypes.yaml index ed724368c8..3665328cbf 100644 --- a/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetTypes.yaml +++ b/schemas/20251121/linkml/modules/classes/AcademicArchiveRecordSetTypes.yaml @@ -105,7 +105,6 @@ classes: equals_string: "hc:ArchiveOrganizationType" broad_mappings: - rico:RecordSetType - - skos:Concept related_mappings: - rico-rst:Fonds - wd:Q1643722 diff --git a/schemas/20251121/linkml/modules/classes/AcademicInstitution.yaml b/schemas/20251121/linkml/modules/classes/AcademicInstitution.yaml index cc15df680d..0ab7e46525 100644 --- a/schemas/20251121/linkml/modules/classes/AcademicInstitution.yaml +++ b/schemas/20251121/linkml/modules/classes/AcademicInstitution.yaml @@ -1,22 +1,101 @@ id: https://nde.nl/ontology/hc/class/AcademicInstitution name: AcademicInstitution -title: AcademicInstitution -description: An institution of higher education or research. +title: Academic Institution 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# + wd: http://www.wikidata.org/entity/ default_prefix: hc imports: - linkml:types - ../slots/has_label classes: AcademicInstitution: + description: >- + Organization providing post-secondary education or conducting advanced research. + Includes universities, colleges, polytechnics, institutes of technology, research + institutes, and other tertiary educational entities. + alt_descriptions: + nl: >- + Organisatie die hoger onderwijs biedt of gevorderd onderzoek uitvoert. Omvat + universiteiten, hogescholen, polytechnische instituten, technologische instituten, + onderzoeksinstituten en andere tertiaire onderwijsinstellingen. + de: >- + Organisation, die Hochschulbildung anbietet oder fortgeschrittene Forschung + betreibt. Umfasst Universitaeten, Hochschulen, Polytechnische Institute, + Technologieinstitute, Forschungsinstitute und andere tertiaere Bildungseinrichtungen. + fr: >- + Organisation dispensant un enseignement superieur ou menant des recherches + avancees. Comprend les universites, les colleges, les instituts polytechniques, + les instituts de technologie, les instituts de recherche et autres etablissements + d'enseignement tertiaire. + es: >- + Organizacion que proporciona educacion postsecundaria o realiza investigacion + avanzada. Incluye universidades, colegios, institutos politecnicos, institutos + de tecnologia, institutos de investigacion y otras entidades educativas terciarias. + ar: >- + منظمة توفر تعليمًا ما بعد الثانوي أو تجري أبحاثًا متقدمة. تشمل الجامعات + والكليات والمعاهد الفنية ومعاهد التكنولوجيا ومعاهد البحث وغيرها من + المؤسسات التعليمية العليا. + id: >- + Organisasi yang menyediakan pendidikan pasca-menengah atau melakukan penelitian + lanjutan. Termasuk universitas, perguruan tinggi, politeknik, institut teknologi, + institut penelitian, dan entitas pendidikan tersier lainnya. + zh: >- + 提供高等教育或进行高级研究的组织。包括大学、学院、理工学院、技术学院、 + 研究所和其他高等教育机构。 + examples: + - value: + has_label: University of Amsterdam + description: A research university in the Netherlands + - value: + has_label: Technical College of Berlin + description: A technical higher education institution in Germany class_uri: schema:EducationalOrganization - description: Academic institution. slots: - has_label + structured_aliases: + - literal_form: onderwijsinstelling + in_language: nl + - literal_form: Bildungseinrichtung + in_language: de + - literal_form: etablissement d'enseignement + in_language: fr + - literal_form: institucion educativa + in_language: es + - literal_form: مؤسسة تعليمية + in_language: ar + - literal_form: institusi pendidikan + in_language: id + - literal_form: 教育机构 + in_language: zh + keywords: + - university + - college + - polytechnic + - institute of technology + - research institute + - higher education + - tertiary education + - academic + exact_mappings: + - wd:Q38723 + close_mappings: + - schema:EducationalOrganization + - schema:CollegeOrUniversity + broad_mappings: + - wd:Q2385804 + - skos:Concept + comments: + - Encompasses both degree-granting institutions and research-focused organizations + - Distinct from primary and secondary educational institutions + - May include specialized academies, conservatories, and professional schools + see_also: + - AcademicArchive + - AcademicProgram annotations: - specificity_score: 0.1 - specificity_rationale: Generic utility class/slot created during migration - custodian_types: "['*']" + specificity_score: "0.4" + specificity_rationale: Specific to tertiary education and research organizations + custodian_types: "['AcademicArchive']" diff --git a/schemas/20251121/linkml/modules/classes/AcademicProgram.yaml b/schemas/20251121/linkml/modules/classes/AcademicProgram.yaml index 901dd89d8c..7aa1857093 100644 --- a/schemas/20251121/linkml/modules/classes/AcademicProgram.yaml +++ b/schemas/20251121/linkml/modules/classes/AcademicProgram.yaml @@ -1,22 +1,113 @@ id: https://nde.nl/ontology/hc/class/AcademicProgram name: AcademicProgram -title: AcademicProgram -description: An educational or research program offered by an academic institution. +title: Academic Program 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# + wd: http://www.wikidata.org/entity/ default_prefix: hc imports: - linkml:types - ../slots/has_label classes: AcademicProgram: + description: >- + Course of study or research offered by a tertiary educational institution, + leading to a credential such as a degree, diploma, or certificate. Comprises + a defined sequence of learning opportunities with clear requirements, start + and end points, and intended outcomes. + alt_descriptions: + nl: >- + Gestructureerd studieprogramma of onderzoeksprogramma aangeboden door een + instelling voor hoger onderwijs, leidend tot een kwalificatie zoals een graad, + diploma of certificaat. Omvat een gedefinieerde reeks leermogelijkheden met + duidelijke vereisten, begin- en eindpunten en beoogde resultaten. + de: >- + Strukturierter Studiengang oder Forschungsprogramm, das von einer Hochschuleinrichtung + angeboten wird und zu einem Abschluss wie einem Grad, Diplom oder Zertifikat + fuehrt. Umfasst eine definierte Folge von Lernmoeglichkeiten mit klaren Anforderungen, + Start- und Endpunkten und angestrebten Ergebnissen. + fr: >- + Programme d'etudes ou de recherche structure propose par un etablissement + d'enseignement superieur, conduisant a une qualification telle qu'un diplome, + un certificat ou une attestation. Comprend une sequence definie d'opportunites + d'apprentissage avec des exigences, des points de depart et d'arrivee et des + resultats prevus clairs. + es: >- + Programa de estudios o investigacion estructurado ofrecido por una institucion + de educacion superior, que conduce a una credencial como un titulo, diploma + o certificado. Comprende una secuencia definida de oportunidades de aprendizaje + con requisitos claros, puntos de inicio y fin y resultados previstos. + ar: >- + برنامج دراسي أو بحثي منظم تقدمه مؤسسة تعليم عالي، يؤدي إلى مؤهل مثل + درجة علمية أو دبلوم أو شهادة. يتضمن سلسلة محددة من فرص التعلم مع متطلبات + واضحة ونقاط بداية ونهاية ونتائج مقصودة. + id: >- + Program studi atau penelitian terstruktur yang ditawarkan oleh institusi + pendidikan tinggi, yang mengarah ke kredensial seperti gelar, diploma, atau + sertifikat. Mencakup urutan peluang pembelajaran yang ditentukan dengan + persyaratan, titik awal dan akhir, serta hasil yang diharapkan yang jelas. + zh: >- + 高等教育机构提供的结构化学习或研究课程,可获学位、文凭或证书等资格。 + 包含一系列定义明确的学习机会,有清晰的要求、起点和终点以及预期成果。 + examples: + - value: + has_label: Bachelor of Computer Science + description: Undergraduate degree program in computer science + - value: + has_label: Master of Arts in History + description: Graduate degree program in historical studies + - value: + has_label: PhD Program in Molecular Biology + description: Doctoral research program in molecular biology + - value: + has_label: Professional Certificate in Digital Archiving + description: Non-degree professional development program class_uri: schema:EducationalOccupationalProgram - description: Academic program. slots: - has_label + structured_aliases: + - literal_form: studieprogramma + in_language: nl + - literal_form: Studiengang + in_language: de + - literal_form: programme d'etudes + in_language: fr + - literal_form: programa de estudios + in_language: es + - literal_form: برنامج أكاديمي + in_language: ar + - literal_form: program akademik + in_language: id + - literal_form: 学术项目 + in_language: zh + keywords: + - degree program + - diploma program + - certificate program + - undergraduate + - graduate + - doctoral + - course of study + - curriculum + - major + - specialization + - research program + exact_mappings: + - schema:EducationalOccupationalProgram + close_mappings: + - wd:Q600134 + broad_mappings: + - skos:Concept + comments: + - Programs may be full-time, part-time, or hybrid in delivery format + - May include professional, vocational, or academic orientations + - Often organized into semesters, quarters, or modular units + see_also: + - AcademicInstitution annotations: - specificity_score: 0.1 - specificity_rationale: Generic utility class/slot created during migration - custodian_types: "['*']" + specificity_score: "0.4" + specificity_rationale: Specific to structured academic offerings + custodian_types: "['AcademicArchive']" diff --git a/schemas/20251121/linkml/modules/classes/Access.yaml b/schemas/20251121/linkml/modules/classes/Access.yaml index 3cc2aef0d9..1cf0b50d74 100644 --- a/schemas/20251121/linkml/modules/classes/Access.yaml +++ b/schemas/20251121/linkml/modules/classes/Access.yaml @@ -1,12 +1,13 @@ id: https://nde.nl/ontology/hc/class/Access name: Access -title: Access Class +title: Access prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ schema: http://schema.org/ dcterms: http://purl.org/dc/terms/ crm: http://www.cidoc-crm.org/cidoc-crm/ + skos: http://www.w3.org/2004/02/skos/core# default_prefix: hc imports: - linkml:types @@ -19,43 +20,107 @@ imports: - ../slots/temporal_extent classes: Access: + description: >- + Information describing how heritage collections, services, or facilities + may be used or consulted. Captures access types, eligible user categories, + conditions, and temporal availability. + alt_descriptions: + nl: >- + Gestructureerde informatie over hoe erfgoedcollecties, diensten of faciliteiten + kunnen worden gebruikt of geraadpleegd. Legt toegangstypen, in aanmerking komende + gebruikerscategorieen, voorwaarden en tijdelijke beschikbaarheid vast. + de: >- + Strukturierte Informationen darueber, wie Erbesammlungen, Dienstleistungen oder + Einrichtungen genutzt oder konsultiert werden koennen. Erfasst Zugangsarten, + berechtigte Benutzerkategorien, Bedingungen und zeitliche Verfuegbarkeit. + fr: >- + Informations structurees decrivant comment les collections patrimoniales, + les services ou les installations peuvent etre utilises ou consultes. Capture + les types d'acces, les categories d'utilisateurs eligibles, les conditions + et la disponibilite temporelle. + es: >- + Informacion estructurada que describe como se pueden utilizar o consultar + las colecciones patrimoniales, servicios o instalaciones. Captura los tipos + de acceso, las categorias de usuarios elegibles, las condiciones y la + disponibilidad temporal. + ar: >- + معلومات منظمة تصف كيف يمكن استخدام أو استشارة مجموعات التراث أو الخدمات + أو المرافق. تسجل أنواع الوصول وفئات المستخدمين المؤهلين والشروط + والتوفر الزمني. + id: >- + Informasi terstruktur yang menjelaskan bagaimana koleksi warisan, layanan, + atau fasilitas dapat digunakan atau dikonsultasikan. Merekam jenis akses, + kategori pengguna yang memenuhi syarat, kondisi, dan ketersediaan temporal. + zh: >- + 描述如何使用或查阅遗产馆藏、服务或设施的结构化信息。记录访问类型、 + 符合条件的用户类别、条件和时间可用性。 + examples: + - value: + has_type: PUBLIC + has_description: Open to general public during gallery hours + has_user_category: + - general public + description: Museum gallery with unrestricted public access + - value: + has_type: BY_APPOINTMENT + has_user_category: + - credentialed researchers + - graduate students with faculty sponsor + description: Special collections reading room requiring advance booking + - value: + has_type: ACADEMIC + has_description: Open to enrolled students and faculty; public by appointment + has_user_category: + - enrolled students + - faculty + - research staff + description: University library with priority for academic community + - value: + has_type: DIGITAL_ONLY + has_description: Collection accessible only through online database + has_user_category: + - anyone with internet access + description: Digitized collection available remotely + - value: + has_type: RESTRICTED + has_description: Fragile materials require staff supervision + has_user_category: + - senior researchers with institutional affiliation + description: Conservation-restricted materials with supervised access class_uri: dcterms:RightsStatement - description: | - Structured access information for heritage collections, services, or facilities. - **Purpose**: - Replaces simple string descriptions of access conditions with structured - data capturing access types, eligible users, conditions, and restrictions. - **Key Properties**: - - `has_type`: Type of access (PUBLIC, BY_APPOINTMENT, RESTRICTED, etc.) - - `has_user_category`: Who can access (public, students, faculty, researchers) - - `condition_of_access`: Conditions or requirements for access - - `has_description`: Free-text description - - `temporal_extent`: When this access policy applies - **Access Types**: - - PUBLIC: Open to general public - - BY_APPOINTMENT: Requires advance appointment - - ACADEMIC: Restricted to academic community - - RESEARCHER: Restricted to credentialed researchers - - MEMBER: Requires membership - - RESTRICTED: Limited access with specific conditions - - CLOSED: Not currently accessible - - DIGITAL_ONLY: Available only in digital form - **Ontological Alignment**: - - **Primary**: `dcterms:RightsStatement` - Dublin Core rights statement - - **Close**: `schema:publicAccess` - Schema.org access indicator - - **Related**: `crm:E30_Right` - CIDOC-CRM rights - exact_mappings: - - dcterms:RightsStatement - close_mappings: - - schema:publicAccess - related_mappings: - - crm:E30_Right slots: - - has_type - - has_user_category - - has_description - - temporal_extent - - has_frequency + - has_type + - has_user_category + - has_description + - temporal_extent + - has_frequency + structured_aliases: + - literal_form: toegang + in_language: nl + - literal_form: Zugang + in_language: de + - literal_form: acces + in_language: fr + - literal_form: acceso + in_language: es + - literal_form: وصول + in_language: ar + - literal_form: akses + in_language: id + - literal_form: 访问 + in_language: zh + keywords: + - access policy + - access rights + - opening hours + - appointment required + - restricted materials + - public access + - research access + - reading room + - digital access + - physical access + - user eligibility slot_usage: has_type: range: AccessTypeEnum @@ -63,9 +128,9 @@ classes: has_user_category: required: false examples: - - value: "enrolled students" - - value: "faculty and staff" - - value: "visiting researchers with credentials" + - value: enrolled students + - value: faculty and staff + - value: visiting researchers with credentials temporal_extent: required: false range: TimeSpan @@ -75,37 +140,27 @@ classes: range: Frequency inlined: true examples: - - value: - has_label: "Daily" - annotations: - specificity_score: 0.50 - specificity_rationale: "Moderately specific - applies to collection and service access contexts" - custodian_types: '["*"]' - custodian_types_rationale: "All institution types offer some form of access" + - value: + has_label: Daily + exact_mappings: + - dcterms:RightsStatement + close_mappings: + - schema:publicAccess + related_mappings: + - crm:E30_Right + broad_mappings: + - skos:Concept comments: - - "Created per slot_fixes.yaml revision for collection_access migration" - - "Replaces string-based collection_access with structured access data" - - "RULE 53: Part of collection_access → offers_or_offered_access + Access migration" - examples: - - value: - has_type: PUBLIC - has_description: "Open to general public during gallery hours" - has_user_category: - - "general public" - - value: - has_type: BY_APPOINTMENT - has_user_category: - - "credentialed researchers" - - "graduate students with faculty sponsor" - - value: - has_type: ACADEMIC - has_description: "Open to enrolled students and faculty; public by appointment" - has_user_category: - - "enrolled students" - - "faculty" - - "research staff" - - value: - has_type: DIGITAL_ONLY - has_description: "Collection accessible only through online database" - has_user_category: - - "anyone with internet access" \ No newline at end of file + - Replaces simple string descriptions of access conditions with structured data + - Key slots include has_type (access type), has_user_category (eligible users), has_description (conditions), and temporal_extent (when policy applies) + - Common access types include PUBLIC, BY_APPOINTMENT, ACADEMIC, RESEARCHER, MEMBER, RESTRICTED, CLOSED, and DIGITAL_ONLY + - Created per slot_fixes.yaml revision for collection_access migration + - RULE 53: Part of collection_access to offers_or_offered_access plus Access migration + see_also: + - AccessTypeEnum + - dcterms:accessRights + annotations: + specificity_score: "0.5" + specificity_rationale: Moderately specific - applies to collection and service access contexts + custodian_types: "['*']" + custodian_types_rationale: All institution types offer some form of access