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.
This document is published under the creative commons public domain licence.
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:
- Cast and crew
- Segments, including advertising
Table of Contents
- Introduction
- URIplay ontology at a glance
- URIplay ontology overview
- Cross-reference for URIplay classes and properties
Appendices
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.
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
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
Class: play:Encoding
- A 'bag of bits'. For example, if a single Version is available in high and low quality files, each is a different Encoding.
- sub-class-of:
- frbr:Manifestation
- in-domain-of:
- play:availableAt
- play:manifestationOf
- play:dataContainerFormat
- play:bitRate
- play:dataSize
- play:videoCoding
- play:videoBitrate
- play:videoFrameRate
- play:videoVerticalSize
- play:videoHorizontalSize
- play:videoVariableBitRate
- play:hasDOG
- play:audioCoding
- play:audioBitrate
- play:audioChannels
- play:source
- play:distributor
- in-range-of:
- play:manifestedAs
- play:locationOf
Class: play:Episode
- owl:sameAs po:Episode
Class: play:Location
- A Location at which an Encoding (and therefore a Program) is available.
Class: play:Policy
- A description of access restrictions that apply to a Location.
- in-domain-of:
- play:appliesTo
- play:availabilityLength
- play:drmScheme
- play:drmVersion
- play:drmPlayableLength
- play:drmPlayableDaysFromDownload
- play:drmPlayableDaysFromStart
- play:availableCountry
- play:revenueContract
- play:price
- play:currency
- play:revenueSubscriptionScheme
- play:authenticationMethod
- in-range-of:
- play:restrictedBy
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.
Property: play:advertisingDuration
- The length of in-vision advertising in this Recording
- OWL Type:
- DatatypeProperty
- Domain:
- play:Version
- Range:
- xsd:time
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
Property: play:audioBitrate
- The average bitrate of the audio, in kbits/sec
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
Property: play:audioChannels
- Number of channels, i.e., mono=1, stereo=2
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
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
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
Property: play:authenticationMethod
- The authentication method that controls access to this content
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:string
Property: play:availabilityLength
- The amount of time that the Location will be available, since availabilityStart
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:time
Property: play:availabilityStart
- The first time at which the content is available from this Location
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Range:
- xsd:dateTime
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
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
Property: play:bitRate
- The average bitrate, in kbits/sec
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
Property: play:broadcastDuration
- The actual duration of the content, to the nearest second
- OWL Type:
- DatatypeProperty
- Domain:
- play:Broadcast
- Range:
- xsd:time
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
Property: play:containsAdvertising
- Does this instance contain commercial messages?
- OWL Type:
- DatatypeProperty
- Domain:
- play:Version
- Range:
- xsd:boolean
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
Property: play:dataContainerFormat
- The MIME type of the container, e.g., video/mpeg2
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
Property: play:dataSize
- The size of the data file in kB
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
Property: play:distributor
- Description of the distribution organisation
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
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
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
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
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
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
Property: play:drmVersion
- The version number/name of the drmScheme in force for this Policy
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:string
Property: play:firstEpisode
- The first known episode of this Brand
- OWL Type:
- ObjectProperty
- sub-property-of:
- frbr:supplement
- Domain:
- play:Episode
- Range:
- play:Episode
Property: play:guidance
- A warning, such as 'strong language' or 'adult themes'
- Inverse:
- play:manifestationOf
- OWL Type:
- ObjectProperty
- Domain:
- play:Version
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
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
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
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
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
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
Property: play:metaDataLicence
- The licence that applies to the metadata in this instance
- OWL Type:
- DatatypeProperty
- sub-property-of:
- dcterms:license
- Range:
- xsd:string
Property: play:metaDataSource
- The source of the metadata in this instance
- OWL Type:
- DatatypeProperty
- Range:
- xsd:string
Property: play:metaDataSourceStatement
- A statement required by the providers or distributors of the metadata
- OWL Type:
- DatatypeProperty
- Range:
- xsd:string
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
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
Property: play:price
- The price to obtain media from this Location under the specified revenueContract
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:float
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
Property: play:quality
- Marks out of 10 for the technical quality of this content
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Range:
- xsd:int
Property: play:restrictedBy
- The distribution Policy that applies to this Location
- Inverse:
- play:appliesTo
- OWL Type:
- ObjectProperty
- Domain:
- play:Location
- Range:
- play:Policy
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
Property: play:revenueSubscriptionScheme
- A URI representing a subscription scheme that provides access to this Location
- OWL Type:
- ObjectProperty
- Domain:
- play:Policy
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
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
Property: play:seasonTitle
- The title of the season
- OWL Type:
- DatatypeProperty
- sub-property-of:
- dc:title
- Domain:
- play:Episode
- Range:
- xsd:string
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
Property: play:source
- How this data was orignially distributed (e.g., DVB-S)
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
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
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
Property: play:transportSubType
- Aditional detail about the transport (e.g., HTTP, FTP)
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Range:
- xsd:string
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
Property: play:videoBitrate
- Video bit rate, in kBits per second
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
Property: play:videoCoding
- The video encoding scheme MIME type, e.g., video/H264
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
Property: play:videoFrameRate
- Number of frames per second
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:float
Property: play:videoHorizontalSize
- Horizontal pixels
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
Property: play:videoVariableBitRate
- The video bitrate changes significantly through the Encoding
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:boolean
Property: play:videoVerticalSize
- Number of vertical pixels
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
A. References
- name
- long name description...
[need to add links to TV Anytime, video format info, etc.]
B. Changes in this version
- 20080114: First version of spec published.
- 20080203: Minor updates.
- 20080407: Major updates, including integration with BBC Programme Ontology.
- 20080414: Minor updates.
- 20081114: Some new fields.
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.
