Cookbook/Video content

GoodRelations for Video Content

Video Content

This pages shows how to model offers for video content using GoodRelations and schema.org. For the moment, we just give Microdata examples using the GoodRelations elements in the http://schema.org namespace, as per the extension proposal under discussion available from https://docs.google.com/document/pub?id=1Kx63gW9DBky1j97Jpwl3dU9k0pKPSgCT3EntTVvGjX4#h.ark9j0fmugnv

Note that a there are slight naming differences between the identifiers for GoodRelations in the original namespace (http://purl.org/goodrelations/v1#) and the schema.org namespace (http://schema.org/). See here for more details.

Buy Videos for Download

  • On-line delivery / download
  • You get permanent access to the video content

First we describe the movie title as a product model:

<!-- The movie "model" -->
 <div itemscope itemtype="http://schema.org/Movie"
      itemid="http://www.imdb.com/title/tt0325980/#">
    <link itemprop="additionalType" href="http://schema.org/ProductModel" />
   <p itemprop="name">Pirates of the Carribean: On Stranger Tides (2011)</p>
   <span itemprop="description">Jack Sparrow and Barbossa embark on a quest to
   find the elusive fountain of youth, only to discover that Blackbeard and
   his daughter are after it too.</span>
 </div>

Then we describe the the actual movies that you can rent or purchase plus the offer:

<!-- Some copies of that title -->
 <div itemscope itemtype="http://schema.org/Movie" itemid="#video">
    <link itemprop="additionalType" href="http://schema.org/SomeItems" />
   <p itemprop="name">Pirates of the Carribean: On Stranger Tides (2011)</p>
   <span itemprop="description">Jack Sparrow and Barbossa embark on a quest to
   find the elusive fountain of youth, only to discover that Blackbeard and
   his daughter are after it too.</span>
    <a itemprop "model" href="http://www.imdb.com/title/tt0325980/#">
More information on imdb.com</a>
<!-- The offer to sell a copy of the video -->
   <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <link itemprop="businessFunction" href="http://purl.org/goodrelations/v1#Sell" />
        Price: <div itemprop="priceSpecification" itemscope
                    itemtype="http://schema.org/UnitPriceSpecification">$
                    <span itemprop="price">9.90</span>
                    <meta itemprop="priceCurrency" content="USD">
                    <time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
                </div>
        Delivery: <link itemprop="availableDeliveryMethod"
        href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
    </div>
 </div>

Note 1: In the example, I used the more granular, new http://schema.org/UnitPriceSpecification type. The simple schema.org type would also work here.

Note 2: The example depends on the new "additionalType" property for indicating additional type information, as described in the W3C wiki. This has been added to schema.org in the meantime (release 0.96).

Note 3: As per the current proposal, the enumeration like http://purl.org/goodrelations/v1#DirectDownload and http://purl.org/goodrelations/v1#Sell will be used directly from the GoodRelations namespace.

Rent Videos for 30 days

Basically the same as above; just the business function in the offer will be changed to LeaseOut and the validity of the lease will be encoded using the eligibleDuration property. Note that the current proposal of integration GoodRelations into schema.org suggest to use all enumerations, including payment options, business functions, credit cards, etc., from the original GoodRelations namespace http://purl.org/goodrelations/v1#. So the URI of LeaseOut as a business function will be http://purl.org/goodrelations/v1#LeaseOut, not http://schema.org/LeaseOut.

<!-- Some copies of that title -->
 <div itemprop="about" itemscope itemtype="http://schema.org/Movie" itemid="#video">
    <link itemprop="additionalType" href="http://schema.org/SomeItems" />
   <h1 itemprop="name">Pirates of the Carribean: On Stranger Tides (2011)</h1>
   <span itemprop="description">Jack Sparrow and Barbossa embark on a quest to
   find the elusive fountain of youth, only to discover that Blackbeard and
   his daughter are after it too.</span>
    <a itemprop "model" href="http://www.imdb.com/title/tt0325980/#">
More information on imdb.com</a>
<!-- The offer to lease out a copy of the video -->
   <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
        <link itemprop="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut" />
        Price: <div itemprop="priceSpecification" itemscope
                    itemtype="http://schema.org/UnitPriceSpecification">$
                    <span itemprop="price">3.99</span>
                    <meta itemprop="priceCurrency" content="USD">
                    <time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
                </div>
        Delivery: <link itemprop="availableDeliveryMethod"
        href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
       Validity of the lease: <div itemprop="eligibleDuration" itemscope
              itemtype="http://schema.org/QuantitativeValue">
              <span itemprop="value">30</span>-
              <meta itemprop="unitCode" content="DAY" >days
    </div>
 </div>

Bundle: All 3 Episodes of a Series

Assume we are offering the following three movies for rent:

  1. Mission: Impossible (1996), http://www.imdb.com/title/tt0117060/
  2. Mission: Impossible II (2000), - http://www.imdb.com/title/tt0120755/
  3. Mission: Impossible III (2006), - http://www.imdb.com/title/tt0317919/

The Movies Reference Data

First, we should model the three movies as forms of creative works, i.e. "product models". This can be done by the site offering the media content, but would be better added to sites with reference information, like IMDb or Freebase.

The power of this pattern is that details about the movies, like involved actors, length, links to making-of footage etc., can be defined once and used to augment every single copy of the movie offered on the Web.

<!-- The movie "Mission: Impossible (1996)" -->
 <div itemscope itemtype="http://schema.org/Movie"
        itemid="http://www.imdb.com/title/tt0325980/#">
    <link itemprop="additionalType" href="http://schema.org/ProductModel" />
   <p itemprop="name">Mission: Impossible (1996)</p>
   <span itemprop="description">An American agent, under false suspicion of disloyalty, must discover
and expose the real spy without the help of his organization.</span>
 </div>

<!-- The movie "Mission: Impossible II (2000)" -->
 <div itemscope itemtype="http://schema.org/Movie"
        itemid="http://www.imdb.com/title/tt0120755/#">
    <link itemprop="additionalType" href="http://schema.org/ProductModel" />
   <p itemprop="name">Mission: Impossible II (2000)</p>
   <span itemprop="description">A secret agent is sent to Sydney, to find and destroy a genetically
 modified disease called &apos;Chimera&apos;.</span>
 </div>

<!-- The movie "Mission: Impossible III (2006)" -->
 <div itemscope itemtype="http://schema.org/Movie"
        itemid="http://www.imdb.com/title/tt0317919/#">
    <link itemprop="additionalType" href="http://schema.org/ProductModel" />
   <p itemprop="name">Mission: Impossible III (2006)</p>
   <span itemprop="description">Ethan Hunt comes face to face with a dangerous and sadistic arms
dealer while trying to keep his identity secret in order to protect his girlfriend.</span>
 </div>

Note: One could also directly use the URIs from Freebase or DBPedia for the movies, if they exist.

The Bundle Offer

Second, we model the offer, i.e. the fact that you can lease all three episodes for $ 9.99. This is done by a standard http://schema.org/Offer entity with a price for the full bundle plus links using the includesObject property to individual http://schema.org/TypeAndQuantity nodes.

Since the information about the price on one hand and the basic description of the movies on the rental site will likely not be in exactly the same order as we need them, we are using the itemref feature of the microdata syntax to tell the parser to collate this information from different positions in the HTML document:

<div itemscope itemtype="http://schema.org/Offer" itemid="#offer" >
  <span itemprop="name">Impossible Mission I - III; all-in-one</span>
  <span itemprop="description">Watch all three episodes for just $ 9.99</span>
  <link itemprop="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut" />
  Price: <div itemprop="priceSpecification" itemscope
              itemtype="http://schema.org/UnitPriceSpecification">$
                 <span itemprop="price">9.99</span>
                 <meta itemprop="priceCurrency" content="USD">
                 <time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
         </div>
  Delivery: <link itemprop="availableDeliveryMethod"
                  href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
  Validity of the lease: <div itemprop="eligibleDuration" itemscope
              itemtype="http://schema.org/QuantitativeValue">
              <span itemprop="value">30</span>-
              <meta itemprop="unitCode" content="DAY" >days
  </div>
  <!-- The pointers to the TypeAndQuantity nodes -->
  <div itemprop="includesObject" itemref="v1"></div
  <div itemprop="includesObject" itemref="v2"></div
  <div itemprop="includesObject" itemref="v3"></div
<div>

Note: The shortcut property gr:includes from GoodRelations is equivalent to the schema.org property itemOffered and thus not imported to schema.org, while the long form gr:includesObject, needed for modeling product bundles, will be a new schema.org property includesObject to be added to <http://schema.org/Offer>.

The Movies on the Rental Site

Lastly, the rental site itself will provide a basic description of all media objects included in the bundle, and link to the datasheets from above for additional data. Note that "link" in here means not just a link for a human to click, but a typed pointer for a search engine to understand that this is the URI of the movie.

The markup looks pretty similar to the model data, except for the fact that the additional type is http://schema.org/SomeItems instead of http://schema.org/ProductModel, and that there is a model property linking to the URI of the model.

Since we do not just want to say that a certain movie is included, but that one piece of each movie is included, we link the offer to each episode via a http://schema.org/TypeAndQuantity node with the quantity of 1 and the unit code of C62 (which stands for "piece"):

First movie: "Mission: Impossible (1996)"

<div id="v1" itemscope itemtype="http://schema.org/TypeAndQuantityNode">
  <meta itemprop="amountOfThisGood" content="1">
  <meta itemprop="unitCode" content="C62">
<!-- The movie "Mission: Impossible (1996)" -->
  <div itemprop="typeOfGood"
       itemscope itemtype="http://schema.org/Movie" itemid="#video1">
       <link itemprop="additionalType" href="http://schema.org/SomeItems" />
       <p itemprop="name">Mission: Impossible (1996)</p>
       <span itemprop="description">An American agent, under false suspicion of disloyalty,
        must discover and expose the real spy without the help of his organization.</span>
       <a itemprop "model" href="http://www.imdb.com/title/tt0325980/#">
        More information on imdb.com</a>
 </div>
</div>

Second movie: "Mission: Impossible II (2000)"

<div id="v2" itemscope itemtype="http://schema.org/TypeAndQuantityNode">
  <meta itemprop="amountOfThisGood" content="1">
  <meta itemprop="unitCode" content="C62">
<!-- The movie "Mission: Impossible II (2000)" -->
  <div itemprop="typeOfGood"
       itemscope itemtype="http://schema.org/Movie" itemid="#video1">
       <link itemprop="additionalType" href="http://schema.org/SomeItems" />
       <p itemprop="name">Mission: Impossible II (2000)</p>
       <span itemprop="description">A secret agent is sent to Sydney, to find and destroy a
        genetically modified disease called &apos;Chimera&apos;.</span>
       <a itemprop "model" href="http://www.imdb.com/title/tt0120755/#">
        More information on imdb.com</a>
 </div>
</div>

Third movie: "Mission: Impossible III (2006)"

<div id="v3" itemscope itemtype="http://schema.org/TypeAndQuantityNode">
  <meta itemprop="amountOfThisGood" content="1">
  <meta itemprop="unitCode" content="C62">
<!-- The movie "Mission: Impossible III (2006)" -->
  <div itemprop="typeOfGood"
       itemscope itemtype="http://schema.org/Movie" itemid="#video1">
       <link itemprop="additionalType" href="http://schema.org/SomeItems" />
       <p itemprop="name">Mission: Impossible III (2006)</p>
       <span itemprop="description">Ethan Hunt comes face to face with a dangerous
        and sadistic arms dealer while trying to keep his identity secret in order
        to protect his girlfriend.</span>
       <a itemprop "model" href="http://www.imdb.com/title/tt0317919/#">
        More information on imdb.com</a>
 </div>
</div>

Limitations

  1. You can currently not express choices of the kind "two movies out of a list of 100", i.e. configurable bundles.
  2. Also, you cannot currently model limitations of the kind "You can rent all of our movies but keep a maximum of three titles at the same time".

Subscription: Time-limited Access to a Collection of Media

Examples:

  • Netflix offers unlimited access to all of its TV episodes and movies for a monthly fee of $ 7.99
  • Lovefilm.de' offers varios packages, e.g.
    • Light at € 4.99: 2 DVD/Blue-ray titles/month; 1 title at the same time
    • Medium at € 7.29: 3 DVD/Blue-ray titles/month; 1 title at the same time
    • Ultimate at € 9.99: 4 DVD/Blue-ray titles/month; 2 title at the same time plus unlimited video on demand
    • Flatrate 1 at €11.99: unlimited DVD/Blue-ray titles/month; 1 title at the same time plus unlimited video on demand
    • Flatrate 2 at €17.99: unlimited DVD/Blue-ray titles/month; 2 title at the same time plus unlimited video on demand
  • The Amazon Prime Instant Video subscription at $79/year includes unlimited, free streaming access to all titles plus free two-day shipping of DVDs and other media.

Simple Case

Netflix

Netflix offers unlimited access to all of its TV episodes and movies for a monthly fee of $ 7.99.

<div itemscope itemtype="http://schema.org/Offer" itemid="#offer" >
  <span itemprop="name">Netflix: Watch as many TV episodes and movies as you want - $7.99/month</span>
  <span itemprop="description">...full textual description</span>
  <link itemprop="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut" />
  Price: <div itemprop="priceSpecification" itemscope
              itemtype="http://schema.org/UnitPriceSpecification">$
                 <span itemprop="price">7.99</span>
                 <meta itemprop="priceCurrency" content="USD">
<!-- per month: -->
                 <meta itemprop="unitCode" content="MON">
                 <time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
         </div>
  Delivery: <link itemprop="availableDeliveryMethod"
                  href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
  Validity of the lease: <div itemprop="eligibleDuration" itemscope
              itemtype="http://schema.org/QuantitativeValue">
              <span itemprop="value">30</span>-
              <meta itemprop="unitCode" content="DAY" >days
  </div>
<div>

Lovefilm.de

Lovefilm.de' offers varios packages, e.g.

  • Light at € 4.99: 2 DVD/Blue-ray titles/month; 1 title at the same time
  • Medium at € 7.29: 3 DVD/Blue-ray titles/month; 1 title at the same time
  • Ultimate at € 9.99: 4 DVD/Blue-ray titles/month; 2 title at the same time plus unlimited video on demand
  • Flatrate 1 at €11.99: unlimited DVD/Blue-ray titles/month; 1 title at the same time plus unlimited video on demand
  • Flatrate 2 at €17.99: unlimited DVD/Blue-ray titles/month; 2 title at the same time plus unlimited video on demand
Markup example to be done

Amazon Prime Instant Video

The Amazon Prime Instant Video subscription at $79/year includes unlimited, free streaming access to all titles.

<div itemscope itemtype="http://schema.org/Offer" itemid="#offer" >
  <span itemprop="name">Amazon Prime Instant Video - $79/year</span>
  <span itemprop="description">The Amazon Prime Instant Video subscription at $79/year includes
unlimited, free streaming access to all titles, plus as many DVD or Blue-ray titles as you want,
including free two-day delivery.</span>
  <link itemprop="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut" />
  Price: <div itemprop="priceSpecification" itemscope
              itemtype="http://schema.org/UnitPriceSpecification">$
                 <span itemprop="price">79</span>
                 <meta itemprop="priceCurrency" content="USD">
<!-- per year: ANN code -->
                 <meta itemprop="unitCode" content="ANN">
                 <time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
         </div>
  Delivery: <link itemprop="availableDeliveryMethod"
                  href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
<div>

Advanced Case: Expose List of Included Media

One could also explicitly model the collection of titles included in the offer; however, since it is currently not possible to model the constraints of choices ("2 per month" etc.), this is limited value.

A solution would be to define a subtype of http://schema.org/Product named http://schema.org/MediaCollection or http://schema.org/MediaSubscription with dedicated properties.

But this can be a dead end, since it will stimulate requests to add such domain specific types and properties into the schema. We currently discourage that direction.