Mer om semweb-utveckling och nya features på lagen.nu

Nu har det varit obegripligt tyst här på bloggen ett bra tag, trots
att det hänt massor som är värt att berätta om. Eller så är det just
för att det hänt massor som det varit tyst på bloggen.

I vart fall så har sommaren ägnats åt lagen.nu-projektet, som nu går
in i sin tredje månad. Jag har delat min tid ungefär lika mellan
systemutveckling av själva teknikplattformen och projektledning av de
som skriver. Den senare delen av arbetet är förstås den mest
spännande, men den kan med fördel följas på
lagen.nu-utveckling-listan, som jag tycker du ska gå med på. Eller så
kan du bli ett fan av lagen.nu på facebook!

Men teknikutvecklingen har jag inte skrivit så mycket om varken här
eller där, så nu är det dags. Den ombyggnad som jag beskrev här, som
rör hur data från olika källor pusslas ihop med hjälp av SPARQL, har
driftssatts och funkar hyfsat bra. Jag har en del problem med Sesame,
där vissa saker tar omotiverat mycket tid, särskilt på
linuxplattformen, men det funkar iaf, sort of. Jag har också fått en
del tips på hur man kan undvika de långa kedjor av w
dct:isPartOf x . x dct:isPartOf y . y dct:isPartOf z
som
jag idag använder. Lösningen går ut på att tala om för Sesame att
dct:isPartOf är en TransitiveProperty och sedan be
Sesame använda inference — på det viset kan Sesame själv förstå att
w dct:isPartOf z. Exakt hur man faktiskt
gör det har jag dock inte läst mig till än.

Den nya versionen finns i betatest på ferenda.lagen.nu, och vana
lagen.nu-besökare kommer se ett antal förändringar redan i den
grafiska designen. Sidorna är uppbyggda med en smal högerkolumn som
oftast visar någon innehållsförteckning eller liknande, samt två lika
breda kolumner som visar själva dokumenttexten, samt metadata kring
dokumentet, exempelvis en kommentar till en paragraf, eller en lista
av rättsfall som hänvisar till paragrafen. Varje kategori av metadata
visas i en box som kan expanderas eller kollapsas. Det finns även en
ny kategori av rättsinformation vid sidan av ”Lagar” och ”Domar”,
nämligen ”Begrepp” (men säg inte till någon jurist att jag betraktar
begrepp som en rättskälla, då blir jag anklagad för att syssla med
begreppsjurisprudens).

Utöver denna nya formgivning finns även ett antal nya funktioner. Jag
tänkte gå igenom två av dem och visa hur den RDF/SPARQL-baserade
plattformen gjort det snabbare att lägga till dem. Att lägga till ny
funktionalitet på lagen.nu innebär att på ett eller annat sätt utvinna
data (dokument) och metadata (egenskaper hos dokument) om/från
rättskällor, för att sedan presentera och framförallt korskoppla denna
data/metadata.

”Lagrum som hänvisar hit”: Bredvid varje paragraf så finns det en box
(med rubriken ”Lagrumshänvisningar hit”) som innehåller en lista över
olika ställen i denna eller andra lagar som hänvisar till den aktuella
paragrafen. Minnesgoda bloggläsare känner igen detta från det
paper
jag och Christine Kirchberger skrev förra
vintern
. Det är också implementerat på ungefär samma sätt, med en
SPARQL-fråga vars svar vävs ihop med lagtexten genom XSLT. Den största
skillnaden är att jag vid sidgenereringen ställer ett antal olika
SPARQL-frågor (en för varje boxtyp, ungefär), väver ihop svaren till
en RDF/XML-fil, som sedan används från XSLT. Det finns lite kvar att
göra på den här funktionen, framförallt kryptiska beteckningar i stil
med ”SFS 2000:1225, P1S4” bytas ut mot kryptiska beteckningar i stil
med ”1 § 4 st lagen (2000:1225) om straff för smuggling”.

Den här funktionen kunde alltså realiseras med hjälp av metadata som
redan fanns, och det system för att väva ihop data och medatada som
också redan fanns. Den enda nyutvecklingen var en ny SPARQL-fråga och
en ny funktion i XSLT-stylesheetet.

”Legaldefinitioner”: I lagtext finns det ofta olika typer av
begreppsdefinitioner. Dessa definitioner förekommer vanligtvis i
samband med någon form av fasta uttrycksformer:

Tabellform, exv PUL 3 §:

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

Beteckning Betydelse
Personuppgifter All slags information som direkt eller
indirekt kan hänföras till en fysisk person som är i livet.

Listform, exv LEK 1:7:

I lagen avses med

abonnent: den som har ingått avtal med en leverantör av allmänt tillgängliga elektroniska kommunikationstjänster om tillhandahållande av sådana tjänster,

Löpande form, exv PAL 2
§
:

Med produkter avses i denna lag lösa saker. En produkt som har infogats eller på annat sätt blivit en beståndsdel i någon annan lös egendom eller i fast egendom skall alltjämt anses i lagens mening utgöra en produkt för sig.

Parantesform, exv JB 4:19 a

Köparen får inte åberopa att fastigheten är felaktig enligt 11, 12 och 17–19 §§, om han inte lämnar säljaren meddelande om felet inom skälig tid efter det att han märkt eller borde ha märkt felet (reklamation).

Brottsrubriceringsform, exv BrB 17:4

Den som, utan att fall är för handen som förut i detta kapitel är
sagt, genom att sätta sig till motvärn eller eljest med våld söker
hindra någon i hans myndighetsutövning, dömes för våldsamt
motstånd
till böter eller fängelse i högst sex månader.

En definition av ett begrepp som finns i lagtext kallas vanligen
legaldefinition och har förstås en särskild tyngd jämfört med de
definitioner som vi vanliga dödliga kan åstadkomma. Därför är det
intressant att försöka känna igen legaldefinitionsmässigt. Hur man gör rent
textprocessingsmässigt för att göra det tänker jag inte gå in på här,
men den korta versionen är att det inbegriper ett stort antal, allt
hårigare, regexpar. Den långa versionen finns i den allt mer feldöpta
funktionen _construct_ids. Det är i vart fall inte särskilt svårt, utan jobbet ligger mest i att hitta de olika uttrycksformerna och skriva testfall. Poängen
är att efter vi kört våra regexpar så har vi ytterligare drygt tusen
RDF-triples på formen:

<http://rinfo.lagrummet.se/publ/sfs/1962:700#K17P4>
dct:subject "Våldsamt motstånd"@sv

Under den nya fliken ”Begrepp” har vi samlat begrepp från
3½ olika håll – de begrepp vi själva beskrivit i
lagkommenteringsprojektet, de begrepp som används som sökord i
rättsfall och de legaldefinitioner som vi utvunnit enligt ovan (samt
information om huruvida svenska Wikipedia har en sida om
begreppet).

För att skapa en sådan sida — exempelvis för begreppet ”Konsument”
hämtar vi all data från Sesame. Tre SPARQL-frågor, samma process för att slå ihop svaren
till en RDF/XML-fil, (nästan) samma process för att väva ihop ett
källdokument (som i detta fallet bara innehåller själva begreppet som
titel) med RDF-datan. Ny funktionalitet med ganska liten arbetsinsats.

(Även innehållsförteckningarna under flikarna ”Lagar”, ”Domar” och
”Begrepp” genereras nu på samma sätt — in med en stor RDF-graf, några
konfigurationsparametrar och ut kommer ett antal hundra sidor som
sammanlagt bildar ett index över all information av en viss typ som
finns i systemet).

2 reaktioner till “Mer om semweb-utveckling och nya features på lagen.nu”

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