Uoffisielt supporterprosjekt · under oppbygging
AaFK-arkivet

Åpne data

Datasettet

Alt i arkivet ligger som YAML-filer på GitHub. Ved hver utrulling bygges de om til en skrivebeskyttet SQLite-fil. Nettstedet og spørrefunksjonen leser tabellene under.

Beskrivelsen under er den samme teksten spørrefunksjonen får i systemprompten sin. Det finnes ingen egen, skjult versjon — det du leser her er det modellen vet.

Slik ser arkivet ut nå: 1337 kamper fra 1917 til 2026. 543 av dem (41 %) har hendelser som mål og kort, og 305 har tilskuertall. Kampreferat mangler helt – det er der brukerinnsendte minner og observasjoner kommer inn.

Dekning, slik spørrefunksjonen får den

Disse setningene ligger i systemprompten, regnet ut av databasen ved hver bygging. De kan derfor ikke bli utdaterte uten at dataene faktisk endrer seg.

Kamper per konkurranse

Serien skifter navn gjennom historien, og kampene ligger under navnet som gjaldt da de ble spilt. Se kilder og forbehold før du gjenbruker data.

matches

Én rad per kamp i arkivet, sett fra AaFKs synsvinkel. Dette er hovedtabellen. de fleste spørsmål besvares herfra alene.

Viktig å vite:
  • Alle kamper i arkivet involverer AaFK. «aafk_score» er alltid vårt lag, uansett om vi spilte hjemme eller borte.
  • goal_difference er aafk_score minus opponent_score, altså negativ ved tap.
  • result regnes etter ordinær tid pluss ekstraomgang. En kamp avgjort på straffer har result = 'U'. Bruk won_on_penalties for å se hvem som gikk videre.
  • Kamper som ennå ikke er spilt har status 'scheduled' og NULL i alle resultatkolonner. Regner du statistikk, filtrer på status IN ('played', 'awarded'). Det er den samme regelen alle aggregatene i datasettet bruker: en kamp avgjort på grønt bord har et resultat og teller med, en avbrutt kamp har ingen sluttstilling og teller ikke.
  • confidence sier hvor sikre opplysningene er. 'probable' er vanlig for kamper før 1990. Si fra i svaret når en kamp ikke er 'confirmed'.
  • Kampstatistikken kommer fra FotMob og finnes bare for deler av 2014–2026. Per 9. august 2026 har 276 av 1 351 kamper ballbesittelse, skudd, skudd på mål og cornere; 138 har fouls og offsider; 105 har xG. NULL betyr at kilden ikke leverte feltet, ikke null hendelser.
  • Dekningen varierer med kildens historiske payload: 2018 og 2019 leverer ingen av de sju feltene, 2021 leverer fire felt for 17 kamper, og 2024/2025 leverer vanligvis bare de fire grunnfeltene. Én 2024-kamp er holdt utenfor fordi FotMob oppgir 32 cornere.
  • xG kan ikke sammenlignes ukritisk mellom sesonger: FotMob dokumenterer ikke modellversjonen i kampresponsen, og modellen kan ha endret seg. Arkivet lagrer kildens tall, ikke en egen beregning.
  • SQLite har ingen boolsk type: is_home, neutral_venue og has_conflicts er heltall 0 eller 1. Skriv «WHERE is_home = 1», ikke «WHERE is_home IS TRUE».
