Some suggestions from the Movie/TV - Purchase/Rental Domain

180 views
Skip to first unread message

Chris Thoman

unread,
Oct 7, 2011, 1:01:52 AM10/7/11
to schemaorg-...@googlegroups.com
This is a very interesting effort since all of the major search providers seem to be at least considering it.  Here are some initial thoughts I have from the perspective of the Movie/TV - Purchase/Rental domain, where I find some limitations in the current schema.

* Product.creativeWorks <-> CreativeWork.products

The relationship between Product and CreativeWork should be direct.  Starting from a CreativeWork, it is possible to have multiple Product instances (ex. editions, reissues and international releases).  Starting from a Product it is possible to have multiple CreativeWorks (ex. boxsets, double-features and collections).  There is a tenuous link  between the two in the current schema through the CreativeWork.offers but this is less than ideal - the direct relation is through the CreativeWork<->Product and not the Offer, since the Product may already have multiple Offers which would require repetition of the Product (and also there is no path starting from Product/Offer to CreativeWork).

* CreativeWork::MovieSeries

Similarly to the TVSeries->TVSeason relation, there should also be a concept of a MovieSeries->Movie relation for ordered movie sequences (ex. Spiderman 1-3).  This could possibly be expanded further to an even higher level concept of a CreativeWork::Franchise which incorporates CreativeWork Movies, TV, Books, Video Games, Comics and other media as child relations with all of the children having a Franchise parent property.  Wikipedia has this going on to a certain extent.

* Product.productID

First, the documentation could be improved by listing the possible content colon values.  The current example given for http://schema.org/Product is <meta itemprop='productID' content='isbn:123-456-789'/>.  Presumably other common content prefixes such as "upc:", "mpn:" and "asin:" are valid?  Is there a difference between handling 12-digit UPC and 13-digit UPC/EAN?

It would also be useful to promote the productID to a Thing and give it an enumeration to handle cases where the value is actually displayed in HTML to avoid the use of an unnecessary meta tag and to leverage the other basic Thing properties.  Ex.

<div itemprop="productID" itemscope itemtype="http://schema.org/UPC">
<span itemprop="name">1234567890123</span>
<img itemprop="image" src="/upc/1234567890123-upc.png" />
</div>

* Product.availableFrom / Offer.availabelFrom

The release date of a product / product offer would be a useful addition.  Since various organizations might have different release windows for the same product, with some organizations offering earlier releases than others, it would be nice to have this on both the Product and the Offer to manipulate them separately.

* Offer::RentalOffer

A subclass of Offer that distinctly represents a rental, rather than a purchase price. Should probably have both availableFrom and availableUntil dates - ex. use case: Netflix Instant rentals that have a limited window of availability that expires at a certain point.  Somewhat more complicated, there is the concept of a price being assigned to a rental timespan and overage - ex. Rebox charging $1.50 per day or Blockbuster charging $5 for 3 days and $2 for each additional day past 3.

* aggregateRating.worstValue/ratingValue/bestValue

The semantics of the current schema are unfortunate, since it seems better to have two separate ranges.  A bestRangeValue/worstRangeValue which represent the absolute best/worst possible score in the scale system and a bestValue/worstValue which represent the actual range of assigned reviews. For example, a range of 0-100 with an average rating value of 73 and a worst/best of 50-80.

Martin Hepp

unread,
Oct 7, 2011, 4:27:47 AM10/7/11
to schemaorg-...@googlegroups.com, Martin Hepp
Hi Chris,

There is work underway of aligning schema.org with http://purl.org/goodrelations/, which provides many of the additional features you suggest. For now, you can always attach the respective additional GoodRelations properties to the schema.org type as long as you use the full (!) property URL. See below for examples.

> * Product.productID
>
> First, the documentation could be improved by listing the possible content colon values. The current example given for http://schema.org/Product is <meta itemprop='productID' content='isbn:123-456-789'/>. Presumably other common content prefixes such as "upc:", "mpn:" and "asin:" are valid? Is there a difference between handling 12-digit UPC and 13-digit UPC/EAN?
>
> It would also be useful to promote the productID to a Thing and give it an enumeration to handle cases where the value is actually displayed in HTML to avoid the use of an unnecessary meta tag and to leverage the other basic Thing properties. Ex.
>
> <div itemprop="productID" itemscope itemtype="http://schema.org/UPC">
> <span itemprop="name">1234567890123</span>
> <img itemprop="image" src="/upc/1234567890123-upc.png" />
> <link itemprop="url" href="http://i-wish-i-could-lookup-upc-like-this.org/1234567890123 />
> </div>
>

You can attach GTIN8, GTIN14, etc.:

<div itemscope itemtype="http://schema.org/Product" itemid="#model">
<span itemprop="name">ACME Colorvision 123</span>
<span itemprop="description">The ACME Colorvision 123 is the
leading-edge color TV from our company.</span>
GTIN14: <span itemprop="http://purl.org/goodrelations/v1#hasGTIN-14has">12345678901234</span>
GTIN8: <span itemprop="http://purl.org/goodrelations/v1#hasGTIN-8has">12345678</span>
</div>

You can also use GoodRelations to indicate links to accessories using


