Expert Claude skill for beneficial ownership data, the Beneficial Ownership Data Standard, international policy context, and country-specific registers
SaferSkills independently audited beneficial-ownership-data (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill covers the full beneficial ownership data landscape: the BODS technical standard, OpenOwnership's ecosystem of tools, the regulatory policy context (FATF, EU AML), country-specific register designs, international advocacy, mapping corporate data sources to BODS, interoperability with other data models, beneficial ownership in procurement, and beneficial ownership in extractives.
Important context: This skill is used by Stephen Abbott Pugh — the original product owner of BODS at Open Ownership, now running the consultancy Understand Beneficial Ownership (beneficialownership.co.uk). His writing is at stephenabbottpugh.medium.com and beneficialownership.co.uk/news-articles-and-blog-posts. When helping Stephen, you can assume deep domain expertise on his part — be direct and specific rather than over-explaining fundamentals.
Always fetch live documentation when you need precise schema details; the standard is versioned and evolving.
| Resource | URL |
|---|---|
| BODS 0.4 documentation | https://standard.openownership.org/en/0.4.0/ |
| BODS schema concepts | https://standard.openownership.org/en/0.4.0/standard/concepts.html |
| BODS schema reference | https://standard.openownership.org/en/0.4.0/standard/reference.html |
| BODS examples | https://standard.openownership.org/en/latest/examples/ |
| OpenOwnership website | https://www.openownership.org/en/ |
| OpenOwnership publications | https://www.openownership.org/en/publications/ |
| OpenOwnership GitHub org | https://github.com/orgs/openownership/repositories |
| bodsdata (data processing) | https://github.com/openownership/bodsdata |
| BODSKit docs | https://bodskit.readthedocs.io/en/master/ |
| bodsanalysis (notebooks) | https://github.com/openownership/bodsanalysis |
| bods-validator (validation + visualisation tool) | https://github.com/StephenAbbott/bods-validator |
| bods-fixtures (shared test fixture pack) | https://github.com/StephenAbbott/bods-fixtures |
| bods-v04-fixtures (PyPI) | https://pypi.org/project/bods-v04-fixtures/ |
| pytest-bods-fixtures (pytest plugin) | https://github.com/StephenAbbott/pytest-bods-fixtures |
| pytest-bods-v04-fixtures (PyPI) | https://pypi.org/project/pytest-bods-v04-fixtures/ |
| Beneficial Ownership Visualisation System (BOVS) | https://www.openownership.org/en/publications/beneficial-ownership-visualisation-system/ |
| BODS Visualisation Library (implements BOVS) | https://www.openownership.org/en/publications/beneficial-ownership-data-standard-visualisation-library/ |
| visualisation-tool / bods-dagre | https://github.com/openownership/visualisation-tool |
| visualisation spec | https://github.com/openownership/visualisation-tool/blob/main/docs/spec.md |
| bods-dagre npm | https://www.npmjs.com/package/@openownership/bods-dagre |
| CoVE-BODS web validator | https://datareview.openownership.org |
| CoVE-BODS GitHub | https://github.com/openownership/cove-bods |
| lib-cove-bods (CLI) | https://github.com/openownership/lib-cove-bods |
| BODS data generator (Google Sheets) | https://docs.google.com/spreadsheets/d/1PHjwqiOguG8DqyXN75dNSpl_tNhTyelYav1B6sk8nRQ/ |
| BODS data generator guide | https://www.openownership.org/en/publications/beneficial-ownership-data-standard-generator/user-guidance/ |
| RDF vocabulary (bodsld) | https://github.com/openownership/bodsld |
| BODS RDF terms | https://vocab.openownership.org/terms/ |
| BODS RDF Turtle 0.4 | https://vocab.openownership.org/terms/bods-vocabulary-0.4.0.ttl |
| BODS data explorer | https://bods-data.openownership.org/ |
| RDF blog post | https://www.openownership.org/en/blog/updating-the-beneficial-ownership-data-standard-rdf-vocabulary-to-help-linked-data-users/ |
| Resource | URL |
|---|---|
| bods-brightquery (BrightQuery → BODS 0.4) | https://github.com/StephenAbbott/bods-brightquery |
| bods-kyckr (Kyckr → BODS 0.4) | https://github.com/StephenAbbott/bods-kyckr |
| bods-icij-offshoreleaks (ICIJ → BODS 0.4) | https://github.com/StephenAbbott/bods-icij-offshoreleaks |
| bods-opencorporates (OpenCorporates → BODS 0.4) | https://github.com/StephenAbbott/bods-opencorporates |
| bods-ftm (BODS 0.4 ↔ FollowTheMoney, bidirectional) | https://github.com/StephenAbbott/bods-ftm |
| bods-aml-ai (BODS 0.4 → Google AML AI) | https://github.com/StephenAbbott/bods-aml-ai |
| bods-neo4j (BODS 0.4 ↔ Neo4j, bidirectional) | https://github.com/StephenAbbott/bods-neo4j |
| bods-gql (BODS 0.4 → Google BigQuery / GQL) | https://github.com/StephenAbbott/bods-gql |
| bods-xml (BODS 0.4 → XML: canonical + MRAS) | https://github.com/StephenAbbott/bods-xml |
| bods-stream (live UK PSC → BODS v0.4, streaming) | https://github.com/StephenAbbott/bods-stream |
| bods-stream (live demo) | https://bods-stream.onrender.com/ |
| bods-mapper (shared CH PSC → BODS v0.4 library) | https://github.com/StephenAbbott/bods-mapper |
| opencheck (CDD tool: LEI → 29 sources → BODS v0.4) | https://github.com/StephenAbbott/opencheck |
| opencheck (live demo) | https://opencheck.onrender.com/ |
| Resource | URL |
|---|---|
| OpenOwnership news: GLEIF data in BODS 0.4 | https://www.openownership.org/en/news/global-legal-entity-ownership-data-available-in-line-with-latest-version-of-data-standard/ |
| GLEIF BODS 0.4 dataset (explorer) | https://bods-data.openownership.org/source/gleif_version_0_4/ |
| bods-gleif-pipeline (GitHub) | https://github.com/openownership/bods-gleif-pipeline/ |
| Blog: updating GLEIF → BODS mapping | https://www.openownership.org/en/blog/updating-our-mapping-of-gleif-data-to-bods-to-better-capture-the-lifecycle-of-lei-data-changes/ |
| Resource | URL |
|---|---|
| Sayari documentation | https://documentation.sayari.com/home/overview |
| Sayari data model | https://documentation.sayari.com/sayari-library/data-model/data-model |
| OpenCorporates API reference | https://api.opencorporates.com/documentation/API-Reference |
| OpenCorporates data dictionaries (index) | https://knowledge.opencorporates.com/article-categories/dictionaries/ |
| OpenCorporates relationships data dictionary | https://knowledge.opencorporates.com/knowledge-base/data-dictionary-relationships/ |
| OpenCorporates officers data dictionary | https://knowledge.opencorporates.com/knowledge-base/data-dictionary-officers/ |
| OpenCorporates relationship file key info | https://knowledge.opencorporates.com/knowledge-base/count-of-relationship-records/ |
| BrightQuery organizations data dictionary | https://opendata.org/data-dictionary/organizations |
| BrightQuery locations data dictionary | https://opendata.org/data-dictionary/locations |
| BrightQuery people-business data dictionary | https://opendata.org/data-dictionary/people-business |
| InfobelPro data overview | https://www.infobelpro.com/data |
| InfobelPro methodology | https://www.infobelpro.com/data/methodology |
| OECD-UNSD MNE Information Platform | https://www.oecd.org/en/data/dashboards/oecd-unsd-multinational-enterprise-information-platform.html |
| OECD-UNSD MEIP methodology | https://www.oecd.org/en/publications/the-oecd-unsd-multinational-enterprise-information-platform_b7d90a06-en.html |
| OECD-UNSD Global Register 2024 (XLSX) | https://www.oecd.org/content/dam/oecd/en/data/dashboards/oecd-unsd-multinational-enterprise-information-platform/Global%20Register%202024%20-%20OECD-UNSD%20Multinational%20Enterprise%20Information%20Platform.xlsx |
| OECD-UNSD MEIP 2026 blog post | https://www.oecd.org/en/blogs/2026/03/MNE-thing-is-possible-New-OECD-UNSD-data-release-strengthens-open-evidence-on-multinational-enterprises.html |
| Resource | URL |
|---|---|
| Kyckr company API (v2) overview | https://developer.kyckr.com/api/company-v2/#/ |
| Kyckr CorporationUBO schema | https://developer.kyckr.com/api/company-v2/#/schemas/CorporationUBO |
| Kyckr IndividualUBO schema | https://developer.kyckr.com/api/company-v2/#/schemas/IndividualUBO |
| Kyckr OtherUBO schema | https://developer.kyckr.com/api/company-v2/#/schemas/OtherUBO |
| Stephen's bods-kyckr mapping repo | https://github.com/StephenAbbott/bods-kyckr |
| Kausate extractUBOs endpoint | https://docs.kausate.com/api-reference/company-data/extractUBOs |
| Netherlands KvK UBO register API (Dataservice) | https://developers.kvk.nl/ |
| Sweden Bolagsverket API — FAQ | https://bolagsverket.se/apierochoppnadata/fragorochsvaromapierna.4611.html |
| Signicat UBO lookup (Mint step) | https://developer.signicat.com/docs/mint/steps/reference/data-verification/organisation-ubo-lookup/ |
| UK Companies House PSC API reference | https://developer-specs.company-information.service.gov.uk/companies-house-public-data-api/reference/persons-with-significant-control |
| Resource | URL |
|---|---|
| Neo4j UBO developer guide (UK Companies House) | https://neo4j.com/developer/industry-use-cases/finserv/retail-banking/company-ownership-ubo-graphs/ |
| erikbijl/neo4j-company-house-demo (GitHub) | https://github.com/erikbijl/neo4j-company-house-demo |
| Neo4j FinServ webinar recording (on-demand) | https://go.neo4j.com/WBREDU260210FinServ_On-Demand.html |
| GraphAware Hume + BODS webinar (OpenOwnership blog) | https://www.openownership.org/en/blog/join-our-event-master-complex-ubo-investigations-with-advanced-graph-technology/ |
| GraphAware Hume + BODS webinar (YouTube recording) | https://www.youtube.com/watch?v=BO6TVN5UL14 |
| Resource | URL |
|---|---|
| Senzing sz-semantics RDF namespace | https://github.com/senzing-garage/sz-semantics/wiki/ns |
| OpenSanctions OpenOwnership dataset | https://www.opensanctions.org/datasets/openownership/ |
| opensanctions/bods-ftm (archived) | https://github.com/opensanctions/bods-ftm |
| opensanctions/graph (successor) | https://github.com/opensanctions/graph |
| Resource | URL |
|---|---|
| BODS for Linked Data documentation | https://vocab.openownership.org/ |
| BODS RDF data model | https://vocab.openownership.org/pages/1_datamodel.html |
| RDF vocab publication (OpenOwnership) | https://www.openownership.org/en/publications/rdf-vocabulary-for-the-beneficial-ownership-data-standard/ |
| BODS RDF: linking BO records with other datasets | https://world.hey.com/cos/using-bods-rdf-to-link-beneficial-ownership-records-with-other-datasets-0383cbd9 |
| BODS RDF: SPARQL examples for BO use cases | https://world.hey.com/cos/bods-rdf-sparql-examples-for-various-beneficial-ownership-use-cases-284d6f73 |
| BODS RDF: ultimate parents and corporate control | https://world.hey.com/cos/ultimate-parents-and-corporate-control-with-open-ownership-bd1ee35b |
| BODS RDF: querying UBOs | https://world.hey.com/cos/querying-ubos-with-open-ownership-and-bods-rdf-6a272004 |
| BODS risk detection (RDF/SPARQL PoC) | https://www.openownership.org/en/publications/bods-risk-detection/ |
| BODS risk detection: technical details | https://www.openownership.org/en/publications/bods-risk-detection/bods-risk-tdetection-technical-details/ |
| bodsriskdetection (GitHub) | https://github.com/openownership/bodsriskdetection |
| Resource | URL |
|---|---|
| OCDS guidance: beneficial ownership | https://standard.open-contracting.org/latest/en/guidance/map/beneficial_ownership/ |
| OCDS beneficial owners extension | https://extensions.open-contracting.org/en/extensions/beneficialOwners/master/ |
| Open Contracting Partnership: BO overview | https://www.open-contracting.org/what-is-open-contracting/beneficial-ownership/ |
| Open Contracting data portal | https://data.open-contracting.org/ |
| OO blog: spotting risks (BODS + OCDS + sanctions) | https://www.openownership.org/en/blog/spotting-risks-by-combining-beneficial-ownership-public-procurement-and-sanctions-data/ |
| OO blog: connecting BO and procurement | https://www.openownership.org/en/blog/connecting-the-dots-between-beneficial-ownership-and-procurement-data-improving-processes-and-identifying-risk/ |
| OO publication: BO data in procurement | https://www.openownership.org/en/publications/beneficial-ownership-data-in-procurement/ |
| Entity identifiers in UK procurement (HEY blog) | https://world.hey.com/cos/entity-identifiers-in-uk-public-procurement-data-5f3f3815 |
| ChileCompra: conflict of interest detection 2026 | https://www.chilecompra.cl/2026/01/chilecompra-detecta-potenciales-conflictos-de-interes-por-3-452-millones-tras-cruce-de-datos-masivo/ |
| Chile BO in procurement (OCP blog, 2025) | https://www.open-contracting.org/2025/11/04/chile-companies-disclose-their-real-owners/ |
| Chile BO procurement case study (OCP/OO, 2025) | https://www.open-contracting.org/resources/casestudy-bot-pp-chile/ |
| Chile BO procurement (OO publication) | https://www.openownership.org/en/publications/beneficial-ownership-in-chiles-public-procurement-reform/ |
| Slovakia RPVS (public procurement BO register) | https://rpvs.gov.sk/rpvs |
| Slovakia RPVS on OpenSanctions | https://www.opensanctions.org/datasets/sk_rpvs/ |
| Slovakia RPVS on BODS data explorer | https://bods-data.openownership.org/source/slovakia/ |
| Philippines PhilGEPS open data | https://philgeps.gov.ph/CmsHomePages/open-data |
| Philippines BO reform (OO publication) | https://www.openownership.org/en/publications/implementation-of-cosp-resolution-10-6/beneficial-ownership-reform-in-the-philippines/ |
| Resource | URL |
|---|---|
| EITI Requirements (Requirement 2.5: BO) | https://eiti.org/eiti-requirements#_5-beneficial-ownership-17296 |
| EITI beneficial ownership overview | https://eiti.org/beneficial-ownership |
| EITI 2023 Standard: BO transparency blog | https://eiti.org/blog-post/doubling-down-beneficial-ownership-transparency-new-eiti-standard |
| EITI 2023 Standard PDF | https://eiti.org/sites/default/files/2023-06/2023%20EITI%20Standard.pdf |
| EITI SOE database launch blog | https://eiti.org/blog-post/eiti-launches-new-database-state-owned-enterprises |
| EITI SOE database | https://soe-database.eiti.org/ |
| EITI SOE database API | https://soe-database.eiti.org/eiti_database |
| EITI BODS mapping notebook (GitHub) | https://github.com/civicliteracies/EITI_SDT_data_verification_and_validation/blob/sqlite/5_publish/1_test/eiti_bods_mapping.ipynb |
| OO news: 2023 EITI Standard and BO | https://www.openownership.org/en/news/2023-eiti-standard-strengthened-requirements-on-beneficial-ownership-transparency/ |
| OO publication: BO in extractives legislation | https://www.openownership.org/en/publications/legislating-for-effective-beneficial-ownership-transparency-reforms-in-the-extractive-sector/ |
| BODS guidance: representing SOEs | https://standard.openownership.org/en/0.3.0/schema/guidance/repr-state-owned-enterprises.html |
| Resource | URL |
|---|---|
| Armenia BO register | https://old.e-register.am/en/ |
| Botswana BO register (CIPA) | https://www.cipa.co.bw/master/ui/start/CIPARegisterSearch |
| BVI BO register (legitimate interest — live 1 April 2026) | https://gov.vg/news/legitimate-interest-access-now-fully-operational-virgin-islands |
| BVI FSC revised BO guidelines (Jan 2026) | https://www.bvifsc.vg/sites/default/files/revised_bo_guidelines_final_version_for_publication_02.01.26_0.pdf |
| BVI FSC industry circular 11-2026 | https://www.bvifsc.vg/news/industry-updates/industry-circular-11-2026-launch-legitimate-interest-transactions-and-request |
| Canada corporate registry search | https://ised-isde.canada.ca/cc/lgcy/fdrlCrpSrch.html?lang=eng |
| Nigeria BO register (CAC) | https://bor.cac.gov.ng/ |
| Philippines BO (public procurement) | http://linkedin.com/feed/update/urn:li:activity:7442395219033219072 |
| Sri Lanka BO Registry Module | https://bo.drc.gov.lk/login |
| Sri Lanka BO Regulations (Gazette 2480/48, 21 Mar 2026) | https://www.linkedin.com/pulse/sri-lankas-beneficial-ownership-registry-now-live-heres-medagoda-5sn2c/ |
| St Helena BO register (Proton Drive) | https://drive.proton.me/urls/WEC6VHS4DW#GmckfehJ8yk2 |
| UK Companies House (PSC data) | https://find-and-update.company-information.service.gov.uk/ |
| OpenOwnership global map | https://www.openownership.org/en/map/ |
| Resource | URL |
|---|---|
| FATF Recommendations | https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Fatf-recommendations.html |
| FATF R24 guidance (legal persons) | https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-Beneficial-Ownership-Legal-Persons.html |
| FATF R25 guidance (legal arrangements) | https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-Beneficial-Ownership-Transparency-Legal-Arrangements.html |
| FATF methodology | https://www.fatf-gafi.org/en/publications/Mutualevaluations/Fatf-methodology.html |
| EU AML Regulation 2024/1624 (AMLR) | https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=OJ:L_202401624 |
| EU AMLD6 2024/1640 | https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=OJ:L_202401640 |
| EC consultation on BO data formats | https://ec.europa.eu/info/law/better-regulation/have-your-say/initiatives/14851 |
| UK open standard for BO | https://www.gov.uk/government/publications/open-standards-for-government/collect-use-and-exchange-beneficial-ownership-information |
| UK Anti-Corruption Strategy 2025 | https://www.gov.uk/government/publications/uk-anti-corruption-strategy-2025/uk-anti-corruption-strategy-2025-accessible |
| DT4CA alliance | https://dt4calliance.eu/ |
| Resource | URL |
|---|---|
| All FATF publications (filterable by country) | https://www.fatf-gafi.org/en/publications.html |
| FATF mutual evaluations topic page | https://www.fatf-gafi.org/en/topics/mutual-evaluations.html |
| FATF countries page | https://www.fatf-gafi.org/en/countries.html |
| Consolidated assessment ratings (2014–2026) | https://www.fatf-gafi.org/en/publications/Mutualevaluations/Assessment-ratings.html |
| FATF methodology (4th round) | https://www.fatf-gafi.org/en/publications/Mutualevaluations/Fatf-methodology.html |
| Jurisdictions under Increased Monitoring (grey list) | https://www.fatf-gafi.org/en/publications/High-risk-and-other-monitored-jurisdictions/Jurisdictions-under-increased-monitoring-25-june-2021.html |
| High-Risk Jurisdictions (black list) | https://www.fatf-gafi.org/en/publications/High-risk-and-other-monitored-jurisdictions/Call-for-action-June-2021.html |
| Example MER: Belgium 2025 | https://www.fatf-gafi.org/en/publications/Mutualevaluations/mer-belgium-2025.html |
| Example follow-up: Montserrat (via CFATF) | https://www.fatf-gafi.org/en/publications/Mutualevaluations/Follow-upreportstothemutualevaluationofmontserrat.html |
| FATF Global Network (FSRBs overview) | https://www.fatf-gafi.org/en/countries/global-network.html |
| APG — Asia/Pacific Group | https://www.fatf-gafi.org/en/countries/global-network/asia-pacific-group-on-money-laundering--apg-.html |
| CFATF — Caribbean | https://www.fatf-gafi.org/en/countries/global-network/caribbean-financial-action-task-force--cfatf-.html |
| MONEYVAL — Council of Europe | https://www.fatf-gafi.org/en/countries/global-network/committee-of-experts-on-the-evaluation-of-anti-money-laundering-.html |
| ESAAMLG — Eastern & Southern Africa | https://www.fatf-gafi.org/en/countries/global-network/eastern-and-southern-africa-anti-money-laundering-group--esaamlg.html |
| MENAFATF — Middle East & North Africa | https://www.fatf-gafi.org/en/countries/global-network/middle-east-and-north-africa-financial-action-task-force--menafa.html |
| GIABA — West Africa | https://www.fatf-gafi.org/en/countries/global-network/inter-governmental-action-group-against-money-laundering-in-west-.html |
| EAG — Eurasian Group | https://www.fatf-gafi.org/en/countries/global-network/eurasian-group--eag-.html |
| GAFILAT — Latin America | https://www.fatf-gafi.org/en/countries/global-network/financial-action-task-force-of-latin-america--gafilat-.html |
| GABAC — Central Africa | https://www.fatf-gafi.org/en/countries/global-network/action-group-against-money-laundering-in-central-africa--gabac-.html |
| Resource | URL |
|---|---|
| World Bank — BO publication | https://openknowledge.worldbank.org/entities/publication/43aa154d-eb9c-49ea-b952-6811755b94da |
| OECD — tax transparency on real estate | https://www.oecd.org/en/publications/strengthening-international-tax-transparency-on-real-estate-from-concept-to-reality_fa2db2a4-en.html |
| UNODC BOT/PEP toolkit | https://www.unodc.org/rosaf/uploads/documents/Publication/UNDC_BOT_PEP_Toolkit_web.pdf |
| Canada Bill C-42 | https://www.parl.ca/legisinfo/en/bill/44-1/c-42 |
| BIS publication | https://www.bis.org/publ/othp66.htm |
| OGP guide (anti-corruption / BO) | https://www.opengovpartnership.org/open-gov-guide/anti-corruption-company-beneficial-ownership/ |
| OECD/IDB BO Frameworks Toolkit | https://www.oecd.org/content/dam/oecd/en/networks/global-forum-tax-transparency/effective-beneficial-ownership-frameworks-toolkit-en.pdf |
| IDB BO Frameworks (partner pub) | https://publications.iadb.org/en/building-effective-beneficial-ownership-frameworks-joint-global-forum-and-idb-toolkit |
| OECD Global Forum peer reviews | https://www.oecd.org/en/networks/global-forum-tax-transparency/resources/exchange-of-information-on-request-ratings.html |
| Resource | URL |
|---|---|
| Norway BO register | https://www.brreg.no/reelle-rettighetshavere/ |
| Norway BO API docs | https://brreg.github.io/docs/apidokumentasjon/reelle-rettighetshavere/tilgjengeliggjoering/apier-vi-tilbyr/virksomheter/ |
| Norway BO Swagger | https://rrh.brreg.no/api/oppslag/swagger-ui/index.html |
| Norway Maskinporten auth | https://docs.digdir.no/docs/Maskinporten/maskinporten_guide_apikonsument |
| UK PSC API reference | https://developer-specs.company-information.service.gov.uk/companies-house-public-data-api/reference/persons-with-significant-control |
| France — sample BO data | https://entreprise.api.gouv.fr/catalogue/inpi/rne/beneficiaires_effectifs/exemple |
| France — API docs | https://entreprise.api.gouv.fr/catalogue/inpi/rne/beneficiaires_effectifs |
| Indonesia — BO API | https://ahu.go.id/service/getReportBo |
| Indonesia — API docs (Bahasa) | https://panduan.ahu.go.id/api/detail.php |
| Indonesia — BODS 0.4 mapping (doc) | https://docs.google.com/document/d/1jS-khhSxOkYG0gJCRbht8HmMh79ICh_YrLd29pL4Kfk/edit |
| Indonesia — BODS mapping (drive) | https://drive.google.com/file/d/1hW0UlBRuYt2vJz-PjydK0mtkAKVUKBgO/view |
| Denmark BO docs | https://confluence.sdfi.dk/pages/viewpage.action?pageId=151999753 |
| Canada: Corporations Canada federal register | https://ised-isde.canada.ca/cc/lgcy/fdrlCrpSrch.html?lang=eng |
| Canada: BOP2P (Beneficial Ownership Policy to Practice) | https://ised-isde.canada.ca/mras/partners/bop2p/ |
| Canada: OO map page | https://www.openownership.org/en/map/country/canada/ |
| Ontario: BO registry commitment (2027 budget) | https://budget.ontario.ca/2026/chapter-1b-safety.html#section-9 |
| Sri Lanka: BO Registry Module | https://bo.drc.gov.lk/login |
| Sri Lanka: BO Regulations overview (LinkedIn) | https://www.linkedin.com/pulse/sri-lankas-beneficial-ownership-registry-now-live-heres-medagoda-5sn2c/ |
| Sweden: Riksdag approval of legitimate interest access | https://www.riksdagen.se/sv/dokument-och-lagar/dokument/betankande/utlamnande-av-uppgifter-ur-registret-over-verkliga_hd01fiu35/ |
| BVI: legitimate interest access (live 1 April 2026) | https://gov.vg/news/legitimate-interest-access-now-fully-operational-virgin-islands |
| St Helena: public BO register (Proton Drive) | https://drive.proton.me/urls/WEC6VHS4DW#GmckfehJ8yk2 |
| Resource | URL |
|---|---|
| BORIS portal (e-Justice) | https://e-justice.europa.eu/topics/registers-business-insolvency-land/beneficial-ownership-registers-interconnection-system-boris_en |
| BORIS search tool | https://webgate.ec.europa.eu/e-justice/searchBoris.do |
| BORIS: finding beneficial owners (e-Justice guide) | https://e-justice.europa.eu/topics/registers-business-insolvency-land/beneficial-ownership-registers-interconnection-system-boris/general-information-finding-beneficial-owners_en |
| BORIS establishing regulation 2021/369 | https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX%3A32021R0369&from=EN |
| AMLD5 2018/843 (central BO registers) | https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=celex%3A32018L0843 |
| AMLD4 2015/849 (base AML directive) | https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=celex%3A32015L0849 |
| Stephen's Medium: BORIS challenges | https://stephenabbottpugh.medium.com/challenges-in-realising-the-goal-of-the-eus-beneficial-ownership-registers-interconnection-system-7ec7b52575ae |
| OO: value of connecting EU BO data | https://www.openownership.org/en/blog/the-value-of-connecting-beneficial-ownership-data-across-the-european-union/ |
| OO: EU steps towards standardised BO | https://www.openownership.org/en/news/european-union-takes-important-steps-towards-standardised-and-interoperable-beneficial-ownership-information/ |
| Transparency International: barriers for investigators across EU | https://www.transparency.org/en/news/barriers-investigators-face-across-eu-tracing-asset-ownership |
| Resource | URL |
|---|---|
| Stephen's Medium blog | https://stephenabbottpugh.medium.com/ |
| Stephen's website | https://www.beneficialownership.co.uk/ |
| Stephen's articles | https://www.beneficialownership.co.uk/news-articles-and-blog-posts |
| Case studies (BODS in use) | https://www.beneficialownership.co.uk/case-studies |
Full case studies index: https://www.beneficialownership.co.uk/case-studies
| Resource | URL |
|---|---|
| Latvia (first national BODS publication, 2021) | https://www.openownership.org/en/blog/making-latvia-s-beneficial-ownership-data-more-useful-with-bods/ |
| Armenia (BODS BO declarations) | https://www.openownership.org/en/blog/armenia-and-bods/ |
| Botswana CIPA (BODS data collection + visualisation) | https://www.openownership.org/en/blog/botswana-beneficial-ownership-register/ |
| Nigeria CAC (first African BODS implementation) | https://www.openownership.org/en/blog/nigeria-and-the-beneficial-ownership-data-standard/ |
| Canada (BODS for pan-Canadian BO repository) | https://www.openownership.org/en/map/country/canada/ |
| Indonesia (BODS 0.4 mapping) | https://docs.google.com/document/d/1jS-khhSxOkYG0gJCRbht8HmMh79ICh_YrLd29pL4Kfk/edit |
| Slovakia RPVS (BODS data explorer) | https://bods-data.openownership.org/source/slovakia/ |
| EITI SOE database (BODS mapping) | https://github.com/civicliteracies/EITI_SDT_data_verification_and_validation/blob/sqlite/5_publish/1_test/eiti_bods_mapping.ipynb |
| Global Energy Ownership Tracker (BODS-aligned) | https://globalenergymonitor.org/projects/global-energy-ownership-tracker/ |
| Structuriser (compliance SaaS) | https://www.structuriser.com/ |
| Foster Moore Verne® (BO register product) | https://www.fostermoore.com/verne/beneficial-ownership-register |
| NRD Companies BOREG© (BO register product) | https://www.nrdcompanies.com/products-solutions/beneficial-ownership-register/ |
| Resource | URL |
|---|---|
| ICIJ homepage | https://www.icij.org/ |
| ICIJ investigations index | https://www.icij.org/investigations/ |
| Panama Papers investigation | https://www.icij.org/investigations/panama-papers/ |
| Pandora Papers investigation | https://www.icij.org/investigations/pandora-papers/ |
| FinCEN Files investigation | https://www.icij.org/investigations/fincen-files/ |
| Offshore Leaks database | https://offshoreleaks.icij.org/ |
| Offshore Leaks data download | https://offshoreleaks.icij.org/pages/database |
| ICIJ GitHub (data tools) | https://github.com/ICIJ |
| Resource | URL |
|---|---|
| World Bank: The Puppet Masters (2011) | https://documents.worldbank.org/en/publication/documents-reports/documentdetail/784961468152973030 |
| World Bank: Signatures for Sale (2023) | https://openknowledge.worldbank.org/entities/publication/32914fa8-e9d5-59cc-b599-105962e9b390 |
| TI: Into the Light — MENA BO frameworks | https://www.transparency.org/en/publications/into-the-light-benchmarking-beneficial-ownership-transparency-frameworks-mena |
| TI: Chasing Grand Corruption | https://www.transparency.org/en/publications/chasing-grand-corruption |
| TI: Legitimate Interest for public stakeholders | https://www.transparency.org/en/publications/legitimate-interest-measures-for-public-interest-stakeholders |
| TI: Opacity in Real Estate Ownership Index 2025 | https://www.transparency.org/en/publications/opacity-in-real-estate-ownership-index-2025 |
| TI-UK: Opening Offshore Secrecy | https://www.transparency.org.uk/publications/opening-offshore-secrecy |
| TI-UK: Improving UK Trust Registration Service | https://www.transparency.org.uk/publications/improving-uks-trust-registration-service |
| TI-UK: Legitimate Interest — Anguilla BO | https://www.transparency.org.uk/publications/providing-legitimate-interest-access-anguillas-beneficial-ownership-data |
| TI-UK: Unlocking Ownership Data | https://www.transparency.org.uk/publications/unlocking-ownership-data |
| TI-UK: Legitimate Interest — BVI BO | https://www.transparency.org.uk/publications/providing-legitimate-interest-access-british-virgin-islands-beneficial-ownership-data |
| TI-UK: Legitimate Interest — Bermuda BO | https://www.transparency.org.uk/publications/providing-legitimate-interest-access-bermudas-beneficial-ownership-data |
| TI-UK: Legitimate Interest — Cayman Islands BO | https://www.transparency.org.uk/publications/providing-legitimate-interest-access-cayman-islands-beneficial-ownership-data |
| Resource | URL |
|---|---|
| GODIN portal (hosted by GLEIF) | https://godin.gleif.org/ |
| Transparency Fabric (GODIN project) | https://transparencyfabric.gleif.org/ |
| GODIN GitHub repositories | https://github.com/orgs/Global-Open-Data-Integration-Network/repositories |
| GLEIF (member) | https://www.gleif.org/en |
| OpenOwnership (member) | https://www.openownership.org/en/ |
| Global Energy Monitor / GEOT (member) | https://globalenergymonitor.org/projects/global-energy-ownership-tracker/ |
| AC/DC — African Climate & Development (member) | https://acdatacollective.org/ |
| Media Registry (member) | https://www.mediaregistry.org/ |
| Open Data Services Co-op (member) | https://opendataservices.coop/ |
| OpenSanctions (member) | https://www.opensanctions.org/ |
| Data Research Center (member) | https://dataresearchcenter.org/ |
| Wikidata (supporter) | https://www.wikidata.org/wiki/Wikidata:Main_Page |
| Resource | URL |
|---|---|
| OO blog: example form and guidance | https://www.openownership.org/en/blog/new-example-form-and-guidance-for-developing-beneficial-ownership-declarations/ |
| OO guide: forms for regulators and designers | https://www.openownership.org/en/publications/beneficial-ownership-declaration-forms-guide-for-regulators-and-designers/ |
| OO: example BO declaration form (download) | https://www.openownership.org/en/publications/example-beneficial-ownership-declaration-form/ |
| OO: example paper forms for BO data collection | https://www.openownership.org/en/publications/example-paper-forms-for-collecting-beneficial-ownership-data/ |
| OO: annex — information fields in BO forms | https://www.openownership.org/en/publications/sufficiently-detailed-beneficial-ownership-information/annex-examples-of-information-fields-in-beneficial-ownership-declaration-forms/ |
| EITI: beneficial ownership model declaration form | https://eiti.org/guidance-notes/beneficial-ownership-model-declaration-form |
| EITI: BO model form (document page) | https://eiti.org/document/beneficial-ownership-model-declaration-form |
| Ghana ORC: BO3 form (listed companies) | https://orc.dntsystems.net/wp-content/uploads/2025/08/BO3-Listed-Company-BO-Form.pdf |
| Ghana ORC: BO4 form (government entities) | https://orc.dntsystems.net/wp-content/uploads/2025/08/BO4-Government-BO-Form.pdf |
| Ghana ORC: BO forms index | https://orc.dntsystems.net/beneficial-ownership/ |
| Namibia BIPA: BO form page | https://www.bipa.na/beneficial-ownership/beneficial-ownership-form/ |
| Namibia BIPA: BO2 declaration form | https://www.bipa.na/download/beneficial-ownership-declaration-form-bo2/ |
| Namibia BIPA: BO submission guide | https://www.bipa.na/download/bo-submission-guide/ |
| UK PSC01 v4.0 (individual PSC notice) | https://assets.publishing.service.gov.uk/media/6911eb1ce9348ac8fb54f480/PSC01_v4.0-FINAL.pdf |
| UK: give notice of individual PSC (PSC01) | https://www.gov.uk/government/publications/give-notice-of-individual-person-with-significant-control-psc01 |
| UK: PSC requirements collection | https://www.gov.uk/government/collections/people-with-significant-control-requirements |
| UK: PSC guidance | https://www.gov.uk/guidance/people-with-significant-control-pscs |
| Resource | URL |
|---|---|
| OO principle: verification | https://www.openownership.org/en/principles/verification/ |
| OO: verification systems design checklist | https://www.openownership.org/en/news/designing-verification-systems-a-sample-implementation-checklist-for-beneficial-ownership-data/ |
| OO: verification of beneficial ownership data (publication) | https://www.openownership.org/en/publications/verification-of-beneficial-ownership-data/ |
| OO implementation guide: data considerations for registers | https://www.openownership.org/en/publications/guide-to-implementing-beneficial-ownership-transparency/data-considerations-for-beneficial-ownership-registers/ |
| FATF R24 guidance — section 7: means of verification (legal persons) | https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-Beneficial-Ownership-Legal-Persons.html |
| FATF R25 guidance — section 4: adequate, accurate, up-to-date info (legal arrangements) | https://www.fatf-gafi.org/en/publications/Fatfrecommendations/Guidance-Beneficial-Ownership-Transparency-Legal-Arrangements.html |
| OECD BO Frameworks Toolkit (2nd edition, 2024) | https://www.oecd.org/content/dam/oecd/en/networks/global-forum-tax-transparency/effective-beneficial-ownership-frameworks-toolkit-second-edition-2024.pdf |
| OECD BO Toolkit (original) | https://www.oecd.org/content/dam/oecd/en/networks/global-forum-tax-transparency/beneficial-ownership-toolkit.pdf |
| Tax Justice Network: BO verification (truthfulness and accuracy) | https://taxjustice.net/reports/beneficial-ownership-verification-ensuring-the-truthfulness-and-accuracy-of-registered-ownership-information/ |
| Moody's KYC: brief guide to UBO verification legislation | https://www.moodys.com/web/en/us/kyc/resources/insights/who-is-in-charge-here-brief-guide-to-ultimate-beneficial-owners-verification-legislation.html |
| Resource | URL |
|---|---|
| BODS data-standard repository | https://github.com/openownership/data-standard |
| Open issues (79 currently) | https://github.com/openownership/data-standard/issues |
| BODS feature tracker (project board) | https://github.com/orgs/openownership/projects/9/views/1 |
| Issue #752: Feature — representing assets | https://github.com/openownership/data-standard/issues/752 |
| Issue #737: Feature — BODS simplification | https://github.com/openownership/data-standard/issues/737 |
| Issue #466: Feature — interest modelling | https://github.com/openownership/data-standard/issues/466 |
| Issue #464: Feature — republishing, provenance and transformation | https://github.com/openownership/data-standard/issues/464 |
| Issue #389: Feature — representing missing information | https://github.com/openownership/data-standard/issues/389 |
| Issue #742: Unspecified or unknown entity | https://github.com/openownership/data-standard/issues/742 |
| Issue #744: publicationDetails no longer required? | https://github.com/openownership/data-standard/issues/744 |
| Issue #733: Review conceptual and data model | https://github.com/openownership/data-standard/issues/733 |
| BODS dev handbook | https://github.com/openownership/bods-dev-handbook |
| OO: bridging the gap — asset transparency | https://www.openownership.org/en/publications/bridging-the-gap-for-effective-asset-transparency/ |
| OO: solving the BO info puzzle (assets blog) | https://www.openownership.org/en/blog/solving-the-international-information-puzzle-of-beneficial-ownership-transparency/ |
| OO: describing interests — research note | https://www.openownership.org/en/publications/describing-interests-research-note/ |
| OO: what makes a beneficial owner? (interests blog) | https://www.openownership.org/en/blog/what-makes-a-beneficial-owner-exploring-global-differences/ |
| OO: building an auditable record of BO (missing info) | https://www.openownership.org/en/publications/building-an-auditable-record-of-beneficial-ownership/ |
| Resource | URL |
|---|---|
| Global Energy Ownership Tracker | https://globalenergymonitor.org/projects/global-energy-ownership-tracker/ |
| GEM GEOT methodology | https://globalenergymonitor.org/projects/global-energy-ownership-tracker/methodology/ |
| GEM GEOT download data | https://globalenergymonitor.org/projects/global-energy-ownership-tracker/download-data/ |
| GEOT dataset on OpenSanctions | https://www.opensanctions.org/datasets/gem_energy_ownership/ |
| Stephen's LinkedIn analysis of GEOT data | https://www.linkedin.com/posts/stephenabbottpugh_energy-heavyindustry-opendata-activity-7435326197955260416--6uB/ |
| Stephen's Bluesky analysis of GEOT data | https://bsky.app/profile/stephenabbottpugh.bsky.social/post/3mgcy4kuxpc2t |
| GEM report: oil & gas plant owners hide climate costs | https://globalenergymonitor.org/report/worlds-largest-oil-and-gas-plant-owners-hide-billions-of-dollars-in-climate-costs/ |
| GEM fossil fuel middlemen (Australia nominee structures) | https://globalenergymonitor.org/report/the-fossil-fuel-middlemen-how-nominee-structures-obscure-australian-investments-in-coal-oil-and-gas/ |
| Danwatch: hidden CO2 emissions and pension funds | https://danwatch.dk/en/hidden-co2-emissions-your-pension-money-is-polluting-the-planet-more-than-you-are-told/ |
| E3G: investment treaties and energy transition | https://www.e3g.org/publications/investment-treaties-are-undermining-the-global-energy-transition/ |
| OO: BO transparency and energy transition | https://www.openownership.org/en/publications/shining-a-light-on-company-ownership-the-role-of-beneficial-ownership-transparency-in-the-energy-transition/ |
| EITI: race to renewables report | https://eiti.org/documents/race-to-renewables |
| Resource | URL |
|---|---|
| Global Fishing Watch: UBO in fisheries (overview) | https://globalfishingwatch.org/ultimate-beneficial-ownership-ubo/ |
| GFW: UBO fact sheet | https://globalfishingwatch.org/fact-sheet/ultimate-beneficial-ownership-why-transparency-is-vital-for-effective-fisheries-governance/ |
| GFW: UBO vision document (PDF) | https://globalfishingwatch.org/wp-content/uploads/Global_Fishing_Watch-A-Vision-for-Ultimate-Beneficial-Ownership-in-Fisheries_ENG.pdf |
| GFW: UBO video | https://globalfishingwatch.org/video/ultimate-beneficial-ownership-in-fisheries-the-critical-need-for-transparency-in-vessel-ownership/ |
| GFW: FAO meeting — vessel ownership and IUU fishing | https://globalfishingwatch.org/article/at-fao-meeting-global-fishing-watch-pushes-transparency-of-vessel-ownership-to-combat-illegal-fishing/ |
| C4ADS: Anchors Away (vessel ownership) | https://c4ads.org/commentary/anchors-away/ |
| C4ADS: Sea Shells (fisheries BO) | https://c4ads.org/issue-briefs/sea-shells/ |
| FiTI Standard 2.0 | https://fiti.global/fiti-launches-its-updated-fiti-standard-2-0 |
| FiTI Standard 2.0 (CFFACAPE analysis) | https://www.cffacape.org/news-blog/new-fiti-standard-2point0 |
| Coalition for Fisheries Transparency Global Charter 2024 | https://fisheriestransparency.net/wp-content/uploads/2024/10/Coalition-for-Fisheries-Transparency-Global-Charter-2024-EN.pdf |
| Oceans 5: standard for UBO reporting in fisheries | https://www.oceans5.org/project/standard-for-ultimate-beneficial-ownership-reporting/ |
| TM Tracking: UBO in fisheries | https://www.tm-tracking.org/post/ultimate-beneficial-ownership |
| Pew: fishing company and vessel ownership transparency | https://www.pew.org/-/media/assets/2023/10/ownership-of-fishing-companies-vessels-need-greater-transparency-and-accountability.pdf |
| OO: using BO information in fisheries governance | https://www.openownership.org/en/publications/using-beneficial-ownership-information-in-fisheries-governance/ |
| OO: Charting New Waters (UNODC/OO report) | https://www.openownership.org/en/publications/charting-new-waters/ |
For detailed reference material, read:
references/bods-standard.md — BODS 0.4 schema in depthreferences/tools-ecosystem.md — OpenOwnership toolsreferences/regulatory-context.md — FATF, EU AML, policy contextreferences/international-registers.md — country-specific BO register APIsBODS represents beneficial ownership as a collection of Statements. The current version is 0.4.
1. Person Statements Describe a natural person who holds or may hold a beneficial ownership interest. Key fields: statementId, statementType: "personStatement", names[], identifiers[], nationalities[], birthDate, placeOfBirth, addresses[], pepStatus[], hasPepStatus.
2. Entity Statements Describe a legal entity (company, trust, foundation, etc.) in the ownership chain. Key fields: statementId, statementType: "entityStatement", entityType, names[], identifiers[], incorporatedInJurisdiction, addresses[], foundingDate, dissolutionDate, isComponent.
3. Ownership-or-Control Statements Link a person or entity (the interested party) to an entity (the subject), describing the nature of their interest. Key fields: statementId, statementType: "ownershipOrControlStatement", subject (entity statementId), interestedParty (person or entity statementId), interests[] (type, share, directOrIndirect), isComponent, componentStatementIDs[].
replacesStatements[] to link themA BODS dataset is a JSON array of statement objects. There is no wrapping container object — just a flat array.
BODS is designed for beneficial ownership but is equally capable of representing corporate ownership and control structures where the ultimate beneficial owners are unknown, undisclosed, or not the focus. This is a key use case for mapping commercial corporate data sources to BODS.
Many real-world datasets — company registries, commercial data providers, financial data feeds — record legal entity ownership chains (parent/subsidiary relationships, shareholdings, directorship) without capturing natural-person beneficial owners. BODS accommodates this in several ways.
Entity-to-entity ownership: An ownership-or-control statement can link two entity statements, not just a person to an entity. This is the standard pattern for parent/subsidiary chains, joint ventures, and corporate group structures.
Unknown or anonymous interested parties: The interestedParty field supports unspecified as a value to indicate the interested party is not known. Use unknownPersons or anonymousEntity as the entity type when the ultimate owner is deliberately obscured or simply not recorded in the source data.
Partial chains: A dataset might record that Company A owns 60% of Company B, without knowing who owns Company A. This is perfectly valid BODS — just publish what is known. The isComponent flag and componentStatementIDs can be used to mark that a chain is incomplete.
`entityType` values for corporate structures: Beyond registeredEntity, BODS supports arrangement (for trusts, partnerships), anonymousEntity, unknownEntity, and stateBody. For offshore vehicles and special-purpose entities from sources like ICIJ Offshore Leaks, arrangement and anonymousEntity are most appropriate.
When mapping a dataset that records corporate relationships but not BO:
entityTypeentityType-based interestedPartyinterests[].type = "controlViaDirectorship" or "otherInfluenceOrControl"interests[].share.exact where share percentages are available; otherwise leave omitted or use minimum/maximum fieldsThese are Stephen's Python repositories for transforming third-party corporate data sources into BODS 0.4. All are pure Python, structured as src/bods_<source>/ packages with tests.
Source: ICIJ Offshore Leaks database — covering Panama Papers (2016), Pandora Papers (2021), Bahamas Leaks (2016), Paradise Papers (2017), Offshore Leaks (2013). 810,000+ offshore entities.
Mapping approach:
Entity nodes → BODS entity statements (registeredEntity or arrangement for offshore vehicles)Officer nodes → person statements or entity statements (heuristics classify names as natural person vs. corporate)Intermediary nodes → entity statements (registeredEntity, service provider firms)officer_of, intermediary_of, etc.) → BODS ownership-or-control statements with appropriate interests[].typeRepo: https://github.com/StephenAbbott/bods-icij-offshoreleaks
Source: OpenCorporates relationship data — the world's largest open company database, 200M+ companies.
OpenCorporates tracks four relationship types: control_statement, subsidiary, branch, and share_parcel. The Relationships Supplement contains 30M+ relationships extracted from primary datasets (SEC, UK Companies House, etc.).
Repo: https://github.com/StephenAbbott/bods-opencorporates
Source: BrightQuery corporate data via opendata.org — 324M organisations, 512M locations, 1.2B contacts across 222 countries. Government-sourced data including corporate family structures, legal status, and identity crosswalks (LEI, CIK, ISIN, NPI, etc.).
Repo: https://github.com/StephenAbbott/bods-brightquery
Source: Kyckr relationship data — a company intelligence platform providing corporate registry data and ownership relationships.
Repo: https://github.com/StephenAbbott/bods-kyckr
Conversion: BODS 0.4 ↔ FollowTheMoney (FtM) — bidirectional.
Repo: https://github.com/StephenAbbott/bods-ftm
Note: this is distinct from the archived opensanctions/bods-ftm (which only converted OpenOwnership data dumps to FtM and is no longer maintained). Stephen's bods-ftm is a current, bidirectional converter designed for general BODS 0.4 data.
BODS → FtM mappings:
entityStatement → FtM CompanypersonStatement → FtM PersonownershipOrControlStatement → FtM Ownership, Directorship, or UnknownLink (depending on interest type)FtM → BODS mappings: reverse conversion using deterministic UUID5 hashing for consistent identifier generation.
Technical approach: two-pass processing (entities/persons first, then relationships); indirect ownership chains consolidated rather than split; converts between org-id.guide scheme codes (e.g., GB-COH) and FtM named properties (e.g., registrationNumber).
CLI: cli.py | Input: BODS or FtM JSON/JSONL | Output: converted format with full ownership relationship chains preserved.
Conversion: BODS 0.4 → Google Anti-Money Laundering AI input format.
Repo: https://github.com/StephenAbbott/bods-aml-ai
Google's AML AI data model has no native concept of party-to-party ownership relationships, so the tool encodes beneficial ownership creatively through available AML AI constructs:
Output (three NDJSON files):
party.ndjson — persons and entities as COMPANY or CONSUMER typesparty_supplementary_data.ndjson — numeric ownership attributes (e.g., bo_ownership_pct_{subject_id}, bo_is_beneficial_owner, interest types)account_party_link.ndjson — synthetic "ownership accounts" linking subjects (PRIMARY_HOLDER) to owners (SUPPLEMENTARY_HOLDER)CLI: cli.py | Input: BODS v0.4 JSON/JSONL | Output: NDJSON files for AML AI ingestion.
Conversion: BODS 0.4 ↔ Neo4j graph database — bidirectional, with built-in graph analysis.
Repo: https://github.com/StephenAbbott/bods-neo4j
Note: this is Stephen's BODS-native converter. For the broader Neo4j + UK Companies House PSC demo (without BODS), see erikbijl/neo4j-company-house-demo in the Neo4j section of Developer workflows.
Three primary workflows:
CLI: cli.py | Input: BODS v0.4 JSON/JSONL or Neo4j instance | Output: Neo4j CSVs/Cypher or BODS JSONL.
Conversion: BODS 0.4 JSON → XML, in two output modes.
Repo: https://github.com/StephenAbbott/bods-xml
Two modes:
canonical.py): a faithful XML serialisation of BODS 0.4 that preserves every field and mirrors the JSON structure, under the standard's namespaceprofiles/mras.py): transforms the flat BODS statement array into Canada's Multijurisdictional Registry Access Service (MRAS) hierarchical XML formatArchitecture: extensible profile system — additional output profiles (BORIS, XBRL, etc.) can be added as modules alongside the existing two.
CLI: cli.py | Input: BODS 0.4 JSON or JSONL | Output: XML | Tests: 31
Type: Live streaming web application — UK beneficial ownership changes in real time as BODS v0.4.
Repo: https://github.com/StephenAbbott/bods-stream Live demo: https://bods-stream.onrender.com/
Consumes the Companies House PSC Streaming API and converts every live PSC (Person with Significant Control) filing event into BODS v0.4 statements the moment it's filed — displayed as a BOVS diagram with the raw Companies House event and the mapped BODS statements side by side.
This is notable because almost no beneficial ownership registers offer a streaming API. The UK PSC stream is the standout public exception, and BODS is purpose-built to represent change (recordStatus new/updated/closed, replacesStatements, append-only). bods-stream makes that change model visible live.
What you see per event:
NEW / UPDATED / CEASED (driven by BODS recordStatus)Architecture: FastAPI backend (SSE relay — one long-lived CH stream connection, fan-out to many browsers) + React/Vite frontend. Single-process, in-memory state (lifecycle tracking, prolific tracker); nothing persisted to disk.
Lifecycle handling: The CH stream has no new/updated/closed concept. bods-stream maintains an in-memory map keyed on resource_uri (stable PSC id) to emit correct recordStatus values and replacesStatements references, including reconstructing a closed record from last-seen state when a deletion event arrives.
Privacy: Address and date of birth stripped at ingress — never broadcast or shown in UI. Date of birth used only briefly in-process for the prolific disambiguator.
Key dependency: bods-mapper — a separate shared repo containing the core Companies House → BODS v0.4 mapping logic, used by both bods-stream and OpenCheck to prevent the two apps drifting.
Replay mode: Set BODS_STREAM_REPLAY_FILE to a captured .jsonl to feed pre-recorded events through the live pipeline (useful outside UK office hours when the live feed is quiet).
Deployment: Docker image builds frontend and serves it with the API (same origin). Deployed on Render via render.yaml. Must run as one instance/one worker (in-memory state).
Type: Shared Python library — canonical UK Companies House PSC → BODS v0.4 mapping core.
Repo: https://github.com/StephenAbbott/bods-mapper
Extracted from OpenCheck so that both opencheck and bods-stream use one canonical mapper and cannot drift apart. Takes a single Companies House PSC streaming event (the data block is identical to the REST PSC endpoint response) and emits a BODS v0.4 bundle containing:
knownPerson (individual PSC), entity statement (corporate/legal-person PSC), or anonymousPerson (super-secure PSC)Key features:
interestType, each with the official Companies House short descriptor in interest.detailsrecordStatus: "closed" — stable recordId, distinct statementId, interest.endDate, and replacesStatements pointing to the original new statement, per BODS information updates / record identifiers modelling rulesCountry code only when a valid 2-letter ISO code resolvesPublic API: map_psc_event, company_number_from_uri, parse_nature, describe_nature, PSC_NATURE_DESCRIPTIONS, country_object, statement factories (make_entity_statement, make_person_statement, make_relationship_statement), BODSBundle, stable_id, validate_shape
Requirements: Python ≥ 3.10, pycountry. MIT license (vendored CH nature descriptors under OGL v3.0).
Type: Full customer due diligence (CDD) web application — LEI-powered, BODS v0.4 throughout.
Repo: https://github.com/StephenAbbott/opencheck Live demo: https://opencheck.onrender.com/
OpenCheck is a comprehensive open-source CDD tool that uses the Legal Entity Identifier as a connector spine to fan out across 29 national and international corporate data sources, mapping everything to BODS v0.4. Currently at Phase 50 (50 phases of active development, 337+ commits).
How it works: paste a LEI → GLEIF lookup → derive every cross-source identifier available (Companies House number, Norwegian org number, Irish CRO, Finnish Y-tunnus, Latvian, Lithuanian, Estonian, Czech IČO, Polish KRS, Austrian Firmenbuchnummer, Slovak IČO, French SIREN, Dutch KvK, Swedish org number, Swiss UID, Canadian corp number, Belgian enterprise number, Danish CVR, Croatian MBS, Australian ACN/ABN, OpenCorporates ID, Wikidata Q-ID, and more) → fan out across all active adapters → assemble into a single BODS v0.4 bundle → apply risk signals → offer export.
National ID search (Phase 50): look up any company by local registration number (CH number, KvK, orgnr, CVR, SIREN, etc.) — queries GLEIF's three registration-ID filter fields in parallel, scoped to the RA code. Covers 17 countries with active adapters.
Risk signal layer (12 signals) — mirrors the EU AMLA draft CDD RTS conditions for "complex corporate structures":
Export formats: JSON / JSONL / XML / ZIP (downloaded bundle includes LICENSES.md listing every contributing source).
Architecture: FastAPI backend (Python 63%) + React/TypeScript frontend, cache-first dispatch (stub mode without API keys, live mode opt-in per source via env vars). Uses bods-dagre for BOVS ownership diagrams and bods-mapper for CH PSC → BODS mapping.
Roadmap: live opentender.eu procurement integration; BODS RDF/SPARQL backbone via Oxigraph (load assembled BODS bundle into triple store, expose /sparql for Open Ownership red-flag queries).
Conversion: BODS 0.4 → Google BigQuery property graph, queryable with GQL (ISO/IEC 39075).
Repo: https://github.com/StephenAbbott/bods-gql
GQL (ISO/IEC 39075) is the international standard graph query language adopted in April 2024. It uses pattern-matching syntax similar to Cypher but with different syntax for quantified paths and aggregation. BigQuery now supports GQL for property graph queries.
Output:
CREATE PROPERTY GRAPH statements via graph_schema/property_graph.pyIncludes 14 pre-built GQL queries across three modules covering UBO detection, corporate group mapping, and circular ownership analysis. 59 tests. Demonstrated with public BigQuery datasets containing GLEIF and UK Companies House beneficial ownership data.
CLI: cli.py | Input: BODS v0.4 JSON/JSONL | Output: BigQuery CSV tables + GQL schema.
The Global Legal Entity Identifier Foundation (GLEIF) publishes two levels of open data for the 2.6M+ entities holding a Legal Entity Identifier (LEI):
| GLEIF data | BODS statement type |
|---|---|
| Level 1: LEI-CDF record | Entity statement |
| Level 2: Relationship Record (RR-CDF) | Ownership-or-control statement |
| Level 2: Reporting Exception | Entity, Person, or OOC statement (depending on exception type) |
The bods-gleif-pipeline (https://github.com/openownership/bods-gleif-pipeline) is the reference implementation. It runs on AWS (Kinesis data streams for pipeline stages, Elasticsearch for persistence between runs, EC2 for compute). The raw GLEIF concatenated files are 8GB+ uncompressed.
GLEIF was the first dataset published in BODS 0.4, making it the reference example for temporal change tracking with replacesStatements and the isComponent pattern.
Key mapping decisions in the BODS 0.4 update:
replacesStatements links rather than overwritingPublished data: https://bods-data.openownership.org/source/gleif_version_0_4/ OpenOwnership news release: https://www.openownership.org/en/news/global-legal-entity-ownership-data-available-in-line-with-latest-version-of-data-standard/ Mapping blog post: https://www.openownership.org/en/blog/updating-our-mapping-of-gleif-data-to-bods-to-better-capture-the-lifecycle-of-lei-data-changes/
These are sources useful for mapping work or for contextualising BO data. Fetch live documentation for precise field-level detail.
A corporate intelligence platform covering 450M+ entities from 700+ sources across 250+ jurisdictions, with 2B+ ownership and control records. Sayari applies entity resolution to link records across sources, generating possibly-same-as relationships where confidence is insufficient to fully merge. Coverage includes parent-subsidiary, shareholder, and beneficial ownership structures. Particularly strong on hard-to-access jurisdictions.
The world's largest open company database (200M+ companies). Offers four relationship types in its Relationships File/Supplement: control_statement, subsidiary, branch, share_parcel. The Relationships Supplement has 30M+ relationships from primary sources (SEC, UK Companies House, etc.) and is separately licensed from the company data. Also provides person-with-significant-control and beneficial_owner flags. The API (v0.4.8) exposes companies, officers, and relationships.
BrightQuery (founded OpenData.org) provides government-sourced corporate data on 324M organisations, 512M locations, and 1.2B contacts across 222 countries. Data is structured around three core data dictionaries: organisations, locations, and people-business relationships. Key differentiator: comprehensive reference ID crosswalks (LEI, CIK, ISIN, NPI, PermID, OpenFIGI, SAM UEI, PlaceKey, OSM ID, etc.) and corporate family/hierarchy structures. OpenData.org was
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.