from RDF import HashStorage,NS,Statement,Model,Parser

model = Model()
parser = Parser()
parser.parse_into_model(model,"file:rdftv_complete.rdf")

tvns = NS("http://xmlns.com/2003/rdftv/tv#")
tvcatns = NS("http://xmlns.com/2003/rdftv/category/ananova#")

catfind = tvcatns['Film']

for s in model.find_statements(Statement(None,tvns.category,catfind)):
    print model.get_target(s.subject,tvns.title),
    channel = model.get_target(s.subject,tvns.channel)
    descs = [(str(s)) for s in model.targets(s.subject,tvns.desc)]
    # print shortest of (possibly) several descriptions
    if len(descs)>0:
        descs.sort(lambda a,b: cmp(len(a),len(b)))
        print "("+descs[0]+")",
    else:
        print "(no description)",

    print "on",model.get_target(channel,tvns['display-name'])
