Tamam, sadece dbpedia.org'dan veri sorgulamak için SPARQL kullanmayı öğreniyorum ve sorgularımı çalıştırmak için dbpedia'nın http://dbpedia.org/snorql/ kullanıyorum. Bir liste almaya çalışıyorum şöyle üç alanda üzerinde aynı dize aramasının dayalı MusicalArtists:Çalışmak için bu SPARQL sorgusu alınamıyor
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
"Stevie Nicks" her üç alanlar (RDFS: etiketi, foaf: adı, dbpedia2: ad) sahip olmasıdır çalışır. Ama ben her üç ("Depeche Mode") olmayan başka bir MusicalArtist tarafından sorgulamaya çalıştığımda hiçbir sonuç alamıyorum.
BIND (COALESCE (? Alan, ..., ...) AS? ArtistName) gibi çeşitli şeyleri? ArtistName tarafından filtrelemek için denedim ve ayrıca UNION denedim ama hiçbir şey işe yaramıyor gibi görünüyor. Birisi SPARQL yöntemlerinin hatalarına işaret edebilir mi? :)
Teşekkürler! Jason