Summary
The ownership-related rulebooks (rb-ownership, rb-control, rb-ubo) define rich attribute tables, but their Semantic Reference columns are still empty, and the EBW Vocabulary v0.1 does not yet contain any terms for ownership stakes, control mechanisms, indirect ownership chains or interest types. This is exactly the "semantic reuse vs. semantic innovation" question raised as Q001/Q002 in Semantic_Intake_template.md.
I'd like to propose that the Beneficial Ownership Data Standard (BODS) RDF Vocabulary — an open standard (Apache-2.0/CC) maintained by Open Ownership that models the ownership and control of legal persons and legal arrangements — be adopted as the semantic backbone for this part of the model. It maps almost one-to-one onto the enumerations the rulebooks already use, and it can be referenced directly or wired in via alignment axioms, without forking. I'm happy to do the work and bring it to the semantics group.
A worked crosswalk is below.
Where I'm coming from
I work on beneficial ownership transparency, open company data infrastructure and data standardisation (currently via the Global Open Data Integration Network, in partnership with GLEIF), and I've been in contact with the EBW vocabulary and UBO rulebook teams by call and email about this. I'm raising it here so the proposal sits alongside the open question the group has already flagged. This is an offer to help wire things up, not a request to change direction - the convention is the group's to set.
The gap I observed
- The Semantic Reference column is empty (
... / --) throughout the rulebooks catalogue — not only in the three ownership rulebooks, but in the more mature ones (rb-company-info, rb-eucc, rb-pid) too. So this is a project-wide wiring decision, not a single-rulebook oversight.
- The EBW Vocabulary v0.1 (
https://w3id.org/ebwv) has no beneficial-ownership terms. Its only owner property is scoped to BankAccount; it has LegalRepresentative, the partner roles (GeneralPartner / LimitedPartner / StatutoryPartner) and subscribedCapital, but nothing for ownership/control interests, stakes, or indirect chains.
rb-ownership, rb-control and rb-ubo therefore each re-define ownership and control as flat enumerated strings (ownership_category, control_mechanism, determination_methodology) with no semantic anchoring.
Why BODS fits
EBW and BODS operate at different, complementary layers, which is what makes this an alignment rather than a competition:
- EBW is the verifiable-credential / eIDAS2 envelope: SD-JWT VC encoding, selective disclosure,
vct types, trust anchors, status lists, wallet binding, and a range of attestation types (A1, posted-worker, payment terms, bank account, EUCC) that have nothing to do with ownership data. BODS has nothing to say here and shouldn't.
- BODS is the ownership-and-control data model. The two meet at exactly the
Person / LegalEntity / Company classes and the notion of an ownership-or-control interest.
Within that overlap, BODS already handles several things the current flat enums cannot:
- The relationship is a first-class object. BODS models the relationship statement (subject ↔ interestedParty, carrying
interests[]), so indirect ownership through intermediate entities is represented explicitly via intermediate entity statements + directOrIndirect. The current legal_entity_identifiers array + single total_ownership decimal cannot unambiguously express a multi-tier chain. (rb-ubo itself notes the UBO list is derived by applying the ≥25% threshold to the Ownership and Control lists — i.e. the Ownership/Control lists are the graph, and the UBO list is a query over it. That is precisely the BODS relationship-graph-vs-derived-view distinction.)
directOrIndirect is a typed property on the interest, kept separate from the interest's nature — avoiding the combinatorial blow-up of folding "Direct/Indirect ownership" into the same enum as "Control through voting rights."
share is a range, not a point: exact or minimum/maximum/exclusiveMinimum/exclusiveMaximum. This matters for banded disclosures, which is how the EU beneficial-ownership submission formats express ownership percentages.
- Edge cases are codelisted:
beneficialOwnershipOrControl (boolean), unknownInterest, unpublishedInterest, and the UnspecifiedReason codelist (no beneficial owners; subject / interested party exempt from disclosure; information unknown to publisher) — covering the AMLR scenarios currently left as open items in the rulebooks.
- Append-only history (
recordId + recordStatus new/updated/closed, statementDate) is complementary to the credential envelope's issuance_date/expiry_date + status-list revocation. The envelope governs credential validity; BODS governs the history of the ownership facts. The two layers do not overlap.
The end state worth aiming for: EBW credential payloads whose ownership/control claims are BODS-conformant or losslessly BODS-mappable — so a wallet-issued UBO attestation can round-trip to a BODS statement for AMLR Art. 60/62 register submission and for the cross-check against Ownership/Control lists that rb-ubo §4.2.10 already mandates.
Proposed crosswalk
Prefixes: bods: = https://vocab.openownership.org/terms# · codes: = https://standard.openownership.org/codelists#
The three rulebook enumerations overlap heavily and collapse onto BODS interest types:
| Rulebook enum value (rb-control / rb-ubo / rb-ownership) |
BODS interest type |
Held-via |
| Voting rights / Control through voting rights |
bods:VotingRights |
codes:Direct / codes:Indirect |
| Direct shareholder / Direct ownership |
bods:Shareholding |
codes:Direct |
| Indirect shareholder / Indirect ownership |
bods:Shareholding |
codes:Indirect |
| Board control / Power to appoint or remove management / Control through right of appointments |
bods:AppointmentOfBoard (or bods:BoardMember / bods:BoardChair) |
— |
| Management / Executive roles |
bods:SeniorManagingOfficial |
— |
| Special shares (golden shares) |
bods:VotingRights (+ share weighting) or bods:ControlViaCompanyRulesOrArticles |
— |
| Contractual rights / veto / Control through formal or informal agreements |
bods:RightsGrantedByContract / bods:ConditionalRightsGrantedByContract |
— |
| Control through distribution of profits / Holder of convertible rights |
bods:RightToProfitOrIncomeFromAssets / bods:RightsToProfitOrIncome |
— |
| Trustee |
bods:Trustee |
— |
| Settlor / Beneficiary / Protector (trust roles, rb-ubo §2.8.2) |
bods:Settlor / bods:BeneficiaryOfLegalArrangement / bods:Protector |
— |
| Control through nominee arrangements |
bods:Nominee / bods:Nominator |
— |
| Dominant influence / Influence via parent or holding company / acting in concert / family |
bods:OtherInfluenceOrControl |
codes:Indirect where via parent |
Structural mapping:
NaturalPerson → BODS person statement (personType; names with type bods:Legal; birthDate; nationalities; addresses with type bods:Residence).
LegalPerson → BODS entity statement (entityType; name; identifiers keyed on LEI / EUID; addresses with type bods:Registered).
- The
stake / ownership object → BODS relationship statement with interests[] (type, directOrIndirect, beneficialOwnershipOrControl, share).
In effect, ownership_category and control_mechanism already are bods:InterestType — they are just currently unanchored.
Suggested approach (alignment, not replacement)
A few options for how the Semantic Reference could be expressed, in rough order of preference:
- Vocabulary-first. Add ownership/control/interest classes and properties to
vocab/src/vocabulary.yml, each defined with explicit alignment to the BODS terms (rdfs:seeAlso / owl:equivalentClass / skos:closeMatch). The rulebooks' Semantic Reference columns then point at the new ebwv: terms, which carry the BODS alignment. This keeps EBW self-contained while remaining interoperable, and keeps the decision where it belongs — in the vocabulary the group owns.
- Direct external reference. The Semantic Reference columns reference
bods: / codes: IRIs directly. Lighter, but couples the rulebooks to an external namespace.
- Hybrid / crosswalk artefact. Ship a standalone crosswalk (markdown or a SKOS mapping file) and reference it, decoupling the decision from individual rulebook edits.
I'd lean towards (1), but the group's view on this is the deciding factor.
What I'm offering
- A single, scoped demonstrator PR — not a bulk edit of all three rulebooks — showing one worked example (e.g. the
ownership-sd-jwt-sample.json stake object expressed as BODS relationship/interest statements, plus the crosswalk above as a repo doc).
- A
Semantic_Intake_template.md submission for a "UBO / Ownership / Control" use case, so this is captured through the group's normal front door and answers Q001/Q002 directly.
- Help drafting the
vocabulary.yml alignment terms if option (1) is preferred.
- Identifier alignment: the EBW vocabulary is already built around
Lei, Euid, LegalEntityIdentifier and LeiRegistration. Through GODIN and the GLEIF relationship I can help align the entity-identifier backbone (BODS identifiers scheme/schemeName ↔ LEI / EUID) at the same time.
Question for the group
- Which convention does the group want for the Semantic Reference column (new
ebwv: terms with BODS alignment / direct external IRIs / standalone crosswalk)?
- Is there appetite to take BODS as the reference model for the ownership/control/UBO subset?
- Would it help to walk through the crosswalk at a semantics group session before any PR is opened?
Note: the rulebooks themselves live in webuild-consortium/webuild-attestation-rulebooks-catalog, so this spans both repos — happy to open a cross-referencing companion issue there once there's a direction.
References
- BODS data model — [https://vocab.openownership.org/pages/1_datamodel.html](https://vocab.openownership.org/pages/1_datamodel.html) [https://vocab.openownership.org/pages/1_datamodel.html](https://vocab.openownership.org/pages/1_datamodel.html)
- BODS RDF Vocabulary (HTML) — https://vocab.openownership.org/terms/bods-vocabulary-0.4.0.html
- BODS RDF Vocabulary (Turtle) — https://vocab.openownership.org/terms/bods-vocabulary-0.4.0.ttl
- BODS standard (v0.4) — https://standard.openownership.org/en/0.4.0/
- EBW Vocabulary v0.1 — https://w3id.org/ebwv
- Rulebooks —
rulebooks/rb-ownership, rulebooks/rb-control, rulebooks/rb-ubo
Summary
The ownership-related rulebooks (
rb-ownership,rb-control,rb-ubo) define rich attribute tables, but their Semantic Reference columns are still empty, and the EBW Vocabulary v0.1 does not yet contain any terms for ownership stakes, control mechanisms, indirect ownership chains or interest types. This is exactly the "semantic reuse vs. semantic innovation" question raised as Q001/Q002 inSemantic_Intake_template.md.I'd like to propose that the Beneficial Ownership Data Standard (BODS) RDF Vocabulary — an open standard (Apache-2.0/CC) maintained by Open Ownership that models the ownership and control of legal persons and legal arrangements — be adopted as the semantic backbone for this part of the model. It maps almost one-to-one onto the enumerations the rulebooks already use, and it can be referenced directly or wired in via alignment axioms, without forking. I'm happy to do the work and bring it to the semantics group.
A worked crosswalk is below.
Where I'm coming from
I work on beneficial ownership transparency, open company data infrastructure and data standardisation (currently via the Global Open Data Integration Network, in partnership with GLEIF), and I've been in contact with the EBW vocabulary and UBO rulebook teams by call and email about this. I'm raising it here so the proposal sits alongside the open question the group has already flagged. This is an offer to help wire things up, not a request to change direction - the convention is the group's to set.
The gap I observed
.../--) throughout the rulebooks catalogue — not only in the three ownership rulebooks, but in the more mature ones (rb-company-info,rb-eucc,rb-pid) too. So this is a project-wide wiring decision, not a single-rulebook oversight.https://w3id.org/ebwv) has no beneficial-ownership terms. Its onlyownerproperty is scoped toBankAccount; it hasLegalRepresentative, the partner roles (GeneralPartner/LimitedPartner/StatutoryPartner) andsubscribedCapital, but nothing for ownership/control interests, stakes, or indirect chains.rb-ownership,rb-controlandrb-ubotherefore each re-define ownership and control as flat enumerated strings (ownership_category,control_mechanism,determination_methodology) with no semantic anchoring.Why BODS fits
EBW and BODS operate at different, complementary layers, which is what makes this an alignment rather than a competition:
vcttypes, trust anchors, status lists, wallet binding, and a range of attestation types (A1, posted-worker, payment terms, bank account, EUCC) that have nothing to do with ownership data. BODS has nothing to say here and shouldn't.Person/LegalEntity/Companyclasses and the notion of an ownership-or-control interest.Within that overlap, BODS already handles several things the current flat enums cannot:
interests[]), so indirect ownership through intermediate entities is represented explicitly via intermediate entity statements +directOrIndirect. The currentlegal_entity_identifiersarray + singletotal_ownershipdecimal cannot unambiguously express a multi-tier chain. (rb-uboitself notes the UBO list is derived by applying the ≥25% threshold to the Ownership and Control lists — i.e. the Ownership/Control lists are the graph, and the UBO list is a query over it. That is precisely the BODS relationship-graph-vs-derived-view distinction.)directOrIndirectis a typed property on the interest, kept separate from the interest's nature — avoiding the combinatorial blow-up of folding "Direct/Indirect ownership" into the same enum as "Control through voting rights."shareis a range, not a point:exactorminimum/maximum/exclusiveMinimum/exclusiveMaximum. This matters for banded disclosures, which is how the EU beneficial-ownership submission formats express ownership percentages.beneficialOwnershipOrControl(boolean),unknownInterest,unpublishedInterest, and theUnspecifiedReasoncodelist (no beneficial owners; subject / interested party exempt from disclosure; information unknown to publisher) — covering the AMLR scenarios currently left as open items in the rulebooks.recordId+recordStatusnew/updated/closed,statementDate) is complementary to the credential envelope'sissuance_date/expiry_date+ status-list revocation. The envelope governs credential validity; BODS governs the history of the ownership facts. The two layers do not overlap.The end state worth aiming for: EBW credential payloads whose ownership/control claims are BODS-conformant or losslessly BODS-mappable — so a wallet-issued UBO attestation can round-trip to a BODS statement for AMLR Art. 60/62 register submission and for the cross-check against Ownership/Control lists that
rb-ubo§4.2.10 already mandates.Proposed crosswalk
Prefixes:
bods:=https://vocab.openownership.org/terms#·codes:=https://standard.openownership.org/codelists#The three rulebook enumerations overlap heavily and collapse onto BODS interest types:
Structural mapping:
NaturalPerson→ BODS person statement (personType;nameswith typebods:Legal;birthDate;nationalities;addresseswith typebods:Residence).LegalPerson→ BODS entity statement (entityType;name;identifierskeyed on LEI / EUID;addresseswith typebods:Registered).stake/ownershipobject → BODS relationship statement withinterests[](type,directOrIndirect,beneficialOwnershipOrControl,share).In effect,
ownership_categoryandcontrol_mechanismalready arebods:InterestType— they are just currently unanchored.Suggested approach (alignment, not replacement)
A few options for how the Semantic Reference could be expressed, in rough order of preference:
vocab/src/vocabulary.yml, each defined with explicit alignment to the BODS terms (rdfs:seeAlso/owl:equivalentClass/skos:closeMatch). The rulebooks' Semantic Reference columns then point at the newebwv:terms, which carry the BODS alignment. This keeps EBW self-contained while remaining interoperable, and keeps the decision where it belongs — in the vocabulary the group owns.bods:/codes:IRIs directly. Lighter, but couples the rulebooks to an external namespace.I'd lean towards (1), but the group's view on this is the deciding factor.
What I'm offering
ownership-sd-jwt-sample.jsonstake object expressed as BODS relationship/interest statements, plus the crosswalk above as a repo doc).Semantic_Intake_template.mdsubmission for a "UBO / Ownership / Control" use case, so this is captured through the group's normal front door and answers Q001/Q002 directly.vocabulary.ymlalignment terms if option (1) is preferred.Lei,Euid,LegalEntityIdentifierandLeiRegistration. Through GODIN and the GLEIF relationship I can help align the entity-identifier backbone (BODSidentifiersscheme/schemeName ↔ LEI / EUID) at the same time.Question for the group
ebwv:terms with BODS alignment / direct external IRIs / standalone crosswalk)?Note: the rulebooks themselves live in
webuild-consortium/webuild-attestation-rulebooks-catalog, so this spans both repos — happy to open a cross-referencing companion issue there once there's a direction.References
rulebooks/rb-ownership,rulebooks/rb-control,rulebooks/rb-ubo