Software, Internet

Sådan programmeres det semantiske web

Det semantiske web kan opleves som en luftig størrelse, men i sidste ende handler det om kode og software. Vi ser på teknologien bag de flotte ord med Java-frameworket Jena.

Det semantiske web bygger på RDF-teknologien (Resource Description Framework). RDF er en måde at beskrive fakta som ting, også kaldet subjekter, der har egenskaber, og egenskaben har en værdi. Det er det, der med et fint matematisk begreb kaldes for prædikatlogik, men i virkeligheden er det meget simpelt.

Fig. 1. RDF bygger på tripler til beskrivelse af fakta. En RDF-tripel består af et subjekt, altså en 'ting', og et prædikat eller egenskab samt denne egenskabs værdi, objektet. Objektet kan igen være subjekt i en anden RDF-tripel, og på den måde opbygges en graf af fakta. Det er denne graf, der 'er' det semantiske web. Ligesom med en relationsdatabase kan man udføre søgninger på grafen. Ofte benyttes URL'er som værdier i RDF-tripler, da de er entydige, sådan mere eller mindre.

I figur 1 ses det, hvorledes det forhold, at en bestemt person har skrevet en bestemt artikel i Prosabladet, kan udtrykkes som triplen ('tania@example.com', 'er-forfatter-til', 'http://prosabladet.dk/artikel/1234'). RDF har ikke nogen bestemt notation tilknyttet sig. Der findes forskellige af slagsen, blandt andet i XML-aftapning, men det er ikke så vigtigt, blot vi kan få alle vores tripler – også kaldet 'modellen' – ind i Jena.

I dette eksempel gør vi det programmatisk, lidt ligesom når man hægter noder på for eksempel et DOM-træ, men Jena kan også loade modellen fra eksterne RDF-kilder på disk eller netværk. Når alle fakta er inde i systemet, kan man spørge til relationerne ved at benytte søgesproget SPARQL, som er det semantiske webs svar på SQL.

Men nu til tasterne. Download Jena fra Openjena.org.

Her benytter vi Eclipse, og efter et nyt projekt er oprettet, skal Jena og dets tilhørende biblioteker importeres. Det gøres ved at vælge menuen Project > Properties > Java Build Path > Libraries > Add External Jars. Naviger frem til mappen Jena-2.6.4\lib i den udpakkede Jena-distribution, og vælg hele baduljen i mappen. Skriv koden angivet i fig. 2, og kør programmet.

Fig. 2. Et lille kodeeksempel med en enkelt RDF-tripel og en SPARQL-forespørgsel.

Eksemplet her giver kun lige en idé om, hvilken teknologi der ligger neden under det semantiske web.

En række eksempler på søgninger, som ikke kunne udføres lige så godt med Google, findes på wiki.dbpedia.org/OnlineAccess, der indeholder fakta fra Wikipedia i form af RDF-tripler. Her findes eksempelvis søgningen: "find alle fodboldspillere (som Wikipedia kender til), der har stået på mål for en klub, der har et hjemmestadion med flere end 40.000 sæder og kommer fra et land med over 10 millioner indbyggere".

Det minder om en databasesøgning i en relationsdatabase, men humlen er, at i det semantiske system kan nye relationer eller egenskaber tilføjes ad hoc, hvilket ikke er muligt i relationsdatabasen.