WebSchemas/TVRadioSchema

From W3C Wiki


This is an archived WebSchemas proposal TV and Radio schema for schema.org. See Proposals listing for more. Note: active schema.org development is now based at github




This page discusses TV and radio part of schema.org, from the WebSchemas group. These are proposed additions/modifications by Yves Raimond (BBC), Jean-Pierre Evain (EBU)

Some background discussion is in SchemaDotOrgTV. See also EBU Core metadata

Notes regarding cleanup and core missing things

Notes on recent developments:

A surge of activity took place during SemTech 2012 and further thinking has developed around the model as the deadline for the publication for schema.org 1.0 approaches.

Here are some the changes made and associated background/thinking:

  • The concept of "Program" has been removed as it was found ambiguous. Some parties would take 'Program' as a general concept encompassing 'Series', 'Season', 'Episode' and 'Clip'. Others would consider 'Program' has an instance of a media resource of different types including but not limited to Episode e.g. Interview, Trailer, Documentary, News report, etc. This was additionally raising issues around the associated hierarchies. Therefore it was felt easier to remove 'Program' (as well as TVProgram and RadioProgram).
  • The only other change has been to add 'MediaObject' as a domain of 'publication'. This offer the flexibility to define MediaObjects other than Episode and Clip being published. The CreativeWork 'genre' property shall be used to define the format and subject. Examples of formats are: Interview, Trailer, Documentary, Report, etc. Examples of subjects are: News, Sport, etc.
  • We have added several missing definitions/descriptions
  • Finally, examples have been added.

Modifications to the existing schema

In order to accomodate radio programs:

  • Add Thing > CreativeWork > Series
  • Add Thing > CreativeWork > Season
  • Add Thing > CreativeWork > Episode
  • Put TVSeries under Series
  • Put TVSeason under Season
  • Put TVEpisode under Episode
  • Add Thing > CreativeWork > Series > RadioSeries
  • Add Thing > CreativeWork > Season > RadioSeason
  • Add Thing > CreativeWork > Episode > RadioEpisode
  • Move all properties on TVSeries, TVSeason and TVEpisode to their direct parent (Series, Season, Episode) so that their radio counterparts inherit them as well
 with descriptions: 
 -TVSeries - Series dedicated to TV broadcast and associated on line delivery
 -RadioSeries - Series dedicated to Radio broadcast and associated on line delivery
 -TVSeason - A season of TVSeries
 -RadioSeason - A season of RadioSeries
 -TVEpisode - An episode of a TVSeries
 -RadioEpisode - An episode of a RadioSeries

In order to make the properties clearer/more consistent:

In Series/Season:

  • Modify 'endDate'
 with description to be 'start of the last first publication of an episode within that series/season'
  • Modify 'startDate'
 with description to be 'start of the first publication of an episode within that series/season'

In Season:

  • Add a partOfSeries property to Season
 with description "a generic property to define relation between Series, TVSeries and RadioSeries with Season, 
 TVSeason and RadioSeason".
 Add to description of 'partOfTVSeries' "preferred property is now 'partOfSeries'"
  • Add a seasonNumber property to Season
 with description "a number to rank the position of a Season within an ordered group of Seasons"
 Add to description of 'seasonNumber' "preferred property is now 'position'." 
 (see below the definition of 'position')

In Episode:

  • Add 'startDate'
 with description 'start of the first publication of the episode'
  • Add 'endDate'
 with description 'end of the first publication of the episode'
  • Create new alias/subproperty of 'partOfTVSeries' called 'partOfSeries'
 with description "a generic property applicable to other types of Series"
  • Create new alias/subproperty of 'partOfTVSeason' called 'partOfSeason'
 with description "a generic property applicable to other types of Seasons"
  • Create new property called 'position' of datatype 'string'
 with description "free text to define other than pure numerical ranking of an episode or other content resource in an ordered list of items (further formatting restrictions may apply within particular user groups)"

Additions to the existing schema

