Skip to main content

Provenance Ontology

Provenance Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
FLOW ALGEBRA
Provenance Ontology
Kireth Semantic Research Archive

PAGE:
https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/provenance-metadata/provenance-ontology.html

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "ProvenanceOntology" v4.0

DOMAIN := MetadataOntologies
SUBDOMAIN := ProvenanceMetadata
ONTOLOGY := ProvenanceOntology

ENTITY Provenance {
 definition: "A semantic representation of the origin, derivation, generation, attribution, custody, transformation, version history and evidential lineage of an entity, resource, assertion or metadata object.";
 objectives: [OriginTracking, DerivationTracking, Attribution, ActivityTracking, ChainOfCustody, Reproducibility, TrustAssessment, MachineInterpretability];
}

ProvenanceEntity := {Entity, Activity, Agent, ProvenanceRecord, ProvenanceStatement, ProvenanceEvent, ProvenanceChain, ProvenanceIdentifier};
RelationshipEntity := {WasGeneratedBy, Used, WasDerivedFrom, WasAttributedTo, WasAssociatedWith, WasRevisionOf, HadPrimarySource, WasInformedBy};
EvidenceEntity := {Evidence, Source, Timestamp, Version, AuditRecord, Fixity, Checksum, Confidence};
AgentEntity := {Person, Organisation, SoftwareAgent, AIModel, ResponsibleAgent, Creator, Contributor, Authority};

Entity MAY_BE_GENERATED_BY Activity;
Activity MAY_USE Entity;
Activity MAY_BE_ASSOCIATED_WITH Agent;
Entity MAY_BE_DERIVED_FROM Entity;
Entity MAY_BE_ATTRIBUTED_TO Agent;
Entity MAY_BE_REVISION_OF Entity;
Entity MAY_HAVE_PRIMARY_SOURCE Entity;
Activity MAY_BE_INFORMED_BY Activity;
ProvenanceRecord CONTAINS ProvenanceStatement;

ProvenanceFlow :=
 ProvenanceSubject
 -> IdentifyEntity
 -> IdentifySourceEntities
 -> IdentifyGeneratingUsingOrTransformingActivities
 -> IdentifyAssociatedAgents
 -> RecordTimestampsVersionsAndIdentifiers
 -> BuildDirectedProvenanceRelationships
 -> AttachEvidenceAndConfidence
 -> ValidateProvenanceGraph
 -> StoreProvenanceRecord
 -> EnableTraceabilityReproducibilityAndTrust
 -> MaintainAcrossLifecycle;

Entity := IdentifiableThingWhoseProvenanceCanBeDescribed;
Entity MAY_BE {Document, Dataset, File, Image, Audio, Video, Software, Model, MetadataRecord, Assertion, KnowledgeEntity};

Activity := ProcessActionOrEventThatUsesGeneratesTransformsOrModifiesEntities;
Activity MAY_BE {Creation, Generation, Import, Extraction, Transformation, Validation, Publication, Migration, Modification, Deletion};

Agent := PersonOrganisationSoftwareOrOtherActorAssociatedWithProvenanceActivity;
Agent MAY_BE {Person, Organisation, SoftwareAgent, AIModel, AutomatedService};

ProvenanceRecord := StructuredCollectionOfProvenanceStatements;
ProvenanceStatement := Subject -> ProvenanceRelationship -> Object;
ProvenanceIdentifier := StableReferenceToEntityActivityAgentEventOrProvenanceRecord;
ProvenanceIdentifier MAY_BE {URI, IRI, UUID, InternalIdentifier};

Generation := Activity -> GENERATES -> Entity;
WasGeneratedBy := Entity -> WAS_GENERATED_BY -> Activity;
IF Activity GENERATES Entity THEN Entity WAS_GENERATED_BY Activity;

Usage := Activity -> USES -> Entity;
Used := Activity -> USED -> Entity;

Derivation := DerivedEntity -> WAS_DERIVED_FROM -> SourceEntity;
WasDerivedFrom := RelationshipConnectingDerivedEntityToSourceEntity;
DirectDerivation := ImmediateDerivationFromSource;
AncestorDerivation := TransitiveSourceRelationshipAcrossMultipleDerivationSteps;

IF EntityA WAS_DERIVED_FROM EntityB
AND EntityB WAS_DERIVED_FROM EntityC
THEN EntityA MAY_HAVE AncestorSource EntityC;

DirectDerivation != AncestorDerivation;

