Warning: This tool or project is no longer maintained and kept available only for archival purposes. Since GoodRelations and schema.org have evolved significantly in the past years, the current status available on this page is unlikely to function as expected. We take no responsibility for any damage caused by the use of this outdated work, to the extent legally possible.

Due to a lack of resources, we are unable to provide support for this project outside of consulting projects or sponsored research. Please contact us if you can contribute resources to update and enhance these resources.

GoodRelations - The Web Vocabulary for E-Commerce

This is the archive of the goodrelations dicussion list

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.

[goodrelations] Rich Snippets - Multiple items per page; other questions

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:isConsumableFor, or

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


It validates in Google, see


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  

Example (Good)
<div  typeof="gr:Offering" about="#product_data">
  <span property="gr:name">Hepp Research Personal SCSI Controller  

A full example is at



Martin Hepp

More information about the goodrelations mailing list