tbox: v1.6 - provenance portee par les classes concretes, isAbstract declare et non plus infere, ForeignKeyConstraint devient ForeignKey, les dix classes sans rdfs:comment completees
This commit is contained in:
+120
-56
@@ -7,11 +7,33 @@
|
||||
@prefix pr: <https://ontology.pernod-ricard.com/metamodel/> .
|
||||
|
||||
#################################################################
|
||||
# PERNOD RICARD DATA META MODEL - T-Box v1.5
|
||||
# PERNOD RICARD DATA META MODEL - T-Box v1.6
|
||||
# Owner: Bastien Gourdon - Data Governance Office
|
||||
#
|
||||
# WHAT CHANGED vs v1.4
|
||||
# WHAT CHANGED vs v1.5
|
||||
# --------------------
|
||||
# A. NO LAYER CARRIES A PROVENANCE. All six layer roots are now structural:
|
||||
# they say what an object IS, never how it got here. Every concrete class
|
||||
# declares its own provenance. v1.5 had fixed this for the physical layer
|
||||
# only, which left the model saying that Ownership is Defined while
|
||||
# Physical is neither -- an asymmetry with no meaning behind it. The two
|
||||
# axes are either orthogonal or they are not.
|
||||
#
|
||||
# B. ABSTRACTNESS IS DECLARED, NOT GUESSED. isAbstract marks the classes that
|
||||
# exist only to give their specialisations a parent. A viewer was inferring
|
||||
# it from "has subclasses", which flagged Metric as abstract -- one of the
|
||||
# most instantiated classes in the model, whose only crime is having KPI
|
||||
# beneath it. Whether a class is instantiated is a modelling decision and
|
||||
# belongs in the model.
|
||||
#
|
||||
# C. ForeignKeyConstraint -> ForeignKey, SubDomainOwner labelled Data
|
||||
# Sub-Domain Owner to match Data Domain Owner, and the ten classes that
|
||||
# had no rdfs:comment now have one. Stale descriptions corrected: a Data
|
||||
# Object is stored in a Data Structure, it is no longer "materialized as a
|
||||
# Physical Relation".
|
||||
#
|
||||
# WHAT CHANGED vs v1.4 (kept for reference)
|
||||
# -----------------------------------------
|
||||
# CuratedObject -> DefinedObject, ObservedObject -> CapturedObject, in the
|
||||
# IRIs and not only in the labels. v1.4 renamed what screens showed and left
|
||||
# the terms themselves untouched, so the model said one thing and the
|
||||
@@ -219,12 +241,12 @@
|
||||
|
||||
<https://ontology.pernod-ricard.com/metamodel/>
|
||||
a owl:Ontology ;
|
||||
owl:versionIRI <https://ontology.pernod-ricard.com/metamodel/1.5> ;
|
||||
owl:priorVersion <https://ontology.pernod-ricard.com/metamodel/1.4> ;
|
||||
owl:versionIRI <https://ontology.pernod-ricard.com/metamodel/1.6> ;
|
||||
owl:priorVersion <https://ontology.pernod-ricard.com/metamodel/1.5> ;
|
||||
dcterms:title "Pernod Ricard Data Meta Model" ;
|
||||
dcterms:creator "Bastien Gourdon" ;
|
||||
dcterms:modified "2026-07-30"^^xsd:date ;
|
||||
owl:versionInfo "1.5.0-draft-2026-07-30" ;
|
||||
owl:versionInfo "1.6.0-draft-2026-07-30" ;
|
||||
rdfs:comment """OWL T-Box. Six layers (Ownership, Business, Logical, Delivery, Physical, Consumption) crossed with a provenance axis (Defined vs Captured). Defined objects are written by governance and reviewed; Captured objects are read from Snowflake, Tableau and Looker and are rebuilt, never edited. Bridge annotation properties are declared for future alignment with domain ontologies.""" .
|
||||
|
||||
|
||||
@@ -257,6 +279,10 @@ pr:harvestSource a owl:AnnotationProperty ;
|
||||
rdfs:label "harvest source" ;
|
||||
rdfs:comment "For Captured terms: the system view or API that populates this term. Documents the contract between the meta model and the harvester." .
|
||||
|
||||
pr:isAbstract a owl:AnnotationProperty ;
|
||||
rdfs:label "is abstract" ;
|
||||
rdfs:comment "True on a class that exists only to give its specialisations a common parent and a common shape, and is never instantiated. Declared rather than inferred: a viewer that guessed it from 'has subclasses' flagged Metric as abstract, one of the most instantiated classes in the model, whose only crime is having KPI beneath it. Whether a class is instantiated is a modelling decision." .
|
||||
|
||||
pr:authoringMode a owl:AnnotationProperty ;
|
||||
rdfs:label "authoring mode" ;
|
||||
rdfs:comment "Who writes this, in practice: ASSERTED (a person does), HARVESTED (a job does) or PROPOSED_CONFIRMED (a job proposes and a person accepts). Renamed from curationMode along with the classes: 'curation' belonged to the same jargon family as 'curated'." .
|
||||
@@ -269,13 +295,15 @@ pr:authoringMode a owl:AnnotationProperty ;
|
||||
pr:MetaModelObject a owl:Class ;
|
||||
rdfs:label "Meta Model Object" ;
|
||||
rdfs:comment "Anything the meta model describes. Actors are deliberately NOT Meta Model Objects." ;
|
||||
pr:hasShortLabel "Meta model object" .
|
||||
pr:hasShortLabel "Meta model object" ;
|
||||
pr:isAbstract true .
|
||||
|
||||
pr:DefinedObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Defined Object" ;
|
||||
pr:hasShortLabel "Defined" ;
|
||||
pr:authoringMode "ASSERTED" ;
|
||||
rdfs:comment "Somebody decided it. Written by governance, edited through a pull request on the domain TTL file, and subject to the full identity and lifecycle shape: identifier, name, owner, owning Data Domain, status, version." .
|
||||
rdfs:comment "Somebody decided it. Written by governance, edited through a pull request on the domain TTL file, and subject to the full identity and lifecycle shape: identifier, name, owner, owning Data Domain, status, version." ;
|
||||
pr:isAbstract true .
|
||||
|
||||
pr:CuratedObject a owl:Class ;
|
||||
rdfs:label "Curated Object (deprecated)" ;
|
||||
@@ -286,49 +314,67 @@ pr:CapturedObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Captured Object" ;
|
||||
pr:hasShortLabel "Captured" ;
|
||||
pr:authoringMode "HARVESTED" ;
|
||||
rdfs:comment "Read from a running system and rebuilt on every run. Never hand-edited. Carries sourceIdentifier, fullyQualifiedName and harvestedOn instead of declared ownership: attribution is INFERRED through the Data Element it is mapped to, never asserted on the node." .
|
||||
rdfs:comment "Read from a running system and rebuilt on every run. Never hand-edited. Carries sourceIdentifier, fullyQualifiedName and harvestedOn instead of declared ownership: attribution is INFERRED through the Data Element it is mapped to, never asserted on the node." ;
|
||||
pr:isAbstract true .
|
||||
|
||||
pr:ObservedObject a owl:Class ;
|
||||
rdfs:label "Observed Object (deprecated)" ;
|
||||
owl:deprecated true ; dcterms:isReplacedBy pr:CapturedObject ;
|
||||
rdfs:comment "v1.4 term. Renamed because 'observed' is passive and technical; 'captured' says where it came from. No instance ever named this class directly." .
|
||||
|
||||
pr:OwnershipLayerObject a owl:Class ; rdfs:subClassOf pr:DefinedObject ;
|
||||
rdfs:label "Ownership & Categorization Layer Object" .
|
||||
pr:BusinessLayerObject a owl:Class ; rdfs:subClassOf pr:DefinedObject ;
|
||||
rdfs:label "Business Layer Object" .
|
||||
pr:LogicalLayerObject a owl:Class ; rdfs:subClassOf pr:DefinedObject ;
|
||||
pr:OwnershipLayerObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Ownership & Categorization Layer Object" ;
|
||||
rdfs:comment "Who is accountable, and how the estate is categorised: domains, sub-domains, and the business objects they answer for. A layer root, so it says nothing about provenance." ;
|
||||
pr:isAbstract true ;
|
||||
pr:hasShortLabel "Ownership layer" .
|
||||
pr:BusinessLayerObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Business Layer Object" ;
|
||||
rdfs:comment "What the business means: the shared vocabulary and the measures built on it. A layer root, so it says nothing about provenance." ;
|
||||
pr:isAbstract true ;
|
||||
pr:hasShortLabel "Business layer" .
|
||||
pr:LogicalLayerObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Logical Layer Object" ;
|
||||
rdfs:comment "How the data is structured." .
|
||||
pr:DeliveryLayerObject a owl:Class ; rdfs:subClassOf pr:DefinedObject ;
|
||||
rdfs:comment "How the data is structured." ;
|
||||
pr:isAbstract true ;
|
||||
pr:hasShortLabel "Logical layer" .
|
||||
pr:DeliveryLayerObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Delivery Layer Object" ;
|
||||
rdfs:comment "What we promise, to whom, until when. A different question from how the data is structured, hence a layer of its own: version, owner, changelog, support channel, consumers to warn." .
|
||||
rdfs:comment "What we promise, to whom, until when. A different question from how the data is structured, hence a layer of its own: version, owner, changelog, support channel, consumers to warn." ;
|
||||
pr:isAbstract true ;
|
||||
pr:hasShortLabel "Delivery layer" .
|
||||
pr:PhysicalLayerObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Physical Layer Object" ;
|
||||
rdfs:comment """The one layer whose members do NOT share a provenance, which is why this class -- unlike the other five layer roots -- says nothing about it.
|
||||
rdfs:comment """What actually runs: the systems, containers, structures, columns, keys and code that hold the data.
|
||||
|
||||
Like every layer root, this class says nothing about provenance -- and this layer is the one that shows why that matters.
|
||||
|
||||
A System is DEFINED: somebody decides that MDM Product is a system worth tracking, and names it. Nobody harvests the list of systems that matter. Everything beneath a system is CAPTURED: databases, schemas, data structures, fields, keys and transformations are read from what is running.
|
||||
|
||||
Until v1.4 this class was itself declared a kind of Captured Object, which made every physical class captured by construction and put the five seeded Systems in breach of the harvest rules. The two axes are meant to be orthogonal; that shortcut collapsed them.""" .
|
||||
pr:ConsumptionLayerObject a owl:Class ; rdfs:subClassOf pr:CapturedObject ;
|
||||
Until v1.4 this class was itself declared a kind of Captured Object, which made every physical class captured by construction and put the five seeded Systems in breach of the harvest rules. v1.6 extended the correction to all six layers: a layer says what an object IS, never how it got here.""" ;
|
||||
pr:isAbstract true ;
|
||||
pr:hasShortLabel "Physical layer" .
|
||||
pr:ConsumptionLayerObject a owl:Class ; rdfs:subClassOf pr:MetaModelObject ;
|
||||
rdfs:label "Consumption Layer Object" ;
|
||||
rdfs:comment "The BI estate. Separate from Physical because BI assets have their own lifecycle and their own owner: a dashboard belongs to its author, not to the Data Domain that owns the underlying data." ;
|
||||
pr:hasShortLabel "Consumption" .
|
||||
pr:hasShortLabel "Consumption" ;
|
||||
pr:isAbstract true .
|
||||
|
||||
|
||||
#################################################################
|
||||
# LAYER 1 - OWNERSHIP & CATEGORIZATION (defined)
|
||||
#################################################################
|
||||
|
||||
pr:DataDomain a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject ;
|
||||
pr:DataDomain a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Data Domain" ;
|
||||
pr:hasShortLabel "Domain" .
|
||||
pr:hasShortLabel "Domain" ;
|
||||
rdfs:comment "A durable area of the business that owns the meaning of its data: Sales Performance, Product & Material, Financial Performance. It is the unit of accountability -- one owner, one governance lead -- and the top of the categorisation tree. Domains are stable; the projects and systems inside them are not." .
|
||||
|
||||
pr:SubDomain a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject ;
|
||||
pr:SubDomain a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Sub-Domain" ;
|
||||
pr:hasShortLabel "Sub-domain" .
|
||||
pr:hasShortLabel "Sub-domain" ;
|
||||
rdfs:comment "A coherent slice of a Data Domain, grouping the business objects that belong together: Sell Out inside Sales Performance, Fiscal Calendar inside Financial Performance. It exists so that governance can be delegated and reviewed at a size a person can hold in their head." .
|
||||
|
||||
pr:BusinessObject a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject ;
|
||||
pr:BusinessObject a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Business Object" ;
|
||||
rdfs:comment "The single anchor of accountability, which is why it stays in the Ownership layer: it is the one object where a steward is declared, and Data Objects and Data Elements inherit from it. It carries NO business definition of its own -- its meaning comes from its aboutConcept. What it does carry is a perimeter: the subject it is about, and the notions needed to read it." ;
|
||||
pr:hasShortLabel "Business object" .
|
||||
@@ -338,12 +384,12 @@ pr:BusinessObject a owl:Class ; rdfs:subClassOf pr:OwnershipLayerObject ;
|
||||
# LAYER 2 - BUSINESS (defined)
|
||||
#################################################################
|
||||
|
||||
pr:BusinessConcept a owl:Class ; rdfs:subClassOf pr:BusinessLayerObject ;
|
||||
pr:BusinessConcept a owl:Class ; rdfs:subClassOf pr:BusinessLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Business Concept" ;
|
||||
rdfs:comment "A shared business notion WITHOUT a formula. The presence of a formula is the sole discriminator against Metric (rule BR-003)." ;
|
||||
pr:hasShortLabel "Business concept" .
|
||||
|
||||
pr:Metric a owl:Class ; rdfs:subClassOf pr:BusinessLayerObject ;
|
||||
pr:Metric a owl:Class ; rdfs:subClassOf pr:BusinessLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Metric" ;
|
||||
rdfs:comment "A quantifiable measurement WITH a formula, a unit and a grain. Under BR-013 a Metric carries the harmonised CALCULATION RULE; variants that differ only by analysis context are Data Elements linked back via computedBy." ;
|
||||
pr:hasShortLabel "Metric" .
|
||||
@@ -358,12 +404,12 @@ pr:KPI a owl:Class ; rdfs:subClassOf pr:Metric ;
|
||||
# LAYER 3 - LOGICAL (defined)
|
||||
#################################################################
|
||||
|
||||
pr:DataObject a owl:Class ; rdfs:subClassOf pr:LogicalLayerObject ;
|
||||
pr:DataObject a owl:Class ; rdfs:subClassOf pr:LogicalLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Data Object" ;
|
||||
rdfs:comment "The pivot: represents exactly one Business Object, is composed of Data Elements, and is materialized as one or more Physical Relations. The single junction between governance and technology." ;
|
||||
rdfs:comment "The pivot of the whole model: it represents exactly one Business Object, groups the Data Elements that make it up, and is stored in one or more Data Structures. The single junction between what governance defines and what actually runs -- everything upstream is meaning, everything downstream is machinery." ;
|
||||
pr:hasShortLabel "Data object" .
|
||||
|
||||
pr:DataElement a owl:Class ; rdfs:subClassOf pr:LogicalLayerObject ;
|
||||
pr:DataElement a owl:Class ; rdfs:subClassOf pr:LogicalLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Data Element" ;
|
||||
pr:authoringMode "PROPOSED_CONFIRMED" ;
|
||||
rdfs:comment "The finest defined unit. Its mapping to a physical Field is the ONLY place where the defined graph and the captured graph meet: proposed automatically by name and type matching, confirmed by a Data Steward." ;
|
||||
@@ -380,17 +426,17 @@ pr:DataAsset a owl:Class ; rdfs:subClassOf pr:LogicalLayerObject ;
|
||||
# LAYER 4 - DELIVERY (defined)
|
||||
#################################################################
|
||||
|
||||
pr:DataProduct a owl:Class ; rdfs:subClassOf pr:DeliveryLayerObject ;
|
||||
pr:DataProduct a owl:Class ; rdfs:subClassOf pr:DeliveryLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Data Product" ;
|
||||
rdfs:comment "The unit of delivery: what carries a version number, an owner, a changelog, a support channel and a list of consumers to warn. It has no single technical counterpart, and should not: physically it often lands on a Snowflake schema or a dbt project, but that is not what defines it. Operated by exactly one Sub-Domain -- it is a consumable, and there must be no ambiguity about who runs it. Candidate alignment: dcat:Dataset / DPROD." ;
|
||||
pr:hasShortLabel "Data product" .
|
||||
|
||||
pr:DataInterface a owl:Class ; rdfs:subClassOf pr:DeliveryLayerObject ;
|
||||
pr:DataInterface a owl:Class ; rdfs:subClassOf pr:DeliveryLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Data Interface" ;
|
||||
rdfs:comment "The channel through which a consumer actually gets the data: a Snowflake secure share or listing, a consumption schema with its grants, a file extract to a panel partner, an API or reverse-ETL feed. Not a Data Object (that is structure) and not a BI Data Source (that is one consumer among others). Verifiable: a grant, a share or an endpoint either exists or it does not. The output port in data-mesh terms." ;
|
||||
pr:hasShortLabel "Data interface" .
|
||||
|
||||
pr:DataContract a owl:Class ; rdfs:subClassOf pr:DeliveryLayerObject ;
|
||||
pr:DataContract a owl:Class ; rdfs:subClassOf pr:DeliveryLayerObject , pr:DefinedObject ;
|
||||
rdfs:label "Data Contract" ;
|
||||
rdfs:comment "The service commitment attached to a Data Product: schema, freshness, quality thresholds, support, breaking-change notice period. Candidate alignment: ODCS (Bitol)." ;
|
||||
pr:hasShortLabel "Data contract" .
|
||||
@@ -409,12 +455,14 @@ pr:System a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:DefinedObjec
|
||||
pr:Database a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "Database" ;
|
||||
pr:harvestSource "SNOWFLAKE.INFORMATION_SCHEMA.DATABASES" ;
|
||||
pr:hasShortLabel "Database" .
|
||||
pr:hasShortLabel "Database" ;
|
||||
rdfs:comment "The top container of a storage engine: a Snowflake database, a Databricks catalog, a BigQuery project. Named differently by every vendor, which is why the class carries the generic name and the vendor word lives in the harvest annotation." .
|
||||
|
||||
pr:Schema a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "Schema" ;
|
||||
pr:harvestSource "SNOWFLAKE.INFORMATION_SCHEMA.SCHEMATA" ;
|
||||
pr:hasShortLabel "Schema" .
|
||||
pr:hasShortLabel "Schema" ;
|
||||
rdfs:comment "The namespace grouping structures inside a database. Optional on purpose: Neo4j has no schema and BigQuery calls the level a dataset, so nothing in the shapes may require it." .
|
||||
|
||||
pr:DataStructure a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "Data Structure" ;
|
||||
@@ -433,7 +481,8 @@ EXTENSION POINT for non-tabular storage. Nothing at Pernod Ricard is non-tabular
|
||||
pr:BaseTable rdfs:subClassOf pr:Dataset . # instead of DataStructure
|
||||
pr:inSchema rdfs:domain pr:Dataset . # instead of nothing
|
||||
|
||||
Existing BaseTable assertions stay DataStructure by entailment, every shape targeting DataStructure keeps working, and storedIn does not move. The extension point is paid once; the extension is paid when it arrives.""" .
|
||||
Existing BaseTable assertions stay DataStructure by entailment, every shape targeting DataStructure keeps working, and storedIn does not move. The extension point is paid once; the extension is paid when it arrives.""" ;
|
||||
pr:isAbstract true .
|
||||
|
||||
pr:PhysicalRelation a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "Physical Relation (deprecated)" ;
|
||||
@@ -441,7 +490,8 @@ pr:PhysicalRelation a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:Ca
|
||||
|
||||
pr:BaseTable a owl:Class ; rdfs:subClassOf pr:DataStructure ;
|
||||
rdfs:label "Base Table" ;
|
||||
pr:hasShortLabel "Base table" .
|
||||
pr:hasShortLabel "Base table" ;
|
||||
rdfs:comment "A structure that physically holds its rows, as opposed to one that derives them. The common case in a warehouse Gold layer, and where impact analysis usually bottoms out." .
|
||||
|
||||
pr:View a owl:Class ; rdfs:subClassOf pr:DataStructure ;
|
||||
rdfs:label "View" ;
|
||||
@@ -467,13 +517,23 @@ pr:Field a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObjec
|
||||
pr:KeyConstraint a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "Key Constraint" ;
|
||||
pr:harvestSource "SNOWFLAKE.INFORMATION_SCHEMA.TABLE_CONSTRAINTS + KEY_COLUMN_USAGE" ;
|
||||
rdfs:comment "Gives foreign keys a home. Rule OW-006 says an FK is not a Data Element - true, but it still needs somewhere to live, and it lets the asserted DataObject-references-DataObject edge be checked against reality." .
|
||||
rdfs:comment "Gives foreign keys a home. Rule OW-006 says an FK is not a Data Element - true, but it still needs somewhere to live, and it lets the asserted DataObject-references-DataObject edge be checked against reality." ;
|
||||
pr:isAbstract true ;
|
||||
pr:hasShortLabel "Key constraint" .
|
||||
|
||||
pr:PrimaryKey a owl:Class ; rdfs:subClassOf pr:KeyConstraint ;
|
||||
rdfs:label "Primary Key" .
|
||||
rdfs:label "Primary Key" ;
|
||||
rdfs:comment "The column or set of columns whose values make a row unique. Once harvested it makes a declared grain checkable: a hasGrainElement that does not match the real key is an automatic finding." ;
|
||||
pr:hasShortLabel "Primary key" .
|
||||
|
||||
pr:ForeignKeyConstraint a owl:Class ; rdfs:subClassOf pr:KeyConstraint ;
|
||||
rdfs:label "Foreign Key Constraint" .
|
||||
pr:ForeignKey a owl:Class ; rdfs:subClassOf pr:KeyConstraint ;
|
||||
rdfs:label "Foreign Key" ;
|
||||
pr:hasShortLabel "Foreign key" ;
|
||||
rdfs:comment "A column, or set of columns, whose values must exist in another structure. Rule OW-006 keeps it out of the Data Elements -- it carries no business notion of its own, it is joining plumbing -- but it still needs somewhere to live, and here it makes the asserted qualifiedBy between Data Objects checkable against what the warehouse really enforces." .
|
||||
|
||||
pr:ForeignKeyConstraint a owl:Class ;
|
||||
rdfs:label "Foreign Key Constraint (deprecated)" ;
|
||||
owl:deprecated true ; dcterms:isReplacedBy pr:ForeignKey .
|
||||
|
||||
pr:Transformation a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:CapturedObject , prov:Activity ;
|
||||
rdfs:label "Transformation" ;
|
||||
@@ -486,24 +546,25 @@ pr:Transformation a owl:Class ; rdfs:subClassOf pr:PhysicalLayerObject , pr:Capt
|
||||
# LAYER 6 - CONSUMPTION (captured)
|
||||
#################################################################
|
||||
|
||||
pr:BIWorkspace a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject ;
|
||||
pr:BIWorkspace a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "BI Workspace" ;
|
||||
pr:harvestSource "Tableau Metadata API (Project/Site) ; Looker API (Model)" ;
|
||||
pr:hasShortLabel "BI workspace" .
|
||||
pr:hasShortLabel "BI workspace" ;
|
||||
rdfs:comment "The container a BI tool organises its content in: a Tableau project or site, a Looker model. Useful mainly for attribution -- it is where you look to find who publishes what." .
|
||||
|
||||
pr:BIDataSource a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject ;
|
||||
pr:BIDataSource a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "BI Data Source" ;
|
||||
pr:harvestSource "Tableau Published Datasource ; Looker Explore" ;
|
||||
rdfs:comment "The semantic surface a report is built on. This is where BI meets the warehouse." ;
|
||||
pr:hasShortLabel "BI data source" .
|
||||
|
||||
pr:BIField a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject ;
|
||||
pr:BIField a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "BI Field" ;
|
||||
pr:harvestSource "Tableau calculated fields ; LookML measures and dimensions" ;
|
||||
rdfs:comment "A field as a business user sees it. exposesMetric is what turns a certified Metric from a definition on paper into something measurable against the real BI estate." ;
|
||||
pr:hasShortLabel "BI field" .
|
||||
|
||||
pr:BIReport a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject ;
|
||||
pr:BIReport a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject , pr:CapturedObject ;
|
||||
rdfs:label "BI Report" ;
|
||||
pr:harvestSource "Tableau Workbook/Sheet ; Looker Look/Dashboard" ;
|
||||
rdfs:comment "What a Data Governance Lead actually cares about in an impact analysis: not that a column changed, but which reports break and who to warn." ;
|
||||
@@ -516,17 +577,18 @@ pr:BIReport a owl:Class ; rdfs:subClassOf pr:ConsumptionLayerObject ;
|
||||
|
||||
pr:Actor a owl:Class ; rdfs:label "Actor" ;
|
||||
rdfs:comment "A person or a team. Deliberately NOT a MetaModelObject: people are not subject to ownership and lifecycle rules." ;
|
||||
pr:hasShortLabel "Actor" .
|
||||
pr:hasShortLabel "Actor" ;
|
||||
pr:isAbstract true .
|
||||
|
||||
pr:DataDomainOwner a owl:Class ; rdfs:subClassOf pr:Actor ;
|
||||
rdfs:label "Data Domain Owner" ;
|
||||
rdfs:comment "Accountable for a Data Domain. Exactly one per domain." ;
|
||||
pr:hasShortLabel "Domain owner" .
|
||||
pr:hasShortLabel "Data domain owner" .
|
||||
|
||||
pr:SubDomainOwner a owl:Class ; rdfs:subClassOf pr:Actor ;
|
||||
rdfs:label "Sub-Domain Owner" ;
|
||||
rdfs:comment "Accountable for a Sub-Domain. Exactly one per sub-domain." ;
|
||||
pr:hasShortLabel "Sub-domain owner" .
|
||||
rdfs:label "Data Sub-Domain Owner" ;
|
||||
rdfs:comment "Accountable for a Sub-Domain, exactly one per sub-domain. Named to match Data Domain Owner: the two roles are the same responsibility at two levels of the tree, and calling one 'Data Domain Owner' and the other 'Sub-Domain Owner' suggested a difference that does not exist." ;
|
||||
pr:hasShortLabel "Data sub-domain owner" .
|
||||
|
||||
pr:DataGovernanceLead a owl:Class ; rdfs:subClassOf pr:Actor ;
|
||||
rdfs:label "Data Governance Lead" ;
|
||||
@@ -549,7 +611,8 @@ pr:DataSteward a owl:Class ; rdfs:subClassOf pr:Actor ;
|
||||
# CONTROLLED VOCABULARIES
|
||||
#################################################################
|
||||
|
||||
pr:ActivationStatus a owl:Class ; rdfs:label "Activation Status" .
|
||||
pr:ActivationStatus a owl:Class ; rdfs:label "Activation Status" ;
|
||||
rdfs:comment "How far a Data Domain has gone in adopting the governance framework: Not Activated, Light Activation, Full Activation. A statement of maturity, not of quality." .
|
||||
pr:NotActivated a pr:ActivationStatus ; rdfs:label "Not Activated" .
|
||||
pr:LightActivation a pr:ActivationStatus ; rdfs:label "Light Activation" .
|
||||
pr:FullActivation a pr:ActivationStatus ; rdfs:label "Full Activation" .
|
||||
@@ -560,7 +623,8 @@ pr:Development a pr:Environment ; rdfs:label "Development" .
|
||||
pr:UserAcceptance a pr:Environment ; rdfs:label "User Acceptance" .
|
||||
pr:Production a pr:Environment ; rdfs:label "Production" .
|
||||
|
||||
pr:SystemType a owl:Class ; rdfs:label "System Type" .
|
||||
pr:SystemType a owl:Class ; rdfs:label "System Type" ;
|
||||
rdfs:comment "What kind of system this is -- source application, master data system, data platform, BI tool, external provider. Coarse on purpose: it exists to group systems in a view, not to model them." .
|
||||
pr:SourceApplication a pr:SystemType ; rdfs:label "Source Application" .
|
||||
pr:MasterDataSystem a pr:SystemType ; rdfs:label "Master Data System" .
|
||||
pr:DataPlatform a pr:SystemType ; rdfs:label "Data Platform" .
|
||||
@@ -802,11 +866,11 @@ pr:constrainsField a owl:ObjectProperty ;
|
||||
|
||||
pr:fromField a owl:ObjectProperty ;
|
||||
rdfs:label "from field" ;
|
||||
rdfs:domain pr:ForeignKeyConstraint ; rdfs:range pr:Field .
|
||||
rdfs:domain pr:ForeignKey ; rdfs:range pr:Field .
|
||||
|
||||
pr:toField a owl:ObjectProperty ;
|
||||
rdfs:label "to field" ;
|
||||
rdfs:domain pr:ForeignKeyConstraint ; rdfs:range pr:Field .
|
||||
rdfs:domain pr:ForeignKey ; rdfs:range pr:Field .
|
||||
|
||||
pr:consumes a owl:ObjectProperty ;
|
||||
rdfs:subPropertyOf prov:used ;
|
||||
@@ -1044,7 +1108,7 @@ pr:hasExpression a owl:DatatypeProperty ; rdfs:label "BI expression" ; rdfs:rang
|
||||
[] a owl:AllDisjointClasses ; owl:members (
|
||||
pr:BaseTable pr:View pr:ExternalTable ) .
|
||||
|
||||
[] a owl:AllDisjointClasses ; owl:members ( pr:PrimaryKey pr:ForeignKeyConstraint ) .
|
||||
[] a owl:AllDisjointClasses ; owl:members ( pr:PrimaryKey pr:ForeignKey ) .
|
||||
|
||||
[] a owl:AllDisjointClasses ; owl:members (
|
||||
pr:BIWorkspace pr:BIDataSource pr:BIField pr:BIReport ) .
|
||||
|
||||
Reference in New Issue
Block a user