RDF Ontology
Working Draft
- This version:
- http://uriplay.org/spec/ontology/20090319.html [rdf]
- Latest version:
- http://uriplay.org/spec/ [rdf]
- Previous version:
- http://uriplay.org/spec/ontology/20081114.html [rdf]
- Last Update:
- Date: 19 March 2009
- 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.
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, Item, List, 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.
- embedobject
- 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.
- htmlembedded
- 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.
Suggested values for some properties are listed on our vocabulary page
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. This class is the same as po:Brand.
Class: play:Broadcast
- A time and channel at which a Version is/was receivable. This Class is the same as po:Broadcast.
- owl:sameAs:
- 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
- Status:
- unstable
Class: play:Episode
- An audio or video creative work, which is organised in a way similar to radio or TV episodes. The class is the same as po:Episode.
Class: play:Item
- A creative work, which is potentially playable, such as a video or an audio creative work.
- sub-class-of:
- frbr:Work
- Status:
- unstable
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
- Status:
- unstable
Class: play:Version
- A version of an Episode. Every copy of the same Version has the same frames. For example, broadcasters produce some programmes with and without sign language. These variations constitute different Versions. This class is the same as po:Version.
- owl:sameAs:
- 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
Property: play:advertisingDuration
- The length of in-vision advertising in this Recording
- OWL Type:
- DatatypeProperty
- Domain:
- play:Version
- Range:
- xsd:time
- Status:
- testing
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
- Status:
- unstable
Property: play:audioBitrate
- The average bitrate of the audio, in kbits/sec
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- stable
Property: play:audioChannels
- Number of channels, i.e., mono=1, stereo=2
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- stable
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
- Status:
- stable
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
- Status:
- testing
- Version Info:
- TODO: Use a language type
Property: play:authenticationMethod
- The authentication method that controls access to this content
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:string
- Status:
- testing
Property: play:availabilityLength
- The amount of time that the Location will be available, since availabilityStart
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:time
- Status:
- unstable
Property: play:availabilityStart
- The first time at which the content is available from this Location
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Range:
- xsd:dateTime
- Status:
- unstable
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
- Status:
- unstable
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
- Status:
- testing
- Version Info:
- TODO: Subclass of country class
Property: play:bitRate
- The average bitrate, in kbits/sec
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- stable
Property: play:broadcastDuration
- The actual duration of the content, to the nearest second
- OWL Type:
- DatatypeProperty
- Domain:
- play:Broadcast
- Range:
- xsd:time
- Status:
- testing
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
- Status:
- unstable
- Version Info:
- TODO: Subproperty of langauge type
Property: play:containsAdvertising
- Does this instance contain commercial messages?
- OWL Type:
- DatatypeProperty
- Domain:
- play:Version
- Range:
- xsd:boolean
- Status:
- testing
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
- Status:
- testing
- Version Info:
- TODO: Some currency property
Property: play:dataContainerFormat
- The MIME type of the container, e.g., video/mpeg2
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
- Status:
- stable
Property: play:dataSize
- The size of the data file in kB
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- stable
Property: play:distributor
- Description of the distribution organisation
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
- Status:
- testing
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
- Status:
- testing
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
- Status:
- testing
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
- Status:
- unstable
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
- Status:
- testing
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
- Status:
- testing
Property: play:drmVersion
- The version number/name of the drmScheme in force for this Policy
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:string
- Status:
- testing
Property: play:firstEpisode
- The first known episode of this Brand
- OWL Type:
- ObjectProperty
- sub-property-of:
- frbr:supplement
- Domain:
- play:Episode
- Range:
- play:Episode
- Status:
- unstable
Property: play:guidance
- A warning, such as 'strong language' or 'adult themes'
- OWL Type:
- ObjectProperty
- Domain:
- play:Version
- Status:
- testing
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
- Status:
- unstable
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
- Status:
- testing
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
- Status:
- unstable
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
- Status:
- unstable
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
- Status:
- unstable
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
- Status:
- unstable
Property: play:metaDataLicence
- The licence that applies to the metadata in this instance
- OWL Type:
- DatatypeProperty
- sub-property-of:
- dcterms:license
- Range:
- xsd:string
- Status:
- unstable
- Version Info:
- TODO: This should be taken from an existing licence ontology
Property: play:metaDataSource
- The source of the metadata in this instance
- OWL Type:
- DatatypeProperty
- Range:
- xsd:string
- Status:
- unstable
- Version Info:
- TODO: URI type
Property: play:metaDataSourceStatement
- A statement required by the providers or distributors of the metadata
- OWL Type:
- DatatypeProperty
- Range:
- xsd:string
- Status:
- unstable
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
- Status:
- unstable
Property: play:originator
- The producer of this data
- OWL Type:
- ObjectProperty
- Domain:
- play:Location
- Status:
- unstable
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
- Status:
- unstable
Property: play:price
- The price to obtain media from this Location under the specified revenueContract
- OWL Type:
- DatatypeProperty
- Domain:
- play:Policy
- Range:
- xsd:float
- Status:
- testing
Property: play:provider
- The ingester of this data
- OWL Type:
- ObjectProperty
- Domain:
- play:Location
- Status:
- unstable
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
- Status:
- unstable
Property: play:quality
- Marks out of 10 for the technical quality of this content
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Range:
- xsd:int
- Status:
- testing
Property: play:restrictedBy
- The distribution Policy that applies to this Location
- Inverse:
- play:appliesTo
- OWL Type:
- ObjectProperty
- Domain:
- play:Location
- Range:
- play:Policy
- Status:
- unstable
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
- Status:
- testing
Property: play:revenueSubscriptionScheme
- A URI representing a subscription scheme that provides access to this Location
- OWL Type:
- ObjectProperty
- Domain:
- play:Policy
- Status:
- testing
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
- Status:
- testing
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
- Status:
- unstable
Property: play:seasonTitle
- The title of the season
- OWL Type:
- DatatypeProperty
- sub-property-of:
- dc:title
- Domain:
- play:Episode
- Range:
- xsd:string
- Status:
- testing
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
- Status:
- testing
- Version Info:
- TODO: Subproperty of langauge type
Property: play:source
- How this data was orignially distributed (e.g., DVB-S)
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
- Status:
- testing
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
- Status:
- testing
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
- Status:
- testing
Property: play:transportSubType
- Aditional detail about the transport (e.g., HTTP, FTP)
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Range:
- xsd:string
- Status:
- stable
Property: play:transportType
- The protocol used to transport the data. Options are: 'download', 'stream', embedobject', 'htmlembedded'. More information is given above.
- OWL Type:
- DatatypeProperty
- Domain:
- play:Location
- Status:
- stable
- Version Info:
- TODO: Complete list of allowed values
Property: play:videoBitrate
- Video bit rate, in kBits per second
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- stable
Property: play:videoCoding
- The video encoding scheme MIME type, e.g., video/H264
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:string
- Status:
- stable
Property: play:videoFrameRate
- Number of frames per second
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:float
- Status:
- unstable
Property: play:videoHorizontalSize
- Horizontal pixels
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- unstable
Property: play:videoVariableBitRate
- The video bitrate changes significantly through the Encoding
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:boolean
- Status:
- unstable
Property: play:videoVerticalSize
- Number of vertical pixels
- OWL Type:
- DatatypeProperty
- Domain:
- play:Encoding
- Range:
- xsd:int
- Status:
- unstable
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.
