Wikipedista:Pastorius/Jemný úvod do SPARQL
„ | Nikdy nemůžete rozumět všemu, přesto byste se měli snažit porozumět principům. | “ |
SPARQL
editovatSPARQL je programovací jazyk pro vytváření dotazů nad grafovými databázemi. Je to sada příkazů, která umožňuje najít přesně ty informace, které potřebujete. Pokud se naučíte základy SPARQL, budete moci vytvářet mocné vyhledávací příkazy ve wikidatech (a nejen v nich).
Grafová databáze
editovatGraf je datová struktura skládající se z vrcholů a hran.
Grafové databáze jsou založeny na teorii grafů a používají uzly, hrany a vlastnosti.
Uzly reprezentují entity, jako jsou lidé, firmy, účty nebo jiná položky, která má být sledovány. Jsou zhruba ekvivalentní záznamu, vztahu nebo řádku v relační databázi nebo dokumentu v databázi dokumentů.
Hrany jsou čáry, které spojují uzly s jinými uzly; představují vztah mezi nimi. Hrany jsou klíčovým pojmem v grafových databázích. Představují abstrakci, která není v jiných systémech přímo implementována.
Vlastnosti jsou informace o uzlech. Například pokud by Wikipedia byla jedním z uzlů, mohl by to být spojen s vlastnostmi, jako jsou webové stránky, referenční materiály nebo slova, která začíná písmenem w.
RDF
editovatHlavní myšlenkou RDF je k popisovanému zdroji přiřadit výraz ve tvaru podmět – vlastnost – předmět (též subjekt – predikát – objekt). Pro tento výraz se také používá termín trojice.
Jinak řečeno RDF popisuje zdroj, ten má nějaké vlastnosti a tyto vlastnosti mají odpovídající hodnoty. Přičemž podmět definuje, o jaký zdroj se jedná, vlastnost určuje jeho charakter a zároveň vyjadřuje vzájemný vztah mezi podmětem a předmětem.
Konkrétní příklad lze ukázat například na výroku: Obloha má modrou barvu. Po rozložení do trojice pak obloha je podmětem, má barvu vyjadřuje vlastnost a modrou vyjadřuje předmět. V grafické podobě RDF grafu by pak vlastnosti byly jeho hrany, které by byly orientovány od podmětu k předmětu, a ty by tvořily jeho vrcholy.
Wikidata
editovat- Nové Město na Moravě
- Položka wikidat -> Wikidata / Nové Město na Moravě
- Seznam všech vlastností]
- Entita Qxxxx
- Vlastnosti Pxxxxx
Dotazy
editovat- Wikidata query service - https://query.wikidata.org/
-
Wikidata stručně
-
Dotazy wikidata stručně
SPARQL
editovat- property/hodnota wdt:P31 wd:Q5153359.
- entita wd:P31 wd:Q5153359.
001
editovat# 001 - prvni zamer
#
# SELECT - jaka data chci
SELECT ?clanek
# podle jakych vlastnosti se vybira
WHERE
{
clanek instace "obec v Česku"
}
002
editovat# 002 - seznam měst v česku
#
# SELECT - jaka data chci
SELECT ?clanek
# podle jakych vlastnosti se vybira
WHERE
{
?clanek wdt:P31 wd:Q15978299
}
003
editovat#003 - obec v Česku včetně názvu
SELECT ?misto ?mistoLabel
WHERE
{
?misto wdt:P31 wd:Q5153359
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}
004
editovat#003 - obec v Česku včetně názvu a souřadnic
SELECT ?misto ?mistoLabel ?souradnice
WHERE {
?misto wdt:P31 wd:Q5153359.
?misto wdt:P625 ?souradnice
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}
LIMIT 20
005
editovat#005 - obec v Česku včetně názvu a souřadnic
# a bez obrazku - jako mapa
#defaultView:Map
SELECT ?misto ?mistoLabel ?souradnice
WHERE {
?misto wdt:P31 wd:Q5153359 . # obec v Česku
?misto wdt:P625 ?souradnice . # souřadnice
MINUS {
?misto wdt:P18 ?obrazek .
}
}
007
editovat#007 - obec v Česku včetně názvu a souřadnic
# a bez obrazku - jako mapa
#defaultView:Map
SELECT ?misto ?mistoLabel ?souradnice
WHERE {
?misto wdt:P31 wd:Q5153359 . # obec v Česku
?misto wdt:P625 ?souradnice . # souřadnice
MINUS {
?misto wdt:P18 ?obrazek .
}
}
008
editovat#008 - obec v Česku včetně názvu a souřadnic
# a bez obrazku - jako mapa
#defaultView:Map
SELECT ?misto ?mistoLabel ?souradnice
WHERE {
?misto wdt:P31 wd:Q5153359 . # obec v Česku
?misto wdt:P625 ?souradnice . # souřadnice
MINUS {
?misto wdt:P18 ?obrazek .
}
}
009
editovat#009 - obec v Česku včetně názvu a souřadnic
# a bez obrazku - jako mapa
# filtrovani podle okresu
#defaultView:Map
SELECT ?misto ?mistoLabel ?souradnice
WHERE {
?misto wdt:P31 wd:Q5153359 . # obec v Česku
?misto wdt:P625 ?souradnice . # souřadnice
?misto wdt:P131 wd:Q838338
MINUS {
?misto wdt:P18 ?obrazek .
}
}
010
editovat# 010 -# Mista bez obrazku ve vzdalenosti od 3km od Noveho mesta na Morave
# ktere nemaji obrazek
# nejsou ulici
#defaultView:Map
SELECT ?misto ?mistoLabel ?location ?instanceLabel ?dist
WHERE
{
wd:Q986075 wdt:P625 ?loc .
SERVICE wikibase:around {
?misto wdt:P625 ?location .
bd:serviceParam wikibase:center ?loc .
bd:serviceParam wikibase:radius "3" .
}
OPTIONAL { ?misto wdt:P31 ?instance }
BIND(geof:distance(?loc, ?location) as ?dist)
MINUS {
?misto wdt:P18 ?image .
}
MINUS {
?misto wdt:P31 wd:Q79007
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "cs" }
} ORDER BY ?dist
011
editovat# Cast obce
# v Cesku
# bez obrazku
SELECT ?city ?cityLabel ?souradnice
WHERE
{
?city wdt:P31 wd:Q123705 .
?city wdt:P17 wd:Q213 .
?city wdt:P625 ?souradnice .
MINUS {
?city wdt:P18 ?obrazek
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "cs" .
}
}
Prefix
- položky mají prefix wd:
- property mají prefix wdt:
- promenné prefix nemají
Poznámky
editovatAutomatické doplňování CTRL+SPACE
wd:CTRL+SPACE nabídne items wdt:CTRL+SPACE nabídne property
?misto wdt:P31 wd:Q15284 . ?misto wdt:P625 ?souradnice . ?misto wdt:P734 "AAA". vyřazovací podmínka MINUS { ... } podminka nebo { podminka 1 } UNION { podminka 2 } nepoviny udaj datum narozeni do birthplacee OPTIONAL { ?item wdt: P19 ?birthplace } doplnujici podminka FILTER (YEAR(?dateofbirth) > 1950) Omezeni poctu
LIMIT 20