SPARQL
SPARQL (vysloveno „sparkl“, rekurzivní zkratka pro SPARQL Protocol and RDF Query Language, někdy též vykládáno jako Simple Protocol and RDF Query Language) je sémantický dotazovací jazyk pro data uchovaná ve formátu RDF. Byl standardizován pracovní skupinou DAWG (RDF Data Access Working Group), která je součástí konsorcia W3C, a je uznáván jako klíčová technologie sémantického webu. SPARQL 1.0 se stal konečným doporučením konsorcia (W3C Recommendation) 15. ledna 2008 a SPARQL 1.1 v březnu 2013.
Dotazování ve SPARQL
Obecná struktura
Ve srovnání s dotazovacími jazyky pro relační databáze, jako je například jazyk SQL, existuje podobnost například u klíčových slov (SELECT, WHERE, FROM). Trojice, základní informační prvek v RDF, se vždy skládá z podmětu, vlastnosti a předmětu (též subjekt – predikát – objekt). Proto se také ve SPARQL skládá dotaz z množiny trojic, kde každý prvek trojice může být proměnná. Skrývá se za tím myšlenka najít shodné trojice z databáze a výsledky k proměnným. Dotaz se provádí nad datovou kolekcí RDF (angl. RDF dataset), což je množina dokumentů RDF patřící pod určitý koncový bod (angl. endpoint). Takovým koncovým bodem je adresa URI, kam mohou být odeslány dotazy a přijímány výsledky přes protokol HTTP [Sequeda, 2011].
Druhy dotazů
Pro čtení dat z databáze jazyk SPARQL definuje čtyři různé druhy dotazování pro různé účely.
Dotaz SELECT
Vrací výsledek z koncového bodu SPARQL ve tvaru tabulky obsahující pouze výsledná data vyhovující dotazu.
Dotaz CONSTRUCT
Vrací výsledek z koncového bodu SPARQL obsahující výsledná data vyhovující dotazu, transformovaná do formátu RDF.
Dotaz ASK
Vrací výsledek ve tvaru true
/false
(pravda / nepravda), odpovídající volanému dotazu.
Dotaz DESCRIBE
Vrací výsledek ve formátu RDF, který popisuje výsledná data vyhovující dotazu. Záleží na konkrétní službě koncového bodu SPARQL, které trojice jsou obsažené ve výsledku. Znamená to tedy, že nevrací data, ale jejich popis.
Příklad používání dotazu SELECT
Znázornění jednoduchého dotazu lze provést nad následujícími RDF trojicemi, popisujícími jména a umístění dvou osob. Ukázkovým jmenným prostorem je zde „example“.
subject | predicate | object |
---|---|---|
id1 | example:name | "Sven Svensson" |
id1 | example:city | "Stockholm" |
id2 | example:name | "Petr Petrovič" |
id2 | example:city | "Zagreb" |
Dotaz ke zjištění jmen všech osob v databázi má následující formát:
SELECT ?name FROM <example> WHERE { ?x example:name ?name }
Vysvětlení dotazu
Dotaz začíná klíčovým slovem SELECT
a pokračuje vyjmenováním proměnných, které chce uživatel zobrazit. V tomto případě se jedná o proměnnou ?name
. Všechny proměnné začínají otazníkem. Následuje slovo FROM
určující URI koncového bodu. Údaje po WHERE
, uzavřené v závorkách, představuji vymezení výsledku. V tomto případě je udávána pouze jedna trojice, ve které je podmět a předmět proměnná, přičemž vlastnost je konstantní hodnota name
. Při dotazu se tedy porovnávají konstanty v dotazu s hodnotami v databázi. Z výše uvedených trojic, mají dvě example:name
jako hodnotu vlastnosti. Z toho vyplývá, že tyto dvě trojice jsou výsledkem dotazu, neboť se shoduji s vymezující podmínkou. Zjednodušený výstup dotazu je následující:
1. ?name = "Sven Svensson"
2. ?name = "Petr Petrovič"
Dotaz může být rozšířen o další trojici v omezujících podmínkách, a to následně:
SELECT ?name FROM <example> WHERE { ?x example:name ?name . ?x example:city "Stockholm" }
nebo zkráceně
SELECT ?name FROM <example> WHERE { ?x example:name ?name ; example:city "Stockholm" }
V další trojici jsou obsaženy další dvě konstanty, vlastnost city
a podmět "Stockholm"
. Výsledkem tedy bude:
1. ?name = "Sven Svensson"
V tomto případě je výsledkem pouze jméno Sven Svensson
, neboť se shoduje s výše uvedenými podmínkami – je obsažena vlastnost name
a město se nazývá "Stockholm"
.
Veřejné koncové body – SPARQL endpoints
Vyhledáním na portálech, jako například datahub.io, lze specifikovat datový zdroj. Zde je také uveden odkaz na koncový bod a domovskou stránku, která je nezbytnou součástí práce se strukturovanými daty. Důvodem je, že se uživatel musí seznámit s datovou strukturou systému stejně jako u relačních databází, kde uživatel musí předem alespoň vědět jaké jsou obsažené tabulky a případně jaké jsou cizí klíče, které propojují dvě či více tabulek.
DBPedia
Jedná se v současné době o největší datovou kolekci strukturovaných dat v RDF. Snahou komunity DBpedia je extrakce strukturovaných informací z Wikipedie a jejich zpřístupnění na webu. Umožňuje sofistikované dotazování na Wikipedii a spojování různých datových kolekcí na webu s informacemi na Wikipedii. Dále komunita usiluje o inspiraci nových mechanismů pro navigování, spojování a zlepšování encyklopedií.
Odkazy
Související články
- Ontologie
- NoSQL
- Linked data
- Sémantický web
Externí odkazy
- Obrázky, zvuky či videa k tématu SPARQL na Wikimedia Commons
- SPARQL endpoint databáze DBpedia