2017-06-22 1 views
0

Je veux avoir tous les joueurs d'un club de football et filtrer ceux qui viennent d'Allemagne, je sais que c'est possible sans l'option de filtre, mais je suis nouveau sur SPARQL et il semble que Je ne comprends pas comment utiliser l'option de filtre dans ce cas, donc je serais heureux si quelqu'un pouvait dire comment faire fonctionner ça.Le filtre sparql ne fonctionnera pas

SELECT distinct ?player WHERE { 
?player a <http://dbpedia.org/ontology/SoccerPlayer>. 
?player <http://dbpedia.org/property/currentclub> <http://dbpedia.org/resource/Hertha_BSC>. 
optional {?subject <http://dbpedia.org/ontology/birthPlace>/<http://dbpedia.org/ontology/country> ?<http://dbpedia.org/resource/Germany>. } 
filter (!bound(?subject)). 
} 
ORDER BY ASC(?player) 

meilleures salutations Adrian

+0

Voir ma réponse ci-dessous. C'est un doublon, c'est-à-dire que je vais probablement le supprimer, mais il est plus facile de décrire les choses dans une réponse que dans un commentaire. S'il vous plaît expliquer pourquoi vous ne voulez pas utiliser la réponse précédente qui fait ce que vous demandez – AKSW

Répondre

2

J'espère que vous cherchez quelque chose comme ceci:

SELECT distinct ?player WHERE { 
    ?player a dbo:SoccerPlayer . 
    ?player dbp:currentclub dbr:Hertha_BSC . 
    ?player dbo:birthPlace/dbo:country? ?country . 
    FILTER (?country = dbr:Germany) 
    } 
ORDER BY ASC(?player) 

Ou ceci:

SELECT distinct ?player WHERE { 
    ?player a dbo:SoccerPlayer . 
    ?player dbp:currentclub dbr:Hertha_BSC . 
    ?player dbo:birthPlace/dbo:country? ?country . 
    FILTER (?country in (dbr:Germany)) 
    } 
ORDER BY ASC(?player) 

Ou encore ceci:

SELECT distinct ?player WHERE { 
    ?player a dbo:SoccerPlayer . 
    ?player dbp:currentclub ?club . 
    ?player dbo:birthPlace/dbo:country? ?country . 
    VALUES (?club ?country) { (dbr:Hertha_BSC dbr:Germany) } 
    } 
ORDER BY ASC(?player) 
+0

parfait c'était exactement ce que je cherchais. – DaPole