Download presentation
Presentation is loading. Please wait.
Published byBarry Thornton Modified over 9 years ago
1
Alexandra Cristea 1
2
pronounced "sparkle“ recursive acronym for: ◦ SPARQL Protocol and RDF Query Language a semantic query language a query language for RDF(S) W3C Recommendation 15 th January 2008 ◦ provides a standard format for writing queries that target RDF data ◦ and a set of standard rules for processing queries and returning the results http://www.w3.org/TR/rdf-sparql-query/ http://www.w3.org/TR/rdf-sparql-query/ 2
3
New version: 21 st of March 2013: http://www.w3.org/TR/sparql11-overview/ http://www.w3.org/TR/sparql11-overview/ Query language at: http://www.w3.org/TR/sparql11-query/ http://www.w3.org/TR/sparql11-query/ Implemented in various programming languages 3
4
4 Subject Predicate author http://www.w3schools.com/RDF Object Jan Egil Refsnes SPARQL searches for all sub-graphs that match the graph described by the triples in the query. ?subject ?predicate ?object
5
SELECT ?student WHERE { ?student b:studies bmod:CS414 } ~ SQL – why? Which are the namespace prefixes? 5
6
In RDF: In SPARQL: PREFIX b: PREFIX bmod: <http://www2.warwick.ac.uk/fac/sci/dcs/teaching/material/ The PREFIX keyword is SPARQL ’ s version of an xmlns:namespace declaration and works in basically the same way. 6
7
PrefixIRI rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs:http://www.w3.org/2000/01/rdf-schema# xsd:http://www.w3.org/2001/XMLSchema# fn:http://www.w3.org/2005/xpath-functions# sfn:http://www.w3.org/ns/sparql# 7 Prefixes are not optional in SPARQL!
8
Capitals of Europe: http://liris.cnrs.fr/~pchampin/spark/gmapv3.htmlhttp://liris.cnrs.fr/~pchampin/spark/gmapv3.html 8
9
http://dbpedia.org/sparql http://dbpedia.org/sparql http://dbpedia.org/isparql/ http://dbpedia.org/isparql/ http://dbpedia.org/snorql/ http://dbpedia.org/snorql/ http://querybuilder.dbpedia.org/index.php http://querybuilder.dbpedia.org/index.php 9
10
http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/The_Lord_of_the_Rings http://dbpedia.org/resource/Berlin http://dbpedia.org/resource/Berlin http://dbpedia.org/resource/Category:Cities_in_England http://dbpedia.org/resource/Category:Cities_in_England http://dbpedia.org/resource/The_Beatles - Fluidops http://dbpedia.org/resource/The_BeatlesFluidops http://dbpedia.org/resource/Paul_McCartney http://dbpedia.org/resource/Paul_McCartney http://dbpedia.org/resource/Category:English_musicians http://dbpedia.org/resource/Category:English_musicians http://dbpedia.org/resource/Semantic_Web http://dbpedia.org/resource/Semantic_Web http://dbpedia.org/resource/Tetris http://dbpedia.org/resource/Tetris http://dbpedia.org/resource/SPARQL http://dbpedia.org/resource/SPARQL 10
11
OpenLink Query point ◦ http://demo.openlinksw.com/sparql http://demo.openlinksw.com/sparql Semanticweb.org data: ◦ http://data.semanticweb.org/snorql/ http://data.semanticweb.org/snorql/ Diseases: ◦ http://wifo5-03.informatik.uni-mannheim.de/diseasome/snorql/ http://wifo5-03.informatik.uni-mannheim.de/diseasome/snorql/ Country statistics: ◦ http://wifo5-03.informatik.uni-mannheim.de/factbook/snorql/ http://wifo5-03.informatik.uni-mannheim.de/factbook/snorql/ Nobelprize info: ◦ http://data.nobelprize.org/snorql/ http://data.nobelprize.org/snorql/ W3C’s list of endpoints: ◦ http://www.w3.org/wiki/SparqlEndpoints http://www.w3.org/wiki/SparqlEndpoints 11
12
http://www.sparql.org/query.html http://www.sparql.org/query.html http://sparql.org/sparql.html http://sparql.org/sparql.html http://demo.openlinksw.com/sparql http://demo.openlinksw.com/sparql ◦ make sure to allow at ‘Sponging’ to ‘Retrieve remote RDF data for all missing source graphs’ http://librdf.org/query http://librdf.org/query 12
13
Different syntax from XML Variables: begin with ? or $ triples patterns enclosed within braces {} Result: variables after SELECT (~SQL) 13
14
PREFIX foo: PREFIX bar: SELECT … FROM … WHERE {…} GROUP BY … HAVING … ORDER BY … LIMIT … OFFSET … VALUES … 14 ~ SQL
15
SELECT queries CONSTRUCT queries ASK queries DESCRIBE queries 15
16
PREFIX foaf: SELECT ?x ?y ?z FROM WHERE { ?x ?y ?z } 16
17
PREFIX b: PREFIX bmod: PREFIX foaf: SELECT ?name WHERE { ?student b:studies bmod:CS328. ?student foaf:name ?name } 17
18
FOAF (Friend Of A Friend) experimental project using RDF, defining a standardised vocabulary. Goal: make personal homepages machine- readable & understandable, create an internet- wide connected database of people. Defined at: http://xmlns.com/foaf/0.1/ 18
19
Idea: most personal homepages contain similar info. ◦ E.g, person’s name, living place, work place, details on work of the moment, links to friends. ◦ define RDF predicates to represent them. ◦ So: Pages: understood/ manipulated by computers. So a db can be queried for: ◦ “ what projects are my friends working on? ”, ◦ “ do any of my friends know the director of BigCorp? ” etc.. 19
20
Alexandra I. Cristea <foaf:mbox rdf:resource=" mailto: a.i.cristea@warwick.ac.uk "/> 20
21
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> Peter Brusilovsky Peter Brusilovsky 1fa1a097b3fae4594fa0ec18e2e3da11ac7e0349 Alexandra I. Cristea dba246a0d9ec4a6238198f9a035a7a608ff227f8 sha1sum dba246a0d9ec4a6238198f9a035a7a608ff227f8 21
22
PREFIX b: http://www2.warwick.ac.uk/rdf/ PREFIX bmod: http://www2.warwick.ac.uk/fac/sci/dcs/teaching/material/ PREFIX foaf: http://xmlns.com/foaf/0.1/ SELECT ?module ?name WHERE { ?student b:studies ?module. ?student foaf:name ?name } 22
23
PREFIX b: http://www2.warwick.ac.uk/rdf/ PREFIX bmod: http://www2.warwick.ac.uk/fac/sci/dcs/teaching/ma terial/ PREFIX foaf: <http://xmlns.com/foaf/0.1/ SELECT ?module ?name WHERE { ?student b:studies ?module ; foaf:name ?name } 23
24
SELECT ?module ?name WHERE { ?student b:studies ?module. ?student b:studies bmod:CS328 ; foaf:name ?name } is identical to: SELECT ?module ?name WHERE { ?student b:studies ?module, bmod:CS328 ; foaf:name ?name } 24
25
SELECT ?student ?email WHERE { ?student b:studies mod:CS328. ?student foaf:mbox ?email } PB: if a student does not have an e-mail address registered, with a foaf:mbox predicate, then the query will not match !! 25
26
SELECT ?student ?email WHERE { ?student b:studies mod:CS328. OPTIONAL { ?student foaf:mbox ?email } } OPTIONAL: match it if it can, but otherwise not reject the overall pattern. 26
27
SPARQL basics SPARQL endpoints: dbpedia, foaf, others SPARQL type of queries: ◦ SELECT; CONSTRUCT; ASK; DESCRIBE SQL-like constructs: ◦ SELECT; FROM; WHERE; GROUP BY; HAVING; ORDER BY; LIMIT; OFFSET; VALUES Some specific constructs: ◦ PREFIX not optional; FROM not always used; OPTIONAL ◦ We are going to look at more specific constructs 27
28
Try out at: http://www.sparql.org/query.html PREFIX books: PREFIX dc: SELECT $book WHERE {$book title $title } >> this gives an empty answer/ error. Versus: PREFIX books: PREFIX dc: SELECT $book WHERE {$book dc:title $title } 28
29
try out at : http://www.sparql.org/query.html With or without optional PREFIX books: PREFIX dc: SELECT ?book ?author ?title ?date WHERE { ?book dc:creator ?author. ?book dc:title ?title. ?book dc:date ?date } PREFIX books: PREFIX dc: SELECT ?book ?author ?title ?date WHERE { ?book dc:creator ?author. ?book dc:title ?title. OPTIONAL { ?book dc:date ?date } } 29
30
Try analysing RDF documents e.g.: http://athena.ics.forth.gr:9090/RDF/VRP/Examples/tap.rdf (on http://sparql.org/sparql.html or Protégé, or specific endpoints) Using SPARQL to find Concepts endpoints Dbpedia SNORQL query explorer (http://dbpedia.org/snorql/), the BBC Backstage SPARQL Editor (http://bbc.openlinksw.com/sparql) or GeoSparql (http://geosparql.org/) to analyse content.Dbpedia SNORQL query explorerBBC Backstage SPARQL EditorGeoSparql Listing DISTINCT RDF Types The following query lists the distinct rdf:types used in a dataset PREFIX rdf: SELECT DISTINCT ?type WHERE { ?s rdf:type ?type } Listing OWL Classes PREFIX owl: SELECT ?class WHERE { ?class a owl:Class } 30
31
SELECT ?module ?name ?phone WHERE { ?student b:studies ?module. ?student foaf:name ?name. OPTIONAL { ?student b:contactpermission true. ?student b:phone ?phone } SELECT ?module ?name ?age WHERE { ?student b:studies ?module. ?student foaf:name ?name. OPTIONAL { ?student b:age ?age. FILTER (?age > 25) } } 31
32
SELECT ?student ?email ?home WHERE { ?student b:studies mod:CS328. OPTIONAL { ?student foaf:mbox ?email. ?student foaf:homepage ?home } } SELECT ?student ?email ?home WHERE { ?student b:studies mod:CS328. OPTIONAL { ?student foaf:mbox ?email }. OPTIONAL { ?student foaf:homepage ?home } } 32
33
SELECT ?student WHERE { ?student foaf:mbox ?email. { ?student b:studies mod:CS328 } UNION { ?student b:studies mod:CS909 } } When patterns are combined using the UNION keyword, the resulting combined pattern will match if any of the subpatterns is matched. 33
34
Consider A and B as graph patterns. { A } UNION { B } ◦ Either / or graph patterns ◦ Disjunction; include both the results of solving A and the results of solving B { A } MINUS { B } ◦ “subtracted” graph patterns (SPARQL 1.1) ◦ Negation; Solve A; Solve B; Include only those results from A that are not compatible with any of the results from B. 34
35
All the previous queries: single RDF graphs. Often: multiple RDF graphs. RDF graphs: identified by IRI. ◦ Note: IRI that represents the graph does not have to be the actual IRI of the graph file ◦ although the program processing the query will need to somehow relate the IRI to an actual RDF graph stored somewhere. 35
36
SELECT ?student ?email ?home FROM WHERE { ?student b:studies mod:CS414. OPTIONAL { ?student foaf:mbox ?email. ?student foaf:homepage ?home } } By using several FROM declarations, you can combine several graphs in the dataset: SELECT ?student ?email ?home FROM WHERE { ?student b:studies mod:CS414. OPTIONAL { ?student foaf:mbox ?email. ?student foaf:homepage ?home } } 36
37
one (optional) default graph + any number of named graphs. FROM specifies default graph. ◦ Many FROM keywords, the graphs are merged into the default graph. Additionally: named graphs, w FROM NAMED. ◦ However, to match patterns you must use GRAPH keyword to state which graph ! 37
38
SELECT ?student ?email ?home FROM NAMED FROM NAMED WHERE { GRAPH { ?student b:studies mod:CS909 }. GRAPH { OPTIONAL { ?student foaf:mbox ?email. ?student foaf:homepage ?home } } 38
39
PREFIX brdf: SELECT ?student ?email ?home FROM NAMED FROM NAMED WHERE { GRAPH brdf:student { ?student b:studies mod:CS909 }. GRAPH brdf:foaf{ OPTIONAL { ?student foaf:mbox ?email. ?student foaf:homepage ?home } } 39
40
PREFIX brdf: SELECT ?student ?email ?home FROM FROM NAMED WHERE { ?student b:studies mod:CS909. GRAPH brdf:foaf{ OPTIONAL { ?studentfoaf:mbox?email. ?studentfoaf:homepage ?home } } 40
41
the GRAPH can also be a variable. ◦ to query which graph in the dataset holds a particular relationship, ◦ or which graph to search based on data in another graph. not mandatory to declare all graphs ◦ even if specified, the dataset can be overridden on a per-query basis. 41
42
PREFIX brdf: SELECT ?student ?graph WHERE { ?student b:studies mod:CS909. GRAPH ?graph { ?student foaf:mbox ?email } output var graph holds graph URL (matching student to e-mail address). Presumption: query processor has knowledge of a finite set of graphs + their locations 42
43
PREFIX brdf: SELECT ?student ?email WHERE { ?student b:studies mod:CS909. ?student rdfs:seeAlso ?graph. GRAPH ?graph { ?student foaf:mbox ?email } Note: if student doesn’t have a rdfs:seeAlso property which points to a graph holding their e-mail address, they will not appear in the result at all. 43
44
Specific SPARQL constructs: ◦ Revisited OPTIONAL, PREFIX, FROM - single ◦ New ones: FILTER, UNION, MINUS, FROM –multiple, FROM NAMED, GRAPH, GRAPH with prefix, GRAPH as (query-able + reusable) variable More online/ offline queries: ◦ Endpoints ◦ Sparql.com ◦ Protégé Next: other SQL-like constructs; non-SQL-like behaviour: ASK, DESCRIBE, CONSTRUCT 44
45
SELECT ?name ?module WHERE { ?student b:studies ?module. ?student foaf:name ?name } ORDER BY ?name SELECT ?name ?age WHERE { ?student b:age ?age. ?student foaf:name ?name } ORDER BY DESC (?age) ASC (?name) 45
46
SELECT ?name ?module WHERE { ?student b:studies ?module. ?student foaf:name ?name } LIMIT 20 46
47
SELECT ?name ?module WHERE { ?student b:studies ?module. ?student foaf:name ?name } ORDER BY ?name OFFSET 10 LIMIT 20 47
48
SELECT ?student WHERE { ?student b:studies ?module } versus: SELECT DISTINCT ?student WHERE { ?student b:studies ?module } 48
49
Is any student studying any module? ASK { ?student b:studies ?module } Is any student studying CS909? ASK { ?student b:studies bmod:CS909 } Is student 029389 studying CS909? ASK { bstu:029389 b:studies bmod:CS909 } Is anyone whom 029389 knows, studying CS909? ASK {bstu:029389 foaf:knows ?x. ?x b:studies bmod: CS909 } Is any student aged over 30 studying CS909? ASK { ?student b:studies bmod:CS909. ?student b:age ?age. FILTER { ?age > 30 } } 49
50
CONSTRUCT { ?student b:studyFriend ?friend } WHERE { ?student b:studies ?module. ?student foaf:knows ?friend. ?friend b:studies ?module } } If there is more than one search result, the triples from each result are combined. 50
51
DESCRIBE ?country Result is in RDF triples, in any RDF serialization 51
52
52
53
53
54
54
55
[1] Dean Allemang & Jim Hendler. 2008 Semantic Web for the working ontologist. Morgan Kaufmann publishers. ISBN 978-0-12-373556-0 [2] Eric Prud'hommeaux ; & Andy Seaborne. 2008 SPARQL Query Language for RDF, [Online] http://www.w3.org/TR/rdf-sparql-query/ http://www.w3.org/TR/rdf-sparql-query/ 55
56
Download Jena from http://jena.sourceforge.net/http://jena.sourceforge.net/ Prot é g é 3.4 and above http://protege.stanford.edu/ Fuseki: http://jena.apache.org/documentation/serving_data/inde x.html http://jena.apache.org/documentation/serving_data/inde x.html 56
57
SPARQL language is used for querying RDF. SPARQL is not based on XML, but on SQL- like syntax. Building blocks of SPARQL queries are graph patterns that include variables. The result of the query will be the values the vars must take to match the RDF graph. A SPARQL query can return results in several different ways, as determined by the query. SPARQL queries can also be used for OWL querying. 57
58
58
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.