GREPF 1323 - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki
Denne oppgaven hører til releasen GraphDB-1.5
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:
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:
- fagkode
- opplaeringsfag
- laereplan
- laereplan_lk20
- kompetansemaalsett
- kompetansemaalsett_lk20
- programomraade
- programfag
- merknad
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")
Gitt at jeg er i SPARQL-endepunktet (https://sparql-beta-data.udir.no/sparql eller https://sparql-data.udir.no/kl06/sparql):
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
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:
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)