def createGraphForFBUser(store,repo_name,userId,userToken): [genres,artists,userEventsInfo] = fbdata.get_fbuser_data(userToken) userUri = URIRef(facebookOntologyUri+str(userId)) gfacebook_user = Graph(store=store,identifier=userUri) gfacebook_user.add((userUri,RDF.type,ns["User"])) gfacebook_user.add((userUri,ns["fbid"],Literal(userId))) soundcloud_client = soundcloud_get_tracks.getSoundcloudClient() for artist in artists: artistName = artist["name"] dbpediaArtistsWithName = dbpedia.getArtistWithNmae(artistName) if(dbpediaArtistsWithName): artistUri = dbpediaArtistsWithName[0]["artist"]["value"] artistURIRef = URIRef(artistUri) extractArtistInfoAndAddToGraph(store,artistUri,soundcloud_client) gfacebook_user.add((userUri,ns["likesArtist"],artistURIRef)) for genre in genres: genreName = genre["name"] dbpediaGenresWithName = dbpedia.getGenreWithName(genre) if(dbpediaGenresWithName): genreUri = dbpediaArtistsWithName[0]["genre"]["value"] genreURIRef = URIRef(genreUri) gfacebook_user.add((userUri,ns["likesGenre"],genreURIRef)) createGraphForEvents(store,repo_name,userEventsInfo,gfacebook_user,userUri) createGraphForEventArtistsAndGenres(store,repo_name,userEventsInfo)
def createGraphForEventArtistsAndGenres(store,repo_name,events): count =0 allArtistUris = [] for event in events: eventAlreadyExists = sesame_repository.doesEventWithIdExist(repo_name,event["id"]) if not eventAlreadyExists: eventUriRef = URIRef("http://facebook.com/"+event["id"]) gevent = Graph(store=store,identifier=eventUriRef) if "eventdata" in event.keys(): if("description" in event["eventdata"].keys()): description = event["eventdata"]["description"] genres = dbpedia.extractMusicGenreNamesFromText(description) for dbpediaGenreUri in genres: gevent.add((eventUriRef,ns["genre"],URIRef(dbpediaGenreUri))) artists = dbpedia_spotlight.getArtistEntities(description) for artistUri in artists: gevent.add((eventUriRef,ns["relatedArtist"],URIRef(artistUri))) if artistUri not in allArtistUris: allArtistUris.append(artistUri) count = count+1 # if count==15: # break print "processed artists for "+str(count)+" out of "+str(len(events))+" events" # if count==2: # break #now add soundcloud tracks id data to all artists count = 0 soundcloudClient = soundcloud_get_tracks.getSoundcloudClient() for artistUri in allArtistUris: extractArtistInfoAndAddToGraph(store,artistUri,soundcloudClient) count = count+1 print "processed artist info for "+str(count)+" out of "+str(len(allArtistUris))+" artists"