#!/usr/bin/env python # coding: utf-8 # In[1]: from linkeddataquery import * # In[56]: #Declare the DBPedia endpoint endpoint="http://dbpedia.org/sparql" sparql = SPARQLWrapper(endpoint) # In[57]: # Define any prefixes prefix = ''' PREFIX rdfs: PREFIX dbpedia: PREFIX foaf: PREFIX dct: PREFIX skos: PREFIX rdf: PREFIX dbr: PREFIX dbo: PREFIX dbc: PREFIX geo: PREFIX ouseful: ''' # In[58]: q=''' prefix gephi: prefix rdfs: PREFIX foaf: CONSTRUCT{ ?genreA gephi:label ?genreAname . ?genreB gephi:label ?genreBname . ?genreA gephi:related ?genreB . ?genreB gephi:related ?genreA . ?band foaf:name ?bandname . } WHERE { ?band a . ?band rdfs:label ?bandname . ?band foaf:name "Black Sabbath"@en . ?band "group_or_band". ?band ?genreA. ?band ?genreB. ?genreA rdfs:label ?genreAname. ?genreB rdfs:label ?genreBname. } limit 10 offset 0 ''' # In[59]: df = dfResults(endpoint, prefix, q) df # In[60]: q=''' CONSTRUCT{ ?philosopher ouseful:label ?philosopherName . ?influence ouseful:label ?influenceName . ?philosopher ?influence } WHERE { ?philosopher a . ?philosopher ?influence. ?philosopher foaf:name ?philosopherName. ?influence foaf:name ?influenceName. } LIMIT 1 ''' dfResults(endpoint, prefix, q) # In[61]: q=''' CONSTRUCT{ ?genreA ouseful:label ?genreAname . ?genreB ouseful:label ?genreBname . ?genreA ouseful:related ?genreB . ?genreB ouseful:related ?genreA . } WHERE { ?band a . ?band "group_or_band". ?band ?genreA. ?band ?genreB. ?genreA rdfs:label ?genreAname. ?genreB rdfs:label ?genreBname. FILTER(?genreA != ?genreB && langMatches(lang(?genreAname), "en") && langMatches(lang(?genreBname), "en")) } limit 100 offset 0 ''' # In[62]: dfResults(endpoint, prefix, q) # In[102]: #subjects q=''' SELECT DISTINCT ?subgenre WHERE { ?_subgenre dct:subject dbc:Heavy_metal_genres . ?_subgenre rdfs:label ?subgenre . FILTER(langMatches(lang(?subgenre), "en")) } ''' dfResults(endpoint, prefix, q) # In[121]: #Concepts q=''' SELECT DISTINCT ?subgenre WHERE { ?_subgenre skos:broader dbc:Heavy_metal_genres . ?_subgenre rdfs:label ?subgenre . } ''' df1 = dfResults(endpoint, prefix, q) df1 # In[97]: #Concepts q=''' SELECT DISTINCT ?subgenre WHERE { ?_subgenre skos:broader dbc:Heavy_metal_genres . ?_subgenre rdfs:label ?subgenre . } ''' dfResults(endpoint, prefix, q) # In[89]: dfResults(endpoint, prefix, q) # In[86]: q=''' SELECT DISTINCT ?subgenre ?styled WHERE { dbr:Heavy_metal_music dbo:musicSubgenre ?_subgenre . ?_subgenre foaf:name ?subgenre . OPTIONAL { ?_subgenre dbo:stylisticOrigin ?_styled . ?_styled foaf:name ?styled } } ''' # In[87]: dfResults(endpoint, prefix, q) # In[81]: #style q=''' SELECT DISTINCT ?styled WHERE { ?_styled dbo:stylisticOrigin dbr:Heavy_metal_music . ?_styled foaf:name ?styled . } ''' # In[82]: dfResults(endpoint, prefix, q) # In[68]: q=''' SELECT DISTINCT ?subgenre WHERE { { dbr:Heavy_metal_music dbo:musicSubgenre ?_subgenre . ?_subgenre foaf:name ?subgenre } UNION { dbr:Heavy_metal_music dbo:musicSubgenre ?_subgenre . ?_subgenre foaf:name ?subgenre } UNION { dbr:Heavy_metal_music dbo:musicSubgenre ?_subgenre . ?_subgenre dbo:musicSubgenre ?__subgenre . ?__subgenre foaf:name ?subgenre FILTER (?__subgenre != ?_subgenre ) } FILTER ( (?__subgenre != ?_subgenre) ) } ''' # In[69]: dfResults(endpoint, prefix, q) # In[54]: dbo:musicFusionGenre # In[ ]: # In[118]: #Bands - simple in genre #dbr:Heavy_metal_music q=''' SELECT ?bandname ?genrename WHERE { ?band dbo:genre dbr:Heavy_metal_music . ?band dbo:genre ?genre. ?band dbo:background "group_or_band" . ?band rdfs:label ?bandname . ?genre rdfs:label ?genrename . FILTER (langMatches(lang(?bandname), "en") && ?genre != dbr:Heavy_metal_music && langMatches(lang(?genrename), "en") ) } ''' df = dfResults(endpoint, prefix, q) df # In[127]: df.to_csv('bands.csv', index=False) # In[120]: df['genrename'].unique() # In[ ]: