Specialbehandla eller arbeta runt?

Jag upptäckte just ett fel i SFST, dvs den databasen som innehåller alla svenska lagtexter i konsoliderad form, och som ligger till grund för lagen.nu Inget unikt med det, det förekommer fel där då och då, vilket jag vanligtvis märker genom att någon kodsnutt går sönder eftersom den inte var skriven för att indatat skulle vara så trasigtmärkligt. Över tiden har jag utvecklat ett system för att hantera sådana här felaktigheter – jag skriver helt enkelt en patch, som appliceras först av allt innan resten av parsekoden kör.

Som ett exempel på ett typiskt fel, kolla 3 § PUL i SFST:

3 § I denna lag används följande beteckningar med nedan angiven
betydelse.


Beteckning                      Betydelse

Behandling (av person)          Varje åtgärd eller serie av
uppgifter)                      åtgärder som vidtas i fråga om
                                personuppgifter, vare sig det
                                sker på automatisk väg eller inte,
                                t.ex. insamling, registrering,
                                organisering, lagring, bearbetning
                                eller ändring, återvinning, inhämtande,
                                användning, utlämnande genom
                                översändande, spridning eller annat
                                tillhandahållande av
                                uppgifter, sammanställning eller
                                samkörning, blockering,
                                utplåning eller förstöring.

Dvs vänstercellen i tabellen har en högerparantes där det borde vara ett bindestreck.

Detta löses genom en patch i unified diff-format. Den appliceras, resten av parsningen tar vid, resultatet blir fint (och, nota bene, med en liten förklaring om att texten faktiskt har ändrats – transparens är viktigt).

(jo, jag har rapporterat det upstream också, och de som sköter SFST vet var de kan hitta mitt patcharkiv. Vissa fel har rättats med tiden, men inte alla).

Generellt försöker jag låta bli att lösa parsningsproblem med en patch – i en korpus så stor som SFST kan man nästan utgå från att alla tänkbara klasser av fel förekommer fler gånger. Om det är möjligt att lösa problemet generellt i själva parsningen, genom någon typ av workaround, är det att föredra framför att specialbehandla lagtext för lagtext. Ovanstående fel tror jag inte är möjligt att hantera generellt.

Men nu har jag hittat ett fel som är sådär på gränsen: I köplagens första paragraf, fjärde stycket finns texten ”Vid köp av byggnad som uppförts för stadigvarande bruk gäller […] vad som föreskrivs i 4 kap. 11, 12 och 18–19d §§ jordabalken”

Felet här är i slutet av meningen – den avslutas med en lista av hänvisningar, där den sista går till 4 kap. 19 d § jordabalken. När lagstiftaren ändrar en lag så vill denne ibland stoppa in nya paragrafer mellan exv 19 § och 20 § — dessa får då beteckningarna 19 a §, 19 b § osv.

(Sidnot: Amerikanska lagstiftare har i allmänhet löst det här på ett sätt som är mer tilltalande för gamla basicprogrammerare – kolla exempelvis Oregons reglering av forumregler i civilmål och notera att numreringen lämnar gott om utrymme att stoppa in nya bestämmelser mellan de befintliga, vilket också görs då och då).

Det svenska sättet att stoppa in nya paragrafer gör det krångligare att skriva en parser för lagtext — den måste klara av uttrycket ”3 §”, ”3 och 4 §§”, ”3 e §”, ”3 eller 4 §” och många många fler (glöm för allt i världen inte att ”10 § f” är något helt annat än ”10 f §”). Den EBNF-grammatik som används har vuxit fram organiskt över några år, och kan ge känsliga personer mardrömmar.

Av den anledningen blir jag lite kallsvettig varje gång jag ser ett nytt sätt att hänvisa till lagrum som systemet inte klarar av att parsea. Exemplet ovan — som kan förenklas till ”19d § jordabalken” — är ett sådant. Med den skillnaden att hänvisningen faktiskt är felaktig: paragrafen har nummer ”19 d”, inte ”19d”.

