GoodRelations is a standardized vocabulary for product, price, and company data that can (1) be embedded into existing static and dynamic Web pages and that (2) can be processed by other computers. This increases the visibility of your products and services in the latest generation of search engines, recommender systems, and other novel applications.
Martin Hepp
martin.hepp at ebusiness-unibw.org
Sat Dec 11 09:12:03 CET 2010
Dear all:
Here are a few Google-specific hints regarding GoodRelations:
1. Multiple items per page
==========================
Google's Rich Snippets validator complains if you define multiple
gr:Offering nodes in one page. In this post, I want to show how you
can handle multiple items on one page and still get your content
validated by Google.
Background: Since Rich Snippets should summarize the main content for
a page as a whole, they don't work well for multi-item pages, at least
not for now.
It's possible that Google will expand their support so that multiple
items on one page will be listed below the organic search results in
the future, but that is speculative at this point.
There is a simple solution to the problem: Instead of adding the
markup to an overview page that lists multiple products, put the RDFa
markup into the item pages, i.e. such pages that show the details for
one single item. Most shops have such a view for each product, and if
your shop hasn't, there are good SEO reasons to create one. That
should do the trick.
If you list related items (consumables, similar products) you could
still expose those in a GoodRelations compatible way using just
pointers from the main product to the related products using
gr:isAccessoryOrSparePartFor,
gr:isConsumableFor, or
gr:isSimilarTo,
but without gr:Offering data for those on the main page (there offer
meta-data etc. will be inside their item pages).
Note that in this case, you have to model not just the offer
(gr:Offering) with the minimal GoodRelations recipe but also the
product (gr:ProductOrServicesSomeInstancesPlaceholder), because the
relationship is between two products, not between two offers.
An example of this more granular yet Google-compliant way of modeling
Rich Snippets is at
http://www.heppnetz.de/rdfa4google/tc3b.html
It validates in Google, see
http://www.google.com/webmasters/tools/richsnippets?url=http%3A%2F%2Fwww.heppnetz.de%2Frdfa4google%2Ftc3b.html&view=
2. Identifiers / RDFa about
===========================
Even if Google's original recipe does not use the RDFa attribute
"about", you should use it and define new hash fragments for all key
GoodRelations elements, i.e. gr:Offering, gr:BusinessEntity,
gr:LocationOfSalesAndServiceProvisioninhg, and gr:ProductOrService
(plus subclasses), because this makes your items much more accessible
for Semantic Web applications (otherwise, entity consolidation and
adding interesting link won't work or are difficult).
It does not matter which text/string your use as an identifier, as
long as it is unique for that particular page.
Example (Bad)
-------------
<div typeof="gr:Offering" >
<span property="gr:name">Hepp Research Personal SCSI Controller
Card</span>
</div>
Example (Good)
--------------
<div typeof="gr:Offering" about="#product_data">
<span property="gr:name">Hepp Research Personal SCSI Controller
Card</span>
</div>
A full example is at
http://www.heppresearch.com/gr4google
Best
Martin Hepp