Attribution := Entity -> WAS_ATTRIBUTED_TO -> Agent;
WasAttributedTo := RelationshipConnectingEntityToResponsibleOrCreditedAgent;
Association := Activity -> WAS_ASSOCIATED_WITH -> Agent;
WasAssociatedWith := RelationshipConnectingActivityToParticipatingAgent;

Revision := NewEntityVersion -> WAS_REVISION_OF -> PreviousEntityVersion;
WasRevisionOf := RelationshipConnectingRevisionToEarlierVersion;

PrimarySource := SourceHavingDirectOrAuthoritativeRelationshipToEntityAccordingToContext;
HadPrimarySource := Entity -> HAD_PRIMARY_SOURCE -> SourceEntity;
WasInformedBy := Activity -> WAS_INFORMED_BY -> EarlierActivity;

Creator := AgentResponsibleForInitialCreationOfEntity;
Contributor := AgentContributingToEntityOrActivity;
ResponsibleAgent := AgentAccountableForDefinedActivityOrDecision;
Authority := AgentOrSourceHavingRecognisedAuthorityForProvenanceAssertion;

SoftwareAgent := SoftwareSystemPerformingProvenanceRelevantActivity;
AIModel := ModelPerformingGenerationTransformationExtractionOrInference;

AIActivity MAY_RECORD {ModelIdentifier, ModelVersion, Operation, InputEntities, OutputEntities, Timestamp};

Source := OriginEvidenceOrInputAssociatedWithEntityOrAssertion;
SourceEntity := EntityUsedAsOriginInputOrEvidence;
DerivedEntity := EntityProducedFromOneOrMoreSourceEntities;

Transformation := ActivityChangingRepresentationStructureContentOrStateOfEntity;
Transformation MAY_BE {Conversion, Normalisation, Aggregation, Extraction, Translation, Summarisation, Migration};
Transformation SHOULD_PRESERVE {SourceIdentifiers, ActivityIdentifier, ToolOrAgent, ParametersWhereRelevant, Timestamp};

Aggregation := ActivityCombiningMultipleEntitiesIntoDerivedEntity;
Extraction := ActivitySelectingOrDerivingSubsetOrInformationFromSourceEntity;
Translation := TransformationProducingRepresentationInDifferentLanguage;
Summarisation := TransformationProducingCondensedRepresentation;
Migration := TransformationMovingEntityAcrossFormatSystemOrEnvironment;

Lineage := DirectedHistoryOfEntityDerivationsActivitiesAndAgents;
ProvenanceChain := ConnectedSequenceOrGraphOfProvenanceEventsAndRelationships;

ProvenanceEvent := TimeAssociatedOccurrenceAffectingEntityHistory;
ProvenanceEvent MAY_BE {CreationEvent, ImportEvent, TransformationEvent, ValidationEvent, PublicationEvent, MigrationEvent, ModificationEvent, DeletionEvent};

Timestamp := TemporalValueAssociatedWithEntityActivityEventOrStatement;
Timestamp MAY_INCLUDE {CreatedAt, StartedAt, EndedAt, ModifiedAt, RecordedAt};

IF ActivityA.endTime < ActivityB.startTime
THEN ActivityA PRECEDES ActivityB;

TimestampPrecision SHOULD_BE Preserved;

Version := IdentifiedStateOfEntityAtPointInHistory;
VersionIdentifier := IdentifierDistinguishingEntityRevision;
VersionHistory := OrderedOrGraphStructuredCollectionOfEntityVersions;
VersionRelationship MAY_INCLUDE {PreviousVersion, NextVersion, RevisionOf, Supersedes};

ChangeSet := StructuredRepresentationOfDifferencesBetweenVersions;
ChangeSet MAY_INCLUDE {Added, Removed, Modified};

IdentityContinuity := RelationshipIndicatingSameConceptualEntityAcrossVersions;
IdentityContinuity SHOULD_BE DistinguishedFrom DerivationIntoDistinctEntity;

Copy := NewRepresentationPotentiallySharingContentWithSourceEntity;
Copy MAY_HAVE DistinctIdentityAndProvenance;
Derivative := EntityCreatedByTransformingAnotherEntity;

ProvenanceGraph := Entities + Activities + Agents + DirectedTypedRelationships;
GraphNode MAY_BE {Entity, Activity, Agent};
GraphEdge MAY_BE {WAS_GENERATED_BY, USED, WAS_DERIVED_FROM, WAS_ATTRIBUTED_TO, WAS_ASSOCIATED_WITH, WAS_REVISION_OF, HAD_PRIMARY_SOURCE, WAS_INFORMED_BY};

