RDF Ontology

Working Draft

This version:
http://uriplay.org/spec/ontology/20081114.html [rdf]
Latest version:
http://uriplay.org/spec/ [rdf]
Previous version:
http://uriplay.org/spec/ontology/20080414.html [rdf]
Last Update:
Date: 14 November 2008
Authors:
Chris Jackson, Meta Broadcast
Contributors:
Ashok Argent-Katwala
Lee Denison, Meta Broadcast
See acknowledgements.

Abstract

This specification defines the URIplay ontology. URIplay is a name service and data format for 'playable' media content, giving it URIs and simple descriptions. The service is suitable for describing delivery of TV and radio content, and other audio and video that was produced for non-broadcast delivery (e.g. podcasts and video blogs).

URIplay helps users to immediately find the right version of a video or audio program. This is necessary because media distribution has become too complex to handle through a simple user interface. URIplay summarises distribution information so that user's software and hardware can make the choices for her/ him.

Status of this Document

This is a work in progress! This document is changing on a regular basis. Comments are very welcome, please send them to chris at metabroadcast dot com.

Much of the ontology described in this document is stable. We are considering adding representations of:

Table of Contents

  1. Introduction
  2. URIplay ontology at a glance
  3. URIplay ontology overview
  4. Cross-reference for URIplay classes and properties

Appendices

  1. References
  2. Changes in this version
  3. Acknowledgements

1. Introduction

Radio and TV were designed to be simple, to require minimum involvement. Our grandparents sometimes chose to change channel, but this was strictly optional. Today's technology has brought us more choice, freeing our viewing and listening from set schedules. However, alongside this choice, we users must deal with complexity. Increasingly, we are asked to decide not only what we would like to watch or listen to, but also via what route. PVRs, 'on demand' TV platforms, streaming websites and downloads each add to our technology choices.

Broadcasters have traditionally provided a simpler experience for audiences, but their recent technology and commercial choices are adding to the underlying complexity. Together with rights owners, they attempt to control the consumption of content through DRM, geo blocking, etc. Thus, content distribution via broadcasters' websites, hubs like YouTube, search engines and P2P downloads requires serious efforts on the side of the user—not our grandparents' experience.

See the URIplay home page for more details.

2. URIplay ontology at a glance

An alphabetical index of URIplay terms, by class (concepts) and by property (relationships, attributenames), is given below. All the terms are hyperlinked to their detailed description for quick reference.

Classes: Brand, Broadcast, Encoding, Episode, Location, Policy, Version,

Properties: advertisingDuration, appliesTo, audioBitrate, audioChannels, audioCoding, audioLanguage, authenticationMethod, availabilityLength, availabilityStart, availableAt, availableCountry, bitRate, broadcastDuration, captionLanguage, containsAdvertising, currency, dataContainerFormat, dataSize, distributor, drmPlayableDaysFromDownload, drmPlayableDaysFromStart, drmPlayableFrom, drmPlayableLength, drmScheme, drmVersion, firstEpisode, guidance, hasDOG, hash, lastEpisode, locationOf, manifestationOf, manifestedAs, metaDataLicence, metaDataSource, metaDataSourceStatement, nextEpisode, originator, previousEpisode, price, provider, publishedDuration, quality, restrictedBy, revenueContract, revenueSubscriptionScheme, sampleUri, seasonPosition, seasonTitle, signedLangauge, source, trailer, transportIsLive, transportSubType, transportType, uri, videoBitrate, videoCoding, videoFrameRate, videoHorizontalSize, videoVariableBitRate, videoVerticalSize,

3. URIplay ontology overview

URIplay describes the online distribution of 'playable' media such as films, TV programs, and radio programs. It builds on the work of the BBC Program Ontology, which has focused on defining the underlying structure of Episodes, Series (seasons), Brands (shows), as well as broadcast distribution. The main classes of URIplay are Encoding, Location, and Policy.

The Encoding class describes a unique 'bag of bits', which represent a Version of an Episode. It defines characteristics of the audio, video, and file container. For example, audioBitrate, videoBitrate, and videoFramrate are properties of Encoding.

