SPARQL - SPARQL

SPARQL
Paradygmat Język zapytań
Deweloper W3C
Po raz pierwszy pojawiły się 2008 ; 13 lat temu ( 2008 )
Wersja stabilna
1.1 / 21 marca 2013 ; 8 lat temu ( 2013-03-21 )
Strona internetowa www .w3 .org /TR /sparql11-query /
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, AGGREGATEdla 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 ?namei ?emailponieważ ?personjest często złożonym identyfikatorem URI, a nie ciągiem przyjaznym dla człowieka. Zauważ, że każdy ?personmoże mieć wiele skrzynek pocztowych, więc w zwróconym zestawie ?namewiersz 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 WHEREblok, aby ograniczyć zapytanie, chociaż w przypadku DESCRIBEzapytania WHEREjest 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 ?capitali ?countryzostaną 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 ?yjest 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 INSERTi DELETEmetod.

Realizacje

Open source, odniesienia do implementacji SPARQL

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