OPDA Knowledge base
Concept tier Module: agent

Agent

The Agent module covers the people and organisations party to a property transaction, and the roles they bear within those transactions.

The crucial distinction is between the party (Person, Organisation) — whose identity persists across all the transactions and titles they appear in — and the role (Seller, Buyer, Proprietor) — which is anchored to a specific context (Transaction, Title) and borrows identity from its bearer. A Person who is Seller in one Transaction and Buyer in another is the same Person; the two roles are two distinct Role instances on that Person.

The module also contains Proprietorship — the Relator that binds Proprietors to a Registered Title — and Name Change Event, which lets the model track a Person’s name change without forking the Person into two records.

Entities

  • Buyer — the role borne by the party acquiring a Property in a Transaction
  • Name Change Event — a reified record of a Person’s name change
  • Organisation — a corporate or unincorporated organisation party to a Transaction
  • Person — a natural person
  • Proprietor — the legal owner of a Property as named in a Registered Title
  • Proprietorship — the relator binding Proprietors to a Registered Title
  • Seller — the role borne by the party disposing of a Property in a Transaction

Module-internal relationships

How the two party Kinds (Person, Organisation) bear the three transactional roles (Seller, Buyer, Proprietor) via the Proprietorship Relator and the Transaction Relator:

--- config: layout: elk --- %%{init: {"theme": "base"}}%% flowchart LR accTitle: Agent module internal relationships accDescr: Person and Organisation as party Kinds; Seller and Buyer as RoleMixins borne by either; Proprietor as a Role; Proprietorship as the Relator binding Proprietors to a RegisteredTitle; Name Change Event preserving Person identity. classDef cls fill:#E1BEE7,stroke:#6A1B9A,stroke-width:2px,color:#4A148C classDef rel fill:#F8BBD9,stroke:#AD1457,stroke-width:2px,color:#880E4F classDef ext fill:#ECEFF1,stroke:#455A64,stroke-width:2px,color:#263238 %% Party Kinds Person["Person
(natural)"]:::cls Organisation["Organisation
(corporate)"]:::cls %% Roles Seller["Seller
(RoleMixin)"]:::cls Buyer["Buyer
(RoleMixin)"]:::cls Proprietor["Proprietor
(Role)"]:::cls %% Relator Proprietorship["Proprietorship
(Relator)"]:::rel %% Lifecycle NameChangeEvent["NameChangeEvent
(reified)"]:::cls %% Cross-module Transaction["Transaction
(transaction module)"]:::ext RegisteredTitle["RegisteredTitle
(property module)"]:::ext %% Role bearings Seller -->|"borneBy"| Person Seller -->|"or borneBy"| Organisation Buyer -->|"borneBy"| Person Buyer -->|"or borneBy"| Organisation Proprietor -->|"borneBy"| Person Proprietor -.->|"specialised borneBy"| Organisation %% Proprietorship binding Proprietorship -->|"bears (1..*)"| Proprietor Proprietorship -->|"binds"| RegisteredTitle %% Name change NameChangeEvent -->|"affects"| Person %% Transaction founds Seller and Buyer Transaction -.->|"founds"| Seller Transaction -.->|"founds"| Buyer

Lifecycle: Person identifier succession

How a Person’s identity persists across name changes and gender-recognition events without forking the record:

%%{init: {"theme": "base"}}%% stateDiagram-v2 accTitle: Person identifier succession lifecycle accDescr: A single Person record persists across name and gender attribute updates via reified Name Change Events; death does not erase the record, it persists as a ceased-entity with post-mortem properties. [*] --> Active : Person record created Active --> Active : routine update
(non-identifying attributes) Active --> NameChange : Name Change Event
(deed-poll, marriage, GRC) NameChange --> Active : same Person,
name attribute updated
with provenance link Active --> GenderRecognition : GRC received GenderRecognition --> Active : same Person,
gender attribute updated Active --> Deceased : death recorded Deceased --> Deceased : estate administration
(post-mortem properties) Deceased --> [*] : Person record persists
in audit trail

Comments

Loading comments…