KolonneTypeBetydning
match_idtextUnik ID, på formen YYYY-MM-DD-hjemmelag-bortelag.
datetext (YYYY-MM-DD)Kampdato.
seasonintegerSesongåret kampen tilhører.
date_confidencetext'exact', 'month' eller 'year'. For gamle kamper er noen ganger bare året kjent.
kickofftext (HH:MM)Avspark, lokal tid. Ofte NULL for eldre kamper.
statustext'played', 'scheduled', 'abandoned', 'awarded', 'cancelled' eller 'postponed'.
competitiontextKonkurransens navn slik det var på kampdatoen: «Tippeligaen» for en kamp i 2005, «Eliteserien» for en i 2024.
competition_typetext'league', 'national_cup', 'european', 'friendly' eller 'playoff'.
competition_tierintegerNivå i seriepyramiden, 1 er øverst. NULL for cup og europa.
stagetext'regular_season', 'quarter_final', 'final' osv.
roundintegerSerierunde eller cuprunde.
is_homeinteger (0/1)Sant når AaFK spilte på hjemmebane.
opponenttextMotstanderens navn slik det var på kampdatoen.
opponent_club_idtextMotstanderens ID, stabil over tid selv om navnet endres.
aafk_scoreintegerAaFKs mål, inkludert ekstraomganger.
opponent_scoreintegerMotstanderens mål, inkludert ekstraomganger.
goal_differenceintegeraafk_score minus opponent_score. Negativ ved tap.
resulttext'S' seier, 'U' uavgjort, 'T' tap. NULL når kampen ikke er spilt.
after_extra_timeinteger (0/1)Sant når kampen gikk til ekstraomganger. Målene derfra er allerede med i aafk_score.
notetextForbehold om denne kampen. Eldre kilder oppgir ofte bare sluttresultatet, ikke stillingen etter ordinær tid. Står det noe her, skal det tas med i svaret.
decided_on_penaltiesinteger (0/1)Sant når kampen gikk til straffesparkkonkurranse.
won_on_penaltiesinteger (0/1)Ved straffekonkurranse: vant AaFK den? Ellers NULL.
venuetextStadionnavn slik det var på kampdatoen.
neutral_venueinteger (0/1)Sant når kampen ble spilt på nøytral bane.
attendanceintegerTilskuertall. Ofte NULL for eldre kamper.
refereetextDommer.
has_statsinteger (0/1)Sant når kampen har minst ett lagstatistikkfelt.
aafk_possessionrealAaFKs ballbesittelse i prosent, uansett hjemme/borte.
opponent_possessionrealMotstanderens ballbesittelse i prosent.
aafk_shotsintegerAaFKs totale skudd.
opponent_shotsintegerMotstanderens totale skudd.
aafk_shots_on_targetintegerAaFKs skudd på mål.
opponent_shots_on_targetintegerMotstanderens skudd på mål.
aafk_cornersintegerAaFKs cornere.
opponent_cornersintegerMotstanderens cornere.
aafk_foulsintegerAaFKs registrerte fouls/frispark mot.
opponent_foulsintegerMotstanderens registrerte fouls/frispark mot.
aafk_offsidesintegerAaFKs offsider.
opponent_offsidesintegerMotstanderens offsider.
aafk_xgrealFotMobs forventede mål (xG) for AaFK. NULL når kilden ikke leverte xG.
opponent_xgrealFotMobs forventede mål (xG) for motstanderen.
report_summarytextÉn til to setningers sammendrag, der det finnes.
confidencetext'confirmed', 'probable' eller 'disputed'.
has_conflictsinteger (0/1)Sant når en uenighet mellom kilder er ført inn på kampen. Slå opp match_conflicts for å se hva den gjelder. Uenigheten løses ikke automatisk, og høyeste kildeprioritet vinner ikke av seg selv.
completenessreal0–1: hvor mye av kampen som er dokumentert.
missing_fieldstext (JSON-liste)Feltene completeness savner, som 'score', 'attendance', 'lineups', 'events', 'report', 'referee', 'venue' eller 'providers'. Tom liste betyr at kampen er fullt dokumentert. Bruk json_each for å telle: en kamp uten 'lineups' her har ingen registrert lagoppstilling.
last_retrieved_attext (YYYY-MM-DD)Siste gang en kilde ble hentet for kampen. NULL for kamper uten kildehenvisning.
tagstext (JSON-liste)Frie stikkord, f.eks. 'derby'.
sourcestext (JSON-liste)Historiske publikasjoner som dokumenterer kampen, med sourceId og eventuelt side eller notat.
urltextLenke til kampsiden. Bruk denne som kildehenvisning i svar.

match_stats

To rader per kamp med statistikk: én for AaFK og én for motstanderen. Bruk denne ved summering eller sammenligning mellom sider.

