Alterna(va datamodeller & grafdata på webben Gäs8öreläsning 2017-05- 10 Eva Blomqvist (eva.blomqvist@liu.se)
Översikt Del 1: Varför alternativa datamodeller? Exempel på några alternativ "NoSQL"-databaser Del 2: Introduktion till den semantiska webben Dela data på webben RDF Metoder för att publicera och konsumera data Exempel på datamängder och användningsområden Del 3: Använda webbdata i R
Alterna(v (ll rela(onsmodellen - NoSQL mm
Begränsningar hos rela(onsdatabaser Objekt existerar inte på ett naturligt sätt utan sina attribut, dvs de identifieras mha värden på attribut Exempel: Person utan personnummer? Attribut måste vara atomära, dvs inte t ex listor, eller innehålla "delvärden" Exempel: Adress som ett enda värde, man kan bara ha en adress Semantiken bakom relationsdatabasen är inte explicit - antingen måste vi veta om den, eller så måste vi "härleda" den från hur tabellerna hänger ihop Exempel: I vår ER-modell hade vi anställd som en underkategori av person (jfr. arv) Knepigt att uppdatera databaschemat Kan ofta inte hantera riktigt stora datamängder... Skalar inte horisontellt
5 Alterna(v? Objektorienterade databaser Deduktiva databaser ("logikdatabaser") NoSQL Grafdatabaser Key-value stores...
6 Vad är NoSQL? "not only SQL" Definition (från http://nosql-database.org/): "Next Generation Databases mostly addressing some of the points: being non-relational, distributed, opensource and horizontally scalable." "Often more characteristics apply such as: schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID), a huge amount of data and more. "
7 Key- value store Jfr. hashtabell Exempel: Amazon DynamoDB Fördelar Distribuerat (samma hash-funktion) Tillgängligt Enkel modell - inget schema Utmaningar Konsistens, tid för händelser och konflikthantering => Offrar konsistens mot tillgänglighet och replikering
8 Wide column store "tvådimensionellt" key-value store Tabell där radnamn + kolumnnamn utgör nyckeln för ett dataelement Tänkt för en stor mängd kolumner
9 Exempel: Googles BigTable Utvecklades av Google 2004-2006 "Rådata" från Googles crawlers (2006) ca 800TB, 1000 miljarder celler Distribuerat över serverkluster Hierarki av tabeller för att hitta rätt data
10 Exempel: Apache Cassandra Används av bla Apple, Netflix, ebay, Instagram... Kännetecknas av att data finns replikerat på flera noder och alla noder har samma "status" Netflix Detaljerade kategorier Användarstatistik sedan många år tillbaka
11 Grafdatabaser Mycket data vi har är "naturligt" en graf Sociala nätverk Länkar eller andra relationer mellan dokument... Typisk datamodell Noder Bågar (relationer) Attribut för både noder och relationer 1 sedan= 2011 jobbarpå namn= Eva personnummer=... 2 namn= Linköpings Universitet adress=...
12 Exempel: Neo4J Grundades av en Linköpingsstudent En av de populäraste grafdatabaserna? Används av Walmart (produktrekommendationer), Telenor (resurser och åtkomstkontroll), ebay (leveransplanering)... Video (2009) http://www.infoq.com/presentations/emil-eifremneo4j
13 Data på webben - RDF och länkade data
Web vs. Seman(c Web
The Seman(c Web Layers
Relationsdatabas eller kunskapsbas? 17 En relationsdatabas har en mycket effektiv underliggande modell (för "normalstora" data) men......semantiken bakom viss information förloras när den lagras som tabeller (jfr. ER-modell vs. tabeller) Exempel: Lista alla forskningsartiklar Namn Anders Anna Bengt Position Doktorand Professor Pressansvarig Författare Artikel Bengt Universitetsnytt 2014 Anna Ontology engineering Bengt Statistik över LiU '07
Relationsdatabas eller kunskapsbas? Med en ontologi har vi ett mycket mer expressivt språk och semantiken (modellen) följer med hela vägen Exempel: Lista alla forskningsartiklar Position Fakultetsposition Doktorand Professor Administrativ position Pressansvarig Forskare Bengt Person Anders Anna Artikel Universitetsnytt 2014 Statistik över LiU '07 Ontology engineering Forskningsartikel = artikel skriven av en forskare = person som har en fakultetsposition
RDF - Resource Descrip(on Framework W3C Recommendation http://www.w3.org/rdf RDF är en grafisk modell - en grafdatamodell finns olika syntaxer för att uttrycka den, t ex genom XML, eller Turtle ursprungligen för att hantera metadata på webben Datamodell baserat på tripplar
RDF - datamodellen Vår datamängd byggs upp av <subject, predicate, object> tripplar: <Eva, jobbarpå, LinköpingsUniversitet> Tripplarna bildar en graf: Tripplarna beskriver attribut för resurserna och relationer till andra resurser En resurs är vad som helst som kan identifieras genom en URI En webbsida, en bok, en verklig person... Relationer är också resurser, vi namnger våra relationer med hjälp av URI:er Eva http://.../eva jobbarpå Linköpings Universitet http://.../linköpingsuniversitet http://.../jobbarpå
RDF- grafer Det som är "subject" i en trippel kan vara "object" i en annan (notera att "object" antingen kan vara en nod eller en s.k. "literal", dvs ett dataelement såsom en siffra) En samling tripplar bildar en riktad graf med namngivna noder http://.../eva http://.../jobbarpå foaf:name http://.../linköpingsuniversitet Eva Blomqvist http://.../baserati http://.../baserati http://.../linköping http://.../norrköping
RDF Bengt Anna Universitetsnytt 2014 Doktorand Pressansvarig Anders Statistik över LiU '07 Professor Ontology engineering
RDF + RDF Schema (RDFS) Position Fakultetsposition Doktorand Professor Administrativ position Pressansvarig Person Anna Bengt Anders Artikel Universitetsnytt 2014 Statistik över LiU '07 Ontology engineering
RDF + RDFS + OWL Position Fakultetsposition Doktorand Professor Administrativ position Pressansvarig Forskare Bengt Person Anders Anna Artikel Universitetsnytt 2014 Statistik över LiU '07 Ontology engineering Forskningsartikel = artikel skriven av en forskare = person som har en fakultetsposition
25 RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/>
RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> http://.../foretag_bce892 <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> rdf:type <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/> 26 foaf:organization
RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/> http://.../foretag_bce892 rdf:type foaf:organization 27 Uthyrning... http://.../68201 skos:preflabel
RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> http://.../foretag_bce892 rdf:type org:classification http://.../68201 <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/> 28 foaf:organization Uthyrning... skos:preflabel
RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/> http://.../foretag_bce892 rdf:type 29 foaf:organization Uthyrning... http://.../68201 org:classification skos:preflabel http://.../04 http://.../sweden gn:parentfeature rdfs:label Södermanlands...
foaf:organization 30 RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> http://.../foretag_bce892 rdf:type <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> http://.../68201 org:classification skos:preflabel http://.../04 gn:parentfeature http://.../0484 rdfs:label <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/> Uthyrning... http://.../sweden gn:parentfeature rdfs:label Södermanlands... Eskilstuna kommun
RDF/XML exempel <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/organization"/> <rdf:description rdf:about="http://data.scb.se/terms/sni/68201"> <skos:preflabel> Uthyrning och förvaltning av egna eller arrenderade bostäder</skos:preflabel> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <org:classification rdf:resource="http://data.scb.se/terms/sni/68201"/> <rdf:description rdf:about="http://data.scb.se/terms/lkf/04"> <gn:parentfeature rdf:resource="http://dbpedia.org/resource/sweden"/> <rdfs:label>södermanlands län</rdfs:label> <rdf:description rdf:about="http://data.scb.se/terms/lkf/0484"> http://.../foretag_bce892 rdf:type foaf:organization http://.../68201 geo:location org:classification skos:preflabel http://.../04 http://.../sweden gn:parentfeature gn:parentfeature http://.../0484 rdfs:label <gn:parentfeature rdf:resource="http://data.scb.se/terms/lkf/04"/> <rdfs:label>eskilstuna kommun</rdfs:label> <rdf:description rdf:about="http://www.ida.liu.se/projects/semtech/energy/effektivisering/2013/09/foretag_bce892"> <geo:location rdf:resource="http://data.scb.se/terms/lkf/0484"/> 31 Uthyrning... rdfs:label Södermanlands... Eskilstuna kommun
Ställa frågor mot RDF - SPARQL <h@p://example.org/book/book1> <h@p://purl.org/dc/elements/1.1/(tle> "SPARQL Tutorial". SELECT?(tle WHERE { <h@p://example.org/book/book1> <h@p://purl.org/dc/elements/1.1/(tle>?(tle. } "SPARQL Tutorial"
34 Hur lagras och (llhandahålls RDF- data? Nedladdningsbara filer Ladda hem och ladda in i eget triple store Data direkt på webben - "länkade data" Slå upp URI:er och traversera grafen Experimentella SPARQL-interface finns SPARQL-endpoints Ställ SPARQL fråga mot en tjänst på webben Specialiserade API:er
35 DBMS för RDF = Triple stores Specialdesignade grafdatabaser för att stödja RDF (och i många fall även OWL) Exempel: Jena, RDF4J, OpenLink Virtuoso, Blazegraph, Stardog... Skillnad mot andra grafdatabaser? RDF tillåter inte attribut på noder och bågar Standardiserat frågespråk och datamodell Stödjer oftast ontologier & inferens Ju mer uttrycksfull modell desto sämre skalbarhet
Länkade data RDF data som publiceras på webben i enlighet med ett antal principer: 1. Använd URI:er som namn på "saker" 2. Använd HTTP-URI:er så att man kan slå upp namnen 3. När någon slår upp en URI, se till att returnera användbar information om URI:n, genom standarder (RDF, SPARQL) 4. Inkludera länkar till andra URI:er, så att man kan upptäcka mer Linking Open Data Project LOD Det första projektet som började publicera data på detta sätt Nu mycket mer än ett projekt
LOD data
Ej LOD exempel: DBPedia Man har extraherat strukturerad information (RDF) från Wikipedia (främst "infoboxes") Utforska: skriv in en URI för en entitiet i din browser, t ex URI:n för Berlin - http://dbpedia.org/page/berlin Ställ frågor genom deras publika SPARQL endpoint - http://dbpedia-live.openlinksw.com/sparql
Ej LOD exempel: DBPedia Exempelfråga till DBPedia: Ge mig alla fotbollsspelare som har spelat som målvakter för klubbar som har en arena med mer än 40 000 platser, och som är födda i ett land med mer än 10 miljoner invånare. PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX dbp: <http://dbpedia.org/property/> select distinct?player?team?country where {?player a dbo:soccerplayer.?player dbo:position <http://dbpedia.org/resource/goalkeeper_(association_football)>.?player dbo:team?team.?team dbo:ground?stadium.?stadium dbo:seatingcapacity?no. FILTER (?no > 40000).?player dbo:birthplace?country.?country a dbo:country.?country dbp:populationcensus?pop. FILTER (?pop > 10000000) }
40 Hur kan jag använda länkade data? Utnyttja "the Web of Data" i dina system Exempel: basdata såsom information om platser Hur kommer jag åt data? Nedladdning av datamängder - eget triple store HTTP - följ länkarna (kataloger, t ex https://datahub.io/ ) SPARQL endpoints (http://sparqles.ai.wu.ac.at/availability ) Andra API:er
43 Exempel på användning - slutanvändare BBC Wildlife Finder Hela webbportalen genereras utifrån RDF-data (underhålls tyvärr inte längre) http://www.bbc.co.uk/nature/wildlife Europeana Europeiskt projekt för att samla in kulturarsdata http://www.europeana.eu/portal/ Finland Kulturarv, litteratur, historiska dokument Nationell ontologiservice "Everything is connected" - http://everythingisconnected.be/
Använda webbdata i R
R och länkade data Analysera webbdata med R SPARQL-paket https://cran.r-project.org/web/packages/ SPARQL/index.html Ställ SPARQL-frågor mot publika endpoints för att hämta in data till R
46 R- SPARQL tutorial http://linkedscience.org/tools/sparql-package-for-r/ sparql-package-for-r-gephi-movie-star-graphvisualization-tutorial/ Data från DBpedia om filmskådespelare DEMO
47 Summering Moderna storskaliga (webb-) applikationer ställer andra krav än vad traditionella RDBMS är byggda för Horisontell skalbarhet Flexibla scheman Länka till externa data... NoSQL är ett samlingskoncept för populära alternativ såsom grafdatabaser En speciell grafdatamodell är RDF, specifikt utvecklad för webbdata Med länkade data + ontologier kan vi bygga system som utnyttjar webben nästan som om det vore en stor databas Med SPARQL-paketet för R kan man analysera sådana data i R
Frågor? eva.blomqvist@liu.se www.liu.se
Länkar http://nosql-database.org/ http://aws.amazon.com/dynamodb/ https://cloud.google.com/bigtable/ http://cassandra.apache.org/ http://neo4j.com/ http://www.w3.org/standards/semanticweb/ https://sv.wikipedia.org/wiki/semantiska_webben http://semanticweb.org/wiki/ontology http://linkeddata.org/ https://jena.apache.org/ http://rdf4j.org/ https://github.com/openlink/virtuoso-opensource https://wiki.blazegraph.com/wiki/index.php/main_page http://stardog.com/ https://cran.r-project.org/web/packages/sparql/index.html http://linkedscience.org/tools/sparql-package-for-r/sparql-package-for-r-gephi-movie-star-graph-visualization-tutorial/