<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Staffan Malmgrens blogg &#187; semantic web</title>
	<atom:link href="http://blog.tomtebo.org/tag/semantic-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tomtebo.org</link>
	<description>Programmering, juridik, punkrock och andra trivialiteter</description>
	<lastBuildDate>Sun, 01 Jan 2012 14:51:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Is this on?</title>
		<link>http://blog.tomtebo.org/2011/08/04/is-this-on/</link>
		<comments>http://blog.tomtebo.org/2011/08/04/is-this-on/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 19:12:10 +0000</pubDate>
		<dc:creator>staffan</dc:creator>
				<category><![CDATA[law]]></category>
		<category><![CDATA[legal informatics]]></category>
		<category><![CDATA[rättsinformatik]]></category>
		<category><![CDATA[rättsinformation]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://blog.tomtebo.org/?p=896</guid>
		<description><![CDATA[Almost a year since my last post, so it&#8217;s time for a followup. And to mark the occasion, we will be switching the language of this blog to english.  The reason for my return to blogging, and also the subject &#8230; <a href="http://blog.tomtebo.org/2011/08/04/is-this-on/">Läs mer <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Almost a year since my last post, so it&#8217;s time for a followup. And to mark the occasion, we will be switching the language of this blog to english.  The reason for my return to blogging, and also the subject of today&#8217;s post, is that I&#8217;ve been working with legal information in all it&#8217;s aspects a lot lately. And these matters are not necessarily specific to Swedish law.</p>
<p>The subject of todays&#8217; post is an old text I wrote for the <a href="http://www.jure.se/ns/default.asp?url=visatitel.asp?tuid=15160">nordic yearbook of law and informatics</a> last year. It&#8217;s a brief introduction to semantic web concepts, with examples and use cases pertaining to legal information.</p>
<p>I hope some of you will find the attached <a href="http://blog.tomtebo.org/wp-content/uploads/2011/08/Legal_information_systems_and_the_Semantic_Web.pdf">Legal information systems and the Semantic Web</a> interesting and/or useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tomtebo.org/2011/08/04/is-this-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mer om semweb-utveckling och nya features på lagen.nu</title>
		<link>http://blog.tomtebo.org/2009/09/03/mer-om-semweb-utveckling-och-nya-features-pa-lagennu/</link>
		<comments>http://blog.tomtebo.org/2009/09/03/mer-om-semweb-utveckling-och-nya-features-pa-lagennu/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 19:58:25 +0000</pubDate>
		<dc:creator>staffan</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[lagen.nu]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://blog.tomtebo.org/?p=702</guid>
		<description><![CDATA[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 &#8230; <a href="http://blog.tomtebo.org/2009/09/03/mer-om-semweb-utveckling-och-nya-features-pa-lagennu/">Läs mer <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nu har det varit obegripligt tyst här på bloggen ett bra tag, trots<br />
att det hänt massor som är värt att berätta om. Eller så är det just<br />
för att det hänt massor som det varit tyst på bloggen.</p>
<p>I vart fall så har sommaren ägnats åt lagen.nu-projektet, som nu går<br />
in i sin tredje månad. Jag har delat min tid ungefär lika mellan<br />
systemutveckling av själva teknikplattformen och projektledning av de<br />
som skriver. Den senare delen av arbetet är förstås den mest<br />
spännande, men den kan med fördel följas på<br />
<a href="http://groups.google.com/group/lagennu-utveckling">lagen.nu-utveckling-listan</a>, som jag tycker du ska gå med på. Eller så<br />
kan du bli ett <a href="http://www.facebook.com/pages/lagennu/88949794519?ref=ts">fan av lagen.nu på facebook!</a></p>
<p>Men teknikutvecklingen har jag inte skrivit så mycket om varken här<br />
eller där, så nu är det dags. Den ombyggnad som jag beskrev <a href="http://blog.tomtebo.org/2009/06/30/en-arkitektur-for-webutveckling-med-semantic-web-koncept/">här</a>, som<br />
rör hur data från olika källor pusslas ihop med hjälp av SPARQL, har<br />
driftssatts och funkar hyfsat bra. Jag har en del problem med Sesame,<br />
där vissa saker tar omotiverat mycket tid, särskilt på<br />
linuxplattformen, men det funkar iaf, sort of. Jag har också fått en<br />
del tips på hur man kan undvika de långa kedjor av <code><nobr>w<br />
dct:isPartOf x . x dct:isPartOf y . y dct:isPartOf z</nobr></code> som<br />
jag idag använder. Lösningen går ut på att tala om för Sesame att<br />
<code>dct:isPartOf</code> är en <code>TransitiveProperty</code> och sedan be<br />
Sesame använda inference &#8212; på det viset kan Sesame själv förstå att<br />
<code><nobr>w dct:isPartOf z</nobr></code>. Exakt hur man faktiskt<br />
<b>gör</b> det har jag dock inte läst mig till än.</p>
<p>Den nya versionen finns i betatest på <a href="http://ferenda.lagen.nu/">ferenda.lagen.nu</a>, och vana<br />
lagen.nu-besökare kommer se ett antal förändringar redan i den<br />
grafiska designen. Sidorna är uppbyggda med en smal högerkolumn som<br />
oftast visar någon innehållsförteckning eller liknande, samt två lika<br />
breda kolumner som visar själva dokumenttexten, samt metadata kring<br />
dokumentet, exempelvis en kommentar till en paragraf, eller en lista<br />
av rättsfall som hänvisar till paragrafen. Varje kategori av metadata<br />
visas i en box som kan expanderas eller kollapsas. Det finns även en<br />
ny kategori av rättsinformation vid sidan av &#8221;Lagar&#8221; och &#8221;Domar&#8221;,<br />
nämligen &#8221;Begrepp&#8221; (men säg inte till någon jurist att jag betraktar<br />
begrepp som en rättskälla, då blir jag anklagad för att syssla med<br />
begreppsjurisprudens).</p>
<p>Utöver denna nya formgivning finns även ett antal nya funktioner. Jag<br />
tänkte gå igenom två av dem och visa hur den RDF/SPARQL-baserade<br />
plattformen gjort det snabbare att lägga till dem. Att lägga till ny<br />
funktionalitet på lagen.nu innebär att på ett eller annat sätt utvinna<br />
data (dokument) och metadata (egenskaper hos dokument) om/från<br />
rättskällor, för att sedan presentera och framförallt korskoppla denna<br />
data/metadata.</p>
<p><strong>&#8221;Lagrum som hänvisar hit&#8221;</strong>: Bredvid varje paragraf så finns det en box<br />
(med rubriken &#8221;Lagrumshänvisningar hit&#8221;) som innehåller en lista över<br />
olika ställen i denna eller andra lagar som hänvisar till den aktuella<br />
paragrafen. Minnesgoda bloggläsare känner igen detta från <a href="http://blog.tomtebo.org/wp-content/uploads/2009/04/lxml2008_submission_1.pdf">det<br />
paper</a> jag och Christine Kirchberger skrev <a href="http://blog.tomtebo.org/2008/12/05/antagen-till-jurix-workshop/">förra<br />
vintern</a>. Det är också implementerat på ungefär samma sätt, med en<br />
SPARQL-fråga vars svar vävs ihop med lagtexten genom XSLT. Den största<br />
skillnaden är att jag vid sidgenereringen ställer ett antal olika<br />
SPARQL-frågor (en för varje boxtyp, ungefär), väver ihop svaren till<br />
en RDF/XML-fil, som sedan används från XSLT. Det finns lite kvar att<br />
göra på den här funktionen, framförallt kryptiska beteckningar i stil<br />
med <em>&#8221;SFS 2000:1225, P1S4&#8243;</em> bytas ut mot kryptiska beteckningar i stil<br />
med <em>&#8221;1 § 4 st lagen (2000:1225) om straff för smuggling&#8221;</em>.</p>
<p>Den här funktionen kunde alltså realiseras med hjälp av metadata som<br />
redan fanns, och det system för att väva ihop data och medatada som<br />
också redan fanns. Den enda nyutvecklingen var en ny SPARQL-fråga och<br />
en ny funktion i XSLT-stylesheetet.</p>
<p><strong>&#8221;Legaldefinitioner&#8221;</strong>: I lagtext finns det ofta olika typer av<br />
begreppsdefinitioner. Dessa definitioner förekommer vanligtvis i<br />
samband med någon form av fasta uttrycksformer:</p>
<p>Tabellform, exv <a href="http://ferenda.lagen.nu/1998:204#P3">PUL 3 §</a>:</p>
<blockquote>
<p>I denna lag används följande beteckningar med nedan angiven<br />
betydelse.</p>
<table>
<tr>
<td>Beteckning</td>
<td>Betydelse</td>
</tr>
<tr>
<td valign="top"><b><i>Personuppgifter</i></b></td>
<td>All slags information som direkt eller<br />
indirekt kan hänföras till en fysisk person som är i livet.</td>
</tr>
</table>
</blockquote>
<p>Listform, exv <a href="http://ferenda.lagen.nu/2003:389#K1P7">LEK 1:7</a>:</p>
<blockquote>
<p>I lagen avses med</p>
<p><b><i>abonnent</i></b>: 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,</p>
</blockquote>
<p>Löpande form, exv <a href="http://localhost:8000/1992:18#P2">PAL 2<br />
§</a>:</p>
<blockquote><p>
Med <b><i>produkter</i></b> 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.
</p></blockquote>
<p>Parantesform, exv <a href="http://ferenda.lagen.nu/1970:994#K4P19a">JB 4:19 a</a></p>
<blockquote><p>
Köparen får inte åberopa att fastigheten är felaktig enligt 11, 12 och 17&#8211;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 (<b><i>reklamation</i></b>).
</p></blockquote>
<p>Brottsrubriceringsform, exv <a href="http://ferenda.lagen.nu/1962:700#K17P4">BrB 17:4</a></p>
<blockquote><p>
Den som, utan att fall är för handen som förut i detta kapitel är<br />
sagt, genom att sätta sig till motvärn eller eljest med våld söker<br />
hindra någon i hans myndighetsutövning, dömes för <b><i>våldsamt<br />
motstånd</i></b> till böter eller fängelse i högst sex månader.
</p></blockquote>
<p>
En definition av ett begrepp som finns i lagtext kallas vanligen<br />
<strong>legaldefinition</strong> och har förstås en särskild tyngd jämfört med de<br />
definitioner som vi vanliga dödliga kan åstadkomma. Därför är det<br />
intressant att försöka känna igen legaldefinitionsmässigt. Hur man gör rent<br />
textprocessingsmässigt för att göra det tänker jag inte gå in på här,<br />
men den korta versionen är att det inbegriper ett stort antal, allt<br />
hårigare, regexpar. Den långa versionen finns i den allt mer feldöpta<br />
funktionen <a href="http://trac.lagen.nu/browser/trunk/SFS.py#L908"><code>_construct_ids</code></a>. 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<br />
är att efter vi kört våra regexpar så har vi ytterligare drygt tusen<br />
RDF-triples på formen:</p>
<p><code>&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K17P4&gt;<br />
dct:subject "Våldsamt motstånd"@sv</code></p>
<p>
Under den nya fliken &#8221;Begrepp&#8221; har vi samlat begrepp från<br />
3½ olika håll &#8211; de begrepp vi själva beskrivit i<br />
lagkommenteringsprojektet, de begrepp som används som sökord i<br />
rättsfall och de legaldefinitioner som vi utvunnit enligt ovan (samt<br />
information om huruvida svenska Wikipedia har en sida om<br />
begreppet).</p>
<p>För att skapa en sådan sida &#8212; exempelvis för begreppet <a href="http://ferenda.lagen.nu/begrepp/Konsument">&#8221;Konsument&#8221;</a> &#8211;<br />
hämtar vi all data från Sesame. Tre SPARQL-frågor, samma process för att slå ihop svaren<br />
till en RDF/XML-fil, (nästan) samma process för att väva ihop ett<br />
källdokument (som i detta fallet bara innehåller själva begreppet som<br />
titel) med RDF-datan. Ny funktionalitet med ganska liten arbetsinsats.</p>
<p>(Även innehållsförteckningarna under flikarna &#8221;Lagar&#8221;, &#8221;Domar&#8221; och<br />
&#8221;Begrepp&#8221; genereras nu på samma sätt &#8212; in med en stor RDF-graf, några<br />
konfigurationsparametrar och ut kommer ett antal hundra sidor som<br />
sammanlagt bildar ett index över all information av en viss typ som<br />
finns i systemet).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tomtebo.org/2009/09/03/mer-om-semweb-utveckling-och-nya-features-pa-lagennu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>En arkitektur för webutveckling med semantic web-koncept</title>
		<link>http://blog.tomtebo.org/2009/06/30/en-arkitektur-for-webutveckling-med-semantic-web-koncept/</link>
		<comments>http://blog.tomtebo.org/2009/06/30/en-arkitektur-for-webutveckling-med-semantic-web-koncept/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 22:47:46 +0000</pubDate>
		<dc:creator>staffan</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[lagen.nu]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[webutveckling]]></category>

		<guid isPermaLink="false">http://blog.tomtebo.org/?p=681</guid>
		<description><![CDATA[Idag checkade jag in en ganska stor ändring i kodbasen för lagen.nu. Det är lite vanskligt att göra stora ändringar nu såhär en vecka innan lagkommenteringsprojektet drar igång på allvar, men just den här ändringen bör kunna göra det enklare &#8230; <a href="http://blog.tomtebo.org/2009/06/30/en-arkitektur-for-webutveckling-med-semantic-web-koncept/">Läs mer <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Idag checkade jag in <a href="http://trac.lagen.nu/changeset/285">en ganska stor ändring</a> i<br />
kodbasen för lagen.nu. Det är lite vanskligt att göra stora ändringar<br />
nu såhär en vecka innan <a href="http://wiki.lagen.nu/">lagkommenteringsprojektet</a> drar igång<br />
på allvar, men just den här ändringen bör kunna göra det enklare att<br />
pussla ihop ny funktionalitet jämfört med hur det ser ut idag.</p>
<p>Vad ändringen handlar om är att använda RDF på en djupare nivå än<br />
vad som gjorts hittils, och med verktyg som är bättre lämpade. Det jag<br />
har nu börjar kännas nära en arkitektur för att bygga<br />
webbtillämpningar på semantic web-koncept istället för den traditionella kombon <a href="http://foldoc.org/rdbms">RDBMS</a> + SQL + dynamiskt språk<br />
(eller den något mindre traditionella dynamiskt språk + MVC-ramverk + <a href="http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx">O/R-mappning</a>). </p>
<p>För att man ska förstå poängen börjar jag med att beskriva hur det har<br />
sett ut tidigare.</p>
<p>Innehållet på lagen.nu <a href="http://trac.lagen.nu/wiki/KodArkitektur">skapas i huvudsak i fyra<br />
steg</a>: Download, Parse, Relate och Generate. De två första stegen handlar<br />
om att hämta innehåll (lagtexter och rättsfall) från andra ställen,<br />
respektive att semantiskt strukturera upp detta (från de text- och<br />
wordfiler som laddats ner). Dessa berörs inte alls av ändringen.</p>
<p>Relate-steget är ganska enkelt: Det går igenom de strukturerade<br />
XHTML2/<a href="http://www.w3.org/TR/xhtml-rdfa-primer/">RDFa</a>-filer som<br />
skapats och plockar ut alla RDF-triples. Dvs från filer som innehåller<br />
både data (lagtext, domslutstext) och metadata (SFS-nummer, titlar,<br />
lagrumshänvisningar&#8230;) så plockas metadatat fram. Detta lagras sedan<br />
separat på lämpligt sätt.</p>
<p>Generate-steget tar sedan en strukturerad XHTML2-fil, exempelvis en<br />
lagtext och transformerar den till XHTML 1.0, färdigt att visas i en<br />
webbläsare. Denna transformering lägger till en massa information,<br />
exempelvis sidhuvud och sidfot, innehållsförteckning, och listor av<br />
relevanta rättsfall under varje paragraf.</p>
<p>För att göra det sista måste transformeringssteget på något vis ha<br />
tillgång till en lista över de relevanta rättsfallen. Tidigare har<br />
detta skett genom att Relate-steget konstruerat en (1) gigantisk<br />
RDF/XML-fil med information om samtliga 10 000+ rättsfall som finns i<br />
systemet, och XSLT-transformationen sedan laddat in denna med ett <a href="http://www.xml.com/pub/a/2002/03/06/xslt.html"><code>document()</code>-anrop</a>. Det<br />
funkar, men är både långsamt och oflexibelt.</p>
<p>Att skapa kopplingar mellan dokument genom systemets samlade metadata<br />
skulle kunna användas på rätt många olika sätt, men idag görs det bara<br />
på två sätt &#8212; dels för listorna på relevanta rättsfall under<br />
lagtextparagraferna, dels för att se till att bara de rättsfall som<br />
faktiskt finns i systemet är länkade i den lista över föregående<br />
rättsfall som finns bredvid varje rättsfall.  Det beror dels på att<br />
det är bökigt att implementera nya kopplingar, dels på att det just nu<br />
inte finns så mycket mer information i systemet än just lagtext och<br />
(svenska) rättsfall.</p>
<p>Men med lagkommenteringsprojektet börjar det senare<br />
ändras. Kommentaren för varje enskild paragraf lagras som ett<br />
RDF-påstående, på formen:</p>
<pre>&lt;http://rinfo.lagrummet.se/publ/sfs/1998:204#P13&gt; dct:description
"Huvudregeln för känsliga uppgifter är ..."</pre>
<p>Och även andra informationskällor ska in. Jag har fyra moduler i<br />
varierande stadier av halvfärdighet (för <a href="http://trac.lagen.nu/browser/trunk/RegPubl.py">propositioner och<br />
utredningsbetänkanden</a>, <a href="http://trac.lagen.nu/browser/trunk/ARN.py">Allmäna<br />
reklamationsnämnens praxis</a>, <a href="http://trac.lagen.nu/browser/trunk/JO.py">JO-beslut</a> och <a href="http://trac.lagen.nu/browser/trunk/Curia.py">EG-domstolens<br />
domslut</a>) och en på planeringensstadiet (EG-lagstiftning).</p>
<p>Med flera informationskällor växer möjligheten för användbara<br />
kopplingar exponentiellt. Under varje paragraf skulle man kunna lista<br />
namnen på den proposition som föranlett lagändringar i denna, eller<br />
namn på EG-direktiv som föranlett propositionerna. För varje sökord<br />
som rättsfall använder kan man skapa en sida som listar andra<br />
rättsfall med samma sökord. Och sen plocka in information från <a href="http://www.rikstermbanken.se/">rikstermbanken</a>, <a href="http://sv.wikipedia.org/">svenska Wikipedia</a> och förstås <a href="http://wiki.lagen.nu/">vår egen wiki</a>.</p>
<p>Om man kan skapa en koppling mellan EG-direktiv och svensk lag (på<br />
paragraf/artikelnivå) skulle man tillochmed skapa en koppling mellan<br />
svenska lagparagrafer och förhandsavgöranden från EG-domstolen för<br />
andra länder. Om ni bara kunde se in i huvudet på mig skulle ni<br />
förstå hur vackert allt kommer att bli.</p>
<p>Men systemet med att spara ner allt i gigantiska XML-blobbar och gräva<br />
igenom dessa med XSLT-funktionen <code>document()</code> skalar inte.</p>
<p>Så, vad dagens ändring gör är att byta ut metadatalagringen &#8211; från<br />
stora statiska filer till en <a href="http://www.openrdf.org/">RDF-databas</a>. Jag vet att det <a href="http://blog.tomtebo.org/2005/08/31/allt-du-lart-dig-om-webutveckling-ar-fel/">strider<br />
mot mina tidigare principer</a>, men med strax över en miljon poster<br />
(triples) har jag <a href="http://blog.tomtebo.org/2009/01/26/mediawiki-som-datalager/">insett</a><br />
att det faktiskt behövs.</p>
<p>Enligt den nya ordningen så stoppar Relate-steget in all metadata i<br />
Sesame-databasen istället för att stoppa in det i en gigantisk fil. I<br />
Generate-steget körs sedan ett antal <a href="http://www.w3.org/2009/sparql/wiki/Main_Page">SPARQL-frågor</a> mot denna databas,<br />
och sparar ner steget i en temporär XML-fil, som bara innehåller den<br />
information som är relevant för just det dokument som ska skapas. Den<br />
läses sen in med <code>document()</code> precis som tidigare. Skillnaden är att<br />
denna temporärfil är liten och därmed snabbprocessad, samt att<br />
utvecklingen för att stoppa ner nya datamängder i den är liten &#8211; dels<br />
en SPARQL-fråga, dels lite klisterkod för att mappa svaret till en<br />
XML-ig trädstruktur. Vad det gäller det senare hoppas jag kunna<br />
använda <a href="http://code.google.com/p/oort/wiki/SparqlTree">SPARQLTree</a><br />
för att kunna generalisera det helt.</p>
<p>Vad det gäller det förra så är det dock inte hel-enkelt att skriva bra<br />
SPARQL-frågor. Den enda hjälpen som är något att ha är själva specen,<br />
och den innehåller liksom inte så mycket tips av &#8221;for<br />
dummies&#8221;-karaktär. Det leder till att mina frågor är ganska yxiga än<br />
så länge. Förhoppningsvis inser jag hur de kan förenklas allt eftersom<br />
jag lär mig krypa på det här området.</p>
<p>Som ett exempel på svårigheterna kan nämnas hur man ska formulera en<br />
fråga som hämtar information alla rättsfall som hänvisar till en viss<br />
lag. Informationen om ett visst rättsfall lagras enligt följande mall<br />
(<a href="http://www.w3.org/DesignIssues/Notation3">N3-notation</a>):</p>
<pre>
@prefix dct: &lt;http://purl.org/dc/terms/&gt; .
@prefix rinfo: &lt;http://rinfo.lagrummet.se/taxo/2007/09/rinfo/pub#&gt; .

&lt;http://rinfo.lagrummet.se/publ/rattsfall/rh/2003:65&gt; a rinfo:Rattsfallsreferat ;
     dct:creator &lt;http://lagen.nu/org/2008/hovratten-for-nedre-norrland&gt; ;
     dct:description "En kvinna med en insulinberoende diabetes, åtalad för misshandel[...]"@sv ;
     dct:identifier "RH 2003:65"@sv ;
     dct:relation ""@sv ;
     dct:subject "Uppsåt"@sv ;
     rinfo:avgorandedatum "2003-11-21"@sv ;
     <b>rinfo:lagrum &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1P2S2&gt; </b>
     rinfo:malnummer "B24-03"@sv .
</pre>
<p>Det intressanta här är <code>rinfo:lagrum</code>-triplen (i fetstil). Det är fråga<br />
om ett rättsfall som hänvisar till brottsbalken, närmare bestämt 1<br />
kap. 2 § 2 st. Brottsbalken har i det här systemet URI:n<br />
<code>&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt;</code>.</p>
<p>En inititial SPARQL-fråga för att hämta information om alla rättsfall som hänvisar<br />
till brottsbalken kan se ut såhär:</p>
<pre>
PREFIX dct:&lt;http://purl.org/dc/terms/&gt;
PREFIX rinfo:&lt;http://rinfo.lagrummet.se/taxo/2007/09/rinfo/pub#&gt;

SELECT ?uri ?id ?desc
WHERE {
    ?uri rinfo:lagrum &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
    ?uri dct:identifier ?id .
    ?uri dct:description ?desc
}
</pre>
<p>(Not: om du inte redan kan grundläggande SPARQL rekommenderar jag att<br />
exempelvis läsa <a href="http://en.wikipedia.org/wiki/SPARQL">wikipediasidans<br />
introduktion</a>).</p>
<p>Problemet är att den frågan enbart kommer att hitta rättsfall som<br />
hänvisar till brottsbalken i sin helhet, inte rättsfall som hänvisar<br />
till någon enskild paragraf. Detta eftersom URI:er i RDF är<br />
ogenomskinliga &#8212; det finns inget inherent samband mellan<br />
<code>&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt;</code> och<br />
<code>&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1P2S2&gt;</code> (som<br />
är URI:n för 1 kap. 2 § 2 st. Brottsbalken).</p>
<p>Det vi vill göra är att ställa en fråga som matchar alla rättsfall som<br />
hänvisar till en viss lag eller något som är en del av samma lag<br />
(enskilda kapitel, paragrafer eller stycken). Ett enkelt, fult,<br />
långsamt och fel sätt är att göra det med ett filter:</p>
<pre>
PREFIX dct:&lt;http://purl.org/dc/terms/&gt;
PREFIX rinfo:&lt;http://rinfo.lagrummet.se/taxo/2007/09/rinfo/pub#&gt;

SELECT ?uri ?id ?desc ?lagrum
WHERE {
    ?uri dct:identifier ?id .
    ?uri dct:description ?desc .
    ?uri rinfo:lagrum ?lagrum .
    FILTER regex(str(?lagrum), "http://rinfo.lagrummet.se/publ/sfs/1962:700")
}
</pre>
<p>Ganska enkelt, men i praktiken väldigt långsamt, gissningsvis för att<br />
SPARQL-motorn är tvungen att konvertera varenda URI (en datatyp) till<br />
en sträng (en helt annan datatyp), för att sen se om den möjligtvis<br />
börjar på ett visst sätt. Det är också fel, eftersom frågan gör ett<br />
antagande om att<br />
<code>&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1P2S2&gt;</code><br />
är en resurs som är en del av resursen<br />
<code>&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt;</code>, utan<br />
någon täckning för det antagandet.</p>
<p>Det korrekta sättet är att modellera just detta<br />
&#8221;är-del-av&#8221;-förhållande. I RDF-databasen finns en mängd triples av<br />
följande typ:</p>
<pre>
&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1P2S2&gt; a rinfo:Stycke;
     dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1P2&gt;.

&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1P2&gt; a rinfo:Paragraf;
     dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1&gt;.

&lt;http://rinfo.lagrummet.se/publ/sfs/1962:700#K1&gt; a rinfo:Kapitel;
     dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt;.
</pre>
<p>Med det kan vi formulera en fråga som ger oss information om alla<br />
rättsfall för en viss lagtext. Vi vill ha alla rättsfall som antingen<br />
har en <code>rinfo:lagrum</code>-relation med lagtextens URI<br />
<i>eller</i> en <code>rinfo:lagrum</code>-relation med en URI som har<br />
en <code>dct:isPartOf</code>-relation med lagtextens URI <i>eller</i><br />
en <code>rinfo:lagrum</code>-relation med en URI som har en<br />
<code>dct:isPartOf</code>-relation med en URI som har en<br />
<code>dct:isPartOf</code>-relation med lagtextens URI<br />
<i>eller&#8230;</i></p>
<p>Ok, det blir inte så vackert det här heller, men det blir rätt och<br />
snabbt. Den SPARQL-fråga jag har just nu blir såhär:</p>
<pre>
PREFIX dct:&lt;http://purl.org/dc/terms/&gt;
PREFIX rinfo:&lt;http://rinfo.lagrummet.se/taxo/2007/09/rinfo/pub#&gt;

SELECT ?uri ?id ?desc ?lagrum
WHERE {
   { ?uri rinfo:lagrum &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
     ?uri dct:identifier ?id .
     ?uri dct:description ?desc }
   UNION { ?uri rinfo:lagrum ?lagrum .
           ?lagrum dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
           ?uri dct:identifier ?id .
           ?uri dct:description ?desc }
   UNION { ?uri rinfo:lagrum ?lagrum .
           ?lagrum dct:isPartOf ?b .
           ?b dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
           ?uri dct:identifier ?id .
           ?uri dct:description ?desc }
   UNION { ?uri rinfo:lagrum ?lagrum .
           ?lagrum dct:isPartOf ?b .
           ?b dct:isPartOf ?c .
           ?c dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
           ?uri dct:identifier ?id .
           ?uri dct:description ?desc }
   UNION { ?uri rinfo:lagrum ?lagrum .
           ?lagrum dct:isPartOf ?b .
           ?b dct:isPartOf ?c .
           ?c dct:isPartOf ?d .
           ?d dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
           ?uri dct:identifier ?id .
           ?uri dct:description ?desc }
   UNION { ?uri rinfo:lagrum ?lagrum .
           ?lagrum dct:isPartOf ?b .
           ?b dct:isPartOf ?c .
           ?c dct:isPartOf ?d .
           ?d dct:isPartOf ?e .
           ?e dct:isPartOf &lt;http://rinfo.lagrummet.se/publ/sfs/1962:700&gt; .
           ?uri dct:identifier ?id .
           ?uri dct:description ?desc }
}
</pre>
<p>Förslag på hur man kan förenkla det hela mottages tacksamt&#8230;</p>
<p>Det framgår kanske att det här inte är en arkitektur för alla<br />
problem. Men om man har data som kan modelleras med RDF (och när man<br />
jobbat med RDF ett tag så tycker man att i stort sett allt gör det) så<br />
tror jag att åtminstone kombinationen triplestore + SPARQL kan vara<br />
ett intressant alternativ till RDBMS + SQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tomtebo.org/2009/06/30/en-arkitektur-for-webutveckling-med-semantic-web-koncept/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Diverse skriverier</title>
		<link>http://blog.tomtebo.org/2009/04/01/diverse-skriverier/</link>
		<comments>http://blog.tomtebo.org/2009/04/01/diverse-skriverier/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 22:28:04 +0000</pubDate>
		<dc:creator>staffan</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[gammal skåpmat]]></category>
		<category><![CDATA[lagen.nu]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[skrivet]]></category>
		<category><![CDATA[systemarkitektur]]></category>
		<category><![CDATA[teknikneutralitet]]></category>

		<guid isPermaLink="false">http://blog.tomtebo.org/?p=648</guid>
		<description><![CDATA[Lite tyst här på sistone &#8212; jag jobbar mer eller mindre frenetiskt på andra saker just nu, bland annat på den allra sista kursen jag ska gå på juristprogrammet. Känns lite märkligt. Men jag har skrivit saker på annat håll. &#8230; <a href="http://blog.tomtebo.org/2009/04/01/diverse-skriverier/">Läs mer <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lite tyst här på sistone &#8212; jag jobbar mer eller mindre frenetiskt på<br />
andra saker just nu, bland annat på <a href="http://www.juridicum.su.se/jurweb/utbildning/kurser.asp?MomentID=2172&#038;Linj=JJURY&#038;Takt=100">den<br />
allra sista kursen jag ska gå</a> på juristprogrammet. Känns lite<br />
märkligt.</p>
<p>Men jag har skrivit saker på annat håll. Först upp, två krönikor i<br />
TechWorld, en om <a href="http://arkiv.idg.se/pdfdownload/free/?item=22498">problemen med<br />
teknikneutral lagstiftning</a> (där jag i stort utgår från vad <a href="http://copyriot.blogspot.com/2007/01/teknikneutralismen-spkar-igen.html">Rasmus<br />
Fleisher sa för två år sedan</a>), och en annan om <a href="http://arkiv.idg.se/pdfdownload/free/?item=22550">lagstiftaren<br />
som systemarkitekt</a> (som i princip bygger på ett tema <a href="http://noisesociety.com/kommenterat/?page_id=31">Nicklas<br />
Lundblad</a> presenterade för tre år sedan). Medelmåttor lånar, genier<br />
stjäl. Detta är mina sista krönikor för Techworld, vilket är synd, för<br />
jag gillade verkligen att ha deadlines, läsarkrets och inkomst. Om du<br />
vill att jag ska skriva åt just dig och kan erbjuda dessa tre<br />
faktorer, hör av dig.</p>
<p>Jag har <a href="http://blog.tomtebo.org/2009/02/02/seminarium-om-framtidens-rattsinformationstjanster/">tidigare<br />
nämnt</a> att jag höll på med en text om lagen.nu till <a href="http://websir.lovdata.no/lex/tidsskrifter/lovogdata.html">Lov &#038;<br />
Data</a> &#8211; nu är tidningen ute, och <a href="http://blog.tomtebo.org/wp-content/uploads/2009/04/lagennu-oppen-rattsinformation.pdf">här<br />
kan du läsa artikeln</a>. Om du inte redan prenumererar på Lov &#038; Data<br />
rekommenderas ett medlemsskap i <a href="http://www.adbj.se/">ADBJ</a>, då en prenumeration ingår, samt<br />
tillträde till en massa <a href="http://www.adbj.se/adbjweb/events.php?op=next">intressanta<br />
seminarier</a> i Stockholmsområdet.</p>
<p>För <a href="http://blog.tomtebo.org/2008/12/05/antagen-till-jurix-workshop/">lite<br />
längre sedan</a> skrev jag och <a href="http://www.juridicum.su.se/iri/chki/">Christine Kirchberger</a><br />
ett paper till en workshop vid <a href="http://www.ittig.cnr.it/Jurix08/">Jurix 2008</a>. Det kanske<br />
kommer publiceras officiellt i någon form någon gång, men tills dess<br />
finns vårt paper &#8221;Inbound links &#8211; picking the low hanging fruit from<br />
the semantic web&#8221; <a href="http://blog.tomtebo.org/wp-content/uploads/2009/04/lxml2008_submission_1.pdf">tillgängligt här</a>. Bör vara intressant för både<br />
teoretiskt lagda jurister och semantic web-intressenter.</p>
<p>Avslutningsvis har jag även blivit skriven om: <a href="http://www.juridicum.su.se/jurweb/aktuellt/bilagor/nyhetsbrev1_2009_webb.pdf">Juridicums<br />
nyhetsbrev</a> gjorde en liten intervju angående lagen.nu. Superkul!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tomtebo.org/2009/04/01/diverse-skriverier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Antagen till JURIX-workshop!</title>
		<link>http://blog.tomtebo.org/2008/12/05/antagen-till-jurix-workshop/</link>
		<comments>http://blog.tomtebo.org/2008/12/05/antagen-till-jurix-workshop/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 16:39:03 +0000</pubDate>
		<dc:creator>staffan</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[folkets jubel]]></category>
		<category><![CDATA[jurix]]></category>
		<category><![CDATA[rättsinformation]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://blog.tomtebo.org/?p=444</guid>
		<description><![CDATA[För några veckor sedan, mitt under brinnande konferensförberedelser, skrev jag och Christine Kirchberger ett paper om rättsinformation och semantic web, kallat &#8221;Inbound links &#8211; picking the low hanging fruit from the semantic web&#8221;. Pappret handlar om begreppet hänvisningar i juridik &#8230; <a href="http://blog.tomtebo.org/2008/12/05/antagen-till-jurix-workshop/">Läs mer <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>För några veckor sedan, mitt under <a href="http://blog.tomtebo.org/2008/11/21/post-konferens-forkylning/">brinnande konferensförberedelser</a>, skrev jag och <a href="http://web.mac.com/iine_k/iWeb/law/About%20Me.html">Christine Kirchberger</a> ett paper om rättsinformation och semantic web, kallat &#8221;Inbound links &#8211; picking the low hanging fruit from the semantic web&#8221;. Pappret handlar om begreppet hänvisningar i juridik och hypertext, och beskriver ett exempel på en tillämpning &#8211; hur man under varje paragraf i en lagtext listar andra paragrafer som hänvisar dit &#8211; som man kan realisera med extremt enkla medel (ett minimalt XSLT-stylesheet som använder sig av en superenkel SPARQL-fråga).</p>
<p>Nu har det blivit antaget till en workshop vid den anrika <a href="http://www.ittig.cnr.it/Jurix08/index.php">JURIX-konferensen</a>, som detta år äger rum i Florens, och vi har blivit inbjudna dit för att på femton minuter redogöra för våra resultat (programmet finns <a href="http://www.ittig.cnr.it/Jurix08/index.php?option=com_content&#038;view=article&#038;id=62&#038;Itemid=68">här</a>, vi talar under punkten &#8221;Workshop on Legislative XML&#8221;). Efter att ha sysslat med rättsinformation i några år på hobbybasis är det otroligt kul att dels få samarbeta med en doktorand på området, dels få presentera vårt resultat i ett internationellt sammanhang. Nu ska jag bara tygla min nervositet (och motivera varför vi inte använt oss av <a href="http://www.metalex.eu/">Metalex</a> som format).</p>
<p>Det hela äger rum nästa vecka, och förmodligen läggs även vårt paper ut någonstans på Jurix-webbplatsen då &#8212; återkommer med länk!</p>
<p><strong>Uppdatering: </strong>Nu finns även workshopprogramet <a href="http://www.ittig.cnr.it/Jurix08/images/Program_LXML08.pdf">tillgängligt som PDF</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tomtebo.org/2008/12/05/antagen-till-jurix-workshop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dagens uppLYSning om RDF</title>
		<link>http://blog.tomtebo.org/2008/09/30/dagens-upplysning-om-rdf/</link>
		<comments>http://blog.tomtebo.org/2008/09/30/dagens-upplysning-om-rdf/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 11:41:41 +0000</pubDate>
		<dc:creator>staffan</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[föredragshållande]]></category>
		<category><![CDATA[lagen.nu]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://blog.tomtebo.org/?p=434</guid>
		<description><![CDATA[Ikväll klockan 18:15 håller jag en upplysning om informationsmodellering, RDF och annan semantic web-teknologi, mot bakgrund av hur jag använt dem i lagen.nu. Här är de slides jag tänkt använda, återigen i S5-format. Eftersom jag använder object-taggen för att länka &#8230; <a href="http://blog.tomtebo.org/2008/09/30/dagens-upplysning-om-rdf/">Läs mer <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ikväll klockan 18:15 håller jag en <a href="http://www.lysator.liu.se/upplysning/">upplysning</a> om informationsmodellering, RDF och annan semantic web-teknologi, mot bakgrund av hur jag använt dem i lagen.nu. Här är <a href="http://blog.tomtebo.org/wp-content/uploads/2008/09/rdf.htm">de slides jag tänkt använda</a>, återigen i S5-format. Eftersom jag använder object-taggen för att länka in live-webbsidor funkar det kanske inte i alla webbläsare, men det verkar funka i min Firefox iallafall. Är du i Linköping ikväll, kom gärna förbi!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tomtebo.org/2008/09/30/dagens-upplysning-om-rdf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