The Location class wraps the URI at which an Encoding is available with a description of its expected behaviour. After the URI, the most important property of Location is transportType. This defines the type of behaviour that can be expected from the URI. Current options are:

Download
The data can be retrieved via the URI, at a speed that is faster than needed to watch the content.
Stream
The data can be retrieved via the URI, but the speed is limited to that required for live viewing.
Embed Object
The URI points to an object that can be embedded in a web page. Distributor-specific restrictions are likely to apply, and may be described an associated Policy.
HTML Embedded
The URI points to an HTML page in which the content is embedded.
Indirect
The URI points to a further metadata file that describes how the content can be retreved.

Location also describes the dates and times from which content is accessible via this URI, and links to any distribution Policy that is required.

The Policy class allows description of distribution policies. These are typically applied by content distributors, for example by restricting the period during which content is available at the URI, or embedding 'DRM' features in the data. Policy also describes the revenue model that applies to the content, together with specific information such as the price of pay-per-view content or the subscription scheme required to gain access.

The structure of the class hierarchy is illustrated below.

URIplay class hierachy

3.1. Example

Here is a very basic document describing an episode of the TV show 'Yes Minister':

<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:play="http://uriplay.org/elements/"
xmlns:po="http://purl.org/ontology/po/" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
xml:base="http://uriplay.org/yes-minister/">

	 <po:Brand>
	  <dc:title>Yes, Minister</dc:title>
	  <dc:description>The wheeling and dealing of life in the British political scene...</dc:description>
	  <po:episode>
	   <po:Episode rdf:about="big-brother/">
	   <dc:title>Big Brother</dc:title>
	   <dc:description>Jim tries to implement a privacy safeguard...</dc:description>
	    <po:version>
	     <po:Version rdf:about="big-brother/main/">
	      <play:publishedDuration>30</po:publishedDuration>
	      <play:audioLanguage>ENG</po:audioLanguage>
	      <play:publishedDuration>300</play:publishedDuration>
	      <po:duration>321</po:duration>

	      <play:manifestedAs>
	       <play:Encoding rdf:about="big-brother/main/h264-500/">
	        <play:audioCoding>audio/mp4</play:audioCoding>
	        <play:dataContainerFormat>video/mp4</play:dataContainerFormat>
	        <play:videoCoding>video/H264</play:videoCoding>
	        <play:videoHorizontalSize>368</play:videoHorizontalSize>
	        <play:videoAspectRatio>16:9</play:videoAspectRatio>
	        <play:videoVerticalSize>208</play:videoVerticalSize>
	        <play:videoBitRate>512</play:videoBitRate>
	        <play:audioBitRate>128</play:audioBitRate>
	        <play:videoFrameRate>12</play:videoFrameRate>
	        <play:bitRate>640</play:bitRate>
	        <play:audioChannels>2</play:audioChannels>

	        <play:availableAt> 
	         <play:Location rdf:about="big-brother/main/mpeg4-mobile/example/">
	          <play:uri>http://example.com/f00678e</play:uri>
	          <play:restrictedBy rdf:resource="http://policy.uriplay.org/example"/>
	          <play:transportSubType>HTTP</play:transportSubType>
	          <play:transportType>Download</play:transportType>
	          <play:transportIsLive>false</play:transportIsLive>
	         </play:Location>
	        </play:availableAt>

	       </play:Encoding>
	      </play:manifestedAs>

	     </po:Version>
	    </po:version>

	  </po:Episode>
	 </po:episode>

	</po:Brand>

</rdf:RDF>
				

4. Cross-reference for URIplay classes and properties

Class: play:Brand

- A program brand. Commonly called a show (in American English). A group of Episodes. The same as po:Brand.

sub-class-of:
frbr:Work

[back to top]

Class: play:Broadcast

- A time and channel at which a Version is/was receivable. This Class is the same as po:Broadcast.

sub-class-of:
frbr:Manifestation
in-domain-of:
play:broadcastDuration

