Wikidata/SPARQL/3

Z Wikiverzity
Skočit na navigaci Skočit na vyhledávání

Wikidata

SPARQL

http://query.wikidata.org

  • ctrl-Space –

Rýžoviště zlata v Česku[editovat]

Najít všechna rýžoviště zlata v Česku a zobrazit si je

SELECT = vyber něco, kde platí něco


SELECT * WHERE {

}

P31 = instance čeho <instance of>

wdt: vlastnosti

položka - vlastnost - hodnota

za každým řádkem (tvrzením) je tečka

? otazník říká, že to bude proměnná, kterou si nějak nazveme

SELECT * WHERE {
  ?polozka wdt:P31 wd:Q46221259 . # instance čeho / rýžoviště
}

Spustíme bílým trohúhelníčkem v modrém políčku – vlevo dole. Dostaneme 24 výsledků

Vybereme

SELECT * WHERE {
 ?polozka wdt:P31 wd:Q46221259 .  # instance čeho / rýžoviště
 ?polozka wdt:P17 wd:Q213 . # stát / Česko
 ?polozka wdt:P625 ?coord . # zeměpisné souřadnice 🡒 naše proměnná
}

?coord – tam mi to uloží souřadnice

<PLAY> (trojúhelníček vlevo dole)

Dostaneme těch samých 24 výsledků

V čem je problém? Když se podíváme na d: Q46221259, tak vidíme, že to zřejmě je definované pouze v češtině a tím pádem už je skoro nadbytečné, uvádět stát Česko. Ale z didaktických důvodů je asi dobré to sem napsat explicitně, že to hledáme v d: Q213.

Vlevo nahoře od tabulky – očičko –> map ... vykreslí mi to mapu

  • wdt: říká = nyní definuji vlastnost
  • wd: nyní přijde položka

Asteroidy pojmenované podle Čechů[editovat]

SELECT * WHERE {
 ?polozka wdt:P31 wd:Q3863 .
 ?polozka wdt:P138 ?pojmenovanopo .
 ?pojmenovanopo wdt:P27 wd:Q213 .
}

Potřebuji štítky:

SERVICE – externí služba

SELECT * WHERE {

 ?polozka wdt:P31 wd:Q3863 .
  ?polozka wdt:P138 ?pojmenovanopo .
  ?pojmenovanopo wdt:P27 wd:Q213 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". } 
}

Takhle to nefunguje, protože musíme namísto * vyjmenovat všechny položky

SELECT ?polozka ?pojmenovanopo ?polozkaLabel ?pojmenovanopoLabel WHERE {

 ?polozka wdt:P31 wd:Q3863 .
  ?polozka wdt:P138 ?pojmenovanopo .
  ?pojmenovanopo wdt:P27 wd:Q213 .
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs". } 
}

Zkusíme načíst obrázky

SELECT ?polozka ?pojmenovanopo ?polozkaLabel ?pojmenovanopoLabel ?obrazek WHERE {

 ?polozka wdt:P31 wd:Q3863 .
  ?polozka wdt:P138 ?pojmenovanopo .
  ?pojmenovanopo wdt:P27 wd:Q213 .
  ?pojmenovanopo wdt:P18 ?obrazek .
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". } 
}

Ale jenom v případě, že ten obrázek existuje:

SELECT ?polozka ?pojmenovanopo ?polozkaLabel ?pojmenovanopoLabel ?obrazek WHERE {

 ?polozka wdt:P31 wd:Q3863 .
  ?polozka wdt:P138 ?pojmenovanopo .
  ?pojmenovanopo wdt:P27 wd:Q213 .
  OPTIONAL {?pojmenovanopo wdt:P18 ?obrazek .}
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". } 
}

Odfiltrujeme fiktivní postavy (Jára da Cimrman):

SELECT ?polozka ?pojmenovanopo ?polozkaLabel ?pojmenovanopoLabel ?obrazek WHERE {

 ?polozka wdt:P31 wd:Q3863 .
  ?polozka wdt:P138 ?pojmenovanopo .
  ?pojmenovanopo wdt:P27 wd:Q213 .
  OPTIONAL {?pojmenovanopo wdt:P18 ?obrazek .}
  MINUS {?pojmenovanopo wdt:31 wd:Q95074 . }  # fiktivní postava
  MINUS {?pojmenovanopo wdt:31 wd:Q15632617 . } # fiktivní člověk
  MINUS {?pojmenovanopo wdt:P570 [] .}

SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". } 
}

Vysněný domov[editovat]

