Introduktion till den Semantiska Webben

Detta dokument ger en ganska kortfattad och förenklad introduktion till den Semantiska Webben avsedd för personer som vill veta varför och hur den Semantiska Webben ska och kan skapas. Den förutsätter viss elementär kunskap om XML och datalogi. Introduktion är teknikorienterad och nämner därmed inte direkt några framtida applikationer som kan skapas (detta kommer framtida artiklar att behandla).

Problem med informationen på Webben

Webben kan ses som en abstrakt informationsrymd. I denna rymd kan vi och applikationer navigera för att lokalisera information. Alla som har använt Webben som en informationsrymd vet att det inte är så lätt att hitta den information som eftersöks. Sökningar med dagens sökmotorer, som generellt är nyckelordsbaserade, resulterar alltför ofta i en mängd irrelevanta svar. Ett annat relaterat problem med informationsrymden är att det är mycket svårt att konstruera mjukvaruagenter som kan använda informationen på Webben som en datakälla för beräkningar eller tjänster. Visst går det idag att konstruera t.ex. "shoppingagenter" som sveper över en mycket liten del av Webben och presenterar en lista med prisjämförelse, men dessa agenter är mycket känsliga för syntaxförändringar på de sidorna som agenten besöker.

It may sound strange, but despite the billion-plus pages on the World Wide Web, there is too little information there. There is no information about the information; all Web pages are exactly alike in the eyes of a search robot - Johan Hjelm [Hjelm, 2001]

