GREPF 1323 - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki

Denne oppgaven hører til releasen GraphDB-1.5


Problembeskrivelse

Mange typer i Grep har referanser til andre objekter i Grep, og noen av dem er i APIet skrevet som JSON-objekter med gyldighetsdatoer for selve koblingen (altså at den gitte koblingen er gyldig fra og/eller til en gitt dato).

I JSON-LD-versjonen av APIet (som GraphDB henter data fra), viser den delen av koblingsobjektet som holder på gyldighetsinformasjonen inne i selve objektet feil data (en slags rekursiv feilkobling). Dette kan illustreres med bildet nedenfor:
gyldighetsinformasjonen til "bygger-paa-programomraade" gir feil kobling
Den nederste propertien, "u:gyldighet-bygger-paa-programomraade-BAANG3----" (med blank node som holder på selve gyldighetsinformasjonen) er feil. Her forventet vi følgende i stedet:

  • "u:gyldighet-bygger-paa-programomraade-BABAT1----" (+ blank node)
  • "u:gyldighet-bygger-paa-programomraade-NANAB1----" (+ blank node)

Det er 9 typer som har gyldighet på koblinger i dag:

  1. fagkode
  2. opplaeringsfag
  3. laereplan
  4. laereplan_lk20
  5. kompetansemaalsett
  6. kompetansemaalsett_lk20
  7. programomraade
  8. programfag
  9. merknad

Løsningsbeskrivelse

Oppgaven består i å lage en ny regel for utformingen av JSON-LD, og den kan kort beskrives slik:

Selve koblingen skal stå for seg selv (på rotnivå i koden), med kun en enkel URI-referanse (Eksempel: "u:bygger-paa-programomraade" | "d:BABAT1----"). Gyldighetsinformasjonen i referanseobjektet løftes opp til rotnivå i koden med en property som kan generaliseres slik: "gyldighet-[propertynavn på den originale koblingen]-[koden til objektet som er tilkoblet]". Konkret eksempel: "gyldighet-bygger-paa-programomraade-BABAT1----" (som var forventet i problembeskrivelsen over) Gyldighets-propertien over vil føre til en blank node som holder på selve gyldighetsinformasjoen (gyldig-fra: "dato" og gyldig-til: "dato")

Akseptansekriterier

AK.1 - Finne forekomster av at gyldighetsinformasjon er løftet ut og opp fra koblingsobjektet

Gitt at jeg er i SPARQL-endepunktet (https://sparql-beta-data.udir.no/sparql eller https://sparql-data.udir.no/kl06/sparql):

AK.1.a: For "programomraade"

Når jeg skriver inn følgende i spørrefeltet (Se også SPARQL-veiledningen):

PREFIX d: <http://psi.udir.no/kl06/> 
SELECT * WHERE {
d:DHAKT2---- ?p ?o}

og deretter klikker "Run",
Så skal jeg kunne se at jeg i kolonnene "p" og "o" finner

p o
http://psi.udir.no/ontologi/kl06/bygger-paa-programomraade http://psi.udir.no/kl06/HSHSF1----
http://psi.udir.no/ontologi/kl06/bygger-paa-programomraade http://psi.udir.no/kl06/DHDHV1----
http://psi.udir.no/ontologi/kl06/gyldighet-bygger-paa-programomraade-HSHSF1---- _:genid-a2a9.... (en blank node)
http://psi.udir.no/ontologi/kl06/gyldighet-bygger-paa-programomraade-DHDHV1---- _:genid-a2a9.... (en blank node)

AK.1.b: For "fagkode" og de øvrige typene

Når jeg skriver inn følgende i spørrefeltet (Se også SPARQL-veiledningen):

PREFIX d: <http://psi.udir.no/kl06/> 
SELECT * WHERE {
d:AAORS01 ?p ?o}

og deretter klikker "Run",
Så skal jeg kunne se at der jeg i kolonne "p" finner forekomster av noe med http://psi.udir.no/ontologi/kl06/gyldighet-xxx (med blanke noder i "o-kolonnen for disse) og der xxx tilsvarer andre forekomster i "p"-kolonnen. Eksempel:

p o
http://psi.udir.no/ontologi/kl06/vurderingsordning-eksamensform-paa-vitnemaalet-elev http://psi.udir.no/kl06/eksamensform_1
http://psi.udir.no/ontologi/kl06/gyldighet-vurderingsordning-eksamensform-paa-vitnemaalet-elev-eksamensform_1 _:genid-32d.... (en blank node)
http://psi.udir.no/ontologi/kl06/vurderingsordning-vurderingsuttrykk-elev http://psi.udir.no/kl06/vurderingsuttrykk_tall
http://psi.udir.no/ontologi/kl06/gyldighet-vurderingsordning-vurderingsuttrykk-elev-vurderingsuttrykk_tall _:genid-32d... (en blank node)

og hvis jeg gjentar dette for de øvrige av de ni typene (ved å erstatte AAORS01 med kodene nedenfor):

  • ADI2Z01 (opplaeringsfag)
  • ADI2-01 (laereplan)
  • ARB01-03 (laereplan_lk20)
  • KMS354 (kompetansemaalsett)
  • KV107 (kompetansemaalsett_lk20)
  • PF54 (programfag)
  • FAM00 og VMM01 (merknad)

så skal jeg kunne finne samme mønster som beskrevet over (og i løsningsbeskrivelsen ovenfor).

De overstrekede linjene viser innhold vi ikke tar med i denne oppgaven. Ved en nærmere analyse, viser det seg at vi kun trenger en liten justering, á la denne for opplæringsfag. Se GREPF-1412 som vil høre til til releasen GraphDB-1.5.1 (beskrivelse kommer senere)

⚠️ **GitHub.com Fallback** ⚠️