The Data Usage and Processing Lineage Ontology connects what processing was intended, what processing occurred, and which conclusions about the resulting data are supported by evidence. It enables downstream data classifications to be traced through concrete processing lineage to the classifications and evidence on which they depend.

This ontology reuses DPV for processing and measure categories, PROV-O for execution history, and the Inferal Data Classification Ontology for classification records. It adds the terms needed to relate abstract contracts, actual data use and transformation, classification effects, lineage coverage, and evidence-backed assessments without treating any one of those as proof of another.

This is an unofficial 0.1 Editor's Draft maintained in the Inferal ontology repository. Public terms are drafts until release, but their IRIs are designed for stable publication under the Inferal ontology namespace.

Feedback should be sent to contact@inferal.com.

Introduction

Classification does not stop when data moves

A classification system can state that a column contains email addresses and can record how that classification was detected or reviewed. Once the column is copied, hashed, aggregated, joined, encrypted, transmitted, or used as a filter, classification provenance alone cannot explain the downstream result. The source classification remains known, but there is no formal path through the processing event to a classification of the output.

Consider a customer email column classified as personal data. A scheduled process applies a keyed hash and writes tokens to an analytics table. The output is no longer a literal email address, but it can still single out the same customers and may remain linkable by a party holding the key. A useful governance record must answer more than “what produced this table?” It must distinguish what the process was designed to do, what it actually did, which source classifications contributed, whether lineage is complete, what classification effect was observed, and whether the claimed measure was assessed as sufficient in the relevant context.

Intent, execution, and evaluation

This ontology connects three related layers without collapsing them:

LayerWhat it describesTypical questions
Intent Processing specifications, policies, ports, constraints, and expected classification impacts. What data categories may enter? What processing and result were expected?
Execution Actual processing activities, fixed-aspect input and output entities, port bindings, and direct or indirect lineage. What occurred? Which concrete data was used, generated, or influential?
Evaluation Observed impacts, propagated classifications, coverage, compatibility, conformance, and mitigation assessments. What may be concluded, in which context, with what evidence and remaining uncertainty?
  1. Intent

    Processing specification
    • ports and classification constraints
    • expected classification impacts
  2. Execution

    Processing activity
    • used and generated data
    • observed direct and indirect lineage
  3. Evaluation

    Propagation and assessment activities
    • classifications and assessment evidence
    • reviewed conclusions and stated uncertainty
A specification describes expected processing. An activity records an execution. Propagation and assessment activities establish evidence-backed conclusions about that execution and its outputs.

The same model can therefore be used prospectively over categories and retrospectively over concrete data. A category-level specification is not itself an execution. Instead, a runtime activity can realize the specification and bind concrete entity versions to its ports. Later assessments can compare the execution with the contract and evaluate the resulting classification and mitigation claims.

What is reused and what is added

FoundationRole in the model
PROV-O [[PROVO]]Activities, entities, agents, plans, usage, generation, derivation, and assertion provenance.
DPV [[DPV]]Categories of data, processing, purpose, and technical or organisational measures.
Inferal Data Classification OntologyClassification assertions, status, sensitivity, context, evidence, and review workflow.
This ontologyPorts and category contracts, concrete bindings, element-level influence, expected and observed impacts, lineage coverage, and evidence-bearing processing assessments.

Five boundaries limit unsupported conclusions

These boundaries make conservative inference possible. Missing facts do not prove absence, an activity label does not prove anonymisation, and structural validation does not prove that a represented claim is true.

How to read this specification

Abstract contracts and policies describe intended processing over categories. Runtime provenance describes concrete executions and data lineage. Classification impacts and mitigation sections describe how effects and obligations are represented. Assessment, coverage, and validation sections define the evidence boundaries for operational conclusions. The term reference collects the public vocabulary after those concepts have been introduced.

This specification uses the key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, and MAY as described by BCP 14 when, and only when, they appear in all capitals.

A data graph conforms to the base vocabulary when it uses these terms according to their RDFS semantics and the normative requirements in this document. A graph conforms to the operational profile when it also validates against the applicable SHACL shapes with RDFS inference and the imported ontology context. SHACL conformance does not prove that a processing claim is true; it proves only that the represented claim is structurally consistent with the profile.

Namespace

