Wikipedista:Pastorius/Jemný úvod do SPARQL

Z Wikipedie, otevřené encyklopedie
Nikdy nemůžete rozumět všemu, přesto byste se měli snažit porozumět principům.

SPARQL[editovat | editovat zdroj]

SPARQL 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[editovat | editovat zdroj]

Graf 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[editovat | editovat zdroj]

Hlavní 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 | editovat zdroj]

Dotazy[editovat | editovat zdroj]

SPARQL[editovat | editovat zdroj]

  • property/hodnota wdt:P31 wd:Q5153359.
  • entita wd:P31 wd:Q5153359.

001[editovat | editovat zdroj]

# 001 - prvni zamer
# 
# SELECT - jaka data chci

SELECT ?clanek

# podle jakych vlastnosti se vybira
WHERE
{
  clanek instace "obec v Česku"
}

002[editovat | editovat zdroj]

# 002 - seznam měst v česku
# 
# SELECT - jaka data chci

SELECT ?clanek

# podle jakych vlastnosti se vybira
WHERE
{
  ?clanek wdt:P31 wd:Q15978299
}

Query

003[editovat | editovat zdroj]

#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]". }
}

Query

004[editovat | editovat zdroj]

#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

Query

005[editovat | editovat zdroj]

#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 .
 }
}

Query

007[editovat | editovat zdroj]

#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 .
 }
}

Query

008[editovat | editovat zdroj]

#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 | editovat zdroj]

#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 .
  }
}

Query

010[editovat | editovat zdroj]

# 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

Query

011[editovat | editovat zdroj]

# 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" .
   }
  }

Query


Prefix

  • položky mají prefix wd:
  • property mají prefix wdt:
  • promenné prefix nemají

Poznámky[editovat | editovat zdroj]

Automatické 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

Odkazy[editovat | editovat zdroj]