SPARQL - SPARQL

SPARQL
Paradigme Spørrespråk
Utvikler W3C
Første gang dukket opp 2008 ; 13 år siden ( 2008 )
Stabil utgivelse
1.1 / 21. mars 2013 ; 8 år siden ( 2013-03-21 )
Nettsted www .w3 .org /TR /sparql11-query /
Store implementeringer
Jena , OpenLink Virtuoso

SPARQL (uttales " sparkle " / s p ɑː k ə l / , en rekursiv akronym for SPARQL protokoll og RDF Query Language ) er et RDF spørrespråk -som er, en semantisk spørrespråk for databaser I stand til å hente og manipulere data som er lagret i RDF -format (Resource Description Framework) . Den ble gjort til en standard av RDF Data Access Working Group (DAWG) i World Wide Web Consortium , og er anerkjent som en av de viktigste teknologiene i det semantiske nettet. 15. januar 2008 ble SPARQL 1.0 anerkjent av W3C som en offisiell anbefaling, og SPARQL 1.1 i mars 2013.

SPARQL tillater at en spørring består av trippel mønstre , konjunksjoner , disjunksjoner og valgfrie mønstre .

Implementeringer for flere programmeringsspråk eksisterer. Det finnes verktøy som lar en koble til og semi-automatisk konstruere en SPARQL-spørring for et SPARQL-endepunkt, for eksempel ViziQuer. I tillegg finnes det verktøy for å oversette SPARQL -spørringer til andre spørrespråk, for eksempel til SQL og til XQuery .

Fordeler

SPARQL lar brukerne skrive forespørsler mot det som løst kan kalles "nøkkelverdi" -data eller, mer spesifikt, data som følger RDF- spesifikasjonen til W3C . Dermed er hele databasen et sett med "subjekt-predikat-objekt" trippler. Dette er analogt med noen NoSQL- databasers bruk av begrepet "document-key-value", for eksempel MongoDB .

I SQL -relasjonsdatabasetermer kan RDF -data også betraktes som en tabell med tre kolonner - emnekolonnen, predikatkolonnen og objektkolonnen. Emnet i RDF er analogt med en enhet i en SQL -database , der dataelementene (eller feltene) for et gitt forretningsobjekt er plassert i flere kolonner, noen ganger spredt over mer enn en tabell, og identifisert med en unik nøkkel . I RDF er disse feltene i stedet representert som separate predikat/objektrader som deler det samme emnet, ofte den samme unike nøkkelen, med predikatet som er analogt med kolonnenavnet og objektet de faktiske dataene. I motsetning til relasjonsdatabaser er objektkolonnen heterogen: datatypen per celle er vanligvis underforstått (eller spesifisert i ontologien ) av predikatverdien . I motsetning til SQL kan RDF også ha flere oppføringer per predikat; for eksempel kan man ha flere "barn" -oppføringer for en enkelt "person", og kan returnere samlinger av slike objekter, for eksempel "barn".

Således tilveiebringer SPARQL et komplett sett av analytiske spørringsoperasjoner, slik som JOIN, SORT, AGGREGATEfor data som schema er i seg selv en del av dataene i stedet for å kreve en separat skjema definisjon. Imidlertid gis skjemainformasjon (ontologien) ofte eksternt for å tillate sammenføyning av forskjellige datasett entydig. I tillegg gir SPARQL spesifikk graf traversering syntaks for data som kan bli tenkt på som en graf.

Eksemplet nedenfor viser en enkel spørring som utnytter ontologidefinisjonen foaf("venn av en venn").

Nærmere bestemt returnerer følgende forespørsel navn og e -postmeldinger til hver person i datasettet:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name 
       ?email
WHERE
  {
    ?person  a          foaf:Person .
    ?person  foaf:name  ?name .
    ?person  foaf:mbox  ?email .
  }

Denne spørringen kombinerer alle tripplene med et matchende emne, der typen predikat, " a", er en person ( foaf:Person), og personen har ett eller flere navn ( foaf:name) og postkasser ( foaf:mbox).