Namespace
https://ontology.inferal.com/modules/data-usage-processing-lineage/
Preferred prefix
duplo

The module uses a descriptive namespace rather than a prefix-derived namespace. The compact duplo: prefix is only an authoring convenience; published term IRIs continue to explain their subject even when viewed without prefix declarations.

Scope

This ontology is in scope for:

This ontology is not intended to:

Competency questions

The vocabulary and its reference operational behavior are designed to answer:

  1. Which source entities and elements directly contributed values to an output?
  2. Which elements indirectly influenced an output through joins, filters, groups, sorts, windows, or conditions?
  3. Which upstream classifications are reachable from a downstream classification?
  4. Is an apparent lineage root a complete source or merely the oldest known node?
  5. Which processing specifications can accept a concretely classified data element?
  6. Which plan and port roles governed a particular activity?
  7. Does an execution have every input and output binding expected by its specification?
  8. What classification change did a specification expect?
  9. What classification change was observed for a concrete execution?
  10. Which expected or observed impacts still require review?
  11. Which processing activities violate a category-level policy in the same context?
  12. Which mitigation was required, which measure was applied, and was that application assessed as sufficient?
  13. Which runs have partial, unknown, or unstated lineage, and independently which are positively source-free with respect to data inputs?
  14. Can a downstream candidate classification be materialized without prematurely confirming it?
  15. Can a compact mitigation hook be expanded into a qualified, traceable requirement?

Design principles and decisions

Separate data, intent, and assertion provenance

This ontology models three related but non-identical graphs. A processing activity generates data. A specification describes intended behavior. A classification or assessment activity generates an assertion. A consumer MUST NOT collapse these resources merely because they concern the same pipeline step.

Data provenance

Input entity
used by
Processing activity
generates
Output entity

Intent

Processing specification
defines
Input and output ports
referenced by
Expected classification impact

Assertion provenance

Source classification
used by
Propagation activity
generates
Result classification
The three graphs can refer to the same pipeline step, but their entities and activities have different meanings and MUST remain distinct.

Categories constrain roles; they are not runtime inputs

A data category such as pd:EmailAddress is referenced by a classification constraint. It MUST NOT be used as though it were the concrete email column consumed by an activity. Similarly, category transitions MUST NOT be represented with prov:wasDerivedFrom between ontology classes. Provenance derivation connects entities; classification impacts connect category descriptions.

Never model classification subtraction as missing data

RDF and OWL are open-world and monotonic. Removing or omitting an email-category triple cannot prove that a transformed output is not an email address. This ontology represents replacement or suppression as an explicit impact and generates a separate output classification. The SHACL profile requires suppression and unknown impacts to enter review.

Use fixed-aspect entity versions

PROV entities have fixed aspects [[PROVO]]. Mutable logical names such as “customers” or “current export” therefore do not provide sufficient identity for runtime provenance. The vocabulary introduces snapshots and element versions; logical in-place modification generates a new version and can invalidate the old one. PROV event ordering remains applicable [[PROVCONSTRAINTS]].

Separate structure, classification, and protection state

A field can remain xsd:string while changing from an email address to a pseudonymous token. Encryption can change representation and exposure without changing the underlying personal-data category. Ports therefore reference structural shapes separately from DPV data categories and mitigation requirements.

Use extensible individuals for controlled values

ImpactKind, AssessmentOutcome, ConformanceOutcome, MitigationOutcome, MitigationScope, LineageCoverage, and DataOriginKind are value-space classes whose instances are used as object-property values. This deliberately permits compatible extensions without changing a property's range. They are not modeled as literals because each value needs a stable IRI, label, definition, and possible future mapping. This ontology does not close these classes with an OWL enumeration. The operational SHACL profile requires named IRI members of the appropriate value-space class; a local profile may use sh:in when a deployment needs a closed list.

Reuse and non-reuse decisions

