Creating Machine-explorable Product Categories Using RDFa and SKOS

Posted in: Uncategorized

If haven’t guessed it already, I’m a big fan of the GoodRelations vocabulary as a solid way to describe products, product offers and shop locations. However, most SemWeb vocabularies have some sort of logical limit — for scalability and pure practicality, most don’t include every single data attribute that could possibly describe the object they are annotating. To create complete semantic solutions, you usually start to combine various ontologies.

As complete as GoodRelations is, I have been searching for a way to annotate product types/ categories with it. Product categories can be unique to retailer/ manufacturer, and with billions of consumer products and endless numbers of product categories, universal product categorization seems to be an unreachable goal. I have seen a few attempts at mass product categorization, but I haven’t seen a ton of progress (who would want to manage a massive global product taxonomy?!). Furthermore, getting consensus on category definitions seems like a futile effort that should really be avoided.

However, just because there aren’t any universal standards out there doesn’t mean we can’t start giving machines a shot at some semblance of product categorization. We can begin to provide definitions to product categories by annotating our HTML with RDFa and SKOS (along with other vocabs like GoodRelations).

There are a couple of initial use cases I have identified:

Parsing navigation to capture general product hierarchies

As retailers, we should want to let the world know what kind of products we sell. In my day to day duties, I’m always surprised at what type of products I uncover on our site (especially during project QA!). With around 650,000 active SKUs on any given day, there is much to explore. Of course this is a nearly impossible task for a human to do, so it makes sense to expose these rich data points in our HTML using RDFa and let the parsers do the work for us. This data is not only useful for external consumption, but internal as well. Throughout the ecommerce world there is also significant human effort dedicated to updating and maintaining product taxonomies — many organizations have entire teams dedicated to this activity. What if we could rely on smart machines to perform this function and make “recommendations”? My experience tells me there would be a whole lot less bickering in the workplace.

Enough of the justification, here’s an example and code snippet to ponder:

example of best buy faceted navigationFaceted commerce navigation example
<div about="http://www.bestbuy.com/site/Electronics/TV-Video/abcat0100000.c?id=abcat0100000#category" typeof="skos:Concept">
	<h2>Shop <span property="skos:prefLabel" xml:lang="en">TV & Video</span></h2>
	<ul>
		<li><a href="http://www.bestbuy.com/site/TV-Video/Televisions/abcat0101000.c?id=abcat0101000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">TVs</span><span property="skos:definition" content="LCD Televisions, Plasma Televisions and Projectors"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/Televisions/Projectors-Screens/pcmcat158900050008.c?id=pcmcat158900050008#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">Projectors & Screens</span><span property="skos:definition" content="Projectors and Projector Screens"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/Blu-ray-DVD-Players/abcat0102000.c?id=abcat0102000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">Blu-ray & DVD Players</span><span property="skos:definition" content="Blu-ray, DVD Recorders and Players"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/Audio/Home-Theater-Systems/abcat0203000.c?id=abcat0203000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">Home Theater Systems</span><span property="skos:definition" content="Surround Sound and Home Theater Systems"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/TiVo-Internet-TV/abcat0103000.c?id=abcat0103000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">TiVo & Internet TV</span><span property="skos:definition" content="TiVo and Internet TV Players"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/Digital-Tuners-Converters/abcat0104000.c?id=abcat0104000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">Digital TV Converters</span><span property="skos:definition" content="DTV Converter Boxes"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/DIRECTV-Cable-Fiber-Optics/abcat0105000.c?id=abcat0105000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">DIRECTV, Cable & Fiber Optics TV</span><span property="skos:definition" content="DIRECTV, Digital Cable and Fiber TV"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/Stands%2C+Mounts+and+Furniture/abcat0106000.c?id=abcat0106000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">Stands, Mounts & Furniture</span><span property="skos:definition" content="Home Theater Furniture and Media Furniture"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/PortableTV-Video/pcmcat200900050008.c?id=pcmcat200900050008#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">Portable TV & Video</span><span property="skos:definition" content="Portable TV and Video"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/Geek-Squad/TV-Home-Theater-Services/pcmcat138100050024.c?id=pcmcat138100050024#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">TV & Home Theater Services</span><span property="skos:definition" content="Home Theater Installation and TV Installation"></span></a></li>
		<li><a href="http://www.bestbuy.com/site/TV-Video/TV-Video-Accessories/abcat0107000.c?id=abcat0107000#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">TV & Video Accessories</span><span property="skos:definition" content="TV and Video Accessories"></span></a></li>
	</ul>
</div>


Assigning product categories through product detail page “breadcrumbs” with SKOS and GoodRelations

As I mentioned previously, I have been searching for a good way to annotate product categories/ types with GoodRelations. A common practice on commerce sites is the utilization of breadcrumbs — as a visual reminder of where you are in the shopping experience. We can annotate these breadcrumbs with SKOS in the domain of GoodRelations (child of gr:includesObject) to completely categorize a product, building a product category hierarchy from top-level category down to more narrow child categories.

Example and code:

best buy product detail page breadcrumb exampleBest Buy local store open box detail page with breadcrumbs

