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

Dette er en utgått versjon. Gå til Samling av SPARQL spørringer

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 { 
?s rdf:type ?type 
}

eller

SELECT DISTINCT ?type
WHERE { 
?s rdf:type ?type 
}

eller

SELECT DISTINCT ?type { ?s a ?type }

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

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

List opp alle properties

SELECT DISTINCT ?property
WHERE {
  ?s ?property ?o .
}

Mer matnyttig: Hvilke properties blir brukt av en bestemt type

SELECT DISTINCT ?property
WHERE {
  ?s a <http://psi.udir.no/ontologi/kl06/laereplan>;
     ?property ?o .
}

List opp hva et gitt element har (url-data)

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?p ?o WHERE {
?psi u:url-data <https://data.udir.no/kl06/v201906/laereplaner/NOR1-05> ;
     ?p ?o
}

Statistikk

Antall tripler

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

Antall entiteter

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

Antall typer

SELECT (COUNT(distinct ?o) AS ?typer) { ?s rdf:type ?o }

Antall distinkte predikater

SELECT (COUNT(distinct ?p) AS ?predikater) { ?s ?p ?o }

Antall distinkte subjekt-noder

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

Antall distinkte objekt-noder

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 ;
rdf:type ?type ;
u:id ?uuid
FILTER (lang(?tittel) = "default")
} ORDER BY str(?kode)
# endring: putt uuid-referansen inni "", i stedet for <> (behandles som streng og ikke url)

List alle av typen laereplan i default-språket

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT  ?tittel ?kode WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:url-data ?kode .
FILTER (lang(?tittel) = "default")
} ORDER BY ?kode ?tittel
# endring: Filteret må eksplisitt definere "default" (tidligere var dette bare skrevet som "")

Samme som over, men filtrert på status publisert

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT  ?tittel ?kode WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:status ?status ;
u:url-data ?kode .
    FILTER REGEX(str(?status), "publisert", "i")