PROV-O
Imported for entities, activities, plans, roles, usage, generation, derivation, qualified influences, associations, agents, time, and version-aware provenance [[PROVO]]. This ontology does not redefine those relations.
DPV
Imported for data, processing, sensitivity, and technical or organisational measure categories [[DPV]]. Its properties reference DPV processing categories instead of creating a parallel taxonomy.
Inferal Data Classification
Imported for addressable data elements, classification records, workflow status, sensitivity, context, and compact policy hooks.
Inferal Confidence
Imported for optional scale-aware confidence assessments on assessment conclusions.
P-Plan
Not imported. P-Plan demonstrates a useful plan/step/variable to execution correspondence pattern [[PPLAN]], but its scientific workflow scope and published non-commercial share-alike license make a small PROV-aligned local vocabulary preferable. A separate published mapping records directional compatible terms, confidence, and loss without claiming equivalence.
OpenLineage
Not imported as an ontology. Its direct and indirect column lineage distinction informed the element-lineage relations [[OPENLINEAGE]]. A separate published mapping records how OpenLineage facets can be projected into this vocabulary and where information is lost.

Reuse metadata records the source, license, retrieval date, and reason for each imported ontology.

Authorization is modeled here as a policy concern rather than a service capability. When a classification triggers a processing policy, that policy can carry reified DPV permissions binding a data target, a processing operation, an active role or entity, and a purpose or context. This keeps authorization distinct from Data Access, which describes provider capability, and from Authentication, which describes credential presentation. A permission supplements a data element's contextual sensitivity; it does not replace it.

The operational profile validates every reified permission linked by dpv:hasPermission. It MUST be an IRI typed dpv:Permission, identify data, processing, and an active entity or role, and identify at least one IRI purpose or context. The profile permits multiple values for each facet so that a permission can express a complete scope without reducing it to a single statement.

Abstract processing contracts

Specifications and plans

A duplo:ProcessingSpecification is an abstract prov:Plan. It MUST declare at least one DPV processing category and at least one input or output port under the operational profile. A specification MAY be source-free and have only outputs, or use-only and have only inputs.

A specification, activity, policy, or mitigation requirement uses at most one bundled classification context in the operational profile. Reference compatibility evaluation uses exact context IRI identity by default. Unequal contexts require a positive, non-conflicted compatibility assessment covering every facet declared by the target resource. Alternatives and conjunctions for local contract resources are represented by distinct bundled context resources, not by several context property values.

A duplo:ProcessingPlan is a versioned deployable specification. It MUST identify at least one implemented abstract specification. A concrete plan SHOULD declare its own plan-scoped ports rather than reusing ports from the generic specification. Each concrete port MUST use duplo:refinesPort to identify the abstract input or output port it implements so conformance checks can assess the plan/specification boundary. An execution SHOULD identify the adopted plan through a qualified PROV association and prov:hadPlan.

Ports, roles, and bindings

A duplo:DataPort is a plan-scoped prov:Role. An duplo:InputPort describes a used entity, and an duplo:OutputPort describes a generated entity. Input and output ports are disjoint in the OWL addendum. An in-place logical update MUST bind old and new entity versions to separate input and output ports.

A duplo:DataInputPort marks a data-bearing source, including a source that influences joins, filters, groups, sorts, windows, or conditions. An duplo:AuxiliaryInputPort marks a non-data dependency such as a configuration, model, executable plan, key reference, or public parameter. These subclasses are disjoint. Every port MUST belong to exactly one specification under the operational profile.

Runtime binding uses the standard PROV qualification pattern. A usage cites the input entity and has the input port as its role. A generation cites the activity and has the output port as its role. This preserves compatibility with generic PROV consumers.

A runtime input or output role used to evaluate a realized contract MUST be owned by that realized specification. Likewise, every port on an expected impact MUST be owned by the one specification that declares the impact. This prevents unrelated contracts from being cross-wired.

Classification and structural constraints

A duplo:ClassificationConstraint declares expected category, workflow status, sensitivity, or named structural-shape conditions for a port. It MUST constrain at least one dimension. Multiple requiresDataCategory values are conjunctive; alternative semantics require a separate profile or explicit alternative grouping.

duplo:requiresDataCategory points to a DPV-compatible data category. duplo:requiresClassificationStatus identifies acceptable workflow status. duplo:requiresSensitivityLevel is an exact expected sensitivity unless a profile supplies an ordering. duplo:requiresStructuralShape references a named SHACL shape or other structural contract.

Category-level policies

A duplo:ProcessingPolicy is both a local data policy and a plan-like normative entity. It MUST identify an applicable data category and MUST permit, prohibit, or require at least one DPV processing category. Policy statements do not assert occurrence.

