glam/schemas/20251121/linkml/modules/classes/PersonWebClaim.yaml
kempersc fcd1c21c63 Add aliases and enhance slot definitions across various modules
- Added new aliases for existing slots to improve clarity and usability, including:
  - has_deadline: has_embargo_end_date
  - has_extent: has_extent_text
  - has_fonds: has_fond
  - has_laboratory: conservation_lab
  - has_language: has_iso_code639_1, has_iso_code639_3
  - has_legal_basis: legal_basis
  - has_light_exposure: max_light_lux
  - has_measurement_unit: has_unit
  - has_note: has_custodian_observation
  - has_occupation: occupation
  - has_operating_hours: has_operating_hours
  - has_position: position
  - has_quantity: has_artwork_count, link_count
  - has_roadmap: review_date
  - has_skill: skill
  - has_speaker: speaker_label
  - has_specification: specification_url
  - has_statement: rights_statement_url, rights_statement
  - has_type: custodian_only
  - has_user_category: serves_visitors_only
  - hold_record_set: record_count
  - identified_by: has_index_number
  - in_period: has_period
  - in_place: has_place
  - in_series: has_series
  - measure: has_measurement
  - measured_on: measurement_date
  - organized_by: has_organizer
  - originate_from: has_origin
  - part_of: suborganization_of
  - published_on: has_publication_date
  - receive_investment: has_investment
  - related_to: connection_heritage_type
  - require: preservation_requirement
  - safeguarded_by: current_keeper, record_holder_note
  - state: states_or_stated
  - take_comission: takes_or_took_comission
  - take_place_at: takes_or_took_place_at
  - transmit_through: transmits_or_transmitted_through
  - warrant: warrants_or_warranted

- Introduced a new slot definition for evaluated_through to capture evaluation methodologies and review statuses.
2026-02-14 14:41:49 +01:00

124 lines
7 KiB
YAML

