Samling av SPARQL spørringer - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki

2022-07-05: Dette er en ny revisjon etter en gjennomgang av alle spørringene på denne siden. Den forrige versjonen kan nås på Samling av SPARQL spørringer_gml

Denne siden inneholder eksempler på SPARQL-spørringer som kan testes mot miljøene

Om prefikser i spørringene, se Prefikser. [Gå direkte til samlingen]

Først noen tips:

Prof. Dr. Harald Sack fra FIZ Karlsruhe – Leibniz Institute for Information Infrastructure, har laget et par foredragsserier på Youtube som kan anbefales for de som ønsker å gå i dybden:

En annen som også kan anbefales i samme sjanger, er Professur fur Wissensbasierte Systeme, Markus Krötzsh fra Technische Universität Dresden. Han har blant annet delt denne spillelisten:

I tillegg til mye matnyttig (i betydningen praktisk og håndsfast, byr han også på en del om grafteori i denne sammenhengen

Merk at Harald Sack bruker Virtuoso i eksemplene sine, og ikke GraphDB mot dbpedia. Derfor kan det være noen få avvik på hvordan man utformer spørringer. Det er også greit å vite for de som har brukt forrige versjon av Greps SPARQL-tjeneste, som jo var basert på Virtuoso. Vi har f.eks. funnet at

  • i GraphDB, må du i "FILTER(LANG("... eksplisitt definere "default" for å få default-språket for en språkversjonert streng, og ikke en tom streng ("") som vi gjorde i Virtuoso
  • i GraphDB krever REGEX-filteret "str" for å gjøre om til streng hvis du vil filtrere på noe som er url - f.eks i "FILTER REGEX(str(?status), "publisert", "i")" er ?status i dette tilfellet i utgangspunktet returnert som url, om du ikke som i eksempelet over spesifiserer at du vil ha den som en streng. Dette filteret finner du mange eksempler på i samlingen nedenfor.
  • Når du konkatinerer i SELECT-delen av spørringer, må du i GrapDB sette hele konkatineringsuttrykket i en ytre parentes, slik som i snutten nedenfor:
SELECT DISTINCT ?s (concat(group_concat(distinct ?x;separator=', ')) as ?y) ...osv 

Vi håper ikke de innledende linjene var avskrekkende. Det meste i videoene nevnt over er bygd på de samme prinsippene, og kan brukes hos oss. Nedenfor finner du mange eksempler du kan ta utgangspunkt i, og vi håper de er til hjelp.

Utforskende SPARQL-spørringer

List opp typer (rdf-måten med prefix)

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT DISTINCT ?type
WHERE { 
[] rdf:type ?type 
}

eller

SELECT DISTINCT ?type
WHERE { 
[] rdf:type ?type 
}

eller

SELECT DISTINCT ?type WHERE
{
    [] a ?type 
}

List opp typer på Grep-måten (med grep-typer)

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?type
WHERE {
[] u:grep-type ?type
}

List opp alle properties

SELECT DISTINCT ?property
WHERE {
  [] ?property ?o .
}

Mer matnyttig: Hvilke properties blir brukt av en bestemt type

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?property
WHERE {
    [] a u:laereplan_lk20;
     ?property ?o .
}

Spørringen nedenfor er i praksis en bedre løsning siden mange av predikatene (?property) fører til blanke noder for gyldighetsinformasjon i referanseobjekter. Disse kan elimineres med MINUS-funksjonen slik:

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?property WHERE  { 
    MINUS {
    [] a u:laereplan_lk20 ; ?property [] .
    FILTER (regex(str(?property), "gyldighet", "i"))
    }
    [] a u:laereplan_lk20 ; 
       ?property [] .    
} ORDER BY ?property

List opp hva et gitt element har

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

Statistikk

Antall tripler

SELECT (COUNT(*) AS ?tripler) WHERE {
    ?s ?p ?o
}

Antall entiteter

SELECT (COUNT(distinct ?s) AS ?entiteter) WHERE{
    ?s a []
}

Antall typer A (RDF-typer)

SELECT (COUNT(distinct ?o) AS ?typer) WHERE{
    [] a ?o
}

Antall typer B (Grep-typer)

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT (COUNT(distinct ?o) AS ?typer) WHERE{
    [] u:grep-type ?o
}

Antall distinkte predikater

SELECT (COUNT(distinct ?p) AS ?predikater) WHERE{
    [] ?p []
}

Antall distinkte subjekt-noder

SELECT (COUNT(DISTINCT ?s ) AS ?no) WHERE{
    ?s ?p []
}

Antall distinkte objekt-noder

Merk negasjonsfilteret !isLiteral som filtrerer bort alle ?o som er tekststrenger

SELECT (COUNT(DISTINCT ?o ) AS ?no) { ?s ?p ?o filter(!isLiteral(?o)) }

Spørringer mot innholdet

Hva skjuler seg bak en UUID-referanse?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?kode ?psi ?tittel ?type WHERE {
    ?psi u:id "uuid:01b784dd-aebc-46ec-9dfd-a0ad38fe8225" ;
         u:tittel ?tittel ;
         u:url-data ?kode ;
         a ?type .
    FILTER (lang(?tittel) = "default")
}

List alle av typen laereplan i default-språket

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?kode ?tittel WHERE {
    ?uri a u:laereplan_lk20 ;
         u:tittel ?tittel ;
         u:kode ?kode .
    FILTER (lang(?tittel) = "default")
} ORDER BY ?kode ?tittel

Samme som over, men filtrert på status publisert

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?tittel ?kode WHERE {
    ?uri a u:laereplan_lk20 ;
         u:tittel ?tittel ;
         u:status ?status ;
         u:kode ?kode .
    FILTER REGEX(str(?status), "publisert", "i")
    FILTER (lang(?tittel) = "default")
} ORDER BY ?kode

Alle publiserte "laereplaner" for grunnskolen i default-språket

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?kode ?tittel WHERE {
    ?laereplan a u:laereplan ;
               u:tittel ?tittel ;
               u:kode ?kode ;
               u:opplaeringsnivaa ?nivaa ;
               u:status ?status .
    FILTER regex(str(?status), "publisert", "i")
    FILTER regex(str(?nivaa), "grunnskole", "i")
    FILTER (lang(?tittel) = "default")
} ORDER BY ?kode
# endring: "u:har-opplaeringsnivaa" har byttet navn til "u:opplaeringsnivaa" for å forenkle, eller bedre matche navngivning i JSON-endepunktet

Publiserte "laereplaner" uten erstatter-relasjon ved hjelp av negasjon

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?kode ?tittel WHERE {
    ?laereplan a u:laereplan ;
               u:tittel ?tittel ;
               u:kode ?kode ;
               u:status ?status .
    MINUS { ?laereplan u:erstatter ?erstatter. }
    FILTER regex(str(?status), "publisert", "i")
    FILTER (lang(?tittel) = "default")
} ORDER BY ?kode

Engelsk oversettelse av angitt "tittel"

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT *
 WHERE { 
    ?laereplan u:tittel  "Læreplan i norsk"@nob ;
               u:tittel  ?tittel .
    FILTER langMatches(lang(?tittel), "eng" )
}

Tekstsøk i mutiple tekstfelt i LK06-planer (LP-tittel. formålkapittelet, kompetansemål)

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX d:<http://psi.udir.no/kl06/>
SELECT DISTINCT ?soeketekst ?data ?type ?lptittel WHERE {
    {
        ?kompetansemaal a u:kompetansemaal ;
                        u:tittel ?soeketekst ;
                        u:kode ?kode ;
                        u:url-data ?data ;
                        u:grep-type ?type ;
                        u:tilhoerer-laereplan ?lp ;
                        u:tilhoerer-kompetansemaalsett ?kms .
        ?lp u:tittel ?lptittel .
        FILTER (lang(?lptittel) = "default")
        FILTER (lang(?soeketekst) = "default")
    }
    UNION
    {
        ?laereplan a u:laereplan .
        ?laereplan u:tittel ?soeketekst ;
                   u:tittel ?lptittel ;
                   u:kode ?kode ;
                   u:url-data ?data ;
                   u:status ?status ;
                   u:grep-type ?type .
        FILTER regex(str(?status), "publisert", "i")
        FILTER (lang(?lptittel) = "default")
        FILTER (lang(?soeketekst) = "default")
    }
    UNION
    {
        ?laereplan a u:laereplan .
        ?laereplan u:formaal ?soeketekst ;
                   u:kode ?kode ;
                   u:tittel ?lptittel ;
                   u:url-data ?data ;
                   u:grep-type ?type ;
                   u:status ?status .
        FILTER regex(str(?status), "publisert", "i")
        FILTER (lang(?lptittel) = "default")
        FILTER (lang(?soeketekst) = "default")
    }
    FILTER regex(str(?soeketekst), "i forhold til", "i")
} ORDER BY ?type ?data

Tekstsøk i mutiple tekstfelt, en litt mer generisk versjon

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?s ?tittel ?type ?soeketekst ?tekstFor ?tilhoererLaereplan ?laereplanTittel where { 
	?s ?tekstFor ?soeketekst ;
       u:grep-type ?type ;
       u:tittel ?tittel ;
       u:status ?status .
    OPTIONAL {
        ?s u:tilhoerer-laereplan ?tilhoererLaereplan .
        ?tilhoererLaereplan u:tittel ?laereplanTittel .
    FILTER (lang(?laereplanTittel) = "default")
    }
    FILTER (isLiteral(?soeketekst) 
        && (lang(?tittel) = "default") 
        && (regex(?soeketekst, "digital dømmekraft", "i")
        && (regex(str(?status), "publisert", "i")
        )))
} ORDER BY ?tilhoererLaereplan ?S

Tekstsøk i kompetansemål (både LK06 og LK20) for å finne læreplan

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?s ?kmKode ?kmTekst ?laereplanTittel ?laereplan WHERE {
    [] ^u:tilhoerer-kompetansemaalsett ?kompetansemaal . # triks for å få både LK06 og LK20 versjoner
    ?kompetansemaal u:tittel ?kmTekst ;
                    u:kode ?kmKode ;
                    u:tilhoerer-kompetansemaalsett/u:etter-fag/u:laereplan-referanse ?laereplan .
    ?laereplan u:tittel ?laereplanTittel ;
               u:status ?lpStatus .
    FILTER (regex(?kmTekst, "i forhold til", "i")
        && (lang(?kmTekst) = "default")
        && (lang(?laereplanTittel) = "default")
        && (regex(str(?lpStatus), "publisert", "i")))
 } ORDER BY ?laereplan ?kmKode

Tekstsøk: Kompetansemål i LK20 som er likelydende

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select DISTINCT ?tittel1 (concat(group_concat(distinct ?km2;separator=', ')) as ?kompArray) (COUNT (distinct ?k2 ) as ?antLike) where {
# (concat('[',group_concat(distinct ?km2;separator=','),']') as ?komp2) # Hvis du vil vise ?komp2 som array    
    ?k1 a u:kompetansemaal_lk20 ;
       u:kode ?km1 ;
       u:tittel ?tittel1;
       u:tilhoerer-laereplan ?lp1 ;
       u:tittel ?tittel2 .
    FILTER (lang(?tittel1) = "default")
    FILTER (lang(?tittel2) = "default")
    ?k2 u:tittel ?tittel2 ;
        u:kode ?km2 ;
        u:tilhoerer-laereplan ?lp2 .
    ?lp1 u:grep-type u:laereplan_lk20 ; u:kode ?lpKode1 ;
         u:tittel ?lpTittel1 . FILTER (lang(?lpTittel1) = "default")
    ?lp2 u:grep-type u:laereplan_lk20 ; u:kode ?lpKode2 ;
         u:tittel ?lpTittel2 . FILTER (lang(?lpTittel2) = "default")
    
    FILTER (?tittel2 = ?tittel1)
    FILTER (?k1 != ?k2)
#    FILTER (?lp1 != ?lp2)
} 
GROUP BY ?tittel1 
ORDER BY DESC(?antLike)

Tekstsøk: Kompetansemål i LK06 som er likelydende med kompetansemål i LK20

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select DISTINCT ?tittel1 (concat(group_concat(distinct ?km1;separator=', ')) as ?kompArray1) (concat(group_concat(distinct ?km2;separator=', ')) as ?kompArray2) (COUNT (distinct ?k1 ) as ?antLike1)  (COUNT (distinct ?k2 ) as ?antLike2) where {
#  Hvis du vil vise ?komp2 som array    (concat('[',group_concat(distinct ?km2;separator=','),']') as ?komp2)
    ?k1 a u:kompetansemaal ;
       u:kode ?km1 ;
       u:tittel ?tittel1;
       u:tilhoerer-laereplan ?lp1 ;
       u:tittel ?tittel2 .
    FILTER (lang(?tittel1) = "default")
    FILTER (lang(?tittel2) = "default")
    ?k2 u:tittel ?tittel2 ;
        u:kode ?km2 ;
        u:tilhoerer-laereplan ?lp2 .
    ?lp1 u:grep-type u:laereplan ; u:kode ?lpKode1 ;
         u:tittel ?lpTittel1 . FILTER (lang(?lpTittel1) = "default")
    ?lp2 u:grep-type u:laereplan_lk20 ; u:kode ?lpKode2 ;
         u:tittel ?lpTittel2 . FILTER (lang(?lpTittel2) = "default")
    
    FILTER ((?tittel2 = ?tittel1) && (?k1 != ?k2))
#    FILTER (?lp1 != ?lp2)
} 
GROUP BY ?tittel1 
ORDER BY DESC(?antLike2) DESC(?antLike1)

Kompetansemål som er koblet til flere oppgitte grunnleggende ferdigheter, listet i linje 9 (LK20)

PREFIX d: <http://psi.udir.no/kl06/>
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select distinct ?lp ?lpTittel ?kmsKode ?kmsTittel ?km ?tittel  where { 
?KM a u:kompetansemaal_lk20 ;
    u:kode ?km ;
    u:tittel ?tittel ;
    u:tilhoerer-kompetansemaalsett ?kms ;
    u:tilhoerer-laereplan ?lp ;
    u:tilknyttede-grunnleggende-ferdigheter d:GF1, d:GF2, d:GF3, d:GF4, d:GF5 .
    FILTER (lang(?tittel) = "default")

#    MINUS { ?KM u:tilknyttede-grunnleggende-ferdigheter [] . }
?lp u:tittel ?lpTittel ;
    u:kode ?lpKode .
    FILTER (lang(?lpTittel) = "default")
?kms u:tittel ?kmsTittel ;
     u:kode ?kmsKode . 
    FILTER (lang(?kmsTittel) = "default")

} ORDER BY ?lp ?kms ?km

List kompetansemål (LK20), vis default-språk, men tving nordsamisk til å vise bokmål

Legg spesielt merke til avsnittet der vi binder nordsamisk (@sme) til bokmål (@nob). I denne spørringen har vi i tillegg listet opp tilgjengelige språk som tilhørende læreplan har (kolonnen helt til høyre i resultatet). Av kapasitetshensyn har vi også satt en LIMIT på 1000, men denne kan fjernes ved ved faktisk bruk (10.386 rader i skrivende stund).

# Alle kompetansemål (LK20) sortert etter læreplan, kompetansemålsett og rekkefølgen til kompetansemålet innenfor hvert  kompetansemålsett
# Har også lagt inn liste over hvilke tilgjengelige språk som læreplanen har
# Linje 17: Kan tas med ved behov (fjern da "#"). Tar da kun med publiserte læreplaner
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX st: <https://data.udir.no/kl06/v201906/status/status_>
PREFIX d: <http://psi.udir.no/kl06/>
select ?lpKode ?lpTittel ?status ?kmsKode ?kmsTittel ?kompKode ?kompTtittel ?urlData ?fastsattSpr (concat(group_concat(distinct ?sprk;separator=', ')) as ?spraak) where { 
	?komp a u:kompetansemaal_lk20 ;
          u:url-data ?urlData ;
          u:kode ?kompKode ;
          u:tittel ?kompTtittel ;
          u:rekkefoelge ?rekkefoelge ;
          u:tilhoerer-kompetansemaalsett ?kms ;
          u:tilhoerer-laereplan ?lp .
    ?lp u:kode ?lpKode ;
        u:status ?st ;
#        u:status st:publisert ;
        u:fastsatt-spraak ?fastsattSpr ;
        u:tilgjengelige-spraak ?spr ;
        u:tittel ?lpTittel .
    ?kms u:kode ?kmsKode ;
         u:kortform ?kmsTittel .
    ?spr u:kode ?sprk .
    BIND (
  IF(?st = st:publisert, str("publisert"), "utgått")
  	AS ?status
)
# BIND nedenfor (kombinert med filtrene nedenfor) tvinger nordsamiske titler til å vises i bokmål
 BIND (
        IF(?fastsattSpr = d:sme, "nob" , "default"
            ) AS ?spraak
    )   
    FILTER (lang(?kompTtittel) = ?spraak)
    FILTER (lang(?lpTittel) = ?spraak)
    FILTER (lang(?kmsTittel) = ?spraak)
} 
GROUP BY ?lpKode ?lpTittel ?status ?kmsKode ?kmsTittel ?kompKode ?kompTtittel ?urlData ?fastsattSpr
ORDER BY ?lpKode ?kms ?rekkefoelge
LIMIT 1000

List læreplaner (LK06) som er fastsatt av Kunnskapsdepartementet

prefix u: <http://psi.udir.no/ontologi/kl06/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT * WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:kode ?kode ;
u:fastsettelsestekst ?fastsatt_av .
    FILTER regex(str(?fastsatt_av), "av K", "i")
    FILTER (lang(?tittel) = "default")
    FILTER (lang(?fastsatt_av) = "default")
}

