Aller au contenu

Utilisateur:Gz260/Routes/RE/Wikidata/SPARQL

Une page de Wikipédia, l'encyclopédie libre.

Nombre de pays[modifier | modifier le code]

SELECT DISTINCT ?item ?itemLabel ?cpays WHERE {
  {
    SELECT DISTINCT ?item (count(?pays) as ?cpays) WHERE {
      ?item wdt:P31/wdt:P279* wd:Q34442 ; p:P16/ps:P16 wd:Q106123 ; wdt:P17 ?pays .
      MINUS { ?item wdt:P361 ?part . ?part wdt:P16 wd:Q106123 }
    } GROUP BY ?item
  }
  OPTIONAL { ?item wdt:P1824 ?p1824 }
  BIND(STRLEN(str(?p1824)) as ?longp1824)
  BIND(SUBSTR(str(?p1824),1,1) as ?statut)
  BIND(SUBSTR(str(?p1824),2,(?longp1824 - 1)) as ?numero)
  BIND(REPLACE(SUBSTR(str(?numero),1,4),"[A-Za-z ]","") as ?num)
  BIND(STRLEN(str(?num)) as ?longnum)
  BIND(CONCAT(IF(?longnum=1,"000",IF(?longnum=2,"00",IF(?longnum=3,"0",""))), str(?num)) as ?numz)
  BIND(CONCAT(str(?statut),str(?num)) as ?numsp)
  BIND(STRLEN(str(?numsp)) as ?longnumsp)
  BIND((?longp1824 - ?longnumsp) as ?longprefixe)
  BIND(SUBSTR(str(?p1824),(?longnumsp + 1),?longprefixe) as ?prefixe)
  BIND(CONCAT(str(?statut),str(?numz),str(?prefixe)) as ?cledetri)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
} ORDER BY DESC(?cpays) ?cledetri

Cliquez pour essayer !

Au moins 2 pays[modifier | modifier le code]

SELECT DISTINCT ?item ?itemLabel ?cpays WHERE {
  {
    SELECT DISTINCT ?item (count(?pays) as ?cpays) WHERE {
      ?item wdt:P31/wdt:P279* wd:Q34442 ; p:P16/ps:P16 wd:Q106123 ; wdt:P17 ?pays .
      MINUS { ?item wdt:P361 ?part . ?part wdt:P16 wd:Q106123 }
    } GROUP BY ?item
  }
  FILTER (?cpays >= 2)
  OPTIONAL { ?item wdt:P1824 ?p1824 }
  BIND(STRLEN(str(?p1824)) as ?longp1824)
  BIND(SUBSTR(str(?p1824),1,1) as ?statut)
  BIND(SUBSTR(str(?p1824),2,(?longp1824 - 1)) as ?numero)
  BIND(REPLACE(SUBSTR(str(?numero),1,4),"[A-Za-z ]","") as ?num)
  BIND(STRLEN(str(?num)) as ?longnum)
  BIND(CONCAT(IF(?longnum=1,"000",IF(?longnum=2,"00",IF(?longnum=3,"0",""))), str(?num)) as ?numz)
  BIND(CONCAT(str(?statut),str(?num)) as ?numsp)
  BIND(STRLEN(str(?numsp)) as ?longnumsp)
  BIND((?longp1824 - ?longnumsp) as ?longprefixe)
  BIND(SUBSTR(str(?p1824),(?longnumsp + 1),?longprefixe) as ?prefixe)
  BIND(CONCAT(str(?statut),str(?numz),str(?prefixe)) as ?cledetri)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
} ORDER BY DESC(?cpays) ?cledetri

Cliquez pour essayer !

Un seul pays[modifier | modifier le code]