Policy comparison is context-sensitive and hierarchy-aware. An actual processing category matches a prohibition when it is the prohibited category or an explicit RDFS subclass. Data categories are matched by the same rule. Sibling categories and different contexts do not match.

Runtime provenance and lineage

Processing and transformation activities

A duplo:ProcessingActivity is an actual prov:Activity. It MUST identify a performed DPV processing category, MUST use or generate at least one PROV entity, and MUST state exactly one lineage-coverage value and one explicit lineage scope in the operational profile.

A duplo:TransformationActivity is a processing activity that MUST both use and generate entities. It covers copy, conversion, normalization, aggregation, combination, pseudonymisation, redaction with an output, and similar derivations. The used and generated entity IRIs MUST be distinct because PROV entities have fixed aspects. A use-only inspection or source-free generator remains a general processing activity.

Snapshots and element versions

A duplo:DataSnapshot is an immutable PROV entity representing a dataset, file, batch, partition, message, table state, or stream window. A duplo:DataElementVersion is both a classified data element and a PROV entity. It MUST identify exactly one source asset or snapshot in the operational profile.

Direct derivation and indirect influence

duplo:wasDirectlyDerivedFromElement is a subproperty of prov:wasDerivedFrom. It means input values contribute to output values. The qualified form uses duplo:ElementDerivation through duplo:qualifiedElementDerivation.

duplo:wasIndirectlyInfluencedByElement is a subproperty of prov:wasInfluencedBy. It covers join, group, filter, sort, window, and conditional influence when values need not appear in the output. The qualified form uses duplo:ElementInfluence and duplo:qualifiedElementInfluence.

Reference tracing behavior traverses compact and qualified forms equivalently. When both forms are present, the operational profile requires the qualified influence's prov:entity to occur among the corresponding compact lineage targets.

In-place updates and streams

A logical in-place update MUST be represented as a new entity version when provenance assertions depend on a changed state. The activity MAY invalidate the prior version. Stateful stream processing SHOULD name offset ranges, event-time windows, or other fixed window entities so reprocessing can be compared meaningfully.

Classification impacts and propagation

Expected and observed impacts

A duplo:ClassificationImpact is an n-ary provenance entity connecting source or result ports, categories, and classification records. It MUST have exactly one impact kind and MUST state whether review is required.

An duplo:ExpectedClassificationImpact belongs to a specification and is prospective. An duplo:ObservedClassificationImpact belongs to concrete evidence, MUST reference a source or result classification, and MUST identify the activity that generated the impact assertion. The OWL addendum declares expected and observed impacts disjoint.

Category impacts use sourceCategory and resultCategory. Sensitivity impacts use duplo:sourceSensitivity and duplo:resultSensitivity; a sensitivity escalation MUST identify its result sensitivity. A requirement-introduction impact MUST identify an duplo:introducedRequirement.

Impact kinds

duplo:CategoryPreservation
The relevant category continues to apply.
duplo:CategoryReplacement
The result has a different representation category while upstream classification lineage remains.
duplo:CategoryIntroduction
Processing introduces a category not asserted on an individual input, commonly through joining or inference.
duplo:CategorySuppression
An assessed category no longer applies. This MUST require review under the operational profile.
duplo:SensitivityEscalation
The output has greater operational sensitivity, commonly through linkage.
duplo:RequirementIntroduction
Processing introduces a policy, review, legal-basis, or mitigation requirement.
duplo:UnknownImpact
The impact is not known sufficiently and MUST require review.

Conservative classification defaults

Processing patternDefault interpretation
Identity copy, rename, format, serialization, transferPreserve all applicable classifications and requirements.
EncryptionPreserve classification; record protection measure and output-state evidence separately.
Pseudonymisation or tokenisationRetain personal-data status; classify the output representation separately.
AggregationProduce a candidate result requiring assessment; do not infer anonymisation.
Join or inferenceConsider category introduction, linkage, sensitivity escalation, and new requirements.
Filter, group, sort, window, conditionRecord indirect influence where it affects governance.
Element elisionRequire a complete mapping to support positive absence; retain source provenance.
AnonymisationRequire contextual evidence and review before confirming non-personal data.

Classification propagation