id: https://nde.nl/ontology/hc/class/PersonWebClaim
name: PersonWebClaim
title: Person Web Claim - Verifiable Person Data Claims
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
prov: http://www.w3.org/ns/prov#
pico: https://personsincontext.org/model#
foaf: http://xmlns.com/foaf/0.1/
imports:
- linkml:types
- ../enums/PersonClaimTypeEnum
- ../enums/RetrievalAgentEnum
- ../slots/has_note
- ../slots/has_provenance
- ../slots/has_score
- ../slots/identified_by
- ../slots/has_type
- ../slots/has_value
- ../slots/has_provenance_path
- ../slots/retrieved_by
- ../slots/retrieved_at
- ../slots/has_url
default_prefix: hc
classes:
PersonWebClaim:
class_uri: prov:Entity
description: "A verifiable claim about a person extracted from a web page with provenance.\n\n**RULE 26 COMPLIANCE: Person Data Provenance**\n\nAll person/staff data associated with heritage custodians MUST have\nweb claim provenance. This includes:\n- Staff names, titles, and roles\n- Contact information (if publicly available)\n- Professional history and education\n- Affiliations and expertise areas\n\n**VERIFIABILITY PRINCIPLE**\n\nLike the base WebClaim class, PersonWebClaim follows the \"XPath or Remove\" principle:\n- Claims from web pages MUST have has_provenance_path with XPath expression\n- Claims from APIs (LinkedIn via Exa) may omit has_provenance_path but MUST have source_url\n- Claims without any verifiable source are FABRICATED and must be removed\n\n**SOURCE HIERARCHY**\n\nWhen multiple sources provide the same information:\n1. Official institutional website (highest reliability)\n2. LinkedIn profile (high reliability)\n3. News articles/press releases (medium-high)\n\
4. Conference programs (medium)\n5. Academic publications (medium)\n6. Third-party databases (lower)\n\nDocument all sources when available; note conflicts.\n\n**CLAIM TYPES**\n\nCommon claim types for heritage institution staff:\n- **full_name**: Complete name as displayed\n- **role_title**: Job title (e.g., \"Senior Curator\")\n- **department**: Organizational unit\n- **email**: Professional contact (only if public)\n- **biography**: Professional bio text\n- **specialization**: Expertise areas\n- **education**: Degrees and institutions\n\n**EXTRACTION WORKFLOW**\n\n1. SCRAPE institutional staff/team pages with FireCrawl\n2. EXTRACT names and roles with XPath locations stored in has_provenance_path\n3. SEARCH LinkedIn for additional profile data\n4. CREATE PersonWebClaim for each extracted fact\n5. LINK claims to PersonObservation records\n\n**INTEGRATION WITH PERSONOBSERVATION**\n\nPersonObservation (the PiCo-based staff role record) references\nPersonWebClaim instances via\
\ the `web_claims` slot:\n\n```yaml\nPersonObservation:\n person_name: \"Dr. Jane Smith\"\n staff_role: CONSERVATOR\n has_web_claim:\n - claim_type: full_name\n claim_value: \"Dr. Jane Smith\"\n source_url: https://museum.org/team\n has_provenance_path:\n expression: /html/body/main/div[2]/h3\n match_score: 1.0\n retrieval_agent: firecrawl\n```\n\n**LINKEDIN PROFILE HANDLING**\n\nFor LinkedIn data, create separate profile files (per Rule 12, Rule 20)\nand reference them:\n\n```yaml\nlinkedin_claims:\n linkedin_url: https://www.linkedin.com/in/jane-smith\n profile_data_path: data/custodian/person/entity/jane-smith_20250115.json\n retrieved_on: \"2025-01-15T10:30:00Z\"\n retrieval_agent: exa_crawling_exa\n```\n"
exact_mappings:
- prov:Entity
close_mappings:
- schema:PropertyValue
- foaf:Document
slots:
- has_note
- has_provenance_path
- has_score
- identified_by
- has_type
- has_value
- has_provenance_path
- retrieved_by
- retrieved_at
- has_url
slot_usage:
has_note:
# range: string
multivalued: true
inlined: false # Fixed invalid inline for primitive type
inlined_as_list: false # Fixed invalid inline for primitive type
examples:
- value:
- note_type: extraction
note_content: Biography truncated from longer text on page
- value:
- note_type: extraction
note_content: Profile data stored in person/entity/taco-dibbits_20250115.json. No XPath for API extraction.
has_type:
required: true
has_value:
required: true
has_url:
required: true
retrieved_at:
required: true
retrieved_by:
required: true
range: RetrievalAgentEnum
has_provenance_path:
range: XPath
inlined: true
comments:
- 'MIGRATION (2026-01-18): Replaced person_claim_note with has_note using Note class per Rule 53'
- 'MIGRATION (2026-01-15): Replaced person_xpath/person_xpath_match_score slots with has_provenance_path using XPath class per slot_fixes.yaml'
- PersonWebClaim extends WebClaim pattern for person-specific data
- 'XPATH OR REMOVE: Claims without verifiable source must be removed'
- Links to PersonObservation via web_claims slot
- LinkedIn data stored separately in person/entity/ files (Rule 12, 20)
- See Rule 26 in AGENTS.md for complete documentation
examples:
- value:
person_claim_type: full_name
person_claim_value: Taco Dibbits
source_url: https://www.rijksmuseum.nl/en/about-us/organisation
retrieved_on: '2025-01-15T10:30:00Z'
has_provenance_path:
person_html_file: web/NL-NH-AMS-M-RM/rijksmuseum.nl/organisation.html
retrieval_agent: firecrawl
- value:
person_claim_type: role_title
person_claim_value: General Director
source_url: https://www.rijksmuseum.nl/en/about-us/organisation
retrieved_on: '2025-01-15T10:30:00Z'
has_provenance_path:
person_html_file: web/NL-NH-AMS-M-RM/rijksmuseum.nl/organisation.html
retrieval_agent: firecrawl
- value:
person_claim_type: biography
person_claim_value: Taco Dibbits has been General Director since 2016...
source_url: https://www.rijksmuseum.nl/en/about-us/organisation
retrieved_on: '2025-01-15T10:30:00Z'
has_provenance_path:
person_html_file: web/NL-NH-AMS-M-RM/rijksmuseum.nl/organisation.html
retrieval_agent: firecrawl
has_note:
- note_type: extraction
note_content: Biography truncated from longer text on page
- value:
person_claim_type: linkedin_url
person_claim_value: https://www.linkedin.com/in/taco-dibbits
source_url: https://www.linkedin.com/in/taco-dibbits
retrieved_on: '2025-01-15T11:00:00Z'
retrieval_agent: exa_crawling_exa
has_note:
- note_type: extraction
note_content: Profile data stored in person/entity/taco-dibbits_20250115.json. No XPath for API extraction.
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"