Dagens uppLYSning om RDF

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 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!

Föreläsningsseptember

Den här månaden ska jag prata mycket. Vi kickar igång med ett tvåtimmarsseminarium på kursen Experimentell immaterialrätt, där jag förhoppningsvis ska vara begripligare än förra gången jag försökte förklara ”Tekniken på Internet”. Min nuvarande idé är att gå igenom upphovsrättslagen, paragraf för paragraf (åtminstone de viktiga), beskriva relevanta företeelser på Internet och ställa frågor om hur man ska tolka ett halvt sekel gammal lagstiftning i detta ljus.

Sen håller jag ett lunchseminarium på Gärde Wesslau Advokatbyrå på temat ”Teknik och juridik”, där jag kommer prata om hur den tekniska utvecklingen förändrar det juridiska arbetet. Vilket kan vara att ta sig vatten över huvudet, eftersom min faktiska erfarenhet av juridiskt arbete är begränsad till kurs-PM och juridikundervisning. Men å andra sidan kan jag den tekniska utvecklingen ganska bra, så det kanske jämnar ut sig.

I slutet av månaden ska jag hålla en UppLYSning nere i Linköping. Den är, till skillnad från de andra, öppen för alla, så kom förbi! Där kommer jag prata om ”Informationsmodellering, RDF och den semantiska webben” med utgångspunkt i hur jag använt RDF i den nya versionen av lagen.nu. Förhoppningsvis får jag ihop lite interaktiva peka-och-klicka-demos, kanske med OpenLink RDF Browser, Sesame och Gruff.

På tal om lagen.nu har jag nu inte några blocker eller critical-buggar kvar på 1.5, och är grymt sugen på att släppa den nya versionen, men funderar på om inte #20, #21, #23 och #26 ändå borde fixas innan release. De är nog rätt lättfixade, om någon är sugen på att hoppa in i utvecklingen, och vill ha ett ”bite-sized task”. Fast det är klart, innan jag fixar #16 är det inte helt enkelt för en utomstående att veta var man ska börja. Det är kanske den som borde uppgraderas till blocker.

Dagens patch

Det blir mycket RDF i lagen.nu 1.5. Och det blir mycket användande av RDFLib. Efter att ha hittat finfina instruktioner om hur man får biblioteket – inklusive SPARQL-parser – att snurra under windows har jag gett mig på min pet peeve i n3-serialiseringskoden, nämligen dess ovana att definera egna anonyma namespaceprefix. Normalt serialiserar den nämligen n3-formatet något i stil med såhär:

@prefix _8: http://lagen.nu/.
@prefix _9: http://lagen.nu/1962:700#.
@prefix dct: http://dublincore.org/documents/dcmi-terms/.
@prefix rinfo: http://rinfo.lagrummet.se/taxo/2007/09/rinfo/pub#.

_8:NJA_2005_s_878 dct:identifier "NJA 2005 s. 878 (NJA 2005:95)";
rinfo:lagrum _9:K29P7;
rinfo:rattsfallshanvisning _8:NJA_1996_s_63,
_8:NJA_2000_s_421;

Men nu blir det det oändligt mycket mer läsbara:

@prefix dct: http://dublincore.org/documents/dcmi-terms/.
@prefix rinfo: http://rinfo.lagrummet.se/taxo/2007/09/rinfo/pub#.

 <http://lagen.nu/NJA_2005_s_878> dct:identifier "NJA 2005 s. 878 (NJA 2005:95)";
     rinfo:lagrum <http://lagen.nu/1962:700#K29P7>;
     rinfo:rattsfallshanvisning <http://lagen.nu/NJA_1996_s_63>,
         <http://lagen.nu/NJA_2000_s_421>;

Här är patchen:

C:\Users\staffan\tmp\rdflib-2.4.0\rdflib>diff -u syntax\NamespaceManager.py~ syntax\NamespaceManager.py
--- syntax\NamespaceManager.py~ 2007-04-04 22:05:32.000000000 +0200
+++ syntax\NamespaceManager.py  2008-06-14 21:36:32.606307200 +0200
@@ -59,8 +59,7 @@
namespace = URIRef(namespace)
prefix = self.store.prefix(namespace)
if prefix is None:
-                prefix = "_%s" % len(list(self.store.namespaces()))
-                self.bind(prefix, namespace)
+                raise Exception("Prefix for %s not bound" % namespace)
self.__cache[uri] = (prefix, namespace, name)
return self.__cache[uri]

Den som förstår RDFLib bättre kan säkert få till samma effekt utan att patcha källkoden genom att subklassa NamespaceManager och trycka in den i kedjan någonstans, men mina försök till det misslyckades.

Rättsinformation och RDF

Det Vervaprojekt jag varit lite inblandad i har nu publicerat en uppdaterad version av sin metadatamodell för rättsinformation. Det handlar alltså om hur man ska representera dokument som lagar, förarbeten, rättsfallsreferat m.m. elektroniskt. Dvs sådana frågor som jag bollat med ända sen jag startade lagen.nu – men med skillnaden att den här specifikationen görs by the book av folk som verkligen kan datamodellering. Tydligast märks det i att all metadata uttrycks i form av RDF, och det som nu publicerats är en vokabulär, dvs en lång lista på egenskaper som dokument (och andra resurser) kan ha.

Arbetet hittills är främst inriktat på att identifiera egenskaper på dokumentnivå, och har mycket gått ut på att diskutera saker som ”den här texten här överst i dokumentet, vad är den?” och resonera kring titel vs rubrik vs beskrivning vs … Men det som jag tycker känns bäst är ansatsen att alla resurser (både kompletta dokument och resurser inuti dokument, exv en paragraf i en lag) ska ha permanenta URI:er. Det där med att man både inom och utom systemet ska kunna hänvisa till resurser på ett otvetydigt och maskinläsbart sätt är, hur trivialt det än kan låta, ett stort steg framåt.