import urllib2 import RDF import sys def get_storage(): return RDF.MemoryStorage() #return RDF.Storage(storage_name="mysql",name="abc", #options_string="""merge='yes',host='127.0.0.1', # user='user',password='pass', # database='redland',contexts='yes'""") def main(): temp_model = RDF.Model() model = RDF.Model(get_storage()) if len(sys.argv) != 2: raise "ArgumentException", "Need an argument. Specficially, an RDF URI." uri_to_fetch = sys.argv[1] parser = RDF.Parser() parser.parse_into_model(temp_model, uri_to_fetch) statement = RDF.Statement( None, # s RDF.Node(RDF.Uri("http://www.w3.org/2000/01/rdf-schema#seeAlso")), #p None) # o for i in temp_model.find_statements(statement): try: uri_to_fetch = str(i.object.uri) print "Fetching %s" % uri_to_fetch request = urllib2.Request(uri_to_fetch) opener = urllib2.build_opener() request.add_header("Accept", "application/rdf+xml,*/*") request.add_header("User-Agent", "http://crschmidt.net/svn/rdfpython/; crschmidt@crschmidt.net") try: parser=RDF.Parser() data = opener.open(request).read() parser.parse_string_into_model(model, data, RDF.Uri(uri_to_fetch)) print "Success at %s, model size %s" % (uri_to_fetch,len(model)) except Exception, E: print "Broken URL: %s, %s" % (uri_to_fetch, E) except Exception, E: print "Catching %s" % E model.sync() print "Model size is now: %s" % len(model) if __name__ == "__main__": main()