Bonjour à tous,

J'essaye de récupérer la liste des noms de villes qui s'écrivent différemment en anglais et en français.
Par exemple, London et Londres.
J'utilise la base Wikidata pour cela.

Voici ma requête (pour un petit pays, pour simplifier) :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT DISTINCT ?countryLabel_en ?cityLabel_en ?cityLabel_fr
 WHERE {
    ?city wdt:P31 wd:Q515 .                  # Les éléments qui sont des villes
    ?city wdt:P17 ?country .                 # Les villes du pays sélectionné
    ?country rdfs:label ?countryLabel_en .   # Le nom du pays en anglais
    ?city rdfs:label ?cityLabel_en .         # Le nom de la ville en anglais
    FILTER (LANG(?cityLabel_en) = "en" && LANG(?countryLabel_en) = "en")
    OPTIONAL {
        ?city rdfs:label ?cityLabel_fr .   # the city name in French
        FILTER (LANG(?cityLabel_fr) = "fr")
    }
 
   FILTER (REGEX(?countryLabel_en, "^ER", "i"))  # Les pays qui commencent par ER (insensible à la casse)
   FILTER (?cityLabel_en != ?cityLabel_fr )
}
ORDER BY ASC(?countryLabel_en) ASC(?cityLabel_en)

Dans les 18 résultats, le filtre FILTER (?cityLabel_en != ?cityLabel_fr ) ne semble pas être pris en compte.

Je lance la requête depuis le site https://query.wikidata.org/

Pourquoi ce filtre ne fonctionne pas ?

Merci pour votre aide