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
- Sandkassen: repoet "KL06_201906" på http://sandkasse-data.udir.no:7200/sparql (fyres opp og oppdateres ved behov)
- Beta: https://beta-data.udir.no/kl06/sparql (bruk denne til testing) (data oppdateres nattlig)
- Produksjon: https://sparql-data.udir.no/sparql (bruk denne kun til produksjonsformål) (data oppdateres nattlig)
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:
- Linked Data Engenering (Semantic Web) OpenHPI (45 videoer fra 2019)
- Knowledge Engeneering with Semantic Web Technologies (70 videoer fra 2019)
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:
- Knowledgde Graphs (lecture) (33 videoer, februar 2021)
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