id: https://nde.nl/ontology/hc/class/ConnectionSourceMetadata name: connection_source_metadata_class title: Connection Source Metadata Class version: 1.0.0 prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ schema: http://schema.org/ prov: http://www.w3.org/ns/prov# dct: http://purl.org/dc/terms/ imports: - linkml:types - ./SpecificityAnnotation - ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17) - ./TemplateSpecificityType - ./TemplateSpecificityTypes - ../enums/ScrapeMethodEnum - ../slots/connections_extracted - ../slots/note - ../slots/scrape_method - ../slots/scraped_timestamp - ../slots/source_url - ../slots/specificity_annotation # REMOVED 2026-01-14: ../slots/target_name - migrated to has_or_had_label with Label - ../slots/has_or_had_label - ./Label # REMOVED 2026-01-16: ../slots/target_profile - migrated to has_or_had_profile with SocialMediaProfile - ../slots/has_or_had_profile - ./SocialMediaProfile - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) default_prefix: hc classes: ConnectionSourceMetadata: class_uri: prov:Activity description: 'Provenance metadata about how the connections were extracted. Records the extraction context including: - Source URL (LinkedIn search or profile page) - When the extraction occurred - Which method was used (manual browse, automated scrape) - Target profile being analyzed - Count of connections extracted **Scrape Methods**: - manual_linkedin_browse: Manual copy-paste while logged in - linkedin_html_parser: Parsed from saved HTML file - exa_search: Extracted via Exa API ' exact_mappings: - prov:Activity slots: - connections_extracted - note - scrape_method - scraped_timestamp - source_url - specificity_annotation # REMOVED 2026-01-14: target_name - migrated to has_or_had_label with Label - has_or_had_label # REMOVED 2026-01-16: target_profile - migrated to has_or_had_profile with SocialMediaProfile - has_or_had_profile - has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) slot_usage: source_url: range: uri required: true examples: - value: https://www.linkedin.com/search/results/people/?network=%5B%22F%22%2C%22S%22%2C%22O%22%5D description: LinkedIn connection search URL scraped_timestamp: range: datetime required: true examples: - value: '2025-12-09T22:00:00Z' scrape_method: range: ScrapeMethodEnum required: true examples: - value: alexandr-belov-bb547b46 # REMOVED 2026-01-14: target_name - migrated to has_or_had_label with Label # target_name: # range: string # required: true # examples: # - value: Giovanna Fossati # - value: Alexandr Belov has_or_had_label: range: Label inlined: true description: | Target name of the connection source (person name). MIGRATED 2026-01-14: Replaces target_name slot. required: true examples: - value: | Label: label_value: "Giovanna Fossati" label_type: "person_name" description: Person name for connection source # REMOVED 2026-01-16: target_profile - migrated to has_or_had_profile with SocialMediaProfile # target_profile: # range: string # pattern: ^[a-z0-9-]+$ # required: true # examples: # - value: giovanna-fossati-12345 has_or_had_profile: description: | LinkedIn profile of the person whose connections were extracted. MIGRATED 2026-01-16: Replaces target_profile slot per Rule 53/56. The SocialMediaProfile class provides structured representation including platform type, account name, and profile URL rather than just a string slug. range: SocialMediaProfile inlined: true required: true examples: - value: social_media_profile_id: https://nde.nl/ontology/hc/social-media/giovanna-fossati-linkedin platform_type: LINKEDIN has_or_had_account_name: giovanna-fossati-12345 profile_url: https://www.linkedin.com/in/giovanna-fossati-12345/ refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-efm description: LinkedIn profile for connection extraction source - value: social_media_profile_id: https://nde.nl/ontology/hc/social-media/alexandr-belov-linkedin platform_type: LINKEDIN has_or_had_account_name: alexandr-belov-bb547b46 profile_url: https://www.linkedin.com/in/alexandr-belov-bb547b46/ description: LinkedIn profile with minimal required fields connections_extracted: range: integer required: true minimum_value: 0 examples: - value: 776 note: range: string examples: - value: Raw scrape in giovannafossati_connections_20251209T220000Z_note-max100p-1st2nd3th.md comments: - Aligns with PROV-O Activity pattern - scraped_timestamp maps to prov:endedAtTime # UPDATED 2026-01-16: target_profile migrated to has_or_had_profile with SocialMediaProfile - has_or_had_profile links to SocialMediaProfile representing the LinkedIn profile analyzed