Wikipedia:Problemet med beregning av alder
Problemet med beregning av alder er en opplisting av noen av problemene og hvordan de kan løses. Generelt er alder noe som omtales nokså omtrentlig, men skal det beregnes står en ovenfor flere problemer. Hvis disse ikke løses så vil de gi feil beregnet alder i noen av tilfellene. Det er ikke slik at alderen alltid blir feil, den vil bli feil noen ganger, og i noen tilfeller slik at feil kan påvises.
Fenomenet «alder» kan beskrives som dødsdato og tidspunkt, eller nådato og tidspunkt, minus fødselsdato og tidspunkt, hvor dato-tid er angitt i et tidssystem som er universelt. For å få dette over i år (tolking av «år» er tvetydig, men den vanligste tolkingen av alder er normalår) så deles dette på lengden av et «år» og deretter tar en heltallsdelen.
Problemene som oppstår generelt er
- 1. Hva er et «år»
- 2. Hvilken kalender er brukt for fødsels- og dødsdatoer hvis dette ikke er oppgitt
- 3. Hvilken tidssone er brukt for fødsels- og dødsdato hvis dette ikke er oppgitt
På Wikipedia er det et spesielt problem
- 4. Alder for levende mennesker endrer seg, men artikler mellomlagres i lang tid
Punkt 2 og 3 er ofte underforstått hvis det ikke eksplisitt skrives ut hva som er kalender og tidssone. Hvis en dato er så gammel at det kan antas at personen er født og død mens juliansk kalender var i bruk så kan alder beregnes utfra denne. Det enkleste er da å bruke en kalendermodell for alderen. Når datoer oppgis uten at det er en klar formening om stedets tidssone så kan lengdegraden brukes til å beregne datoforskyvningen, hvis en trenger den ekstra presisjonen.
Merk at punkt2 «kalenderproblemet» kun er en av flere feilkilder.
Punkt 4 vil alltid være tilstede på Wikipedia slik tjenesten nå er satt opp. Grunnen er at for å kunne serve de massive mengdene med innhold så mellomlagres (caches) sider aggressivt. Når dette skrives så brukes det en maksimal lagringstid på 90 dager. Det betyr at hvis en biografi for en levende person blir regenerert dagen før fødselsdagen så vil alderen være feil i inntil 89 dager, eller inntil noen gjør en redigering på siden eller noe annet som berører siden.
Definisjon av «år»
[rediger kilde]Tolking av «år» er tvetydig, og de vanligste tolkingene er omløpstid rundt solen, kalenderår, normalår, og det avvikende skuddår. Forskjellige kalendere har også basert seg på forenklinger. Den julianske kalenderen mangler fratrekket av en dag per 100 år og tillegg av en dag per 400 år. Dette gjør at datoer oppgitt i en kalender avviker fra datoer oppgitt i en annen kalender. En skulle tro at omløpstid er enklere, men det opplagte «siderisk omløpstid» er ikke det vi observerer, vi ser «tropisk periode» fordi jorden har en langsom presesjonsbevegelse. En vanlig tolking er at året tilsvarer «drakonisk omløpstid», men dette er feil.
Den alminnelige oppfatningen er at alder kan beregnes utfra oppgitt dato, og at datolikhet impliserer at en er «ett år eldre». Dette er riktig i gjennomsnitt hvis en følger den gregorianske kalenderen og målet er alder i henhold til «tropical period». Alder vil da være innenfor avvik på omtrent ett kvart døgn, men denne regnefeilen gir et faktisk avvik i alder på ett år etter at tallet er rundet ned.
De enkle tilfellene
[rediger kilde]Hvis en person har angitt fødsels og dødsdato med den gregorianske kalenderen, og forskjellen i dato er mer enn tre dager, så vil alder angitt i år alltid være rett. Skal en løse opp feilen på tre dager må det justeres for skuddårsdager, dette er en enkelt dag, og skal en fjerne mer av feilen må se på tidspunkt og sted.
Fordi det er tre dager som gir usikkerhet i beregning av alder, og et år er på 365,2421875 døgn, så er det omtrent 0,82% av tilfellene som må sjekkes for feil. Disse tilfellene kan gi feil, men de trenger ikke gjøre det. Kanskje kan en akseptere at noen får feil alder?
De vanskelige tilfellene
[rediger kilde]Når en skriver leksikon så er mange av biografiene om historiske personer. Disse kan ha fødsels- og dødsdatoer oppgitt i andre kalendre. Av og til kan personer være født når en kalender brukes, og de kan ha dødd når en annen kalender er tatt ibruk. Noen steder er kalenderen endret flere ganger, slik som i Sverige. Der brukte de den julianske kalenderen, før de byttet til den svenske kalenderen (fra 1. mars 1700 til 30. februar 1712), byttet tilbake til den julianske kalenderen, for så å bytte til den gregorianske kalenderen 17. februar 1753.
Personene kan også ha blitt født på et sted hvor en kalender har blitt brukt, og deretter flyttet til et sted hvor en annen kalender er brukt. Storbritannia med besittelser byttet fra den julianske og til den gregorianske i 1752, og Russland byttet i 1918. Det betyr at om en person ble født i Russland før 1918 og emigrerte til tidligere britiske besittelser i USA så ville datoene for fødsel og død være referert til forskjellige kalendersystem. Begge datoene vil kunne omregnes til det andre kalendersystemet. Ofte vet vi ikke hvilken kalendersystem som er brukt, men vi gjør antakelser utfra hvor en person er født eller dør.
Byer og steder har gjerne endret kalenderen som følge av at landet de er en del av har endret kalenderen. Fordi grenser er endret gjennom historien må de grensene brukes som var gyldige på det aktuelle tidspunktet. Hvilken statsdannelse var Königsberg del av, og når endret de kalenderen? Før det finnes et vedtak om tilhørighet til en tidssone så kan en bruke stedets lengdegrad som utgangspunkt for å fastsette datoen, men merk at dette ikke alltid er korrekt.
Når en vet hvilken kalender som er i bruk, den julianske eller gregorianske, så er det relativt enkelt å regne seg om fra den ene til den andre. Dette er beskrevet på Conversion between Julian and Gregorian calendars. Generelt må det lages slike konverteringstabeller for alle kalendere, det er ganske mange List of calendars, men på Wikipedia blir det litt enklere fordi Wikidata kun støtter noen ganske få kalendermodeller. Skal en tilpasse datoer lokalt her i Norden så må det nok likevel tas høyde for den svenske kalenderen.
Hvis en har regnet om mellom kalendermodellene, og gjort de nødvendige justeringer, så er en tilbake på det enkle tilfellet hvor usikkerheten er knyttet til tre dager gitt at en kun er ute etter alder i antall år.
Høyere oppløsning
[rediger kilde]Hvis en skal beregne alder (eller et lignende fenomen) med høyere oppløsning, så må en ha et fødselstidspunkt. Et tidspunkt vil relatere til lokal tid, og idag vil det si at en må forholde seg til tidssoner. Tidligere kunne steder ha sin egen lokale tid, og noen jernbaneselskap opererte også med sin egen tid. Jernbaneselskapenes tidsangivelse er ikke så aktuell på Wikipedia, men lokal tid kan dukke opp.
For det enkle tilfellet kan en bruke stedet som inngang, og så traversere opp ved hjelp av del av (P361) inntil vi finner en angivelse av tidssone (P421). Gitt at kvalifikatorene stemmer så er dette tidssonen som er i bruk på stedet der noen ble født eller døde. Hvis tidspunktet da er kjent så kan alderen beregnes med høyere oppløsning, og i grensetilfellet ned til to ganger usikkerheten ved tidsangivelsen. Er timen angitt så er feilen redusert til to timer. Er minuttet angitt så er feilen nede i to minutter.
Hvis feilen er nede i to timer så betyr det at vi kan beregne alderen til en person som antall år hvis forskjellen i dato-tid mellom fødsel og død er mer enn to timer. Her er det snakk om en dato uten årstall. Desto nærere disse to er, desto høyere oppløsning må vi ha på dato-tid for å få riktig antall år.
Ulempen med tidssoner er at det stadig gjøres endringer, som oftest ved at stater velger å bruke sommertid eller avslutter bruk av sommertid. Det er også forskjell på når sommertid tas ibruk. Disse dataene må vedlikeholdes og oppdateres.
Levende personer og lagrede artikler
[rediger kilde]Nålevende personer er av de enkle tilfellene ved selve beregningen, men er litt vanskelige fordi artiklene lagres på serverene. Lagringen er litt sammensatt, men kan forenkles til at det finnes en utgave av artikkelen som lages og vises frem ved senere spørringer. Denne lagrede versjonen lever videre i flere måneder, og i denne perioden vil den tidligere genererte verdien for alder leve videre.
Hvis en side blir redigert, også nullredigert, eller den blir eksplisitt slettet (purg'a) så vil siden bli generert på nytt. Det samme skjer hvis noe som inkluderes eller transkluderes på siden blir redigert. At en mal blir purg'a er ikke tilstrekkelig til at sider blir regenerert.
En mulig løsning er å la en bot purge biografier på fødselsdager, men å gjøre seg avhengig av flere botter er ikke noen ønsket situasjon. En annen er å senke cache-time generelt, men dette er nok også uønsket. En tredje er å lage en parser-funksjon for å korte ned cache-time om det er en kommende fødselsdag. Dette er muligens beste løsningen, men det er mye arbeid å skrive en slik funksjon å få den godkjent.
Et siste alternativ som ikke forutsetter endring av cachingen, er at mal/modul beregner så mye som mulig og så gjøres den siste bergningen og formateringen av Javascript. Dette kan gjøres slik at teksten kun oppdateres om resultatet er et annet enn mal/modul har beregnet. Malen formaterer fødsels og eventuelt dødsdato, men på en slik måte at disse angis mer eksakt i attributter slik som data-birth-dtg="…"
og data-death-dtg="…"
. I disse lagres datoene på ISO 8601-format. En kan da beregne tilnærmet riktig alder, normalt med pluss/minus presisjonen til verdiene. Kun hvis dødsdato mangler må levealderen beregnes av Javascript, hvis ikke kan malen (eller modulen) beregne alderen.
Så hva mangler
[rediger kilde]Selve koden for å gjøre de nødvendige sjekkene er ikke spesielt vanskelig å få til. Det som er vanskelig å få på plass er nøyaktig angivelse av fødsel og død. Ofte er datoen tilstrekkelig, men av og til må det til en tidsangivelse. Disse dataene er ikke alltid tilgjengelig.
Det må også på plass angivelse av tidssoner for de aktuelle stedene, og stedene må også defineres. Hvis en person er født eller død på et sted som ikke er definert på Wikidata så er vi like langt.
Når de forskjellige tidssonene er gyldige er et problem i seg selv. I de fleste tilfellene består dette i å angi tidssonedata for de enkelte landene og oppdatere disse. De må også defineres bakover i tid.
De forskjellige landene må også gis informasjon om hvilke kalendermodeller som har vært i bruk på hvilket tidspunkt.