Antall publiserte læreplaner

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT (count (?telleobjekt) as ?antall) WHERE {
    ?telleobjekt a u:laereplan_lk20 ;
        u:status ?status .
    FILTER regex(str(?status), "publisert","i")
}

Antall læreplaner på et oppgitt språk/målform

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select (count (?telleobjekt) as ?antall) where {
    ?telleobjekt a u:laereplan_lk20;
                 u:tittel ?tittel ;
                 u:status ?status .
    FILTER regex(str(?status), "publisert","i")
FILTER (lang(?tittel) = "nob")
}

Læreplan (LK20) og fastsatt språk: Bokmåls- og nynorskandel

Antall læreplaner fastsatt på enten bokmål eller nynorsk (nordsamisk er trukket fra)

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
select  (COUNT(?nob) as ?antallBokmål) (COUNT(?nno) as ?antallNynorsk) (COUNT(*)as ?totBokmålOgNynorsk) where { 
    ?lp a u:laereplan_lk20 ;
    OPTIONAL{?lp u:fastsatt-spraak ?nob FILTER(?nob = d:nob)}
    OPTIONAL{?lp u:fastsatt-spraak ?nno FILTER(?nno = d:nno)}
    MINUS{?lp u:fastsatt-spraak ?sme FILTER(?sme = d:sme)}
}

