Presentation is loading. Please wait.

Presentation is loading. Please wait.

Alexandra Cristea & Matthew Yau 1.

Similar presentations


Presentation on theme: "Alexandra Cristea & Matthew Yau 1."— Presentation transcript:

1 Alexandra Cristea & Matthew Yau C.Y.Yau@warwick.ac.uk 1

2  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/  Read also: as guided on course website! 2

3 3 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

4 SELECT ?student WHERE { ?student b:studies bmod:CS328 } ~ SQL 4

5 b:studies bmod:CS328 PREFIX b: http://... 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. 5

6  Different syntax from XML  Variables: begin with ? or $  triples patterns enclosed within braces {}  Result: variables after SELECT (~SQL) 6

7 PREFIX b: PREFIX bmod: PREFIX foaf: SELECT ?name WHERE { ?student b:studies bmod:CS328. ?student foaf:name ?name } 7

8  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/ 8

9  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.. 9

10 Matthew Yau <foaf:mbox rdf:resource=" mailto: C.Y.Yau@warwick.ac.uk "/> 10

11 <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/"> Leigh Dodds Leigh Dodds 71b88e951 Dan Brickley 241021fb0 11

12 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 } 12

13 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 } 13

14 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 } 14

15 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 !! 15

16 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. 16

17 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) } } 17

18 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 } } 18

19 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. 19

20  All the previous queries : single RDF graphs.  Often: multiple RDF graphs.  RDF graphs: identified by URI. ◦ Note: URI that represents the graph does not have to be the actual URI of the graph file ◦ although the program processing the query will need to somehow relate the URI to an actual RDF graph stored somewhere. 20

21 SELECT ?student ?email ?home FROM WHERE { ?student b:studies mod:CS909. 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:CS909. OPTIONAL { ?student foaf:mbox ?email. ?student foaf:homepage ?home } } 21

22  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 ! 22

23 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 } } 23

24 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 } } 24

25 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 } } 25

26  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. 26

27 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 27

28 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. 28

29 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) 29

30 SELECT ?name ?module WHERE { ?student b:studies ?module. ?student foaf:name ?name. } LIMIT 20 30

31 SELECT ?name ?module WHERE { ?student b:studies ?module. ?student foaf:name ?name. } ORDER BY ?name OFFSET 10 LIMIT 20 31

32  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 } } 32

33 SELECT ?student WHERE { ?student b:studies ?module } versus: SELECT DISTINCT ?student WHERE { ?student b:studies ?module } 33

34 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. 34

35  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. 35

36  [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/ 36

37  Download Jena from http://jena.sourceforge.net/http://jena.sourceforge.net/  Prot é g é 3.4 http://protege.stanford.edu/ 37

38 38


Download ppt "Alexandra Cristea & Matthew Yau 1."

Similar presentations


Ads by Google