Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.