Viktig å vite:
  • Viewet inneholder kamper med minst ett statistikkfelt. Hvert enkelt felt kan fortsatt være NULL.
  • side er 'aafk' eller 'opponent'. is_home beskriver om AaFK var hjemmelag, også på motstanderraden.
  • xG er FotMobs publiserte tall. Ingen xG-differanse lagres; regn ut xg minus motstanderens xg i spørringen når det trengs.
KolonneTypeBetydning
match_idtextKampens ID.
datetext (YYYY-MM-DD)Kampdato.
seasonintegerSesongår.
competitiontextKonkurransens navn.
competition_typetextKonkurransetype.
is_homeinteger (0/1)Sant når AaFK var hjemmelag.
sidetext'aafk' eller 'opponent'.
teamtextLaget statistikken gjelder.
opponenttextMotparten på denne raden.
possessionrealBallbesittelse i prosent.
shotsintegerTotale skudd.
shots_on_targetintegerSkudd på mål.
cornersintegerCornere.
foulsintegerRegistrerte fouls/frispark mot.
offsidesintegerOffsider.
xgrealFotMobs forventede mål; NULL når feltet mangler.
urltextLenke til kampsiden.

seasons

Ett sammendrag per sesong OG konkurranse: plassering, målforskjell og resultatfordeling. Et år med både serie og cup gir to rader, så filtrer på competition_id eller competition_type når du vil ha bare den ene.

Viktig å vite:
  • Én rad per sesong OG konkurranse. Et år med serie, cup og treningskamper gir tre rader, og tallene i hver rad gjelder bare den konkurransen. Summer aldri over rader uten å filtrere først.
  • Serieradene teller bare seriekamper. Kvalifiseringskamper etter sesongen ligger i matches, men holdes utenfor her, slik at en komplett sesong ikke ser ufullstendig ut.
  • En rad betyr at året er representert, ikke at sesongen er komplett. Se coverage, og coverage_evidence for hva merket hviler på. 'complete' krever både sammenhengende runder og et kjent forventet omfang som stemmer; sammenhengende runder alene gir 'unverified'.
  • Kamper som ikke er spilt teller ikke med i played eller i resultatene. Står scheduled over 0, pågår sesongen.
  • played teller kamper med status 'played' eller 'awarded', den samme regelen som i matches og opponents. De tre kan derfor sammenlignes direkte.
KolonneTypeBetydning
seasonintegerSesongår.
competition_idtextKonkurransens ID. Ett år kan ha flere rader: serie, cup og treningskamper hver for seg.
competitiontextKonkurransens navn det året.
competition_typetextKonkurransetype.
competition_tierintegerNivå, 1 er øverst.
final_positionintegerSluttplassering, hentet fra standings når vi har tabellen for året.
teams_in_leagueintegerAntall lag i divisjonen, talt i standings når vi har tabellen for året.
head_coachtextHovedtrener.
promotedinteger (0/1)Rykket opp.
relegatedinteger (0/1)Rykket ned.
notetextForbehold om sesongen, f.eks. at arkivet bare har deler av den. NULL når det ikke er noe å ta forbehold om.
coveragetextHvor godt sesongen er dekket: 'complete' (hver runde fra første til siste, og like mange kamper som det kjente omfanget), 'in_progress' (sesongen pågår, det står kamper igjen på terminlista), 'partial' (runder mangler, eller kampantallet stemmer ikke med omfanget), 'unverified' (rundene henger sammen, men ingen kilde sier hvor mange det skulle vært), 'isolated' (kamper uten rundenummer), 'not_applicable' (cup og treningskamper, som ikke har serierunder). Bruk denne når spørsmålet gjelder om et tall er hele sesongen eller bare det arkivet har.
coverage_evidencetextHva merket hviler på: 'rounds_and_standings' (sluttabellen sier hvor mange kamper AaFK spilte, og arkivet har like mange), 'rounds_and_declared_count' (omfanget er oppgitt for hånd i sesongfila), 'rounds_only' (bare rundenumre, omfanget er ukjent), 'isolated_matches_only', 'season_in_progress', 'not_applicable'.
expected_matchesintegerHvor mange kamper AaFK skulle spilt i konkurransen det året. Hentet fra sluttabellen når vi har den, ellers fra sesongfila. NULL betyr at ingen vet, og da kan sesongen ikke være 'complete'.
last_roundintegerHøyeste serierunde i sesongen. For en komplett sesong er dette antall runder. NULL for cup og treningskamper.
scheduledintegerKamper som står igjen på terminlista i denne konkurransen. Over 0 betyr at sesongen pågår, ikke at arkivet mangler noe. Disse kampene er ikke med i played, wins, draws, losses eller målene.
playedintegerAntall spilte kamper.
winsintegerSeire.
drawsintegerUavgjorte.
lossesintegerTap.
goals_forintegerMål scoret.
goals_againstintegerMål sluppet inn.
goal_differenceintegerMålforskjell.
avg_home_attendancerealSnitt tilskuertall på hjemmekamper.
urltextLenke til sesongsiden.

