SPARQL-søk
SPARQL let deg hente ut metadata om datasett i Transportportal.no programmatisk.
Endepunktet dekkjer heile Data.norge.no. For å avgrense resultatet til Transportportal må du filtrere på eigenskapen fdk:isRelatedToTransportportal.
Verktøy
- SPARQL-sandkasse – interaktivt grensesnitt for å teste spørjingar
- W3C sin SPARQL-dokumentasjon.
Utføre ei spørjing med curl
Du kan utføre SPARQL-spørjingar ved å sende ein GET-førespurnad med spørjinga som ein URL-koda query-parameter. Her er eit døme med curl:
curl "https://sparql.fellesdatakatalog.digdir.no?query=\ PREFIX%20dcat%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23%3E%0A\ PREFIX%20fdk%3A%20%3Chttps%3A%2F%2Fraw.githubusercontent.com%2FInformasjonsforvaltning%2Ffdk-reasoning-service%2Fmain%2Fsrc%2Fmain%2Fresources%2Fontology%2Ffdk.owl%23%3E%0A\ SELECT%20*%0AWHERE%20%7B%0A%20%20%3Fdataset%20a%20dcat%3ADataset%20.%0A%20%20%3Fdataset%20fdk%3AisRelatedToTransportportal%20true%20.%0A%7D%0A\ LIMIT%2010"
I dømet over er SPARQL-spørjinga URL-koda. Den dekoda spørjinga er:
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX fdk: <https://raw.githubusercontent.com/Informasjonsforvaltning/fdk-reasoning-service/main/src/main/resources/ontology/fdk.owl#> SELECT * WHERE { ?dataset a dcat:Dataset . ?dataset fdk:isRelatedToTransportportal true . } LIMIT 10
Du kan også bruke POST-førespurnad med spørjinga i request body for å unngå URL-lengdeavgrensingar ved komplekse spørjingar.
Hente transportportal-datasett
Denne spørjinga hentar datasett som er knytte til Transportportal.no:
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX fdk: <https://raw.githubusercontent.com/Informasjonsforvaltning/fdk-reasoning-service/main/src/main/resources/ontology/fdk.owl#> SELECT ?dataset ?title WHERE { ?dataset a dcat:Dataset . ?dataset fdk:isRelatedToTransportportal true . ?dataset dct:title ?title . } LIMIT 20
Resultatet er ei tabell med URI og tittel for inntil 20 transportportal-datasett.
Filtrere på utgjevar
Finn transportportal-datasett frå ei bestemt verksemd (her ved å søkje i utgjevarnamn):
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX fdk: <https://raw.githubusercontent.com/Informasjonsforvaltning/fdk-reasoning-service/main/src/main/resources/ontology/fdk.owl#> SELECT ?dataset ?title ?publisherName WHERE { ?dataset a dcat:Dataset . ?dataset fdk:isRelatedToTransportportal true . ?dataset dct:title ?title . ?dataset dct:publisher ?publisher . ?publisher foaf:name ?publisherName . FILTER(CONTAINS(LCASE(?publisherName), "vegvesen")) } LIMIT 20
Resultatet er ei tabell med URI, tittel og utgjevarnamn for datasett der utgjevarnamnet inneheld «vegvesen».
Filtrere på beskriving
Søk etter transportportal-datasett der beskrivinga inneheld eit bestemt ord:
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX fdk: <https://raw.githubusercontent.com/Informasjonsforvaltning/fdk-reasoning-service/main/src/main/resources/ontology/fdk.owl#> SELECT ?dataset ?description WHERE { ?dataset a dcat:Dataset . ?dataset fdk:isRelatedToTransportportal true . ?dataset dct:description ?description . FILTER(CONTAINS(LCASE(?description), "rutetider")) } LIMIT 20
Resultatet er ei tabell med URI og beskriving for datasett der beskrivinga inneheld «rutetider».
Avansert: rik metadata for transportportal-datasett
Denne spørjinga hentar meir utfyllande metadata for kvart transportportal-datasett, mellom anna tema, emneord, kontaktpunkt, landingsside, tilgangs-URL-ar, format og lisensar. Fleire verdiar for same felt blir slått saman med |:
PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2006/vcard/ns#> PREFIX fdk: <https://raw.githubusercontent.com/Informasjonsforvaltning/fdk-reasoning-service/main/src/main/resources/ontology/fdk.owl#> SELECT ?dataset ?tittel ?beskrivelse ?utgiver ?tilgangsnivaa ?oppdateringsfrekvens ?utgitt ?endret ?temaer ?emneord ?kontakt ?landingsside ?tilgangsURLer ?formater ?lisenser WHERE { # Grunnopplysninger (én verdi per datasett) { SELECT ?dataset (SAMPLE(?t) AS ?tittel) (SAMPLE(?d) AS ?beskrivelse) (SAMPLE(?pubName) AS ?utgiver) (SAMPLE(?a) AS ?tilgangsnivaa) (SAMPLE(?f) AS ?oppdateringsfrekvens) (SAMPLE(?i) AS ?utgitt) (SAMPLE(?m) AS ?endret) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true . OPTIONAL { ?dataset dct:title ?t . FILTER(langMatches(lang(?t), "nb")) } OPTIONAL { ?dataset dct:description ?d . FILTER(langMatches(lang(?d), "nb")) } OPTIONAL { ?dataset dct:publisher ?pub . OPTIONAL { ?pub foaf:name ?pn . FILTER(langMatches(lang(?pn), "nb") || lang(?pn) = "") } BIND(COALESCE(?pn, STR(?pub)) AS ?pubName) } OPTIONAL { ?dataset dct:accessRights ?ar . BIND(REPLACE(STR(?ar), "^.*[/#]", "") AS ?a) } OPTIONAL { ?dataset dct:accrualPeriodicity ?fr . BIND(REPLACE(STR(?fr), "^.*[/#]", "") AS ?f) } OPTIONAL { ?dataset dct:issued ?i } OPTIONAL { ?dataset dct:modified ?m } } GROUP BY ?dataset } # Temaer OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT ?lbl; separator=" | ") AS ?temaer) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:theme ?th . OPTIONAL { ?th skos:prefLabel ?tl . FILTER(langMatches(lang(?tl), "nb")) } BIND(COALESCE(?tl, STR(?th)) AS ?lbl) } GROUP BY ?dataset } # Emneord OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT ?kw; separator=" | ") AS ?emneord) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:keyword ?kw . FILTER(langMatches(lang(?kw), "nb")) } GROUP BY ?dataset } # Kontaktpunkt OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT ?email; separator=" | ") AS ?kontakt) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:contactPoint/vcard:hasEmail ?e . BIND(REPLACE(STR(?e), "^mailto:", "") AS ?email) } GROUP BY ?dataset } # Landingsside OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT STR(?lp); separator=" | ") AS ?landingsside) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:landingPage ?lp . } GROUP BY ?dataset } # Distribusjoner: tilgangs-URL OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT STR(?url); separator=" | ") AS ?tilgangsURLer) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:distribution/dcat:accessURL ?url . } GROUP BY ?dataset } # Distribusjoner: format OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT ?lbl; separator=" | ") AS ?formater) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:distribution/dct:format ?fmt . OPTIONAL { ?fmt skos:prefLabel ?fl . FILTER(langMatches(lang(?fl), "en") || lang(?fl) = "") } BIND(COALESCE(?fl, REPLACE(STR(?fmt), "^.*[/#]", "")) AS ?lbl) } GROUP BY ?dataset } # Distribusjoner: lisens OPTIONAL { SELECT ?dataset (GROUP_CONCAT(DISTINCT ?lbl; separator=" | ") AS ?lisenser) WHERE { ?dataset a dcat:Dataset ; fdk:isRelatedToTransportportal true ; dcat:distribution/dct:license ?lic . OPTIONAL { ?lic dct:title|skos:prefLabel ?ll . FILTER(langMatches(lang(?ll), "nb") || lang(?ll) = "") } BIND(COALESCE(?ll, STR(?lic)) AS ?lbl) } GROUP BY ?dataset } } ORDER BY ?tittel LIMIT 20
Resultatet er ei tabell med éi rad per datasett. Kolonnene inneheld mellom anna tittel, beskriving, utgjevar, tilgangsnivå, oppdateringsfrekvens, utgjevings- og endringsdato, tema, emneord, kontakt, landingsside, tilgangs-URL-ar, format og lisensar. Der eit datasett har fleire verdiar for same felt, er dei samla i éi celle skilde med |.