#defaultView:Map
SELECT * WHERE {
  ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
  ?polozka wdt:P625 ?coord .
  {?polozka wdt:P47 wd:Q1085 .} UNION {?polozka wdt:P47 wd:Q14960 .}
  
}

Obec, která souvisí s obcí, která souvisí s Prahou:

#defaultView:Map
SELECT * WHERE {
  
  ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
  ?polozka wdt:P625 ?coord .
  {?polozka wdt:P47 wd:Q1085 .} UNION {?polozka wdt:P47 wd:Q14960 .} UNION
  {?polozka wdt:P47 ?obec .
   ?obec wdt:P47 wd:Q1085 .
   }
}

Vojtěchovo řešení:

#vybirame vysneny domov
#defaultView:Map
select  ?obec ?obecLabel ?souradnice ?populace ?dist where {
  ?obec wdt:P31 wd:Q5153359 .
   ?obec wdt:P625 ?souradnice .
   {?obec wdt:P47 wd:Q1085 .} UNION {?obec wdt:P47 wd:Q14960 .} UNION {?obec wdt:P47 ?sousedni . ?sousedni wdt:P47 wd:Q1085. }
   ?obec wdt:P1082 ?populace .
   FILTER(?populace < 400)
   wd:Q29116173 wdt:P625 ?ustav .
   BIND(geof:distance(?ustav, ?souradnice) AS ?dist) 
   FILTER(?dist < 15) 
  
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs". }  
}


Malé obce:

#defaultView:Map
SELECT * WHERE {
  
  ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
  ?polozka wdt:P625 ?coord .
  {?polozka wdt:P47 wd:Q1085 .} UNION {?polozka wdt:P47 wd:Q14960 .} UNION
  {?polozka wdt:P47 ?obec .
   ?obec wdt:P47 wd:Q1085 .
   }
  ?polozka wdt:P1082 ?populace .
  FILTER (?populace < 400)
}

Od ÚISK je méně než 15 km

#defaultView:Map
SELECT * WHERE {
  
  ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
  ?polozka wdt:P625 ?coord .
  {?polozka wdt:P47 wd:Q1085 .} UNION {?polozka wdt:P47 wd:Q14960 .} UNION
  {?polozka wdt:P47 ?obec .
   ?obec wdt:P47 wd:Q1085 .
   }
  ?polozka wdt:P1082 ?populace .
  FILTER (?populace < 400)
  wd:Q29116173 wdt:P625 ?ustav .
   BIND(geof:distance(?ustav, ?coord) AS ?dist) 
   FILTER(?dist < 15)
}
#defaultView:Map
SELECT * WHERE {  
  ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
  ?polozka wdt:P625 ?coord .
  {?polozka wdt:P47 wd:Q1085 .} UNION {?polozka wdt:P47 wd:Q14960 .} UNION
  {?polozka wdt:P47 ?obec .
   ?obec wdt:P47 wd:Q1085 .
   }
  ?polozka wdt:P1082 ?populace .
  FILTER (?populace < 400)
  wd:Q29116173 wdt:P625 ?ustav .
 #  BIND(geof:distance(?ustav, ?coord) AS ?dist) 
 #  FILTER(?dist < 15)
  FILTER(geof:distance(?ustav, ?coord) < 15)
}



České obce řízené starostkou[editovat]

Vojtův vzor

SELECT ?mesto ?mestoLabel ?starosta ?populace WHERE {
  
  ?mesto wdt:P31 wd:Q5153359 .
  ?mesto wdt:P1082 ?populace .
  ?mesto wdt:P6 ?starosta .
  #?starosta wdt:P21 wd:Q6581072 .
  ?starosta wdt:P19/wdt:P131* wd:Q214 .

}
ORDER BY DESC(?populace)
#  ##_defaultView:Map
SELECT ?polozka ?polozkaLabel ?starosta ?starostaLabel ?populace WHERE {
  
 ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
 ?polozka wdt:P6 ?starosta . # obce, u kterých známe starostu
 ?starosta wdt:P21 wd:Q6581072 .
 ?polozka wdt:P1082 ?populace .
  
 ?starosta wdt:P19 ?místonarození .
  ?místonarození wdt:P17 wd:Q214 .
           
}
ORDER BY DESC(?populace)

Výsledek:

polozka polozkaLabel starosta starostaLabel populace
wd:Q1085 Praha wd:Q18104657 Adriana Krnáčová 1294513
#  ##_defaultView:Map
SELECT ?polozka ?polozkaLabel ?starosta ?starostaLabel ?populace WHERE {
  
 ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
 ?polozka wdt:P6 ?starosta . # obce, u které známe starostu
 ?starosta wdt:P21 wd:Q6581072 .
 ?polozka wdt:P1082 ?populace .
  
# ?starosta wdt:P19 ?místonarození .
#  ?místonarození wdt:P17 wd:Q214 . 
 ?starosta wdt:P19 / wdt:P17 wd:Q214 .
}
ORDER BY DESC(?populace)
#  ##_defaultView:Map
SELECT ?polozka ?polozkaLabel ?starosta ?starostaLabel ?populace WHERE {
  
 ?polozka wdt:P31 wd:Q5153359 . #obec v Česku
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
 ?polozka wdt:P6 ?starosta . # obce, u kterých známe starostu
 ?starosta wdt:P21 wd:Q6581072 .
 ?polozka wdt:P1082 ?populace .
  
# ?starosta wdt:P19 ?místonarození .
#  ?místonarození wdt:P17 wd:Q214 . 
# ?starosta wdt:P19 / wdt:P17 wd:Q214 .
# ?starosta wdt:P19 / wdt:P17/ wdt:P30 wd:Q46 . # ve světadílu Evropa

  ?starosta wdt:P19 / wdt:P131* wd:Q214  .  # administrativní 
}
ORDER BY DESC(?populace)

Místa, která jsou v českých obcích, ale nejsou zařazena v Česku[editovat]

Místa, která jsou v českých obcích, ale nejsou zařazena v Česku

SELECT ?polozka ?polozkaLabel WHERE {
?polozka wdt:P131* wd:Q213 .
  MINUS {?polozka wdt:P17 wd:Q213 .}
  SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
}
  • tinyurl.com/yazotql3 – krátký odkaz na zdroj
  • tinyurl.com/yb52xyjt – krátký odkaz na výsledek
Chyby:
Stránka, kterou jste se pokusil(a) uložit, byla zablokována protispamovým filtrem. 
Pravděpodobnou příčinou je odkaz na externí stránku, která je na černé listině.
Následující text spustil náš filtr proti spamu: tinyurl.com/yazotql3
Následující text spustil náš filtr proti spamu: tinyurl.com/yb52xyjt

PetScan[editovat]

http://petscan.wmflabs.org

Všechna sídla v Česku[editovat]

SELECT ?sidlo WHERE {
?sidlo wdt:P31 / wdt:P279* wd:Q486972 . # sídelní útvar
 ?sidlo wdt:P17 wd:Q213 .
}

Bez českého popisku:

SELECT ?sidlo WHERE {
?sidlo wdt:P31 / wdt:P279* wd:Q486972 . # sídelní útvar
 ?sidlo wdt:P17 wd:Q213 .
 
 OPTIONAL {?sidlo schema:description ?popisek FILTER(lang(?popisek) = "cs") .}
 FILTER(!BOUND(?popisek))
}

Anebo se stejným výsledkem:

SELECT ?sidlo WHERE {
?sidlo wdt:P31 / wdt:P279* wd:Q486972 . # sídelní útvar
 ?sidlo wdt:P17 wd:Q213 .
 
 MINUS {?sidlo schema:description ?popisek FILTER(lang(?popisek) = "cs") }
}

rdfs:label :

SELECT ?sidlo WHERE {
?sidlo wdt:P31 / wdt:P279* wd:Q486972 . # sídelní útvar
 ?sidlo wdt:P17 wd:Q213 .
 
 MINUS {?sidlo rdfs:label ?popisek FILTER(lang(?popisek) = "cs") }
 }


SELECT ?sidlo ?sidloLabel WHERE {
?sidlo wdt:P31 / wdt:P279* wd:Q486972 . # sídelní útvar
 ?sidlo wdt:P17 wd:Q213 .
 
 MINUS {?sidlo rdfs:label ?popisek FILTER(lang(?popisek) = "cs") }
 
 SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
}
#Položky s více než jednou nadřazenou administrativní jednotkou (P131)

SELECT ?s (COUNT(DISTINCT ?obec) AS ?obeccount) WHERE {
  ?s wdt:P17 wd:Q213 .
  ?s wdt:P131 ?obec .
 } 
GROUP BY ?s 
ORDER BY DESC(?obeccount)
SELECT ?item (group_concat(?kde) as ?kde_seznam) WHERE {
?item wdt:P31 wd:Q5084 . #osada
 ?item wdt:P17 wd:Q213 . #Česko
  ?item wdt:P131 ?kde .
# SERVICE wikibase:label { bd:serviceParam wikibase:language "cs, en". }
}
GROUP BY ?item