open-standards/wai/vocab/v2.shapes.ttl
Transaction Science 7fb55e8c17 wai: the refinement-only role, base admission as one table, and refines
SPEC registers the residual refinement capabilities wai.image.int_refine,
wai.video.int_refine, wai.audio.int_refine and wai.splat.int_refine, each
refinement-only: applied in a declared order to the output of the stage
below it, bound to that output's producer by content hash, and never decoded
on its own. Section 4 never takes step 3 or 5 with one; section 8 adds the
role and lists the envelopes its registration makes non-conforming.

SPEC section 5's Base admission table holds the bases of every capability
applied to a base's output, the refinements and the LCEVC enhancement layer.
codecs::BASE_ADMISSION is that table; enhancement_bases, companion_applies_to
and admits read it, and no other admission logic remains.

The registry gains the refinement kind and role. A refinement is not
dispatchable, never selected, never a companion or a companion's base, and
not in the video media class; its class is StandardDefined and, like the
audio scene, it composes another envelope's decoded output, so it is as
exact as the base it refines. The registry export is regenerated.

A WAI1 manifest gains the optional member refines, kept as JSON so a
malformed value still parses; container::Refines reads it and reports
refines-malformed. Wai::check_component_roles reports a refinement without
refines, with a fallback, as a fallback, and refines on any other capability.
The emit paths parse a refinement's WIR1 payload.

extensions/staged-delivery.md defines stage sets, the refines member, the
per-unit application algorithm with its closed list of reasons, holds and
batches, tiers and stage hashes, the residual form, deferral, live deadlines,
attestation, byte counting, and the WIR1 payload with its check order, caps,
declared cost and refusal codes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-02 00:02:12 -04:00

373 lines
12 KiB
Turtle