[back to top]

Class: play:Version

- A version of an Episode. Every copy of the same Version has the same frames. For example, each Episode of the Brand 'Planet Earth' has a U.S. version (narrated by Sigourney Weaver), and a British version (narrated by David Attenborough). Each episode is correctly modelled in URIplay with a separate U.S. and British Version. A separate Version should also be defined for a cut of an Episode that has been edited to remove potentially objectionable content. This class is the same as po:Version.

sub-class-of:
frbr:Expression
in-domain-of:
play:manifestedAs
play:signedLangauge
play:audioLanguage
play:advertisingDuration
play:publishedDuration
play:containsAdvertising
play:captionLanguage
play:guidance
in-range-of:
play:manifestationOf

[back to top]

Property: play:advertisingDuration

- The length of in-vision advertising in this Recording

OWL Type:
DatatypeProperty
Domain:
play:Version
Range:
xsd:time

[back to top]

Property: play:appliesTo

- The Locations this policy applies to. This property is not commonly used, but is defined for completeness

Inverse:
play:restrictedBy
OWL Type:
ObjectProperty
Domain:
play:Policy
Range:
play:Location

[back to top]

Property: play:audioBitrate

- The average bitrate of the audio, in kbits/sec

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

Property: play:audioChannels

- Number of channels, i.e., mono=1, stereo=2

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

Property: play:audioCoding

- The MIME type of the scheme used to code the audio (e.g., audio/mp3)

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:string

[back to top]

Property: play:audioLanguage

- The major language on one soundtrack of this Recording. Specified as ISO 639-2 3-letter codes.

OWL Type:
DatatypeProperty
Domain:
play:Version
Range:
xsd:string

[back to top]

Property: play:authenticationMethod

- The authentication method that controls access to this content

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:string

[back to top]

Property: play:availabilityLength

- The amount of time that the Location will be available, since availabilityStart

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:time

[back to top]

Property: play:availabilityStart

- The first time at which the content is available from this Location

OWL Type:
DatatypeProperty
Domain:
play:Location
Range:
xsd:dateTime

[back to top]

Property: play:availableAt

- A Location at which this Encoding is available

Inverse:
play:locationOf
OWL Type:
ObjectProperty
sub-property-of:
frbr:exemplar
Domain:
play:Encoding
Range:
play:Location

[back to top]

Property: play:availableCountry

- A country from which the distributor does not attempt to 'geoblock' access. Specified as a ISO 3166 two-letter code.

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:string

[back to top]

Property: play:bitRate

- The average bitrate, in kbits/sec

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

Property: play:broadcastDuration

- The actual duration of the content, to the nearest second

OWL Type:
DatatypeProperty
Domain:
play:Broadcast
Range:
xsd:time

[back to top]

Property: play:captionLanguage

- Language of in-picture captions (not subtitles). Specified as ISO 639-2 3-letter codes.-

OWL Type:
DatatypeProperty
Domain:
play:Version
Range:
xsd:string

[back to top]

Property: play:containsAdvertising

- Does this instance contain commercial messages?

OWL Type:
DatatypeProperty
Domain:
play:Version
Range:
xsd:boolean

[back to top]

Property: play:currency

- The currency in which the price is quoted, using ISO 4217 3-letter codes (e.g., USD, EUR)

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:string

[back to top]

Property: play:dataContainerFormat

- The MIME type of the container, e.g., video/mpeg2

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:string

[back to top]

Property: play:dataSize

- The size of the data file in kB

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

Property: play:distributor

- Description of the distribution organisation

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:string

[back to top]

Property: play:drmPlayableDaysFromDownload

- The number of days the content is available to play after download completed

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:int

[back to top]

Property: play:drmPlayableDaysFromStart

- The number of days the content is available to play after after playback commenced

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:int

[back to top]

Property: play:drmPlayableFrom

- The first time at which DRM will not attempt to stop playback of this content

OWL Type:
DatatypeProperty
Domain:
play:Location
Range:
xsd:dateTime

