glam/QUICK_STATUS_LEGAL_ENTITY_20251122.md

6.3 KiB

Quick Status: Legal Entity Refactoring + RDF/UML Generation

Date: 2025-11-22
Status: COMPLETE


What Was Done Today

Replaced EntityTypeEnum with comprehensive legal entity classes:

  • Created 8 new classes (LegalEntityType, LegalForm, LegalName, RegistrationNumber, RegistrationAuthority, GovernanceStructure, LegalStatus, RegistrationInfo container)
  • Updated 7 slot definitions to use new classes
  • Integrated ISO 20275 standard (1,600+ legal forms)
  • Added TOOI-inspired structured name model
  • Aligned with ROV, W3C Org, GLEIF ontologies
  • Deprecated old entity_type and registration_number slots

Schema Statistics:

  • Total classes: 12 → 17 (+5 legal entity classes)
  • Total components: 82 definition files
  • Total slots: 59 (7 updated)

2. RDF Generation

Generated 7 RDF formats from LinkML schema:

Format Size Lines Triples
Turtle 140K 2,328 2,701
N-Triples 452K 2,701 2,701
JSON-LD 336K 7,451 2,701
RDF/XML 324K 10,810 2,701
N3 196K 5,144 2,701
TriG 196K 5,144 2,701
TriX 644K 21,377 2,701

Total: ~2.3 MB, 40,955 lines

3. UML Diagrams

Created 2 comprehensive UML diagrams:

  • Mermaid class diagram (6.0K) - GitHub-renderable
  • PlantUML class diagram (7.5K) - Color-coded packages

Features:

  • All 17 classes visualized
  • Hub-Observation-Reconstruction pattern
  • Legal entity model highlighted
  • Comprehensive relationships
  • Inline documentation

Files Created/Modified

New Files (25+)

Legal Entity Classes (5):

  • schemas/20251121/linkml/modules/classes/LegalEntityType.yaml
  • schemas/20251121/linkml/modules/classes/LegalForm.yaml
  • schemas/20251121/linkml/modules/classes/LegalName.yaml
  • schemas/20251121/linkml/modules/classes/RegistrationInfo.yaml

Legal Entity Slots (2):

  • schemas/20251121/linkml/modules/slots/legal_entity_type.yaml
  • schemas/20251121/linkml/modules/slots/registration_numbers.yaml

RDF Files (7):

  • schemas/20251121/rdf/01_custodian_name_modular.owl.ttl
  • schemas/20251121/rdf/01_custodian_name_modular.nt
  • schemas/20251121/rdf/01_custodian_name_modular.jsonld
  • schemas/20251121/rdf/01_custodian_name_modular.rdf
  • schemas/20251121/rdf/01_custodian_name_modular.n3
  • schemas/20251121/rdf/01_custodian_name_modular.trig
  • schemas/20251121/rdf/01_custodian_name_modular.trix

UML Diagrams (2):

  • schemas/20251121/uml/mermaid/01_custodian_name_modular.mmd
  • schemas/20251121/uml/plantuml/01_custodian_name_modular.puml

Documentation (6):

  • LEGAL_ENTITY_REFACTORING.md (detailed technical docs)
  • LEGAL_ENTITY_QUICK_REFERENCE.md (quick ref)
  • SESSION_SUMMARY_20251122_LEGAL_ENTITY_REFACTORING_COMPLETE.md
  • RDF_UML_GENERATION_COMPLETE_20251122.md
  • CHANGES_SUMMARY_20251122.txt
  • QUICK_STATUS_LEGAL_ENTITY_20251122.md (this file)

Tools (1):

  • scripts/parse_iso20275_codes.py

Mappings (1):

  • schemas/20251121/linkml/modules/mappings/ISO20275_mapping.yaml

Modified Files (8)

  • schemas/20251121/linkml/01_custodian_name_modular.yaml (imports)
  • modules/classes/CustodianReconstruction.yaml
  • modules/slots/legal_form.yaml
  • modules/slots/legal_name.yaml
  • modules/slots/legal_status.yaml
  • modules/slots/registration_authority.yaml
  • modules/slots/governance_structure.yaml

Deprecated Files (2)

  • modules/slots/entity_type.yaml.deprecated
  • modules/slots/registration_number.yaml.deprecated

Critical Rules

Natural Persons (PERSON)

  • Cannot have legal_form (individuals aren't incorporated)
  • ⚠️ May not have registration_numbers (unless sole proprietor)
  • Identity via biographical sources
  • Must have legal_entity_type.code = "ORGANIZATION"
  • Must have legal_form (ISO 20275 code)
  • Must have registration_numbers with temporal validity
  • Must have registration_authority
  • Governance structure documented

Informal Groups

  • NOT CustodianReconstruction (no legal status)
  • Stay as CustodianObservation only
  • Upgrade to reconstruction if registered

Validation Results

RDF Validation

✅ Turtle syntax: VALID
✅ Triples: 2,701
✅ Subjects: 652
✅ Predicates: 36
✅ Objects: 1,325

Ontology Compliance

  • ROV (Registered Organization Vocabulary)
  • TOOI (Dutch Government Ontology)
  • ISO 20275 (Entity Legal Forms)
  • W3C Org Ontology
  • GLEIF (Global Legal Entity Identifier)
  • Schema.org

Next Steps

Immediate

  1. Commit all generated files to git
  2. Run LinkML validation: linkml-validate -s schemas/20251121/linkml/01_custodian_name_modular.yaml

Short-term

  1. Create example instance data (Dutch museum, private collector)
  2. Write unit tests for new legal entity classes
  3. Create data migration script for existing instances

Medium-term

  1. Load RDF into triplestore (Apache Jena, Virtuoso)
  2. Create SPARQL query examples
  3. Generate HTML documentation (gen-doc)
  4. Publish to ontology registry (LOV, BioPortal)

Key Documentation

  • Legal Entity Technical Docs: schemas/20251121/linkml/modules/classes/LEGAL_ENTITY_REFACTORING.md
  • Quick Reference: schemas/20251121/linkml/modules/classes/LEGAL_ENTITY_QUICK_REFERENCE.md
  • RDF/UML Generation: RDF_UML_GENERATION_COMPLETE_20251122.md
  • Session Summary: SESSION_SUMMARY_20251122_LEGAL_ENTITY_REFACTORING_COMPLETE.md
  • Changes Summary: CHANGES_SUMMARY_20251122.txt

Breaking Changes

API Changes

Old:

custodian.entity_type  # returns: "ORGANIZATION"
custodian.legal_form   # returns: "V44D"

New:

custodian.legal_entity_type.code   # returns: "ORGANIZATION"
custodian.legal_form.elf_code      # returns: "8888"

Query Changes

Old SPARQL:

?custodian heritage:entity_type "ORGANIZATION" .

New SPARQL:

?custodian heritage:legal_entity_type ?let .
?let heritage:code "ORGANIZATION" .

Session Complete

All tasks completed successfully.

Schema version: 20251121 (legal entity model v0.2.2)
Next session: Data instance creation and migration