opponents

Innbyrdes statistikk mot hver motstander, over hele arkivet og alle konkurranser.

Viktig å vite:
  • played, wins, draws og losses regnes over de samme kampene, statusene 'played' og 'awarded'. wins + draws + losses er derfor alltid lik played.
  • first_meeting ser også kamper som ikke er spilt. En motstander vi har på terminlista uten å ha møtt står med played = 0 og last_meeting = NULL.
KolonneTypeBetydning
opponent_club_idtextMotstanderens ID.
opponenttextMotstanderens navn (dagens navn).
citytextMotstanderens by.
playedintegerAntall spilte kamper mot laget.
winsintegerAaFK-seire.
drawsintegerUavgjorte.
lossesintegerAaFK-tap.
goals_forintegerAaFK-mål totalt.
goals_againstintegerInnslupne mål totalt.
first_meetingtext (YYYY-MM-DD)Første møte.
last_meetingtext (YYYY-MM-DD)Siste spilte møte.
urltextLenke til motstandersiden.

standings

Sluttabellen for en seriesesong, ett lag per rad. Bruk denne når spørsmålet gjelder hvor AaFK endte, hvem som vant divisjonen, eller hvor mange poeng det skilte.

Viktig å vite:
  • Bare seriesesonger, og bare de årene kilden har tabell for. Cupen har ingen tabell.
  • team er kildens eget lagnavn. club_id er satt for lagene arkivet kjenner fra før og NULL for resten, siden AaFK ikke har møtt alle lagene i hver divisjon. Filtrer på club_id = 'aalesunds-fk' for å finne vår egen rad.
  • points er tallet tabellen viser, ikke wins*3+draws. Poengtrekk finnes, og to poeng for seier gjaldt til 1987.
  • Tabellen dekker bare seriekampene. Cupkamper samme år ligger i matches og er ikke med her.
KolonneTypeBetydning
competition_idtextKonkurransens ID.
competitiontextKonkurransens navn.
seasonintegerSesongår.
positionintegerPlassering, 1 er øverst.
teamtextLagets navn slik kilden skrev det.
club_idtextKlubben i arkivet, når den finnes der. NULL ellers.
playedintegerSpilte kamper.
winsintegerSeire.
drawsintegerUavgjorte.
lossesintegerTap.
goals_forintegerScorede mål.
goals_againstintegerInnslupne mål.
goal_differenceintegerMålforskjell.
pointsintegerPoeng slik tabellen viser dem.
outcometext'promoted', 'relegated', 'promotion_playoff', 'relegation_playoff', 'playoff' eller 'none'.
sourcesJSONArray av kildereferanser som dokumenterer plasseringen.
notetextKildens egen merknad bak poengsummen, f.eks. en europacupplass.
urltextLenke til motstandersiden når klubben finnes i arkivet.

standings_progression

Hvor AaFK lå i tabellen etter hver serierunde. Bruk denne når spørsmålet gjelder utviklingen gjennom en sesong, ikke hvor den endte.

Viktig å vite:
  • Utregnet ved innhøsting av kildens fulle runderekke, ikke lagret som kamper. Kampene til de andre lagene ligger ikke i arkivet.
  • Bare sesonger der utregningen lander på nøyaktig samme rad som tabellen kilden trykte. Gjør den ikke det, er raden utelatt framfor å vises feil.
  • Bare AaFK. De andre lagenes vei gjennom sesongen finnes ikke her.