A duplo:ClassificationPropagationActivity is a Data Classification detection activity. It MUST use dcls:LineageInheritedDetection, MUST use at least two evidence resources, and MUST generate at least one downstream classification. It SHOULD use the source classification, the processing activity, and the expected or observed impact.

A materializer MAY construct a candidate classification from a matching specification and complete set of role bindings. Every source port of an n-ary impact MUST have a compatible confirmed classification in the same context. The candidate retains that context and provenance to all source classifications. It MUST NOT construct a confirmed category solely from an expected impact.

Elision and positive absence

Element elision can have no result element corresponding to the source element. The omission SHOULD be declared in a complete specification or mapping, and the enclosing output entity SHOULD retain provenance to its source. Missing lineage assertions alone MUST NOT be interpreted as proof of elision.

Mitigation requirements, application, and assessment

This ontology separates normative requirements from historical application and evidential satisfaction. This prevents a required measure from being mistaken for a performed measure and prevents a performed measure from being mistaken for a successful control.

  1. dcls:requiresMeasure is a compact class-valued policy hook.
  2. A duplo:MitigationRequirement qualifies measure, origin, scope, and context.
  3. duplo:appliedMeasure records what an actual activity claims it applied.
  4. A duplo:MitigationAssessment evaluates a particular requirement against evidence.

A requirement MUST identify at least one DPV technical or organisational measure category and exactly one scope. It MUST originate from a classification or be declared by a specification. An assessment MUST identify exactly one requirement, processing activity, and assessed measure, plus an outcome, a rationale, and its generating activity. The assessed measure MUST be required by that requirement and recorded as applied by that activity. Every stated requirement context MUST match the activity's processing context.

Mitigation scopes

duplo:DuringProcessing
The control holds while processing executes.
duplo:OutputState
The generated output representation has the required protected state.
duplo:TransferScope
The control holds during transmission or transfer.
duplo:StorageScope
The control holds while stored at rest.
duplo:DownstreamUse
The control must continue to hold for subsequent use.

Assessments and conformance

A duplo:ProcessingAssessment is a provenance entity generated by a validation, review, or other assessment activity. It MUST assess a named resource, have exactly one outcome, give a rationale, and identify exactly one generating activity. It MAY reference a structured confidence assessment.

duplo:ConformanceOutcome and duplo:MitigationOutcome are extensible specializations of duplo:AssessmentOutcome. Conformance assessments MUST use the former; mitigation assessments MUST use the latter. duplo:Indeterminate belongs to both families because insufficient evidence can prevent either conclusion.

A duplo:ProcessingConformanceAssessment assesses exactly one processing activity against exactly one specification. A conformant conclusion MUST cite evidence using prov:used. Claiming duplo:realizesSpecification does not itself entail conformance.

Core controlled outcomes are:

Lineage coverage and stated uncertainty

duplo:hasLineageCoverage intentionally has no RDFS domain so it can describe activities, entities, element versions, bundles, or locally scoped lineage resources without retyping them. The operational profile requires one value on each processing activity.

Every activity MUST also identify exactly one duplo:lineageCoverageScope value from duplo:LineageScope. duplo:ElementDependencyLineageScope covers every represented direct value dependency and indirect join, filter, grouping, ordering, windowing, or conditional dependency within the evaluated execution boundary. Local scope resources MAY name narrower asset, graph, time-window, system, or organisational boundaries.

duplo:CompleteLineage
All dependencies within an explicitly declared scope are represented.
duplo:PartialLineage
Some known dependencies are represented, but more can be absent.
duplo:UnknownLineage
The dependency structure or completeness is not known.

Partial, unknown, or unstated coverage anywhere on a recorded lineage chain prevents a consumer from presenting the oldest known node as a certain original source. Reference tracing behavior therefore aggregates coverage across every recorded generating activity reachable from the output and exposes the underlying activity-level assertions beside the conservative aggregate.

A non-root intermediate element without a recorded generating activity is an unknown coverage boundary, not evidence of completeness. Complete trace results additionally require the built-in direct-and-indirect element scope on every evaluated generating activity.

Data origin is independent of completeness

duplo:DataOriginKind records whether an activity depends on source data. The duplo:hasDataOriginKind property is independent of lineage coverage, so an implementation does not have to misuse a completeness value to make a source-origin claim.

