Wikidata/SPARQL/3
Wikidata
SPARQL
- 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 .
}
}
#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]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]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