Læreplan (LK20) og fastsatt språk: Andel fastsatt på bokmål nynorsk og nordsamisk

Antall læreplaner fastsatt på enten bokmål, nynorsk eller nordsamisk

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
select  (COUNT ( ?nob ) as ?antallBokmål) (COUNT ( ?nno ) as ?antallNynorsk) (COUNT (*) as ?totBokmålNynorskogNordsamisk) where { 
    ?lp a u:laereplan_lk20 ;
    OPTIONAL{?lp u:fastsatt-spraak ?nob FILTER(?nob = d:nob)}
    OPTIONAL{?lp u:fastsatt-spraak ?nno FILTER(?nno = d:nno)}
    OPTIONAL{?lp u:fastsatt-spraak ?sme FILTER(?sme = d:sme)}
}

Læreplan (LK06 og LK20) og fastsatt språk: Bokmåls- nynorsk og nordsamisk-andel

Antall læreplaner fastsatt på enten bokmål, nynorsk eller nordsamisk (filtrert på publiserte)

# Fordeling av fastsatt-språk alle læreplaner (kun status publisert)
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
select (COUNT(?nob) as ?antallBokmål) (COUNT(?nno) as ?antallNynorsk) (COUNT(?sme) as ?antallNordsamisk) (COUNT(?lp) as ?totBokmålNynorskOgNordsamisk) where { 
	{?lp a u:laereplan_lk20 ; u:status ?status } 
    UNION 
    { ?lp a u:laereplan ; u:status ?status}
    OPTIONAL{?lp u:fastsatt-spraak ?nob FILTER(?nob = d:nob)}
    OPTIONAL{?lp u:fastsatt-spraak ?nno FILTER(?nno = d:nno)}
    OPTIONAL{?lp u:fastsatt-spraak ?sme FILTER(?sme = d:sme)}
    FILTER REGEX(str(?status), "publisert", "i")
}