duplo:SourceDependentOrigin
At least one used entity is bound through a duplo:DataInputPort.
duplo:SourceFreeOrigin
No data-bearing input is used; explicitly qualified auxiliary dependencies remain possible.

Source-free origin MUST NOT be inferred from absent prov:used statements. Under the operational profile, every used entity on a source-free activity MUST be qualified through an duplo:AuxiliaryInputPort, and a data-input binding is a violation.

Evidence-bearing compatibility, coverage, and validation

Exact context IRI identity is the default safety rule. Unequal contexts can be related only through a directional duplo:ContextCompatibilityAssessment. The assessment identifies one duplo:sourceContext, one duplo:targetContext, and every evaluated duplo:assessesContextFacet. A target specification, policy, requirement, activity, or profile uses duplo:requiresContextFacet to name the dimensions which MUST be covered. If no required facets are declared, an unequal-context assessment does not relax exact identity in the reference operational behavior.

duplo:ContextFacet values include duplo:JurisdictionContextFacet, duplo:PurposeContextFacet, duplo:ControllerContextFacet, duplo:LegalBasisContextFacet, and duplo:SystemContextFacet. The duplo:ContextCompatibilityOutcome family contains duplo:Compatible, duplo:Incompatible, and duplo:Indeterminate. Compatibility is directional, scoped to the named facets, and MUST NOT be represented with owl:sameAs.

A lineage summary is backed by a duplo:LineageCoverageAssessment connected through duplo:hasLineageCoverageAssessment. The assessment records duplo:assessedLineageCoverage, one or more duplo:assessedLineageScope values, and at least one concrete duplo:coverageBoundary. Time-bounded assessments MAY use duplo:coverageStartTime and duplo:coverageEndTime.

The built-in scope dimensions are duplo:AssetLineageScope, duplo:ElementLineageScope, duplo:DirectDependencyScope, duplo:IndirectDependencyScope, duplo:ExecutionBoundaryScope, and duplo:CrossSystemBoundaryScope. duplo:ElementDependencyLineageScope provides a combined compatibility summary. A direct duplo:hasLineageCoverage value and duplo:lineageCoverageScope MUST match the linked assessment under the operational profile.

Structural validation is represented by a duplo:StructuralConformanceAssessment. It names the duplo:validatedResource, duplo:validationShape, versioned duplo:validationShapesGraph, optional duplo:validationContext, and authoritative duplo:validationReport. The report uses standard sh:ValidationReport and sh:conforms; this ontology does not copy SHACL result semantics. A structural assessment can close a contract gap only when the resource, shape, shapes graph, report outcome, provenance, and required context facets match.

Operational behavior can be registered as duplo:OperationalRule resources with a duplo:RuleKind, duplo:hasRuleKind, duplo:ruleImplementation, duplo:ruleFailureBehavior, and duplo:ruleIsMonotonic. The kinds are duplo:NormativeSafetyRule, duplo:ReferenceInferenceRule, and duplo:DiagnosticRule. Registration makes scope and failure behavior explicit; it does not claim complete semantics for every future impact kind, mitigation scope, or context policy.

Reference operational behavior

Reference operationalizations support upstream classification tracing, category-contract selection, execution-conformance review, lineage and impact gap detection, mitigation review, indirect-influence discovery, and processing-policy comparison. Materialization behavior is limited to conservative candidate classifications and qualified mitigation requirements; it does not silently confirm a classification or a mitigation outcome.

Candidate propagation checks performed-versus-declared processing, explicitly scoped complete lineage, every source binding of an n-ary impact, source category, classification status, sensitivity, contract ownership, and exact source/specification/activity context. It retains context on the candidate and deliberately excludes sensitivity, requirement, suppression, and unknown impacts from category materialization. Structural SHACL contracts are not evaluated inside SPARQL and remain a separate conformance concern. Reference materialization uses SHA-256 over complete identity tuples so repeated execution is idempotent and equal local names from different namespaces cannot collide. Candidate identity uses output element, processing activity, impact, and context; all source classifications remain explicit provenance without making identity depend on SPARQL row order. Requirement identity uses classification, measure, scope, and context.

Validation profile

The operational SHACL profile enforces at least the following:

