Rollin’ with schema.org vanilla reviews markup

Posted in: Business, HTML, Linked Data, Microformats, RDFa, Semantic Web, Theory, Web Standards, Working

Vanilla Ice was also rollin'

Vanilla Ice was also rollin' -- in the 80's

Well folks, it’s deployment season again here at Best Buy, which means lots of changes, late night code deployments, and business project managers running around with their hair on fire. It also means it’s time to sneak some good structured data type stuff on to the site without actually having to explain in detail what’s so gosh darn important about delivering rich data in our site’s HTML output. It’s with great pleasure that I announce the official launch of schema.org reviews markup on all pages of bestbuy.com, gradually rollin’ out over the next couple of days to a browser near you.



So why schema.org? I was fortunate enough to participate in the schema.org workshop in Mountain View last month where a bunch of really smart people were talking structured data on the web. If you know anything about the history between some of the individuals attending, you’d figure we would have several opposing viewpoints and many arguments would ensue. To my surprise, this was not the case — we had a great day of very constructive talks. And with this warm and fuzzy spirit of goodwill, I figured it was time to put the rubber to the road and release a new standard for all to test.

If you’re still wondering why schema.org, please take a gander at these thoughts:

  • Yep, it’s Microdata, but it’s about schema, not syntax. I’ve been doing my homework, and I believe the product reviews vocabulary created by the Google-Rich-Snippets-now-schema.org group is a solid and well thought out vocabulary. Additionally, the consensus from the workshop was the support of multiple syntaxes, so I’m not terribly worries about being lambasted for trying a new syntax ;-) .
  • I still love RDFa. One of the greatest things about RDFa is it’s out of the box support for multiple types/ vocabularies, which was also a desired requirement coming out of the schema.org workshop. I was also moved by the excellent presentation by Ben Adida, where he talked RDFa and the new RDFa 1.1 Lite, which looks very, very promising. Plans are already in the works to port a segment of the reviews to RDFa 1.1 Lite, with a little help from my friends.
  • Continuing to push for changes in the schema — most notably support for multiple types.
  • It could be one of the first large deployments of schema.org serve as an example. Suggestions? Comments? Want to see the code change to point your parser at? Let me know, let’s create something wonderful for the web.

Finally, if you’re curious, check out this Sony TV example.

Justin Bieber Loves the Semantic Web

Posted in: Uncategorized

justin bieber striking a pose The magic continues as we try to move the technology dial forward on bestbuy.com. Along with some other fun forward-thinking stuff, we also encoded all our music product detail pages with RDFa, featuring such great vocabularies as GoodRelations, the Music Ontology, Dublin Core, Facebook OpenGraph markup, and Google’s (Rich Snippets) Breadcrumbs RDFa spec to provide a complete front-end semantic solution to assist machines in reaching valuable product data directly through the browser.

Now I know many of you aren’t the CD buyin’ kind (what the heck is a CD?!), but the following Justin Bieber example can serve as an example for physical media as well as digital scenarios.


