180 lines
9.3 KiB
YAML
180 lines
9.3 KiB
YAML
# T-BOX AND A-BOX MIGRATION TO v2.2 — GOVERNANCE ASSIGNMENTS
|
|
# =============================================================================
|
|
# Data consumed by migrate_tbox_v2_2.py.
|
|
#
|
|
# An actor node is an ASSIGNMENT, not a person. The post is stable and carries
|
|
# the canonical name, the identifier and the domain it answers to; the person
|
|
# holding it is a value that changes. Modelled the other way round, a change of
|
|
# incumbent would move nodes and edges rather than one literal, and the same
|
|
# person covering two domains would exist twice.
|
|
# =============================================================================
|
|
|
|
meta:
|
|
from_version: "2.1"
|
|
to_version: "2.2"
|
|
namespace: "https://ontology.pernod-ricard.com/metamodel/"
|
|
instance_namespace: "https://data.pernod-ricard.com/sodh/"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# T-BOX
|
|
# -----------------------------------------------------------------------------
|
|
|
|
declare_properties:
|
|
- term: personName
|
|
kind: DatatypeProperty
|
|
domain: Actor
|
|
range: "http://www.w3.org/2001/XMLSchema#string"
|
|
comment: >
|
|
The name of the person currently holding the post. Declared on Actor rather
|
|
than on each role, since every role shares it and Actor is their smallest
|
|
common ancestor below the layer root. Held as a value rather than a node
|
|
because what changes is the person, not the assignment: the post keeps its
|
|
identifier, its domain and every edge that points at it, and a change of
|
|
holder rewrites one literal. Used on actors and nowhere else.
|
|
|
|
display_updates:
|
|
- {term: DataSteward, acronym: DST}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — RENAME
|
|
# ST is not the short form of Data Steward; DST is, and the rulebook now
|
|
# declares it.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
instance_renames:
|
|
- {from: ST_DD_04, to: DST_DD_04}
|
|
- {from: ST_DD_05, to: DST_DD_05}
|
|
- {from: ST_DD_06, to: DST_DD_06}
|
|
- {from: ST_DD_10, to: DST_DD_10}
|
|
- {from: ST_DD_16, to: DST_DD_16}
|
|
- {from: ST_DD_21, to: DST_DD_21}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — COMPLETE THE EXISTING ASSIGNMENTS
|
|
# The canonical name becomes the name of the POST. The person moves to heldBy.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
complete:
|
|
- {node: DDO_DD_04, identifier: "DDO-04", name: "Data Domain Owner", held_by: "David Carpio", domain: DD_04}
|
|
- {node: DDO_DD_05, identifier: "DDO-05", name: "Data Domain Owner", held_by: "David Carpio", domain: DD_05}
|
|
- {node: DDO_DD_06, identifier: "DDO-06", name: "Data Domain Owner", held_by: "Ludovic Cottier", domain: DD_06}
|
|
- {node: DDO_DD_10, identifier: "DDO-10", name: "Data Domain Owner", held_by: "Alberto Lupano", domain: DD_10}
|
|
- {node: DDO_DD_16, identifier: "DDO-16", name: "Data Domain Owner", held_by: "Julien Soisson", domain: DD_16}
|
|
- {node: DDO_DD_21, identifier: "DDO-21", name: "Data Domain Owner", held_by: "Vincent Meunier", domain: DD_21}
|
|
- {node: DGL_DD_04, identifier: "DGL-04", name: "Data Governance Lead", held_by: "Marie Carabin", domain: DD_04}
|
|
- {node: DGL_DD_05, identifier: "DGL-05", name: "Data Governance Lead", held_by: "Alberic Piot", domain: DD_05}
|
|
- {node: DGL_DD_06, identifier: "DGL-06", name: "Data Governance Lead", held_by: "Bastien Gourdon", domain: DD_06}
|
|
- {node: DGL_DD_10, identifier: "DGL-10", name: "Data Governance Lead", held_by: "Anas El Kesri", domain: DD_10}
|
|
- {node: DGL_DD_16, identifier: "DGL-16", name: "Data Governance Lead", held_by: "Gaelle Seret", domain: DD_16}
|
|
- {node: DGL_DD_21, identifier: "DGL-21", name: "Data Governance Lead", held_by: "Bastien Gourdon", domain: DD_21}
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — SUB-DOMAIN OWNERS, 10
|
|
# -----------------------------------------------------------------------------
|
|
|
|
create_sub_domain_owners:
|
|
- {node: SDO_SD_04_01, identifier: "SDO-04.01", held_by: "Etienne Coulon", sub_domain: SD_04_01, domain: DD_04}
|
|
- {node: SDO_SD_04_02, identifier: "SDO-04.02", held_by: "Etienne Coulon", sub_domain: SD_04_02, domain: DD_04}
|
|
- {node: SDO_SD_04_03, identifier: "SDO-04.03", held_by: "Etienne Coulon", sub_domain: SD_04_03, domain: DD_04}
|
|
- {node: SDO_SD_05_01, identifier: "SDO-05.01", held_by: "David Carpio", sub_domain: SD_05_01, domain: DD_05}
|
|
- {node: SDO_SD_06_01, identifier: "SDO-06.01", held_by: "Loic Berger", sub_domain: SD_06_01, domain: DD_06}
|
|
- {node: SDO_SD_10_01, identifier: "SDO-10.01", held_by: "Alberto Lupano", sub_domain: SD_10_01, domain: DD_10}
|
|
- {node: SDO_SD_16_01, identifier: "SDO-16.01", held_by: "Julien Soisson", sub_domain: SD_16_01, domain: DD_16}
|
|
- {node: SDO_SD_16_02, identifier: "SDO-16.02", held_by: "Julien Soisson", sub_domain: SD_16_02, domain: DD_16}
|
|
- {node: SDO_SD_16_03, identifier: "SDO-16.03", held_by: "Julien Soisson", sub_domain: SD_16_03, domain: DD_16}
|
|
- {node: SDO_SD_21_01, identifier: "SDO-21.01", held_by: "Vincent Meunier", sub_domain: SD_21_01, domain: DD_21}
|
|
|
|
sub_domain_owner_name: Data Sub Domain Owner
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — PRODUCT OWNER, 1
|
|
# -----------------------------------------------------------------------------
|
|
|
|
create_product_owners:
|
|
- {node: PO_SODH, identifier: "PO-06.01-001", held_by: "Guilherme Muller", product: DP_06_01_001, domain: DD_06}
|
|
|
|
product_owner_name: Data Product Owner
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — STEWARDS, ONE ASSIGNMENT PER BUSINESS OBJECT
|
|
# Derived from the graph rather than listed: the business objects are the source
|
|
# of truth for how many assignments exist and which domain each answers to.
|
|
# The incumbent is read from this map by domain.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
steward_holders:
|
|
DD_04: Marc Chambouleyron
|
|
DD_05: Francois Vadrouille
|
|
DD_06: Michael Flores
|
|
DD_10: Magda Kugli
|
|
DD_16: Clementine Sauries
|
|
DD_21: Alberic Piot
|
|
|
|
steward_name: Data Steward
|
|
|
|
# The six per-domain steward nodes are replaced by one per business object.
|
|
# monitoredBy is repointed from the old node to the new one, and the old node is
|
|
# withdrawn once nothing names it (EV-003).
|
|
retire_domain_stewards: true
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — GOVERN A TRANSVERSE CONCEPT
|
|
# Panel Coverage is used by four business objects through usesConcept and is the
|
|
# subject of none. A concept mobilised without an object that carries it has no
|
|
# owner, no steward and no governance chain: it is used without being governed.
|
|
# Creating the missing business object closes the chain BC -> BO -> SD -> DD,
|
|
# and the steward assignment follows automatically since assignments are derived
|
|
# from the business objects present in the graph.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
create_business_objects:
|
|
- node: BO_06_01_006
|
|
identifier: "BO-06.01-006"
|
|
name: Panel Coverage
|
|
is_about: BC_06_01_003
|
|
sub_domain: SD_06_01
|
|
domain: DD_06
|
|
# -----------------------------------------------------------------------------
|
|
# A-BOX — ownedBy AGAINST THE OLD DOMAIN-LEVEL STEWARDS
|
|
# 53 subjects declared they belonged to the per-domain steward node. That node
|
|
# disappears, so each reference is resolved rather than dropped in silence.
|
|
#
|
|
# business object -> removed. It already carries monitoredBy towards the
|
|
# same assignment, and two properties holding one fact
|
|
# are two answers to one question waiting to diverge.
|
|
# sub-domain -> repointed to its Data Sub Domain Owner, whose function
|
|
# this is; a steward had no business holding it.
|
|
# everything else -> repointed to the steward assignment of the business
|
|
# object it belongs to, followed through the graph.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
owned_by_resolution:
|
|
remove_on: [BusinessObject]
|
|
repoint_sub_domains: true
|
|
repoint_to_business_object_assignment: true
|
|
# Chains followed to reach the business object, in order. The first that
|
|
# resolves wins; anything unresolved is reported and left untouched.
|
|
chains:
|
|
- {via: isAbout, direction: inbound} # a BO is about this concept
|
|
- {via: represents, direction: outbound} # this object represents a BO
|
|
- {via: measures, direction: outbound} # a metric measures a concept, then isAbout
|
|
# -----------------------------------------------------------------------------
|
|
# COMMON
|
|
# -----------------------------------------------------------------------------
|
|
|
|
status: PUBLISHED
|
|
version: "1.0"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# SHAPES — NR-002 EXEMPTION
|
|
# -----------------------------------------------------------------------------
|
|
|
|
shape_notes:
|
|
- rule: NR-002
|
|
change: exempt descendants of Actor from the canonical-name uniqueness query
|
|
reason: >
|
|
An assignment is a post, not a catalogued object. Five steward posts in one
|
|
domain are legitimately homonymous; what tells them apart is the identifier
|
|
and the business object that names them. Applying a uniqueness rule written
|
|
for catalogued objects would force fifteen invented names for one job.
|