Hvilke fag har merkelappen "avviksfag"?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?fagkode ?tittel WHERE {
    ?fagkode a u:fagkode ;
             u:tittel ?tittel ;
             u:merkelapper ?merkelapp .
    FILTER regex(str(?merkelapp), "avvik", "i")
    FILTER (lang(?tittel) = "default")
} ORDER BY ?fagkode

Hvilke læreplaner (LK06) har merkelappen "valgfag"?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?laereplan ?tittel WHERE {
    ?laereplan a u:laereplan ;
               u:tittel ?tittel ;
               u:merkelapper ?merkelapp .
    FILTER regex(str(?merkelapp), "valg", "i")
    FILTER (lang(?tittel) = "default")
} ORDER BY  ?laereplan

Liste over fagkoder som har merkelapp

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT * WHERE {
    ?fagkode a u:fagkode ;
             u:tittel ?fagkodeTittel ;
             u:merkelapper ?merkelapp .
    FILTER (lang(?fagkodeTittel) = "default")
} ORDER BY ?fagkode ?merkelapp 

Liste over publiserte læreplaner (LK06) som har merkelapp

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?laereplan ?tittel ?merkelappTittel WHERE {
    ?laereplan a u:laereplan ;
               u:tittel ?tittel ;
               u:status ?status ;
               u:merkelapper ?merkelapp .    
    ?merkelapp u:tittel ?merkelappTittel .
    FILTER (regex(str(?status), "publisert")
        && (lang(?tittel) = "default")
        && (lang(?merkelappTittel) = "default"))
} ORDER BY ?laereplan ?merkelapp

