SPARQL-spørringer
Fra GrepWiki
(Forskjell mellom revisjoner)
(→Eksempler på SPARQL-spørringer) |
(→Eksempelsamlingr) |
||
Linje 1: | Linje 1: | ||
- | == | + | ==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]. | 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
Eksempelsamling
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.