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.
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 andspan>
his daughter are after it too.</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 andspan>
his daughter are after it too.</a itemprop "model" href="http://www.imdb.com/title/tt0325980/#">
<a>
More information on imdb.com</<!-- 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" />
<div itemprop="priceSpecification" itemscope
Price: <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>
</link itemprop="availableDeliveryMethod"
Delivery: < 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.
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 andspan>
his daughter are after it too.</a itemprop "model" href="http://www.imdb.com/title/tt0325980/#">
<a>
More information on imdb.com</<!-- 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" />
<div itemprop="priceSpecification" itemscope
Price: <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>
</link itemprop="availableDeliveryMethod"
Delivery: < href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
div itemprop="eligibleDuration" itemscope
Validity of the lease: <itemtype="http://schema.org/QuantitativeValue">
span itemprop="value">30</span>-
<meta itemprop="unitCode" content="DAY" >days
<div>
</div> </
Assume we are offering the following three movies for rent:
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
<span>
and expose the real spy without the help of his organization.</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
<'Chimera'.</span>
modified disease called 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
<span>
dealer while trying to keep his identity secret in order to protect his girlfriend.</div> </
Note: One could also directly use the URIs from Freebase or DBPedia for the movies, if they exist.
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" />
<div itemprop="priceSpecification" itemscope
Price: <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>
</link itemprop="availableDeliveryMethod"
Delivery: < href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
div itemprop="eligibleDuration" itemscope
Validity of the lease: <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>.
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,
<span>
must discover and expose the real spy without the help of his organization.</a itemprop "model" href="http://www.imdb.com/title/tt0325980/#">
<a>
More information on imdb.com</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
<'Chimera'.</span>
genetically modified disease called a itemprop "model" href="http://www.imdb.com/title/tt0120755/#">
<a>
More information on imdb.com</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 orderspan>
to protect his girlfriend.</a itemprop "model" href="http://www.imdb.com/title/tt0317919/#">
<a>
More information on imdb.com</div>
</div> </
Examples:
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" />
<div itemprop="priceSpecification" itemscope
Price: <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>
</link itemprop="availableDeliveryMethod"
Delivery: < href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
div itemprop="eligibleDuration" itemscope
Validity of the lease: <itemtype="http://schema.org/QuantitativeValue">
span itemprop="value">30</span>-
<meta itemprop="unitCode" content="DAY" >days
<div>
</div> <
Lovefilm.de' offers varios packages, e.g.
Markup example to be done
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,span>
including free two-day delivery.</link itemprop="businessFunction" href="http://purl.org/goodrelations/v1#LeaseOut" />
<div itemprop="priceSpecification" itemscope
Price: <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>
</link itemprop="availableDeliveryMethod"
Delivery: < href="http://purl.org/goodrelations/v1#DirectDownload" /> Download
div> <
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.