(För en längre och mer utdragen introduktion se Introduction - a fragment of my Master's thesis som är introduktionen till andra utkastet av min magisteruppsats.)

Varför?

Orsaken till dessa problem är väldigt enkel: All information som finns på Webben är riktad direkt mot oss människor via ett presentationsverktyg. Att ta en informationsmängd och skapa en elektronisk version av denna genom att använda t.ex. HTML är helt enkelt att placera presentationsinstruktioner till Webbläsaren i taggar som innesluter vissa delar av informationsmängden. För en Webbläsare har t.ex. taggen h1 en betydelse som är inprogrammerad, men betydelsen har inget med den informationsmängd som den innesluter att göra. Betydelsen för Webbläsaren är att den textmängd som innesluts av taggen skall presenteras på ett visst sätt. Betydelsen av själva informationen måste (alltid) tolkas av en människa.

Att informationen endast är avsedd för mänsklig konsumtion får ganska besvärliga konsekvenser. Om jag vill söka efter information om bilmärket Ford och använder en vanlig sökmotor kommer all information som innehåller textsträngen 'Ford' att presenteras som svar. Det finns ingen möjlighet att bestämma att Ford ska ha betydelsen bilmärke.

För att en applikation skall kunna använda Webben (som den ser ut idag) som en "riktig" datakälla (t.ex. en bra sökmotor eller shoppingagent) måste applikationen förstå det naturliga språket som används. Dagens applikationer som inte kan processa naturligt språk och som försöker använda Webben som en datakälla letar i blindo. För att en shoppingagent skall kunna leta efter prisuppgifter måste denna typ av applikation handkodas att leta efter vissa mönster av bokstäver, ex. "pris", "Pris", "PRIS", osv. även om betydelsen är densamma. Applikationen blir därmed också statisk och oflexibel. Applikationerna blir helt enkelt väldigt syntaxberoende.

Problemet är alltså att en maskin idag inte kan tolka betydelsen av ord (och detta är självklart!) eftersom vi skapar informationen för en människa som direkt mottagare av informationen. Därför kan vi inte skapa applikationer som erbjuder bättre sökning/tjänster. Antingen måste vi lära maskinerna förstå naturligt språk (väldigt komplicerat) eller så måste vi människor "förklara" bättre för maskinerna hur de ska kunna använda informationen.

Eftersom vi producerar information som är direkt ämnat för mänsklig konsumtion får vi "skylla oss själva" när hjälpen vi får från applikationer är så pass dålig. Om vi inte bättre beskriver informationen så att applikationer kan använda den på ett effektivare sätt kommer informationen på Webben att bli alltmer svårtillgänglig. Webben som gör det enklare att skicka och ta emot information har, lite ironiskt, gjort det svårare att ta del av själva informationen.

Generellt: Det är inte Webben det är fel på - det är informationsrepresentationen.

Generella mål med informationen på Webben

Informationen på Webben måste anpassas så att applikationer kan använda den på ett bättre sätt. En sökmotor ska kunna hitta information på ett mycket effektivare sätt och en shoppingagent skall inte vara syntaxberoende.

Ett generellare och större mål, som samtidigt är ännu mer intressant, är att använda Webben som en global databas genom vilken heterogena applikationer kan kommunicera och utbyta data utan "mänsklig medling". Att kunna skapa heterogena applikationer som kan utbyta data via Webben skulle innebära ett stort lyft för bl.a. applikationsintegration. Syftet för denna "webbdatabas" är att kunna publicera data för applikationskonsumtion på samma sätt som vi idag publicerar information ämnat direkt för människor. Denna webbdatabas kan sedan användas som datakälla för applikationer som i slutändan kan producera information för oss människor. Det kommer att fungera likt en vanlig databas med bl.a. den skillnaden att den är global. Likheten med ett kunskapsrepresentationssystem är också stora.

Generella lösningar - och dess problem

Metadata - data om data - är ett sätt att beskriva delmängder av data med data. Idén med metadata i detta sammanhang är att beskriva information med ett metadataspråk som gör att applikationer som behärskar detta språk kan använda metadata för att kunna behandla informationen/data på ett betydligt bättre sätt. Ett enkelt exempel, om man har titta på programmeringsspråk, är när variabler deklareras. Att säga att en variabel är av typen integer är en form av metadata eftersom deklarationen säger att det som finns på den minnesadressen dit variabeln pekar är data av typen integer. Det går genom denna deklaration skapa meningsfulla funktioner som hanterar data som variabeln pekar på eftersom metadata beskriver hur variabelns data skall tolkas.(I exemplet int ålder är int metadata som beskriver ålder.)

Att använda enbart XML som en lösning för att beskriva data och dess metadata kan först tyckas vara en lösning för informationen på Webben. I en XML sträng likt

<namn>Benny</namn>

är namn metadata som beskriver Benny. Skulle detta underlätta informationskonsumtionen för applikationer? Generellt: Nej. Vad är namn? Hur kan en maskin förstå namn? Bara för att vi råkar kunna svenska och är människor är det lätt att inbilla sig att <namn>Benny</namn> har en tydligare betydelse för en applikation än bara Benny. Visst finns det fördelar med att dela på informationen och dess metadata, men detta är en syntaxfråga - nu är det semantiken som är viktig. För en människa som talar svenska ökar möjligtvis betydelsen något, men för en maskin har det ingen betydelse (om inte betydelsen av namn är handkodad i applikationen, vilket inte är en lösning för Webben eftersom betydelsen då är lokal - den ska vara global). <namn>Benny</namn>betyder lika mycket för en generell applikation som !"#%!¤!"#¤!¤ betyder för en människa. Grunden till detta är att XML endast erbjuder syntaxinteropabilitet mellan applikationer, inte semantisk interopabilitet (meningen med namn i exemplet kan inte överföras mellan applikationer). En viktig sak att hålla i minnet vid applikationskommunikation är att metadata inte skall läsas av människor: det är applikationer som ska förstå metadata.

Problem: Hur kan vi få heterogena applikationer att förstå varandra? Dvs. hur kan applikation A förstå data som applikation B skapat? Om applikation A förstår sin "egen" data genom att ha betydelsen inprogrammerad betyder det inte att applikation B tolkar data på rätt sätt, även om t.ex. den använder samma metadata ord - betydelsen är det viktiga. (För en längre introduktion till kommunikationsproblem, och dess lösning Ontologier, se Ontology) I exemplet ovan är det alltså namn som applikationerna skall "förstå", inte Benny. Maskinerna behöver inte "förstå" Benny, de ska bara veta hur de kan använda Benny i beräkningar (Benny är endast ett värde - av typen namn - likt 1 är ett värde av typen heltal).

Det andra och mera generella målet att kunna använda Webben som en global databas genom vilket heterogena applikationer kan utbyta data har precis samma svårighet som ovan nämnda. För att skapa denna globala databas där semantiken av metadata är explicit och externt deklarerad måste en språk direkt avsett för detta ändamål användas.

Det är här den Semantiska Webben kommer in.

Den Semantiska Webben

Namnet och visionen kommer ursprungligen från Tim Berners-Lee. Den kanske enklaste och generellaste beskrivningen av den Semantiska Webben är följande:

"The Semantic Web is an extension of the current Web in which information is given well-defined meaning, better enabling computers and people to work in cooperation." - Tim Berners-Lee

Det är otroligt lätt att falla in i högtflygande visioner och beskrivningar om vad den Semantiska Webben kommer att innebära för oss människor. Detta dokument utelämnar all sådan utsvävning i detta skede och förklarar istället grunden bakom den Semantiska Webben kortfattat. (För en ofta refererad introduktion med lite "utsvävningar" se ScientificAmerican - The Semantic Web)

När jag tänker på den Semantiska Webben är det bilden nedan som jag ser. Bilden är en generell och abstrakt beskrivning av den Semantiska Webben och dess relation till den "vanliga" Webben.

Den Semantiska Webben

Det som bilden ovan ska förtydliga är att den Semantiska Webben är något som ligger ovanför Webben. Syftet är som sagt tidigare att göra det enklare för oss människor att använda Webben.

För att läsaren ska kunna "känna" lite redan nu på vad den Semantiska Webben kan göra tänkte jag mycket kort nämna hur heterogen applikationskommunikation (dvs. kommunikation mellan olika typer av applikationer) kan fungera. Bilden nedan visar kopplingen mellan två olika applikationer och den Semantiska Webben.

Heterogen applikationskommunika

Kortfattat ska den Semantiska Webben se till så att två applikationer som utvecklats avskilda från varandra ändå kan kommunicera. Applikation A kan producera data som sedan applikation B kan konsumera (korrekt) genom att A och B använder den Semantiska Webben (givetvis kan applikationerna använda delmängder av data). Den Semantiska Webben ska alltså överbrygga de interna skillnaderna i representation av data som två applikationer har, även om de använder olika data men med samma betydelse. Det viktiga här är att de applikationerna som ska kommunicera använder samma typ av koncept, och kan uppnå någon mening med att kommunicera. Det är inte så stor mening med att låta en brödrost och en månlandare kommunicera (om inte brödrosten är på månlandaren). Men två olika typer av ordbehandlare måste kunna kommunicera (det är obegripligt korkat att t.ex. att dokument skapade av nyare versioner av Microsoft Word inte alltid kan läsas av gamla versioner, den borde kunna läsa dokumentet och använda den information som den förstår). Eftersom de använder alla koncept likt mening, stycke, fet stil, etc. ska de kunna kommunicera. Det dataformat som väljs ska inte spela någon roll.

I bilden ovan finns Interface mot den Semantiska Webben. Dessa behövs för att mappa de interna datastrukturerna till det språk som används på den Semantiska Webben. XML anses ofta vara bra för att t.ex. expotera/importer data mellan olika databaser. Detta stämmer om man betraktar syntax. Den Semantiska Webben avser att göra detta så att även semantiken kan importeras/exporteras.

Internet har gett applikationer en kommunikationskanal, Webben har skapat en global namnrymd, XML har givit en syntaxgrund, och den Semantiska Webben ska göra applikationer syntaxoberoende och kunna kommunicera med explicit och externt deklarerad semantik. Hur ska detta gå till?

Grundidén

För att enklast introducera grundidén bakom den Semantiska Webben tänker jag börja med ett förenklat exempel relaterat till människor. Antag att någon svensk läser något i stil med "... det är vanligt vid asynkron överföring ..." och inte vet vad asynkron innebär. Personen i fråga tar då fram en ordbok och slår upp asynkron. I ordboken står det "ej samtidig". Eftersom personen förstår "ej", "samtidigt" och betydelsen av kombinationen har personen lärt sig betydelsen av asynkron. Generellt innehåller en ordbok förklaringar av koncept, och dessa förklaringar är helt enkelt en mängd strukturerade koncept (i form av meningar). Vi förklarar ett koncept genom att likställa betydelsen med en relation av andra koncept. Idén bakom den Semantiska Webben är helt enkelt att skapa ett nätverk av koncept, liknade en "ordbok", som skall användas i ett metadataspråk. Koncept relateras till varandra genom att skapa "länkar" mellan dem. Det är dessa länkar som ger ett koncept sin betydelse för en maskin. (Notera att ett koncept, likt 'kärlek', kan aldrig förklaras för en maskin, men det går att förklara att 'hat' är motsatsen. 'Större än' går däremot att förklara för en maskin med logik.) Dessa länkar är också koncept, så man kan beskriva dessa länkar (koncept) genom att använda andra koncept.

Nätverket av koncept kommer alltså att användas för att göra metadata betydelsefull för applikationer. Denna ordbok kan användas av applikationer för att kunna kommunicera även om de träffar på nya koncept. Vad som är mycket viktigt är att denna ordbok inte är någon "sak" som är centraliserad eller styrd av en organisation: Denna ordbok kommer att finnas på Webben och nya koncept kan skapas av alla utan att begära tillstånd av någon. Allt som behövs för att skapa ett koncept är i princip en URI. Frihet = kaos? Nej, inte i detta fallet.

Notera: En URI representerar ett koncept, flera olika URIer kan representera samma koncept

Ett försök till förklaring med exempel: Antag att det finns en applikation som hanterar en typ av data: en sträng som motsvarar ett namn, som applikation A kallar namn. Antag vidare att applikationen har ytterligare ett koncept inprogrammerat: equal (viss primitiva koncept kommer att vara inprogrammerade). Applikationen vet att om x equal y så kan den behandla x och y på samma sätt. Antag vidare att denna applikation kommunicera via en förenklad Semantisk Webb. På denna Webb hittar applikationen data ex. (Benny, namn) i någon syntax. Applikationen kan då utföra beräkningar på dessa data eftersom den "vet" att den kan hantera data av typen namn. Om applikationen kommer över data producerat av applikation B som säger (Benny, name) vad kan den göra då? Inget just nu. Men denna applikation är lite bättre än vanliga applikationer. Den har fått inprogrammerat i sig att om den hitta någon okänd data kan den alltid söka på den Semantiska Webben för att se om någon vet om name är detsamma som namn. Applikationen söker efter (name,equal,namn) i någon syntax, och får reda på att något dokument på http://someserver.com/doc säger att det är samma sak. Om applikationen nu litar på denna sidan kan den använda sig av de två koncepten namn och equal för att också kunna konsumera data som är av typen name eftersom de har samma betydelse (representerar samma koncept) men olika syntax. Den Semantiska Webben ska erbjuda semantisk interopabilitet, XML erbjuder syntaxinteropabilitet. Bilden nedan är en mycket liten "ordbok" som säger att: "namn har samma betydelse som name". Detta är förstås ett trivialt exempel, men ska ändå ge en lite inblick i hur det ska fungera.

Tre koncept

För att bygga upp detta nätverk av koncept måste man använda ett språk som är kraftfullt nog att uttrycka metadata och kunna användas för att skapa denna "webbdatabas".

Detta speciella språk, ämnat direkt för applikationer, har i stort sätt samma roll för den Semantiska Webben som HTML har för den "vanliga" Webben. Innan själva språket kommer att beskrivs finns det ett krav som måste betänkas: allt ska ha en URI. Detta förklaras i nästa avsnitt.

Precision!

Hur gör du en "egosökning" (dvs. söker efter information om dig själv)? Anger du förnamn + efternamn? Har du någon identitet på Webben? Idag finns alla och ingen representerade på Webben (alla eftersom du kan hitta information om alla namn och inga eftersom det inte finns unika namn). Det finns ingen precision på Webben. Men Webben är en namnrymd så allt har ett namn/id. En punkt i denna rymd har ett unikt namn, en URI. Varför använder vi inte URI:er mer för att skapa dessa unika namn. På Webben använder jag personligen URI:n http://purl.org/net/benny som mitt ID på Webben. Om någon vill referera till mig på Webben så är det betydligt bättre att ange http://purl.org/net/benny än 'Benny Gustavsson' eftersom det första alternativet är unikt.

För en längre introduktion till precision frågan, se (How to achieve precision on the Web).

Vad har nu detta med den Semantiska Webben och göra? Den Semantiska Webben ska vara global. Koncepten som skall användas på den Semantiska Webben för att beskriva informationen med metadata måste vara globala och unika. Därför skall alla koncept vara identifierade med URIer. Detta medför att koncepten blir globala och exakta. Istället för att använda stängen namn för att beskriva informationen Benny kan vi använda en URI http://someserver.com/namn. Detta kommer förklaras mer senare.

Kom ihåg: alla koncept ska ha en URI!

Nu när vi vet hur vi skapar unika namn på Webben och varför det är så viktigt är det dags att titta på språket för den Semantiska Webben.

Språket för den Semantiska Webben

Den Semantiska Webben kräver ett språk. Detta språk ska användas för att skapa koncept och med hjälp av dessa koncept skapa information direkt för maskiner. Språket har alltså två syften:

  1. Bygga upp ett globalt konceptnätverk
  2. Använda detta nätverk för att skapa information direkt ämnat för maskiner

För att underlätta introduktionen ges här en lite förenklad bild av språket. Syntaxen är i detta skede oviktig.

Första nivån

I grunden bygger språket på utsagor eller tripplar. Exemplet nedan består av tre element; Benny, författare, och 'denna sida'. Betydelsen av positionerna är följande: första positionen är objektet av utsagan, andra positionen är attributet av utsagan, och sista positionen är värdet på attributet.

(Benny, författare, denna sida)

Själva meningen med utsagan ovan är att beskriva att Benny är författaren till denna sida. Denna utsaga är metadata eftersom informationen beskriver annan information (denna sida). Men som tidigare sagts så ska allt vara identifierat med en URI, så exemplet ovan ska egentligen se ut som nedan.

(http://purl.org/net/benny/, 
 http://purl.org/dc/elements/1.1/creator,
 http://home.swipnet.se/semanticweb/intro/sw_intro.html)

http://purl.org/net/benny/är mitt unika ID på Webben. Genom att använda denna URI är det ingen tvetydighet när det gäller vem som är skaparen. http://purl.org/dc/elements/1.1/creator är URIn som representerar konceptet 'skapare'. Den exakta betydelsen finns dokumenterad och använder naturligt språk ("An entity primarily responsible for making the content of the resource" ... "Examples of a Creator include a person, an organisation, or a service. Typically, the name of a Creator should be used to indicate the entity"), något som behövs i början på utvecklingen och är inte något problem.

Det metadata som exemplet ovan visar säger att denna sida är skapad av mig. Denna information kan vara väldigt värdefull om man söker efter sånt som jag skrivit. Genom att använda URIer blir informationen exakt.

Som nämndes ovan så måste språket kunna hantera utsagor. En utsaga är förenklat en trippel där alla element är en URI. I bilden nedan visas hur en mängd tripplar (som exempelvis har extraherats från ett RDF dokument) relaterar till Webben genom användandet av URIer.

Första nivån

Språket äv väldigt generellt, men också mycket begränsat i och med att man inte kan gör så mycket med det.

Andra nivån

Andra nivån

Tredje nivån

Nivå tre

Referenser

[Hjelm, 2001]
Johan Hjelm, 2001, Creating the Semantic Web with RDF, WILEY

Skapad med AmayaValiderad HTML