SPARQL API
SPARQL-endepunktet er det kraftigste søkeverktøyet på Data.norge.no og gir deg mulighet til å søke på alle egenskaper som finnes i katalogene, så lenge du behersker syntaksen. Tjenesten som er ansvarlig for å håndtere SPARQL er fdk-sparql-service(Github).
Endepunkt i ulike miljøer
- SPARQL backend service (produksjon): https://sparql.fellesdatakatalog.digdir.no - Produksjons-SPARQL-endepunkt
- SPARQL backend service (demo): https://sparql.demo.fellesdatakatalog.digdir.no - Demo-SPARQL-endepunkt
GUI-verktøy
Du kan også bruke SPARQL gjennom våre grafiske brukergrensesnitt:
- Produksjonsmiljø: https://data.norge.no/nb/sparql
- Demomiljø: https://demo.fellesdatakatalog.digdir.no/sparql
Dokumentasjon
Her kan du lese mer om SPARQL(W3C)
Hvis rdf er nytt for deg, anbefaler vi deg å lese RDF: hva og hvorfor
Slik får du tilgang
API-et er åpent for offentlig bruk og krever ingen autentisering. Du kan begynne å bruke endepunktet umiddelbart.
Hastighetsbegrensning
API-et har hastighetsbegrensning (rate limiting) konfigurert for å sikre stabil drift. Hvis du overskrider grensene, vil du motta en HTTP 429 (Too Many Requests) respons.
Hvordan utføre en SPARQL-spørring
Du kan utføre SPARQL-spørringer ved å sende en GET-forespørsel med spørringen som en URL-kodet query-parameter. Her er et eksempel med curl:
Kopiercurl "https://sparql.demo.fellesdatakatalog.digdir.no?query=\ PREFIX%20dcat%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23%3E%0A\ SELECT%20*%0AWHERE%20%7B%0A%20%20%3Fdataset%20a%20dcat%3ADataset%20.%0A%7D%0A\ LIMIT%2010"
I eksemplet over er SPARQL-spørringen URL-kodet. Den dekodede spørringen er:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> SELECT * WHERE { ?dataset a dcat:Dataset . } LIMIT 10
Du kan også bruke POST-forespørsel med spørringen i request body for å unngå URL-lengdebegrensninger ved komplekse spørringer.
Ressurstyper
Følgende ressurstyper er tilgjengelige i katalogen:
dcat:Dataset(<http://www.w3.org/ns/dcat#Dataset>) - Datasettdcat:DataService(<http://www.w3.org/ns/dcat#DataService>) - Datatjenesteskos:Concept(<http://www.w3.org/2004/02/skos/core#Concept>) - Begrepmodelldcatno:InformationModel(<https://data.norge.no/vocabulary/modelldcatno#InformationModel>) - Informasjonsmodellcpsv:PublicService(<http://purl.org/vocab/cpsv#PublicService>) - Offentlige tjenestecpsvno:Service(<https://data.norge.no/vocabulary/cpsvno#Service>) - Tjeneste (CPSV-AP-NO)cv:Event(<http://data.europa.eu/m8g/Event>) - Hendelsecv:LifeEvent(<http://data.europa.eu/m8g/LifeEvent>) - Livshendelsecv:BusinessEvent(<http://data.europa.eu/m8g/BusinessEvent>) - Virksomhetshendelse
SPARQL-spørringstyper og responsformater
SPARQL støtter flere typer spørringer, hver med sitt eget formål og responsformat:
- SELECT: Returnerer resultater som en tabell med variabler og verdier. Dette er den mest brukte spørringstypen. Responsen returneres som JSON eller XML.
- ASK: Returnerer en boolsk verdi (true/false) som svarer på om spørringen finner noen treff. Responsen returneres som JSON eller XML.
- CONSTRUCT: Konstruerer en RDF-graf basert på spørringen. Responsen returneres som RDF (Turtle, RDF/XML, eller JSON-LD).
- DESCRIBE: Returnerer en RDF-graf som beskriver ressursene som matcher spørringen. Responsen returneres som RDF (Turtle, RDF/XML, eller JSON-LD).
Du kan spesifisere responsformatet ved å bruke HTTP Accept-header eller format-parameter. Standard format for SELECT og ASK er JSON, mens CONSTRUCT og DESCRIBE returnerer RDF.
For mer informasjon om SPARQL-spørringstyper og responsformater, se W3C SPARQL 1.1 Query Language spesifikasjonen og SPARQL 1.1 Protocol spesifikasjonen.
Eksempler på SPARQL-spørringer
Grunnleggende eksempler
Få oversikt over hvilke egenskaper som finnes:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> SELECT * WHERE { ?dataset a dcat:Dataset. ?dataset ?prop ?value. }
Deretter plukke og velge egenskaper:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dct: <http://purl.org/dc/terms/> SELECT * WHERE { ?dataset a dcat:Dataset . ?dataset dct:title ?title. ?dataset rdf:type ?type. # Velg nye egenskaper ved: ?dataset <ønsket egenskap> ?egenskapsverdi }
Søke etter datasett med filtrering
Finn datasett publisert av en spesifikk organisasjon:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?dataset ?title ?publisher WHERE { ?dataset a dcat:Dataset . ?dataset dct:title ?title . ?dataset dct:publisher ?publisher . ?publisher foaf:name ?publisherName . FILTER(CONTAINS(LCASE(?publisherName), "statistisk")) }
Søke etter datatjenester
Hent datatjenester med deres beskrivelser:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> SELECT ?service ?title ?description WHERE { ?service a dcat:DataService . ?service dct:title ?title . OPTIONAL { ?service dct:description ?description } } LIMIT 10
Søke etter begreper
Finn begreper relatert til et spesifikt emne:
KopierPREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX dct: <http://purl.org/dc/terms/> SELECT ?concept ?prefLabel ?definition WHERE { ?concept a skos:Concept . ?concept skos:prefLabel ?prefLabel . OPTIONAL { ?concept skos:definition ?definition } FILTER(CONTAINS(LCASE(?prefLabel), "miljø")) } LIMIT 20
Søke etter informasjonsmodeller
Hent informasjonsmodeller med metadata:
KopierPREFIX modelldcatno: <https://data.norge.no/vocabulary/modelldcatno#> PREFIX dct: <http://purl.org/dc/terms/> SELECT ?model ?title ?description ?version WHERE { ?model a modelldcatno:InformationModel . ?model dct:title ?title . OPTIONAL { ?model dct:description ?description } OPTIONAL { ?model dct:hasVersion ?version } } ORDER BY ?title
Søke etter offentlige tjenester (PublicService)
Finn offentlige tjenester med detaljer:
KopierPREFIX cpsv: <http://purl.org/vocab/cpsv#> PREFIX dct: <http://purl.org/dc/terms/> SELECT ?service ?title ?description ?identifier WHERE { ?service a cpsv:PublicService . ?service dct:title ?title . OPTIONAL { ?service dct:description ?description } OPTIONAL { ?service dct:identifier ?identifier } } LIMIT 10
Søke etter hendelser
Hent typer hendelser:
KopierPREFIX cv: <http://data.europa.eu/m8g/> PREFIX dct: <http://purl.org/dc/terms/> SELECT ?event ?title ?type WHERE { ?event a ?type . ?event dct:title ?title . FILTER(?type IN (cv:Event, cv:LifeEvent, cv:BusinessEvent)) } LIMIT 20
Avansert: Søke med aggregering og telling
Tell antall ressurser per type:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX modelldcatno: <https://data.norge.no/vocabulary/modelldcatno#> PREFIX cpsv: <http://purl.org/vocab/cpsv#> PREFIX cv: <http://data.europa.eu/m8g/> SELECT ?type (COUNT(?resource) AS ?count) WHERE { ?resource a ?type . FILTER(?type IN ( dcat:Dataset, dcat:DataService, skos:Concept, modelldcatno:InformationModel, cpsv:PublicService, cv:Event, cv:LifeEvent, cv:BusinessEvent )) } GROUP BY ?type ORDER BY DESC(?count)
Avansert: Søke med relasjoner mellom ressurser
Finn datasett med deres distribusjoner og formater:
KopierPREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> SELECT ?dataset ?title ?distribution ?format WHERE { ?dataset a dcat:Dataset . ?dataset dct:title ?title . ?dataset dcat:distribution ?distribution . ?distribution dct:format ?format . } LIMIT 50