glam/docs/GLEIF_INTEGRATION.md

246 lines
9.1 KiB
Markdown

# GLEIF Integration Pattern for Heritage Custodian Ontology
## Overview
The Heritage Custodian Ontology integrates with the Global Legal Entity Identifier Foundation (GLEIF) ontology to model organizational registration and jurisdiction. This enables:
1. **Registration Authority tracking** - Link heritage institutions to their official business registries
2. **Jurisdiction modeling** - Capture legal jurisdictions (national, subnational, supranational)
3. **Trade Register identification** - Reference specific business/trade registers worldwide
4. **LEI compatibility** - Align with Legal Entity Identifier (LEI) infrastructure
## GLEIF Ontology Alignment
### Classes
| Heritage Custodian Class | GLEIF Class | Description |
|--------------------------|-------------|-------------|
| `Jurisdiction` | `lcc-cr:GeographicRegion` | Legal/administrative jurisdiction |
| `TradeRegister` | `gleif-ra:BusinessRegistry` | Official business register |
| `RegistrationAuthority` | `gleif-base:RegistrationAuthority` | Organization maintaining register |
| `RegistrationNumber` | `gleif-base:RegistryIdentifier` | Registration identifier |
| `LegalStatus` | `gleif-base:RegistrationStatus` | Entity legal status |
### Properties
| Heritage Custodian Property | GLEIF Property | Usage |
|-----------------------------|----------------|-------|
| `jurisdiction` | `gleif-base:hasCoverageArea` | Jurisdiction of register/authority |
| `legal_jurisdiction` | `gleif-base:hasLegalJurisdiction` | Legal jurisdiction of entity |
| `primary_register` | `gleif-base:isRegisteredIn` | Primary trade register |
| `maintained_by` | `gleif-base:isManagedBy` | Authority managing register |
| `register_name` | `gleif-base:hasNameTranslatedEnglish` | Register name in English |
| `register_name_local` | `gleif-base:hasNameLegalLocal` | Register name in local language |
| `gleif_ra_code` | `schema:identifier` | GLEIF RA code (e.g., RA000439) |
## GLEIF Registration Authorities List (RAL)
GLEIF maintains a comprehensive list of 1,050+ registration authorities across 232 jurisdictions. Key codes for heritage institutions:
| RA Code | Authority | Country |
|---------|-----------|---------|
| RA000439 | Kamer van Koophandel (KvK) | Netherlands |
| RA000585 | Companies House | United Kingdom |
| RA000586 | Charity Commission | United Kingdom |
| RA000385 | Amtsgericht München | Germany (Bavaria) |
| RA000429 | Legal Affairs Bureau (法務局) | Japan |
| RA000598 | Division of Corporations | USA (Delaware) |
| RA000421 | Companies Registration Office | Ireland |
| RA000287 | Registre du commerce et des sociétés | France |
Reference: https://www.gleif.org/en/about-lei/code-lists/registration-authorities-list
## Schema Structure
### Jurisdiction Class
```yaml
Jurisdiction:
class_uri: lcc-cr:GeographicRegion
slots:
- jurisdiction_id # Unique ID (e.g., "NL", "DE-BY")
- jurisdiction_type # NATIONAL, SUBNATIONAL, MUNICIPAL, SUPRANATIONAL
- country # ISO 3166-1 country
- subregion # ISO 3166-2 subdivision (for SUBNATIONAL)
- settlement # GeoNames settlement (for MUNICIPAL)
- supranational_code # e.g., "EU" (for SUPRANATIONAL)
- legal_system_type # CIVIL_LAW, COMMON_LAW, MIXED, etc.
- gleif_jurisdiction_code
- description
```
### TradeRegister Class
```yaml
TradeRegister:
class_uri: gleif-ra:BusinessRegistry
slots:
- register_id # Unique ID (e.g., "NL-HR")
- register_name # English name
- register_name_local # Local language name
- register_abbreviation # e.g., "HR", "KvK"
- register_type # COMMERCIAL, FOUNDATION, ASSOCIATION, CHARITY, MIXED
- jurisdiction # Jurisdiction object (inlined)
- maintained_by # RegistrationAuthority (inlined)
- gleif_ra_code # GLEIF RA code
- website # Official website
- api_endpoint # Public API URL
- identifier_format # Regex pattern for registration numbers
```
### RegistrationAuthority Class
```yaml
RegistrationAuthority:
class_uri: gleif-base:RegistrationAuthority
attributes:
- id # URI identifier
- name # English name
- name_local # Local language name
- abbreviation # e.g., "KvK", "CH"
- jurisdiction # Jurisdiction object (inlined)
- gleif_ra_code # GLEIF RA code
- website # Official website
- registration_types # List of entity types handled
```
### RegistrationNumber Class
```yaml
RegistrationNumber:
class_uri: gleif-base:RegistryIdentifier
attributes:
- id # URI identifier
- number # The actual registration number
- type # e.g., "KvK", "CRN", "HRB"
- trade_register # Reference to TradeRegister
- temporal_validity # TimeSpan (when valid)
```
## Usage Examples
### 1. Dutch Museum with KvK Registration
```yaml
custodian_legal_statuses:
- id: "https://w3id.org/heritage/custodian/nl/rijksmuseum/legal"
legal_name:
name: "Stichting het Rijksmuseum"
name_language: "nl"
legal_jurisdiction:
jurisdiction_id: "NL"
jurisdiction_type: NATIONAL
primary_register:
register_id: "NL-HR"
register_name: "Commercial Register"
register_name_local: "Handelsregister"
jurisdiction:
jurisdiction_id: "NL"
jurisdiction_type: NATIONAL
maintained_by:
id: "https://w3id.org/heritage/ra/nl-kvk"
name: "Chamber of Commerce"
jurisdiction:
jurisdiction_id: "NL"
jurisdiction_type: NATIONAL
registration_numbers:
- id: "https://w3id.org/heritage/reg/nl/rijksmuseum-kvk"
number: "41215422"
type: "KvK"
temporal_validity:
begin_of_the_begin: "1885-07-01T00:00:00Z"
```
### 2. UK Charity (Dual Registration)
```yaml
# British Museum is registered with both Companies House AND Charity Commission
registration_numbers:
# Companies House registration
- id: "https://w3id.org/heritage/reg/gb/british-museum-ch"
number: "RC000024"
type: "CRN"
trade_register:
register_id: "GB-CH"
register_type: COMMERCIAL
# Charity Commission registration
- id: "https://w3id.org/heritage/reg/gb/british-museum-cc"
number: "1126962"
type: "CC"
trade_register:
register_id: "GB-CC"
register_type: CHARITY
```
### 3. German Institution (Subnational Jurisdiction)
```yaml
jurisdictions:
- jurisdiction_id: "DE-BY"
jurisdiction_type: SUBNATIONAL
country:
alpha_2: "DE"
subregion:
iso_3166_2_code: "DE-BY"
subdivision_name: "Bavaria"
legal_system_type: CIVIL_LAW
gleif_jurisdiction_code: "DE"
trade_registers:
- register_id: "DE-HRB-MUC"
register_name: "Commercial Register"
register_name_local: "Handelsregister"
register_type: COMMERCIAL
jurisdiction:
jurisdiction_id: "DE-BY"
jurisdiction_type: SUBNATIONAL
maintained_by:
id: "https://w3id.org/heritage/ra/de-by-muc"
name: "Local Court Munich"
name_local: "Amtsgericht München"
jurisdiction:
jurisdiction_id: "DE-BY"
jurisdiction_type: SUBNATIONAL
```
## Validation
To validate instances against the schema:
```bash
linkml-validate -s schemas/20251121/linkml/01_custodian_name_modular.yaml \
-C Container \
schemas/20251121/linkml/examples/registration_info_examples.yaml
```
## Key Design Decisions
1. **Inlined Objects**: Jurisdiction and RegistrationAuthority are inlined within TradeRegister for easier data entry. They can also be referenced by ID from a separate jurisdictions list.
2. **Separate Country Class**: We use our existing `Country` (ISO 3166-1) and `Subregion` (ISO 3166-2) classes rather than inline country data, maintaining consistency with geographic modeling.
3. **GLEIF RA Codes**: We store GLEIF RA codes as strings with pattern validation (`^RA[0-9]{6}$`), enabling lookup in the official GLEIF RAL.
4. **TimeSpan for Validity**: Registration validity uses CIDOC-CRM TimeSpan pattern with fuzzy boundaries (`begin_of_the_begin`, `end_of_the_end`).
5. **Register Types**: The `RegisterTypeEnum` distinguishes between COMMERCIAL, FOUNDATION, ASSOCIATION, CHARITY, CULTURAL, and MIXED registers.
## Files
| File | Description |
|------|-------------|
| `modules/classes/Jurisdiction.yaml` | Jurisdiction class definition |
| `modules/classes/TradeRegister.yaml` | TradeRegister class definition |
| `modules/classes/RegistrationInfo.yaml` | RegistrationAuthority, RegistrationNumber classes |
| `modules/slots/jurisdiction.yaml` | jurisdiction slot |
| `modules/slots/primary_register.yaml` | primary_register slot |
| `modules/slots/legal_jurisdiction.yaml` | legal_jurisdiction slot |
| `examples/registration_info_examples.yaml` | Validation examples |
## References
- [GLEIF Ontology Documentation](https://www.gleif.org/en/about-lei/code-lists)
- [GLEIF Registration Authorities List](https://www.gleif.org/en/about-lei/code-lists/registration-authorities-list)
- [LCC (Languages Countries and Codes)](https://www.omg.org/spec/LCC/)
- [ISO 3166 Country Codes](https://www.iso.org/iso-3166-country-codes.html)