SHACL evaluates represented graph completeness under a chosen data graph; it does not override RDF's open-world semantics outside validation. Implementations SHOULD preserve the validation report as provenance when its conclusion drives policy or classification decisions [[SHACL]].

Security and privacy considerations

A lineage graph can be sensitive even when it contains no payload values. It can reveal the existence of personal-data fields, join paths, processing destinations, data-controller relationships, security mechanisms, and the possibility of identity linkage. Implementations SHOULD classify, authorize, minimize, and retain provenance data under controls appropriate to its contents.

measureImplementation identifies a versioned algorithm, configuration, service, or control entity. It MUST NOT embed secret keys, salts, credentials, tokens, or reversible parameters. A reference MAY point to a protected configuration record whose existence is visible but whose secret content is access-controlled elsewhere.

Classification propagation can amplify errors. A confirmed source classification does not guarantee a confirmed output when lineage is partial, context changes, the plan is unverified, or the processing is non-deterministic. Consumers SHOULD retain source status, context, evidence, and coverage in explanations.

Governance, versioning, and extension

Public IRIs in this ontology MUST NOT be repurposed after adoption. Semantic changes to impact kinds, coverage claims, policy modality, or class boundaries require versioning and migration notes. Local processing categories SHOULD extend or map to DPV categories rather than redefine imported terms.

Domain-specific extensions MAY specialize ports, specifications, activities, impacts, requirements, and assessments. An extension SHOULD use mappings weaker than OWL equivalence unless meanings are genuinely complete in both directions. Profiles MAY add closed enumerations, cardinalities, sensitivity orderings, or alternative category groups appropriate to a deployment.

Automated classifiers and pipeline extractors SHOULD record the agent, activity, plan version, timestamp, confidence, and known coverage that support their output. Disagreement among assessments SHOULD remain explicit rather than being silently overwritten.

Term reference

Classes

ClassParentPurpose
ProcessingSpecificationprov:PlanAbstract processing contract.
ProcessingPlanProcessingSpecificationVersioned deployable specification.
ProcessingPolicydcls:DataPolicy, prov:PlanCategory-level permission, prohibition, or requirement.
ProcessingActivityprov:ActivityActual use or processing occurrence.
TransformationActivityProcessingActivityActual use and generation of derived data.
ClassificationPropagationActivitydcls:DetectionActivityGenerates a downstream classification from lineage evidence.
DataPortprov:RolePlan-scoped role for a data entity.
InputPortDataPortExpected usage role.
DataInputPortInputPortData-bearing direct or indirect source role.
AuxiliaryInputPortInputPortNon-data configuration, model, plan, key-reference, or parameter role.
OutputPortDataPortExpected generation role.
ClassificationConstraintCategory, status, sensitivity, or structural port condition.
DataSnapshotprov:EntityImmutable asset, batch, message, partition, or window.
DataElementVersiondcls:DataElement, prov:EntityFixed element within an asset version.
ElementDerivationprov:DerivationQualified direct value dependency.
ElementInfluenceprov:EntityInfluenceQualified indirect dependency.
ClassificationImpactprov:EntityN-ary classification effect record.
ExpectedClassificationImpactClassificationImpactProspective impact on a specification.
ObservedClassificationImpactClassificationImpactEvidence-backed impact for an execution.
ImpactKindControlled impact category.
ProcessingAssessmentprov:EntityEvidence-bearing assessment conclusion.
ProcessingConformanceAssessmentProcessingAssessmentRun-to-specification conformance conclusion.
MitigationRequirementprov:EntityQualified measure requirement.
MitigationAssessmentProcessingAssessmentRequirement satisfaction conclusion.
AssessmentOutcomeControlled conclusion value.
ConformanceOutcomeAssessmentOutcomeOutcome family for specification conformance.
MitigationOutcomeAssessmentOutcomeOutcome family for requirement satisfaction.
MitigationScopeOperational scope of a measure requirement.
LineageCoverageKnown completeness of lineage.
LineageScopeExplicit boundary for a lineage coverage assertion.
DataOriginKindSource-dependent or positively source-free data origin.

Properties