Gitt en fagkode, gi meg gjeldende læreplan (LK06)

PREFIX d: <http://psi.udir.no/kl06/>
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?fagkodetittel ?lp ?lptittel  WHERE {
    d:NOR0214 u:opplaeringsfag/u:laereplan-referanse ?lp ;
              u:tittel ?fagkodetittel .
    ?lp u:tittel ?lptittel ;
        u:status ?lpStatus .
    FILTER (regex(str(?lpStatus), "publisert") 
        &&(lang(?lptittel) = "default") 
        && (lang(?fagkodetittel) = "default"))
} ORDER BY ?lp

List aarstrinn, sortert etter rekkefoelge-statementet

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?rekkefoelge ?aarstrinn ?tittel WHERE {
    ?aarstrinn a u:aarstrinn;
         u:rekkefoelge ?rekkefoelge;
         u:tittel ?tittel .
    FILTER (lang(?tittel) = "default")
} ORDER BY ?rekkefoelge

Gitt en fagkode, list gjeldende opplaeringsfag

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT ?fagkodetittel ?opplFag ?opplaeringsfag WHERE {
    d:NOR0214 u:tittel ?fagkodetittel ;
              u:opplaeringsfag ?opplFag .
    ?opplFag u:status ?opplFagStatus ;
             u:tittel ?opplaeringsfag.
    FILTER (regex(str(?opplFagStatus), "publisert")
    && (lang(?fagkodetittel) = "default")
    && (lang(?opplaeringsfag) = "default"))    
}

Fra opplæringsfag til trinn via kompetansemålsett v.1

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?opplaeringsfag ?kmstittel ?ksett ?opplaeringsfagtittel ?trinn WHERE {
    d:NOR1Z37 u:tittel ?opplaeringsfagtittel ;
              u:kode ?opplaeringsfag ;
              u:tilhoerende-kompetansemaalsett ?ksett .
    ?ksett u:etter-aarstrinn ?trinn ;
           u:tittel ?kmstittel .
    FILTER (
        (lang(?opplaeringsfagtittel) = 'default')
        && (lang(?kmstittel) = 'default')
    )
}