<div rel="gr:includesObject" id="productdetails">
	<div about="http://stores.bestbuy.com/577/fairless-hills-pa/products/open-box/sony-52-class-1080p-240hz-lcd-hdtv/027242765832/?uid=359#category" typeof="skos:Concept">
		<ul id="breadcrumbs">
			<li><a href="http://www.bestbuy.com">Best Buy</a></li>
			<li><a href="http://www.bestbuy.com/site/Electronics/TV-Video/abcat0100000.c?id=abcat0100000#category"><span property="skos:prefLabel" xml:lang="en">TV & Video</span><span property="skos:definition" content="DVD Players, Blu-ray Players and Television"></span></a></li>
			<li><a href="http://www.bestbuy.com/site/Televisions/Projectors-Screens/pcmcat158900050008.c?id=pcmcat158900050008#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">TVs</span><span property="skos:definition" content="LCD Televisions, Plasma Televisions and Projectors"></span></a></li>
			<li><a href="http://www.bestbuy.com/site/Televisions/All-Flat-Panel-TVs/abcat0101001.c?id=abcat0101001#category" rel="skos:narrower"><span property="skos:prefLabel" xml:lang="en">All Flat-Panel TVs</span><span property="skos:definition" content="LCD TVs and Plasma TVs"></span></a></li>
			<li>Product Info</li>
		</ul>
	</div>
	<div typeof="gr:TypeAndQuantityNode" about="http://stores.bestbuy.com/577/fairless-hills-pa/products/open-box/sony-52-class-1080p-240hz-lcd-hdtv/027242765832/?uid=359#TypeAndQuantityNode_0027242765832">
	<span property="gr:amountOfThisGood" datatype="xsd:float" content="1.0"></span>
	<span property="gr:hasUnitOfMeasurement" datatype="xsd:string" content="C62"></span>

Full HTMLs for your perusal: facted-nav-skos.html, gr-skos-breadcrumb.html

Creating Local Visibility to Open Box Products with Front-End Semantic Web

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

Let’s face the facts, it’s a tough job to be a retailer these days. Competition is fierce, customers are demanding, and product margins are razor thin. Just when retailers finally get that product into a customers hand and out the door, it can come marching right back into the store as a return. In fact, studies estimate there are tens of billions of dollars worth of product returned back to retailers, and very small percentage of those are actually defective. This means that brick and mortar retailers have plenty of fully functional open box products gathering dust on shelves and are missing an opportunity to get these units back into the hands of customers.

All of our local Best Buy stores are challenged with returned products. Our physical stores can be silos of beneficial product data, especially when it comes to the availability and reduced price scenarios presented by open box products. Up to this point, our open box items have not been openly displayed on the web — we tend to focus on new, unopened products, leaving an huge unmet opportunity at the store level to increase web visibility to returned products.

While this seems like a large problem to tackle, we have found a forward-thinking way to increase the visibility of open box items at our local stores using the power of open source software and open front-end semantic data standards without employing traditional marketing tactics to push individuals toward these products. Earlier this month, we began rolling out the capability for store associates to contribute to the web of data while increasing visibility to their local open box products through a simple WordPress plugin and RDFa templating mechanism. Each Best Buy store is empowered via their local store WordPress blog (background here) to enter the SKUs of the open box products they have in their inventory. The plugin fetches the relevant product data using Best Buy’s Remix API and the user is prompted to enter the open box price and a reason the product was returned. With one last click, the user saves the data and the product is published to the store site, is made available to the semantic web through front-end RDFa templates and auto-generated XML sitemaps.

There are some interesting features, techniques and potential outcomes of this work that are worth discussing:

More

Unexplored SEO Opportunities Utilizing Semantic/ Structured Web

Posted in: Business, Linked Data, Microformats, RDF, RDFa, SEO, Semantic Web, Theory

There has been a flurry of chatter around the potential impact of RDFa on SEO after my brief presentation at SES Chicago 2009. In subsequent conversations with SEOs at the SES conference and folks from around the industry, I was surprised at how many people practicing SEO weren’t involving their web developers in their solutions, but rather focusing mostly on content, linking and social strategies. While these solutions are key in any SEO activities, the fact that our panel discussion and presentation was the only one involving code and coding techniques surprised me. This raises an interesting question: are many SEOs missing a core element to success, namely well structured, semantically-rich core web sites?

One can look at the current state of HTML on many web sites as an indicator of where people are focusing their efforts. The research performed to create the hProduct Microformat draft spec gives some good insight as to the condition of front-end HTML code. For years we have been building web sites mostly for visual, presentational (human-readable) purposes, and this is clear in many pages of source code analyzed for the hProduct spec. Luckily, search engines have done an incredible job of parsing out the junk and extracting the contextual and important data from billions of web pages. Machines have become vital to helping us learn, but up to this point there has been an imbalance in human-readable vs. machine-readable front-end code. Now there are emerging techniques and technologies that web developers can easily use to correct this by coding their pages to give them meaning to humans AND machines.

By combining rich front-end user and data experiences utilizing RDFa, Microformats, or the emerging Microdata spec, we build direct pathways to rich datasets, which enable machines (mostly search engines, but also next-gen parsers, browser plugins, etc.) to easily access important data and apply their algorithms, etc., to make sense of it all and index it in the ways they see fit. My personal theory is that by providing more direct access to data through front-end semantic code, machines will spend fewer CPU cycles parsing presentational code. These extra resources could then be re-allocated to better natural language processing, extending search into the “deep web”, or other efforts to make the web and it’s users smarter.

Of course this has implications to the SEO/SEM world. It forces SEO professionals to engage their web developers or become slightly more code savvy themselves. It shifts more emphasis on developing strong, data-driven semantic web sites that balance the visual needs of humans and the data needs of machines, rather than focusing on seemingly artificial techniques that increase “link juice” or utilize “secret sauce”. Using traditional SEO content strategies in combination with building strong data-rich web sites can lead to a more intelligent and useful web, which is ultimately good for businesses, users and consumers.