SPARQL Tutorial
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

SPARQL Tutorial

on

  • 57,245 views

A short introduction to SPARQL. Mainly consists of demontration queries

A short introduction to SPARQL. Mainly consists of demontration queries

Statistics

Views

Total Views
57,245
Views on SlideShare
56,652
Embed Views
593

Actions

Likes
26
Downloads
1,342
Comments
5

16 Embeds 593

http://www.slideshare.net 264
http://kurapov.name 115
http://www.scienceforseo.com 105
http://www.scoop.it 66
http://vaibhav276.blogspot.com 22
http://www.e-presentations.us 5
url_unknown 3
http://web3-technology.com 3
http://webcache.googleusercontent.com 2
http://vaibhav276.blogspot.in 2
http://localhost:3000 1
http://translate.googleusercontent.com 1
http://www.linkedin.com 1
https://twitter.com 1
http://salvador-edu.nazwa.pl 1
https://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • thank you very much.
    Are you sure you want to
    Your message goes here
    Processing…
  • I apologize. It seems this forum does not support carriage returns or uncommon characters. The expression I stated in my first question can be found in the FILTER statement of this parsed query:

    http://www.sparql.org/validator?query=SELECT+*%0D%0AWHERE+{+%0D%0AFILTER+(+!3%3Ctrue%2B-false+||+%22str%22/$x%2Btrue%2B1)+}&languageSyntax=SPARQL&outputFormat=sparql&linenumbers=true
    Are you sure you want to
    Your message goes here
    Processing…
  • I have three questions about the sparql validator (http://www.sparql.org/validator.html).

    1) Why does the it consider the following expression correct?
    (!3)t it catch unspecified variables? For example, this query does not generate an error:
    SELECT *
    WHERE { FILTER ($x = 42) }
    Are you sure you want to
    Your message goes here
    Processing…
  • thanks very much
    Are you sure you want to
    Your message goes here
    Processing…
  • SPARQL tutorial
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SPARQL Tutorial Presentation Transcript

  • 1. Data Extraction & Exploration with SPARQL & the Talis Platform
  • 2. Agenda
    • Tutorial Schema
    • Graph Patterns
    • Simple SELECT queries
    • OPTIONAL patterns
    • UNION queries
    • Sorting & Limiting
    • Filtering & Restrictions
    • DISTINCT
    • SPARQL Query Forms
    • Useful Links
  • 3. Tutorial Schema
      • Based on NASA spaceflight data
      • Available in:
      • http://api.talis.com/stores/space
  • 4.  
  • 5. Triple and Graph Patterns
      • How do we describe the structure of the RDF graph which we're interested in?
  • 6. #An RDF triple in Turtle syntax <http://purl.org/net/schemas/space/spacecraft/1957-001B> foaf:name “Sputnik 1”.
  • 7. #An SPARQL triple pattern, with a single variable <http://purl.org/net/schemas/space/spacecraft/1957-001B> foaf:name ?name.
  • 8. #All parts of a triple pattern can be variables ?spacecraft foaf:name ?name.
  • 9.  
  • 10. #Matching labels of resources ?subject rdfs:label ?label.
  • 11.  
  • 12. #Combine triples patterns to create a graph pattern ?subject rdfs:label ?label. ?subject rdf:type space:Discipline.
  • 13. #SPARQL is based on Turtle, which allows abbreviations #e.g. predicate-object lists: ?subject rdfs:label ?label; rdf:type space:Discipline.
  • 14.  
  • 15. #Graph patterns allow us to traverse a graph ?spacecraft foaf:name “Sputnik 1”. ?launch space:spacecraft ?launch. ?launch space:launched ?launchdate.
  • 16. #Graph patterns allow us to traverse a graph ?spacecraft foaf:name “Sputnik 1” . ?launch space:spacecraft ?launch . ?launch space:launched ?launchdate .
  • 17.  
  • 18. Structure of a Query
      • What does a basic SPARQL query look like?
  • 19. #Ex. 1 #Associate URIs with prefixes PREFIX space: <http://purl.org/net/schemas/space/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> #Example of a SELECT query, retrieving 2 variables #Variables selected MUST be bound in graph pattern SELECT ?subject ?label WHERE { #This is our graph pattern ?subject rdfs:label ?label; rdf:type space:Discipline. }
  • 20. #Ex. 2 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> #Example of a SELECT query, retrieving all variables SELECT * WHERE { ?subject rdfs:label ?label; rdf:type space:Discipline. }
  • 21. OPTIONAL bindings
      • How do we allow for missing or unknown information?
  • 22. #Ex. 3 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?image WHERE { #This pattern must be bound ?spacecraft foaf:name ?name. #Anything in this block doesn't have to be bound OPTIONAL { ?spacecraft foaf:depiction ?image. } }
  • 23. UNION queries
      • How do we allow for alternatives or variations in the graph?
  • 24. #Ex. 4 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: < http://xmlns.com/foaf/0.1/ > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?subject ?displayLabel WHERE { { ?subject foaf:name ?displayLabel. } UNION { ?subject rdfs:label ?displayLabel. } }
  • 25. Sorting & Restrictions
      • How do we apply a sort order to the results?
      • How can we restrict the number of results returned?
  • 26. #Ex.5 #Select the uri and the mass of all the spacecraft PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: < http://xmlns.com/foaf/0.1/ > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?spacecraft ?mass WHERE { ?spacecraft space:mass ?mass. }
  • 27. #Ex. 6 #Select the uri and the mass of all the spacecraft #with highest first PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: < http://xmlns.com/foaf/0.1/ > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?spacecraft ?mass WHERE { ?spacecraft space:mass ?mass. } #Use an ORDER BY clause to apply a sort. Can be ASC or DESC ORDER BY DESC(?mass)‏
  • 28. #Ex. 7 #Select the uri and the mass of the 10 heaviest spacecraft PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: < http://xmlns.com/foaf/0.1/ > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?spacecraft ?mass WHERE { ?spacecraft space:mass ?mass. } #Order by weight descending ORDER BY DESC(?mass)‏ #Limit to first ten results LIMIT 10
  • 29. #Ex. 8 #Select the uri and the mass of the 11-20 th most #heaviest spacecraft PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: < http://xmlns.com/foaf/0.1/ > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?spacecraft ?mass WHERE { ?spacecraft space:mass ?mass. } ORDER BY DESC(?mass)‏ #Limit to ten results LIMIT 10 #Apply an offset to get next “page” OFFSET 10
  • 30. Filtering
      • How do we restrict results based on aspects of the data rather than the graph, e.g. string matching?
  • 31. #Sample data for Sputnik launch <http://purl.org/net/schemas/space/launch/1957-001> rdf:type space:Launch; #Assign a datatype to the literal, to indicate it is #a date space:launched &quot;1957-10-04&quot;^^xsd:date; space:spacecraft <http://purl.org/net/schemas/space/spacecraft/1957-001B> .
  • 32. #Ex. 9 #Select name of spacecraft launched between #1 st Jan 1969 and 1 st Jan 1970 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?name WHERE { ?launch space:launched ?date; space:spacecraft ?spacecraft. ?spacecraft foaf:name ?name. FILTER (?date > &quot;1969-01-01&quot;^^xsd:date && ?date < &quot;1970-01-01&quot;^^xsd:date)‏ }
  • 33. #Ex. 10 #Select spacecraft with a mass of less than 90kg PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?spacecraft ?name WHERE { ?spacecraft foaf:name ?name; space:mass ?mass. #Note that we have to cast the data to the right type #As it is not declared in the data FILTER( xsd:double(?mass) < 90.0 )‏ }
  • 34. #Ex. 11 #Select spacecraft with a name like “ollo” PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?name WHERE { ?spacecraft foaf:name ?name. FILTER( regex(?name, “ollo”, “i” ) )‏ }
  • 35. Built-In Filters
    • Logical: !, &&, ||
    • Math: +, -, *, /
    • Comparison: =, !=, >, <, ...
    • SPARQL tests: isURI, isBlank, isLiteral, bound
    • SPARQL accessors: str, lang, datatype
    • Other: sameTerm, langMatches, regex
  • 36. DISTINCT
      • How do we remove duplicate results?
  • 37. #Ex. 12 #Select list of agencies associated with spacecraft PREFIX space: <http://purl.org/net/schemas/space/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT DISTINCT ?agency WHERE { ?spacecraft space:agency ?agency. }
  • 38. SPARQL Query Forms
      • Does SPARQL do more than just SELECT data?
  • 39. ASK
      • Test whether the graph contains some data of interest
  • 40. #Ex. 13 #Was there a launch on 16 th July 1969? PREFIX space: <http://purl.org/net/schemas/space/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> ASK WHERE { ?launch space:launched &quot;1969-07-16&quot;^^xsd:date. }
  • 41. DESCRIBE Generate an RDF description of a resource(s)‏
  • 42. #Ex. 14 #Describe launch(es) that occurred on 16 th July 1969 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> DESCRIBE ?launch WHERE { ?launch space:launched &quot;1969-07-16&quot;^^xsd:date. }
  • 43. #Ex. 15 #Describe spacecraft launched on 16 th July 1969 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> DESCRIBE ?spacecraft WHERE { ?launch space:launched &quot;1969-07-16&quot;^^xsd:date. ?spacecraft space:launch ?launch. }
  • 44. CONSTRUCT Create a custom RDF graph based on query criteria Can be used to transform RDF data
  • 45. #Ex. 16 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> CONSTRUCT { ?spacecraft foaf:name ?name; space:agency ?agency; space:mass ?mass. } WHERE { ?launch space:launched &quot;1969-07-16&quot;^^xsd:date. ?spacecraft space:launch ?launch; foaf:name ?name; space:agency ?agency; space:mass ?mass. }
  • 46. SELECT SQL style result set retrieval
  • 47. #Ex. 17 PREFIX space: <http://purl.org/net/schemas/space/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name ?agency ?mass WHERE { ?launch space:launched &quot;1969-07-16&quot;^^xsd:date. ?spacecraft space:launch ?launch; foaf:name ?name; space:agency ?agency; space:mass ?mass. }
  • 48. Useful Links
    • SPARQL FAQ
      • http://www.thefigtrees.net/lee/sw/sparql-faq
    • SPARQL Recipes
      • http://n2.talis.com/wiki/SPARQL_Recipes
    • SPARQL By Example Tutorial
      • http://www.cambridgesemantics.com/2008/09/sparql-by-example
    • Twinkle, GUI SPARQL editor
      • http://www.ldodds.com/projects/twinkle
      • http://code.google.com/p/twinkle-sparql-tools
  • 49. shared innovation