KolonneTypeBetydning
competition_idtextKonkurransens ID.
seasonintegerSesongår.
roundintegerSerierunde.
positionintegerPlassering etter denne runden.
pointsintegerPoeng etter denne runden.
playedintegerSpilte kamper etter denne runden. Lavere enn round når en kamp er utsatt.
goal_differenceintegerMålforskjell etter denne runden.

squad

Stallen per sesong: hvem som var med, hvor mange kamper og hvor mange mål. Bruk denne på spørsmål om spillere, ikke matches.

Viktig å vite:
  • Utledet av lagoppstillingene, som arkivet har fra 2010. Sesonger før det har ingen rader her, og det er en manglende kilde og ikke en tom stall.
  • appearances teller oppsatte tropper, ikke spilletid. Benken er med, fordi kilden ikke skiller mellom en som satt der og en som kom inn. Bruk starts når spørsmålet gjelder hvem som spilte.
  • goals teller bare mål i kamper der navnet står i hendelseslista. En kamp uten hendelser gir null mål for alle som spilte den.
  • person_key slår sammen skrivemåter av samme navn. name er den skrivemåten vi viser.
  • Bare AaFKs egne spillere. Motstandernes oppstillinger er registrert, men er ikke med her.
  • number, position, nationality og wikidata kommer fra personregisteret og dekker en del av stallen, ikke hele. NULL betyr at personen ikke står der, ikke at opplysningen ikke finnes.
KolonneTypeBetydning
seasonintegerSesongår.
person_keytextPersonens identitet, normalisert. Bruk denne når du grupperer over sesonger.
nametextNavnet slik det vises.
appearancesintegerKamper spilleren sto oppført i troppen.
startsintegerKamper fra start.
goalsintegerMål i sesongen, talt fra hendelsene.
person_idtextPersonen i registeret, når hun eller han står der. NULL ellers.
numberintegerDraktnummer den sesongen, fra personregisteret. NULL når vi ikke har det.
positiontext'keeper', 'forsvar', 'midtbane' eller 'angrep', fra personregisteret.
nationalitytextNasjonalitet slik kilden skrev den, f.eks. 'Norge'.
wikidatatextWikidata-ID, f.eks. Q1796755. Peker videre; dataene bak hentes ikke hit.
first_matchtext (YYYY-MM-DD)Første kamp i troppen den sesongen.
last_matchtext (YYYY-MM-DD)Siste kamp i troppen den sesongen.

coach_spells

Én rad per sammenhengende periode en trener hadde laget. Bruk denne på spørsmål om hvem som var trener når, og om trenerbytter.

Viktig å vite:
  • Utledet av hvem som står oppført på hver kamp, ikke av ansettelsesdatoer. En periode starter på første kamp og slutter på siste, ikke på dagen avtalen ble skrevet.
  • Et trenerbytte midt i sesongen gir to rader det året. 2023 gir tre.
  • En trener som kommer tilbake får to rader. Kjetil Rekdal har en periode fra 2010 og en fra 2024.
  • Bare fra 2010, som er der lagoppstillingene starter.
KolonneTypeBetydning
person_keytextTrenerens identitet, normalisert.
nametextNavnet slik det vises.
from_datetext (YYYY-MM-DD)Første kamp i perioden.
to_datetext (YYYY-MM-DD)Siste kamp i perioden.
from_seasonintegerSesongen perioden startet.
to_seasonintegerSesongen perioden sluttet.
matchesintegerKamper i perioden.

declared_coach_spells

Trenerperioder oppgitt av en kilde, for årene kampdataene ikke rekker. Bruk coach_spells når spørsmålet gjelder 2010 eller senere.

Viktig å vite:
  • Oppgitt, ikke utledet: bare årstall, og vikarene mangler. Christian Johnsen står som 2023 til 2024; at Marius Boee og Sindre Eid hadde laget imellom, vet bare kampene.
  • Rekker til 2001. Eldre trenere finnes ikke i noen kilde vi har.
  • Overlapper med coach_spells for 2010 og senere. De to erstatter ikke hverandre; coach_spells er den nøyaktige.
