GREPF 2196 - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki
- Denne siden er en del av videreutvikling
- OBS: Denne saken har vi valgt å gjengi slik den fremstår internt i Udir
Vår referanse: GREPF-2196, release-dato: 2024.09.12
Følgende sparql-spørring gir 123 treff med blanke noder for ?o:
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select * where {
?s a u:programfag ;
?p ?o .
FILTER (regex(str(?p), "gyldighet-underliggende-hovedomraader", "i"))
}
og som gir resultat, lignende dette:
?s | ?p | ?o | |
---|---|---|---|
1 | d:PF255 | u:gyldighet-underliggende-hovedomraader-HO1669 | _:genid-3a19375db20e44f1ba5bad4082874f24437126-b0 |
2 | d:PF255 | u:gyldighet-underliggende-hovedomraader-HO1670 | _:genid-3a19375db20e44f1ba5bad4082874f24437126-b1 |
osv... |
Altså vil vi forvente å kunne borre videre under ?o for å finne data fra ?p2 og ?o2 slik:
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select * where {
?s a u:programfag ;
?p ?o .
FILTER (regex(str(?p), "gyldighet-underliggende-hovedomraader", "i"))
?o ?p2 ?o2
}
Men denne spørringen gir ingen treff.
Det er fordi jsonld-versjonen av programfag er skrevet slik (for f.eks programfaget PF255):
{
"gyldighet-underliggende-hovedomraader-HO1669": {
"gyldig-fra": null,
"gyldig-til": null
},
"gyldighet-underliggende-hovedomraader-HO1671": {
"gyldig-fra": null,
"gyldig-til": null
},
"gyldighet-underliggende-hovedomraader-HO1670": {
"gyldig-fra": null,
"gyldig-til": null
}
}
og ikke slik:
"gyldighet-underliggende-hovedomraader-HO1669": null,
"gyldighet-underliggende-hovedomraader-HO1671": null,
"gyldighet-underliggende-hovedomraader-HO1670": null
På mengdelære-vis, kan vi si at vi altså heller ønsker å skrive A=∅ og ikke A={∅,∅}, hvis og bare hvis, begge mengdene i objektet er ∅. Da slipper vi å slå opp den tomme mengden for bare å bekrefte at den er tom, når vi evaluerer.
Når så jsonld-fila eksporteres til SPARQL, vil alt som har verdien null
slettes fra grafen. Da vil predikatet (f,eks) 'gyldighet-underliggende-hovedomraader-HO1669' ikke være å finne.
(vi vet fortsatt at programfaget 'PF255' har 'underliggende-hovedomraader' 'HO1669', men vi trenger ikke å eksplisitt skrive at den ikke har gyldighetsdaoer for koblingen)
AK.1 -
Som bruker av GraphDB for det miljøet jeg skal teste
Når jeg kjører følgende spørring:
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select * where {
?s a u:programfag ;
?p ?o .
FILTER (regex(str(?p), "gyldighet-underliggende-hovedomraader", "i"))
Så skal jeg ikke få treff.