SPARQL-spørringer

Fra GrepWiki

(Forskjell mellom revisjoner)
Gå til: navigasjon, søk
(Eksempler på SPARQL-spørringer)
(Eksempler på SPARQL-spørringer)
Linje 1: Linje 1:
-
==Eksempler på SPARQL-spørringer==
+
==Eksempelsamlingr==
Her følger et knippe spørringer som du kan kjøre i [http://data.udir.no/kl06/sparql SPARQL-endepunktet vårt]. Se også brukerveiledningen som har et [https://kl06-doc.gitbooks.io/kl06-public/content/sparql-grensesnittet/sparql.html eget kapittel om RDF/SPARQL] og ett med en liten [https://kl06-doc.gitbooks.io/kl06-public/content/eksempler/sparql-grensesnittet.html eksempelsamling].
Her følger et knippe spørringer som du kan kjøre i [http://data.udir.no/kl06/sparql SPARQL-endepunktet vårt]. Se også brukerveiledningen som har et [https://kl06-doc.gitbooks.io/kl06-public/content/sparql-grensesnittet/sparql.html eget kapittel om RDF/SPARQL] og ett med en liten [https://kl06-doc.gitbooks.io/kl06-public/content/eksempler/sparql-grensesnittet.html eksempelsamling].

Revisjonen fra 23. sep 2016 kl. 09:55

Eksempelsamlingr

Her følger et knippe spørringer som du kan kjøre i SPARQL-endepunktet vårt. Se også brukerveiledningen som har et eget kapittel om RDF/SPARQL og ett med en liten eksempelsamling.

Hver spørring er innledet med en "#" som i endepunktet er brukt som kommentar (på linje med // i f.eks. .json).


##     UTFORSKENDE SPARQL-SPØRRINGER     ##



#Liste over alle typer
PREFIX prefix: <http://example.org/ns#>
SELECT *
WHERE
{
   ?x rdf:type ?type .
}


# Liste over Properties som er brukt
SELECT DISTINCT ?property
WHERE {
  ?s ?property ?o .
}


# Mer matnyttig: Hvilke properties (egenskaper) blir brukt av forekomster (Instances) som erklærer en bestemt klasse:
SELECT DISTINCT ?property
WHERE {
  ?s a <http://psi.udir.no/ontologi/kl06/laereplan>;
     ?property ?o .
}


#List opp hva et gitt element har: 
#SELECT * WHERE {
#<http://data.udir.no/kl06/NOR0208> ?p ?o
#}
#
#...men etter omleggingen til 2016/04-kontrakten må vi egentlig spørre etter psi-adressen for å få dataene til elementet:
SELECT * WHERE {
<http://psi.udir.no/kl06/NOR0208> ?p ?o
}


#...og de som tviholder på å bruke data-adressen kan spørre om det samme slik:
PREFIX ontologi: <http://psi.udir.no/ontologi/kl06/>
SELECT ?p ?o WHERE {
?psi ontologi:url-data <http://data.udir.no/kl06/NOR0208> ;
?p ?o
}


#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 
}


#List opp typer (RDF-måten (uten prefix fungerer også))
SELECT DISTINCT ?type
WHERE { 
?s rdf:type ?type 
}


#List opp typer (Grep-måten (kun typer som er av "grep-type" i modellen))
PREFIX ontologi: <http://psi.udir.no/ontologi/kl06/>
SELECT DISTINCT ?type
WHERE {
?s ontologi:grep-type ?type 
}


#List opp alle properties
SELECT DISTINCT ?property
WHERE {
  ?s ?property ?o .
}



##     STATISTIKK    ##



#Antall tripler:
SELECT (COUNT(*) AS ?no) { ?s ?p ?o  }

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

#Antall distinkte klasser
SELECT COUNT(distinct ?o) AS ?no { ?s rdf:type ?o }

#Antall distinkte predikater
SELECT count(distinct ?p) { ?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)) }
                           
#Uttømmende liste over klasser, brukt i datasettet
SELECT DISTINCT ?type { ?s a ?type }


##     SPØRRINGER MOT INNHOLDET   ##


#Hva skjuler seg bak en UUID-referanse?
PREFIX type: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX u: <http://psi.udir.no/ontologi/kl06/>
SELECT ?kode ?psi ?tittel ?type WHERE {
?psi u:id <uuid:2d3db498-48a3-4b4b-8c59-c255b2003fba> ;
u:tittel ?tittel ;
u:url-data ?kode ;
rdf:type ?type ;
u:id ?uuid
FILTER (lang(?tittel) = "")
} ORDER BY str(?kode)


#List alle læreplaner (i default-språket)
prefix u: <http://psi.udir.no/ontologi/kl06/> 
prefix pub: <http://psi.udir.no/ontologi/kl06/status/publisert> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT  ?tittel ?kode WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:status ?pub .
FILTER (lang(?tittel) = "")
} ORDER BY ?kode ?tittel