Fra opplæringsfag til trinn via kompetansemålsett v.2

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?trinn WHERE {
d:NOR1Z37 u:tilhoerende-kompetansemaalsett/u:etter-aarstrinn ?trinn .
}

List kompetansemål for en gitt læreplan (sortert på trinn og kompetansemålsett

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX kode: <http://psi.udir.no/kl06/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?trinn ?kms ?km ?kmtittel WHERE {
    ?km u:tilhoerer-laereplan d:NOR01-06 ;
        u:tittel ?kmtittel ;
        u:rekkefoelge ?kmOrder ; # denne linjen fjernes hvis LK06-plan
        u:tilhoerer-kompetansemaalsett ?kms .
    ?kms u:etter-aarstrinn ?trinn .
    ?trinn u:rekkefoelge ?trinnOrder .
    FILTER (lang(?kmtittel) = "default")
} ORDER BY ?trinnOrder ?kms ?kmOrder # ?kmOrder byttes til ?km hvis LK06-plan

Hvilke trinn gjelder læreplanen for?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?trinn WHERE {
    d:SAS1-04 u:kompetansemaalsett/u:etter-aarstrinn ?aarstrinn .
    ?aarstrinn u:rekkefoelge ?trinnOrder ;
               u:tittel ?trinn .
    FILTER (lang(?trinn) = "default")
} ORDER BY ?trinnOrder

Fra kompetansemål til læreplan

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT ?kmkode ?kompetansemaal ?kmstittel ?laereplan ?lpkode
WHERE {
    d:KM1256 u:tittel ?kompetansemaal ;  # prøv også d:K15426 for et LK06-kompetansemål
             u:kode ?kmkode ;
             u:tilhoerer-laereplan ?lp ;
             u:tilhoerer-kompetansemaalsett ?kms .
    ?kms u:tittel ?kmstittel .
    ?lp u:tittel ?laereplan ;
        u:kode ?lpkode .
    FILTER (
        (lang(?kompetansemaal) = "default")
        && (lang(?kmstittel) = "default")
        && (lang(?laereplan) = "default")
    )
}

Fra kompetansemål til trinn

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT ?tittel ?etterAarstrinn ?benyttesPaaAarstrinn WHERE {
    d:KM1 u:tittel ?tittel ;
             u:tilhoerer-kompetansemaalsett/u:etter-aarstrinn ?etterTrinn ;
             u:tilhoerer-kompetansemaalsett/u:benyttes-paa-aarstrinn ?benyttesPaa .
    ?etterTrinn u:tittel ?etterAarstrinn .
    ?benyttesPaa u:tittel ?benyttesPaaAarstrinn ;
                 u:rekkefoelge ?trinnOrder .
    FILTER (
        (lang(?tittel) = 'default')
        && (lang(?etterAarstrinn) = 'default')
        && (lang(?benyttesPaaAarstrinn) = 'default')
    )
} ORDER BY ?trinnOrder

Fra fagområde til læreplan

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?lp ?type ?tittel ?status WHERE {
    [] a u:opplaeringsfag;
        u:fagomraade-referanser d:FOMR404 ;
        u:laereplan-referanse ?lp .
    ?lp u:tittel ?tittel ;
        u:status ?st ;
        u:grep-type ?type .
    BIND(STRAFTER(str(?st), "/status/status_") as ?status)
    FILTER (lang(?tittel) = "default")
} ORDER BY ?type ?lp  ?status 

I hvilke fag (fagkoder) gis det undervisning første semester 2022?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?fagkode ?tittel WHERE {
    ?fagkode a u:fagkode ;
             u:tittel ?tittel ;
             u:naar-gis-det-undervisning-foerste-semester ?foerstesemester .
    FILTER regex(str(?foerstesemester), "semester_hoest_2022", "i")
    FILTER (lang(?tittel) = "default")
} ORDER BY ?fagkode

I hvilke programområder gis det undervisning første semester 2022?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?po ?tittel WHERE {
    ?po a u:programomraade ;
             u:tittel ?tittel ;
             u:url-data ?kode ;
             u:foerste-semester ?foerstesemester .
    FILTER (
        REGEX(str(?foerstesemester), "2022", "i")
        && (lang(?tittel) = "default")
        )
} ORDER BY ?po

I hvilke utdanningsprogram gis det undervisning første semester 2016?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?up ?tittel WHERE {
    ?up a u:utdanningsprogram ;
         u:tittel ?tittel ;
         u:foerste-semester ?foersteSemester .
    FILTER (
        (lang(?tittel) = "default")
        && regex(str(?foersteSemester), "2016", "i")
    )
} ORDER BY ?up

