#!/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 ""