Linked Open Data Einführung
Transcription
Linked Open Data Einführung
Linked Data & SPARQL Birte Glimm Institut für Künstliche Intelligenz | 12. Mai 2012 Eine Einführung Foliensatz adaptiert von Andreas Harth und M. Krötzsch. Die nichtkommerzielle Vervielfältigung, Verbreitung und Bearbeitung ist zulässig ( → Lizenz CC-BY-NC). 2/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Agenda Resource Description Framework Linked Data SPARQL Komplexe Graph-Muster in SPARQL Filter in SPARQL Ausgabeformate in SPARQL Modifikatoren in SPARQL 3/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Agenda Resource Description Framework Linked Data SPARQL Komplexe Graph-Muster in SPARQL Filter in SPARQL Ausgabeformate in SPARQL Modifikatoren in SPARQL 4/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Allgemeines zu RDF I “Resource Description Framework” I W3C Recommendation (http://www.w3.org/RDF) I Zur Zeit in der Überarbeitung RDF ist ein Datenmodell I I I I ursprünglich: zur Angabe von Metadaten für Web-Ressourcen, später allgemeiner kodiert strukturierte Informationen universelles, maschinenlesbares Austauschformat 5/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Daten als Menge von Tripeln I Graphdarstellung Verschiedene syntaktische Darstellungsformen http://example.org/verlegtBei http://example.org/SemanticWeb http://springer.com/Verlag http://www.w3.org/1999/ http://example.org/Titel 02/22-rdf-syntax-ns#type Semantic Web – Grundlagen http://example.org/Verlag 6/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Agenda Resource Description Framework Linked Data SPARQL Komplexe Graph-Muster in SPARQL Filter in SPARQL Ausgabeformate in SPARQL Modifikatoren in SPARQL 7/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Daten im Web I Immer mehr Anbieter stellen nicht nur Webseiten (HTML) im Web zur Verfügung sondern (auch) Daten I Dabei werden Semantic Web Standards verwendet (siehe Linking Open Data (LOD) Initiative) http://www.w3.org/wiki/SweoIG/TaskForces/ CommunityProjects/LinkingOpenData I Verwendet werden APIs, z.B. via JSON/REST, für den programmatischen Zugriff I Semantic Web Technologien vereinfachen die Integration von Daten aus verschiedenen Quellen I Die Kombination von Daten erlaubt tiefere Einblicke 8/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Linked Data im Web 01.05.2007 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ 9/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Linked Data im Web 31.03.2008 ECS Southampton Musicbrainz Jamendo BBC Later + TOTP Doapspace AudioScrobbler QDOS Magnatune BBC John Peel updated FOAF profiles Geonames US Census Data SemWebCentral Flickr exporter Ontoworld riese GovTrack SW Conference Corpus OpenGuides Revyu DBpedia NEW! SIOC profiles World Factbook Wikicompany RDF Book Mashup lingvoj DBLP Berlin NEW! Eurostat W3C WordNet Open Cyc RKB Explorer flickr wrappr Project Gutenberg DBLP Hannover Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ 10/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Linked Data im Web 14.07.2009 Surge Radio BBC Playcount Data Musicbrainz MySpace Wrapper BBC Music AudioScrobbler BBC John Peel BBC Later + TOTP Jamendo Eurostat Wikicompany SemWebCentral Doapspace FOAF profiles SIOC Sites Virtuoso Sponger Magnatune US Census Data GEO Species UMBEL Reactome Yago Homolo Gene LAASCNRS UniRef UniParc Drug Bank Daily Med IBM Taxonomy PROSITE GeneID KEGG UniProt Pfam Diseasome CORDIS Newcastle IEEE CiteSeer DBLP Berlin LinkedCT Pub Chem eprints DBLP Hannover W3C WordNet GovTrack Open Cyc Freebase lingvoj DBLP RKB Explorer RKB ECS Southampton RDF Book Mashup DBpedia Linked GeoData National Science Foundation RAE 2001 Pisa Linked MDB World Factbook ReSIST Project Wiki Eurécom IRIT Toulouse ACM Open Calais riese Budapest BME OpenGuides BBC Programmes Resex SW Conference Corpus Revyu flickr wrappr Project Gutenberg RDF ohloh Semantic Web.org Flickr exporter QDOS Crunch Base Geonames Pub Guide ECS Southampton LIBRIS CAS ChEBI OMIM Symbol Inter Pro UniSTS HGNC MGI ProDom Gene Ontology PDB PubMed As of July 2009 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ 11/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Linked Data im Web 22.09.2010 DB Tropes biz. data. gov.uk Population (EnAKTing) NHS John Peel (DB Tune) education data.gov .uk OpenEI CO2 (EnAKTing) (EnAKTing) Ordnance Survey legislation .gov.uk UK Postcodes ESD standards reference data.gov .uk The London Gazette BBC Program mes LOIUS rdfabout US SEC GovTrack Linked Sensor Data (Kno.e.sis) The Open Library (Talis) Poképédia Linked LCCN Fishes of Texas Linked MDB EventMedia UMBEL flickr wrappr URI Burner Twarql WordNet (VUA) Linked GeoData RDF ohloh RESEX Wiki Pisa dbpedia lite Daily Med Taxonomy Linked Open Numbers CiteSeer IEEE Roma dotAC GESIS Courseware CORDIS ePrints Pub Chem OBO KISTI KEGG Drug JISC LAAS Diseasome ChEBI KEGG Cpd Reactome PDB Pfam KEGG Enzyme CAS ProDom KEGG Glycan KEGG Reaction Chem2 Bio2RDF Gene Ontology UniSTS KEGG Pathway NSF HGNC Homolo Gene SGD PubMed Newcastle UN/ LOCODE UniProt Gen Bank IBM RAE2001 STITCH Drug Bank Affymetrix ACM data dcs ERA SIDER TCM Gene DIT Budapest IRIT DBLP (RKB Explorer) STW PROSITE Cornetto Eurécom OAI SW Dog Food DBLP (FU Berlin) VIVO Cornell Project Gutenberg (FUB) Medi Care Uni Pathway (RKB Explorer) DBLP (L3S) VIVO UF Uberblic Linked CT Product DB Revyu OS UniParc Airports RISKS DEPLOY semantic web.org BibBase iServe Lexvo WordNet (W3C) Lotico VIVO Indiana UniRef Climbing P20 OpenCal ais Freebase lingvoj Open Cyc RDF Book Mashup Ulm ECS Southampton UB Mannheim ECS YAGO riese Gem. Normdatei Semantic Crunch Base NSZL Catalog totl.net EUNIS VIAF Goodwin Family Semantic XBRL rdfabout US Census PSH PBAC World Factbook (FUB) Geo Species ECS Southampton EPrints lobid Resources Pokedex New York Times Geo Names lobid Organisations LCSH LIBRIS DBpedia Geo Linked Data (es) Eurostat Chronicling America t4gm RAMEAU SH MARC Codes List Telegraphis Taxon Concept NASA (Data Incubator) transport data.gov .uk Eurostat (FUB) TWC LOGD Jamendo BBC Music Rechtspraak. nl The Open Library Manchester Reading Lists Last.FM (rdfize) classical (DB Tune) BBC Wildlife Finder Openly Local statistics data.gov .uk Linked Data for Intervals Last.fm Artists (DBTune) Music Brainz (zitgist) Music Brainz (DBTune) Discogs (Data Incubator) FanHubz EUTC Productions Mortality (EnAKTing) Energy Surge Radio research data.gov .uk (EnAKTing) Music Brainz (Data Incubator) NDL subjects NTU Resource Lists Plymouth Reading Lists GTAA Magnatune St. Andrews Resource Lists Sussex Reading Lists Audioscrobbler (DBTune) MySpace (DBTune) Moseley Folk GeneID MGI OMIM InterPro As of September 2010 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ 12/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Linked Data im Web 19.09.2011 Hellenic FBD Hellenic PD Crime Reports UK NHS (EnAKTing) Ren. Energy Generators EEA Open Election Data Project EU Institutions Mortality (EnAKTing) Ordnance Survey legislation data.gov.uk UK Postcodes ESD standards ISTAT Immigration Lichfield Spending Scotland Pupils & Exams Traffic Scotland Data Gov.ie reference data.gov. uk London Gazette TWC LOGD Eurostat Eurostat (FUB) (RKB Explorer) (Ontology Central) GovTrack Linked EDGAR (Ontology Central) EURES Finnish Municipalities New York Times Open Cyc Italian public schools BibBase Freebase DBLP (FU Berlin) dataopenac-uk TCM Gene DIT Daily Med Twarql EUNIS Ocean Drilling Codices Turismo de Zaragoza Janus AMP Climbing Linked GeoData PDB Alpine Ski Austria AEMET Metoffice Weather Forecasts Weather Stations Yahoo! Geo Planet PROSITE ChEMBL Open Data Thesaurus Sears Pisa ACM RESEX Scholarometer NVD IBM DEPLOY Newcastle RAE2001 LOCAH Roma CiteSeer Courseware HGNC (Bio2RDF) Affymetrix SISVU GEMET Airports National Radioactivity JP GESIS Budapest IRIT dotAC ePrints IEEE RISKS PubMed ProDom VIVO Cornell STITCH Linked Open Colors SGD Gene Ontology AGROV OC Product DB Swedish Open Cultural Heritage STW LAAS KISTI NSF JISC WordNet (RKB Explorer) EARTh DBLP (RKB Explorer) VIVO Indiana UniProt Taxono my Cornetto WordNet (W3C) lobid Organisations ECS (RKB Explorer) Pfam LODE SMC Journals NSZL Catalog Wiki ECS Southampton ECS Southampton EPrints Eurécom LinkedCT UniProt WordNet (VUA) lobid Resources P20 UN/ LOCODE SIDER Drug Bank Enipedia Lexvo DBLP (L3S) ERA Diseasome Europeana Deutsche Biographie OAI data dcs Uberblic dbpedia lite VIAF UB Mannheim Ulm data bnf.fr BNB lingvoj Norwegian MeSH GND ndlna Calames OS YAGO Rådata nå! PSH IdRef Sudoc DDC Project Gutenberg ntnusc LIBRIS LCSH Sudoc RDF Book Mashup Open Calais Greek DBpedia LEM Thesaurus W MARC Codes List totl.net US Census (rdfabout) El Viajero Tourism URI Burner World Factbook Geo Species UMBEL riese GeoWord Net Piedmont Accomodations Portuguese DBpedia t4gm info RAMEAU SH LinkedL CCN SW Dog Food iServe Geo Names US SEC Scotland Geography Linked MDB Event Media DBpedia (rdfabout) Semantic XBRL FTS flickr wrappr NDL subjects Open Library (Talis) theses. fr my Experiment Revyu Fishes of Texas Linked Sensor Data (Kno.e.sis) Eurostat Chronicling America Telegraphis Geo Linked Data CORDIS CORDIS (FUB) Goodwin Family NTU Resource Lists Open Library Plymouth Reading Lists SSW Thesaur us semantic web.org BBC Music BBC Wildlife Finder NASA (Data Incubator) transport data.gov. uk Source Code Ecosystem Linked Data Didactal ia Pokedex St. Andrews Resource Lists Manchester Reading Lists gnoss Poképédia Classical (DB Tune) Taxon Concept LOIUS Jamendo (DBtune) Last.FM (rdfize) BBC Program mes Rechtspraak. nl Openly Local data.gov.uk intervals Music Brainz (DBTune) Ontos News Portal Sussex Reading Lists Bricklink yovisto Semantic Tweet Linked Crunchbase RDF ohloh (Data Incubator) (DBTune) OpenEI statistics data.gov. uk GovWILD Brazilian Politicians educatio n.data.g ov.uk Music Brainz (zitgist) Discogs FanHubz patents data.go v.uk research data.gov. uk CO2 Emission (EnAKTing) Energy (EnAKTing) Surge Radio Klappstuhlclub Lotico (Data Incubator) Last.FM artists Population (EnAKTing) reegle business data.gov. uk Crime (EnAKTing) Ox Points EUTC Productions tags2con delicious Slideshare 2RDF (DBTune) Music Brainz John Peel (DBTune) Linked User Feedback LOV Audio Scrobbler Moseley Folk GTAA Magnatune DB Tropes OMIM MGI InterPro Smart Link Product Types Ontology Open Corporates Italian Museums Amsterdam Museum UniParc UniRef UniSTS GeneID Linked Open Numbers Reactome OGOLOD KEGG Pathway Medi Care Google Art wrapper meducator KEGG Drug Pub Chem UniPath way Chem2 Bio2RDF Homolo Gene VIVO UF ECCOTCP bible ontology KEGG Enzyme PBAC KEGG Reaction KEGG Compound KEGG Glycan As of September 2011 Linking Open Data cloud diagram, by Richard Cyganiak and Anja Jentzsch. http://lod-cloud.net/ 13/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Semantic Web Technologien I I Nützlich zum Publizieren, zum Austausch und zur Integration von Daten Semantic Web Technologien sind mittlerweile recht ausgereift I I I I I I I IRIs (IETF RFC 3987, 2005) HTTP (IETF RFC 2616, 1999) RDF (W3C Recommendation, 1999, Update in 2004) RDFS (W3C Recommendation, 2004) SPARQL (W3C Recommendation, 2008, Update im Moment) OWL (W3C Recommendation, 2004, Update in 2009) Linked Data besteht aus einigen Prinzipien zum Publizieren von Daten im Web 14/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Linked Data Principles* 1. Use URIs to name things; not only documents, but also people, locations, concepts, etc. 2. To enable agents (human users and machine agents alike) to look up those names, use HTTP URIs 3. When someone looks up a URI we provide useful information; with ’useful’ in the strict sense we usually mean structured data in RDF. 4. Include links to other URIs allowing agents (machines and humans) to discover more things *http://www.w3.org/DesignIssues/LinkedData.html 15/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Zusammenhang zwischen URI einer Sache und URI einer Quelle User Agent HTTP GET http://www.polleres.net/foaf.rdf#me RDF Web Server http://www.polleres.net/foaf.rdf 16/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Zusammenhang zwischen URI einer Sache und URI einer Quelle User Agent HTTP GET 303* HTTP GET http://dbpedia.org/resource/Gordon_Brown RDF Web Server http://dbpedia.org/data/Gordon_Brown http://dbpedia.org/page/Gordon_Brown *HTTP Response Code 303: See Other 17/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Hintergrund: Uniform Resource Identifiers I Ein Uniform Resource Identifier ist eine kompakte Sequenz von Charakteren, die eine abstrakte oder physikalische Ressource identifizieren [RFC3986] I Syntax URI = Schema ":" [ Anbieter ] Pfad [ "?" Abfrage ] [ "#" Teil ] I Beispiel Abfrage Anbieter z }| { z }| { example.com:8042/ bar ?name=peter foo:// |{z} |#titel {z } | {z } Schema Pfad Teil 18/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 URIs/IRIs Protokoll Domäne z }| {z }| { http://semanticweb.org/id/Axel_Polleres {z } | {z }| Namensraum Lokaler Name Präfix z }| {z }| { thing:Axel_Polleres I URIs sind “Uniform Resource Identifiers” I I I IRIs sind Unicode-basierte “Internationalized Resource Identifiers” Jede URI identifiziert eine Entität Semantic Web URIs nutzen üblicherweise HTTP I I I HyperText Transfer Protocol Können idealerweise aufgelöst werden, um weitere Daten zu erhalten Linked Data 19/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 HTTP Übersicht I HTTP Nachrichten bestehen aus der Anfrage eines Clients an einen Server und die Antworten des Servers zum Client I Bestimmte Methoden sind vordefiniert (z.B. GET, POST, etc.), aber weitere können definiert werden Eine Menge von Statuscodes ist definiert: I I I I I I Informational 1xx, provisional response, (100 Continue) Successful 2xx, request successfully received, understood, and accepted (201 Created) Redirection 3xx, further action needs to be taken by user agent to fulfill the request (301 Moved Permanently) Client Error 4xx, client erred (405 Method Not Allowed) Server Error 5xx, server encountered an unexpected condition (501 Not Implemented) 20/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 HTTP Content Negotiation I Content Negotiation (CN, conneg) ist der Prozess der Selektion der besten Repräsentation für eine Anfrage wenn mehrere Repräsentationen verfügbar sind I Drei Arten: server-driven, agent-driven, transparent $ curl -H "Accept: application/rdf+xml" http://dbpedia.org/resource/Galway HTTP/1.1 303 See Other Content-Type: application/rdf+xml Location: http://dbpedia.org/data/Galway.rdf $ curl – Tool um Daten zu einem Server zu schicken oder von einem Server zu empfangen -H bedeutet nur HTTP/HTTPS 21/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Semantic Web Application Architecture 21/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Semantic Web Application Architecture Birte Glimm | 22/51 Linked Data & SPARQL | 12. Mai 2012 Ox Points NHS (EnAKTing) Ren. Energy Generators Open Election Data Project EU Institutions Mortality (EnAKTing) legislation data.gov.uk UK Postcodes ESD standards ISTAT Immigration Lichfield Spending Scotland Pupils & Exams Traffic Scotland Data Gov.ie reference data.gov. uk data.gov.uk intervals London Gazette TWC LOGD Eurostat Eurostat (FUB) (RKB Explorer) Finnish Municipalities Event Media New York Times Geo Species UMBEL El Viajero Tourism RDF Book Mashup Greek DBpedia BNB BibBase DBLP (FU Berlin) dataopenac-uk TCM Gene DIT Daily Med DBLP (L3S) Diseasome SIDER UniProt PDB PROSITE ProDom SMC Journals Ocean Drilling Codices Janus AMP Climbing Linked GeoData WordNet (W3C) Alpine Ski Austria AEMET Metoffice Weather Forecasts Weather Stations Yahoo! Geo Planet Airports National Radioactivity JP Sears DEPLOY RAE2001 LOCAH Roma Courseware dotAC IEEE RISKS Affymetrix SISVU PubMed ChEMBL Linked Open Colors SGD Gene Ontology AGROV OC Open Data Thesaurus Product DB NVD IBM ePrints VIVO Cornell STITCH OMIM MGI InterPro Smart Link Product Types Ontology Open Corporates Italian Museums Amsterdam Museum UniParc UniRef UniSTS Linked Open Numbers Reactome OGOLOD KEGG Pathway Medi Care Google Art wrapper meducator KEGG Drug Pub Chem GeneID UniPath way Chem2 Bio2RDF Homolo Gene Scholarometer IRIT Newcastle CiteSeer HGNC GESIS RESEX LAAS KISTI NSF JISC WordNet (RKB Explorer) GEMET EARTh Swedish Open Cultural Heritage STW Pisa ACM VIVO Indiana UniProt (Bio2RDF) LODE Turismo de Zaragoza lobid Organisations Budapest Pfam LinkedCT Taxono my Wiki ECS Southampton ECS (RKB Explorer) DBLP (RKB Explorer) Eurécom Drug Bank Enipedia Cornetto NSZL Catalog P20 ECS Southampton EPrints UN/ LOCODE ERA lingvoj Lexvo WordNet (VUA) lobid Resources OAI data dcs Uberblic dbpedia lite Europeana Deutsche Biographie Ulm data bnf.fr OS Project Gutenberg Norwegian MeSH VIAF UB Mannheim Calames Freebase YAGO Open Cyc riese Twarql EUNIS GeoWord Net Italian public schools URI Burner World Factbook Rådata nå! GND ndlna totl.net US Census (rdfabout) Piedmont Accomodations IdRef Sudoc DDC Open Calais ntnusc PSH SW Dog Food Portuguese DBpedia LEM LIBRIS LCSH MARC Codes List Sudoc iServe Geo Names US SEC (rdfabout) Semantic XBRL Scotland Geography Linked MDB t4gm info RAMEAU SH Thesaurus W theses. fr my Experiment flickr wrappr DBpedia Linked Sensor Data (Kno.e.sis) Eurostat (Ontology Central) GovTrack Linked EDGAR (Ontology Central) FTS Pokedex NDL subjects Open Library (Talis) LinkedL CCN SSW Thesaur us Didactal ia Goodwin Family NTU Resource Lists Open Library Plymouth Reading Lists Revyu Fishes of Texas Geo Linked Data CORDIS CORDIS (FUB) EURES Chronicling America Telegraphis NASA (Data Incubator) transport data.gov. uk gnoss Poképédia St. Andrews Resource Lists Manchester Reading Lists Source Code Ecosystem Linked Data semantic web.org BBC Music Taxon Concept LOIUS Jamendo (DBtune) Ontos News Portal Sussex Reading Lists Bricklink yovisto Semantic Tweet Linked Crunchbase RDF ohloh Classical (DB Tune) BBC Wildlife Finder Rechtspraak. nl Openly Local Music Brainz (DBTune) Klappstuhlclub Lotico Music Brainz (zitgist) Last.FM (rdfize) BBC Program mes OpenEI statistics data.gov. uk GovWILD Brazilian Politicians educatio n.data.g ov.uk Ordnance Survey (DBTune) patents data.go v.uk research data.gov. uk CO2 Emission (EnAKTing) Energy (EnAKTing) EEA FanHubz tags2con delicious Slideshare 2RDF (DBTune) Discogs (Data Incubator) Linked User Feedback LOV Audio Scrobbler (Data Incubator) Last.FM artists Population (EnAKTing) reegle business data.gov. uk Crime (EnAKTing) Surge Radio Moseley Folk Music Brainz John Peel (DBTune) EUTC Productions Antwort Crime Reports UK GTAA Magnatune DB Tropes Hellenic FBD Hellenic PD Abfrage Linked Data Anwendungen: Minimale Architektur VIVO UF ECCOTCP bible ontology KEGG Enzyme PBAC KEGG Reaction KEGG Compound KEGG Glycan As of September 2011 23/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Szenario I I Typisches Datenintegrationsszenario Gemeinsames Daten Interaktive Datenformat Integration Datenexploration Anfrage: Welche Jobangebote gibt es von Konkurrenten von Facebook? 24/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Agenda Resource Description Framework Linked Data SPARQL Komplexe Graph-Muster in SPARQL Filter in SPARQL Ausgabeformate in SPARQL Modifikatoren in SPARQL 25/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 SPARQL SPARQL (sprich engl. sparkle) steht für SPARQL Protocol And RDF Query Language I W3C Spezifikation seit 2008 I Zur Zeit Erweiterung auf SPARQL 1.1 I Anfragsprache zur Abfrage von Instanzen aus RDF-Dokumenten I Große praktische Bedeutung Teile der SPARQL 1.0 Spezifikation I Anfragesprache: Thema dieser Vorlesung I Ergebnisformat: Darstellung von Ergebnissen in XML I Anfrageprotokoll: Übermittlung von Anfragen und Ergebnissen 26/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Teile der SPARQL 1.1 Spezifikation I I I I I I I I Query: Erweitert die Sprachkonstrukte für SPARQL Abfragen Update: zur Modifikation von RDF Graphen (Hinzufügen, Löschen) Graph Store HTTP Protocol: HTTP Operationen um eine Menge von Graphen zu verwalten Entailment Regimes: Abfragen auch von impliziten Konsequenzen Service Description: Methode zum Beschreiben von SPARQL Endpunkten Federation Extensions: Ausführung von verteilten Abfragen Query Results JSON Format: Abfrageergebnisse in JSON Query Results CSV, TSV Format: Komma und Tab separierte Abfrageergebnisse 27/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Anfragen Eine einfache Beispielanfrage: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox } 27/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Anfragen Eine einfache Beispielanfrage: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox } I Die Bedingung der WHERE Klausel heisst query pattern/Abfragemuster 27/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Anfragen Eine einfache Beispielanfrage: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox } I I Die Bedingung der WHERE Klausel heisst query pattern/Abfragemuster Tripel mit Variablen heissen basic graph pattern (BGP) BGPs verwenden Turtle Syntax für RDF BGPs können Variablen (?variable oder $variable) enthalten 27/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Anfragen Eine einfache Beispielanfrage: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox } I I Die Bedingung der WHERE Klausel heisst query pattern/Abfragemuster Tripel mit Variablen heissen basic graph pattern (BGP) BGPs verwenden Turtle Syntax für RDF BGPs können Variablen (?variable oder $variable) enthalten I Abgekürzte IRIs sind möglich (PREFIX) 27/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Anfragen Eine einfache Beispielanfrage: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox } I I Die Bedingung der WHERE Klausel heisst query pattern/Abfragemuster Tripel mit Variablen heissen basic graph pattern (BGP) BGPs verwenden Turtle Syntax für RDF BGPs können Variablen (?variable oder $variable) enthalten I Abgekürzte IRIs sind möglich (PREFIX) I Abfrageergebnis für die selektierten Variablen (SELECT) 28/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Beispielergebnis BGP: {?x foaf:name ?name. ?x foaf:mbox ?mbox} @prefix foaf: http://xmlns.com/foaf/0.1/ . _:a foaf:name "Birte Glimm" ; foaf:mbox "[email protected]" ; foaf:icqChatID "b.glimm" ; foaf:aimChatID "b.glimm" . _:b foaf:name "Sebastian Rudolph" ; foaf:mbox <mailto:[email protected]> . _:c foaf:name "Pascal Hitzler" ; foaf:aimChatID "phi" . foaf:icqChatID rdfs:subPropertyOf foaf:nick . foaf:name rdfs:domain foaf:Person . BGP Matching Ergebnis (Tabelle mit einer Zeile je Ergebnis): x _ :a _ :b name "Birte Glimm" "Sebastian Rudolph" mbox "[email protected]" <mailto:[email protected]> 29/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Beispielergebnis PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?mbox WHERE { ?x foaf:name ?name . ?x foaf:mbox ?mbox } BGP Matching Ergebnis: x _ :a _ :b name "Birte Glimm" "Sebastian Rudolph" mbox "[email protected]" <mailto:[email protected]> Abfrageergebnis: name "Birte Glimm" "Sebastian Rudolph" mbox "[email protected]" <mailto:[email protected]> 30/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Graph-Muster Die grundlegenden Anfragemuster sind einfache Graph-Muster oder basic graph patterns (BGPs) I Menge von RDF-Tripeln in Turtle-Syntax I Turtle-Abkürzungen (mittels , und ;) zulässig I Variablen werden durch ? oder $ gekennzeichnet (?variable hat gleiche Bedeutung wie $variable) I Variablen zulässig als Subjekt, Prädikat oder Objekt 30/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Einfache Graph-Muster Die grundlegenden Anfragemuster sind einfache Graph-Muster oder basic graph patterns (BGPs) I Menge von RDF-Tripeln in Turtle-Syntax I Turtle-Abkürzungen (mittels , und ;) zulässig I Variablen werden durch ? oder $ gekennzeichnet (?variable hat gleiche Bedeutung wie $variable) I Variablen zulässig als Subjekt, Prädikat oder Objekt Zulässig 6= lesbar: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?rf456df ?ac66sB WHERE { ?h4dF8Q foaf:name ?rf456df . ?h4dF8Q foaf:mbox ?ac66sB } (semantisch äquivalent zur vorherigen Anfrage) 31/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Was bedeuten leere Knoten in SPARQL? Leere Knoten in Anfragemustern: I Zulässig als Subjekt oder Objekt I ID beliebig, aber niemals gleiche ID mehrfach pro Anfrage I Verhalten sich wie Variablen, die nicht ausgewählt werden können 31/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Was bedeuten leere Knoten in SPARQL? Leere Knoten in Anfragemustern: I Zulässig als Subjekt oder Objekt I ID beliebig, aber niemals gleiche ID mehrfach pro Anfrage I Verhalten sich wie Variablen, die nicht ausgewählt werden können Leere Knoten in Ergebnissen: I Platzhalter für unbekannte Elemente I IDs beliebig, aber eventuell an andere Ergebnisteile gebunden: subj Wert _:a "zum" _:b "Beispiel" subj Wert _:y "zum" _:g "Beispiel" subj Wert _:z "zum" _:z "Beispiel" 32/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Datasets und FROM (NAMED) Keine FROM Klausel notwendug Jeder SPARQL Service spezifiziert ein Dataset bestehend aus einem Default Graphen und keinem oder mehr benannten Graphen (named graphs) Keine FROM Klausel Auswertung bzgl. des Default Graphen FROM NAMED in Kombination mit dem GRAPH Schlüsselwort Auswertung über den benannten Graphen FROM Klausel Erzeugung eines neuen Default Graphen für die Abfrage I I SELECT ?name ?mbox FROM NAMED <http://ex.org/a> <http://ex.org/b> WHERE { GRAPH ?g { ?x foaf:name ?name. ?x foaf:mbox ?mbox } } 33/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Datentypen @prefix @prefix ex:ex1 ex:ex2 ex:ex3 ex:ex4 xsd: <http://www.w3.org/2001/XMLSchema#> . ex: <http://example.org/> . ex:p "test" . ex:p "test"^^xsd:string . ex:p "test"@en . ex:p "42"^^xsd:integer . Was liefert eine Anfrage mit folgendem Muster? { ?subject <http://example.org/p> "test" . } 33/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Datentypen @prefix @prefix ex:ex1 ex:ex2 ex:ex3 ex:ex4 xsd: <http://www.w3.org/2001/XMLSchema#> . ex: <http://example.org/> . ex:p "test" . ex:p "test"^^xsd:string . ex:p "test"@en . ex:p "42"^^xsd:integer . Was liefert eine Anfrage mit folgendem Muster? { ?subject <http://example.org/p> "test" . } ex:ex1 als einziges Ergebnis genaue Übereinstimmung der Datentypen gefordert Aber: Abkürzung für Zahlenwerte möglich { ?subject <http://example.org/p> 42 . } Datentyp wird aus syntaktischer Form bestimmt: xsd:integer (42), xsd:decimal (42.2), xsd:double (1.0e6) 34/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Gruppierende Graph-Muster Einfache Graph-Muster können durch {. . . } gruppiert werden. Beispiel: PREFIX ex: <http://example.org/> SELECT ?titel ?author WHERE { { ?buch ex:publishedBy <http://springer.com/Verlag>. ?buch ex:Titel ?titel . } { } ?buch ex:Author ?author . } Sinnvoll erst bei Verwendung zusätzlicher Konstruktoren 35/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Optionale Muster Das Schlüsselwort OPTIONAL erlaubt die Angabe optionaler Teile eines Musters. Beispiel: { ?book ex:publishedBy <http://springer.com/Verlag> . OPTIONAL { ?book ex:Titel ?titel . } OPTIONAL { ?book ex:Author ?author . } } 35/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Optionale Muster Das Schlüsselwort OPTIONAL erlaubt die Angabe optionaler Teile eines Musters. Beispiel: { ?book ex:publishedBy <http://springer.com/Verlag> . OPTIONAL { ?book ex:Titel ?titel . } OPTIONAL { ?book ex:Author ?author . } } Teile eines Anfrageergebnisses können ungebunden sein: book titel author <http://ex.org/book1> "Titel1" <http://ex.org/author1> <http://ex.org/book2> "Titel2" <http://ex.org/book3> "Titel3" _:a <http://ex.org/book4> _:a <http://ex.org/book5> 36/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Alternative Muster Das Schlüsselwort UNION erlaubt die Angabe alternativer Teile eines Musters. Example: { ?book ex:publishedBy <http://springer.com/Verlag> . { ?book ex:Author ?author . } UNION { ?book ex:Editor ?author . } } Ergebnis entspricht Vereinigung der Ergebnisse mit einer der beiden Bedingungen Anm.: Gleiche Variablennamen in beiden Teilen von UNION beeinflussen sich nicht 37/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Kombination von Optionen und Alternativen (1) Wie sind Kombinationen von OPTIONAL und UNION zu verstehen? { ?book ex:publishedBy <http://springer.com/Verlag> . { ?book ex:Author ?author . } UNION { ?book ex:Editor ?author . } OPTIONAL { ?author ex:Surname ?name . } } I I Vereinigung zweier Muster mit angefügtem optionalem Muster oder Vereinigung zweier Muster, wobei das zweite einen optionalen Teil hat? 37/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Kombination von Optionen und Alternativen (1) Wie sind Kombinationen von OPTIONAL und UNION zu verstehen? { ?book ex:publishedBy <http://springer.com/Verlag> . { ?book ex:Author ?author . } UNION { ?book ex:Editor ?author . } OPTIONAL { ?author ex:Surname ?name . } } I I Vereinigung zweier Muster mit angefügtem optionalem Muster oder Vereinigung zweier Muster, wobei das zweite einen optionalen Teil hat? Erste Interpretation korrekt: { ?book ex:publishedBy <http://springer.com/Verlag> . { { ?book ex:Author ?author . } UNION { ?book ex:Editor ?author . } } OPTIONAL { ?author ex:Surname ?name . } } 38/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Kombination von Optionen und Alternativen (2) Allgemeine Regeln I OPTIONAL bezieht sich immer auf genau ein gruppierendes Muster rechts davon. I OPTIONAL und UNION sind gleichwertig und beziehen sich auf jeweils alle links davon stehenden Ausdrücke (linksassoziativ) 39/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Wozu Filter? Viele Anfragen sind auch mit komplexen Graph-Mustern nicht möglich: I „Welche Personen sind zwischen 18 und 23 Jahre alt?“ I „Der Nachname welcher Personen enthält einen Bindestrich?“ I „Welche Texte in deutscher Sprache sind in der Ontologie angegeben?“ Filter als allgemeiner Mechanismus für solche Ausdrucksmittel 40/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Filter in SPARQL Beispiel: PREFIX ex: <http://example.org/> SELECT ?book WHERE { ?book ex:publishedBy <http://springer.com/Verlag> . ?book ex:Price ?price FILTER (?price < 35) } I I I Schlüsselwort FILTER, gefolgt von Filterausdruck in Klammern Filterbedingungen liefern Wahrheitswerte (und ev. auch Fehler) Viele Filterfunktionen nicht durch RDF spezifiziert Funktionen teils aus XQuery/XPath-Standard für XML übernommen 41/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Filterfunktionen: Vergleiche und Arithmetik Vergleichoperatoren: <, =, >, <=, >=, != I Vergleich von Datenliteralen gemäß der jeweils natürlichen Reihenfolge I Unterstützung für numerische Datentypen, xsd:dateTime, xsd:string (alphabetische Ordnung), xsd:Boolean (1 > 0) I für andere Typen und sonstige RDF-Elemente nur = und != verfügbar I kein Vergleich von Literalen inkompatibler Typen (z.B. xsd:string und xsd:integer) 41/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Filterfunktionen: Vergleiche und Arithmetik Vergleichoperatoren: <, =, >, <=, >=, != I Vergleich von Datenliteralen gemäß der jeweils natürlichen Reihenfolge I Unterstützung für numerische Datentypen, xsd:dateTime, xsd:string (alphabetische Ordnung), xsd:Boolean (1 > 0) I für andere Typen und sonstige RDF-Elemente nur = und != verfügbar I kein Vergleich von Literalen inkompatibler Typen (z.B. xsd:string und xsd:integer) Arithmetische Operatoren: +, -, *, / I Unterstützung für numerische Datentypen I Verwendung zur Kombination von Werten in Filterbedingungen Bsp.: FILTER( ?gewicht/(?groesse * ?groesse) >= 25 ) 42/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Filterfunktionen: Spezialfunktionen für RDF SPARQL unterstützt auch RDF-spezifische Filterfunktionen: BOUND(A) isURI(A) isBLANK(A) isLITERAL(A) STR(A) LANG(A) DATATYPE(A) true falls A eine gebundene Variable ist true falls A eine URI ist true falls A ein leerer Knoten ist true falls A ein RDF-Literal ist lexikalische Darstellung (xsd:string) von RDF-Literalen oder URIs Sprachcode eines RDF-Literals (xsd:string) oder leerer String falls kein Sprachcode Datentyp-URI eines RDF-Literals (xsd:string bei ungetypten Literalen ohne Sprachangabe) 43/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Ausgabeformatierung mit SELECT Bisher waren alle Ergebnisse Tabellen: Ausgabeformat SELECT Syntax: SELECT <Variablenliste> oder SELECT * Vorteil Einfache sequentielle Abarbeitung von Ergebnissen Nachteil Struktur/Beziehungen der Objekte im Ergebnis nicht offensichtlich 44/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Ausgabeformatierung mit CONSTRUCT Kodierung von Ergebnissen in RDF-Graphen: Ausgabeformat CONSTRUCT Syntax: CONSTRUCT <RDF-Schablone in Turtle> PREFIX ex: <http://example.org/> CONSTRUCT { ?person ex:mailbox ?email . ?person ex:telefon ?telefon . } WHERE { ?person ex:email ?email . ?person ex:tel ?telefon . } 44/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Ausgabeformatierung mit CONSTRUCT Kodierung von Ergebnissen in RDF-Graphen: Ausgabeformat CONSTRUCT Syntax: CONSTRUCT <RDF-Schablone in Turtle> PREFIX ex: <http://example.org/> CONSTRUCT { ?person ex:mailbox ?email . ?person ex:telefon ?telefon . } WHERE { ?person ex:email ?email . ?person ex:tel ?telefon . } Vorteil Stukturiertes Ergebnis mit Beziehungen zwischen Elementen Nachteile I Sequentielle Abarbeitung von Ergebnissen erschwert I Keine Behandlung von ungebundenen Variablen 45/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Weitere Formate: ASK und DESCRIBE SPARQL unterstützt zwei weitere Ausgabeformate: I ASK prüft nur, ob es Ergebnisse gibt, keine Parameter I DESCRIBE (informativ) liefert zu jeder gefundenen URI eine RDF-Beschreibung (anwendungsabhängig) DESCRIBE ?x WHERE { ?x <http://ex.org/employeeId> "1234" } Kann als Ergebnis z.B. die folgende Ausgabe haben (ohne Prefix Deklarationen): _:a exOrg:employeeId foaf:mbox_sha1sum vcard:N [ vcard:Family vcard:Given foaf:mbox_sha1sum rdf:type "1234" ; "ABCD1234" ; "Smith" ; "John" ] . owl:InverseFunctionalProperty . 46/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Wozu Modifikatoren? Bisher nur grundsätzliche Formatierungseinstellungen für Ergebnisse: I Wie kann man definierte Teile der Ergebnismenge abfragen? I Wie werden Ergebnisse geordnet? I Können wiederholte Ergebniszeilen sofort entfernt werden? Modifikatoren der Lösungssequenz (solution sequence modifiers) 47/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Ergebnisse Sortieren Sortierung von Ergebnissen mit Schlüsselwort ORDER BY SELECT ?book ?price WHERE { ?book <http://example.org/Price> ?price . } ORDER BY ?price 47/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Ergebnisse Sortieren Sortierung von Ergebnissen mit Schlüsselwort ORDER BY SELECT ?book ?price WHERE { ?book <http://example.org/Price> ?price . } ORDER BY ?price I Sortierung wie bei Filter-Vergleichoperatoren, I Sortierung von URIs alphabetisch als Zeichenketten I Reihenfolge zwischen unterschiedlichen Arten von Elementen: Ungebundene Variable < leere Knoten < URIs < RDF-Literale I Nicht jede Möglichkeit durch Spezifikation definiert 48/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Ergebnisse sortieren Weitere mögliche Angaben: I ORDER BY DESC(?price): absteigend I ORDER BY ASC(?price): aufsteigend, Voreinstellung I ORDER BY DESC(?price), ?titel: hierarchische Ordnungskriterien 49/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 LIMIT, OFFSET und DISTINCT Einschränkung der Ergebnismenge: I LIMIT: maximale Anzahl von Ergebnissen (Tabellenzeilen) I OFFSET: Position des ersten gelieferten Ergebnisses I SELECT DISTINCT: Entfernung von doppelten Tabellenzeilen SELECT DISTINCT ?book ?price WHERE { ?book <http://example.org/Price> ?price . } ORDER BY ?price LIMIT 5 OFFSET 25 LIMIT und OFFSET nur mit ORDER BY sinnvoll! 50/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 SPARQL 1.1 Erweiterungen SPARQL 1.1 vorerst ausgelassen I Aggregate I Subqueries I Negation I Ausdrücke in der SELECT Klausel I Property Paths I Assignment/Zuweisung I CONSTRUCT Kurzform I Weitere Funktionen und Operatoren 51/51 Birte Glimm | Linked Data & SPARQL | 12. Mai 2012 Zusammenfassung I Die Menge an verfügbaren strukturierten Daten im Web wächst ständig I Semantik wird gebraucht, um Daten aus verschiedenen Quellen zu integrieren I Abfrage und Visualisierung von Daten in Kombination möglich SPARQL zur Abfrage der Daten kennengelernt I I I I I I I Grundlegende Strukturen (Prefixe, Muster) Ausgabeformate Einfache und komplexe Muster (Alternativen, Optionale Teile, Gruppen) Filter Modifikatoren Semantik definiert durch Übersetzung in SPARQL Algebra