Liste utdanningsprogram, fagtype, sluttkompetanse og yrkestittel

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?up ?po ?poTittel ?lp ?fagtype ?sluttkompetanse ?yrkesTittel WHERE {
    ?opplaeringsfag a u:opplaeringsfag ;
                    u:status ?ofstatus ;
                    u:programomraader-referanse ?po ;
                    u:fagtype ?fagtype ;
                    u:status ?poStatus ;
                    u:laereplan-referanse ?lp .
    ?po u:tittel ?poTittel ;
        u:utdanningsprogram-referanse ?up ;
        u:sluttkompetanse ?sluttkompetanse ;
        u:yrkestittel ?yrkesTittel ;
        u:status ?upStatus .
    FILTER (
        regex(str(?fagtype), "program", "i")
        && regex(str(?poStatus), "publisert", "i")
        && (lang(?poTittel) = "default")
        && (lang(?yrkesTittel) = "default")
    )
}
ORDER BY ?up ?po ?lp ?poStatus

Gyldige kryssløp det kan søkes på i et gitt tidspunkt (et-litt-vrient-SPARQL-case)

Se artikkelen Gyldige-kryssløp-det-kan-søkes-på-i-et-gitt-tidspunkt-(et-litt-vrient-SPARQL-case)

Liste over læreplaner for kun yrkesfag (uten fellesfag)

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?up ?po ?lpKode ?tittel WHERE {
    ?opplaeringsfag a u:opplaeringsfag ;
                    u:fagtype ?fagtype ;
                    u:programomraader-referanse ?po ;
                    u:status ?ofStatus ;
                    u:tilhoerende-kompetansemaalsett ?sett ;
                    u:laereplan-referanse ?lp .
    ?po u:utdanningsprogram-referanse ?up .
    ?up u:type-utdanningsprogram ?uptype .
    ?lp u:kode ?lpKode ;
        u:status ?status ;
        u:tittel ?tittel .
    FILTER (
        regex(str(?ofStatus), "publisert", "i")
        && regex(str(?fagtype), "program", "i")
        && regex(str(?uptype), "yrke", "i")
        && regex(str(?status), "publisert", "i")
        && (lang(?tittel) = "default")
    )
} ORDER BY ?up ?po ?lpKode ?lpTittel

Liste over læreplaner som foreligger både på bokmål og nynorsk (LK06 og LK20)

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?lp ?nobTittel ?nnoTittel ?fastsattSpraak WHERE {
    [] a u:opplaeringsfag ; u:laereplan-referanse ?lp .
    ?lp u:tittel ?nobTittel ;
        u:tittel ?nnoTittel ;
        u:fastsatt-spraak ?fastsattSpraak .
    FILTER (
        (lang(?nobTittel) = "nob")
        && (lang(?nnoTittel) = "nno")
    )
} ORDER BY ?lp ?fastsattSpraak 

Antall kompetansemål pr. publiserte læreplan (LK20)

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?lp ?lpTittel (COUNT(?km) AS ?antKm)  where { 
	?km a u:kompetansemaal_lk20 ;
     u:tilhoerer-laereplan ?lp .
    ?lp u:tittel ?lpTittel ;
        u:status ?status .
    FILTER (
        (lang(?lpTittel) = "default")
        && regex(str(?status), "publisert", "i")
    )     
} GROUP BY ?lp ?lpTittel
ORDER BY DESC(?antKm)

SPARQL-spørringer som tilsvarer spesialspørringene i REST

Henter ut alle programområder for en fagkode

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX d:<http://psi.udir.no/kl06/>
SELECT  ?po ?poStatus ?poTittel WHERE {
    d:AMB2002 u:opplaeringsfag/u:programomraader-referanse ?po .
    ?po u:tittel ?poTittel ;
        u:status ?st ;
        u:kode ?kode ;
        u:url-data ?url_data .
    BIND(STRAFTER(str(?st), "/status/status_") as ?poStatus)
    FILTER (lang(?poTittel) = "default")
} ORDER BY ?poStatus ?po

Henter ut alle programområder for et opplæringsfag

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT ?opplaeringsfagTittel ?programomraader ?programomraadeTittel WHERE {
    d:AMB2Z02 u:tittel ?opplaeringsfagTittel ;
              u:programomraader-referanse ?programomraader .
    ?programomraader u:tittel ?programomraadeTittel .
    FILTER (
        (lang(?opplaeringsfagTittel) = "default")
        && (lang(?programomraadeTittel) = "default")
    )
}

Henter ut alle læreplaner for et programområde

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT ?laereplan ?lpTittel WHERE {
    ?laereplan a u:laereplan ;
               u:tittel ?lpTittel ;
               u:kompetansemaalsett/u:etter-fag/u:programomraader-referanse ?programomraade .
    ?programomraade u:uri d:DHTRB3---- .
    FILTER (lang(?lpTittel) = "default")
} ORDER BY  ?laereplan