RelationshipDirection MUST_BE Preserved;

ProvenancePath := DirectedPathThroughProvenanceGraph;
SourceTrace := TargetEntity -> FollowBackwardDerivationAndGenerationEdges -> SourceEntities;
ImpactTrace := SourceEntity -> FollowForwardDerivationRelationships -> DescendantEntities;

RootSource := SourceEntityWithoutKnownEarlierDerivationWithinCurrentGraph;
RootSource != AbsoluteOriginalSourceUnlessGraphIsComplete;

ChainOfCustody := SequenceOfAgentsRepositoriesOrSystemsHoldingManagingOrTransferringEntity;
CustodyEvent MAY_BE {Receipt, Transfer, Storage, Release};
CustodyEvent SHOULD_RECORD {FromAgent, ToAgent, Timestamp, Authority, Evidence};

CustodyGap := PeriodOrTransferWithoutAdequateCustodyEvidence;
CustodyGap MAY_DECREASE ProvenanceConfidence;

Evidence := InformationSupportingProvenanceStatement;
Evidence MAY_BE {AuditLog, DigitalSignature, Checksum, SystemRecord, ExternalRecord, HumanAttestation};

Fixity := EvidenceThatDigitalEntityHasNotChangedUnexpectedly;
Checksum := ComputedDigestUsedToVerifyIntegrity;

IF CurrentChecksum != RecordedChecksum
THEN IntegrityMismatch SHOULD_BE Raised;

DigitalSignature MAY_SUPPORT {Integrity, Authentication, NonRepudiation} according_to cryptographic_context;

AuditRecord := ControlledRecordOfProvenanceRelevantAction;
AuditTrail := OrderedCollectionOfAuditRecords;
AuditTrail MAY_SUPPORT ReconstructionOfEntityHistory;

ProvenanceConfidence := EstimatedSupportForProvenanceStatement;
Confidence MAY_BE_FUNCTION_OF {SourceReliability, EvidenceStrength, ChainCompleteness, TemporalConsistency, CrossSourceAgreement};

ProvenanceCompleteness := DegreeToWhichRequiredEntitiesActivitiesAgentsAndRelationshipsAreRecorded;
ProvenanceConsistency := DegreeToWhichStatementsDoNotConflict;
ProvenanceIntegrity := PreservationOfReliableUnalteredProvenanceRecords;
ProvenanceTraceability := AbilityToFollowEntityHistoryToSourcesActivitiesAndAgents;

ProvenanceQuality MAY_INCLUDE {Completeness, Consistency, Integrity, Traceability, EvidenceStrength};

ProvenanceValidation MAY_CHECK {IdentifierValidity, MissingSource, MissingAgent, TemporalConsistency, BrokenDerivation, VersionContinuity, GraphCycles};

IF DerivedEntityRequiresSource AND NoSourceRecorded
THEN ProvenanceCompleteness SHOULD_DECREASE;

IF ActivityUsesEntityCreatedAfterActivityEnded
THEN TemporalConsistency SHOULD_DECREASE;

ProvenanceConflict := MultipleStatementsProvideIncompatibleOriginHistoryAttributionOrVersionInformation;
ConflictHandling MAY {PreserveAllStatements, CompareEvidence, CompareAuthority, RankConfidence, FlagReview};

MetadataProvenance := ProvenanceOfMetadataRecordOrMetadataStatement;
RecordLevelProvenance := ProvenanceAppliedToWholeMetadataRecord;
StatementLevelProvenance := ProvenanceAppliedToIndividualMetadataAssertion;
StatementLevelProvenance MAY_DIFFER_FROM RecordLevelProvenance;

AssertionProvenance := ProvenanceAttachedToSpecificClaimOrKnowledgeAssertion;
AssertionProvenance SHOULD_PRESERVE {Source, ExtractionOrGenerationMethod, Timestamp, Confidence};

DataProvenance := ProvenanceOfDatasetDataElementOrTransformationPipeline;
WorkflowProvenance := ProvenanceOfWorkflowDefinitionOrExecution;
WorkflowRun := ExecutionInstanceOfWorkflow;

PipelineProvenance MAY_RECORD {Inputs, Outputs, ProcessingSteps, SoftwareVersions, Parameters};

