SPARQL - SPARQL
Paradygmat | Język zapytań |
---|---|
Deweloper | W3C |
Po raz pierwszy pojawiły się | 2008 |
Wersja stabilna | 1.1 / 21 marca 2013
|
Strona internetowa | www |
Główne wdrożenia | |
Jena , wirtuoz OpenLink |
Sparql (wymawiane " Sparkle " / s p ɑː k ə l / , A rekurencyjny akronim dla SPARQL protokołu i RDF Query Language ) jest językiem zapytań RDF -to znaczy, semantyczny język zapytań do baz danych -able do pobierania i przetwarzania danych przechowywanych w formacie Resource Description Framework (RDF) . Została uznana za standard przez Grupę Roboczą ds. Dostępu do Danych RDF (DAWG) należącą do konsorcjum World Wide Web Consortium i jest uznawana za jedną z kluczowych technologii sieci semantycznej. 15 stycznia 2008 r. SPARQL 1.0 został uznany przez W3C za oficjalną rekomendację, a SPARQL 1.1 w marcu 2013 r.
SPARQL pozwala na to, aby zapytanie składało się z potrójnych wzorców , spójników , alternatyw i wzorców opcjonalnych .
Istnieją implementacje dla wielu języków programowania . Istnieją narzędzia, które pozwalają łączyć się i półautomatycznie konstruować zapytanie SPARQL dla punktu końcowego SPARQL, na przykład ViziQuer. Ponadto istnieją narzędzia do tłumaczenia zapytań SPARQL na inne języki zapytań, na przykład na SQL i XQuery .
Zalety
SPARQL umożliwia użytkownikom pisanie zapytań na podstawie danych, które można luźno nazwać danymi „klucz-wartość”, a dokładniej danymi zgodnymi ze specyfikacją RDF W3C . Tak więc cała baza danych jest zbiorem trójek „podmiot-predykat-obiekt”. Jest to analogiczne do używania terminu „wartość klucz-dokumentu” w niektórych bazach danych NoSQL , takich jak MongoDB .
W terminach dotyczących relacyjnych baz danych SQL dane RDF można również uznać za tabelę z trzema kolumnami — kolumną tematu, kolumną predykatu i kolumną obiektu. Temat w RDF jest analogiczny do podmiotu w bazie danych SQL , gdzie elementy danych (lub pola) dla danego obiektu biznesowego są umieszczone w wielu kolumnach, czasami rozłożone na więcej niż jedną tabelę i identyfikowane przez unikalny klucz . W RDF pola te są zamiast tego reprezentowane jako oddzielne wiersze predykatu/obiektu, które mają ten sam temat, często ten sam unikalny klucz, przy czym predykat jest analogiczny do nazwy kolumny, a obiekt rzeczywistych danych. W przeciwieństwie do relacyjnych baz danych kolumna obiektu jest heterogeniczna: typ danych przypadający na komórkę jest zwykle implikowany (lub określony w ontologii ) przez wartość predykatu . Również w przeciwieństwie do SQL, RDF może mieć wiele wpisów na predykat; na przykład można mieć wiele wpisów „dziecko” dla jednej „osoby” i zwracać kolekcje takich obiektów, jak „dzieci”.
W ten sposób SPARQL zapewnia pełny zestaw operacji zapytań analitycznych, takich jak JOIN
, SORT
, AGGREGATE
dla danych, których schemat jest nieodłączną częścią danych, a nie wymaga osobnej definicji schematu. Jednak informacje o schemacie (ontologia) są często dostarczane zewnętrznie, aby umożliwić jednoznaczne łączenie różnych zbiorów danych. Ponadto SPARQL zapewnia specyficzną składnię przechodzenia przez wykres dla danych, które można traktować jako wykres.
Poniższy przykład demonstruje proste zapytanie, które wykorzystuje definicję ontologii foaf
(„przyjaciel przyjaciela”).
W szczególności poniższe zapytanie zwraca nazwiska i adresy e-mail każdej osoby w zbiorze danych:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
?email
WHERE
{
?person a foaf:Person .
?person foaf:name ?name .
?person foaf:mbox ?email .
}
To zapytanie łączy wszystkie trójki z pasującym tematem, gdzie predykat typu „ a
” oznacza osobę ( foaf:Person
), a osoba ma jedno lub więcej nazwisk ( foaf:name
) i skrzynek pocztowych ( foaf:mbox
).
Autor tego zapytania wybrał odwołanie się do tematu za pomocą nazwy zmiennej „ ?person
”, aby uzyskać czytelność. Ponieważ pierwszy element trójki jest zawsze podmiotem, autor mógł równie łatwo użyć dowolnej nazwy zmiennej, takiej jak " ?subj
" lub " ?x
". Jakakolwiek nazwa zostanie wybrana, musi być taka sama w każdym wierszu zapytania, aby wskazać, że silnik zapytań ma łączyć trójki o tym samym temacie.
Wynikiem sprzężenia jest zestaw wierszy – ?person
, ?name
, ?email
. To zapytanie zwraca ?name
i ?email
ponieważ ?person
jest często złożonym identyfikatorem URI, a nie ciągiem przyjaznym dla człowieka. Zauważ, że każdy ?person
może mieć wiele skrzynek pocztowych, więc w zwróconym zestawie ?name
wiersz może pojawić się wiele razy, po jednym dla każdej skrzynki pocztowej.
To zapytanie może być dystrybuowane do wielu punktów końcowych SPARQL (usługi, które akceptują zapytania SPARQL i zwracają wyniki), obliczane i zbierane wyniki za pomocą procedury znanej jako zapytanie federacyjne .
Niezależnie od tego, czy w sposób sfederowany, czy lokalnie, dodatkowe potrójne definicje w zapytaniu mogą umożliwiać łączenie różnych typów podmiotów, takich jak samochody, aby umożliwić proste zapytania, na przykład zwrócenie listy nazwisk i adresów e-mail osób, które prowadzą samochody z wysokim efektywność paliwowa.
Formularze zapytań
W przypadku zapytań, które odczytują dane z bazy, język SPARQL określa cztery różne odmiany zapytań do różnych celów.
-
SELECT
zapytanie - Używane do wyodrębniania surowych wartości z punktu końcowego SPARQL, wyniki są zwracane w formacie tabeli.
-
CONSTRUCT
zapytanie - Służy do wyodrębniania informacji z punktu końcowego SPARQL i przekształcania wyników w prawidłowy RDF.
-
ASK
zapytanie - Służy do dostarczania prostego wyniku True/False dla zapytania w punkcie końcowym SPARQL.
-
DESCRIBE
zapytanie - Służy do wyodrębniania grafu RDF z punktu końcowego SPARQL, którego zawartość pozostawia się do decyzji punktu końcowego, na podstawie tego, co opiekun uważa za przydatne informacje.
Każda z tych form zapytania zajmuje WHERE
blok, aby ograniczyć zapytanie, chociaż w przypadku DESCRIBE
zapytania WHERE
jest to opcjonalne.
SPARQL 1.1 określa język aktualizacji bazy danych o kilka nowych formularzy zapytań.
Przykład
Inny przykład zapytania SPARQL, który modeluje pytanie „Jakie są stolice wszystkich krajów w Afryce?”:
PREFIX ex: <http://example.com/exampleOntology#>
SELECT ?capital
?country
WHERE
{
?x ex:cityname ?capital ;
ex:isCapitalOf ?y .
?y ex:countryname ?country ;
ex:isInContinent ex:Africa .
}
Zmienne są oznaczone przedrostkiem ?
lub $
. Wiązania ?capital
i ?country
zostaną zwrócone. Kiedy trójka kończy się średnikiem, podmiot z tej trójki domyślnie uzupełni następną parę do całej trójki. Więc na przykład ex:isCapitalOf ?y
jest skrótem od ?x ex:isCapitalOf ?y
.
Procesor zapytań SPARQL wyszuka zestawy trójek, które pasują do tych czterech wzorców trójek, wiążąc zmienne w zapytaniu z odpowiednimi częściami każdej trójki. Ważne jest, aby pamiętać, że jest to „orientacja na właściwości” (dopasowania klas mogą być prowadzone wyłącznie poprzez atrybuty klasy lub właściwości – zobacz typowanie kaczek )
Aby zapytania były zwięzłe, SPARQL umożliwia definicję przedrostków i podstawowych identyfikatorów URI w sposób podobny do Turtle . W tym zapytaniu prefiks „ ex
” oznacza „http://example.com/exampleOntology#”.
Rozszerzenia
GeoSPARQL definiuje funkcje filtrów dla zapytań systemu informacji geograficznej (GIS) przy użyciu dobrze rozumianych standardów OGC ( GML , WKT , itp.).
SPARUL to kolejne rozszerzenie do SPARQL. Umożliwia aktualizację magazynu RDF za pomocą tego deklaratywnego języka zapytań poprzez dodanie INSERT
i DELETE
metod.
Realizacje
Open source, odniesienia do implementacji SPARQL
- RDF4J , dawniej Sesame z Eclipse Foundation
- Jena (framework) z Apache Software Foundation
- Wirtuoz OpenLink
Zobacz Lista implementacji SPARQL, aby uzyskać bardziej kompleksowy zakres, w tym triplestore , API i inne magazyny, które zaimplementowały standard SPARQL.
Zobacz też
Bibliografia
Zewnętrzne linki
- Blog dotyczący aktywności danych W3C
- Grupa Robocza W3C SPARQL 1.1 - zamknięte listy mailingowe i archiwa , była RDF Data Access Working Group
- Zalecenie SPARQL 1.1
- SPARQL 1.0 Język zapytań (starszy)
- Protokół SPARQL 1.0 (starszy)
- Format wyników zapytań XML SPARQL 1.0 (starszy)
- Mapowania SPARQL2XQuery pomiędzy schematami OWL-RDF/S i XML oraz schematem XML do transformacji OWL.
- Wyrażenia składni SPARQL w silniku zapytań ARQ
- Tłumaczenia wyrażeń składni SPARQL zestawu testów DAWG
- Wikidane
- Samouczek usługi zapytań Wikidanych
- DBpedia