Hent alle opplæringsfag for prograomområde med presisering av fagtype

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?of ?ofTittel ?fagtypeTittel  WHERE {
    ?of a u:opplaeringsfag ;
        u:programomraader-referanse d:DHTRB3---- ;
        u:tittel ?ofTittel ;
        u:fagtype ?fagtype .
    ?fagtype u:tittel ?fagtypeTittel .
    FILTER (
        (lang(?ofTittel) = "default")
        && REGEX(str(?fagtype), "felles_programfag")
        && (lang(?fagtypeTittel) = "default")
    ) 
}

Hent alle opplaeringsfag for fagkode med presisering av fagtype

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?opplaeringsfag ?tittel WHERE {
    ?fagkode u:uri d:AMB2002 ;
             u:opplaeringsfag ?opplaeringsfag ;
             u:fagtype ?fagtype .
    ?opplaeringsfag u:tittel ?tittel .
    FILTER (
        regex(str(?fagtype), "fagtype_felles_programfag")
        && (lang(?tittel) = "default")
    )
}

Hent alle fagkoder for programområde med presisering av fagtype

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?fagkode ?tittel WHERE {
    ?fagkode a u:fagkode ;
             u:tittel ?tittel  ;
             u:fagtype d:fagtype_fellesfag ;
             u:opplaeringsfag/u:programomraader-referanse d:BABAT1---- .
    FILTER (lang(?tittel) = "default")
}
ORDER BY ?fagkode

Hent forskjeller i kompetansemål for læreplan A og B

prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?lptittel ?lpA ?lpB ?kode ?kmtekst ?kompetansemaalsett WHERE {
    {
        ?kompetansemaal a u:kompetansemaal ;
                        u:tittel ?kmtekst ;
                        u:kode ?kode ;
                        u:url-data ?data ;
                        u:grep-type ?type ;
                        u:tilhoerer-laereplan ?lpA ;
                        u:tilhoerer-kompetansemaalsett ?kms .
        ?kms u:tittel ?kompetansemaalsett .
        ?lpA u:uri d:NOR1-04 ;
             u:tittel ?lptittel .
        FILTER (
            (lang(?kompetansemaalsett) = "default")
            && (lang(?lptittel) = "default")
            && (lang(?kmtekst) = "default")
        )
        }
    UNION
    {
        ?kompetansemaal a u:kompetansemaal ;
                        u:tittel ?kmtekst ;
                        u:kode ?kode ; 
                        u:url-data ?data ;
                        u:grep-type ?type ;
                        u:tilhoerer-laereplan ?lpB ;
                        u:tilhoerer-kompetansemaalsett ?kms .
        ?kms u:tittel ?kompetansemaalsett ;
             u:tilhoerer-laereplan ?lpB .
        ?lpB u:uri d:NOR1-05 ;
             u:tittel ?lptittel .
        FILTER (
            (lang(?kompetansemaalsett) = "default")
            && (lang(?lptittel) = "default")
            && (lang(?kmtekst) = "default")
        )
    }
}
ORDER BY ?kmtekst ?kompetansemaalsett ?lpA ?lpB

Som over, men sammenligner en LK06-plan med en LK20-plan

prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix d: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?lptittel ?lpA ?lpB ?kode ?kmtekst ?kompetansemaalsett WHERE {
    {
        ?kompetansemaal rdf:type u:kompetansemaal ;
                        u:tittel ?kmtekst ;
                        u:kode ?kode ; 
                        u:url-data ?data ;
                        u:grep-type ?type ;
                        u:tilhoerer-laereplan ?lpA ;
                        u:tilhoerer-kompetansemaalsett ?kms .
        ?kms u:tittel ?kompetansemaalsett .
        ?lpA u:uri d:NOR1-05 ;
             u:tittel ?lptittel .
        FILTER (
            (lang(?kompetansemaalsett) = "default")
            && (lang(?lptittel) = "default")
            && (lang(?kmtekst) = "default")
        )
    }
    UNION
    {
        ?kompetansemaal a u:kompetansemaal_lk20 ;
                        u:tittel ?kmtekst ;
                        u:kode ?kode ; 
                        u:url-data ?data ;
                        u:grep-type ?type ;
                        u:tilhoerer-laereplan ?lpB ;
                        u:tilhoerer-kompetansemaalsett ?kms .
        ?kms u:tittel ?kompetansemaalsett .
        ?lpB u:uri d:NOR01-06 ;
             u:tittel ?lptittel .
        FILTER (
            (lang(?kompetansemaalsett) = "default")
            && (lang(?lptittel) = "default")
            && (lang(?kmtekst) = "default")
        )
    }
}
ORDER BY ?kmtekst ?kompetansemaalsett ?lpA ?lpB

Liste over siste publiserte endringer

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/> 
SELECT DISTINCT ?uri ?kode ?type ?tittel ?sistEndret WHERE {
    ?uri u:kode ?kode ;
         u:tittel ?tittel ;
         u:grep-type ?type ;
         u:sist-endret ?sistEndret ;
         u:url-data ?restUrl .
    FILTER (lang(?tittel) = "default")
} 
ORDER BY DESC(?sistEndret) 
LIMIT 100