xAPI Video Profile Definition
Included fro convenience, this document can be downloaded from the profile server.
profiles.adlnet.gov/profile/90b2c849-d744-4d0c-8bd0-403e7859a35b
{
"id": "https://w3id.org/xapi/video",
"@context": "https://w3id.org/xapi/profiles/context",
"type": "Profile",
"conformsTo": "https://w3id.org/xapi/profiles#1.0",
"prefLabel": {
"en": "Video Profile"
},
"definition": {
"en": "The video profile of the xAPI was created to identify and standardize the common types of interactions that can be tracked in any video player."
},
"seeAlso": "https://github.com/liveaspankaj/xapi-video-cop",
"versions": [
{
"id": "https://w3id.org/xapi/video/v1.0.2",
"wasRevisionOf": [
"https://w3id.org/xapi/video/v1.0.1"
],
"generatedAtTime": "2020-11-05T18:40:02.945Z"
}
],
"author": {
"type": "Organization",
"name": "Video",
"url": "https://github.com/adlnet/xapi-authored-profiles"
},
"concepts": [
{
"id": "https://w3id.org/xapi/video/verbs/paused",
"type": "Verb",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "paused"
},
"definition": {
"en": "Indicates the actor paused the video being played at a specific point."
},
"exactMatch": [
"http://id.tincanapi.com/verb/paused"
]
},
{
"id": "https://w3id.org/xapi/video/verbs/played",
"type": "Verb",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "played"
},
"definition": {
"en": "Indicates that the actor started experiencing the recorded media object."
},
"exactMatch": [
"http://activitystrea.ms/schema/1.0/play"
]
},
{
"id": "https://w3id.org/xapi/video/verbs/seeked",
"type": "Verb",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "seeked"
},
"definition": {
"en": "Indicates the actor changed the progress towards a specific point."
}
},
{
"id": "https://w3id.org/xapi/video/activity-type/video",
"type": "ActivityType",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "video"
},
"definition": {
"en": "A recording of both the visual and audible components made available on a display screen."
},
"exactMatch": [
"http://activitystrea.ms/schema/1.0/video"
]
},
{
"id": "https://w3id.org/xapi/video/extensions/completion-threshold",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "completion-threshold"
},
"definition": {
"en": "Used to specify the percentage of media that should be consumed to trigger a completion. Value MUST be between 0 and with maximum 3 decimals. If Completion Threshold is not included, it is assumed to be 1, i.e. 100%. If Completion Threshold is not 1, it MUST be included in Video Profile statements with these verbs: initialized, paused, completed, and terminated."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/cc-subtitle-enabled",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "cc-subtitle-enabled"
},
"definition": {
"en": "Used to expresses whether subtitle or closed captioning is enabled."
},
"inlineSchema": "{ \"type\": \"boolean\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/cc-subtitle-lang",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "cc-subtitle-lang"
},
"definition": {
"en": "Used to express the language of subtitle or closed captioning. The lexical and value spaces of xsd:language are the set of language codes defined by RFC 5646. For example, 'en' for English or 'en-US' for American English."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/frame-rate",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "frame-rate"
},
"definition": {
"en": "Used to express the frame rate or frames per second of a video (or average rate of frames per second in the case of variable frame-rate)."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/full-screen",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "full-screen"
},
"definition": {
"en": "Used to expresses that the video is played in full screen mode."
},
"inlineSchema": "{ \"type\": \"boolean\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/length",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "length"
},
"definition": {
"en": "The actual length of the media in seconds. Value MUST be a float value with maximum 3 decimals."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/quality",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "quality"
},
"definition": {
"en": "Used to express the video resolution or quality. Integer Value (e.g., 360, 480, 720, 1080, etc.)."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/session-id",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "session-id"
},
"definition": {
"en": "Used to provide the session identifier associated with the activity."
},
"inlineSchema": "{ \"type\": \"string\", \"pattern\": \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[8-9a-bA-B][0-9a-fA-F]{3}-[0-9a-fA-F]{12}\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/screen-size",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "screen-size"
},
"definition": {
"en": "Used to express the total available screen size for Video playback."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/speed",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "speed"
},
"definition": {
"en": "Used to express the play-back speed (e.g., 1x,2x,0,-1x,-2x)."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/track",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "track"
},
"definition": {
"en": "Used to identify the name of the audio track in a media object."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/user-agent",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "user-agent"
},
"definition": {
"en": "Used to identify the User Agent string of the browser, if the video is launched in browser."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/volume",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "volume"
},
"definition": {
"en": "Used to identify the loudness of sound specified for a media object."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/video-playback-size",
"type": "ContextExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "video-playback-size"
},
"definition": {
"en": "Used to identify the current video size in Width x Height as viewed by the user."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/played-segments",
"type": "ResultExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "played-segments"
},
"definition": {
"en": "Played segments reveals potential heat map data for showing parts of the video the actor watched during current registration in chronological order (e.g., 0.000[.]12.000[,]14.000[.]21.000[,]18.000[.]30.000)."
},
"inlineSchema": "{ \"type\": \"string\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/progress",
"type": "ResultExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "progress"
},
"definition": {
"en": "Used to expresses the percentage of media consumed by the actor."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/time",
"type": "ResultExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "time"
},
"definition": {
"en": "Used to express the time into the video. (e.g., “00000.000” in seconds and milliseconds)."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/time-from",
"type": "ResultExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "time-from"
},
"definition": {
"en": "Used to identify the point in time the actor changed from in a media object (eg: “200.000” in seconds and milliseconds)."
},
"inlineSchema": "{ \"type\": \"number\" }"
},
{
"id": "https://w3id.org/xapi/video/extensions/time-to",
"type": "ResultExtension",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "time-to"
},
"definition": {
"en": "Used to identify the point in time the actor changed to in a media object (eg: “300.000” in seconds and milliseconds)."
},
"inlineSchema": "{ \"type\": \"number\" }"
}
],
"templates": [
{
"id": "https://w3id.org/xapi/video/templates#initialized",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Initialized"
},
"definition": {
"en": "The statement template and rules associated with a video being initialized or started."
},
"verb": "http://adlnet.gov/expapi/verbs/initialized",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/length']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/completion-threshold']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/volume']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/video-playback-size']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/user-agent']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/cc-enabled']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/cc-subtitle-lang']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/screen-size']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/speed']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/full-screen']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#played",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Played"
},
"definition": {
"en": "The statement template and rules associated with a video being played."
},
"verb": "https://w3id.org/xapi/video/verbs/played",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/played-segments']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#paused",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Paused"
},
"definition": {
"en": "The statement template and rules associated with a video being paused."
},
"verb": "https://w3id.org/xapi/video/verbs/paused",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/length']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/completion-threshold']",
"presence": "recommended"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/played-segments']",
"presence": "recommended"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/progress']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#seeked",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Seeked"
},
"definition": {
"en": "The statement template and rules associated with a video seekbar being moved from and to a specific position in the video."
},
"verb": "https://w3id.org/xapi/video/verbs/seeked",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time-to']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time-from']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#completed",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Completed"
},
"definition": {
"en": "The statement template and rules associated with a video being completed."
},
"verb": "http://adlnet.gov/expapi/verbs/completed",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/length']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/progress']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/completion-threshold']",
"presence": "recommended"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/played-segments']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#terminated",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Terminated"
},
"definition": {
"en": "The statement template and rules associated with a terminating the player."
},
"verb": "http://adlnet.gov/expapi/verbs/terminated",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/length']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/progress']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/completion-threshold']",
"presence": "recommended"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/played-segments']",
"presence": "recommended"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#closed-captioning",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Enable Closed Captioning"
},
"definition": {
"en": "Volume Change Interaction"
},
"verb": "http://adlnet.gov/expapi/verbs/interacted",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/cc-enabled']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/cc-subtitle-lang']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#volumechange",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Volume Change Interaction"
},
"definition": {
"en": "Volume Change Interaction"
},
"verb": "http://adlnet.gov/expapi/verbs/interacted",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/volume']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
},
{
"id": "https://w3id.org/xapi/video/templates#screenchange",
"type": "StatementTemplate",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Screen Change Interaction"
},
"definition": {
"en": "Screen Change Interaction"
},
"verb": "http://adlnet.gov/expapi/verbs/interacted",
"objectActivityType": "https://w3id.org/xapi/video/activity-type/video",
"rules": [
{
"location": "$.id",
"presence": "included"
},
{
"location": "$.timestamp",
"presence": "included"
},
{
"location": "$.result.extensions['https://w3id.org/xapi/video/extensions/time']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/full-screen']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/screen-size']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/video-playback-size']",
"presence": "included"
},
{
"location": "$.context.extensions['https://w3id.org/xapi/video/extensions/session-id']",
"presence": "recommended"
}
]
}
],
"patterns": [
{
"id": "https://w3id.org/xapi/video/patterns#generalpattern",
"type": "Pattern",
"primary": true,
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "General Pattern"
},
"definition": {
"en": "The general pattern and sequence of Statement templates using the Video Profile."
},
"sequence": [
"https://w3id.org/xapi/video/templates#initialized",
"https://w3id.org/xapi/video/patterns#optionalmiddlestatements",
"https://w3id.org/xapi/video/templates#terminated"
]
},
{
"id": "https://w3id.org/xapi/video/patterns#all-activities-pattern",
"type": "Pattern",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "All Activities Pattern"
},
"definition": {
"en": "All of the Video Profile statement templates."
},
"alternates": [
"https://w3id.org/xapi/video/templates#played",
"https://w3id.org/xapi/video/templates#paused",
"https://w3id.org/xapi/video/templates#seeked",
"https://w3id.org/xapi/video/templates#volumechange",
"https://w3id.org/xapi/video/templates#screenchange",
"https://w3id.org/xapi/video/templates#closed-captioning",
"https://w3id.org/xapi/video/templates#completed"
]
},
{
"id": "https://w3id.org/xapi/video/patterns#optionalmiddlestatements",
"type": "Pattern",
"inScheme": "https://w3id.org/xapi/video/v1.0.2",
"prefLabel": {
"en": "Optional Middle Statements"
},
"definition": {
"en": "A combined pattern of zero or more Video Profile standard statement templates that can be used with the general pattern."
},
"zeroOrMore": "https://w3id.org/xapi/video/patterns#all-activities-pattern"
}
]
}