#Alle publiserte læreplaner for grunnskolen i default-språket
prefix u: <http://psi.udir.no/ontologi/kl06/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?tittel ?kode WHERE {
?laereplan rdf:type u:laereplan ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:har-opplaeringsnivaa ?nivaa ;
u:status ?status .
FILTER regex(?status, "publisert", "i")
FILTER regex(?nivaa, "grunnskole", "i")
FILTER (lang(?tittel) = "")
} ORDER BY ?tittel ?kode


#Lister læreplaner som er erstattet av en annen læreplan
prefix u: <http://psi.udir.no/ontologi/kl06/> 
prefix r: <http://psi.udir.no/ontologi/kl06/reversert/> 
prefix status: <http://psi.udir.no/ontologi/kl06/status/publisert>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?tittel ?kode ?kode2 WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:url-data ?kode ;
r:har-erstatter ?erstattet_av .
?erstattet_av u:url-data ?kode2 ;
u:status ?pub .
FILTER (lang(?tittel) = "")
} ORDER BY ?kode ?tittel


#Finner læreplaner uten erstatter-relasjon ved hjelp av MINUS (negasjon)
prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
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(?status, "publisert", "i")
FILTER (lang(?tittel) = "")
} ORDER BY ?kode


#Finner engelsk oversettelse av angitt "tittel" i spørringen
#kilde: http://www.w3.org/TR/sparql11-query/#func-langMatches
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" )
}


#tekst-søk i læreplan
#Eksempel: "iforholdtilisme" i forhold til publiserte kompetansemål 
#(ref. https://no.wikipedia.org/wiki/Forholdisme):
#Denne slår også opp i læreplan for å finne læreplantittel
prefix u: <http://psi.udir.no/ontologi/kl06/> 
prefix r: <http://psi.udir.no/ontologi/kl06/reversert/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?kmkode ?kmtekst ?laereplantittel ?laereplan WHERE {
?kompetansemaal rdf:type u:kompetansemaal ;
u:tittel ?kmtekst ;
u:kode ?kmkode ;
r:har-kompetansemaal ?kms .
?kms r:har-kompetansemaalsett ?laereplan .
?laereplan u:tittel ?laereplantittel .
FILTER regex(?kmtekst, "i forhold til", "i")
FILTER (lang(?kmtekst) = "")
FILTER (lang(?laereplantittel) = "") .
} ORDER BY ?laereplan ?kmkode


#Lister læreplaner som er fastsatt av Kunnskapsdepartementet
#Vær obs på at "departementet" kan forekomme i teksten der udir fastsetter, som i 
#"etter delegasjon i brev av 13. september 2013 fra Kunnskapsdepartementet" eller "Utdannings- og forskningsdepartementet".
#Derfor filtrerer på "av K")
prefix u: <http://psi.udir.no/ontologi/kl06/> 
prefix status: <http://psi.udir.no/ontologi/kl06/status/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?uri ?tittel ?kode ?fastsatt_av WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:kode ?kode ;
u:fastsettelsesinformasjon-fastsettelsestekst ?fastsatt_av ;
u:status ?status .
FILTER regex(?fastsatt_av, "av K" @nob, "i")
FILTER (lang(?tittel) = "")
FILTER (lang(?fastsatt_av) = "")
} ORDER BY ?kode ?tittel


#Negasjon: Lister læreplaner som ikke er fastsatt av Udir
prefix u: <http://psi.udir.no/ontologi/kl06/> 
prefix status: <http://psi.udir.no/ontologi/kl06/status/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?uri ?tittel ?kode ?fastsatt_av WHERE {
?uri rdf:type u:laereplan ;
u:tittel ?tittel ;
u:kode ?kode ;
u:fastsettelsesinformasjon-fastsettelsestekst ?fastsatt_av ;
u:status ?status  .
FILTER (lang(?tittel) = "")
FILTER (lang(?fastsatt_av) = "")
FILTER (!regex(?fastsatt_av, "direktoratet", "i"))
} ORDER BY ?kode ?tittel
#vær obs på at noen læreplaner ikke har noe informasjon om hvem som har fastsatt dem  - og de dukker opp i denne siste spørringen.


#Antall publiserte læreplaner:
select (count (?telleobjekt) as ?antall) where {
?telleobjekt <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://psi.udir.no/ontologi/kl06/laereplan>;
<http://psi.udir.no/ontologi/kl06/status> ?status .
FILTER regex(?status, "publisert","i")
}


#Antall læreplaner på et oppgitt språk/målform
#Antall publiserte læreplaner på nynorsk:
prefix u: <http://psi.udir.no/ontologi/kl06/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select (count (?telleobjekt) as ?antall) where {
?telleobjekt rdf:type
u:laereplan;
u:tittel ?tittel ;
u:status ?status .
FILTER regex(?status, "publisert","i")
FILTER (lang(?tittel) = "nob")
}


#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:har-merkelapper ?merkelapp .
FILTER regex(?merkelapp, "avvik", "i")
FILTER (lang(?tittel) = "")
} ORDER BY ?kode