PropertyDomain → rangeMeaning
declaresProcessingSpecification → DPV ProcessingAbstract processing declaration.
performedProcessingActivity → DPV ProcessingHistorical processing claim.
permitsProcessingPolicy → DPV ProcessingNormative permission.
prohibitsProcessingPolicy → DPV ProcessingNormative prohibition.
requiresProcessingPolicy → DPV ProcessingNormative processing requirement.
appliesToDataCategoryPolicy → DPV DataCategory governed by the policy.
policyContextPolicy → ClassificationContextContext of normative applicability.
hasPortSpecification → DataPortGeneral port relation.
hasInputPortSpecification → InputPortPlanned usage role.
hasOutputPortSpecification → OutputPortPlanned generation role.
implementsSpecificationPlan → SpecificationConcrete-to-abstract implementation, weaker than equivalence.
refinesPortConcrete DataPort → abstract DataPortPort-level correspondence used to assess plan refinement.
realizesSpecificationActivity → SpecificationClaimed runtime realization, not conformance.
specificationContextSpecification → ClassificationContextExpected processing context.
processingContextActivity → ClassificationContextActual processing context.
hasClassificationConstraintPort → ConstraintExpected semantic or structural binding condition.
requiresDataCategoryConstraint → DPV DataRequired category.
requiresClassificationStatusConstraint → ClassificationStatusRequired workflow status.
requiresSensitivityLevelConstraint → SensitivityLevelRequired sensitivity.
requiresStructuralShapeConstraint → resourceNamed structural contract.
hasExpectedClassificationImpactSpecification → ExpectedImpactProspective effect declaration.
hasObservedClassificationImpactActivity → ObservedImpactConcrete effect evidence.
sourcePortImpact → InputPortInput role contributing to an impact.
resultPortImpact → OutputPortOutput role affected by an impact.
sourceCategoryImpact → DPV DataAbstract source category.
resultCategoryImpact → DPV DataProjected or observed result category.
sourceSensitivityImpact → SensitivityLevelSource-side sensitivity operand.
resultSensitivityImpact → SensitivityLevelProjected or observed result sensitivity.
introducedRequirementImpact → resourceRequirement introduced by processing.
sourceClassificationImpact → DataClassificationConcrete upstream assertion.
resultClassificationImpact → DataClassificationConcrete downstream assertion.
hasImpactKindImpact → ImpactKindControlled effect kind.
requiresImpactReviewImpact → booleanExplicit review marker.
impactRationaleImpact → stringHuman explanation.
wasDirectlyDerivedFromElementElementVersion → ElementVersionDirect value dependency.
wasIndirectlyInfluencedByElementElementVersion → ElementVersionIndirect control dependency.
qualifiedElementDerivationElementVersion → ElementDerivationQualified direct dependency.
qualifiedElementInfluenceElementVersion → ElementInfluenceQualified indirect dependency.
hasLineageCoverageunspecified → LineageCoverageKnown completeness without subject retyping.
lineageCoverageScopeunspecified → LineageScopeExplicit boundary for the coverage value.
hasDataOriginKindProcessingActivity → DataOriginKindSource dependency independently of completeness.
assessesResourceAssessment → resourceGeneral assessment target.
assessesActivityAssessment → ProcessingActivityConcrete activity target.
againstSpecificationConformanceAssessment → SpecificationEvaluated contract.
hasAssessmentOutcomeAssessment → AssessmentOutcomeControlled conclusion.
assessmentRationaleAssessment → stringHuman explanation and limitation.
confidenceAssessmentAssessment → ConfidenceAssessmentScale-aware uncertainty.
hasMitigationRequirementDataClassification → RequirementQualified requirement on a classification.
declaresMitigationRequirementSpecification → RequirementExpected requirement on a contract.
originatingClassificationRequirement → DataClassificationAssertion from which the requirement originates.
requiredMeasureRequirement → classDPV measure category.
hasRequirementScopeRequirement → MitigationScopeOperational phase or state.
requirementContextRequirement → ClassificationContextContext of applicability.
appliedMeasureActivity → classHistorically applied DPV measure category.
measureImplementationActivity → PROV EntityVersioned control implementation, without secrets.
assessesRequirementMitigationAssessment → RequirementEvaluated requirement.
assessedMeasureMitigationAssessment → classEvaluated measure category.

Worked modeling patterns

The examples throughout this specification illustrate both successful and non-conforming assessments without treating a negative assessment as a structurally invalid graph. Together they cover: