Semantic Point of Sale

From Wiki of the E-Business and Web Science Research Group
Jump to: navigation, search
gr_banner_small.png
GoodRelations is a standardized vocabulary for product, price, and company data that can be embedded into existing static and dynamic Web pages.

Project Main Page
Vocabulary
Documentation
Developer's Wiki
GoodRelations Cookbook

This page describes a simple demo of using public product master data from the data set at

via the LOD Virtuoso repository at

via a simple Python script.


Video

Picture 1.png


Click here for the video: http://www.ebusiness-unibw.org/mhepp/SemanticPOS2.mov

Code

# Semantic Web Cash Register
# martin hepp, May 25, 2009


import urllib
import simplejson

print 'UniBW Munich Semantic Web-powered Point-Of-Sale'
print 'Written by the E-Business & Web Science Research Group'

total=0

def fetchLabel(EanUpc):
        query = "SELECT ?label WHERE {?uri rdf:type <http://purl.org/goodrelations/v1#ProductOrServiceModel>."+\
        "?uri <http://purl.org/goodrelations/v1#hasEAN_UCC-13> \""+EanUpc+\
        "\"^^<http://www.w3.org/2001/XMLSchema#string>. ?uri rdfs:label ?label}"
        params = urllib.urlencode({'default-graph-uri': '', 'query': query,
       'format': 'application/sparql-results+json', 'debug' : 'on', 'timeout' : ''})
        f = urllib.urlopen("http://lod.openlinksw.com/sparql?%s" % params)
        
        results = simplejson.load(f)
        results = results['results']
        results = results['bindings']
        results = results[0]
        results = results['label']
        results = results['value']
        return results
        
while True:
    ean=raw_input('Enter EAN or scan item')  # fetch EAN from keyboard
    if (ean==''): break             # stop when input is empty
    ean ="0"+ean 
    print ean                       # print EAN
    productname = fetchLabel(ean)   # get label from the Semantic Web
    price = 1.99                    # get price per unit
    print productname, price        # show product name and price
    total=total+price               # add product price to bill

print 'Thanks for shopping with us. The total is', total