Eksperiment‐‐‐rammeverk‐for‐grunnleggende‐ferdigheter_eng - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki

This page is part of "Eksperimentering med tillegg til Grep"

Experiment – framework for basic skills

As part of experimenting with how we can enrich Grep - or vice versa - find data sets that can become richer by connecting to Grep, we have here considered Rammeverk for grunnleggende ferdigheter | The framework for basic skills (lenke til teksten på udir.no). This is indeed a text where the target group was the curriculum groups that wrote the curriculum, but this can still be seen as an insight into the preparatory work for the development of the basic skills in the curriculum.

What we did

First, we looked at the document itself at udir.no (see link above), and using cut and paste, we wrote a Turtle-document (rammeverk_for_grf.ttl), which we then import into a new repo in our Beta environment. Go to https://sparql-beta-data.udir.no/sparql and select the repo "RamverkForGRF" in the top right corner of the page. Then click on "SPARQL" in the left menu to do the sparql queries in the text below.

First a little tour:

First, take a look at the text in "Framework for..." (link above) to familiarize yourself with the terms. Then we can run a query to see how we've set it up in the sparql endpoint:

List of classes/types

PREFIX owl: <http://www.w3.org/2002/07/owl#>
select distinct ?type where { 
	?s owl:Class ?type .
}

which returns a list of (the four) types found in this repo. We've also rendered the u:basic_skill_lk20 type from the "201906" repo, and then added some ontology on top of that (more on that later). This is how the result is displayed: image

List of properties

In OWL (Web Ontology Language) there is a distinction between owl:ObjectProperty and owl:DatatypeProperty, so here is a list of both: First owl:ObjectProperty:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
select distinct * where { 
	?s a owl:ObjectProperty ;
           rdfs:label ?term ;
           rdfs:comment ?definisjon ;
           rdfs:domain ?domene ;
           rdfs:range ?instans .
FILTER(lang(?term)="nb")
FILTER(lang(?definisjon)="nb")          
}

Which gives: image It is these properties that make the model hang together. Note that we use ISO 639-1 for language codes here. This is how the OWL standard is defined. Otherwise in Grep we use ISO 639-2 to, among other things, be able to capture the three Sami languages in the content otherwise.

Then to owl:DatatypeProperties:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
select distinct * where { 
	?s a owl:DatatypeProperty ;
           rdfs:label ?term ;
           rdfs:comment ?definisjon ;
           rdfs:domain ?domene ;
           rdfs:range ?instans .
FILTER(lang(?term)="nb")
FILTER(lang(?definisjon)="nb")          
}

Which gives this result: image Here we see that ?instance is not other objects in the model, but a reference to the data type. I dette eksperimentet har vi ikke tatt oss bryet med å definere de egenskapene vi har "lånt" fra Grep ellers, slik som u:rekkefoelge (u:sort-order) which has rdfs:range xsd:integer etc.

So to the content itself

We create a query that shows everything (structured):

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select ?grf ?grunnleggendeFerdighet ?ferdighetsomraade ?fOmrBeskrivelse ?nivaa ?nivaabeskr ?nivaabeskrivelse where { 
	?nivaabeskr a u:nivaabeskrivelse ;
             u:beskrivelse ?nivaabeskrivelse ; #level desctription
             u:rekkefoelge ?nivBeskR ;
             u:tilhoerer-ferdighetsnivaa ?niv ; # level
             u:tilhoerer-grunnleggende-ferdighet ?grf ; # belongs to basic level
             u:tilhoer-ferdighetsomraade ?ferdighOmr . # belogns to skill area
    FILTER (lang(?nivaabeskrivelse)="nob")
    ?niv u:tittel ?nivaa ;
         u:rekkefoelge ?nivR .
    FILTER(lang(?nivaa)="nob")
    ?ferdighOmr u:tittel ?ferdighetsomraade ; # skill area
         		u:beskrivelse ?fOmrBeskrivelse ; # skill area descr.
                u:rekkefoelge ?omrR . # sort order
    FILTER(lang(?ferdighetsomraade)="nob")
    ?grf u:tittel ?grunnleggendeFerdighet ; # basic skill title
         u:rekkefoelge ?grfR .
    FILTER(lang(?grunnleggendeFerdighet)="nob")
    FILTER(lang(?fOmrBeskrivelse)="nob")
} 
ORDER BY ?grfR ?omrR ?nivR

which gives 105 lines of hits (see extract below): image

Link to Grep (repo:201906)

In the next query, we are still in the "FrameworkForGRF" repo, but we merge it with data from what we call the "default repo", in our case "201906". See especiallySERVICE <repository:201906> {...}. Here we start from a given competence aim (d:KM1015), and retrieves title and uri, as well as binds ?grf to what we find as ?grfin our repo ("Rammeverk..." | "Framework...") :

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
select ?KM ?kompetansemaal ?grf ?grunnleggendeFerdighet ?ferdighetsomraade ?fOmrBeskrivelse ?nivaa ?nivaabeskr ?nivaabeskrivelse where { 
SERVICE <repository:201906> {
    d:KM1015 u:tilknyttede-grunnleggende-ferdigheter ?grf ;
            u:tittel ?kompetansemaal ;
            u:uri ?KM .
        FILTER(lang(?kompetansemaal)="default")
    }   
    ?nivaabeskr a u:nivaabeskrivelse ;
             u:beskrivelse ?nivaabeskrivelse ;
             u:rekkefoelge ?nivBeskR ;
             u:tilhoerer-ferdighetsnivaa ?niv ;
             u:tilhoerer-grunnleggende-ferdighet ?grf ;
             u:tilhoer-ferdighetsomraade ?ferdighOmr .
    FILTER (lang(?nivaabeskrivelse)="nob")
    ?niv u:tittel ?nivaa ;
         u:rekkefoelge ?nivR .
    FILTER(lang(?nivaa)="nob")
    ?ferdighOmr u:tittel ?ferdighetsomraade ;
         		u:beskrivelse ?fOmrBeskrivelse ;
                u:rekkefoelge ?omrR .
    FILTER(lang(?ferdighetsomraade)="nob")
    ?grf u:tittel ?grunnleggendeFerdighet ;
         u:rekkefoelge ?grfR .
    FILTER(lang(?grunnleggendeFerdighet)="nob")
    FILTER(lang(?fOmrBeskrivelse)="nob")
} 
ORDER BY ?grfR ?omrR ?nivR

Then we get something similar to the image (section) below: image This specific query returns 25 hits, and that's a good match. The competency target is only linked to one basic skill (d:GF5, Digital skills). There are five skill areas for digital skills, and each of these has five skill levels.

Some weak points

  • In some curricula, they (the curriculum authors) have chosen to link all competence objectives to all basic skills. It is out of our (we in the Grep team) control.
  • There is no direct link between competence goals and level, until someone with authority sits down and makes the connection

But we still see it as a good way to present "background information" or "preparation for the regulation". Some may also be able to see the benefit of reading the basic skills in the curriculum "between the lines". Which levels, and how are they connected for the various skills.

Stay tuned to see more experiments, and feel free to make suggestions (get in touch with us)