[back to top]

Property: play:drmPlayableLength

- The period after drmPlayableFrom during which DRM will not attempt to stop playback of content

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:time

[back to top]

Property: play:drmScheme

- The name of the DRM scheme applied to this content (e.g., Microsoft DRM, Plays For Sure, FairPlay, Microsoft Windows Media DRM)

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:string

[back to top]

Property: play:drmVersion

- The version number/name of the drmScheme in force for this Policy

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:string

[back to top]

Property: play:firstEpisode

- The first known episode of this Brand

OWL Type:
ObjectProperty
sub-property-of:
frbr:supplement
Domain:
play:Episode
Range:
play:Episode

[back to top]

Property: play:guidance

- A warning, such as 'strong language' or 'adult themes'

Inverse:
play:manifestationOf
OWL Type:
ObjectProperty
Domain:
play:Version

[back to top]

Property: play:hasDOG

- The Encoding includes a significant Digital Onscreen Graphic throughout the majority of playtime (typically the logo of the broadcast channel that distributed the video)

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:boolean

[back to top]

Property: play:hash

- A hash of the content at this Location, which can be used to verify that the content has been received correctly

OWL Type:
DatatypeProperty
Domain:
play:Location
Range:
xsd:string

[back to top]

Property: play:lastEpisode

- The last available Episode in this Brand. Note that this property should not point to an Episode that is known of but not released, even though these Episodes may exist in URIplay.

OWL Type:
ObjectProperty
sub-property-of:
frbr:supplement
Domain:
play:Episode
Range:
play:Episode

[back to top]

Property: play:locationOf

- The Encoding that is available at this Location

Inverse:
play:availableAt
OWL Type:
ObjectProperty
sub-property-of:
frbr:exemplarOf
Domain:
play:Location
Range:
play:Encoding

[back to top]

Property: play:manifestationOf

- An Encoding that represents this Version

Inverse:
play:manifestedAs
OWL Type:
ObjectProperty
sub-property-of:
frbr:embodimentOf
Domain:
play:Encoding
Range:
play:Version

[back to top]

Property: play:manifestedAs

- An Encoding that represents this Version

Inverse:
play:manifestationOf
OWL Type:
ObjectProperty
sub-property-of:
frbr:embodiment
Domain:
play:Version
Range:
play:Encoding

[back to top]

Property: play:metaDataLicence

- The licence that applies to the metadata in this instance

OWL Type:
DatatypeProperty
sub-property-of:
dcterms:license
Range:
xsd:string

[back to top]

Property: play:metaDataSource

- The source of the metadata in this instance

OWL Type:
DatatypeProperty
Range:
xsd:string

[back to top]

Property: play:metaDataSourceStatement

- A statement required by the providers or distributors of the metadata

OWL Type:
DatatypeProperty
Range:
xsd:string

[back to top]

Property: play:nextEpisode

- The Episode in this Brand that comes immediately after this Episode.

OWL Type:
ObjectProperty
sub-property-of:
frbr:successor
Domain:
play:Episode
Range:
play:Episode

[back to top]

Property: play:originator

- The producer of this data

OWL Type:
ObjectProperty
Domain:
play:Location

[back to top]

Property: play:previousEpisode

- The Episode in this Brand that came immediately before this episode.

OWL Type:
ObjectProperty
sub-property-of:
frbr:successorOf
Domain:
play:Episode
Range:
play:Episode

[back to top]

Property: play:price

- The price to obtain media from this Location under the specified revenueContract

OWL Type:
DatatypeProperty
Domain:
play:Policy
Range:
xsd:float

[back to top]

Property: play:provider

- The ingester of this data

OWL Type:
ObjectProperty
Domain:
play:Location

[back to top]

Property: play:publishedDuration

- The length of the program as published (typically rounded to the nearest 5 mins)

OWL Type:
DatatypeProperty
Domain:
play:Version
Range:
xsd:time

[back to top]

Property: play:quality

- Marks out of 10 for the technical quality of this content

