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] Canonical URIs for Products in Shop Software / GoodRelations

Martin Hepp martin.hepp at ebusiness-unibw.org
Tue Aug 24 15:38:57 CEST 2010

Minor correction:

Problem No. 5:

> 5. Pages may even be banned from search engines ("duplication of  
> content"); that is independent of whether you are using  
> GoodRelations or not.

  is not relevant for Google, at least, see



Martin Hepp

On 24.08.2010, at 15:04, Martin Hepp wrote:

> Dear all:
> Some shop applications, unfortunately, display the very same item at  
> multiple URIs. This is problematic for Search Engine Optimization  
> (SEO) and the Web of Data alike.
> Examples and Causes
> ===================
> There are two typical causes:
> a) The navigation path of the shop system is used to create "clean"  
> URIs:
>  http://www.myshop.com/staplers/green_pocket_stapler123
>  http://www.myshop.com/featured-items/green_pocket_stapler123
> b) Parameters, e.g. such to control the language of the output, the  
> preferred currency, the session ID (bad...), or the referrer.
> This case is more severe, because it can easily cause 10 - 100  
> duplicates per single page:
>  http://www.myshop.com/staplers/green_pocket_stapler123
>  http://www.myshop.com/staplers/green_pocket_stapler123?lang=en
>  http://www.myshop.com/staplers/green_pocket_stapler123?currency=usd? 
> lang=en
>  http://www.myshop.com/staplers/green_pocket_stapler123?referrer=clicksale
> Problems
> ========
> 1. If you embed GoodRelations data markup in RDFa syntax to your  
> HTML/XHTML shop templates, this may cause a massive duplication of  
> data elements for applications that are trying to consume our shop  
> data.
> 2. This will reduce the findability of your items in GoodRelations- 
> aware applications.
> 3. It spoils the Web of Data ("proliferation of URIs").
> 4. Your pages will receive a lower ranking in search engines,  
> because the amount of links will be spread over multiple URIs.
> 5. Pages may even be banned from search engines ("duplication of  
> content"); that is independent of whether you are using  
> GoodRelations or not.
> 6. Crawlers will waste more resources crawling your site, consume  
> more of your valuable bandwidth, and are more likely to use outdated  
> cached versions of your pages.
> Solutions
> =========
> 1. The ideal solution is to aim for canonical URIs (one URI per  
> product) as much as possible. This may not be easy for pattern a),  
> but it is straightforward for case b), e.g. by using session cookies  
> and / or HTTP redirects.
> 2. If that is not possible, you should use *absolute* instead of  
> *relative* identifiers in RDFa for all major data elements ("about"  
> attribute in RDFa).
> For example, in the template for the "product item" page, use
> <div about="http://www.myshop.com/staplers/green_pocket_stapler123#offering 
> " typeof="gr:Offering">
> ...
> instead of
> <div about="#offering" typeof="gr:Offering">
> ...
> The effect will be that no matter from which URI the page was  
> actually requested, the same RDF data will be extracted. It  
> requires, though, that you can determine the canonical URI of the  
> page at the time of the request.
> 3. The last option (but the least powerful, yet still much better  
> than doing nothing) is to add owl:sameAs statements from the RDFa  
> pattern to the canonical URI.
> The canonical URI should also be used for the foaf:page property,  
> which is the crucial link from the data to the page from where the  
> product can be ordered.
> Example:
>  <div about="#offering" typeof="gr:Offering">
>    <div rel="owl:sameAs" resource="http://www.myshop.com/staplers/green_pocket_stapler123#offering 
> "></div>
>    <div property="rdfs:label" content="Cool green stapler for $8.99"  
> xml:lang="en"></div>
> ...
>    <div rel="foaf:page" resource="http://www.myshop.com/staplers/green_pocket_stapler123 
> "></div>
>  </div>
> </div>
> Best wishes
> Martin Hepp
> --------------------------------------------------------
> martin hepp
> e-business & web science research group
> universitaet der bundeswehr muenchen
> e-mail:  hepp at 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/
> * Quickstart Guide for Developers: http://bit.ly/quickstart4gr
> * Vocabulary Reference: http://purl.org/goodrelations/v1
> * Developer's Wiki: http://www.ebusiness-unibw.org/wiki/GoodRelations
> * Examples: http://bit.ly/cookbook4gr
> * Presentations: http://bit.ly/grtalks
> * Videos: http://bit.ly/grvideos

More information about the goodrelations mailing list