FILTER (lang(?tittel) = "default")
} ORDER BY ?kode ?tittel
# endring: REGEX-filteret krever "str" for å gjøre om til streng hvis du vil filtrere på noe som er url - og ?status er i dette tilfellet returnert som url
# endring: Filteret må eksplisitt definere "default" (tidligere var dette bare skrevet som en tom streng: "")

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?tittel ?kode WHERE {
?laereplan rdf:type u:laereplan ;
u:tittel ?tittel ;
u:url-data ?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 ?tittel ?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 ?tittel ?kode WHERE {
?laereplan rdf:type u:laereplan ;
u:uri ?uri;
u:tittel ?tittel ;
u:url-data ?kode ;
u:status ?status .
MINUS { ?laereplan u:har-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 { ?x u:tittel  "Læreplan i norsk"@nob ;
            u:tittel  ?tittel .
         FILTER langMatches(lang(?tittel), "eng" )
}

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

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode:<http://psi.udir.no/kl06/>
SELECT DISTINCT ?soeketekst ?data ?type ?lptittel WHERE {
{
?kompetansemaal rdf:type 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 rdf:type 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 rdf:type 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(?soeketekst, "i forhold til", "i")
} ORDER BY ?type ?data

Tekstsøk i "kompetansemaal" for å finne læreplan

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?kmkode ?kmtekst ?laereplantittel ?laereplan WHERE {
?kompetansemaal rdf:type u:kompetansemaal ;
    u:tittel ?kmtekst ;
    u:kode ?kmkode ;
#   u:tilhoerende-kompetansemaalsett ?kms .  | erstattes med linjen nedenfor i repo: NavnFiksing i http://sandkasse-data.udir.no:7200/sparql
    u:tilhoerer-kompetansemaalsett ?kms .
?kms u:etter-fag ?opplaeringsfag .
?opplaeringsfag u:laereplan-referanse ?laereplan .
?laereplan u:tittel ?laereplantittel .
    FILTER regex(?kmtekst, "i forhold til", "i")
    FILTER (lang(?kmtekst) = "default")
    FILTER (lang(?laereplantittel) = "default")
 } ORDER BY ?laereplan ?kmkode

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

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select DISTINCT ?tittel1 (concat(group_concat(distinct ?km2;separator=', ')) as ?kompArray) (COUNT (distinct ?k2 ) as ?antLike) where {
#  Hvis du vil vise ?komp2 som array    (concat('[',group_concat(distinct ?km2;separator=','),']') as ?komp2)
    ?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/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
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)
    FILTER (?k1 != ?k2)
    
#    FILTER (?lp1 != ?lp2)
} 
GROUP BY ?tittel1 
ORDER BY DESC(?antLike2) DESC(?antLike1)

Kompetansemål som er koblet til flere gitte 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 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(?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 rdf:type u:laereplan ;
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 rdf:type
u:laereplan;
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/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?tittel ?kode WHERE {
?fagkode rdf:type u:fagkode ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:merkelapper ?merkelapp .
FILTER regex(str(?merkelapp), "avvik", "i")
FILTER (lang(?tittel) = "default")
} ORDER BY ?kode

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?tittel ?kode ?laereplan WHERE {
?laereplan rdf:type u:laereplan ;
u:tittel ?tittel ;
u:kode ?kode ;
u:merkelapper ?merkelapp .
FILTER regex(str(?merkelapp), "valg", "i")
FILTER (lang(?tittel) = "default")
} ORDER BY ?tittel ?kode

Liste over fagkoder som har merkelapp

prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT * WHERE {
?fagkode rdf:type u:fagkode ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:merkelapper ?merkelapp .
FILTER (lang(?tittel) = "default")
} ORDER BY ?merkelapp ?kode

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?tittel ?kode ?mtittel WHERE {
?laereplan rdf:type u:laereplan ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:status ?status ;
u:merkelapper ?merkelapp .
FILTER regex(str(?status), "publisert")
FILTER (lang(?tittel) = "default")
?merkelapp u:tittel ?mtittel .
FILTER (lang(?mtittel) = "default")
} ORDER BY ?laereplan ?merkelapp ?kode

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 ?fagkodetittel ?zkode ?ztittel ?lp ?lptittel  WHERE {
d:NOR0214 u:tittel ?fagkodetittel ;
u:opplaeringsfag ?zkode
FILTER (lang(?fagkodetittel) = 'default') .
 
?kms u:etter-fag ?zkode ;
    u:tittel ?ztittel ;
    u:status ?zstatus .
    FILTER (lang(?ztittel) = "default")
    FILTER regex(str(?zstatus), "publisert")
 
?zkode u:laereplan-referanse ?lp ;
    u:tittel ?lptittel ;
    u:url-data ?lplink ;
    u:status ?lpstatus .
    FILTER (lang(?lptittel) = "default")
    FILTER regex(str(?lpstatus), "publisert")
}

Gitt en fagkode, gi meg gjeldende læreplan (både LK06 og LK20)

PREFIX d: <http://psi.udir.no/kl06/>
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?fagkodetittel ?zkode ?ztittel ?lp ?lplink ?lptype WHERE {

d:NOR1231 u:tittel ?fagkodetittel ;
    u:opplaeringsfag ?zkode .
FILTER (lang(?fagkodetittel) = 'default')

?zkode u:laereplan-referanse ?lp ;
    u:tittel ?ztittel ;
    u:status ?lpstatus .
    FILTER (lang(?ztittel) = 'default')
    FILTER regex(str(?lpstatus), "publisert")

?lp u:url-data ?lplink ;
#    a ?lptype . (bare en variant av linjen under (samme som rdf:type))
    u:grep-type ?lptype .
#    a u:laereplan_lk20 . (hvis du vil filtrere på LK20-planer, evt "a u:laereplan" hvis kun LK06)
}

List aarstrinn

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

List aarstrinn, sortert etter rekkefoelge-statementet

prefix u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?url ?tittel WHERE {
?url rdf:type 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 kode: <http://psi.udir.no/kl06/>
 
SELECT ?fagkode ?fagkodetittel ?zkode ?opplaeringsfag WHERE {
kode:NOR0214 u:tittel ?fagkodetittel ;
u:uri ?fagkode ;
u:tittel ?fagkodetittel .
    FILTER (lang(?fagkodetittel) = "default")
     
?fagkode u:opplaeringsfag ?zkode ;
u:status ?zstatus ;
u:tittel ?opplaeringsfag.
    FILTER (lang(?opplaeringsfag) = "default")
    FILTER regex(str(?zstatus), "publisert")
}

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

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

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

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

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

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#>
SELECT DISTINCT ?lpkode ?lptittel ?trinn ?kms ?km ?kmtittel
WHERE {
# ?km u:laereplan-referanser ?lp ;
?km u:tilhoerer-laereplan ?lp ;
    u:tittel ?kmtittel ;
#   u:tilhoerende-kompetansemaalsett ?kms .
    u:tilhoerer-kompetansemaalsett ?kms .
    FILTER (lang(?kmtittel) = "default")
    FILTER regex(str(?lp), "NOR1-05", "i")
?lp u:tittel ?lptittel ;
    u:kode ?lpkode
    FILTER (lang(?lptittel) = "default")
?kms u:etter-aarstrinn ?trinn .
    ?trinn u:rekkefoelge ?trinnorder
} ORDER BY ?trinnorder ?kms ?km

Hvilke trinn gjelder læreplanen for?

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX kode: <http://psi.udir.no/kl06/>
PREFIX d: <http://data.udir.no/ontologi/kl06>
 
SELECT DISTINCT ?lptittel ?trinn
WHERE {
kode:SAS1-04 u:uri ?lp ;
u:tittel ?lptittel ;
u:kompetansemaalsett ?kompetansemaalsett .
FILTER (lang(?lptittel) = 'default')
 
?kompetansemaalsett u:etter-aarstrinn ?aarstrinn ;
u:kompetansemaal ?km .
?aarstrinn u:rekkefoelge ?trinnorder ;
u:tittel ?trinn .
FILTER (lang(?trinn) = 'default')
 
?km u:tittel ?kmtittel .
FILTER (lang(?kmtittel) = 'default')
 
# ?km u:tilhoerende-kompetansemaalsett ?kms .
?km u:tilhoerer-kompetansemaalsett ?kms .
 
}
ORDER BY ?trinnorder ?kms ?km

Fra kompetansemål til læreplan

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX kode: <http://psi.udir.no/kl06/>
 
SELECT ?kmkode ?kompetansemaal ?kmstittel ?laereplan ?lpkode
WHERE {
 
kode:K15426 u:tittel ?kompetansemaal ;
u:kode ?kmkode ;
# u:laereplan-referanser ?lp ;
u:tilhoerer-laereplan ?lp ;
# u:tilhoerende-kompetansemaalsett ?kms .
u:tilhoerer-kompetansemaalsett ?kms .
 
?kms u:tittel ?kmstittel .
FILTER (lang(?kompetansemaal) = 'default')
FILTER (lang(?kmstittel) = 'default')
 
?lp u:tittel ?laereplan ;
u:kode ?lpkode .
FILTER (lang(?laereplan) = 'default')
}

Fra kompetansemål til trinn

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX kode: <http://psi.udir.no/kl06/>
 
SELECT ?tittel ?trinn WHERE {
kode:K1 u:tittel ?tittel ;
# u:tilhoerende-kompetansemaalsett ?kms .
u:tilhoerer-kompetansemaalsett ?kms .
FILTER (lang(?tittel) = 'default')
 
?kms u:benyttes-paa-aarstrinn ?tr .
 
?tr u:tittel ?trinn .
FILTER (lang(?trinn) = 'default')
}

Fra fagområde til læreplan

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
PREFIX d: <http://psi.udir.no/kl06/>
 
SELECT DISTINCT ?lp ?tittel ?status
WHERE {
?of rdf:type u:opplaeringsfag;
    u:fagomraade-referanser d:FOMR404 ;
    u:laereplan-referanse ?lp .
?lp u:tittel ?tittel ;
    u:grep-type ?type ;
    u:status ?status
    FILTER (lang(?tittel) = "default")

} ORDER BY ?type ?lp

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

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

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
 
SELECT ?tittel ?kode WHERE {
?fagkode rdf:type u:programomraade ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:foerste-semester ?foerstesemester .
FILTER regex(str(?foerstesemester), "2017", "i")
FILTER (lang(?tittel) = "default")
} ORDER BY ?kode

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
 
SELECT ?tittel ?kode WHERE {
?uri rdf:type u:utdanningsprogram ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:foerste-semester ?foerstesemester .
FILTER (lang(?tittel) = "default")
FILTER regex(str(?foerstesemester), "2016", "i")
} ORDER BY ?kode

Liste utdanningsprogram, fagtype, sluttkompetanse og yrkestittel

prefix u: <http://psi.udir.no/ontologi/kl06/>
 
SELECT DISTINCT ?up ?po ?po_tittel ?lp ?fagtype ?sluttkompetanse ?y_tittel WHERE {
?opplaeringsfag rdf:type u:opplaeringsfag ;
u:status ?ofstatus ;
u:tittel ?oftittel ;
u:programomraader-referanse ?po ;
u:fagtype ?fagtype ;
u:status ?po_status ;
u:laereplan-referanse ?lp .
# r:etter-fag ?kms .
 
?po u:tittel ?po_tittel .
 
# ?kms r:har-kompetansemaalsett ?lp .
FILTER regex(str(?fagtype), "program", "i")
 
?po u:utdanningsprogram-referanse ?up ;
u:sluttkompetanse ?sluttkompetanse ;
u:yrkestittel ?y_tittel ;
u:status ?upstatus .
 
FILTER regex(str(?po_status), "publisert", "i")
FILTER (lang(?oftittel) = "default")
FILTER (lang(?po_tittel) = "default")
FILTER (lang(?y_tittel) = "default")
}
ORDER BY ?up ?po ?lp ?po_status
 
# endringer: Henter ?lp fra ?opplaeringsfag (i stedet for ?kms)

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
 
SELECT DISTINCT ?kode ?tittel ?up ?po WHERE {
?opplaeringsfag rdf:type u:opplaeringsfag ;
u:fagtype ?fagtype ;
u:programomraader-referanse ?po ;
u:status ?ofagstatus .
FILTER regex(str(?ofagstatus), "publisert", "i")
FILTER regex(str(?fagtype), "program", "i")
?po u:utdanningsprogram-referanse ?up .
?up u:type-utdanningsprogram ?uptype .
FILTER regex(str(?uptype), "yrke", "i")
?opplaeringsfag u:tilhoerende-kompetansemaalsett ?sett ;
u:laereplan-referanse ?lp .
#   u:tilhoerer-laereplan ?lp .     | Kandidat til å erstatte linjen over, hvis vi ønsker harmonering av LP-referanser i andre typer (f.eks tilsvarende i KMS)
# ?sett r:har-kompetansemaalsett ?lp .
?lp u:kode ?kode ;
u:status ?status ;
u:tittel ?tittel .
FILTER regex(str(?status), "publisert", "i")
FILTER (lang(?tittel) = "default")
} ORDER BY ?up ?po ?kode ?tittel
 
# endring: henter ?lp fra ?opplaeringsfag i stedet for ?sett

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

prefix u: <http://psi.udir.no/ontologi/kl06/>
 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT  ?kode ?nobtittel ?nnotittel ?fastsatt_sprak WHERE {
{?uri rdf:type u:laereplan_lk20 ;
u:tittel ?nobtittel ;
u:tittel ?nnotittel ;
u:fastsatt-spraak ?fastsatt_sprak ;
u:url-data ?kode .
FILTER (lang(?nobtittel) = "nob")
FILTER (lang(?nnotittel) = "nno")
}
    UNION
{?uri rdf:type u:laereplan ;
u:tittel ?nobtittel ;
u:tittel ?nnotittel ;
u:fastsatt-spraak ?fastsatt_sprak ;
u:url-data ?kode .
FILTER (lang(?nobtittel) = "nob")
FILTER (lang(?nnotittel) = "nno")
}
}ORDER BY ?fastsatt_sprak ?kode

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

PREFIX u: <http://psi.udir.no/ontologi/kl06/>

SELECT DISTINCT ?kode ?nobtittel ?nnotittel ?fastsatt_sprak ?type WHERE {
    ?of rdf:type u:opplaeringsfag;
        u:laereplan-referanse ?lp .
    ?lp u:tittel ?nobtittel ;
        u:tittel ?nnotittel ;
	u:fastsatt-spraak ?fastsatt_sprak ;
	u:url-data ?kode ;
    	u:grep-type ?type .
FILTER (lang(?nobtittel) = "nob")
FILTER (lang(?nnotittel) = "nno")
} ORDER BY ?fastsatt_sprak ?kode

Antall kompetansemål pr. publiserte læreplan

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

Øvelse: Ny variabel-tildeling med strengmanipulering og regulære uttrykk (regex)

Her ønsker vi å bare få ut årstallet fra strengen "sist-endret" for læreplaner

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
select ?lp ?dato (substr((?dato), 1, 4) AS ?år)
# (SUBSTR((REPLACE(STR(?dato),"[^0-9]", "")), 1, 4) AS ?år)
# REPLACE er ikke nødvendig, siden vi vet at de fire siste er tall
where  { 
	?lp a u:laereplan ;
          u:sist-endret ?dato .
#        FILTER REGEX (?dato, "[0-9]{4}")
# linjen over gir ikke mening hos oss, siden vi har kontroll på at de fire første tegnene
# er tall for alle verdier av "u:sist-endret"
} ORDER BY DESC(?år)
LIMIT 10

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

Henter ut alle programområder for et fag

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode:<http://psi.udir.no/kl06/>
 
SELECT ?status ?kode ?uri ?url_data ?tittel WHERE {
 
?fagkode rdf:type u:fagkode ;
u:opplaeringsfag ?via_opplaeringsfag .
FILTER regex(str(?fagkode), "AMB2002", "i")
 
?via_opplaeringsfag u:programomraader-referanse ?uri .
?uri u:tittel ?tittel ;
u:status ?status ;
u:kode ?kode ;
u:url-data ?url_data .
FILTER (lang(?tittel) = "default")
}

Henter ut alle programområder for et opplæringsfag

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode:<http://psi.udir.no/kl06/>
SELECT ?opplaeringsfag ?opplaeringsfagtittel ?programomraader ?programomraadetittel WHERE {
?opplaeringsfag ?p kode:AMB2Z02 .
?opplaeringsfag u:tittel ?opplaeringsfagtittel ;
u:programomraader-referanse ?programomraader ;
u:tittel ?programomraadetittel .
FILTER (lang(?opplaeringsfagtittel) = "default")
FILTER (lang(?programomraadetittel) = "default")
}

Henter ut alle læreplaner for et programområde

PREFIX u: <http://psi.udir.no/ontologi/kl06/>
 
SELECT DISTINCT ?laereplan ?tittel WHERE {
?laereplan rdf:type u:laereplan ;
u:tittel ?tittel ;
u:kode ?lpkode ;
u:kompetansemaalsett ?kompetansemaalsett.
?kompetansemaalsett u:etter-fag ?opplaeringsfag .
?opplaeringsfag u:programomraader-referanse ?programomraade .
?programomraade u:kode ?programomraade_kode ;
u:tittel ?opplfag_tittel .
FILTER regex(?programomraade_kode, "DHTRB3----")
FILTER (lang(?tittel) = "default")
} ORDER BY  ?laereplan

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

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode:<http://psi.udir.no/kl06/>
SELECT DISTINCT ?of ?tittel WHERE {
 ?of  ?o kode:DHTRB3---- .
 ?of u:grep-type u:opplaeringsfag ;
     u:tittel ?tittel ;
     ?b ?fagtype .
    FILTER (lang(?tittel) = "default")
    FILTER REGEX(str(?fagtype), "felles_programfag")
?fagtype u:tittel ?fagtypetittel
    FILTER (lang(?fagtypetittel) = "default")
}
# endring: Starter heller med elementer som har PO-koden som objekt (linje 4) (som blant annet fanger opp opplaeringsfag),
# og deretter fanger opp opplaeringsfag (linje 5)
# fordi vi mangler referanse fra programfagt til opplaeringsfag

Hent alle opplaeringsfag for fag med presisering av fagtype

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode:<http://psi.udir.no/kl06/>
SELECT DISTINCT ?opplaeringsfag ?tittel WHERE {
?fagkode u:uri kode:AMB2002 ;
u:opplaeringsfag ?opplaeringsfag ;
u:fagtype ?fagtype .
?opplaeringsfag u:tittel ?tittel .
FILTER regex(str(?fagtype), "fagtype_felles_programfag")
FILTER (lang(?tittel) = "default")
}
# endring: I linje 4, erstattet ?p-variabel med u:uri for å eliminere treff med "benyttes-sammen-med"

Hent alle fagkoder for programområde med presisering av fagtype

PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode:<http://psi.udir.no/kl06/>
 
SELECT DISTINCT ?fagkode ?tittel WHERE {
?fagkode rdf:type u:fagkode ;
u:tittel ?tittel  ;
u:fagtype kode:fagtype_fellesfag ;
u:opplaeringsfag ?opplaeringsfag.
FILTER (lang(?tittel) = "default")
?opplaeringsfag u:programomraader-referanse ?programomraade .
 
?programomraade u:kode ?programomraadekode .
FILTER regex(str(?programomraadekode), "BABAT1----")
}
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/>
 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
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:laereplan-referanser ?lpA ;
  u:tilhoerende-kompetansemaalsett ?kms .
 
  ?kms u:tittel ?kompetansemaalsett .
  FILTER (lang(?kompetansemaalsett) = "default")
 
#  ?kms r:kompetansemaalsett ?lpA .
  ?lpA u:uri d:NOR1-04 ;
  u:tittel ?lptittel .
  FILTER (lang(?lptittel) = "default")
  FILTER (lang(?kmtekst) = "default")
}
UNION
{
  ?kompetansemaal rdf:type u:kompetansemaal ;
  u:tittel ?kmtekst ;
  u:kode ?kode ; u:url-data ?data ;
  u:grep-type ?type ;
#  u:laereplan-referanser ?lpB ;
  u:tilhoerer-laereplan ?lpB ;
#  u:tilhoerende-kompetansemaalsett ?kms .
  u:tilhoerende-kompetansemaalsett ?kms .
 
  ?kms u:tittel ?kompetansemaalsett .
  FILTER (lang(?kompetansemaalsett) = "default")
 
  ?kms r:kompetansemaalsett ?lpB .
  ?lpB u:uri d:NOR1-05 ;
  u:tittel ?lptittel .
  FILTER (lang(?lptittel) = "default")
  FILTER (lang(?kmtekst) = "default")
}
}
ORDER BY ?kmtekst ?kompetansemaalsett ?lpA ?lpB

# endringer: fjernet linje 17, erst med linje 11
# og fjernet linje 36, ertattet med linje 30
# fordi vi ikke har KMS -> LP-referanse
# Edit 2021-05-20: NB: LP-referanse for KMS er på vei

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/>
  
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
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 .
  FILTER (lang(?kompetansemaalsett) = "default")
  
  ?lpA u:uri d:NOR1-05 ;
  u:tittel ?lptittel .
  FILTER (lang(?lptittel) = "default")
  FILTER (lang(?kmtekst) = "default")
}
UNION
{
  ?kompetansemaal rdf:type 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 .
  FILTER (lang(?kompetansemaalsett) = "default")
  
#  ?kms r:kompetansemaalsett ?lpB .
  ?lpB u:uri d:NOR01-06 ;
  u:tittel ?lptittel .
  FILTER (lang(?lptittel) = "default")
  FILTER (lang(?kmtekst) = "default")
}
}
ORDER BY ?kmtekst ?kompetansemaalsett ?lpA ?lpB

Liste over siste publiserte endringer

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX u:<http://psi.udir.no/ontologi/kl06/>
PREFIX kode: <http://psi.udir.no/kl06/>
 
SELECT DISTINCT *
WHERE {
 
?uri u:kode ?kode ;
     u:sist-endret ?uri_sist_endret ;
     u:url-data ?data .
}
 ORDER BY DESC(?uri_sist_endret)
# ORDER BY ?data_sist_endret
 
LIMIT 100