There are some issues with your query.
- The "name" property for a band has the following URI : http://dbpedia.org/property/name. It is a property, and not a resource, but you defined it as such in the prefixes. You shoud define it as follows :
PREFIX dbp: <http://dbpedia.org/property/>
- I just had a quick check at what a band page has as properties, and saw that, apart from the dbo:bandMember one you are using, there is another property, currentMembers, that seems to retrieve more information. This seems logical though, in so far as dbo:bandMember only retrieves entities (members URIs), whereas dbp:currentMembers also retrieves literals. It depends on your use case here...
- You use the dbpedia:prefix in your query, that does not seem to have been defined beforehand.
Here is the query I used to retrieve a list of bands associated with their members :
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?members ?bandName where {
?band dbo:genre dbr:Punk_rock .
?band dbp:currentMembers ?members.
?band foaf:name ?bandName
FILTER(langMatches(lang(?bandName), "en"))
}
The filter part allows us to avoid duplicates in case the literals are also defined in other languages.
But if you still want to use the dbo:bandMember property, this query also does the job :
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?personName ?bandName where {
?band dbo:bandMember ?person .
?person foaf:name ?personName .
?band dbo:genre dbr:Punk_rock .
?band foaf:name ?bandName
FILTER(langMatches(lang(?bandName), "en"))
FILTER(langMatches(lang(?personName), "en"))
}
Hope that helps !