In order to accomodate clips:

  • Add Thing > CreativeWork > Clip
 with description "a short program or a segment/part of a program"
  • Add Thing > CreativeWork > Clip > RadioClip
 with description "a short program or a segment/part of a RadioProgram"
  • Add Thing > CreativeWork > Clip > TVClip
 with description "a short program or a segment/part of a TVProgram"
  • Add 'mediaClip' property to Series and Season and Episode
 with description "A property to define the Clips related to a group, e.g. a Series or a Season, or to an Episode
  • Add 'partOfEpisode', 'partOfSeason', 'partOfSeries' properties
 with description "properties to define the relation of a clip to series, seasons and episodes.

In order to accommodate broadcast and associated publications:

The following constructs and properties can be used to declare individuals events, which can also be grouped and organised to represent programme guides and on-demand program catalogues (e.g. for catch-up TV).

  • Add Thing > BroadcastService
 with description "A delivery service through which content is provided via broadcast over the air or on line"
  • Add property 'parentService', range 'BroadcastService'
 with description "A BroadcastService to which a BroadcastService may belong to such as regional broadcast channel 
 iterations of a national channel"
  • Add property 'area', range 'Place'
 with description "the area within which users can expect to reach the BoradcastService"
  • Add property 'broadcaster', range 'Organization'
 with description "the Organization owning / operating the BroadcastService"
  • Add Thing > Event > PublicationEvent
 with description "a PublicationEvent corresponds indifferently to e.g. a scheduled or unscheduled/special broadcast 
 event, or on-demand events through a variety of delivery media"
  • Add Thing > PublicationEvent > BroadcastEvent
 with description "An over the air or on line broadcast event"


  • Add Thing > PublicationEvent > OnDemandEvent
 with description "a published on demand event e.g. catch-up TV or radio podcast"
  • Add 'free' property, domain BroadcastEvent or OnDemandEvent, range 'boolean'

with description "a flag to signal if content is accessible for free"

  • Add 'publication' property, domain Episode or Clip or MediaObject, range PublicationEvent
 with description "the relation between a PublicationEvent and the Episode or Clip associated with the Event"
  • Add 'publishedOn' property, domain 'PublicationEvent', range 'BroadcastService'
 with description "a generic relationship between a PublicationEvent and the BroadcastService publishing this Event"
  • Add 'instantiates' property, domain PublicationEvent, range 'MediaObject'
 with description "a generic property to uniquely link a PublicationEvent (>BroadcastEvent or >OnDemandEvent) to a MediaObject"

Just like thumbnails are associated to mediaObjects in complement to the image associated to a Thing, it is proposed to add a 'logo' to the definition of an Organization

  • Add 'logo' property, domain 'Organization', range 'URL' with description "an image uniquely identifying an Organization"

Example 1

Describing a Doctor Who episode, a broadcast of that episode on BBC One, and an availability window, with Microdata:

<div itemscope itemtype="http://schema.org/TVSeries">
  <a itemprop="url" href="http://www.bbc.co.uk/programmes/b006q2x0"><span itemprop="name">Doctor Who</span></a>,
 
  <div itemprop="season" itemscope itemtype="http://schema.org/TVSeason">
    <a itemprop="url" href="http://www.bbc.co.uk/programmes/b00rs69w"><span itemprop="name">Series 5</span></a>, 

    <div itemprop="episode" itemscope itemtype="http://schema.org/TVEpisode">
      <a itemprop="url" href="http://www.bbc.co.uk/programmes/b00sj9sq"><span itemprop="name">The Hungry Earth</span></a>, 
      episode <span itemprop="position">8</span>, broadcast on 

      <div itemprop="publication" itemscope itemtype="http://schema.org/BroadcastEvent">
        <div itemprop="publishedOn" itemtype="http://schema.org/BroadcastService">
          <span itemprop="name">BBC One</span>
        </div> at
        <span itemprop="startDate" datetime="2010-05-22T18:15:00+01:00">18:15, 22nd of May</span>
      </div>, available on <a href="http://www.bbc.co.uk/iplayer">BBC iPlayer</a> from 

      <div itemprop="publication" itemscope itemtype="http://schema.org/OnDemandEvent">
        <span itemprop="startDate" datetime="2012-06-02T19:45:00+01:00">19:45 on the 2nd of June</span> until the
        <span itemprop="endDate" datetime="2012-06-09T19:44:00+01:00">9th</span>.
      </div>
    </div>
  </div>
</div>

Example 2

Describing a TVProgram documentary, a broadcast of that Program on Documentary Channel, and and the date and time of broadcast, with Microdata:

///OPTION 1 starting from the MediaObject////

<div itemscope itemtype ="http://schema.org/MediaObject">
  <a itemprop="url" href="http://www.foo_dchannel.ch/programmes/xwzwk"></a>
  <h2>Title: <itemprop="name">A day at semtech</h2>
  <b>Editorial Format:</b> <span itemprop="genre">documentary</span>
  </br>
  <b>Genre: </b><span itemprop="genre">Information Technology</span>
  </br>
  <b>Duration:</b> <span itemprop="duration" datetime="PT1H10M">70 minutes</span>
  <div itemprop="publication" itemscope itemtype="http://schema.org/BroadcastEvent">
     <div itemprop="publishedOn" itemscope itemtype="http://schema.org/BroadcastService">
        <b>Broadcast on: </b> <span itemprop="name">Foo Documentary Channel</span>
     </div> 
     <b>on</b><span itemprop="startDate" datetime="2012-06-22T18:15:00+01:00">18:15, 22nd of June 2012</span>
  <b>from</> <a href="http://www.foo_dchannel.ch/streamingxwuwk20100622.html" itemprop="url">Documentary Channel streaming service</a>
  </div>
</div>

Example 3

///OPTION 2 starting from the PublicationEvent (>BroadcastEvent or >OnDemandEvent)////

In this example, the PublicationEvent is published on an over the air broadcast channel (e.g. terrestrial or satellite). A DVB URI is provided for TV decoders to switch to the appropriate transport stream (particularly useful for hybrid broadband broadcast TV). This allows searching for publication events e.g. within a window of time (now, in an hour, etc.). It also support queries per MediaObjects finding all corresponding publication events.

<div itemscope itemtype ="http://schema.org/BroadcastEvent">
     <div itemprop="publishedOn" itemscope itemtype="http://schema.org/BroadcastService">
        <b>Broadcast on channel: </b><span itemprop="name"><a href="dvb://233a.1041.10bf" itemprop="url">Foo TV Channel 4</a></span>
     </div> 
     <span itemprop="startDate" datetime="2012-06-22T18:15:00+01:00"><b>at </b>18:15, 22nd of June 2012</span>
     <div itemprop=instantiates" itemscope itemtype="http://schema.org/MediaObject">
        <h3>Title: <span itemprop="name">A day at semtech</span></h3>
        <b>Editorial Format: </b><a href="editorialFormats.ebu.ch/editorialFormatCS.htm#2.1.4" itemprop="genre">documentary</a></br>
        <b>Genre: </b><a href="genres.ebu.ch/contentGenreCS.htm#3.1.6.8.4" itemprop="genre">science</a></br>
        <b>Duration: </b><span itemprop="duration" datetime="PT1H10M">70 minutes</span>
     </div>
</div>

The following snippet presentd another representation of Example 3 using RDFa Lite:

    <div vocab="http://schema.org/" typeof="BroadcastEvent">
      <div property="publishedOn" typeof="BroadcastService">
        <b>Broadcast on channel: </b><a href="dvb://233a.1041.10bf" property="url">Foo TV Channel 4</a>
      </div>
      <b>at</b><span property="startDate">18:15, 22nd of June 2012</span>
      <div property="instantiates" vocab="http://schema.org/" typeof="MediaObject">
        <b>Title: </b><span property="name">A day at Semtech</a>
        <b>Genre: </b><a href="genres.ebu.ch/contentGenreCS.htm#3.1.6.8.4" property="genre">science</a></br>
        <b>Duration: </b><span property="duration">70 minutes</span>
      </div>
    </div>

Under discussion - Future work

  • we ack that the schema.org system does not yet have a formal notion of subproperty, but we keep track of the idea here for now.


TVRadioSchema-PARTS