Så frågan är: Ska jag fixa det med specialbehandling, dvs skriva en patch, eller ska jag försöka arbeta runt problemet genom att ändra min EBNF-grammatik? En vägledning kan man få genom grep — vi kan helt enkelt kolla hur många andra förekomster av det här felaktiga sättet att hänvisa som vi hittar:

find data/sfs/intermediate -name "*.txt" | xargs  egrep '[0-9][a-z] §'
data/sfs/intermediate/1980/770.txt:5 § Vid tillämpning av 11a § tredje stycket kungörelsen (1972:412 ) om
data/sfs/intermediate/1990/931.txt:kap. 11, 12 och 18--19d §§ jordabalken. Om en tomträttsupplåtelse enligt
data/sfs/intermediate/1995/238.txt:-- 22--23, 25--26, 30 och 35--44a §§ kungörelsen (1969:380) om
data/sfs/intermediate/1995/238.txt:vapenfri tjänst skall 12--17a §§ kungörelsen (1966:414) med vissa
data/sfs/intermediate/1996/844.txt:d) Bestämmelserna om sanktioner i 31a-31e §§ lokalradiolagen
data/sfs/intermediate/1997/1157.txt:reglerna, jfr 72a § lagen nr 612 den 24 juni 1996 om social
data/sfs/intermediate/1998/488.txt:stycket finns i 2a §. I fråga om utfärdande av nytt
data/sfs/intermediate/1999/1229.txt:Vad som sägs i 2 kap. 3 §, 6 kap. 5, 10a och 16a §§, 17kap.

Ok, åtta fel är inte jättemånga, men jag får väga risken av att introducera nya fel genom en ändrad grammatik (vilken hålls nere av ett stort batteri med testfall) mot det tråkiga och tidskrävande arbetet att göra åtta patchfiler (samt den potentiella nyttan av att de appliceras upstream).

