Presentation is loading. Please wait.

Presentation is loading. Please wait.

Alexandra Cristea 1.  pronounced "sparkle“  recursive acronym for: ◦ SPARQL Protocol and RDF Query Language  a semantic query language  a query language.

Similar presentations


Presentation on theme: "Alexandra Cristea 1.  pronounced "sparkle“  recursive acronym for: ◦ SPARQL Protocol and RDF Query Language  a semantic query language  a query language."— Presentation transcript:

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


Download ppt "Alexandra Cristea 1.  pronounced "sparkle“  recursive acronym for: ◦ SPARQL Protocol and RDF Query Language  a semantic query language  a query language."

Similar presentations


Ads by Google