Kjøring av store SPARQL spørringer med POST (curl) - Utdanningsdirektoratet/Grep_SPARQL GitHub Wiki

Hvordan unngå feilen “Request header is too large” i GraphDB

Hvis du kjører en stor spørring i nettleseren og bruker Download as-knappen, kan du i sjeldne tilfeller få feilmeldingen:

HTTP Status 400 – Bad Request
Message: Request header is too large

Dette betyr to ting:

  1. Spørringen din er blitt så stor at den overstiger 2 KB, som er standardgrensen for HTTP-GET i GraphDB.
  2. Dette er typisk ikke en spørring som bør kjøres ofte i produksjonsmiljøet – det kan sammenlignes med å kjøre bred last over begge felt på E6 med følgebiler: det tar plass og bremser for andre brukere.

⚠️ Merk
Store spørringer kan legge tung belastning på produksjonsmiljøet. Bruk denne metoden kun unntaksvis – for eksempel til å ta ut større datagrunnlag en sjelden gang (f.eks. én gang i året) som du så bearbeider lokalt.

For å omgå GET-begrensningen må du bruke HTTP POST. Det gjør du enklest via kommandolinjen (Ledetekst eller PowerShell i Windows, Terminal på Mac/Linux). Oppskriften nedenfor viser bruk av Ledetekst (CMD) i Windows.


Oppskrift: kjøre en SPARQL-spørring med curl (POST)

  1. Forbered spørringsfilen
    Lagre spørringsteksten i en fil, f.eks. q1.txt. Notér hvor på maskinen du lagret den, f.eks. C:\Users\brukernavn\.

  2. Åpne kommandolinjen
    Trykk Windows-knappen, skriv cmd og åpne Ledetekst.

  3. Naviger til riktig mappe
    Bruk cd til å gå til mappen der du lagret q1.txt:

    cd C:\Users\brukernavn
    
  4. Kjør curl med POST
    Lim inn følgende kommando og trykk Enter:

    curl.exe -X POST "https://sparql-data.udir.no/repositories/201906" ^
      -H "Accept: text/csv" ^
      -H "Content-Type: application/sparql-query" ^
      --data-binary "@q1.txt" -o resultater.csv
    
    • -X POST sørger for at vi bruker POST i stedet for GET.
    • --data-binary "@q1.txt" sender innholdet i filen som spørring.
    • -o resultater.csv lagrer resultatene lokalt.
  5. Velg resultatformat
    Du kan bytte ut "Accept: text/csv" med andre formater som GraphDB støtter:

    • text/csv
    • text/tab-separated-values (TSV)
    • application/sparql-results+json
    • application/sparql-results+xml
  6. Se status og ferdig resultat
    Underveis ser du en oversikt over sendt og mottatt datamengde. Når prompten (C:\...>) vises igjen, er fila lastet ned til samme mappe som du kjørte kommandoen fra.

  7. Jobb videre lokalt
    Du har nå en resultatfil du kan åpne i ønsket verktøy.


👉 Med denne metoden unngår du GET-begrensningen, samtidig som du får nedlastet store resultater på en ryddig måte.