person-with-name-change
person-with-name-change
Summary
Person IC over deed-poll name change (2019): one Person individual with name-attribute mutation, NOT two distinct Persons. NameChangeEvent captures provenance via PROV-O. Anti-pattern: owl:sameAs across former/current names.
Cross-link: Concept tier — Person hard cases.
Exemplar instance graph
---
config:
layout: elk
---
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#B3E5FC", "primaryTextColor": "#01579B", "primaryBorderColor": "#0277BD", "lineColor": "#37474F"}}}%%
flowchart LR
accTitle: person-with-name-change exemplar instance graph
accDescr: One Person individual whose name-attribute changed (former name Alex Smith, current name Alex Wright). The reified NameChangeEvent records the 2019 deed-poll; identity persists, no owl:sameAs.
%% @prefix opda:
%% @prefix opda-x:
%% @prefix prov:
classDef instance fill:#B3E5FC,stroke:#0277BD,stroke-width:2px,color:#01579B
classDef event fill:#FFE0B2,stroke:#E65100,stroke-width:2px,color:#BF360C
classDef literal fill:#FFF9C4,stroke:#F57F17,stroke-width:2px,color:#E65100
P["opda-x:person
<b>Person</b>"]:::instance Ev["opda-x:name-change-event
<b>NameChangeEvent</b>"]:::event DOB["1985-07-14"]:::literal NI["QQ123456C"]:::literal Cur["Alex Wright (current)"]:::literal Prev["Alex Smith (former)"]:::literal Date["2019-09-22"]:::literal Mech["deed-poll"]:::literal P -->|opda:dateOfBirth| DOB P -->|opda:niNumber| NI P -->|opda:currentName| Cur P -->|opda:formerName| Prev P -->|opda:nameChangeDate| Date P -->|opda:nameChangeMechanism| Mech Ev -->|prov:atTime| Date Ev -->|opda:previousName| Prev Ev -->|opda:newName| Cur Ev -->|opda:appliesTo| P
<b>Person</b>"]:::instance Ev["opda-x:name-change-event
<b>NameChangeEvent</b>"]:::event DOB["1985-07-14"]:::literal NI["QQ123456C"]:::literal Cur["Alex Wright (current)"]:::literal Prev["Alex Smith (former)"]:::literal Date["2019-09-22"]:::literal Mech["deed-poll"]:::literal P -->|opda:dateOfBirth| DOB P -->|opda:niNumber| NI P -->|opda:currentName| Cur P -->|opda:formerName| Prev P -->|opda:nameChangeDate| Date P -->|opda:nameChangeMechanism| Mech Ev -->|prov:atTime| Date Ev -->|opda:previousName| Prev Ev -->|opda:newName| Cur Ev -->|opda:appliesTo| P
Exemplar Turtle
# Diagnostic exemplar — ODR-0004 §8a, IC-only — input to ODR-0006 (Agents & Roles).
# Situation: a Person with a name change (deed-poll, 2019); they were the seller on a 2017
# transaction under their former name, and the buyer on a 2024 transaction under their current name.
# The IC must say this is one Person individual whose name-attribute changed, not two.
# Status: ratified. Namespace: https://opda.org.uk/pdtf/ (Session 003b + ADR-0006).
# ODR-0004 status: accepted (council: session-004); ODR-0006 status: accepted (council: session-006).
@prefix opda: <https://opda.org.uk/pdtf/> .
@prefix opda-x: <https://opda.org.uk/pdtf/harness/data/exemplar/person-with-name-change/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
opda-x:exemplar
a opda:DiagnosticExemplar ;
dct:title "Person with name change — IC across name-mutation hard case" ;
dct:status "ratified" ;
dct:references <ODR-0006> , <ODR-0005> , <ODR-0004> ;
skos:scopeNote
"Tests Person IC over the name-change hard case. The same Person held distinct names on two transactions five years apart (deed-poll in 2019). Under S006 Q1 the IC for opda:Person must give one individual, not two. Candidate ICs: (a) date-of-birth + state-issued ID combination; (b) any single state-issued ID; (c) PROV-O wasDerivedFrom chain over name-attribute changes. The IC the Council settles must cope with the 2017-as-FormerName + 2024-as-CurrentName case without collapsing to owl:sameAs (which would propagate every triple from one context to the other; same anti-pattern as ODR-0005 Rule 5)." .
# One Person individual; name-attribute changed over time (recorded via prov:wasRevisionOf).
opda-x:person
a opda:Person ;
rdfs:label "Person individual — currently named Alex Wright (formerly Alex Smith)" ;
opda:dateOfBirth "1985-07-14"^^xsd:date ;
opda:niNumber "QQ123456C" ;
opda:currentName "Alex Wright" ;
opda:formerName "Alex Smith" ;
opda:nameChangeDate "2019-09-22"^^xsd:date ;
opda:nameChangeMechanism "deed-poll" .
# Provenance of the name change — a registered deed-poll event.
opda-x:name-change-event
a opda:NameChangeEvent ;
rdfs:label "Deed-poll filed 2019-09-22" ;
prov:atTime "2019-09-22T00:00:00Z"^^xsd:dateTime ;
opda:previousName "Alex Smith" ;
opda:newName "Alex Wright" ;
opda:appliesTo opda-x:person ;
dct:source <https://www.gov.uk/change-name-deed-poll> .
Expected report Turtle
# person-with-name-change-expected-report.ttl
@prefix dct: <http://purl.org/dc/terms/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://opda.org.uk/pdtf/data/exemplar-reports/report>
rdf:type sh:ValidationReport ;
dct:source <https://opda.org.uk/pdtf/harness/data/exemplar/person-with-name-change> ;
sh:conforms "true"^^xsd:boolean .
SHACL outcome
sh:conforms true. The exemplar satisfies:
opda:PersonIdentityKeyShape(Cat 1):opda:hasAssertedCapacitycount is 0 (admissible)opda:SpecialCategoryPIIWithoutLawfulBasisShape(Cat 4): noopda:hasSpecialCategoryData true→ rule does not fire
The SHACL-AF rules materialise:
opda:IdentifierSuccessionRule→opda:hasIdentifierSuccessionEvent opda-x:name-change-event(the NameChangeEvent names the Person viaopda:appliesTo, equivalent surface for the rule’sprov:wasAssociatedWithpattern)opda:CapacityAuthorityMatchRule→ no fire (noopda:hasAssertedCapacity)
Comments