From 0b7d3834d2d7913a5c279ce127cb854eab11e796 Mon Sep 17 00:00:00 2001 From: Bastien Gourdon Date: Fri, 7 Aug 2026 10:31:16 +0200 Subject: [PATCH] tbox: v2.2 - polymorphisme declare sur 19 proprietes, 17 domaines poses, provenance portee par les classes concretes, GovernanceLayerObject rattachee, affectations de gouvernance completes (12 completees, 10 SDO, 1 PO, 16 stewards par objet metier), Panel Coverage gouverne. Validation SHACL sans violation bloquante --- generated/PR_TBox_Rulebook.md | 27 +- generated/PR_TBox_Rulebook.xlsx | Bin 29502 -> 30132 bytes generated/pr_metamodel_viewer.html | 2 +- generated/sodh_viewer.html | 2 +- governance/check_tbox_naming.py | 488 ++++++++++++++++ governance/logs/naming_check.json | 416 ++++++++++++++ governance/migration/assignments_v2_2.yaml | 179 ++++++ governance/migration/declarations_v2_1.yaml | 166 ++++++ .../logs/migration_v2_1_20260806T122145.json | 33 ++ .../logs/migration_v2_1_20260806T122248.json | 33 ++ .../logs/migration_v2_1_20260806T122250.json | 18 + .../logs/migration_v2_1_20260806T143417.json | 49 ++ .../logs/migration_v2_1_20260806T143503.json | 49 ++ .../logs/migration_v2_1_20260806T143507.json | 25 + .../logs/migration_v2_1_20260807T102729.json | 49 ++ .../logs/migration_v2_2_20260806T151704.json | 41 ++ .../logs/migration_v2_2_20260806T152327.json | 47 ++ .../logs/migration_v2_2_20260806T194937.json | 46 ++ .../logs/migration_v2_2_20260806T195146.json | 46 ++ .../logs/migration_v2_2_20260806T195151.json | 23 + .../logs/migration_v2_2_20260807T102151.json | 46 ++ .../logs/migration_v2_2_20260807T102159.json | 23 + .../logs/migration_v2_2_20260807T102733.json | 46 ++ governance/migration/migrate_tbox_v2_1.py | 296 ++++++++++ governance/migration/migrate_tbox_v2_2.py | 367 ++++++++++++ governance/naming_lexicon.yaml | 152 +++++ governance/rules.yaml | 72 ++- instances/sodh.ttl | 528 +++++++++++++----- ontology/pr_metamodel.ttl | 279 +++++---- 29 files changed, 3274 insertions(+), 274 deletions(-) create mode 100644 governance/check_tbox_naming.py create mode 100644 governance/logs/naming_check.json create mode 100644 governance/migration/assignments_v2_2.yaml create mode 100644 governance/migration/declarations_v2_1.yaml create mode 100644 governance/migration/logs/migration_v2_1_20260806T122145.json create mode 100644 governance/migration/logs/migration_v2_1_20260806T122248.json create mode 100644 governance/migration/logs/migration_v2_1_20260806T122250.json create mode 100644 governance/migration/logs/migration_v2_1_20260806T143417.json create mode 100644 governance/migration/logs/migration_v2_1_20260806T143503.json create mode 100644 governance/migration/logs/migration_v2_1_20260806T143507.json create mode 100644 governance/migration/logs/migration_v2_1_20260807T102729.json create mode 100644 governance/migration/logs/migration_v2_2_20260806T151704.json create mode 100644 governance/migration/logs/migration_v2_2_20260806T152327.json create mode 100644 governance/migration/logs/migration_v2_2_20260806T194937.json create mode 100644 governance/migration/logs/migration_v2_2_20260806T195146.json create mode 100644 governance/migration/logs/migration_v2_2_20260806T195151.json create mode 100644 governance/migration/logs/migration_v2_2_20260807T102151.json create mode 100644 governance/migration/logs/migration_v2_2_20260807T102159.json create mode 100644 governance/migration/logs/migration_v2_2_20260807T102733.json create mode 100644 governance/migration/migrate_tbox_v2_1.py create mode 100644 governance/migration/migrate_tbox_v2_2.py create mode 100644 governance/naming_lexicon.yaml diff --git a/generated/PR_TBox_Rulebook.md b/generated/PR_TBox_Rulebook.md index e79eadd..cce46ba 100644 --- a/generated/PR_TBox_Rulebook.md +++ b/generated/PR_TBox_Rulebook.md @@ -1,6 +1,6 @@ # Pernod Ricard Data MetaModel — T-Box Rulebook -**Version 1.2** — Draft for review — generated 2026-08-03 +**Version 1.4** — Draft for review — generated 2026-08-03 > Generated from `rules.yaml`. Do not edit this document: edit the source and regenerate (EV-007, EV-008). @@ -188,7 +188,7 @@ The IRI is identity. It is immutable in the RDF sense — changing one is a migr ## TN-009 — A relation begins with a verb -**Statement.** The local name of an object property begins with a verb, in lower case. Both the active form and the passive or participial form are admitted: a past participle is a verb in first position. No relation begins with a preposition or with a noun. +**Statement.** The local name of an object property begins with a verb, in lower case. Both the active form and the passive or participial form are admitted: a past participle is a verb in first position. An adverb qualifying that verb is transparent and may precede it. No relation begins with a preposition or with a noun. | | | |---|---| @@ -198,12 +198,12 @@ The IRI is identity. It is immutable in the RDF sense — changing one is a migr | Executor | `check_tbox_naming.py` | | Procedure | _pending_ | -**Why.** A relation reads as a verb and an attribute reads as a noun. The distinction is what lets a reader tell an edge from a field without opening the declaration. The explicit clause on participial forms is required: read literally, a verb-first rule would condemn a whole family of sound relations such as computedBy, storedIn and derivedFrom. +**Why.** A relation reads as a verb and an attribute reads as a noun. The distinction is what lets a reader tell an edge from a field without opening the declaration. Two clauses are stated rather than left implicit, because a literal reading would condemn sound relations: the participial one, which covers a whole family such as computedBy, storedIn and derivedFrom, and the adverbial one, which covers a relation whose verb is qualified rather than replaced. | From | To | Note | |---|---|---| | pr:inDatabase | pr:isInDatabase | a preposition is not a verb | -| pr:primaryLocation | pr:primarilyStoredIn | a noun is not a verb | +| pr:primaryLocation | pr:primarilyStoredIn | a noun is not a verb; the adverb is transparent and the verb follows | | pr:computedBy | pr:computedBy | participial form is conforming | ## TN-010 — The is prefix is either a copula or a predicate @@ -507,7 +507,7 @@ Nothing is left to be guessed. What a term is, what it applies to, where it sits ## TN-025 — Every property declares its domain and range -**Statement.** rdfs:domain and rdfs:range are mandatory on every property, EXCEPT where the property is deliberately polymorphic. A polymorphic property states so in its comment and has its scope declared in SHACL. Silent absence is a violation; documented absence is not. +**Statement.** rdfs:domain and rdfs:range are mandatory on every property, EXCEPT where the property is deliberately polymorphic. A polymorphic property declares pr:polymorphic true and has its scope declared in SHACL. Silent absence is a violation; declared absence is not. | | | |---|---| @@ -517,30 +517,31 @@ Nothing is left to be guessed. What a term is, what it applies to, where it sits | Executor | `check_tbox_naming.py` | | Procedure | _pending_ | -**Why.** A property with no domain cannot be targeted by any control. But some properties are polymorphic by design, their scope controlled class by class in SHACL rather than by twin properties; giving those an rdfs:domain would trigger the RDFS retyping described in TN-028. The rule therefore separates the two cases rather than demanding a domain everywhere. +**Why.** A property with no domain cannot be targeted by any control. But some properties are polymorphic by design, their scope controlled class by class in SHACL rather than by twin properties; giving those an rdfs:domain would trigger the RDFS retyping described in TN-028. The rule therefore separates the two cases rather than demanding a domain everywhere. The distinction is carried by an axiom and not by a sentence in the comment: a checker looking for a phrase in prose fails the moment someone words it differently, and what matters is declared rather than read, exactly as for abstractness. | From | To | Note | |---|---|---| -| a polymorphic property with no domain and no comment | violation | silence is indistinguishable from omission | -| a polymorphic property with no domain | conforming | scope declared in SHACL | +| a property with no domain and no declaration | violation | silence is indistinguishable from omission | +| a property with no domain, declaring pr:polymorphic true | conforming | scope declared in SHACL | -## TN-026 — Every term declares how it was authored +## TN-026 — Every concrete class declares how its instances are produced -**Statement.** pr:authoringMode is mandatory on every term. pr:harvestSource is mandatory if and only if the mode is HARVESTED. +**Statement.** Every CONCRETE CLASS declares pr:authoringMode, stating whether its instances are ASSERTED by governance or HARVESTED from a system. pr:harvestSource is mandatory if and only if the mode is HARVESTED. The declared mode agrees with the provenance axis the class descends from: a class under CapturedObject declares HARVESTED, one under DefinedObject declares ASSERTED. Nothing else carries the property: not an abstract class, not a property, not a term of the vocabulary in its own right. | | | |---|---| | Severity | **BLOCKING** | -| Applies to | class, object_property, datatype_property, annotation_property | +| Applies to | class | | Enforced at | script | | Executor | `check_tbox_naming.py` | | Procedure | _pending_ | -**Why.** Provenance decides who may edit a term and what a divergence means. A term stating where its data comes from without stating that it is harvested, or declaring itself harvested without naming a source, is half-declared in a way no control can catch. Declared symmetrically, provenance also makes a harvester specifiable from the model itself rather than from a side document. +**Why.** A term of the vocabulary is declared, always and by definition; recording that on every term would repeat one fact a hundred times and say nothing. It is the INSTANCES that have a provenance, and the class is where the model states which one: a governance object is asserted by a domain, a physical column is harvested from a system. The distinction matters because a class can be declared and describe captured things at once — CapturedObject itself is a declared term naming harvested instances, and conflating the two is what once put a harvesting mode on an abstraction. Nothing is inherited. A subclass declares its own mode rather than taking its parent's, so that the declaration is read where the instances are typed and not chased up a chain. The agreement clause is what keeps that free of contradiction: the axis says what kind of thing the class describes, the mode says how those things arrive, and a class under CapturedObject declaring ASSERTED is stating both at once. Declared this way, provenance also makes a harvester specifiable from the model itself rather than from a side document. | From | To | Note | |---|---|---| -| harvestSource present | authoringMode HARVESTED | | +| authoringMode on an abstract class | nothing | an abstraction has no instances to produce | +| a class under CapturedObject declaring ASSERTED | violation | the mode contradicts the axis | | authoringMode HARVESTED, harvestSource absent | harvestSource declared | | ## TN-027 — A concrete class has one layer and one provenance diff --git a/generated/PR_TBox_Rulebook.xlsx b/generated/PR_TBox_Rulebook.xlsx index d8b951f73242586829f56a33fc6fe8e5356390d4..cfc7d3e13c73e4391ca50edb68bcb9e65707c60c 100644 GIT binary patch delta 21753 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 diff --git a/generated/pr_metamodel_viewer.html b/generated/pr_metamodel_viewer.html index c901f38..c4a605d 100644 --- a/generated/pr_metamodel_viewer.html +++ b/generated/pr_metamodel_viewer.html @@ -204,7 +204,7 @@ footer{background:var(--navy);color:rgba(255,255,255,.5);padding:7px 20px;