Skip to Content

Hva i all verden er semantiske grafdata?

Capgemini
April 20, 2021

Vel, dette blogginnlegget tar deg gjennom en introduksjon til semantiske grafdata, fundamentet for semantiske kunnskapsgrafer (eng: knowledge graphs) og et dataformat og datadreven fremgangsmåte for applikasjoner.

Semantiske teknologier

Den britiske informatikeren Tim Berners-Lee hadde en visjon for webben at alle data kunne bli analysert og tolket av maskiner. Alt innhold, lenker, transaksjoner mellom maskin og menneske, knyttet sammen i en maskinlesbar struktur. Hans visjon var en semantisk web.

Semantiske teknologier er myntet på denne visjonen og enkoder meningen bak data og innhold, separat fra applikasjoner. Dette gjøre det mulig for menneske og maskin å dele og resonnere på data i kjøretid.

Denne teknologien er bygget på et felles rammeverk som gir muligheter for bruk og gjenbruk av data på tvers av applikasjoner. Utvikling og standardisering av disse teknologiene ledes av World Wide Web Consortium (W3C) i samarbeid med forskere og utviklere.

Fundamentet i den semantiske stakken er standarden Resource Description Framework (RDF), som du vil lese om her.

Resource Description Framework

Forbehold: glem alt du kan om tabulære data!

Tenk på data som rettede grafer, og at alle ting har en relasjon til andre ting.

  • RDF beskriver data som rettede grafer. Det betyr at alle kanter i grafen peker i en-eller-annen retning.
  • Data er beskrevet som tripler, på formen subject predikat objekt.
  • Et trippel omtales også som fakta (eng: fact) eller utsagn (eng: statement).
  • Alle elementene i et trippel (subject, predikat og objekt) kalles også en ressurs (eng: resource).
  • Vi bruker Uniform Resource Identifiers (URI) som unike IDer for å skille ressurser fra hverandre.

Uniform Resource Identifiers

En URI er kun et navn. Det trenger ikke å peke til noenting.

scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

Vanligvis beskriver vi URIer under HTTP-domenet, med en sti og et fragment som er unikt for den respektive ressursen. Et eksempel kan være

http://data.capgemini.com/Hobbiten

Data som rettede grafer

I dette eksempelet ser vi ressursen Hobbiten (subjektet) som har en relasjon til J.R.R Tolkien (objektet). Relasjonen er den navngitte kanten skrevet av (predikatet). Vi kan se at kanten går i en bestemt retning, som er felles for alle relasjoner beskrevet i RDF. La oss ta en kikk på hvordan dette ser ut skrevet med en av syntaksene for RDF.

Syntaks

RDF er kun en standard som beskriver data som rettede grafer. Det er mange syntakser for å uttrykke RDF. Tradisjonelt var RDF/XML i utstrakt bruk, men XML er litt gammeldags og vanskelig å lese. Heldigvis så finnes det andre alternativer! RDF Turtle er nok den syntaksen som er mest brukt i dag, og den du vil snuble over når du leser artikler og standarder rundt semantiske teknologier. Andre populære syntakser er JSON-LD og N-Triples. Jeg vil bruke Turtle i dette innlegget.

http://data.capgemini.com/Hobbiten http://data.capgemini.com/skrevetAv
http://data.capgemini.com/JRRTolkien .

Disse tre URIene er Turtle syntaksen for den lille grafen fra bildet ovenfor. Hvis vi ikke vil skrive den fulle URIen hele tiden, kan vi også prefikse denne i Turtle.

@prefix data: <http://data.capgemini.com/> .

data:Hobbiten data:skrevetAv data:JRRTolkien .

Ved å prefikse navnerom kan vi bruke navnet vi definerer (i dette tilfellet data) for URI-stien vår i resten av RDF-dokumentet. Dette sparer oss for tastetrykk, noe vi utviklere liker, ikke sant?

Literalverdier

Hittil har vi sett eksempel på en URI i objektposisjon av et trippel. Men vi kan også ha dataverdier. Dataverdier, eller literaler, er som løvnoder i grafen. Vi har fem varianter av literaler i RDF.

data:Hobbiten data:tittel “Hobbiten” .
data:Hobbiten data:tittel “The Hobbit, or There and Back Again”@en .
data:Hobbiten data:sideantall 310 .
data:Hobbiten data:utgitt “1937-09-21”^^xsd:date .
data:Hobbiten data:filmatisert true .

  1. Først har vi en enkel strengverdi.
  2. Så en strengverdi med en språkspesifikasjon (basert på ISO 639), i dette tilfellet engelsk.
  3. Sideantall viser en enkel heltallsverdi.
  4. “1937-09-21”^^xsd:date er en typed dataverdi, hvor datatypen er xsd:date fra navnerommet xsd.
  5. Og til sist en sannhetsverdi, som kan være sann eller usann.

Dele resursser

Som du sikkert fikk med deg i forrige eksempel, så gjentar vi subjektet over alle fem linjer. Hva var det jeg sa om tastetrykk? Selvfølgelig finnes det er mer kompakt syntaks for deling av ressurser.

data:Hobbiten

data:tittel “Hobbiten”@no, “The Hobbit, or There and Back Again”@en ;
data:sideantall 310 ;
data:utgitt “1937-09-21”^^xsd:date ;
data:filmatisert true .

Vi kan slenge på to eller flere predikater på et subjekt ved å bruke semikolon (;), og vi kan ramse opp to eller flere objektverdier til et predikat ved å bruke komma (,). Rekken med tripler for et gitt subjekt avsluttes alltid med punktum (.).

Hvor finner vi kunnskapsgrafer?

Semantiske teknologier og RDF er designet som et datautvekslingsformat. Den semantiske stakken inneholder en rekke teknologier som lar deg knytte kunnskap til mengder av ressurser, relasjoner og elementene i disse mengdene. Dette gjør at vi kan uttrykke komplekse datastrukturer rett i kunnskapsgrafen. Semantiske kunnskapsgrafer finner du i domener som olje og gass, akademia, livsvitenskap, mediehus, sosiale medier, arkiv, offentlig sektor, og bank og finans.

Følg med på bloggen for flere innlegg om konkrete prosjekter hvor vi benytter kunnskapsgrafer og introduksjoner til resten av den semantiske stakken!

Om forfatteren


Veronika Heimsbakk

Veronika er senior semantikknerd hos Capgemini og har i de siste seks årene jobbet som utvikler og informasjonsarkitekt innenfor kunnskapsgrafer. Hun har en forkjærlighet for å finne struktur og kunnskap i kaotiske og ustrukturerte data.

Vil du vite mer om semantiske grafdata og hva det kan gjøre for din bedrift? Ta kontakt med Veronika Heimsbakk

Vil jobbe hos oss? Ta kontakt med Beate Nesheim