Eksperimentering med tillegg til Grep - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki
På tross av at Grep-teamet i Udir kun består av en liten håndfull personer, rekker vi å utvikle små eksperimenter som på sikt kanskje kan komme til nytte for datakonsumentene våre.
Ontologi
Det viktigste, og kanskje mest etterlengtet, er ontologi-prosjektet. Nå har vi laget et utkast som du kan teste i Beta-miljøet vårt. Se artikkelen Ontologi for Grep som beskriver dette mer i detalj.
"Statiske" datasett som kan kobles mot deler av Grep
Det finnes ett og annet datasett som er nært beslektet med dataene i Grep. Ved å legge disse tilgjengelig som egne repo i graf-databasen vår, kan kanskje dette berike Grep med nye perspektiver og vinklinger. For eksempel har vi ikke i Grep noe som handler om årstrinnsgrupper som "småskolen", "mellomtrinnet" osv.
Rammeverk for grunnleggende ferdigheter
Et eksempel på et slikt "statisk" datasett, kan være dokumentet Rammeverk for grunnleggende ferdigheter. I dette tilfellet var ikke utgangspunktet et ferdig datasett, men at vi har tatt for oss teksten og digitalisert denne. Vårt kriterium i tillegg, er at den kan berike Grep, eller omvendt – at den digitaliserte teksten blir rikere med kobling til Grep. Rammeverk for grunnleggende ferdigheter (lenke til teksten på udir.no) kan være et godt eksempel på det. Dette er riktig nok en tekst der målgruppen var læreplangruppene som skrev læreplanen, men dette kan likevel ses på som et innblikk i forarbeidet til utviklingen av de grunnleggende ferdighetene i læreplanen. Se Eksperiment - rammeverk for grunnleggende ferdigheter for detaljer.
Norsk/engelsk ordliste med kilder fra diverse åpne ressurser (udir.no og andre)
Det finnes ikke mange, men noen ordlister som handler om ord og begreper i grunnopplæringssfæren. I dette lille prosjektet var målet å finne disse, og lage en så lik som mulig struktur, for deretter å skrive dette inn i en Turtle-fil som kilde for SPARQL-endepunktet https://sparql-beta-data.udir.no/sparql (repo:ordbok), til maskinbruk: https://sparql-beta-data.udir.no/repositories/ordbok (se . endepunkt for maskiner). Sluttproduktet er da et SPARQL-endepunkt som kan brukes som et ordbokverktøy. Jeg kommer tilbake til hvordan.
Eksempler på kilder:
- Udir: Ordbok – for begreper i grunnopplæringen, norsk-engelsk / engelsk-norsk
- Udir: Diverse søketreff
- Udir: Ontologi for Grep som er omtalt ovenfor, men foreløpig begrenset til typer (ikke egenskaper)
- Utdanning.no: Ordforklaringer
- Samordna opptak: Diverse artikler om ulike begreper
Obs: Der jeg ikke fant engelsk oversettelse i kilder utenfor Udir, tillot jeg meg å legge inn dette selv. Dette er tross alt et forsøksprosjekt...
Tanken er at denne lista kan vokse ved behov, og vi mottar gjerne tips om åpne kilder vi kan bruke.
Prinsippet er at kildene fra Udir, står vi inne for. Ikke at vi ikke kunne stått inne for forklaringer og oversettelser for de andre, men det er et poeng av vi har en egenskap for alle ord-oppslagene, "source", slik at det klart hva som kommer fra hvilken kilde. Noen ganger vil du treffe på ord som er omtalt av flere kilder, og da kan det være interessant i seg selv å se om det er noen betydningsforskjeller mellom kildene. Det er ikke unaturlig, gitt roller og kultur.
Så til det mer praktiske/tekniske. Hele prosjektet er lagret i én Turtle-fil, kalt ordliste.ttl (lenke til raw-versjonen av fila i Github/code). Øverst i fila, er alle prefiksene listet opp, slik at vi ikke trenger å skrive hele URIene nedover:
@prefix o: <http://psi.udir.no/ontologi/ordliste/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix u: <http://psi.udir.no/ontologi/kl06/> .
Deretter kommer alle oppslagene (entry) i tur og orden. Først et eksempel fra ordboka til udir.no:
o:2124 o:source-date "2017-11-08T00:00:00"^^xsd:dateTime ;
o:source-downloaded "2024-07-12T00:00:00"^^xsd:dateTime ;
o:source <https://www.udir.no/verktoy/ordbok/> ;
o:word "programme area"@eng, "programområde"@nob ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> o:entry .
Så et eksempel fra Greps ontologi-forsøk:
o:3181 a o:entry ;
u:array-of-occurrences-json <https://data.udir.no/kl06/v201906/programomraader/> ;
u:grep-type u:programomraade ;
o:id o:3181 ;
o:source <https://data.udir.no/kl06/> ;
o:source-date "2024-07-17T00:00:00"^^xsd:dateTime ;
o:word "Programme area"@eng,
"Programområde"@nob ;
rdfs:comment "Adopted package of subjects with a given total teaching hours for a year, and taken under an education programme"@eng,
"Fastsatt pakke av fag, med et gitt samlet årstimetall, og som tas under et utdanningsprogram"@nob .
Legg merke til at begge eksemplene har en del egenskaper som er like, men Grep-eksempelet har noen i tillegg:
o:comment
: Det er bare udir-ordboka som ikke har noen forklaring/comment. De har ofte en forklaring i samme felt som oversettelsen av oppslagsordet. Det er en svakhet, men det er mye arbeid å splitte dette ut i hhvo:word
ogo:comment
. Mer arbeid enn et slikt lite prosjekt tillater.u:array-of-occurrences-json
: Grep-oppslagene er foreløpig alene om denne egenskapen som er en lenke til et json-array av alle forekomster av den gitte typen.
Jo,
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> o:entry
oga o:entry
betyr det samme i RDF-verdenen)
Ordboka til udir.no er klart den største kilden. Den alene står for 3226 av totalt (i skrivende stund) 3305 oppslag
Her er en spørring du kan kjøre i https://sparql-beta-data.udir.no/sparql (repo:ordliste):
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
prefix o: <http://psi.udir.no/ontologi/ordliste/>
select distinct ?id ?nob ?commentNob ?eng ?commentEng ?kilde ?ListeDataforekomster where {
?id o:word ?søkeord;
a ?type ;
o:word ?nob ;
o:word ?eng .
OPTIONAL {
?id rdfs:comment ?commentNob ;
rdfs:comment ?commentEng ;
OPTIONAL {?id u:array-of-occurrences-json ?ListeDataforekomster.}
FILTER (
(LANG(?commentNob) = "nob" && LANG(?commentEng) != "nob") &&
(LANG(?commentEng) = "eng" && LANG(?commentNob) != "eng")
)
}
OPTIONAL {?id o:source ?kilde .}
FILTER (
(LANG(?nob) = "nob" && LANG(?eng) != "nob") &&
(LANG(?eng) = "eng" && LANG(?nob) != "eng") &&
REGEX(str(?søkeord), "SKRIV DITT SØKEORD/FRASE HER", "i")
)
# FILTER REGEX(str(?kilde), "udir.no/verktoy/ordbok", "i") # Hvis du vil filtrere på kilde
} ORDER BY ?nob
Ved søk (se REGEX-filteret nederst) på "programområde", fikk jeg dette treffet (utsnitt):
Følg med for å se flere eksperimenter, og kom gjerne med forslag (Ta kontakt med oss)