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

subjectpredicateobject
id1example:name"Sven Svensson"
id1example:city"Stockholm"
id2example:name"Petr Petrovič"
id2example: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

Podrobnější informace naleznete v článku 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

Externí odkazy