Reproducibility := AbilityToRecreateOrVerifyResultUsingRecordedSourcesMethodsParametersAndEnvironment;
Provenance MAY_SUPPORT Reproducibility BUT DoesNotGuaranteeIt;

ScientificProvenance MAY_INCLUDE {DatasetVersion, Instrument, Method, Software, Parameters, Researcher};

ModelProvenance MAY_INCLUDE {TrainingDataReferences, ModelVersion, TrainingProcedure, Evaluation, DeploymentHistory} where available_and_appropriate;

AIOutputProvenance MAY_INCLUDE {Model, InputSourceReferences, RetrievalSources, GenerationTimestamp, Operation} subject_to policy_and_privacy;

RAGProvenance SHOULD_PRESERVE {RetrievedSourceIdentifiers, SourceVersions, RetrievalTimestamp, CitationRelationships};

Search MAY_USE ProvenanceFor {SourceFiltering, AuthorityRanking, VersionSelection, DateFiltering, TrustSignals};
SemanticSearch MAY_RETURN ProvenanceAlongsideResultForExplainability;
RetrievalAugmentedGeneration MAY_USE ProvenanceFor {SourceRanking, Citation, TrustAssessment, Freshness, ConflictResolution};

KnowledgeGraph MAY_ATTACH ProvenanceTo {Nodes, Edges, ReifiedStatements};
KnowledgeGraphStatement := Subject -> Predicate -> Object;
StatementProvenance MAY_IDENTIFY {Source, Extractor, Timestamp, Confidence};

RDF MAY_REPRESENT ProvenanceUsing TypedRelationships;
JSONLD MAY_SERIALISE LinkedProvenanceMetadata;

PROVStyleModel MAY_REPRESENT {Entity, Activity, Agent, Generation, Usage, Derivation, Attribution, Association};

DescriptiveMetadata MAY_HAVE Provenance;
StructuralMetadata MAY_HAVE Provenance;
AdministrativeMetadata MAY_HAVE Provenance;
TechnicalMetadata MAY_HAVE Provenance;
ProvenanceMetadata MAY_CROSSCUT AllMetadataCategories;

MetadataRepository SHOULD_PRESERVE ProvenanceAcross {Import, Transformation, Merge, Export};
MetadataRegistry MAY_REGISTER ProvenancePropertiesEventTypesAndAgentTypes;

TrustAssessment := ProvenanceEvidence + SourceAuthority + Validation -> TrustSignal;
TrustSignal SHOULD_NOT BeTreatedAsAbsoluteTruth;

AccessControl MAY_APPLY_TO ProvenanceMetadata;
Provenance MAY_REVEAL {PersonalInformation, InternalSystems, ConfidentialSources, SecuritySensitiveHistory};
PrivacyAndSecurityPolicy SHOULD_BE AppliedBeforeProvenanceDisclosure;

ProvenanceSecurity MAY_INCLUDE {AccessControl, IntegrityProtection, DigitalSigning, Audit, AppendOnlyStorage};
AppendOnlyProvenanceStore MAY_REDUCE UndetectedHistoryRewriting;

ProvenanceVersion := VersionOfProvenanceRecordOrGraph;
ProvenanceRevision SHOULD_PRESERVE PreviousAssertionsWhereAuditabilityRequires;

MachineReadableProvenance SHOULD_PRESERVE {
 EntityIdentifiers,
 ActivityIdentifiers,
 AgentIdentifiers,
 RelationshipTypes,
 RelationshipDirection,
 Timestamps,
 Versions,
 Evidence,
 Confidence
};

# ---------- SEMANTIC REASONING ----------
IF MetadataDescribesOriginGenerationDerivationAttributionCustodyOrHistory
THEN ProvenanceClassification := supported;

IF Entity WAS_GENERATED_BY Activity
THEN Activity SHOULD_BE RepresentedAsGeneratingEntity;

IF Activity USED SourceEntity
AND GENERATED DerivedEntity
THEN DerivedEntity MAY_BE_DERIVED_FROM SourceEntity according_to activity_semantics;

IF EntityA WAS_DERIVED_FROM EntityB
AND EntityB WAS_DERIVED_FROM EntityC
THEN EntityC MAY_BE AncestorSourceOf EntityA;

IF Entity WAS_ATTRIBUTED_TO Agent
THEN Attribution MUST_NOT AutomaticallyImply LegalOwnership;

IF ChecksumMismatchDetected
THEN EntityIntegrityConfidence SHOULD_DECREASE;

IF ProvenanceChainHasCriticalGap
THEN ProvenanceCompleteness SHOULD_DECREASE;