OWL Type:
DatatypeProperty
Domain:
play:Location
Range:
xsd:int

[back to top]

Property: play:restrictedBy

- The distribution Policy that applies to this Location

Inverse:
play:appliesTo
OWL Type:
ObjectProperty
Domain:
play:Location
Range:
play:Policy

[back to top]

Property: play:revenueContract

- The type of contract offered to consumers of media at this Location. Options are: 'pay to buy', 'pay to rent', 'subscription', 'free to view'.

OWL Type:
DatatypeProperty
Domain:
play:Policy

[back to top]

Property: play:revenueSubscriptionScheme

- A URI representing a subscription scheme that provides access to this Location

OWL Type:
ObjectProperty
Domain:
play:Policy

[back to top]

Property: play:sampleUri

- The URI of a small sample of the data, which can be used to check that this Location and Encoding is fit for purpose

OWL Type:
ObjectProperty
Domain:
play:Location

[back to top]

Property: play:seasonPosition

- The number of the season that this Episode is a part of (e.g., if this is s10e16, seasonPosition=10)

OWL Type:
DatatypeProperty
Domain:
play:Episode
Range:
xsd:int

[back to top]

Property: play:seasonTitle

- The title of the season

OWL Type:
DatatypeProperty
sub-property-of:
dc:title
Domain:
play:Episode
Range:
xsd:string

[back to top]

Property: play:signedLangauge

- Language of in-picture signing for the hearing-impaired. Specified as ISO 639-2 3-letter codes.-

OWL Type:
DatatypeProperty
Domain:
play:Version
Range:
xsd:string

[back to top]

Property: play:source

- How this data was orignially distributed (e.g., DVB-S)

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:string

[back to top]

Property: play:trailer

- A trailer that promotes this content

OWL Type:
ObjectProperty
sub-property-of:
http://purl.org/vocab/frbr/core#:complement
Domain:
play:Episode
Range:
play:Episode

[back to top]

Property: play:transportIsLive

- Is transmitted on a live basis, i.e. the earliest and latest availability times are the same

OWL Type:
DatatypeProperty
Domain:
play:Location
Range:
xsd:boolean

[back to top]

Property: play:transportSubType

- Aditional detail about the transport (e.g., HTTP, FTP)

OWL Type:
DatatypeProperty
Domain:
play:Location
Range:
xsd:string

[back to top]

Property: play:transportType

- The protocol used to transport the data. Options are: 'downlaod', 'stream', embedobject', 'htmlembedded'. More information is given above.

OWL Type:
DatatypeProperty
Domain:
play:Location

[back to top]

Property: play:uri

- The URI of the data

OWL Type:
ObjectProperty
Domain:
play:Location

[back to top]

Property: play:videoBitrate

- Video bit rate, in kBits per second

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

Property: play:videoCoding

- The video encoding scheme MIME type, e.g., video/H264

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:string

[back to top]

Property: play:videoFrameRate

- Number of frames per second

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:float

[back to top]

Property: play:videoHorizontalSize

- Horizontal pixels

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

Property: play:videoVariableBitRate

- The video bitrate changes significantly through the Encoding

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:boolean

[back to top]

Property: play:videoVerticalSize

- Number of vertical pixels

OWL Type:
DatatypeProperty
Domain:
play:Encoding
Range:
xsd:int

[back to top]

A. References

name
long name description...

[need to add links to TV Anytime, video format info, etc.]

B. Changes in this version

C. Acknowledgements

This document was produced with much help from:

Ashok Argent-Katwala
Who first suggested that we use RDF for this project, and has been trying to pursue us to uphold his own impressively high standards. Errors in this document are unlikely to come from him.
Lee Denison
Who has been implementing the spec, and identifying practical opportunities for improvement.
Gareth Klose
Who has brought much needed detailed knowledge of data formats.
Yves Raimond
For many helpful suggestions, particularly around opportunities to link with the BBC Programme Ontology.
George Wright
Who has helped us to match the ontology to the needs of a real broadcaster, the BBC.