KolonneTypeBetydning
person_idtextPersonen i registeret.
nametextNavnet slik det vises.
from_seasonintegerFørste sesong i perioden.
to_seasonintegerSiste sesong. NULL når perioden ikke er avsluttet i kilden.

match_events

Én rad per hendelse i en kamp: mål, kort og innbytter.

Viktig å vite:
  • Dekningen er ujevn og følger kilden, ikke kalenderen: kamper hentet fra FotMob har hendelser, kamper hentet fra RSSSF har bare resultatet. Fravær av mål her betyr ikke at det ikke ble scoret. Sjekk aafk_score i matches.
  • Antallet kamper med hendelser står i dekningsavsnittet nederst, regnet ut av databasen ved hver bygging.
  • team er 'aafk' eller 'opponent', ikke hjemme/borte.
KolonneTypeBetydning
match_idtextKampens ID.
datetext (YYYY-MM-DD)Kampdato.
seasonintegerSesongår.
minuteintegerSpilleminutt.
stoppageintegerTilleggstid. 45+2 er minute 45, stoppage 2.
event_typetext'goal', 'own_goal', 'penalty_goal', 'yellow_card', 'red_card', 'substitution' m.fl.
teamtext'aafk' eller 'opponent'.
playertextSpiller.
assisttextMålgivende.
player_offtextVed innbytte: spilleren som gikk ut.
urltextLenke til kampsiden.

reports

Kampreferat, som en FTS5-tabell. Samme objekt dekker begge bruksmåtene: fritekstsøk og oppslag på match_id.

Viktig å vite:
  • Alle referat er skrevet for dette arkivet, aldri kopiert fra avis eller klubbside.
  • Fritekstsøk: WHERE reports MATCH 'ordet'. Flere ord: MATCH 'ord1 ord2' (OG), MATCH 'ord1 OR ord2'. Prefiks: MATCH 'snuoper*'.
  • Bare summary og body er søkbare. De andre kolonnene leses ut som vanlig, men treffer ikke på MATCH.
  • Arkivet har foreløpig ingen egne kampreferat. Et tomt søkeresultat betyr derfor ikke at kampen mangler, det betyr at ingen har skrevet referatet ennå. Si det slik, ikke som om kampen ikke finnes.
KolonneTypeBetydning
match_idtextKampens ID.
datetext (YYYY-MM-DD)Kampdato.
seasonintegerSesongår.
opponenttextMotstander.
is_homeinteger (0/1)Hjemmekamp.
resulttext'S', 'U' eller 'T'.
summarytextKort sammendrag.
bodytextReferatet.
bylinetextHvem som skrev det.
urltextLenke til kampsiden.

match_conflicts

Én rad per verdi i en uenighet mellom kilder. Bruk denne når has_conflicts er 1, eller når confidence er 'disputed', for å si hva uenigheten faktisk gjelder.

Viktig å vite:
  • To kilder som er uenige om ett felt gir to rader med samme match_id og field, og ulik value.
  • decision = 'unresolved' betyr at ingen har tatt stilling. Da er is_chosen 0 på alle radene, og svaret skal oppgi begge verdiene med hver sin kilde framfor å velge en.
  • Er konflikten avgjort, står begrunnelsen i reason og datoen i decided_at. Gjenfortell begrunnelsen framfor å finne på en.
  • Ingenting her avgjøres av kildeprioritet automatisk. Et valg er tatt av et menneske, og da står det hvorfor.
KolonneTypeBetydning
match_idtextKampen uenigheten gjelder.
datetext (YYYY-MM-DD)Kampdato.
seasonintegerSesongår.
opponenttextMotstanderens navn den datoen.
fieldtextFeltet kildene er uenige om, med punktnotasjon: 'away.score', 'attendance'.
provider_idtextKilden som oppgir denne verdien.
valuetext eller integerVerdien kilden oppgir.
value_notetextKildens eget forbehold om verdien.
is_choseninteger (0/1)Sant for verdien arkivet bruker. Alle rader er 0 når konflikten ikke er avgjort.
decisiontext'unresolved', 'manual', 'source_priority' eller 'independent_source'.
decided_attext (YYYY-MM-DD)Når valget ble tatt. NULL når det ikke er tatt.
reasontextHvorfor valget falt slik. NULL når konflikten står åpen.
lockedinteger (0/1)Sant når verdien er låst mot å bli overskrevet av en senere innhøsting.
conflict_notetextNotat om uenigheten som helhet.
urltextLenke til kampsiden.

