FLOW ALGEBRA
Ontology: Video Metadata Ontology
Domain: Metadata Ontologies > Document Metadata
Canonical URL: https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/document-metadata/video-metadata-ontology.html
Authors: Mark Anthony Higgins — Sky (Recursive AI)
flow "VideoMetadataOntology" v1.0
# ---------- DOMAIN ----------
domain:
class: MetadataOntology
category: DocumentMetadata
subject: VideoMetadata
purpose:
- represent metadata describing video resources and video representations
- preserve video identity, duration, format, codecs, frame properties, audio tracks, captions, rights, integrity, and provenance
- support video discovery, validation, accessibility, retrieval, transformation, and reuse
- distinguish audiovisual content from technical file representations and derived versions
- enable machine-readable reasoning over video lifecycles
# ---------- CORE ENTITY ----------
entity VideoMetadata:
type: DocumentMetadata
describes: VideoResource
may_include:
- video_identifier
- title
- description
- creator
- producer
- recording_date
- creation_date
- modification_date
- duration
- video_format
- media_type
- video_codec
- audio_codec
- width
- height
- aspect_ratio
- frame_rate
- bitrate
- colour_metadata
- audio_tracks
- subtitle_tracks
- captions
- chapters
- thumbnails
- language
- location_metadata
- subject_metadata
- rights
- licence
- checksum
- version
- provenance
entity VideoResource:
type: MediaResource
may_be:
- Film
- Recording
- Documentary
- LectureVideo
- InterviewVideo
- Tutorial
- ScreenRecording
- ScientificVideo
- SurveillanceVideo
- Animation
- GeneratedVideo
entity VideoIdentifier:
type: Identifier
identifies: VideoResource
# ---------- RELATIONSHIPS ----------
relationships:
VideoMetadata -> DESCRIBES -> VideoResource
VideoResource -> IDENTIFIED_BY -> VideoIdentifier
VideoResource -> HAS_REPRESENTATION -> VideoRepresentation
VideoRepresentation -> HAS_FORMAT -> VideoFormat
VideoRepresentation -> USES_VIDEO_CODEC -> VideoCodec
VideoRepresentation -> MAY_USE_AUDIO_CODEC -> AudioCodec
VideoRepresentation -> HAS_DURATION -> VideoDuration
VideoRepresentation -> HAS_FRAME_GEOMETRY -> FrameGeometry
VideoRepresentation -> MAY_HAVE_FRAME_RATE -> FrameRate
VideoRepresentation -> MAY_HAVE_BITRATE -> VideoBitrate
VideoResource -> MAY_HAVE_AUDIO_TRACK -> AudioTrack
VideoResource -> MAY_HAVE_SUBTITLE_TRACK -> SubtitleTrack
VideoResource -> MAY_HAVE_CAPTION_TRACK -> CaptionTrack
VideoResource -> MAY_HAVE_CHAPTER -> VideoChapter
VideoResource -> MAY_HAVE_THUMBNAIL -> Thumbnail
VideoResource -> MAY_HAVE_VERSION -> VideoVersion
VideoMetadata -> MAY_REFERENCE -> VideoProvenance
# ---------- VIDEO IDENTITY ----------
rule video_identity:
VideoResource SHOULD have stable VideoIdentifier
where persistent reference or provenance is required
rule filename_not_identity:
filename MUST NOT be assumed globally unique video identity
rule representation_identity:
VideoResource != VideoRepresentation
rule derived_representation:
transcoded, resized, or recompressed video MAY preserve same underlying VideoResource
while creating distinct VideoRepresentation
# ---------- DURATION ----------
entity VideoDuration:
type: TemporalMetadata
may_include:
- duration_value
- unit
rule duration:
VideoDuration MUST be non_negative
rule duration_precision:
duration SHOULD preserve sufficient precision
for frame or timestamp alignment where required
# ---------- FORMAT ----------
entity VideoFormat:
type: RepresentationMetadata
examples:
- MP4
- WebM
- MOV
- MKV
- AVI
- MPEG_TS
- OGV
rule format:
VideoFormat != VideoCodec
rule extension:
filename extension MUST NOT be treated as definitive VideoFormat identity
rule media_type:
MediaType SHOULD preserve applicable video MIME semantics
# ---------- VIDEO CODEC ----------
entity VideoCodec:
type: EncodingMetadata
examples:
- H264
- H265
- VP8
- VP9
- AV1
- MPEG2
- ProRes
rule video_codec:
VideoCodec describes encoded video stream
rule codec_container:
VideoCodec != container format
# ---------- FRAME GEOMETRY ----------
entity FrameGeometry:
type: SpatialMetadata
may_include:
- width
- height
- pixel_aspect_ratio
- display_aspect_ratio
rule dimensions:
width and height MUST be positive
rule aspect_ratio:
frame dimensions != display aspect ratio
when pixel aspect ratio or display metadata modifies presentation
# ---------- FRAME RATE ----------
entity FrameRate:
type: TemporalSamplingMetadata
may_include:
- frames_per_second
- mode
frame_rate_modes:
- constant
- variable
rule frame_rate:
FrameRate MUST be positive
rule variable_frame_rate:
variable frame rate SHOULD preserve timing information
rather_than assuming constant frame intervals
# ---------- BITRATE ----------
entity VideoBitrate:
type: MeasurementMetadata
may_include:
- value
- unit
- mode
rule bitrate:
bitrate SHOULD preserve whether value is:
- constant
- variable
- average
- peak
# ---------- COLOUR ----------
entity VideoColourMetadata:
type: RepresentationMetadata
may_include:
- colour_space
- transfer_characteristic
- matrix_coefficients
- colour_primaries
- dynamic_range
- bit_depth
rule colour:
colour metadata SHOULD be preserved
where accurate rendering depends on it
rule hdr:
HDR metadata SHOULD preserve transfer and mastering context
where available
# ---------- AUDIO TRACKS ----------
entity AudioTrack:
type: MediaTrack
may_include:
- track_identifier
- language
- codec
- channel_layout
- sample_rate
- bitrate
- role
audio_track_roles:
- primary
- commentary
- description
- alternate_language
- music
- effects
rule audio_track:
multiple AudioTracks SHOULD remain separately identifiable
# ---------- SUBTITLES ----------
entity SubtitleTrack:
type: TimedTextTrack
may_include:
- track_identifier
- language
- format
- hearing_impaired_metadata
- forced_status
rule subtitle:
SubtitleTrack SHOULD preserve timing and language
rule subtitle_caption_distinction:
subtitle != caption
where accessibility semantics distinguish them
# ---------- CAPTIONS ----------
entity CaptionTrack:
type: AccessibilityMetadata
may_include:
- track_identifier
- language
- timing
- speaker_labels
- sound_descriptions
- generation_method
rule captions:
captions SHOULD preserve spoken content and relevant non-speech audio
according_to accessibility purpose
rule automated_caption:
automatically generated captions MUST remain distinguishable
from human-verified captions
# ---------- AUDIO DESCRIPTION ----------
entity AudioDescriptionTrack:
subtype_of: AudioTrack
role: description
rule audio_description:
AudioDescriptionTrack SHOULD remain separately identifiable
from primary audio
# ---------- CHAPTERS ----------
entity VideoChapter:
type: MediaFragment
may_include:
- chapter_identifier
- title
- start_time
- end_time
rule chapter_time:
REQUIRE start_time <= end_time
rule chapter_bounds:
chapter end_time SHOULD NOT exceed VideoDuration
where duration is known
# ---------- THUMBNAILS ----------
entity Thumbnail:
type: ImageResource
may_include:
- timestamp
- width
- height
- format
- provenance
rule thumbnail:
Thumbnail SHOULD preserve relationship to source VideoResource
# ---------- RECORDING METADATA ----------
entity VideoRecordingMetadata:
type: TechnicalMetadata
may_include:
- camera
- lens
- recording_device
- recording_date
- location
- frame_rate
- resolution
- operator
rule recording:
recording metadata SHOULD remain distinguishable
from later editing and encoding metadata
rule recording_date:
recording_date != file_creation_date
# ---------- LOCATION ----------
entity VideoLocationMetadata:
type: SpatialMetadata
may_include:
- capture_location
- depicted_location
- coordinate_reference
rule location:
capture_location != depicted_location
unless explicitly established
# ---------- SUBJECT / CONTENT ----------
entity VideoSubjectMetadata:
type: SemanticMetadata
may_include:
- depicted_entity
- event
- concept
- scene
- activity
- keyword
rule automated_tag:
machine-generated video tag MUST remain distinguishable
from human-verified annotation
# ---------- GENERATED VIDEO ----------
entity GeneratedVideo:
subtype_of: VideoResource
generated_by: AIModelOrRenderingProcess
rule generated_video:
generated video SHOULD preserve generating process
where provenance is required
rule generated_recorded_distinction:
generated video != captured video
unless composite provenance explicitly includes captured source
# ---------- EDITING / TRANSFORMATION ----------
entity VideoTransformation:
type: ProcessingActivity
may_include:
- trim
- splice
- crop
- resize
- transcode
- stabilise
- colour_grade
- overlay
- compositing
- frame_interpolation
- audio_replacement
rule transformation:
transformed VideoRepresentation SHOULD preserve:
- source_video
- operation
- parameters
- software_or_agent
- timestamp
- output_representation
# ---------- RIGHTS ----------
entity VideoRights:
type: RightsMetadata
may_include:
- creator
- copyright_holder
- licence
- usage_rights
- attribution_requirement
- restrictions
rule rights:
VideoRights SHOULD remain distinct
from technical metadata and access state
# ---------- INTEGRITY ----------
entity VideoChecksum:
type: IntegrityMetadata
may_include:
- algorithm
- digest
rule checksum:
checksum applies to specific VideoRepresentation byte sequence
rule perceptual_fingerprint:
perceptual video fingerprint != cryptographic integrity hash
# ---------- VERSION ----------
entity VideoVersion:
type: VersionMetadata
may_include:
- version_identifier
- predecessor
- successor
- creation_time
- change_description
rule version:
material audiovisual or semantic change MAY create distinguishable VideoVersion
rule representation_change:
pure transcoding MAY create new VideoRepresentation
without creating new semantic VideoVersion
# ---------- PROVENANCE ----------
entity VideoProvenance:
type: ProvenanceMetadata
may_include:
- creator
- producer
- recording_device
- source_video
- generation_process
- editing_history
- transcoding_history
- software
- timestamps
rule provenance:
VideoMetadata SHOULD preserve origin and transformation history
at granularity available
# ---------- VALIDATION ----------
validation:
require:
- identifiable_video_resource
validate_if_present:
- video_identifier
- duration
- format
- video_codec
- audio_codec
- frame_geometry
- frame_rate
- bitrate
- colour_metadata
- audio_tracks
- subtitle_tracks
- captions
- chapters
- rights
- checksum
- provenance
reject:
- negative_video_duration
- invalid_frame_dimensions
- invalid_frame_rate
- contradictory_format_codec_metadata
- chapter_outside_video_bounds
- automated_caption_presented_as human_verified_without evidence
- perceptual_fingerprint_presented_as cryptographic_integrity_proof
- generated_video_presented_as captured_video_without provenance
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE:
"video metadata" ~= "metadata about video"
"video duration" ~= "recording duration" WHEN recording semantics apply
"video format" ~= "video file format"
"frame rate" ~= "frames per second" WHEN rate is constant or appropriately contextualised
"video captions" ~= "closed captions" WHEN timed accessibility text is intended
"video provenance" ~= "video origin and editing history"
PRESERVE distinctions:
video_resource != video_representation
format != video_codec
video_codec != audio_codec
frame_dimensions != display_aspect_ratio
frame_rate != bitrate
subtitle != caption
recording_date != file_creation_date
capture_location != depicted_location
automated_caption != human_verified_caption
perceptual_fingerprint != cryptographic_hash
transcoding != semantic_video_change
generated_video != captured_video
# ---------- CONFIDENCE ----------
CONFIDENCE:
explicit_video_metadata:
score: 1.00
parser_validated_video_format:
score: 0.99
explicit_stream_metadata:
score: 0.98
cryptographic_checksum_match:
score: 0.99
human_verified_caption:
score: 0.99
automated_caption:
score: dependent_on_caption_confidence
machine_generated_subject_tag:
score: <= 0.85
extension_inferred_format:
score: <= 0.70
ambiguous_video_metadata:
score: <= 0.60
action: preserve uncertainty
# ---------- UPDATE MODEL ----------
UPDATE_MODEL:
on_video_creation:
- assign VideoIdentifier
- record representation and stream metadata
- record creator or recording metadata
- calculate integrity metadata where required
- initialise provenance
on_video_transformation:
- preserve source VideoResource
- create transformed representation or version
- record operation and parameters
- recalculate checksum
- update provenance
on_caption_creation:
- preserve VideoResource identity
- create CaptionTrack
- record generation method
- preserve timing and confidence
- update provenance
on_format_conversion:
- preserve VideoResource identity where semantics are unchanged
- create new VideoRepresentation
- record source and target formats/codecs
- preserve transcoding provenance
# ---------- FLOW HASH ----------
FLOW_HASH:
inputs:
- ontology
- video_entities
- relationships
- identity_rules
- representation_rules
- track_rules
- accessibility_rules
- integrity_rules
- provenance_rules
- validation
- semantic_equivalence
- confidence
- update_model
canonicalisation:
- normalise_whitespace
- preserve_case_sensitive_identifiers
- sort_unordered_property_sets
- preserve_rule_order
output:
deterministic_semantic_hash
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION:
interpret_as:
- document metadata ontology
- video resource and representation model
- audiovisual track and accessibility structure
- video provenance and integrity model
operations:
- identify video resources
- resolve video representations
- inspect duration and format
- resolve video and audio codecs
- inspect frame geometry and frame rate
- inspect bitrate and colour metadata
- enumerate audio, subtitle, and caption tracks
- inspect chapters and thumbnails
- inspect recording and location metadata
- distinguish generated and captured video
- trace transformations
- verify integrity
- preserve provenance
constraints:
- do_not_equate_filename_with_identity
- do_not_equate_format_with_codec
- do_not_equate_subtitles_with_captions_when semantics differ
- do_not_present_automated_captions_as human_verified
- do_not_equate_perceptual_fingerprint_with cryptographic_integrity
- preserve_source_representation_tracks_transformations_rights_and_provenance
# ---------- QUERY MODEL ----------
query:
input:
- video_identifier
- video_type
- creator
- format
- video_codec
- duration
- frame_rate
- language
- caption
- version
- checksum
resolve:
1. identify VideoResource
2. resolve VideoIdentifier
3. inspect VideoRepresentations
4. inspect duration, format, and codecs
5. inspect frame geometry, frame rate, bitrate, and colour
6. inspect audio, subtitle, and caption tracks
7. inspect chapters, thumbnails, recording, and subject metadata
8. traverse versions and transformations
9. inspect rights, integrity, and provenance
10. return confidence
output:
- video_resource
- identifier
- representations
- duration
- format
- video_codec
- audio_codec
- frame_geometry
- frame_rate
- tracks
- captions
- integrity
- provenance
- confidence
# ---------- INFERENCE ----------
inference:
IF parser validates video representation
THEN identify VideoFormat
WITH confidence = 0.99
IF authoritative VideoIdentifier resolves uniquely
THEN identify VideoResource
WITH confidence = 1.00
IF transformed representation references source video
THEN infer derivation relationship
IF caption track has automated generation method
THEN classify caption as machine_generated
AND preserve confidence
IF metadata remains ambiguous
THEN preserve candidate interpretations
AND reduce confidence
# ---------- OUTPUT CONTRACT ----------
output:
ontology_entity: VideoMetadata
video_identity: machine_interpretable
representations: format_and_codec_aware
duration: explicit
frame_metadata: preserved
audiovisual_tracks: separately_addressable
captions_and_subtitles: distinguishable
recording_metadata: traceable
generated_recorded_distinction: preserved
integrity: verifiable
transformations: traceable
provenance: preserved
uncertainty: explicit
semantic_retrieval: enabled
end flow
Download Code
Copy to Clipboard