#!/usr/local/bin/python # filename: ex364.cgi # CGI version of ex363.py import sys sys.path.append('/usr/home/bobd/lib/python/') # needed for hosted version from SPARQLWrapper import SPARQLWrapper, JSON import cgi form = cgi.FieldStorage() director1 = form.getvalue('dir1') director2 = form.getvalue('dir2') sparql = SPARQLWrapper("http://data.linkedmdb.org/sparql") queryString = """ PREFIX m: PREFIX foaf: SELECT DISTINCT ?actorName ?freebaseURI WHERE { ?dir1 m:director_name "DIR1-NAME" . ?dir2 m:director_name "DIR2-NAME" . ?dir1film m:director ?dir1 ; m:actor ?actor . ?dir2film m:director ?dir2 ; m:actor ?actor . ?actor m:actor_name ?actorName ; foaf:page ?freebaseURI . } """ queryString = queryString.replace("DIR1-NAME",director1) queryString = queryString.replace("DIR2-NAME",director2) sparql.setQuery(queryString) sparql.setReturnFormat(JSON) try: results = sparql.query().convert() requestGood = True except Exception, e: results = str(e) requestGood = False print """Content-type: text/html results """ if requestGood == False: print "

Problem communicating with the server

" print "

" + results + "

" elif (len(results["results"]["bindings"]) == 0): print "

No results found.

" else: print "

Actors directed by both " + director1 + \ " and " + director2 + "

" for result in results["results"]["bindings"]: actorName = result["actorName"]["value"] freebaseURI = result["freebaseURI"]["value"] print "

" + actorName + "

" print ""