providers

Kildekatalogen: hvor dataene kommer fra og hvor mye vi stoler på hver kilde.

Viktig å vite:
  • priority er en erklært rangering, ikke en avgjørelsesregel. Ingenting i innhøstingen velger verdi ut fra den.
  • Hver innhøsting skriver en observasjon per kilde, med kildens rå verdi og den normaliserte. Er to kilder uenige, står begge observasjonene der; ingen av dem vinner av seg selv.
  • En uenighet blir først synlig i matches.has_conflicts når noen har ført den inn som en konflikt. Feltene i matches.manual overskrives aldri av en senere innhøsting.
  • Sier du noe om en kamp der kildene er uenige, oppgi begge verdiene og hvilken kilde de kommer fra, framfor å velge en side.
KolonneTypeBetydning
provider_idtextKildens ID.
nametextKildens navn.
urltextKildens nettadresse.
priorityintegerKildens rangering. Den avgjør IKKE automatisk hvem som vinner en konflikt; se conflicts i matches og caveats over.
licensetextLisens, der den er kjent.
automated_accesstextOm kilden kan hentes automatisk: allowed, permission_required, blocked eller unknown.
public_redistributiontextOm data derfra kan publiseres videre: allowed, permission_required, denied eller unknown. Et annet spørsmål enn om den kan hentes.
attribution_requiredinteger (0/1)Om kilden krever kreditering.
permission_statustextHva motparten har svart: not_needed, pending, requested, granted eller denied. Sier ingenting om hva vi har bestemt.
ingest_decisiontextHva vi har bestemt: blocked, pending, allowed eller accepted_risk. «accepted_risk» betyr at prosjekteier har valgt å gå videre uten tillatelse, ikke at tillatelse finnes.
permission_requested_attext (YYYY-MM-DD)Når forespørselen ble sendt.
risk_accepted_attext (YYYY-MM-DD)Når risikoen ble akseptert.
risk_accepted_bytextHvem som aksepterte den.
terms_checked_attext (YYYY-MM-DD)Når vilkårene sist ble lest av et menneske.
robots_checked_attext (YYYY-MM-DD)Når robots.txt sist ble kontrollert.
permission_notetextHva som er avklart, hvem som er spurt, og hva som gjenstår.
notetextForbehold og dekningsområde.

contributions

Brukerinnsendte bidrag, observasjoner og minner hentet fra innboksen.

Viktig å vite:
  • Bare godkjente bidrag som har gått gjennom redaksjonell kontroll ligger her.
  • Bidrag knyttes til enten en kamp (target_id = match_id) eller en sesong (target_id = årstall). Sjekk scope ('match' eller 'season') for å se hva target_id peker på.
KolonneTypeBetydning
idtextUnik ID for bidraget.
scopetext'match' eller 'season'.
target_idtextKamp-ID eller sesongår.
categorytextKategori, f.eks. 'memory', 'context', 'trivia', 'event_detail'.
texttextSelve innholdet.
contributortextForfatterens navn.
submitted_attext (YYYY-MM-DD)Innsendingsdato.
verificationtextGrad av bekreftelse: 'unverified', 'corroborated' eller 'verified'.
source_urltextEventuell kildelenke for påstanden.

sources

Historisk materiale og kilder fra Nasjonalbiblioteket og AaFK Historiske arkiv.

Viktig å vite:
  • Inneholder bøker, medlemsblader, årsmeldinger og andre dokumenter.
  • Selve innholdet er ikke lagret her, men kan leses via access_url.
