glam/schemas/20251121/linkml/modules/classes/PersonWebClaim.yaml
kempersc 5d3d8530b0
All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 4m13s
chore: trigger DSPy eval workflow
2026-01-11 22:40:23 +01:00

182 lines
7.8 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
- ../slots/source_url
- ../slots/retrieved_on
- ../slots/retrieval_agent
- ../slots/person_claim_id
- ../slots/person_claim_note
- ../slots/person_claim_type
- ../slots/person_claim_value
- ../slots/person_html_file
- ../slots/person_xpath
- ../slots/person_xpath_match_score
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
- ../enums/PersonClaimTypeEnum
- ../enums/RetrievalAgentEnum
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 xpath pointing to source\
\ element\n- Claims from APIs (LinkedIn via Exa) may have xpath=null 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)\n\
3. News articles/press releases (medium-high)\n4. Conference programs (medium)\n5. Academic publications (medium)\n\
6. 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\n3. SEARCH LinkedIn for additional profile data\n4. CREATE PersonWebClaim for each extracted fact\n\
5. 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_or_had_web_claim:\n - claim_type: full_name\n\
\ claim_value: \"Dr. Jane Smith\"\n source_url: https://museum.org/team\n xpath: /html/body/main/div[2]/h3\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:
- person_claim_id
- person_claim_note
- person_claim_type
- person_claim_value
- person_html_file
- person_xpath
- person_xpath_match_score
- retrieval_agent
- retrieved_on
- source_url
- specificity_annotation
- template_specificity
slot_usage:
person_claim_type:
required: true
description: 'Type of person claim. See PersonClaimTypeEnum.
Common claim types:
- full_name: Complete name
- role_title: Job title
- department: Organizational unit
- email: Contact email (if public)
- biography: Professional bio
- specialization: Expertise areas
'
person_claim_value:
required: true
description: 'The extracted value. Must be verifiable at the source.
'
source_url:
required: true
description: 'URL where this claim was found.
Required for ALL claims - enables verification.
'
retrieved_on:
required: true
description: 'Timestamp when data was retrieved.
ISO 8601 format with timezone (UTC preferred).
'
retrieval_agent:
required: true
range: RetrievalAgentEnum
description: 'Tool used to extract this data.
- firecrawl: Institutional websites (primary)
- playwright: JS-heavy sites
- exa_crawling_exa: LinkedIn profiles
- manual: Last resort
'
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true
comments:
- 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'
person_xpath: /html/body/main/section[2]/div[1]/h2
person_html_file: web/NL-NH-AMS-M-RM/rijksmuseum.nl/organisation.html
person_xpath_match_score: 1.0
retrieval_agent: firecrawl
description: Exact match for museum director name
- 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'
person_xpath: /html/body/main/section[2]/div[1]/p[1]
person_html_file: web/NL-NH-AMS-M-RM/rijksmuseum.nl/organisation.html
person_xpath_match_score: 1.0
retrieval_agent: firecrawl
description: Role title from institutional page
- 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'
person_xpath: /html/body/main/section[2]/div[1]/div[2]
person_html_file: web/NL-NH-AMS-M-RM/rijksmuseum.nl/organisation.html
person_xpath_match_score: 0.92
retrieval_agent: firecrawl
person_claim_notes: Biography truncated from longer text on page
description: Biography text with partial match score
- 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'
person_xpath: null
retrieval_agent: exa_crawling_exa
person_claim_notes: Profile data stored in person/entity/taco-dibbits_20250115.json
description: LinkedIn claim - XPath null for API extraction