# Generated by `wai registry export` from wai-rs/src/codecs/registry.rs. Do not edit.
@prefix wai: <https://wai.transaction.science/vocab/v2#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# A WAI manifest, typed or not: every manifest has a wai (version) field. A WAI1 manifest names a
# capability, a WAI2 manifest a renditions list, and never both. The capability is a
# registered payload, companion or refinement capability that is not a candidate; the
# fallback a registered payload capability that is not a candidate. (A WAI1 naming a
# companion-only capability, or a refinement-only one without refines, parses but does
# not conform; the reference implementation's role check reports it.) media is
# informational, and a reader accepts a value it does not know
# (SPEC sections 3 and 8), so only its form is checked.
wai:ManifestShape a sh:NodeShape ;
sh:targetClass wai:Manifest ;
sh:targetSubjectsOf wai:wai ;
sh:targetSubjectsOf wai:intent ;
sh:property [ sh:path wai:capability ; sh:nodeKind sh:IRI ; sh:maxCount 1 ;
sh:in (
wai:wai.audio.aac
wai:wai.audio.ac4
wai:wai.audio.avs3
wai:wai.audio.flac
wai:wai.audio.iamf
wai:wai.audio.int_codec
wai:wai.audio.int_refine
wai:wai.audio.ivas
wai:wai.audio.mpegh
wai:wai.audio.opus
wai:wai.audio.scene
wai:wai.audio.score
wai:wai.avatar.pose
wai:wai.feed.state
wai:wai.film.linear
wai:wai.film.reel
wai:wai.generate.spectral
wai:wai.haptic.mihs
wai:wai.haptic.signal
wai:wai.image.avif
wai:wai.image.int_refine
wai:wai.image.jp2
wai:wai.image.jpeg
wai:wai.image.jpegai
wai:wai.image.jxl
wai:wai.image.png
wai:wai.mesh.draco
wai:wai.mesh.glb
wai:wai.meta.dovi
wai:wai.meta.hdr10plus
wai:wai.neural.bmshj2018
wai:wai.neural.cmic
wai:wai.neural.dac
wai:wai.neural.dcvc_fm
wai:wai.neural.dcvc_rt
wai:wai.neural.elic
wai:wai.neural.encodec32
wai:wai.neural.glc
wai:wai.neural.int_hyper
wai:wai.neural.int_mlicpp
wai:wai.neural.int_synth
wai:wai.neural.mbt2018_mean
wai:wai.neural.mimi
wai:wai.neural.mlicpp
wai:wai.neural.mlicv2
wai:wai.neural.snac
wai:wai.neural.video_bmshj2018
wai:wai.neural.wavtokenizer
wai:wai.pc.gpcc
wai:wai.pc.vpcc
wai:wai.prior.nnc
wai:wai.prior.set
wai:wai.quantum.circuit
wai:wai.semantic.clip
wai:wai.semantic.perco2
wai:wai.splat.4d
wai:wai.splat.int_codec
wai:wai.splat.int_refine
wai:wai.splat.spz
wai:wai.ternary.tt
wai:wai.text.xz
wai:wai.text.zstd
wai:wai.video.av1
wai:wai.video.av1.lossless
wai:wai.video.av2
wai:wai.video.avc
wai:wai.video.avs3
wai:wai.video.evc
wai:wai.video.evc.baseline
wai:wai.video.hevc
wai:wai.video.int_hyper
wai:wai.video.int_motion
wai:wai.video.int_refine
wai:wai.video.j2k
wai:wai.video.lcevc
wai:wai.video.vp9
wai:wai.video.vvc
wai:wai.world.live
wai:wai.world.model
wai:wai.world.replay
wai:wai.world.scene
) ] ;
sh:property [ sh:path wai:fallback ; sh:nodeKind sh:IRI ; sh:maxCount 1 ;
sh:in (
wai:wai.audio.aac
wai:wai.audio.ac4
wai:wai.audio.avs3
wai:wai.audio.flac
wai:wai.audio.iamf
wai:wai.audio.int_codec
wai:wai.audio.ivas
wai:wai.audio.mpegh
wai:wai.audio.opus
wai:wai.audio.scene
wai:wai.audio.score
wai:wai.avatar.pose
wai:wai.feed.state
wai:wai.film.linear
wai:wai.film.reel
wai:wai.generate.spectral
wai:wai.haptic.mihs
wai:wai.haptic.signal
wai:wai.image.avif
wai:wai.image.jp2
wai:wai.image.jpeg
wai:wai.image.jpegai
wai:wai.image.jxl
wai:wai.image.png
wai:wai.mesh.draco
wai:wai.mesh.glb
wai:wai.neural.bmshj2018
wai:wai.neural.cmic
wai:wai.neural.dac
wai:wai.neural.dcvc_fm
wai:wai.neural.dcvc_rt
wai:wai.neural.elic
wai:wai.neural.encodec32
wai:wai.neural.glc
wai:wai.neural.int_hyper
wai:wai.neural.int_mlicpp
wai:wai.neural.int_synth
wai:wai.neural.mbt2018_mean
wai:wai.neural.mimi
wai:wai.neural.mlicpp
wai:wai.neural.mlicv2
wai:wai.neural.snac
wai:wai.neural.video_bmshj2018
wai:wai.neural.wavtokenizer
wai:wai.pc.gpcc
wai:wai.pc.vpcc
wai:wai.prior.nnc
wai:wai.prior.set
wai:wai.quantum.circuit
wai:wai.semantic.clip
wai:wai.semantic.perco2
wai:wai.splat.4d
wai:wai.splat.int_codec
wai:wai.splat.spz
wai:wai.ternary.tt
wai:wai.text.xz
wai:wai.text.zstd
wai:wai.video.av1
wai:wai.video.av1.lossless
wai:wai.video.av2
wai:wai.video.avc
wai:wai.video.avs3
wai:wai.video.evc
wai:wai.video.evc.baseline
wai:wai.video.hevc
wai:wai.video.int_hyper
wai:wai.video.int_motion
wai:wai.video.j2k
wai:wai.video.vp9
wai:wai.video.vvc
wai:wai.world.live
wai:wai.world.model
wai:wai.world.replay
wai:wai.world.scene
) ] ;
sh:property [ sh:path wai:media ; sh:nodeKind sh:IRI ; sh:maxCount 1 ] ;
sh:property [ sh:path wai:intent ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:xone (
[ sh:property [ sh:path wai:capability ; sh:minCount 1 ] ]
[ sh:property [ sh:path wai:renditions ; sh:minCount 1 ] ]
) .
# A WAI2 component, in any role: its capability is a registered payload, companion or
# refinement capability that is not a candidate, and the base a companion names is a
# registered payload capability that is not a candidate.
wai:ComponentShape a sh:NodeShape ;
sh:targetClass wai:Component ;
sh:targetObjectsOf wai:renditions ;
sh:property [ sh:path wai:capability ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
sh:in (
wai:wai.audio.aac
wai:wai.audio.ac4
wai:wai.audio.avs3
wai:wai.audio.flac
wai:wai.audio.iamf
wai:wai.audio.int_codec
wai:wai.audio.int_refine
wai:wai.audio.ivas
wai:wai.audio.mpegh
wai:wai.audio.opus
wai:wai.audio.scene
wai:wai.audio.score
wai:wai.avatar.pose
wai:wai.feed.state
wai:wai.film.linear
wai:wai.film.reel
wai:wai.generate.spectral
wai:wai.haptic.mihs
wai:wai.haptic.signal
wai:wai.image.avif
wai:wai.image.int_refine
wai:wai.image.jp2
wai:wai.image.jpeg
wai:wai.image.jpegai
wai:wai.image.jxl
wai:wai.image.png
wai:wai.mesh.draco
wai:wai.mesh.glb
wai:wai.meta.dovi
wai:wai.meta.hdr10plus
wai:wai.neural.bmshj2018
wai:wai.neural.cmic
wai:wai.neural.dac
wai:wai.neural.dcvc_fm
wai:wai.neural.dcvc_rt
wai:wai.neural.elic
wai:wai.neural.encodec32
wai:wai.neural.glc
wai:wai.neural.int_hyper
wai:wai.neural.int_mlicpp
wai:wai.neural.int_synth
wai:wai.neural.mbt2018_mean
wai:wai.neural.mimi
wai:wai.neural.mlicpp
wai:wai.neural.mlicv2
wai:wai.neural.snac
wai:wai.neural.video_bmshj2018
wai:wai.neural.wavtokenizer
wai:wai.pc.gpcc
wai:wai.pc.vpcc
wai:wai.prior.nnc
wai:wai.prior.set
wai:wai.quantum.circuit
wai:wai.semantic.clip
wai:wai.semantic.perco2
wai:wai.splat.4d
wai:wai.splat.int_codec
wai:wai.splat.int_refine
wai:wai.splat.spz
wai:wai.ternary.tt
wai:wai.text.xz
wai:wai.text.zstd
wai:wai.video.av1
wai:wai.video.av1.lossless
wai:wai.video.av2
wai:wai.video.avc
wai:wai.video.avs3
wai:wai.video.evc
wai:wai.video.evc.baseline
wai:wai.video.hevc
wai:wai.video.int_hyper
wai:wai.video.int_motion
wai:wai.video.int_refine
wai:wai.video.j2k
wai:wai.video.lcevc
wai:wai.video.vp9
wai:wai.video.vvc
wai:wai.world.live
wai:wai.world.model
wai:wai.world.replay
wai:wai.world.scene
) ] ;
sh:property [ sh:path wai:companionOf ; sh:nodeKind sh:IRI ; sh:maxCount 1 ;
sh:in (
wai:wai.audio.aac
wai:wai.audio.ac4
wai:wai.audio.avs3
wai:wai.audio.flac
wai:wai.audio.iamf
wai:wai.audio.int_codec
wai:wai.audio.ivas
wai:wai.audio.mpegh
wai:wai.audio.opus
wai:wai.audio.scene
wai:wai.audio.score
wai:wai.avatar.pose
wai:wai.feed.state
wai:wai.film.linear
wai:wai.film.reel
wai:wai.generate.spectral
wai:wai.haptic.mihs
wai:wai.haptic.signal
wai:wai.image.avif
wai:wai.image.jp2
wai:wai.image.jpeg
wai:wai.image.jpegai
wai:wai.image.jxl
wai:wai.image.png
wai:wai.mesh.draco
wai:wai.mesh.glb
wai:wai.neural.bmshj2018
wai:wai.neural.cmic
wai:wai.neural.dac
wai:wai.neural.dcvc_fm
wai:wai.neural.dcvc_rt
wai:wai.neural.elic
wai:wai.neural.encodec32
wai:wai.neural.glc
wai:wai.neural.int_hyper
wai:wai.neural.int_mlicpp
wai:wai.neural.int_synth
wai:wai.neural.mbt2018_mean
wai:wai.neural.mimi
wai:wai.neural.mlicpp
wai:wai.neural.mlicv2
wai:wai.neural.snac
wai:wai.neural.video_bmshj2018
wai:wai.neural.wavtokenizer
wai:wai.pc.gpcc
wai:wai.pc.vpcc
wai:wai.prior.nnc
wai:wai.prior.set
wai:wai.quantum.circuit
wai:wai.semantic.clip
wai:wai.semantic.perco2
wai:wai.splat.4d
wai:wai.splat.int_codec
wai:wai.splat.spz
wai:wai.ternary.tt
wai:wai.text.xz
wai:wai.text.zstd
wai:wai.video.av1
wai:wai.video.av1.lossless
wai:wai.video.av2
wai:wai.video.avc
wai:wai.video.avs3
wai:wai.video.evc
wai:wai.video.evc.baseline
wai:wai.video.hevc
wai:wai.video.int_hyper
wai:wai.video.int_motion
wai:wai.video.j2k
wai:wai.video.vp9
wai:wai.video.vvc
wai:wai.world.live
wai:wai.world.model
wai:wai.world.replay
wai:wai.world.scene
) ] .
# The parameter-set pin (SPEC section 3.1). The JSON-LD context types no prior object,
# so the shape targets whatever wai:prior points at rather than a class. pinTier is a
# closed vocabulary; the tokens are the ones codecs::TIER_TOKENS holds.
wai:ParameterSetPinShape a sh:NodeShape ;
sh:targetObjectsOf wai:prior ;
sh:property [ sh:path wai:pinId ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path wai:pinSha256 ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ;
sh:pattern "^[a-f0-9]{64}$" ] ;
sh:property [ sh:path wai:pinDeterminism ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path wai:pinForm ; sh:datatype xsd:string ; sh:maxCount 1 ] ;
sh:property [ sh:path wai:pinTier ; sh:datatype xsd:string ; sh:maxCount 1 ;
sh:in ( "decode-equivalence" "entropy-consistency" "none" ) ] ;
sh:property [ sh:path wai:pinSupersedes ; sh:node wai:SupersedesShape ; sh:maxCount 1 ] .
# supersedes names a set as a pin names one, by sha256 and, if it is pinned in a
# declared form, form; it has no id, determinism or tier.
wai:SupersedesShape a sh:NodeShape ;
sh:property [ sh:path wai:pinSha256 ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ;
sh:pattern "^[a-f0-9]{64}$" ] ;
sh:property [ sh:path wai:pinForm ; sh:datatype xsd:string ; sh:maxCount 1 ] .