KolonneTypeBetydning
idtextUnik ID for publikasjonen.
parent_source_idtextID for kildens serie (f.eks. aafk-medlemsblad).
titletextTittel.
source_typetext'book', 'anniversary_book', 'member_magazine', 'annual_report', 'match_program', 'supporter_publication', 'local_history_book', 'newspaper_supplement', 'series' eller 'other'.
issuetextUtgave.
volumetextÅrgang/Volum.
publishertextUtgiver, f.eks. Aalesunds fotballklubb.
yearintegerUtgivelsesår.
urntextStabil bibliografisk identifikator, som regel Nasjonalbibliotekets URN. NULL når ingen er kjent.
authortextForfatter eller redaktør. NULL når katalogposten ikke oppgir noen.
descriptiontextKort beskrivelse av hva kilden inneholder. NULL når ingen er skrevet.
cover_urltextLenke til forsidebilde.
access_urltextLenke for å lese publikasjonen hos kilden.
urltextLenke til visningssiden på vårt nettsted.

Eksempelspørringer

Disse kjøres som en del av testene, så de virker alltid mot datasettet slik det er nå.

Hvilke kamper har xG-data, og hva var forskjellen?

SELECT date, opponent, aafk_xg, opponent_xg,
       aafk_xg - opponent_xg AS xg_difference, url
FROM matches
WHERE aafk_xg IS NOT NULL AND opponent_xg IS NOT NULL
ORDER BY date DESC

Når tapte vi sist med 6 mål på hjemmebane?

SELECT date, opponent, aafk_score, opponent_score, competition, url
FROM matches
WHERE is_home = 1 AND result = 'T' AND goal_difference <= -6
ORDER BY date DESC
LIMIT 1

Hvilken motstander har vi tapt flest ganger mot?

SELECT opponent, losses, played, wins, draws
FROM opponents
ORDER BY losses DESC
LIMIT 5

Hvor mange mål scoret vi i 2024?

SELECT sum(aafk_score) AS mal, count(*) AS kamper
FROM matches
WHERE season = 2024 AND status = 'played'

Hvilke sesonger har vi hatt best målforskjell?

SELECT season, competition, goal_difference, final_position
FROM seasons
ORDER BY goal_difference DESC
LIMIT 5

Finnes det referat som nevner snuoperasjon?

SELECT match_id, date, opponent, summary, url
FROM reports
WHERE reports MATCH 'snuoperasjon'
ORDER BY date DESC

Hva er den eldste kampen i arkivet?

SELECT date, opponent, is_home, aafk_score, opponent_score, competition, url
FROM matches
ORDER BY date ASC LIMIT 1

Hvor mange kamper har vi fra hvert tiår?

SELECT substr(date, 1, 3) || '0-tallet' AS tiar, count(*) AS kamper
FROM matches
GROUP BY tiar ORDER BY tiar

Har vi noen gang vunnet en cupkamp på straffer?

SELECT date, opponent, aafk_score, opponent_score, url
FROM matches
WHERE decided_on_penalties = 1 AND won_on_penalties = 1
ORDER BY date DESC

Er det lagt inn noen bidrag eller minner om kamper mot Brann i 1998?

SELECT c.text, c.contributor, c.verification
FROM contributions c
JOIN matches m ON c.target_id = m.match_id
WHERE c.scope = 'match' AND m.opponent = 'SK Brann' AND m.season = 1998

Hvilke medlemsblader har vi fra 1970-tallet?

SELECT title, year, access_url
FROM sources
WHERE source_type = 'member_magazine' AND year BETWEEN 1970 AND 1979
ORDER BY year ASC

Slik er spørrefunksjonen begrenset

Spørrefunksjonen kan kjøre egne SELECT-spørringer mot tabellene over. Det er dét som gjør at den kan svare på spørsmål ingen har laget et ferdig oppslag for. Grensene er:

  • Arkivfilen åpnes skrivebeskyttet. Et forsøk på å endre noe avvises av SQLite selv, ikke av koden vår.
  • Spørringen kjører i en egen prosess som avlives ved timeout, og den ser bare tabellene dokumentert på denne siden — ikke rådataene bak dem.
  • Én setning per spørring, og bare SELECT.
  • Maks 200 rader og 3 sekunders kjøretid.
  • Hver spørring som kjøres vises under svaret, så du kan etterprøve hva svaret bygger på.

Referattekst i arkivet er skrevet av bidragsytere. Spørrefunksjonen behandler slikt innhold som data, aldri som instruksjoner til seg selv.