http://purl.org/goodrelations/v1#isAccessoryOrSparePartFor

Example: State that a certain remote is an accessory for a certain TV set.

<div itemscope itemtype="http://schema.org/Product" itemid="#tvset">
<span itemprop="name">ACME Colorvision 123</span>
<span itemprop="description">The ACME Colorvision 123 is the
leading-edge color TV from our company.</span>
GTIN14: <span itemprop="http://purl.org/goodrelations/v1#hasGTIN-14has">12345678901234</span>
<link itemprop="http://purl.org/goodrelations/v1#isAccessoryOrSparePartFor" href="#remote" />
</div>

<div itemscope itemtype="http://schema.org/Product" itemid="#remote">
<span itemprop="name">ACME Remote Control</span>
<span itemprop="description">The ACME Remote Control is the handiest remote on the market.</span>

</div>

> * Offer::RentalOffer
>
> A subclass of Offer that distinctly represents a rental, rather than a purchase price. Should probably have both availableFrom and availableUntil dates - ex. use case: Netflix Instant rentals that have a limited window of availability that expires at a certain point. Somewhat more complicated, there is the concept of a price being assigned to a rental timespan and overage - ex. Rebox charging $1.50 per day or Blockbuster charging $5 for 3 days and $2 for each additional day past 3.

Use the GoodRelations business function property

http://purl.org/goodrelations/v1#hasBusinessFunction

with http://schema.org/Offer:

Example:
<div itemscope itemtype="http://schema.org/Offer" itemid="#offer">
<div itemprop="name">Rent a Volkswagen Golf V</div>
<div itemprop="description">blabla</div>
<link itemprop="http://purl.org/goodrelations/v1#hasBusinessFunction"
href="http://purl.org/goodrelations/v1#LeaseOut" />
... other offer properties follow here
</div>

The following business functions are pre-defined:

http://purl.org/goodrelations/v1#ConstructionInstallation
http://purl.org/goodrelations/v1#Dispose
http://purl.org/goodrelations/v1#LeaseOut
http://purl.org/goodrelations/v1#Maintain
http://purl.org/goodrelations/v1#ProvideService
http://purl.org/goodrelations/v1#Repair
http://purl.org/goodrelations/v1#Sell (default)

For respective pricing details, you can use the full power of

http://purl.org/goodrelations/v1#UnitPriceSpecification

with
http://schema.org/Offer

A simple example: Car Rental: 25 USD / day plus 1 USD per mile

Example:
<div itemscope itemtype="http://schema.org/Offer" itemid="#offer">
<div itemprop="name">Rent a Volkswagen Golf V</div>
<div itemprop="description">blabla</div>
<link itemprop="http://purl.org/goodrelations/v1#hasBusinessFunction"
href="http://purl.org/goodrelations/v1#LeaseOut" />
Price: <div itemprop="http://purl.org/goodrelations/v1#hasPriceSpecification" itemscope
itemtype="http://purl.org/goodrelations/v1#UnitPriceSpecification">$
<span itemprop="hasCurrencyValue">25</span>
<meta itemprop="hasCurrency" content="USD">
<meta itemprop="hasUnitOfMeasurement" content="DAY"> per day
<time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
</div> plus
<div itemprop="http://purl.org/goodrelations/v1#hasPriceSpecification" itemscope
itemtype="http://purl.org/goodrelations/v1#UnitPriceSpecification">$
<span itemprop="hasCurrencyValue">1</span>
<meta itemprop="hasCurrency" content="USD">
<meta itemprop="hasUnitOfMeasurement" content="1A"> per mile
<time itemprop="validThrough" datetime="2012-12-31T23:59:59Z"></time>
</div>
... other offer properties follow here
</div>

Note that the UN/CEFACT Common Code for "day" is "DAY", that for "car mile" is "1A". Also note that the gr:BusinessFunction for rental is gr:LeaseOut.

More examples, still to be converted to Microdata syntax (currently in RDFa) are here:

http://www.ebusiness-unibw.org/wiki/GoodRelationsPricing

I think this illustrates very well the potential of combining the granularity of GoodRelations with the generic schema.org elements.

I hope you find this useful.

Note that you can use those patterns IMMEDIATELY, even while the formal alignment between GoodRelations and schema.org is still underway.

Note further that the additional properties may have the important effect of indicating relevance / ranking criteria and additional meta-data to the search engines, even if you do not see an immediate effect in the rich snippets / rich captions. See also


http://wiki.goodrelations-vocabulary.org/GoodRelations_for_Semantic_SEO


Best wishes

Martin Hepp
--------------------------------------------------------
martin hepp
e-business & web science research group
universitaet der bundeswehr muenchen

e-mail: he...@ebusiness-unibw.org
phone: +49-(0)89-6004-4217
fax: +49-(0)89-6004-4620
www: http://www.unibw.de/ebusiness/ (group)
http://www.heppnetz.de/ (personal)
skype: mfhepp
twitter: mfhepp

Check out GoodRelations for E-Commerce on the Web of Linked Data!
=================================================================
* Project Main Page: http://purl.org/goodrelations/


Reply all
Reply to author
Forward
0 new messages