Hvordan bruke Greps SPARQL tjeneste - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki

Hva er SPARQL?

Termen SPARQL er et akronym som står for "SPARQL Protocol and RDF Query Language". Med andre ord, et spørrespråk for RDF, eller mer presist et semantisk spørrespråk for databaser for å motta (og manipulere) data som er lagret i formatet Resource Description Framework (RDF). Slike databaser blir ofte kalt "Tripple store" fordi alle data foreligger som "statements"/"påstander" som består av de tre semantiske bestanddelene subjekt, predikat og objekt (og i den rekkefølgen).

Ta gjerne en titt på artikkelen "What is SPARQL?" (ekstern lenke) fra Ontotext, for å lære mer grunnleggende om SPARQL. Ta også en titt på tipsene i innledningen til SPARQL-samlingen eller siden "Noen utvalgte sparql-tips og triks" om du trenger starthjelp og dybdelesning om SPARQL.

Hva kan jeg finne i Greps SPAQL-tjeneste?

I prinsippet vil du finne de samme dataene som i det "vanlige" Grep-APIet (REST/json), men her er de tilpasset RDF-formatet. I artikkelen Forflatning-av-objekter-og-oppløfting-av-attributter,-JSON-VS-JSON-LD har vi beskrevet dette nærmere (for spesielt interesserte :nerd_face:). Du vil også finne mer informasjon om det "vanlige" APIet på https://github.com/Utdanningsdirektoratet/KL06-LK20-public/wiki.

Hvor finner jeg Greps SPARQL-tjeneste?

Se artikkelen Tilgang til miljøer

To grensesnitt for å nå innholdet i Greps SPARQL-tjeneste

Vi har to grensesnitt for å kunne "SPARQLe" Grep-innhold. Ett for mennesker (GraphDB Workbench), og ett for maskiner (eget SPARQL-endepunkt):

  1. GraphDB Workbench (for mennesker)
  2. Endepunkt for maskiner

I tillegg får vi nå også et endepunkt der du kan hente ned full dump av jsonld-filer samlet i en dagfersk zip-fil (lenke til REST-wikien) som du f.eks kan importere til ditt eget SPARQL-endepunkt.

GraphDB Workbench (for mennesker)

Før du tenker å bruke SPARQL i egen kode/tjeneste, kan det være praktisk å teste ut spørringene dine mer eksplorativt ved å bruke Workbench-grensesnittet til GraphDB. Her kan du sjekke om spørringene dine returnerer et forventet resultat eller ikke, eller du kan dele resultatet med andre som kan lese resultatet i en tabell.

Slik gjør du:

Gå til https://sparql-data.udir.no/sparql hvis du vil bruke produksjonsmiljøet, eller https://sparql-beta-data.udir.no/sparql (bruk helst Beta til testing). Se også artikkelen om miljøene du kan bruke.

Velg repository, klikk deretter på "SPARQL" Velg det siste repoet oppe til høyre på siden, og klikk deretter "SPARQL" i venstremenyen (du trenger ikke logge inn).

Da får du dette bildet: Side med default-spørring ("gi meg alt du har, men bare 100 forekomster") Skriv spørringen ved å erstatte teksten i det store redigeringsfeltet med teksten med eksempelspørringen i boksen nedenfor.

prefix u: <http://psi.udir.no/ontologi/kl06/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?kmkode ?kmtekst ?laereplantittel ?laereplan WHERE {
?kompetansemaal rdf:type u:kompetansemaal_lk20 ;
    u:tittel ?kmtekst ;
    u:kode ?kmkode ;
    u:tilhoerer-kompetansemaalsett ?kms .
?kms u:etter-fag ?opplaeringsfag .
?opplaeringsfag u:laereplan-referanse ?laereplan .
?laereplan u:tittel ?laereplantittel .
    FILTER regex(?kmtekst, "brøk", "i")
    FILTER (lang(?kmtekst) = "default")
    FILTER (lang(?laereplantittel) = "default")
 } ORDER BY ?laereplan ?kmkode

Det skal nå se slik ut: Lin inn spørringen og klikk "Run" Trykk på knappen "Run", så får du dette resultatet:

Retur etter sparql-spørring Rull opp til spørrevinduet igjen. Legg merke til at det står "brøk" i regex-filteret. Erstatt ordet "brøk" med et annet ord du vil søke på og trykk på "Run" igjen.

Du kan også få resultatet i andre formater, f.eks json (kalt "Raw respons" i Workbench) Velg "Raw respons" eller et annet format Da ser du hvordan et json-resultat vil se ut (se avsnittet under om endepunkt for maskiner)

Endepunkt for maskiner

Først noen hovedprinsipper:

  1. URL for maskinelt sparql-endepunkt er https://sparql-data.udir.no/repositories/201906 i produksjonsmiljøet, og https://sparql-beta-data.udir.no/repositories/201906 i beta-miljøet (bruk helst Beta til testing). Se også artikkelen om miljøene du kan bruke.
  2. URL Request må ha header Accept:application/json (i den forrige løsningen vår kunne vi legge inn formatet som parameter direkte i url)

Testing i Beta - Eksempler:

Via Postman:

  • Bruk GET-metoden, og legg inn request URL: "https://sparql-beta-data.udir.no/repositories/201906"
  • I fanen "Params": Legg inn nøkkelen "query", der verdien er en URL-encoding|URL-kodet versjon av selve spørringen (ta f.eks kopi av spørringen du har testet i Workbench)
  • I fanen "Headers": Legg inn nøkkelen "Accept" med verdien "application/json"

Via Insomnia:

  • Opprett en ny request (kall den hva du vil), og velg GET som metode
  • GET: Legg inn URL: "https://sparql-beta-data.udir.no/repositories/201906"
  • Fanen Query: legg til "query", og klikk på pila til høyre for "value" og velg "Text Multi-line". Klikk deretter "Click to Edit", og lim inn en spørring du har kopiert fra Workbench (ikke encodet)
  • Fanen "Header": Legg inn
    • Accept og verdien "application/json"
    • Content-Type og verdien "application/x-www-form-urlencoded"
  • Klikk "Send" (til høye for GET-URLen)

Via Curl:

Prinsippet er det samme som for Postman-eksemplet over; send URL-request med URL-kodet spørring, med header "Accept:application/json", f.eks slik:

 $ curl -H "Accept:application/json" https://sparql-beta-data.udir.no/repositories/201906?query=prefix%20u%3A%20%3Chttp%3A%2F%2Fpsi.udir.no%2Fontologi%2Fkl06%2F%3E%20%0Aprefix%20rdf%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0ASELECT%20%20%2A%20WHERE%20%7B%0A%3Furi%20rdf%3Atype%20u%3Alaereplan_lk20%20%0A%7D%20LIMIT%2010