Forfatteren av denne forespørselen valgte å referere til emnet ved å bruke variabelnavnet " ?person" for lesbar oversikt. Siden det første elementet i trippelen alltid er emnet, kunne forfatteren like gjerne ha brukt et hvilket som helst variabelnavn, for eksempel " ?subj" eller " ?x". Uansett hvilket navn som er valgt, må det være det samme på hver linje i spørringen for å indikere at søkemotoren skal slutte seg til tredobbelter med samme emne.

Resultatet av å delta er et sett med rader - ?person, ?name, ?email. Denne spørringen returnerer ?nameog ?emailfordi ?personer ofte en kompleks URI i stedet for en menneskelig vennlig streng. Vær oppmerksom på at alle ?personkan ha flere postkasser, så i det returnerte settet ?namekan det vises en rad flere ganger, én gang for hver postkasse.

Denne spørringen kan distribueres til flere SPARQL -endepunkter (tjenester som godtar SPARQL -forespørsler og returnerer resultater), beregne og samle resultater, en prosedyre kjent som føderert spørring .

Uansett om det er på en føderert måte eller lokalt, kan ytterligere trippel definisjoner i spørringen tillate sammenføyninger til forskjellige emnetyper, for eksempel biler, for å tillate enkle søk, for eksempel å returnere en liste med navn og e -post for personer som kjører biler med høy drivstoffeffektivitet.

Spørreskjemaer

Når det gjelder spørsmål som leser data fra databasen, spesifiserer SPARQL -språket fire forskjellige spørringsvariasjoner for forskjellige formål.

SELECT spørsmål
Resultatene blir brukt i et tabellformat for å trekke ut råverdier fra et SPARQL -endepunkt.
CONSTRUCT spørsmål
Brukes til å trekke ut informasjon fra SPARQL -endepunktet og transformere resultatene til gyldig RDF.
ASK spørsmål
Brukes til å gi et enkelt sant/usant resultat for en spørring på et SPARQL -endepunkt.
DESCRIBE spørsmål
Brukes til å trekke ut en RDF -graf fra SPARQL -endepunktet, hvis innhold overlates til sluttpunktet å bestemme, basert på hva vedlikeholder anser som nyttig informasjon.

Hver av disse spørreskjemaene tar en WHEREblokk for å begrense spørringen, selv om det i tilfellet med DESCRIBEspørringen WHEREer valgfritt.

SPARQL 1.1 angir et språk for oppdatering av databasen med flere nye spørreskjemaer.

Eksempel

Et annet eksempel på SPARQL -spørring som modellerer spørsmålet "Hva er alle hovedstedene i Afrika?":

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

Variabler er angitt med et ?eller $prefiks. Bindinger for ?capitalog ?countryvil bli returnert. Når en trippel ender med et semikolon, vil motivet fra denne trippelen implisitt fullføre følgende par til en hel trippel. Så for eksempel ex:isCapitalOf ?yer en forkortelse for ?x ex:isCapitalOf ?y.

SPARQL -spørringsprosessoren vil søke etter sett med trippler som matcher disse fire trippelmønstrene, og binder variablene i spørringen til de tilsvarende delene av hver trippel. Viktig å merke seg her er "eiendomsorientering" (klassekamper kan utføres utelukkende gjennom klasseattributter eller eiendommer-se Andetyping )

For å gjøre spørsmål kortfattede, tillater SPARQL definisjonen av prefikser og base URIer på en måte som ligner på Turtle . I denne spørringen står prefikset " ex" for "http://example.com/exampleOntology#".

Utvidelser

GeoSPARQL definerer filterfunksjoner for forespørsler om geografisk informasjonssystem (GIS) ved hjelp av velforståtte OGC-standarder ( GML , WKT , etc.).

SPARUL er en annen utvidelse til SPARQL. Det gjør at RDF -butikken kan oppdateres med dette deklarative spørrespråket, ved å legge til INSERTog DELETEmetoder.

Implementeringer

Åpen kildekode, referanse SPARQL -implementeringer

Se Liste over SPARQL -implementeringer for mer omfattende dekning, inkludert triplestore , APIer og andre lagre som har implementert SPARQL -standarden.

Se også

Referanser

Eksterne linker