Formal OWL vocabulary for canvas elements, relations, animations, generators, and semantic dimensions.
pp: vocabulary) is dedicated to the public domain under
CC0 1.0 Universal. You may use these terms in your own canvases, exports, training data, models, or downstream systems with no licensing obligations. (Note: this CC0 dedication covers only the vocabulary; PinePaper Studio software itself is separately licensed — see Terms of Service.)
@prefix pp: <https://pinepaper.studio/ontology/>
| Name | Description | Parent | Anchor | Abstract | Parameters |
|---|---|---|---|---|---|
| Concept | Abstract conceptual resource — addressable independently of canvas items. | — | skos:Concept | Yes | — |
| CanvasElement | Abstract canvas element | — | schema:CreativeWork | Yes | — |
| CanvasShape | Abstract shape element | CanvasElement | — | Yes | — |
| CanvasText | Abstract text element | CanvasElement | — | Yes | — |
| CanvasContainer | Abstract container element | CanvasElement | — | Yes | — |
| Diagram | Abstract diagram domain — flowcharts, UML, network topologies. Parent of pp:DiagramShape, pp:Connector, and the flow-relation hierarchy. | CanvasElement | — | Yes | — |
| GeoFeature | Abstract geographic feature — regions, markers, administrative areas. Parent of pp:MapRegion and pp:Marker. Matches the GeoJSON \"feature\" concept. | CanvasElement | — | Yes | — |
| Template | A motion graphics template | — | schema:VisualArtwork | — | |
| Text | Text element | CanvasText | schema:CreativeWork | — | |
| Circle | Circle shape (geometrically: ellipse where rx=ry) | CanvasShape | — | — | |
| Rectangle | Rectangle shape | CanvasShape | — | — | |
| Path | Vector path — semantically incomplete without open/closed distinction. Defined by its curveType (mathematical function family). Refined to OpenPath or ClosedPath during graph extraction. | CanvasShape | — | — | |
| OpenPath | Open path (trajectory/stroke) — has start and end points, does not enclose area. Defined by curveType: the mathematical function governing its segments. | Path | — | — | |
| ClosedPath | Closed path (region/boundary) — encloses area, no start/end distinction. Functionally equivalent to a shape defined by its boundary equation. | Path | — | — | |
| Star | Star shape (geometrically: concave polygon with alternating radii) | CanvasShape | — | — | |
| Triangle | Triangle shape (geometrically: 3-sided polygon) | CanvasShape | — | — | |
| Polygon | N-sided regular polygon | CanvasShape | — | — | |
| Ellipse | Ellipse shape | CanvasShape | — | — | |
| Line | Line segment — 2-point open path with curveType: linear | CanvasShape | — | — | |
| Arc | Arc segment — open path subset with curveType: arc | CanvasShape | — | — | |
| Group | Item group/container | CanvasContainer | — | — | |
| LetterCollage | Styled text collage | CanvasText | — | — | |
| Precomp | Nested composition | CanvasContainer | — | — | |
| Skeleton | Rigging skeleton | CanvasContainer | — | — | |
| Bone | Skeleton bone | CanvasElement | — | — | |
| Pose | Named bone-angle map saved on a skeleton, addressable by id. Multiple poses per skeleton form a pose library. | Concept | — | — | |
| ShapeKey | Per-item visual delta (segments, opacity, color, size) saved on a skeleton with a rest baseline. Weighted blends drive facial-style animation. | Concept | — | — | |
| IKChain | Inverse-kinematics chain on a skeleton — ordered bones + solver (fabrik / two_bone / ccd), optional pole vector, optional driving target item. | Concept | — | — | |
| Event | Named event channel — pulsed by interaction relations (on_click_fire, etc.) and listened to by reaction relations (on_event_set_property, etc.). Carries optional payload (Numeric/String/Boolean/Pulse). Frame-coherent dispatch. | CanvasElement | — | — | |
| BonePhysics | Verlet integration layer over a skeleton — each bone has a particle at its tip, distance constraints preserve bone lengths, spring motors pull toward animated angles. Enabled per skeleton; blendWeight per bone mixes animated vs simulated. Use for hit reactions, hair/tail secondary motion, ragdoll. | Concept | — | — | |
| BoneJiggle | Secondary-motion config attached to a bone — overshoots and oscillates around the animated angle with stiffness/damping. Use for jiggly accessories (ponytail, antenna, scarf) without authoring per-frame keyframes. | Concept | — | stiffness (default 100) damping (default 0.85) gravity (default 0) | |
| BoneCollider | Collision shape that bone-physics particles bump against. Lives on a skeleton; multiple colliders per skeleton are allowed. Concrete subtypes select the shape primitive. | Concept | — | Yes | — |
| GroundCollider | Horizontal ground plane at a fixed y. Bones above this y stay above it — used for floors and standing surfaces. | BoneCollider | — | y (px, default 600) | |
| CircleCollider | Circular obstacle. Bones pushed out radially when they enter the disc. Use for balls, posts, round platforms. | BoneCollider | — | x (px, default 0) y (px, default 0) radius (px, default 50) | |
| RectCollider | Axis-aligned rectangular obstacle. Bones pushed out to the nearest edge. Use for boxes, walls, platforms. | BoneCollider | — | x (px, default 0) y (px, default 0) width (px, default 100) height (px, default 100) | |
| PathSkinning | Per-vertex bone-weight binding of a Path or CompoundPath to a skeleton — linear blend skinning in 2D. Each path segment carries a list of (boneId, weight) influences, computed once at skin time from vertex-to-bone distances. Use for cloth, capes, and any deformable surface that should flex with the underlying rig. | Concept | — | maxInfluences (default 2) maxDistance (px, default 150) falloff (default 2) | |
| SpriteSheet | Atlas+metadata package generated by rendering a rigged character across multiple poses or an animation timeline. Contains the packed image (TexturePacker JSON Hash format), per-frame uv data, and named animation cycles (e.g., walk / run / idle). Use to ship character animation as a single image for game engines or pre-rendered playback. | CanvasElement | schema:ImageObject | padding (px, default 1) framePadding (px, default 4) powerOfTwo (default true) maxAtlasSize (px, default 4096) | |
| SpriteFrame | Single frame inside a pp:SpriteSheet — a captured raster of the rigged character at one pose. Has a name, source rect in the atlas, trim metadata, and the original capture bounds. | Concept | — | — | |
| SpriteAnimation | Named playback cycle in a pp:SpriteSheet — ordered list of frame names, playback FPS, loop flag, and direction (forward / reverse / pingpong). Game engines and PinePaper's built-in player consume this for character animation. | Concept | — | fps (frames/s, default 12) loop (default true) direction (default forward) | |
| SpritePlayer | Runtime playback session for a pp:SpriteAnimation on the canvas. Owns the per-frame delta-time accumulator, the current frame index, and the Raster item displaying the active frame. Use to play a generated atlas back on the canvas without re-rigging. | Concept | — | — | |
| VideoClip | Video media item — frame-sampled raster source with playhead, in/out trim, and optional per-frame GPU filters. Referenced by pp:MediaRef handle. | CanvasElement | schema:VideoObject | — | |
| AudioClip | Audio media item — sample-buffer source with volume, gain, and timeline placement. May coexist with a video pp:MediaRef or stand alone. | CanvasElement | schema:AudioObject | — | |
| MediaRef | Shared media handle for a video / audio source. Multiple clips can reference the same source — two timeline copies of one uploaded video share one MediaRef. Use this to deduplicate media across a scene and across exports. | Concept | — | — | |
| PhysicsBody | Box2D rigid body attached to a canvas item. Subtype determines simulation behavior: static (immobile), dynamic (full sim), kinematic (animation-driven, can push dynamics). | Concept | — | Yes | — |
| StaticBody | Immobile rigid body — collides with dynamics but never moves under force. Used for walls and obstacles. | PhysicsBody | — | — | |
| DynamicBody | Fully simulated rigid body — gravity, forces, impulses, collisions all act on it. | PhysicsBody | — | — | |
| KinematicBody | Animation-driven rigid body — ignores forces but pushes dynamic bodies. Used for animated platforms, controlled characters. | PhysicsBody | — | — | |
| PhysicsGround | Convenience static body at the bottom of the canvas — provides a floor for dynamic bodies to land on. | StaticBody | — | — | |
| PhysicsJoint | Constraint between two physics bodies. Subtype determines the degrees of freedom allowed. | Concept | — | Yes | — |
| RevoluteJoint | Hinge joint — bodies pivot around a shared anchor point with optional motor and angle limits. | PhysicsJoint | — | — | |
| DistanceJoint | Fixed-length tether between two bodies — like a rigid rope. | PhysicsJoint | — | — | |
| WeldJoint | Rigidly fuses two bodies — eliminates relative motion. Used for compound objects. | PhysicsJoint | — | — | |
| SceneScript | Time-orchestrated container of character actions on a timeline. Loops, plays at variable speed, seekable. | Concept | — | — | |
| SceneAction | Single scheduled action inside a pp:SceneScript. Concrete subtypes are the composable character verbs (move/jump/crouch/idle/custom). All actions accept a duration (seconds) at the SceneScript level controlling how long they remain active. | Concept | — | Yes | — |
| actionMoveLeft | Walk-cycle action toward negative-X. Per-tick displacement = speed*delta. Defaults: speed=120 px/s, so 2 px/frame at 60 Hz. | SceneAction | — | speed (px/s, default 120) delta (s, default 0.01667) | |
| actionMoveRight | Walk-cycle action toward positive-X. Per-tick displacement = speed*delta. Defaults: speed=120 px/s, so 2 px/frame at 60 Hz. | SceneAction | — | speed (px/s, default 120) delta (s, default 0.01667) | |
| actionJump | Parabolic-arc jump with anticipation and landing squash. Height/duration parametrize the arc; gravity is derived to make the character return to ground after `duration` seconds. | SceneAction | — | height (px, default 100) duration (s, default 0.6) | |
| actionCrouch | Crouched pose hold for the action duration. No parameters — the pose is fixed; duration is set on the SceneAction wrapper. | SceneAction | — | — | |
| actionIdle | Idle / rest pose hold for the action duration. No parameters — clears velocity and returns to the idle pose. | SceneAction | — | — | |
| DataVisualization | Abstract data visualization — classified along 5 orthogonal dimensions: mark primitive, coordinate system, encoding channel, analytical task, and composition mode | CanvasElement | schema:CreativeWork | Yes | — |
| MarkType | Abstract mark primitive — the visual element used to represent data points | — | — | Yes | — |
| PointMark | Discrete position mark (scatter, bubble, dot) | MarkType | — | — | |
| LineMark | Connected trajectory mark (line, step, spline) | MarkType | — | — | |
| BarMark | Rectangular extent mark (bar, column, histogram bin) | MarkType | — | — | |
| AreaMark | Filled region mark (area, stream, band) | MarkType | — | — | |
| ArcMark | Angular sector mark (pie slice, donut, sunburst) | MarkType | — | — | |
| CellMark | Grid cell mark (heatmap, matrix, waffle) | MarkType | — | — | |
| TextMark | Data-positioned text mark (word cloud, label) | MarkType | — | — | |
| CoordinateSystem | Abstract coordinate system for spatial data mapping | — | — | Yes | — |
| CartesianCoordinates | Cartesian X/Y axes — the most common coordinate system for charts | CoordinateSystem | — | — | |
| PolarCoordinates | Polar angle/radius coordinates (pie, radar, rose charts) | CoordinateSystem | — | — | |
| GeographicCoordinates | Geographic lat/lon projection (choropleth, bubble map) | CoordinateSystem | — | — | |
| ParallelCoordinates | Parallel axes for multivariate comparison | CoordinateSystem | — | — | |
| EncodingChannel | Abstract visual encoding channel — maps data values to perceptual properties | — | — | Yes | — |
| PositionEncoding | Position on x/y axes — highest-bandwidth encoding | EncodingChannel | — | — | |
| SizeEncoding | Width, height, or radius — encodes magnitude | EncodingChannel | — | — | |
| ColorEncoding | Fill, stroke, or opacity — encodes category or intensity | EncodingChannel | — | — | |
| ShapeEncoding | Point shape or dash pattern — encodes category | EncodingChannel | — | — | |
| AngleEncoding | Rotation or arc sweep — encodes proportion | EncodingChannel | — | — | |
| TextEncoding | Label content — encodes identity or value | EncodingChannel | — | — | |
| AnalyticalTask | Abstract analytical task — the question a visualization helps answer | — | — | Yes | — |
| ComparisonTask | Compare magnitudes across categories (which is bigger?) | AnalyticalTask | — | — | |
| TrendTask | Show change over time (how does it evolve?) | AnalyticalTask | — | — | |
| DistributionTask | Show spread or frequency of values (how is it distributed?) | AnalyticalTask | — | — | |
| CompositionTask | Show parts of a whole (what proportion?) | AnalyticalTask | — | — | |
| RelationshipTask | Show correlation between variables (how do they relate?) | AnalyticalTask | — | — | |
| SpatialTask | Show geographic distribution (where?) | AnalyticalTask | — | — | |
| HierarchyTask | Show nested structure (how is it organized?) | AnalyticalTask | — | — | |
| CompositionMode | Abstract composition mode — how multiple data series are visually arranged | — | — | Yes | — |
| SingleSeries | One data series displayed alone | CompositionMode | — | — | |
| StackedSeries | Series stacked vertically (cumulative) | CompositionMode | — | — | |
| GroupedSeries | Series placed side by side for comparison | CompositionMode | — | — | |
| LayeredSeries | Series overlaid with transparency | CompositionMode | — | — | |
| FacetedSeries | Small multiples — separate panels per series | CompositionMode | — | — | |
| BarChart | Bar chart — rectangular marks on Cartesian axes for categorical comparison | DataVisualization | — | — | |
| LineChart | Line chart — connected marks showing trends over a continuous axis | DataVisualization | — | — | |
| ScatterPlot | Scatter plot — point marks encoding two quantitative variables as position | DataVisualization | — | — | |
| AreaChart | Area chart — filled region under a line, showing volume and trends | DataVisualization | — | — | |
| Histogram | Histogram — binned bar chart showing value distribution | DataVisualization | — | — | |
| BubbleChart | Bubble chart — scatter plot with size-encoded third variable | ScatterPlot | — | — | |
| PieChart | Pie chart — arc marks in polar coordinates showing part-to-whole | DataVisualization | — | — | |
| Heatmap | Heatmap — cell marks with color encoding for matrix data | DataVisualization | — | — | |
| StackedBarChart | Stacked bar chart — bars subdivided by category showing composition | BarChart | — | — | |
| DiagramShape | Flowchart/UML shape | Diagram | — | — | |
| FlowchartShape | Abstract flowchart shape | DiagramShape | — | Yes | — |
| ProcessShape | Process/task step | FlowchartShape | — | — | |
| DecisionShape | Decision/gateway diamond | FlowchartShape | — | — | |
| TerminalShape | Start/end terminal | FlowchartShape | — | — | |
| DataShape | Data input/output parallelogram | FlowchartShape | — | — | |
| DocumentShape | Document shape | FlowchartShape | — | — | |
| DatabaseShape | Database/data store cylinder | FlowchartShape | — | — | |
| PreparationShape | Preparation/setup step | FlowchartShape | — | — | |
| UMLShape | Abstract UML shape | DiagramShape | — | Yes | — |
| UMLClassShape | UML class box | UMLShape | — | — | |
| UMLUseCaseShape | UML use case ellipse | UMLShape | — | — | |
| UMLActorShape | UML actor stick figure | UMLShape | — | — | |
| NetworkShape | Abstract network topology shape | DiagramShape | — | Yes | — |
| CloudShape | Cloud/service shape | NetworkShape | — | — | |
| ServerShape | Server/host shape | NetworkShape | — | — | |
| Connector | Diagram connector | Diagram | — | — | |
| SequenceConnector | Sequence/control flow connector | Connector | — | — | |
| DataConnector | Data flow connector | Connector | — | — | |
| AssociationConnector | Association connector | Connector | — | — | |
| DependencyConnector | Dependency connector | Connector | — | — | |
| MapRegion | Geographic region | GeoFeature | schema:AdministrativeArea | — | |
| Marker | Map marker | GeoFeature | schema:Place | — | |
| MaskedItem | Item with clipping mask | CanvasElement | — | — | |
| Image | Raster/bitmap image | CanvasElement | schema:ImageObject | — | |
| CompoundPath | Multiple sub-paths as single item (SVG imports, boolean ops) | CanvasShape | — | — | |
| Unclassified | Item type not expressible in current vocabulary. Enables vocabulary gap discovery — count and inspect unclassified items to identify missing types. | CanvasElement | — | — |
| Name | Description | Category | Behavior | Parent | Parameters |
|---|---|---|---|---|---|
| Relation | Abstract relation | abstract | — | — | — |
| SpatialRelation | Position-based relation | abstract | — | Relation | — |
| TransformRelation | Orientation/scale-based relation | abstract | — | Relation | — |
| AnimationRelation | Time-based animation relation | abstract | — | Relation | — |
| ProceduralRelation | Procedural/expression relation | abstract | — | Relation | — |
| contains | Parent-child containment | structural | — | — | — |
| maskedBy | Clipped by mask shape | structural | — | — | — |
| orbits | Source revolves around target at a fixed radius. Use for celestial mechanics, satellites, rotating-around-X relationships. | spatial | constraint | SpatialRelation | — |
| follows | Smooth pursuit with lag — source asymptotically approaches target. Use for trailing, delay, easing motion. Contrast: attached_to is rigid (zero lag). | spatial | constraint | SpatialRelation | — |
| attachedTo | Rigid parent-child transform — source moves with target instantly via fixed offset. Zero-lag variant of follows. Use for labels, attachments, child objects. | spatial | constraint | SpatialRelation | — |
| maintainsDistance | Source stays at a fixed distance from target as either moves. Use for tethering, leash dynamics, fixed-spacing groups. | spatial | constraint | SpatialRelation | — |
| pointsAt | Source rotates to always face target. Use for compass needles, gun turrets, gaze direction, arrows tracking a target. | transform | constraint | TransformRelation | — |
| mirrors | Source's transform mirrors target across an axis. Use for reflections, symmetry, mirrored character poses. | transform | constraint | TransformRelation | — |
| parallax | Source moves at a depth-scaled fraction of target's motion. Use for background layers, parallax scrolling, depth illusion. | spatial | constraint | SpatialRelation | — |
| boundsTo | Source's position is clamped within target's bounds. Use for keeping characters inside a frame or viewport-bounded motion. | spatial | constraint | SpatialRelation | — |
| growsFrom | Source scales up from zero starting at target's position. Use for spawn-from-point effects, ripple-into-being entrances. | animation | trigger | TransformRelation | — |
| staggeredWith | Stored as pairwise edges with index param to reconstruct group ordering. Conceptually 1→N but decomposed into binary pairs. | animation | trigger | AnimationRelation | — |
| waveThrough | Stored as pairwise edges with index param for phase offset. Conceptually 1→N but decomposed into binary pairs. | animation | constraint | AnimationRelation | — |
| morphsTo | Source's path interpolates into target's path over time. Use for shape morphing, geometry transitions. | animation | trigger | AnimationRelation | — |
| circumscribes | Source's bounds scale to fully enclose target. Use for halo highlights, selection rings, labels framing content. | animation | trigger | TransformRelation | — |
| indicates | Temporary emphasis effect. mathematically: pulseScale on source triggered by target reference. | animation | trigger | AnimationRelation | — |
| drivenBy | Source property linearly maps from a target property. Use for parameter linking, slaved values, reactive controls. | procedural | procedural | ProceduralRelation | — |
| wiggle | Source position / rotation jitters via noise-driven offset. Use for hand-drawn liveliness, idle motion, organic shake. | procedural | procedural | ProceduralRelation | — |
| timeExpression | Source property evaluates a math expression of time each frame. Use for custom oscillations, formula-driven motion. | procedural | procedural | ProceduralRelation | — |
| cameraFollows | Camera viewport tracks target's position with smooth pursuit. Use for cinematic follow shots, subject-lock cameras. | camera | constraint | SpatialRelation | — |
| cameraAnimates | Camera viewport interpolates between keyframed positions. Use for choreographed pans / zooms, fly-throughs, scripted shots. | camera | trigger | AnimationRelation | — |
| boneAttached | Source canvas item rides a skeleton bone — inherits its transform. Use for character props, weapons, accessories on a rig. | rigging | constraint | SpatialRelation | — |
| boneSkinned | Source path is skinned to a skeleton — each vertex deforms by linear blend of nearby bones' transforms. Contrast with attached_to (rigid follow) and bone_attached (inherits one bone's transform): this is per-vertex deformation enabling cloth, capes, soft-tissue. Stored as one self-edge per skinned path; the per-vertex weights live on the path's segments. | rigging | constraint | SpatialRelation | — |
| ikTarget | Target item is the end-effector goal for an IK chain on source skeleton. Use for hand-reaches-cup, foot-lock, gaze-to-target. | rigging | constraint | SpatialRelation | — |
| blendReactsTo | Source blend mode changes when target enters proximity / state. Use for collision-triggered visuals, reactive composition. | blending | procedural | ProceduralRelation | — |
| blendTransition | Source cycles through blend modes on a timed loop. Use for animated mood shifts, rhythmic visual changes. | blending | procedural | ProceduralRelation | — |
| partOf | Source is a named sub-element of target (e.g. eye_left part_of face). Use for compound items and named sub-element addressing. | rigging | constraint | SpatialRelation | — |
| expresses | Source plays a named expression preset (smile, blink, surprise) driving its part_of children. Use for facial animation, character emotion. | rigging | procedural | ProceduralRelation | — |
| EffectRelation | Abstract particle effect relation | abstract | — | ProceduralRelation | — |
| effectSparkle | Twinkling particles cascade from the item. Use for celebration, magic, attention-draw moments. | effect | procedural | EffectRelation | — |
| effectBlast | Outward radial burst of particles emits once. Use for impacts, explosions, energy release. | effect | procedural | EffectRelation | — |
| effectSmoke | Rising smoke trail emanates from the item. Use for damage, weight, atmosphere. | effect | procedural | EffectRelation | — |
| effectFire | Animated flame emerges from the item. Use for heat, burning, energy. | effect | procedural | EffectRelation | — |
| effectRain | Falling raindrops cover the canvas area. Use for weather scenes, melancholy mood. | effect | procedural | EffectRelation | — |
| effectSnow | Falling snowflakes drift across the canvas area. Use for winter scenes, peaceful slow motion. | effect | procedural | EffectRelation | — |
| effectConfetti | Colored streamers fall from above. Use for celebrations, accomplishments, party scenes. | effect | procedural | EffectRelation | — |
| effectRipple | Concentric expanding rings emanate from the item. Use for water-drop, shockwave hint, attention pulse. | effect | procedural | EffectRelation | — |
| effectGlow | Soft luminous halo surrounds the item. Use for highlighting, importance, magical quality. | effect | procedural | EffectRelation | — |
| effectElectric | Crackling electric arcs jump around the item. Use for energy, danger, sci-fi power. | effect | procedural | EffectRelation | — |
| effectBubbles | Rising bubbles emerge from the item. Use for underwater, liquid, light-hearted scenes. | effect | procedural | EffectRelation | — |
| effectDust | Slowly drifting dust motes fill the area. Use for old / abandoned moods, sunbeam visualizations. | effect | procedural | EffectRelation | — |
| effectFireflies | Slow-blinking glowing particles drift around the item. Use for magical night scenes, romantic ambiance. | effect | procedural | EffectRelation | — |
| effectShockwave | Single explosive ring expands outward from the item once. Use for impact moments, dramatic emphasis. | effect | procedural | EffectRelation | — |
| effectTrail | Particle trail follows the item as it moves. Use for motion blur, speed lines, comet tails. | effect | procedural | EffectRelation | — |
| ShaderEffectRelation | Abstract shader-rendered effect relation (silhouette-clipped GPU shader) | abstract | — | EffectRelation | — |
| effectHeatmap | Animated thermal-color noise fills the item's silhouette. Use for temperature visualization, dramatic glow, abstract energy. | effect | procedural | ShaderEffectRelation | — |
| effectLiquidMetal | Reflective chrome-flow shader stylizes the item with banded highlights. Use for metallic logos, sci-fi aesthetic, polish. | effect | procedural | ShaderEffectRelation | — |
| effectGemSmoke | Volumetric curling smoke wreath encircles the item silhouette. Use for ornate emphasis, ritual or magical contexts. | effect | procedural | ShaderEffectRelation | — |
| AuraMode | Aura composite mode enumeration (silhouette clipping strategy) | abstract | — | Concept | — |
| AnimationCurve | Animation channel curve enumeration (transforms raw time into shader uniform) | abstract | — | Concept | — |
| DeformRelation | Abstract vertex deformation relation | abstract | — | ProceduralRelation | — |
| deformFold | Item creases along a fold line and lays flat. Use for paper-fold animations, panel reveals. | deform | procedural | DeformRelation | — |
| deformSqueeze | Item pinches inward symmetrically. Use for cartoon expression, compression visuals. | deform | procedural | DeformRelation | — |
| deformSquash | Item flattens vertically and stretches horizontally (area-preserving). Use for bounce-landing impact, weight. | deform | procedural | DeformRelation | — |
| deformPinch | Item draws toward a central point. Use for vacuum-up, focus pull, gravity well. | deform | procedural | DeformRelation | — |
| deformBulge | Item bows outward from center. Use for inflation, swelling, expansion. | deform | procedural | DeformRelation | — |
| deformTwist | Item rotates progressively along an axis. Use for whirlpool, candy-cane, screw motion. | deform | procedural | DeformRelation | — |
| deformRipple | Item's surface ripples with concentric waves. Use for water disturbance, energy pulse on shape. | deform | procedural | DeformRelation | — |
| deformWave | Item undulates with a traveling sine wave. Use for flag-waving, fabric, liquid surface. | deform | procedural | DeformRelation | — |
| deformBreathe | Item rhythmically scales in and out. Use for living / idle motion, organic presence. | deform | procedural | DeformRelation | — |
| deformMelt | Item droops downward as if liquefying. Use for dissolution, dali-esque scenes, decay. | deform | procedural | DeformRelation | — |
| deformShear | Item slants progressively along one axis. Use for italic-like lean, motion shear, gravity drag. | deform | procedural | DeformRelation | — |
| deformInflate | Item swells uniformly outward. Use for balloon, pre-pop state, growth. | deform | procedural | DeformRelation | — |
| deformWobble | Item jiggles like jelly. Use for elastic motion, cartoon overshoot, gelatin shake. | deform | procedural | DeformRelation | — |
| ImageFilter | Abstract per-item GPU image filter applied once to a Raster (not animated) | abstract | — | Concept | — |
| DiagramFlowRelation | Abstract diagram flow relation | abstract | — | Relation | — |
| sequenceFlow | Sequence/control flow between shapes | diagram | — | DiagramFlowRelation | — |
| dataFlow | Data flow between shapes | diagram | — | DiagramFlowRelation | — |
| association | Association between diagram elements | diagram | — | DiagramFlowRelation | — |
| dependency | Dependency between diagram elements | diagram | — | DiagramFlowRelation | — |
| connectsTo | Generic diagram connection | diagram | — | DiagramFlowRelation | — |
| EventRelation | Abstract event-channel relation — edge-triggered, frame-coherent dispatch | abstract | edgeTriggered | Relation | — |
| onClickFire | Source item pulses target pp:Event on click. | event | edgeTriggered | EventRelation | — |
| onPointerEnterFire | Source pulses target pp:Event when pointer enters its bounds. | event | edgeTriggered | EventRelation | — |
| onPointerExitFire | Source pulses target pp:Event when pointer leaves its bounds. | event | edgeTriggered | EventRelation | — |
| onKeyFire | Source pulses target pp:Event when a key matches and the source has focus (or globally if params.global). Params: { key, modifiers?, global?, preventDefault? }. WCAG 2.2 keyboard-operability primitive. | event | edgeTriggered | EventRelation | — |
| onEventSetProperty | On pp:Event pulse, set target.[property] = value. | event | edgeTriggered | EventRelation | — |
| onEventSetVisibility | On pp:Event pulse, set target.visible. | event | edgeTriggered | EventRelation | — |
| onEventSetColor | On pp:Event pulse, set target.fillColor or .strokeColor. | event | edgeTriggered | EventRelation | — |
| onEventSetData | On pp:Event pulse, set target.data[property] = value. | event | edgeTriggered | EventRelation | — |
| onEventIncrement | On pp:Event pulse, increment target.data[property] by N. | event | edgeTriggered | EventRelation | — |
| onEventToggle | On pp:Event pulse, flip target.visible or target.data[property]. | event | edgeTriggered | EventRelation | — |
| onEventSetActive | On pp:Event pulse, activate target in its exclusive_group (clears siblings). | event | edgeTriggered | EventRelation | — |
| onEventFireAfter | On pp:Event pulse, schedule a target pp:Event pulse N ms later. Params: { delay: ms, timeline?: \"wall\" | \"canvas\" }. Default \"wall\" uses setTimeout (real-time). \"canvas\" schedules against app.playbackTime — pauses with timeline pause, seeks with timeline seek, loops with the canvas timeline. Use canvas mode when timing is animation-relative (state changes at t=2s of an animation); use wall mode for real-time effects (cleanup after 2 real seconds). | event | edgeTriggered | EventRelation | — |
| onEventSetPropertyFromTemplate | On pp:Event pulse, write target.[property] with a template-interpolated string. `template` contains `{key}` tokens; each is replaced with the stringified value of target.data[key] (default) or target[key] (when `source: \"item\"`). Missing keys resolve to \"\". Pairs with on_event_increment / on_event_set_data on the same channel to drive counters, formatted readouts, status lines, and debug HUDs — anything where the target text is derived from runtime state. Params: { property, template, source?: \"data\" | \"item\" }. | event | edgeTriggered | EventRelation | — |
| onEventAddRelation | Meta-relation — the graph modifies itself. On pp:Event pulse, app.addRelation(target, params.target, params.type, params.params). Use to attach effects, springs, or any relation in response to an event. | event | edgeTriggered | EventRelation | — |
| onEventRemoveRelation | Meta-relation — the graph modifies itself. On pp:Event pulse, app.removeRelation(target, params.target, params.type). Inverse of onEventAddRelation, used for cleanup chains. | event | edgeTriggered | EventRelation | — |
| exclusiveGroup | Two items belong to the same exclusive group — at most one is active at a time. Activating one via setActive() deactivates siblings and pulses :enter/:exit events. | event | edgeTriggered | EventRelation | — |
| onEnterSetProperty | When source becomes the active member of its exclusive_group, set target.[property] = value. | event | edgeTriggered | EventRelation | — |
| onEnterSetVisibility | When source activates in its group, set target.visible. | event | edgeTriggered | EventRelation | — |
| onExitSetProperty | When source stops being the active member of its exclusive_group, set target.[property] = value. | event | edgeTriggered | EventRelation | — |
| onExitSetVisibility | When source deactivates in its group, set target.visible. | event | edgeTriggered | EventRelation | — |
| menubarGroup | Two items share a menubar group — together they form a horizontal action bar (toolbar / app menu). The A11yShadowTree matcher promotes to role=\"menubar\" + menuitem with horizontal arrow-key nav. Unlike exclusive_group, no item is \"active\"; clicking a menuitem fires its own on_click_fire reactions. | event | edgeTriggered | EventRelation | — |
| unknownRelation | Relation type not expressible in current vocabulary. Enables vocabulary gap discovery — count and inspect unknown relations to identify missing edge types. | unknown | — | Relation | — |
| Name | Description | Type | Unit | Animatable |
|---|---|---|---|---|
| x | - | number | px | Yes |
| y | - | number | px | Yes |
| width | - | number | px | Yes |
| height | - | number | px | Yes |
| radius | - | number | px | Yes |
| rotation | - | number | deg | Yes |
| scale | - | number | — | Yes |
| scaleX | - | number | — | Yes |
| scaleY | - | number | — | Yes |
| opacity | - | number | — | Yes |
| fillColor | - | color | — | Yes |
| strokeColor | - | color | — | Yes |
| shadowColor | - | color | — | Yes |
| strokeWidth | - | number | px | Yes |
| strokeCap | - | enum | — | |
| strokeJoin | - | enum | — | |
| dashArray | - | array | px | Yes |
| shadowBlur | - | number | px | Yes |
| shadowOffsetX | - | number | px | Yes |
| shadowOffsetY | - | number | px | Yes |
| fontSize | - | number | px | Yes |
| fontFamily | - | string | — | |
| fontWeight | - | string | — | |
| textAlign | - | enum | — | |
| content | - | string | — | Yes |
| blendMode | - | enum | — | Yes |
| routing | - | enum | — | |
| lineStyle | - | enum | — | |
| headStyle | - | enum | — | |
| tailStyle | - | enum | — | |
| connectorLabel | - | string | — | |
| shapeCategory | - | enum | — | |
| closed | Whether path forms a closed region. Determines ontological subtype (OpenPath vs ClosedPath). | boolean | — | |
| curveType | Mathematical function family governing segment interpolation. The functional representation that defines the path. | enum | — | |
| segmentCount | Number of anchor points defining the path. | number | — | |
| trimStart | - | number | — | Yes |
| trimEnd | - | number | — | Yes |
| trimOffset | - | number | — | Yes |
Mathematical primitives used in animation drivers, relation solvers, and generator physics. Each entry serializes as a pp:MathFunction in the TTL.
| Name | Category | Formula |
|---|---|---|
| lerp | interpolation | a + (b-a)*t |
| cubicBezier | interpolation | (1-t)³P₀ + 3(1-t)²tP₁ + 3(1-t)t²P₂ + t³P₃ |
| catmullRom | interpolation | Catmull-Rom spline through control points |
| easeIn | easing | t² |
| easeOut | easing | 1-(1-t)² |
| easeInOut | easing | t<0.5 ? 2t² : 1-(-2t+2)²/2 |
| easeInCubic | easing | t³ |
| easeOutCubic | easing | 1-(1-t)³ |
| bounce | easing | Piecewise parabolas |
| elastic | easing | 2^(-10t)·sin((10t-0.75)·c₄)+1 |
| customCubicBezier | easing | cubic-bezier(x1,y1,x2,y2) |
| sinOscillation | trigonometric | center + amplitude·sin(ω·t + φ) |
| sinCos | trigonometric | sin(θ), cos(θ) |
| phaseOffsetSinusoid | trigonometric | A·sin(ω·t - i·φ) |
| parametricCircle | parametric | x=r·cos(θ), y=r·sin(θ) |
| parametricEllipse | parametric | x=rx·cos(θ), y=ry·sin(θ) |
| spiral | parametric | r(θ)=a+bθ |
| euclideanDistance | spatial | √((x₂-x₁)²+(y₂-y₁)²) |
| atan2 | spatial | atan2(y₂-y₁, x₂-x₁) |
| axisReflection | spatial | v-2(v·n̂)n̂ |
| rigidOffset | spatial | target.pos + offset |
| rectClamp | spatial | clamp(x, min, max) |
| depthScaledTranslation | spatial | base + scroll·depth |
| affineTransform | transform | x'=ax+cy+e, y'=bx+dy+f |
| deltaRotation | transform | item.rotate(shortestPathDelta) |
| linearBlendSkinning | transform | v' = Σ w_i · M_i · v (weighted sum of bone matrices applied per vertex) |
| exponentialPursuit | physics | pos += (target-pos)·lag |
| dampedHarmonicOscillator | physics | e^(-ζω₀t)(Acos(ωd·t)+Bsin(ωd·t)) |
| gravity | physics | y += vy·dt + ½g·dt² |
| perlinNoise | noise | Gradient noise [-1,1] |
| fbm | noise | Σ persistence^i · noise(x·lacunarity^i) |
| colorLerp | color | lerp per RGB/HSL channel |
| gradientInterpolation | color | Stop-wise gradient lerp |
| fabrikSolver | solver | Forward And Backward Reaching IK |
| linearMap | mapping | source = target·multiplier + offset |
| mathExpression | expression | User-defined f(t,v) |
| keyframeLerp | interpolation | Multi-keyframe piecewise lerp |
| scaleInterpolation | interpolation | Scale 0→1 with easing |
| delayOffset | timing | delay = index · stagger |
| pulseScale | animation | Temporary scale pulse |
| boundingGeometry | geometry | Bounding box/circle calculation |
| pathPointLerp | interpolation | Per-point path interpolation |
| proximityThreshold | spatial | dist < radius → trigger |
| timedCycling | timing | mode[floor(t/cycleDur) % n] |
| trimPath | path | dashArray/dashOffset trimming |
| staggerDelay | timing | index × delay |
| expression | expression | math.js compiled expression evaluation |
| ode | solver | Ordinary Differential Equation numerical integration |
| rk4 | solver | Fourth-order Runge-Kutta: y(n+1) = y(n) + (k1+2k2+2k3+k4)/6 |
| dynamicSystem | solver | State-space model: dx/dt = f(x,t,params) |
| fft | signal | Cooley-Tukey radix-2 Fast Fourier Transform |
| signalProcessing | signal | Signal generation, windowing, filtering |
| parametricSurface | geometry | S(u,v) = (x(u,v), y(u,v), z(u,v)) |
| projection3d | geometry | Perspective projection: 2D = 3D × fov/(fov+z) |
Structural archetypes for motion-graphics compositions — each pattern names the node types, edges, and math functions it requires.
| Name | Description | Required Edges | Node Types | Math Functions |
|---|---|---|---|---|
| orbitalComposition | Items orbiting a central element | orbits | — | — |
| staggeredReveal | Items appearing in sequence | staggeredWith | — | — |
| parallaxDepth | Layered depth illusion via differential motion | parallax | — | — |
| followChain | Items following each other in chain | follows | — | — |
| waveMotion | Wave propagating through items | waveThrough | — | — |
| maskReveal | Content revealed through animated mask | — | MaskedItem | — |
| skeletalAnimation | Items rigged to bone hierarchy | — | Skeleton, Bone | — |
| keyframeAnimation | Items animated via keyframe timeline | — | — | keyframeLerp |
| proceduralBackground | Algorithmically generated background | — | — | — |
| trimPathDraw | Stroke draw-on effect via trim paths | — | — | trimPath |
| diagramFlow | Connected flowchart/diagram shapes | — | DiagramShape, Connector | — |
| diagramFlowchart | Linear/branching flowchart | sequenceFlow | FlowchartShape, SequenceConnector | — |
| diagramUML | UML class or use-case diagram | — | UMLShape | — |
| diagramNetwork | Network topology diagram | — | NetworkShape | — |
| diagramDecisionTree | Decision tree with branching paths | — | DecisionShape | — |
| mapVisualization | Geographic data visualization | — | MapRegion | — |
| morphTransition | Shape morphing between states | morphsTo | — | — |
| collageText | Stylized per-letter text | — | LetterCollage | — |
| cameraAnimation | Animated viewport zoom/pan | cameraFollows, cameraAnimates | — | — |
| proceduralNoise | Noise-driven procedural motion | wiggle | — | — |
| expressionDriven | Math expression controlling properties | timeExpression | — | — |
Drawing functions invoked at canvas-init time to produce scene content (geometric patterns, math plots, simulations, etc.).
| Name | Description | Parent | Category | Math Functions |
|---|---|---|---|---|
| ProceduralGenerator | Abstract generator | — | abstract | — |
| ParticleGenerator | Particle-based generator | ProceduralGenerator | abstract | — |
| FieldGenerator | Field-based generator | ProceduralGenerator | abstract | — |
| PatternGenerator | Pattern-based generator | ProceduralGenerator | abstract | — |
| SceneGenerator | Scene-based generator | ProceduralGenerator | abstract | — |
| MathGenerator | Math-driven generator — evaluates expressions / ODEs / FFT / parametric surfaces to produce visual content | ProceduralGenerator | abstract | — |
| drawSunburst | Radial rays emanating from a center point. Use for solar emblems, celebratory backgrounds, retro motifs. | PatternGenerator | pattern | sinCos, parametricCircle |
| drawGrid | Uniform grid pattern. Use for blueprint backgrounds, technical aesthetics, layout reference. | PatternGenerator | pattern | lerp |
| drawWaves | Layered horizontal sine waves. Use for water surfaces, audio waveforms, ocean backgrounds. | PatternGenerator | pattern | sinOscillation |
| drawPattern | Tileable geometric pattern (chevrons, hexagons, polkadots). Use for textured backgrounds, brand backdrops. | PatternGenerator | pattern | parametricCircle, sinCos |
| drawSunsetScene | Layered horizon scene with sky-color gradient. Use for landscape backdrops, mood-setting backgrounds. | SceneGenerator | scene | lerp, colorLerp |
| drawFunctionPlot | Plots a math expression y=f(x) over an x-range. Use for math illustrations, function visualization, education. | MathGenerator | math | expression, keyframeLerp |
| drawParametricCurve | Plots a parametric (x(t), y(t)) curve over a t-range. Use for Lissajous figures, spirals, parametric art. | MathGenerator | math | parametricCircle, sinCos |
| drawSimulation | Renders a live ODE-based dynamic system (pendulum, Lorenz, spring-mass). Use for physics demos, chaos, science visuals. | MathGenerator | math | ode, rk4, dynamicSystem |
| drawSpectrumAnalyzer | Renders a signal's frequency spectrum via FFT. Use for audio visualizers, signal-processing demos, abstract data motion. | MathGenerator | math | fft, signalProcessing |
| draw3DSurface | Parametric 3D surface with perspective projection (Klein bottle, Möbius strip, torus). Use for math art, geometry visualization. | MathGenerator | math | parametricSurface, projection3d |
| drawStackedCircles | Vertical stack of overlapping circles. Use for snowman-shapes, decorative beadwork, abstract sculpture forms. | ParticleGenerator | scene | parametricCircle |
| drawCircuit | Maze-like circuit-board pattern with nodes and traces. Use for tech backdrops, sci-fi panels. | PatternGenerator | scene | lerp |
| drawBokeh | Soft circular out-of-focus light dots. Use for photographic bokeh, romantic blur, ambient highlights. | ParticleGenerator | particle | parametricCircle |
| drawGradientMesh | Smooth multi-color noise gradient. Use for atmospheric backdrops, mood lighting. | FieldGenerator | organic | perlinNoise |
| drawGeometricAbstract | Randomized composition of overlapping geometric shapes. Use for abstract art, modern poster backdrops. | SceneGenerator | pattern | lerp |
| drawWindField | Flow-field of streaming particles driven by Perlin noise. Use for wind visualization, smoke trails, atmospheric motion. | FieldGenerator | particle | perlinNoise, fbm |
| drawFluidFlow | Curving streamlines suggesting fluid motion. Use for water / wind / lava illustration, organic backdrops. | FieldGenerator | organic | perlinNoise, fbm |
| drawOrganicFlow | Flowing curves that breathe and shift over time. Use for living abstract backgrounds, mood ambience. | FieldGenerator | organic | sinOscillation, perlinNoise |
| drawNoiseTexture | Static or animated noise texture. Use for grain overlays, paper textures, depth-cueing backgrounds. | PatternGenerator | organic | perlinNoise, fbm |
Compound value shapes (vectors, points, gradients, keyframes) that property values commit to.
| Name | Description | Fields | Anchor |
|---|---|---|---|
| Point2D | 2D canvas coordinate {x, y} | x, y | — |
| BoundingBox | 2D bounding rectangle | x, y, width, height | — |
| Canvas | Canvas coordinate space | width, height, backgroundColor | — |
| Keyframe | Property snapshot at time | time, properties, easing | — |
| KeyframeAnimation | Ordered keyframes with duration — discrete property targets at specific times | keyframes, duration, loop | — |
| LoopAnimation | Continuous frame-based animation preset (pulse, rotate, bounce, etc.) | animationType, animationSpeed, animationDirection | — |
| EasingFunction | Interpolation timing curve | type, params | — |
| Timeline | Global playback controller | duration, loop, currentTime | — |
| Viewport | Camera/viewport state | zoom, center, rotation | — |
| MaskAnimation | Animated mask reveal effect | maskType, keyframes, duration, easing | — |
Fixed-set values picked by scene authors for properties like animation curve, aura mode, and image filter. Each entry serializes as a skos:Concept with skos:broader linking to its parent enumeration scheme.
| Name | Description | Category | Scheme |
|---|---|---|---|
| auraModeInside | Shader fills the item silhouette (destination-in mask) | enum | AuraMode |
| auraModeOutside | Shader appears as a halo around the item edge (destination-out mask) | enum | AuraMode |
| auraModeOverlay | Shader stylizes the item via multiply blend on its silhouette — item content stays visible underneath | enum | AuraMode |
| curveLinear | Identity transform: continuous monotonic time, ideal for fbm warping | enum | AnimationCurve |
| curveSine | Smooth 0..1 oscillation at speed Hz | enum | AnimationCurve |
| curveTriangle | Sharp linear up-and-down 0..1 oscillation | enum | AnimationCurve |
| curvePulse | Square wave on/off at speed Hz | enum | AnimationCurve |
| curveEase | Smooth s-curve from 0 to 1 each cycle (slow-fast-slow) | enum | AnimationCurve |
| curveSawtooth | Linear ramp 0..1 then instantaneous reset | enum | AnimationCurve |
| curveBounce | Decaying bouncing oscillation each cycle | enum | AnimationCurve |
| curveNoise | Smoothed pseudo-random walk in 0..1 | enum | AnimationCurve |
| filterGrayscale | Desaturation toward luminance-weighted gray | imageFilter | ImageFilter |
| filterSepia | Sepia tone — warm brown desaturation | imageFilter | ImageFilter |
| filterBrightness | Additive brightness shift (-1..1) | imageFilter | ImageFilter |
| filterContrast | Contrast scale around mid-gray | imageFilter | ImageFilter |
| filterSaturation | Saturation lerp between luma and rgb | imageFilter | ImageFilter |
| filterInvert | Negative inversion (1 - rgb) | imageFilter | ImageFilter |
| filterPosterize | Quantize each channel to N levels for a flat-color look | imageFilter | ImageFilter |
| filterHsl | HSL space adjustment (hue rotation, saturation, lightness) | imageFilter | ImageFilter |
| filterColorTint | Colored tint blended via multiply/screen/overlay | imageFilter | ImageFilter |
| filterVignette | Radial darkening from center to corners | imageFilter | ImageFilter |
| filterEdgeDetect | Sobel-style edge detection emphasizing high-frequency contrast | imageFilter | ImageFilter |
| filterDither | Ordered Bayer 4×4 dithering for retro/limited-palette look | imageFilter | ImageFilter |
| filterHalftoneDots | Single-channel halftone dot pattern at configurable angle (newspaper-print look) | imageFilter | ImageFilter |
| filterHalftoneCMYK | Four-plate CMYK halftone separation with rosette angle offsets (15°/75°/0°/45°) | imageFilter | ImageFilter |
SKOS concept schemes for non-binary classification (mood, style, complexity). Each scheme's values are reachable as pp:<dim>_<value> concepts.
| Dimension | Count | Concepts |
|---|---|---|
| moods | 21 | energeticcalminspiringplayfulelegantdramaticmysteriousprofessionalwhimsicalnostalgicfuturisticwarmcoolfestivesolemnboldminimalorganicromanticcheerfulsummery |
| visualStyles | 23 | bold-typographyradial-backgroundparticle-effectsgeometricorganic-flowcinematicflat-designgradient-meshcircuit-boardhand-drawncollagedata-visualizationwave-patternsneon-glowskeletal-animationmask-revealtext-revealletter-by-letterfloral-patternstropicalconfettiacademicnature-inspired |
| colorSchemes | 11 | vibrantmutedmonochromedarklightneonpastelwarmcoolearthcontrast |
| audiences | 9 | creatorsgeneralbusinessstudentsdeveloperschildrenmultilingualindigenousmarketers |
| intents | 11 | inspireinformsellentertainteachcelebrateannouncedemonstratebrandgreetinvite |
| animationComplexities | 5 | staticsimplemoderatecomplexadvanced |
| compositionStyles | 8 | centeredasymmetricgridlayeredradialflowingsplitfull-bleed |
| contentTypes | 8 | text-focusedshape-focusedmixeddiagrammapcharacterscenedata-driven |
| designIntents | 4 | structuraldecorativetemporalinteractive |
Graph-based chart-type classification links — connect a chart class to its mark, coordinate system, encoding, task, and composition dimensions.
| Name | Description | Domain | Range |
|---|---|---|---|
| usesMark | The mark primitive used to represent data | DataVisualization | MarkType |
| usesCoordinates | The coordinate system for spatial mapping | DataVisualization | CoordinateSystem |
| primaryEncoding | The primary visual encoding channel | DataVisualization | EncodingChannel |
| secondaryEncoding | An additional encoding channel (e.g. size in bubble chart) | DataVisualization | EncodingChannel |
| analyticalTask | The analytical question this visualization helps answer | DataVisualization | AnalyticalTask |
| defaultComposition | The default composition mode for multi-series data | DataVisualization | CompositionMode |