The RIN declarative specification:
The top-level RIN construct is called a Segment. A simple RIN segment would look like this. A segment is composed of various other constructs, the most common of which are defined below. A full specification is available here.
Experiences: The Experience structure contains the information required by an Experience Provider to instantiate a particular rich media experience, and is also a container for Experience Streams associated with the experience. The specification of Experience is straightforward, as shown in the example here, with details elided for brevity.
Experience Streams: represents the scripted evolution (i.e., animation) of a rich media experience as a series of time-stamped snapshots.
Keyframes: The keyframes represent partial discrete snapshots of the experience stream. The offset attribute specifies the time offset from the start of the Experience Stream, thus a keyframe with time offset T represents a subset at time T. Experience Providers are responsible for using these partial discrete snapshots to build a continuous “play” experience.
Data: This is arbitrary JSON that is passed to the experience provider and can be interpreted by the provider.
Screenplays: contains compositional and timing information that specifies how multiple Experience Streams are orchestrated into a single linear narrative sequence. A RIN document may contain multiple screenplay instances that thread through the same set of underlying experiences. While each of these individual screenplays defines a linear narrative sequence, they may be linked together into an arbitrary topology, or triggered by a user interacting with embedded content, producing a user experience that contains both linear and nonlinear aspects. A sample screenplay is presented here.