7 reaktioner till “Specialbehandla eller arbeta runt?”

  1. 1. Vad är syftet med lagen.nu? Spegla en databas eller återge en rättad version? Om återge en rättad version vem avgör vad som är rätt? Även felaktigt publicerad lagtext är gällande rätt fram till att den är rättad.

    2. Du har även två ansvarsfriskrivningar. Dels en längst ner på varje sida, dels en på en separat sida. Dessa upplyser enligt min mening läsaren om att lagen.nu är en spegling, inte en rättelse.
    Denna sista del har du på sätt och vis ingen ansvarsfriskrivning för

    (http://ferenda.lagen.nu/om/ansvarsfriskrivning.html):”så utgår jag från lagarna som de är publicerade i Regeringskansliets rättsdatabaser” och att fel kan införas genom den automatiska bearbetningen.

    Med en rättning av lagtexten så utgår du förvisso från originalet men du förändrar innehållet. En korrekt återgiven spegling, återger även fel. En felaktigt återgiven spegling återger rättad lagtext. Du introducerar fel som kan skapa en osäkerhet hos läsaren och nästa gång kanske det är en paragraf 1 a § som hamnar mellan 3:1 och 3:2 BrB 🙂

    3. En person som vid ett tidigare tillfälle läst en felaktig lagtextext och därefter vill använda sig av BrB 24:9 och som stöd för sitt påstående använder en elektronisk spegling av lagen.nu kommer se att den är rättad och inte felaktigt återgiven. De behöver inte nödvändigtvis fäörstå att texten är rättad på lagen.nu, bara att den inte stödjer deras påstående.

  2. Detta är ju uppenbara transkriptionsfel. Inte kan väl lagstiftaren ha något emot att de rättas? Varför fixas inte detta upstream på fem röda?

  3. Alexander: Jag förstår dina invändningar, och jag funderade själv några varv innan jag överhuvudtaget införde möjligheten att patcha lagtext. Jag menar dock att rättelserna i det här fallet är befogade. Syftet med lagen.nu är att spegla gällande rätt, närmare bestämt vad som finns i den tryckta SFS (fast i konsoliderad form).

    Jag kan dock inte utgå från SFS så som den trycks, utan är begränsad till att använda vad som finns i SFST. När då SFST skiljer sig från SFS menar jag att det är rätt att rätta de misstagen. Som exempel kan man kolla på det sista exemplet, körkortslagen 5:2. Felet i SFST infördes när lagändringen SFS 2009:189 konsoliderades, och om man kollar på motsvarande SFS i tryckt form ser man att motsvarande misstag inte finns där.

    Jag rättar däremot inte exv stavfel som faktiskt förekommer även i den tryckta SFS.

    Vad gäller ansvarsfriskrivningar tycker jag att den ruta som upplyser om textändringar på exv sidan för PUL fyller en sådan funktion. Läsaren upplyses om att en ändring i någon form skett, och vad den ändringen gick ut på.

    (För rättsfall går jag däremot lite längre, där tillåter jag mig att patcha bort förekomster av personuppgifter såsom namn, personnummer och liknande, där dessa inte är relevanta för själva den rättsliga frågeställningen. Även här upplyses dock läsaren om att texten är ändrad)

  4. ”SFST skiljer sig från SFS” du har absolut en poäng i detta. Jag kunde inte komma ihåg vilket som hade företräde av dem båda. Jag läste igenom kungörandelagen men var osäker om de hade lika värde, men jag blandade nog in europarätten i denna del. Där ser man vad viktigt det är med de små detaljerna, juridik är i allra största grad ett finlir, av de små marginalerna och i så falll instämmer jag till fullo att korrigera datan från SFST till att korrekt spegla SFS är helt rätt.

    I så fall är även ansvarsfriskrivningen korrekt därigenom att du modifierar inte gällande rätt ”SFS” till att bli korrigerad, utan du korrigerar en redan upprättad felaktig spegling, SFST att motsvara SFS. Då jag tolkar ansvarsfriskrivningen läser jag in att den täcker oavsiktliga fel som kan uppstå vid den automatiserade databehandlingen av data och inte en avsiktlig förändring av lagen.nu:s spegling.

    Vad gäller personuppgifter tror jag det kan vara vettigt med tanke på den personliga integriteten åtminstone utifrån en hänsynssynpunkt mot både offer och gärningsmän och ingen borde behöva bli uthängd och stämplad som brottsling som inte ”längre” är det. Straffet är många gånger avverkat och ”brottet” är ju sonat samt det är inte heller det som är av intresse när man tar del av rättsfall, utan vad det prejudicerande värdet är samt att detta återges på ett korrekt sätt.

    Sedan kan man betrakta domar på nätet vilka innehåller personuppgifter ur en filosofisk synpunkt och jämställa dessa med en nutida variant av skampåle men det är ett annat ämne. Jag är däremot glad att det inte är av intresse för lagen.nu, det finns gott om sådana siter som utan att kunna hämta stöd på lagen.nu får sköta sina egna bataljer med datainspektionen.

    Fortsätt med det fantastiska jobbet!

  5. Av kuriosa förekommer även andra slags stavfel i SFST som speglas i lagen.nu, RB 25:4 p.1 ….uppehållasig…

    25:4 Beslut om reseförbud skall innehålla uppgift å det brott misstanken avser samt angiva den ort, där den misstänkte skall uppehållasig, och vad han i övrigt har att iakttaga.

  6. Alexander: Jo, sådana fel hittar man rätt ofta. I mån av tid slår jag upp motsvarande i SFS och ser om felet finns där också, annars rättar jag.

  7. Det är tragiskt att vi i detta land fortfarande inte publicerar lagtext från källan i ett format som har markup och tydligt markerar hänvisningar till andra lagar etc. utan lagen.nu ska behöva ta till mer eller mindre fuzzy-logic för att reda ut vad som menas.

    Vill man vara cynisk kan man säga att detta är rättspositivismen dragen till sin svenska extrem. Strunta i lagboken – det är ändå propositionen som gäller.

    Samtidigt undermineras detta av att både lagstiftaren och diverse myndigheter åt att skriva allt otydligare bestämmelser så att t.o.m. den enklaste upphandling av suddgummin måste gå 2 varv i förvaltningsdomstolarna innan någon vet vad som gäller. Men det håller ju i alla fall arbetslösheten i juristkåren nere…

Kommentarer kan inte lämnas på detta inlägg.