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 editovat

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

 

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

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

 

Dotazy editovat

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
}

Query

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

Query

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

Query

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

Query

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

Query

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

Query

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

Query

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

Query


Prefix

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

Poznámky editovat

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