Skip to content

Latest commit

 

History

History
316 lines (298 loc) · 6.65 KB

spec.md

File metadata and controls

316 lines (298 loc) · 6.65 KB

BODS Visualiser Specification

This document outlines the functionality and requirements of the BODS Visualiser.

Refer to the full BODS documentation for more information (and the associated github repository).

Data requirements

The visualiser requires JSON data with a minimum set of data fields to produce a directed graph. It is not necessary for the supplied JSON data to be valid BODS data, but it must meet these minimum requirements.

This is not a full schema. The following tables represent the opinionated requirements of the visualiser. Any schema fields that are not present in the tables below are not currently used in the generation of graphs by the visualiser tool and will be ignored.

Edges

Edges are drawn using BODS (or BODS-like) ownership or control statements

Field Required Notes
statementID Yes A unique ID for this statement
statementType Yes Must be "ownershipOrControlStatement" to generate edge
subject Yes This is the connecting node and is required
subject.describedByPersonStatement (Yes) Must contain a `statementID` from a person node or an entity node in the dataset
subject.describedByEntityStatement (Yes) Must contain a `statementID` from a person node or an entity node in the dataset
interestedParty No Creates an unknown node if object is empty (can contain either describedByPersonStatement or describedByEntityStatement)
interestedParty.describedByPersonStatement No Either person or entity should be supplied otherwise unknown is assumed
interestedParty.describedByEntityStatement No Either person or entity should be supplied otherwise unknown is assumed
interests No "Interest details unknown" label applied if empty array
interests.type No No edge drawn if missing. Only shareholding or votingRights shown
interests.interestLevel (BODS v0.2)/interests.directOrIndirect (BODS v0.3) No Direct interests are shown as solid lines, indirect or unknown are shown as dotted lines
interests.share No No labels applied if this field is missing
interests.share.min No Used to calculate a min - max range
interests.share.max No Used to calculate a min - max range
interests.share.exact No Takes precedence over min and max values

Person Nodes

Person nodes are drawn using BODS (or BODS-like) person statements

Field Required Notes
statementID Yes A unique ID for this node
StatementType Yes Must be "personStatement" to generate person node
names No Unknown person will be used if this data is missing. The name types will be used in the following order: 'individual', 'transliteration', 'alternative', 'birth', 'translation', 'former'. Unnamed person will be used if any specific name data is missing.
names.fullName No This field takes precedence
names.givenName No The name is a join of [givenName, patronymicName, familyName] if fullName is omitted
names.patronymicName No The name is a join of [givenName, patronymicName, familyName] if fullName is omitted
names.familyName No The name is a join of [givenName, patronymicName, familyName] if fullName is omitted
personType No Unknown person will be assumed if the personType is missing.
nationalities No No flags will be drawn if these data are missing. The visualiser only uses the first nationality in the nationalities array.
nationalities.code No No flag will be drawn if the country code is missing. The visualiser only uses the first nationality in the nationalities array.

Entity Nodes

Entity nodes are drawn using BODS (or BODS-like) entity statements.

Field Required Notes
statementID Yes Unique ID for this node
statementType Yes Must be 'entityStatement' for entity node
name No No label shown if missing
entityType No Assumes unknown node type when entityType is missing
publicListing No Assumes entity is not listed if this field is missing
incorporatedInJurisdiction (BODS v0.2)/jurisdiction (BODS v0.3) No No flags are drawn if this field is missing.
jurisdiction.code No No flags are drawn if this field is missing.