IF SourceVersionKnown
THEN Derivation SHOULD_REFERENCE ExactSourceVersionWherePossible;

IF AIOutputGeneratedFromRetrievedSources
THEN RetrievedSourceProvenance SHOULD_BE PreservedWhereSupported;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
 "provenance" ~= "resource provenance" WHEN metadata_context;
 "data lineage" ~= "provenance lineage" WHEN data_context;
 "derivation" ~= "was derived from relationship";
 "generation" ~= "entity generation event";
 "attribution" ~= "was attributed to relationship";
 "chain of custody" ~= "custody history";
 "source trace" ~= "provenance source path";
 "provenance graph" ~= "lineage graph";
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
 NORMALISE(q) ->
 IDENTIFY_PROVENANCE_SUBJECT(q) ->
 RESOLVE_ENTITY_AND_VERSION(q) ->
 IDENTIFY_SOURCE_ENTITIES(q) ->
 IDENTIFY_GENERATING_USING_AND_TRANSFORMING_ACTIVITIES(q) ->
 IDENTIFY_AGENTS_AND_ATTRIBUTION(q) ->
 IDENTIFY_TIMESTAMPS_EVENTS_AND_CUSTODY(q) ->
 TRACE_DERIVATION_AND_VERSION_PATHS(q) ->
 IDENTIFY_EVIDENCE_AND_CONFIDENCE(q) ->
 VALIDATE_PROVENANCE_GRAPH(q) ->
 APPLY_ACCESS_AND_PRIVACY_POLICY(q) ->
 RETURN_RELEVANT_PROVENANCE_KNOWLEDGE;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
 weighted_mean(
  source_reliability,
  evidence_strength,
  provenance_completeness,
  temporal_consistency,
  graph_integrity,
  contextual_relevance
 );

CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
 primary_entity: Provenance;
 ontology: ProvenanceOntology;
 parse_entities: true;
 parse_relationships: true;
 preserve_relationship_direction: true;
 resolve_semantic_equivalence: true;
 execute_reasoning_rules: true;
 apply_confidence_weighting: true;
 preserve_provenance: true;
 trace_derivation_paths: true;
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
 new_entity:
  assign_identifier
  -> identify_generation_or_source
  -> attach_version
  -> attach_agent
  -> attach_timestamp
  -> attach_evidence
  -> validate
  -> integrate;

 new_activity:
  assign_activity_identifier
  -> identify_inputs
  -> identify_outputs
  -> identify_agents
  -> record_parameters_and_time
  -> create_provenance_edges
  -> integrate;

 new_derivation:
  validate_source_and_target
  -> preserve_direction
  -> attach_activity_if_known
  -> attach_evidence
  -> assign_confidence
  -> integrate;

 provenance_revision:
  preserve_previous_assertions
  -> add_correct_or_supersede_assertions
  -> maintain_audit_history
  -> revalidate_graph
  -> recompute_confidence
  -> regenerate_flow_hash;

 conflict:
  preserve_all_provenance
  -> compare_sources_and_evidence
  -> adjust_confidence
  -> flag_review;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
 DOMAIN
 + SUBDOMAIN
 + ONTOLOGY
 + ProvenanceEntity
 + RelationshipEntity
 + EvidenceEntity
 + AgentEntity
 + Provenance
 + ProvenanceGraph
 + ProvenanceValidation
 + RELATIONSHIPS
 + SEMANTIC_REASONING
 + SEMANTIC_EQUIVALENCE
 + UPDATE_MODEL;

FLOW_HASH := HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
ProvenanceOntology
 -> IdentifyEntityAssertionOrMetadataSubject
 -> AssignStableEntityActivityAndAgentIdentifiers
 -> IdentifySourceEntitiesAndPrimarySources
 -> RecordGenerationUsageTransformationAndRevisionActivities
 -> AssociateCreatorsContributorsSoftwareAndAI agents
 -> PreserveTimestampsVersionsCustodyAndChangeEvents
 -> BuildDirectedProvenanceAndDerivationGraph
 -> AttachEvidenceFixityAuditAndConfidence
 -> ValidateTemporalGraphAndLineageConsistency
 -> SupportSourceTraceImpactAnalysisAndReproducibility
 -> PreserveProvenanceForSearchRAGAndKnowledgeGraphs
 -> EnforcePrivacySecurityAndAccessPolicies
 -> MaintainReliableProvenanceKnowledge;

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