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] SuRF Object Mapper for RDF in Python Now Supports GoodRelations Natively

Martin Hepp (UniBW) martin.hepp at ebusiness-unibw.org
Tue Mar 9 10:33:47 CET 2010


Dear all:

If you are developing any kind of GoodRelations-related applications in 
Python, I can recommend very much the combination of the two libraries

- RDFlib [1] for handling RDF in Python and
- SuRF [2] as an object mapper for RDF/OWL entities.

RDFlib provides a nice, "pythonic" framework for parsing, querying, or 
generating RDF data, including support for RDF/XML, RDFa, and Turtle syntax.
SuRF turns RDF nodes and properties into Python classes and instances so 
that you can access them in a clean, straightforward fashion.

See below for an example of loading two company profiles using rdflib 
and SuRF and printing a few key facts to the screen.

SuRF has just added support for the GoodRelations vocabulary, i.e. you 
can now access any GoodRelations element using shortcuts as shown below:

# Define a Python class for the OWL Classes gr:Offering and 
gr:BusinessEntity
Offering = session.get_class(ns.GR['Offering'])
BusinessEntity = session.get_class(ns.GR['BusinessEntity '])

# Get an iterator for all instances of gr:Offering in the graph
all_offers = Offering.all()

# Get an iterator for all instances of gr:Offering in the graph
all_companies = BusinessEntity.all()
for company in all_companies:
    print "Business Entity found: %s " % company.subject
    print  "Legal Name: %s" % company.gr_legalName.first

Thanks to Cosmin Basca for adding GoodRelations support so quickly, and 
to Daniel Krech and all the other RDFlib contributors.


Best wishes

Martin Hepp

[1] http://www.rdflib.net/
[2] http://code.google.com/p/surfrdf/



Complete Example:
--------------------------------
from surf import *

store = Store(  reader='rdflib',
            writer='rdflib',
            rdflib_store = 'IOMemory')

session = Session(store)

# Good Relations Namespace is now predefined in SuRF :-)
# ns.register(gr='http://purl.org/goodrelations/v1#')

print 'Load RDF data'
store.load_triples(source='http://purl.org/goodrelations/v1.owl')
store.load_triples(source='http://www.collibra.com/semanticweb.rdf')
store.load_triples(source='http://www.jarltech.de/semanticweb.rdf')

# Define a Python class for the OWL Classes gr:Offering and 
gr:BusinessEntity
Offering = session.get_class(ns.GR['Offering'])
BusinessEntity = session.get_class(ns.GR['BusinessEntity '])

# Get an iterator for all instances of gr:Offering in the graph
all_offers = Offering.all()

print 'Found %d offers '%(len(all_offers))

for offer in all_offers :
    print "Text: %s" % offer.rdfs_comment.first
    print "URI: %s" % offer.rdfs_seeAlso.first
    print "Eligible regions: ",
    regions = offer.gr_eligibleRegions
    if len(regions) == 0:
        print "None specified"
    else:
        for region in regions:
            print region,
        print
    print   

# Get an iterator for all instances of gr:Offering in the graph
all_companies = BusinessEntity.all()
for company in all_companies:
    print "Business Entity found: %s " % company.subject
    print  "Legal Name: %s" % company.gr_legalName.first



-- 

--------------------------------------------------------------
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 page:
http://purl.org/goodrelations/

Resources for developers:
http://www.ebusiness-unibw.org/wiki/GoodRelations

Webcasts:
Overview - http://www.heppnetz.de/projects/goodrelations/webcast/
How-to   - http://vimeo.com/7583816

Recipe for Yahoo SearchMonkey:
http://www.ebusiness-unibw.org/wiki/GoodRelations_and_Yahoo_SearchMonkey

Talk at the Semantic Technology Conference 2009: 
"Semantic Web-based E-Commerce: The GoodRelations Ontology"
http://www.slideshare.net/mhepp/semantic-webbased-ecommerce-the-goodrelations-ontology-1535287

Overview article on Semantic Universe:
http://www.semanticuniverse.com/articles-semantic-web-based-e-commerce-webmasters-get-ready.html

Tutorial materials:
ISWC 2009 Tutorial: The Web of Data for E-Commerce in Brief: A Hands-on Introduction to the GoodRelations Ontology, RDFa, and Yahoo! SearchMonkey 
http://www.ebusiness-unibw.org/wiki/Web_of_Data_for_E-Commerce_Tutorial_ISWC2009





More information about the goodrelations mailing list