Docs / Schemas / temporal-segmentation
Temporal Segmentation 0.8.0
Represent labelled time intervals within a media source, such as chapters, scenes, shots, speaker turns or detected events. Segments may overlap, may nest, and need not cover the whole source.
$idhttps:// oatschema.org/ 0.8.0/ temporal-segmentation - Latest
https:// oatschema.org/ temporal-segmentation - Versions
-
- 0.8.0
- 0.7.0
- Source
- v0.8.0 on GitHub
Schema
{ "x-license": { "id": "Apache-2.0", "notice": "Copyright 2025-2026 The OATS Authors", "url": "https://github.com/oatschema/oats/blob/main/LICENSE" }, "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://oatschema.org/0.8.0/temporal-segmentation", "title": "Temporal Segmentation", "x-version": "0.8.0", "description": "Represent labelled time intervals within a media source, such as chapters, scenes, shots, speaker turns or detected events. Segments may overlap, may nest, and need not cover the whole source.", "type": "object", "properties": { "producer": { "type": "string", "description": "The creator (model, tool or author) of these segments (e.g., 'PySceneDetect', 'pyannote', 'Manual Review').", "maxLength": 1024 }, "track_id": { "type": "string", "description": "(Optional) Identifier for the specific audio or video track in the source media. Numeric identifiers are written as strings (e.g., '0').", "maxLength": 128 }, "duration": { "type": "number", "description": "The total duration of the source media in seconds. When present, no segment's end_time may exceed it.", "minimum": 0 }, "vocabulary": { "type": "array", "description": "A list of the possible segment labels. For more than 100 labels, use 'vocabulary_url'.", "maxItems": 100, "uniqueItems": true, "items": { "type": "string", "description": "A single valid label from the vocabulary.", "maxLength": 128 } }, "vocabulary_url": { "type": "string", "description": "A URL pointing to a more detailed external vocabulary or ontology.", "format": "uri", "maxLength": 2048 }, "score_explanation": { "type": "string", "description": "Defines the meaning of the 'score' field.", "maxLength": 256 }, "segments": { "type": "array", "description": "The labelled time intervals. Can be empty if no segments were found.", "maxItems": 100000, "items": { "type": "object", "description": "A single labelled time interval.", "properties": { "id": { "type": "string", "description": "An identifier for this segment (e.g., 'scene-12'). Must be unique within the record.", "maxLength": 128 }, "parent_id": { "type": "string", "description": "The id of the segment that contains this one (e.g., the chapter containing a scene). Must be the id of another segment in the record, and this segment must lie within its parent's interval.", "maxLength": 128 }, "group_id": { "type": "string", "description": "An identifier for the entity this segment belongs to. Segments sharing a group_id belong to the same entity (e.g., all turns of speaker 'SPEAKER_00'). Numeric identifiers, such as diarization cluster numbers, are written as strings (e.g., '0').", "maxLength": 128 }, "label": { "type": "string", "description": "The category of the segment (e.g., 'chapter', 'scene', 'speaker', 'explosion'). Must be a member of 'vocabulary' when it is present.", "maxLength": 128 }, "title": { "type": "string", "description": "A human-readable name for this segment (e.g., a chapter title).", "maxLength": 128 }, "description": { "type": "string", "description": "A description of what happens in this segment.", "maxLength": 1024 }, "start_time": { "type": "number", "description": "Segment start time in seconds from the start of the source.", "minimum": 0 }, "end_time": { "type": "number", "description": "Segment end time in seconds from the start of the source. Must not be earlier than start_time; equal times mark an instantaneous event.", "minimum": 0 }, "score": { "type": "number", "description": "The confidence that the label applies to this interval, ranging from 0.0 (uncertain) to 1.0 (certain).", "minimum": 0, "maximum": 1 }, "attributes": { "type": "object", "description": "Arbitrary metadata relevant to this segment.", "maxProperties": 16, "propertyNames": { "maxLength": 128 }, "additionalProperties": { "anyOf": [ { "type": "string", "maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "null" } ] } } }, "required": [ "label", "start_time", "end_time" ], "additionalProperties": false } }, "attributes": { "type": "object", "description": "Arbitrary metadata relevant to this record (e.g., annotator, source, job ID).", "maxProperties": 16, "propertyNames": { "maxLength": 128 }, "additionalProperties": { "anyOf": [ { "type": "string", "maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "null" } ] } } }, "required": [ "segments" ], "additionalProperties": false}
Examples
Records that pass validation against this schema.
temporal-segmentation-3
{ "producer": "sports-event-detector-v2", "vocabulary_url": "https://example.com/vocabularies/football-events.json", "score_explanation": "Detector confidence probability.", "segments": [ { "label": "goal", "start_time": 1312.0, "end_time": 1312.0, "score": 0.97 }, { "label": "celebration", "start_time": 1312.4, "end_time": 1341.9, "score": 0.82, "attributes": { "team": "home" } }, { "label": "replay", "start_time": 1330.0, "end_time": 1362.5, "score": 0.76 } ]}
temporal-segmentation-4
{ "producer": "ActionFormer", "vocabulary_url": "https://github.com/activitynet/ActivityNet/blob/master/Evaluation/data/activity_net.v1-3.min.json", "score_explanation": "Detection confidence for the action class over the interval.", "segments": [ { "label": "Long jump", "start_time": 12.34, "end_time": 27.91, "score": 0.842 }, { "label": "Triple jump", "start_time": 11.02, "end_time": 29.4, "score": 0.311 }, { "label": "Long jump", "start_time": 61.75, "end_time": 74.08, "score": 0.127 } ], "attributes": { "source_format": "ActivityNet v1.3 results", "video_id": "v_8onOVVuN_Is" }}
temporal-segmentation-5
{ "producer": "PySceneDetect", "vocabulary": [ "scene" ], "segments": [ { "id": "scene-1", "label": "scene", "start_time": 0.0, "end_time": 3.754, "attributes": { "start_frame": 1, "end_frame": 90 } }, { "id": "scene-2", "label": "scene", "start_time": 3.754, "end_time": 8.925, "attributes": { "start_frame": 91, "end_frame": 214 } }, { "id": "scene-3", "label": "scene", "start_time": 8.925, "end_time": 16.767, "attributes": { "start_frame": 215, "end_frame": 402 } } ], "attributes": { "source_format": "PySceneDetect scene list CSV" }}
temporal-segmentation-2
{ "producer": "pyannote/speaker-diarization-3.1", "track_id": "1", "vocabulary": [ "speaker" ], "segments": [ { "id": "turn-1", "group_id": "SPEAKER_00", "label": "speaker", "start_time": 0.48, "end_time": 6.12 }, { "id": "turn-2", "group_id": "SPEAKER_01", "label": "speaker", "start_time": 5.8, "end_time": 11.04 }, { "id": "turn-3", "group_id": "SPEAKER_00", "label": "speaker", "start_time": 10.95, "end_time": 14.3 }, { "id": "turn-4", "group_id": "SPEAKER_02", "label": "speaker", "start_time": 14.62, "end_time": 16.725 } ], "attributes": { "source_format": "RTTM", "uri": "meeting" }}
temporal-segmentation-1
{ "producer": "Manual Review", "duration": 1834.5, "vocabulary": [ "chapter", "scene" ], "segments": [ { "id": "ch-1", "label": "chapter", "title": "Intro", "start_time": 0, "end_time": 95.2 }, { "id": "ch-2", "label": "chapter", "title": "Building the Frame", "start_time": 95.2, "end_time": 1834.5 }, { "id": "sc-1", "parent_id": "ch-1", "label": "scene", "description": "Host introduces the project in the workshop.", "start_time": 0, "end_time": 41.0 }, { "id": "sc-2", "parent_id": "ch-1", "label": "scene", "description": "Montage of the finished piece.", "start_time": 41.0, "end_time": 95.2 }, { "id": "sc-3", "parent_id": "ch-2", "label": "scene", "start_time": 95.2, "end_time": 1834.5 } ]}
Fields
-
producerstringThe creator (model, tool or author) of these segments (e.g., 'PySceneDetect', 'pyannote', 'Manual Review').
- at most 1024 characters
-
track_idstring(Optional) Identifier for the specific audio or video track in the source media. Numeric identifiers are written as strings (e.g., '0').
- at most 128 characters
-
durationnumberThe total duration of the source media in seconds. When present, no segment's end_time may exceed it.
- ≥ 0
-
vocabularyarray of stringA list of the possible segment labels. For more than 100 labels, use 'vocabulary_url'.
Each item: A single valid label from the vocabulary.
- at most 100 items
- items must be unique
- each at most 128 characters
-
vocabulary_urlstringA URL pointing to a more detailed external vocabulary or ontology.
- at most 2048 characters
- format
uri
-
score_explanationstringDefines the meaning of the 'score' field.
- at most 256 characters
-
segmentsarray of object requiredThe labelled time intervals. Can be empty if no segments were found.
Each item: A single labelled time interval.
- at most 100000 items
-
idstringAn identifier for this segment (e.g., 'scene-12'). Must be unique within the record.
- at most 128 characters
-
parent_idstringThe id of the segment that contains this one (e.g., the chapter containing a scene). Must be the id of another segment in the record, and this segment must lie within its parent's interval.
- at most 128 characters
-
group_idstringAn identifier for the entity this segment belongs to. Segments sharing a group_id belong to the same entity (e.g., all turns of speaker 'SPEAKER_00'). Numeric identifiers, such as diarization cluster numbers, are written as strings (e.g., '0').
- at most 128 characters
-
labelstring requiredThe category of the segment (e.g., 'chapter', 'scene', 'speaker', 'explosion'). Must be a member of 'vocabulary' when it is present.
- at most 128 characters
-
titlestringA human-readable name for this segment (e.g., a chapter title).
- at most 128 characters
-
descriptionstringA description of what happens in this segment.
- at most 1024 characters
-
start_timenumber requiredSegment start time in seconds from the start of the source.
- ≥ 0
-
end_timenumber requiredSegment end time in seconds from the start of the source. Must not be earlier than start_time; equal times mark an instantaneous event.
- ≥ 0
-
scorenumberThe confidence that the label applies to this interval, ranging from 0.0 (uncertain) to 1.0 (certain).
- 0 to 1
-
attributesobjectArbitrary metadata relevant to this segment.
- at most 16 properties
- keys at most 128 characters
-
*string | number | boolean | nullAny other key.
- string: at most 1024 characters
-
attributesobjectArbitrary metadata relevant to this record (e.g., annotator, source, job ID).
- at most 16 properties
- keys at most 128 characters
-
*string | number | boolean | nullAny other key.
- string: at most 1024 characters
Copyright 2025-2026 The OATS Authors. Licensed under Apache-2.0.