Changelog
Changes to the OATS schemas in each release, newest first.
Releases before 1.0.0 make no compatibility promises. Check for breaking changes before you upgrade a pinned version.
-
The launch release of OATS (Open Annotation Task Schemas).
Breaking changes
- Every schema's top-level
versionkeyword is renamedx-version. The stable JSON Schema specification only permits non-standard keywords with thex-prefix; draft 2020-12 ignores unknown keywords either way, so this eases the move to the stable specification. Records are unaffected. Tools that read a schema's version should readx-version, and fall back toversionfor releases up to 0.7.0, which keep it. regression:pointsmust hold at least one point. A regression with no points made no prediction.
Added
ranking: a ranked list of items related to a query, such as search results, retrieved passages, reranker output, recommendations and near-duplicate matches. Each result has arank(tied items share one), anidof up to 2048 characters (so it can hold a URI; the second exception to the 128-character identifier rule), and an optional normalizedscore.entity-extraction: optionalrelationsrecord directed links between entities, such as which price belongs to which line item. Relation labels can come fromrelation_vocabularyorrelation_vocabulary_url. Whenrelationsis not empty, every entity requires anid.
Changed
- An empty main list no longer needs other fields alongside it. In
classification,entity-extraction,object-detectionandtemporal-segmentation, an empty list previously requiredvocabulary,vocabulary_urlorproducer. An empty list should mean "checked and found nothing". - The
x-licensenotice is "Copyright 2025-2026 The OATS Authors". Copyright is held by the contributors listed inAUTHORS. The licence is still Apache-2.0.
Fixed
document-extraction: thepage_widthandpage_heightdescriptions no longer imply that page sizes must be inpxorptwhenunitisnormalizedorper_mille.- Descriptions no longer assume a record is attached to a file or annotation:
classification.labels,object-detection.objects(and an object'sidandscore), andtrack_idinaudio-transcriptionandtemporal-segmentation.
- Every schema's top-level
-
The first release under the OATS name, and the first served from oatschema.org.
Breaking changes
- Every schema's
$idis nowhttps://oatschema.org/0.7.0/<name>, so each version has its own identifier. Earlier releases keep theirhttps://dorsalhub.com/schemas/open/<name>identifiers. audio-transcription:track_idandspeaker.idmust be strings of at most 128 characters. Numeric identifiers are written as strings, such as"0".
Added
temporal-segmentation: labelled time intervals in a media source, such as chapters, scenes, shots, speaker turns and detected events. Segments may overlap, may nest, and need not cover the whole source.
Changed
- Identifier fields (
idand names ending in_id) are strings of at most 128 characters in every schema. The one exception is the GeoJSON featureidingeolocation. x-license.urlpoints to the licence in oatschema/oats.
- Every schema's
-
Fixed
- Coordinate limits that depend on
unitno longer apply whenunitis missing. Previously, a record withoutunitwas silently limited to coordinates of at most 1.unitis now required whenever geometry is present.
Changed
- Every open object limits the length of its keys.
- Inline
vocabularylists must be unique and hold at most 100 labels. Usevocabulary_urlfor larger vocabularies. document-extraction,entity-extractionandobject-detectionshare identical geometry definitions.entity-extraction: an entity's location can be a text span.geolocationfollows RFC 7946.regression:quantile_levelis required whenstatisticis"quantile", and only allowed then.llm-output: addsgeneration_params.top_kandgeneration_metadata.usage.cached_prompt_tokens.
- Coordinate limits that depend on
-
Changed
document-extraction:textis only required whenblock_typeis"text"or"line", so purely visual elements such as logos no longer need placeholder text.document-extraction:block_typeaccepts"multi_polygon", for blocks that are visually split or occluded. This maps one-to-one onto COCO segmentation arrays.document-extraction:page_widthandpage_heightaccept either a single number or a list of widths or heights for specific pages, for documents with mixed page sizes.
-
Added
audio-transcription:duration.
-
Added
embedding: sparse vectors, as an object with parallelindicesandvaluesarrays and adimensionscount. Plain arrays of numbers still work.
Changed
embedding:targetmay be up to 256 characters, to fit file paths and longer hashes.
-
Changed
- The
_licensefield is renamedx-license, to follow JSON Schema's rules for unknown keywords.
- The
-
Fixed
entity-extraction: polygons no longer accept arbitrary extra fields.
-
Fixed
- Every
date-timestring is limited to 128 characters.
- Every