#Hvilke læreplaner 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:har-merkelapper ?merkelapp .
FILTER regex(?merkelapp, "valg", "i")
FILTER (lang(?tittel) = "")
} ORDER BY ?tittel ?kode


#Liste over fagkoder som har merkelapper
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:har-merkelapper ?merkelapp .
FILTER (lang(?tittel) = "")
} ORDER BY ?merkelapp ?kode


#Liste over læreplaner med merkelapp
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:laereplan ;
u:tittel ?tittel ;
u:url-data ?kode ;
u:har-merkelapper ?merkelapp .
FILTER (lang(?tittel) = "")
} ORDER BY ?merkelapp ?kode


#Gitt en fagkode, gi meg gjeldende læreplan
PREFIX data: <http://psi.udir.no/kl06/>
PREFIX ontologi: <http://psi.udir.no/ontologi/kl06/>
SELECT ?fagkodetittel ?zkode ?ztittel ?kms ?lp ?lptittel  WHERE {
data:NOR0214 ontologi:tittel ?fagkodetittel ;
ontologi:har-opplaeringsfag ?zkode 
FILTER (lang(?fagkodetittel) = '') .

?kms ontologi:har-etter-fag ?zkode .
?zkode ontologi:tittel ?ztittel.
FILTER (lang(?ztittel) = '') .

?zkode ontologi:status ?zstatus
FILTER regex(?zstatus, "publisert") .

?kmslp ontologi:har-kompetansemaalsett ?kms ;
ontologi:status ?status
FILTER regex(?status, "publisert") .

?lp ontologi:uri ?kmslp .

?lp ontologi:tittel ?lptittel
FILTER (lang(?lptittel) = '') .
}


#Hent årstrinn:
prefix u: <http://psi.udir.no/ontologi/kl06/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?url ?tittel WHERE {
?url rdf:type u:aarstrinn;
u:tittel ?tittel
FILTER (lang(?tittel) = "")
}
#obs: vi jobber med å få til et rekkefølge-statement for bl.a årstrinn
#Riktig rekkefølge etter tiende årstrinn er:
#Vg1
#Vg2
#Vg3
#OiB (opplæring i bedrift)
#Påbygg


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


#Gitt en fagkode, gi meg gjeldende opplæringsfag
PREFIX grep: <http://psi.udir.no/kl06/>
PREFIX ontologi: <http://psi.udir.no/ontologi/kl06/>
PREFIX kode: <http://data.udir.no/kl06/>

SELECT ?fagkode ?fagkodetittel ?zkode ?zstatus WHERE {
?fagkode ontologi:kode "NOR0214" ;
ontologi:tittel ?fagkodetittel 
 FILTER (lang(?fagkodetittel) = '') .

?fagkode ontologi:har-opplaeringsfag ?zkode.

?zkode ontologi:status ?zstatus 
FILTER regex(?zstatus, "publisert") .
}



#Fra opplæringsfag til trinn via kompetansemålsett 1:
PREFIX grep: <http://psi.udir.no/ontologi/kl06/>
PREFIX grep-r: <http://psi.udir.no/ontologi/kl06/reversert/>
PREFIX grep-s: <http://psi.udir.no/ontologi/kl06/status/>
SELECT DISTINCT ?kmstittel ?ksett ?opplaeringsfagtittel ?trinn WHERE {
<http://psi.udir.no/kl06/NOR1Z37> ?p ?o ;
grep:tittel ?opplaeringsfagtittel ;
grep-r:har-etter-fag ?ksett
FILTER (lang(?opplaeringsfagtittel) = '') .
?ksett grep:har-etter-aarstrinn ?trinn ;
grep:tittel ?kmstittel
FILTER (lang(?kmstittel) = '') .
}


#Fra opplæringsfag til trinn via kompetansemålsett 2:
PREFIX grep: <http://psi.udir.no/ontologi/kl06/>
PREFIX grep-r: <http://psi.udir.no/ontologi/kl06/reversert/>
PREFIX grep-u: <http://psi.udir.no/kl06/>
SELECT DISTINCT ?ksett ?trinn WHERE {
grep-u:NOR1Z37 ?p ?o ;
grep-r:har-etter-fag ?ksett .
?ksett grep:har-etter-aarstrinn ?trinn .
}



#Fra kompetansemål til trinn
PREFIX grep: <http://psi.udir.no/ontologi/kl06>
PREFIX grep-r: <http://psi.udir.no/ontologi/kl06/reversert/> 
PREFIX grep-s: <http://psi.udir.no/ontologi/kl06/status/>
SELECT *
WHERE {
<http://data.udir.no/kl06/K15471> grep:tittel ?tittel ;
grep:laereplan-referanser ?lplan
FILTER (lang(?tittel) = '') .
?ofag grep:laereplan-referanse ?lplan ;
<http://psi.udir.no/ontologi/kl06/reversert/etter-fag> ?ksett
FILTER (lang(?tittel) = '') .
?ksett grep:etter-aarstrinn ?trinn
FILTER (lang(?tittel) = '') .
?trinn ?p ?o
}


Flere eksempler mottas med takk.

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Verktøy