Wikidata/SPARQL/1
Tato stránka je součástí projektu: | |
Příslušnost: všeobecná |
Wikidata/Základy
Přednáška na Wikidata/Workshop/Pardubice sobota 2016-09-03 11:30: SPARQL (Vojtěch Dostál)
Zapsal a dle svého doplnil Kychot.
1. Subjekt – Predikát – Objekt
[editovat]- w:SPARQL [spárkl] od roku 2008
- Wikidata si ten jazyk trochu upravily
Základem jsou triplety: Subjekt - Predikát - Objekt
# Vesnice a kody casti obce 1.
SELECT ?polozka ?vesnice WHERE
{
# wdt
?polozka wdt:P2788 ?vesnice
}
mw:Wikidata query service/User Manual
Zjistíme, že
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
Podle toho dohledáme, že:
http://www.wikidata.org/prop/direct/P2788 = https://www.wikidata.org/wiki/Property:P2788 = d:Property:P2788 = kód části obce
Jak si ty položky (items) nazvu je celkem jedno, prostě hledám tvrzení (dvojice) položka (item) – hodnota, které jsou svázány Property:P2788.
SELECT ?pol ?ves WHERE
{
?pol wdt:P2788 ?ves
}
Dostanu seznam, který začíná:
- d:Q12035065 112909
- d:Q12055792 152871
- d:Q10296209 20001
- ...
Když si na těch položkách proklikám dole odkazy do WP, dovede mě to na:
Důležité je, mezi Identifikátory dole vidíme právě property P2788 kód části obec s příslušnými hodnotami (tj. kódy) a to je právě to, podle čeho to ten SPARQL vyhledal.
2. label
[editovat]Samozřejmě proklikávat vše je otravné, abych zjistil, o jakou ves s jedná. Proto si nechám rovnou vypsat label:
# Vesnice a kody casti obce 2.
SELECT ?polozka ?vesnice ?polozkaLabel WHERE
{
# wdt
?polozka wdt:P2788 ?vesnice
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
a dostanu výpis:
polozka | vesnice | polozkaLabel |
---|---|---|
d:Q12035065 | 112909 | Malá Turná |
d:Q12055792 | 152871 | Srbce |
d:Q10296209 | 20001 | Žižín |
... | ... | ... |
Použili jsme prefixy:
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX bd: <http://www.bigdata.com/rdf#>
3. Konkrétní výběr
[editovat]# Vesnice a kody casti obce 3
SELECT ?polozka ?vesnice ?polozkaLabel WHERE
{
# wdt
?polozka wdt:P2788 '426' .
?polozka wdt:P2788 ?vesnice .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
Výsledek:
polozka vesnice polozkaLabel wd:Q696995 426 Arnolec
4. souřadnice
[editovat]# Vesnice a kody casti obce 4
SELECT ?polozka ?vesnice ?polozkaLabel ?souradnice WHERE
{
# wdt
?polozka wdt:P2788 '426' .
?polozka wdt:P2788 ?vesnice .
?polozka wdt:P625 ?souradnice .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
Kliknu na:
- Display
- Map
a vidím to na mapě
5. místo narození
[editovat]Všichni lidé, kteří mají místo narození v Praze, a zobrazíme si místo narození. (Nefunguje pro Prahu, musí to být konkrétní místo, např. Žižkov.)
# Vesnice a kody casti obce 5
SELECT ?polozka ?mista ?kodcastiobce WHERE
{
# wd: = názvy položek
?polozka wdt:P19 wd:Q378120 . #Žižkov
# místa narození si musíme uložit do proměnné místa:
?polozka wdt:P19 ?mista .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
6. proměnná místa
[editovat]# Vesnice a kody casti obce 6
SELECT ?polozka ?polozkaLabel ?mista ?mistaLabel ?kodcastiobce WHERE
{
# wd: = názvy položek
?polozka wdt:P19 wd:Q378120 . #Žižkov
# místa narození si musíme uložit do proměnné místa:
?polozka wdt:P19 ?mista .
?mista wdt:P2788 ?kodcastiobce .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
Výsledky:
polozka polozkaLabel mista mistaLabel kodcastiobce wd:Q102483 Jaroslav Seifert wd:Q378120 Žižkov 490261 wd:Q1729141 Karel Bejbl wd:Q378120 Žižkov 490261 wd:Q2003873 Vojtěch Bradáč wd:Q378120 Žižkov 490261 wd:Q3161652 Jan Dvořáček (fotbalista) wd:Q378120 Žižkov 490261 ... atd.
7. článek ve WP
[editovat]Matěj rozšíří kód:
# Vesnice a kody casti obce 7
SELECT ?polozka ?polozkaLabel ?mista ?mistaLabel ?kodcastiobce WHERE
{
# wd: = názvy položek
?polozka wdt:P19 wd:Q378120 . #Žižkov
# místa narození si musíme uložit do proměnné místa:
?polozka wdt:P19 ?mista .
?mista wdt:P2788 ?kodcastiobce .
?polozka ^schema:about ?clanek .
?clanek schema:isPartOf <https://cs.wikipedia.org/> .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
8. OPTIONAL
[editovat]# Vesnice a kody casti obce 8
SELECT ?polozka ?polozkaLabel ?mista ?mistaLabel ?kodcastiobce WHERE
{
# wd: = názvy položek
?polozka wdt:P19 wd:Q378120 . #Žižkov
# místa narození si musíme uložit do proměnné místa:
?polozka wdt:P19 ?mista .
?mista wdt:P2788 ?kodcastiobce .
OPTIONAL {
?polozka ^schema:about ?clanek .
?clanek schema:isPartOf <https://cs.wikipedia.org/> .
} .
SERVICE wikibase:label
{
bd:serviceParam wikibase:language "cs" .
}
}
Výsledek: 16
9. Foto českých obcí
[editovat]Na projektu Foto českých obcí:
Mapa vesnic, které nemají na Wikipedii obrázek:
Jinou možností je např. vyhledat si na Wikidatech vesnice, k nimž není přiřazena kategorie na Commons
#defaultView:Map
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?item ?itemLabel ?kodobce ?coord ?categ WHERE {
?item wdt:P2788 ?kodobce .
?item wdt:P625 ?coord.
MINUS { ?item wdt:P373 ?categ .}
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs"}
}