Ok, sto solo imparando a usare SPARQL per interrogare i dati da dbpedia.org e sto usando dbpedia's http://dbpedia.org/snorql/ per eseguire le mie query. Sto cercando di ottenere un elenco di MusicalArtists basate sulla ricerca per la stessa stringa su tre campi in questo modo:Non riesco a far funzionare questa query SPARQL
SELECT ?subject
?artistRdfsLabel
?artistFoafName
?artistDbpedia2Name
WHERE {
?subject rdf:type <http://dbpedia.org/ontology/MusicalArtist> .
OPTIONAL { ?subject rdfs:label ?artistRdfsLabel . }
OPTIONAL { ?subject foaf:name ?artistFoafName . }
OPTIONAL { ?subject dbpedia2:name ?artistDbpedia2Name . }
FILTER (str(?artistRdfsLabel) = "Stevie Nicks" ||
str(?artistFoafName) = "Stevie Nicks" ||
str(?artistDbpedia2Name) = "Stevie Nicks")
}
LIMIT 10
Questo funziona perché "Stevie Nicks" ha tutti e tre campi (rdfs: label, foaf: nome, dbpedia2: nome). Ma quando provo a interrogare un altro MusicalArtist che non ha tutti e tre ("Depeche Mode" per esempio) non ottengo risultati.
Ho provato varie cose come BIND (COALESCE (? Campo, ..., ...) AS? ArtistName) per filtrare da? ArtistName e ho anche provato UNION ma niente sembra funzionare. Qualcuno può segnalare l'errore dei miei modi SPARQL? :)
Grazie! Jason