SELECT DISTINCT ?item ?itemLabel ?cpays WHERE {
  {
    SELECT DISTINCT ?item (count(?pays) as ?cpays) WHERE {
      ?item wdt:P31/wdt:P279* wd:Q34442 ; p:P16/ps:P16 wd:Q106123 ; wdt:P17 ?pays .
      MINUS { ?item wdt:P361 ?part . ?part wdt:P16 wd:Q106123 }
    } GROUP BY ?item
  }
  FILTER (?cpays = 1)
  OPTIONAL { ?item wdt:P1824 ?p1824 }
  BIND(STRLEN(str(?p1824)) as ?longp1824)
  BIND(SUBSTR(str(?p1824),1,1) as ?statut)
  BIND(SUBSTR(str(?p1824),2,(?longp1824 - 1)) as ?numero)
  BIND(REPLACE(SUBSTR(str(?numero),1,4),"[A-Za-z ]","") as ?num)
  BIND(STRLEN(str(?num)) as ?longnum)
  BIND(CONCAT(IF(?longnum=1,"000",IF(?longnum=2,"00",IF(?longnum=3,"0",""))), str(?num)) as ?numz)
  BIND(CONCAT(str(?statut),str(?num)) as ?numsp)
  BIND(STRLEN(str(?numsp)) as ?longnumsp)
  BIND((?longp1824 - ?longnumsp) as ?longprefixe)
  BIND(SUBSTR(str(?p1824),(?longnumsp + 1),?longprefixe) as ?prefixe)
  BIND(CONCAT(str(?statut),str(?numz),str(?prefixe)) as ?cledetri)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
} ORDER BY DESC(?cpays) ?cledetri

Cliquez pour essayer !

OSM (P402)[modifier | modifier le code]

SELECT DISTINCT ?item ?itemLabel ?osm (CONCAT("https://www.openstreetmap.org/relation/",?osm) AS ?url_osm) WHERE {
   ?item wdt:P31/wdt:P279* wd:Q34442 ; p:P16/ps:P16 wd:Q106123 ; wdt:P17 ?pays .
   MINUS { ?item wdt:P361 ?part . ?part wdt:P16 wd:Q106123 }
  ?item wdt:P402 ?osm .
  OPTIONAL { ?item wdt:P1824 ?p1824 }
  BIND(STRLEN(str(?p1824)) as ?longp1824)
  BIND(SUBSTR(str(?p1824),1,1) as ?statut)
  BIND(SUBSTR(str(?p1824),2,(?longp1824 - 1)) as ?numero)
  BIND(REPLACE(SUBSTR(str(?numero),1,4),"[A-Za-z ]","") as ?num)
  BIND(STRLEN(str(?num)) as ?longnum)
  BIND(CONCAT(IF(?longnum=1,"000",IF(?longnum=2,"00",IF(?longnum=3,"0",""))), str(?num)) as ?numz)
  BIND(CONCAT(str(?statut),str(?num)) as ?numsp)
  BIND(STRLEN(str(?numsp)) as ?longnumsp)
  BIND((?longp1824 - ?longnumsp) as ?longprefixe)
  BIND(SUBSTR(str(?p1824),(?longnumsp + 1),?longprefixe) as ?prefixe)
  BIND(CONCAT(str(?statut),str(?numz),str(?prefixe)) as ?cledetri)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
} ORDER BY ?cledetri

Cliquez pour essayer !

Sans P402[modifier | modifier le code]

SELECT DISTINCT ?item ?itemLabel WHERE {
   ?item wdt:P31/wdt:P279* wd:Q34442 ; p:P16/ps:P16 wd:Q106123 ; wdt:P17 ?pays .
   MINUS { ?item wdt:P361 ?part . ?part wdt:P16 wd:Q106123 }
  MINUS { ?item wdt:P402 [] }
  OPTIONAL { ?item wdt:P1824 ?p1824 }
  BIND(STRLEN(str(?p1824)) as ?longp1824)
  BIND(SUBSTR(str(?p1824),1,1) as ?statut)
  BIND(SUBSTR(str(?p1824),2,(?longp1824 - 1)) as ?numero)
  BIND(REPLACE(SUBSTR(str(?numero),1,4),"[A-Za-z ]","") as ?num)
  BIND(STRLEN(str(?num)) as ?longnum)
  BIND(CONCAT(IF(?longnum=1,"000",IF(?longnum=2,"00",IF(?longnum=3,"0",""))), str(?num)) as ?numz)
  BIND(CONCAT(str(?statut),str(?num)) as ?numsp)
  BIND(STRLEN(str(?numsp)) as ?longnumsp)
  BIND((?longp1824 - ?longnumsp) as ?longprefixe)
  BIND(SUBSTR(str(?p1824),(?longnumsp + 1),?longprefixe) as ?prefixe)
  BIND(CONCAT(str(?statut),str(?numz),str(?prefixe)) as ?cledetri)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
} ORDER BY ?cledetri

Cliquez pour essayer !