Feast your eyes on the human version of Justin Bieber in all his teenage glory as he funks it up with the greatest artists of our time like Ludacris, Usher, and Jessica Jarrell (http://www.bestbuy.com/site/My+World+2.0+-+CD/9771571.p?id=2086661&skuId=9771571):

Justin Bieber my life 2.0

Justin Bieber on bestbuy.com (click for full image)

Running it through an RDFa distiller produces some interesting data results. First the GoodRelations offering:

goodrelations justin bieber offering

gr:Offering of Justin Bieber (click for full image)

Breaking the offer down, we see this offer has two price specifications. The first specifies the current price. The second highlights the standard retail price (list). Hey, it looks like this masterpiece is on sale!

justin bieber haspricespecification

Justin Bieber hasPriceSpecification! (click for full image)

The second part of the gr:Offer focuses on the product details including UPC (EAN), SKU, product image, and product type, etc.

justin bieber album details

Justin Bieber's album details (click for full image)

So let’s talk deeper product details data next. Music releases have evolved from focusing on the entire album to diving into track details. Of course, any serious Bieber fan will want to consume every last second of every track, but the less infatuated fans purchase individual tracks instead. The Music Ontology provides a perfect foundation to list and highlight track details:

justin bieber track listing

Justin Bieber track listing in data (click for full image)

There’s no question that Bieber fans will be praising his work and want to share on Facebook. Since OpenGraph has become the rage in the semantic world (second only to Bieber himself), we’ve added og: meta information in the head of our HTML:

justin bieber hits the opengraph

Justin Bieber hits the opengraph (click for full image)

If you run J.B. through the official Facebook URL Linter product details are extracted:

running JB through the Facebook URL Linter

Running Justing Bieber through the Facebook URL Linter (click for full image)

This product page is an object on the OpenGraph!

I encourage you to run your parsers against any one of our music product detail pages and share the results. Work is ongoing to provide an XML sitemap just for music products — stay tuned for more information. In the meantime, I’m waiting for internet sensation Rebecca Black to muster up some more hits to throw on a full album so we can mark it up in RDFa. :-)

* Disclaimer: the opinions of Justin Bieber and related artists is that of the author and not that of Best Buy, Co., Inc., it’s subsidiaries or employees.

Released! Human Product Discovery Via Machines, RDFa and “Shop URLs”

Posted in: Business, Data Portability, GoodRelations, HTML, Linked Data, RDF, RDFa, Semantic Web, Theory, Uncategorized

Well folks, we’re at it again. The month by month the journey continued Monday into Tuesday night to semantify the hallowed templates of bestbuy.com. One of April’s goals: to enhance machine understanding of Best Buy’s considerable product offerings while retaining human searchability and readability. After long wait, we have deployed code to the search templates to establish a human-readable and machine-parseable front-end API.

Many moons ago (even before all this RDFa goodness), we established a URI scheme we call “shop URLs”. Basically it’s an easy way to pass a search term in a URI and get a visual list of up 50 products our search appliance considers relevant. However, when you have a catalog of 400K+ products, simple visual results may not be the best or most efficient way to sort through the cruft and get at what you’re looking for. Enter stage left our friendly machine helpers: Search Engines, Parsers and Aggregators — this deployment activity is focused on feeding you! We’ve deployed step one of enabling a solution to product visibility and discovery issue by unleashing the result data in RDFa (with GoodRelations, Dublin Core, FOAF, Google Ratings vocabs) for maximum machine parseability.

After all this grandeur and hype, I’m hoping you’re still interested in how it works. You may point your eyes and parsers here:

http://www.bestbuy.com/shop/search+term*

* Please note, due to marketing and business considerations, some of the more popular terms may redirect you to a dataless “category page”. To get a RDFa-enabled result, simply append a * to your search term, e.g., http://www.bestbuy.com/shop/ipods* (how dare those marketing people stand in the way of good data!)

Let’s dive deeper with a quick example. So I’m a bit eclectic and looking for a thermometer online. I would like to see results of the “thermometers” from bestbuy.com, plus pass the data to my machine friend, an application I am building to help me make the right product choice.

First I type access my human-friendly representation using a “shop URL” directly in the browser:

http://www.bestbuy.com/shop/thermometers

Which results in a human-readable web page:

example of human-readable search page

human-readable shop url

Looks like I have 15 product offers that match and are available via bestbuy.com or in store. Excellent.

I’m going to take that same URI and pass it on to my machine helper who just wants the data, no fluff. Let’s say we’re working with RDF/XML…on the surface, the 15 product offers may appear like this:

rdf extract from shop url

rdf extract from shop url

Expanding an individual offer yields the following data-rich result:

expanded data extract of shop url

expanded data extract of shop url

So endeth the second phase of sematification. Make sure and leave your API keys at home, this search data is all open! Tune in for more later this week, I will be discussing another one of April’s goals, expanding RDFa markup to Best Buy’s product detail pages.