GREPF 1939 - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki

Denne siden er en del av Videreutvikling For å se hvordan dette er løst for REST, se REST:GREPF-1939 Release-dato: 2023-04-18, men ingen reelle data før redaksjonelle krefter har lagt inn koblinger. Inntil da, gå til repoet "GREPF-1939" i https://sparql-beta-data.udir.no/sparql for å teste spørringene nedenfor


Ny kobling mellom fagkoder i KL06 (v201906)

Bakgrunn

For fag- og svenneprøven avkreves det en tilleggseksamen for alle som ikke har fulgt ordinært løp. Dette er vanlig, og eksamenen tilhører som regel samme læreplan som fag- og svenneprøven, og kommer fint opp i lister over fagkoder tilknyttet læreplanen for vg3. Men: avviksfag (elektrofagene, børsmakerfag, muligens noen til) har allerede en ekstra eksamen på vg3-nivå for alle. For disse fagene skal tilleggseksamenen være på vg2-nivå (basert på vg2-planen). Disse kodene vises ikke automatisk på siden for vg3-planen, og vi har ingen gode nok sammenhenger eller mekanismer til å håndtere dette uten å rote til noe annet. Så: på tide å takle disse tilleggseksamenene med egen logikk/kobling. Da har vi valgt å benytte klassifiseringen som avviksfag til å vite at vi da må hente frem tilleggseksamen og vise denne også. (Unntakstilfelle).

Løsningsbeskrivelse

Offisielt langt navn: "tilleggseksamen for alle som ikke har fulgt normalt opplæringsløp" (ordrett fra vurderingskapittelet). Navn i datagrunnlaget: tilleggseksamen-ikke-normalt-loep

Hva vi gjør i bakgrunnen

I Grep-klienten legges det til rette for en ny type kobling mellom fagkoder (en til mange). Det skal være mulig å legge til gyldighetsperiode på koblingen, og koblingen skal kunne oppdateres.

Løsningsbeskrivelse

I KL06/v201906 legges det til en ny koblingsarray for fagkoder. Koblingene lagt inn via klienten skal listes som andre tilsvarende fagkodekoblinger (bygger-paa, benyttes-sammen-med). Koblingene vil ha mulighet for å ha med gyldighet. Endringen skal kun gjøres i v201906. (201604 og 201802 skal ikke få denne endringen).

Akseptansekrav KL06

For å teste dette med SPARQL-spørringene neddenfor, gå til repoet "GREPF-1939" i https://sparql-beta-data.udir.no/sparql (vi sletter repoet så snart vi har slike data i produksjonsmiljøet)

AK.1 - Finne forekomster av "tilleggseksamen-ikke-normalt-loep"

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select * where {
   ?s u:tilleggseksamen-ikke-normalt-loep ?o
} 

AK.2 - Få med gydlighetsinformasjon for koblingene der disse finnes

Siden gyldighetsinformasjonen ligger skjult bak blanke noder, må vi trikse litt, bl.a. med regex:

PREFIX d: <http://psi.udir.no/kl06/>
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select * where {
    ?fagkode u:tilleggseksamen-ikke-normalt-loep ?o .
OPTIONAL{
    ?fagkode u:tilleggseksamen-ikke-normalt-loep ?o ;
              ?p ?bl .
    ?o u:kode ?fk .
    BIND(REPLACE(str(?p), "http://psi.udir.no/ontologi/kl06/gyldighet-tilleggseksamen-ikke-normalt-loep-", "") AS ?string)
    FILTER isblank(?bl) 
    FILTER (regex(str(?p), ?fk, "i"))
    FILTER (?string = ?fk)
    ?bl ?p1 ?o1
    }
}  ORDER BY ?fagkode ?o ?p1

Legg merke til BIND(REPLACE(str(?p), "http://psi.udir.no/ontologi/kl06/gyldighet-tilleggseksamen-ikke-normalt-loep-", "") AS ?string). Her binder vi fagkoden som kommer etter strengen til variabelen ?string, så i linjen med FILTER (?string = ?fk) sørger vi for at gyldighetsinformasjonen er på linje med fagkoden som er gitt i variabelen ?fk.

BIND(REPLACE-strengen kan sikkert skrives mer elegant, men her er det i hvert fall tydelig hva vi trekker ut av ?p :wink: For eksempel kan linjen erstattes med

  • BIND(SUBSTR(str(?p), (STRLEN(str(?p))-6)) AS ?string) som trekker ut de 7 siste tengene (fagkoder består alltid av 7 tegn), eller
  • BIND(STRAFTER(STRAFTER(STR(?p),"loep-") ,"") as ?string) som returnerer alt etter "loep-" fra strengen, i vårt tilfelle den aktuelle fagkoden.

Vi har også inkludert de resultatene som har gyldighetsinformasjon i en OPTIONAL-klausul, og de uten, utenfor OPTIONAL.