glam/frontend/public/schemas/20251121/linkml/modules/classes/AddressComponent.yaml
kempersc c2629f6d29 Fix LinkML schema validation errors (0 errors, 30 warnings)
Schema Migration Fixes:
- Fix YAML import indentation in ~650 slot files (linkml:types and enum imports)
- Rename slot reference: has_or_had_holds_record_set_type → hold_or_held_record_set_type
  (70+ archive class files, main schema, manifest.json)
- Fix ProvenanceBlock.yaml: remove invalid any_of range, use string with multivalued
- Fix has_or_had_provenance.yaml: remove nested template_specificity from annotations

Validation Status:
- 0 errors (was multiple import/reference errors)
- 30 warnings (missing descriptions on inline slots, intentional SCREAMING_CASE names)

Files changed: ~3,850 (slots, classes, main schema, manifest)
2026-01-15 23:21:38 +01:00

210 lines
6.9 KiB
YAML

# AddressComponent - Generic address component class
# Source-agnostic representation of individual address parts
# Refactored: 2026-01-12 - Removed Google Maps-specific references per user guidance
# Rule 38 compliant: All slots imported from modules/slots/
id: https://nde.nl/ontology/hc/classes/AddressComponent
name: AddressComponent
title: AddressComponent
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
vcard: http://www.w3.org/2006/vcard/ns#
locn: http://www.w3.org/ns/locn#
imports:
- linkml:types
# Centralized slots (Rule 38 compliant)
- ../slots/long_name
- ../slots/short_name
- ../slots/component_type
default_range: string
classes:
AddressComponent:
class_uri: hc:AddressComponent
description: |
A single component of a structured address.
**PURPOSE**:
AddressComponent represents one discrete element of an address, such as
the street number, street name, city, region, or country. This enables:
- Parsing addresses from various sources into standardized components
- Normalizing address data from different formats/APIs
- Supporting multilingual address representations (long_name vs short_name)
**COMPONENT STRUCTURE**:
Each AddressComponent has:
- `long_name`: Full form of the value (e.g., "Netherlands", "Noord-Holland")
- `short_name`: Abbreviated form (e.g., "NL", "NH") - may equal long_name
- `component_type`: Semantic type(s) of this component (e.g., "country", "locality")
**STANDARD COMPONENT TYPES**:
| Type | Description | Example long_name | Example short_name |
|------|-------------|-------------------|-------------------|
| `street_number` | House/building number | "1", "221B" | same |
| `route` | Street/road name | "Museumstraat" | same |
| `locality` | City/town/village | "Amsterdam" | same |
| `postal_code` | ZIP/postal code | "1071 XX" | same |
| `subregion` | County/district | "Amsterdam" | same |
| `region` | State/province | "Noord-Holland" | "NH" |
| `country` | Country | "Netherlands" | "NL" |
| `premise` | Building/complex name | "Rijksmuseum" | same |
| `subpremise` | Unit/floor/suite | "Floor 3" | "3" |
**RELATIONSHIP TO Address CLASS**:
AddressComponent is used for:
1. **Parsing workflows**: Breaking down raw address strings into components
2. **Normalization**: Standardizing addresses from different sources
3. **Intermediate representation**: Before constructing a full Address object
The Address class provides the final, ontology-aligned representation with
dedicated slots (street_name, locality, region, country_name, etc.).
```
Raw Address Data (any source)
└── parse → AddressComponent[] # Intermediate representation
└── normalize → Address # vCard/LOCN aligned
```
**USAGE EXAMPLES**:
```yaml
# Street number component
- long_name: "1"
short_name: "1"
component_type: ["street_number"]
# Province with abbreviation
- long_name: "Noord-Holland"
short_name: "NH"
component_type: ["region"]
# Country with ISO code
- long_name: "Netherlands"
short_name: "NL"
component_type: ["country"]
```
**SOURCE-AGNOSTIC DESIGN**:
This class is designed to work with addresses from ANY source:
- Website scraping
- Registry data (ISIL, KvK, etc.)
- API responses (when normalized)
- Manual data entry
- OCR/document extraction
API-specific raw data formats are handled by Endpoint classes.
close_mappings:
- locn:AddressRepresentation
related_mappings:
- schema:PostalAddress
- vcard:Address
slots:
- long_name
- short_name
- component_type
slot_usage:
long_name:
range: string
required: false
description: Full form of the address component value
examples:
- value: "Netherlands"
description: Country full name
- value: "Noord-Holland"
description: Province full name
- value: "Museumstraat"
description: Street name
short_name:
range: string
required: false
description: Abbreviated or short form of the component value (may equal long_name)
examples:
- value: "NL"
description: ISO 3166-1 alpha-2 country code
- value: "NH"
description: Province abbreviation
- value: "Museumstraat"
description: Same as long_name when no abbreviation exists
component_type:
range: string
multivalued: true
inlined_as_list: true
required: false
description: Semantic type(s) of this address component
examples:
- value: ["street_number"]
description: House/building number
- value: ["locality"]
description: City or town
- value: ["region"]
description: State or province
- value: ["country"]
description: Country
comments:
- Source-agnostic representation of address components
- Use for parsing/normalization workflows before constructing Address objects
- Component types follow common geographic hierarchy conventions
- Multiple types allowed for components that serve multiple roles
see_also:
- https://nde.nl/ontology/hc/classes/Address
- https://www.w3.org/ns/locn#Address
examples:
- value:
long_name: "1"
short_name: "1"
component_type: ["street_number"]
description: Street number component
- value:
long_name: "Museumstraat"
short_name: "Museumstraat"
component_type: ["route"]
description: Street name component
- value:
long_name: "Amsterdam"
short_name: "Amsterdam"
component_type: ["locality"]
description: City component
- value:
long_name: "Noord-Holland"
short_name: "NH"
component_type: ["region"]
description: Province component with abbreviation
- value:
long_name: "Netherlands"
short_name: "NL"
component_type: ["country"]
description: Country component with ISO code
- value:
long_name: "1071 XX"
short_name: "1071 XX"
component_type: ["postal_code"]
description: Dutch postal code component
annotations:
specificity_score: 0.35
specificity_rationale: "Generic address parsing component. Broadly applicable across all address sources and custodian types."
custodian_types: '["*"]'
custodian_types_rationale: "Any custodian with address data may use address components during parsing/normalization."