Transcript
  1. 1. SPARQL 1.1Andy Seaborne
  2. 2. SPARQL is ... A standard query language for RDF And now with update of RDF stores Product of W3C Process Submissions members Working groups Consensus (amongst the active participants) Widely implemented
  3. 3. History 1.0 SPARQL 1.0 Timescale: 2004 2008 2 years late Lots of choices for starting points Controversies Syntax Named graphs Algebra
  4. 4. SPARQL 1.0 Example@prefix person: .@prefix foaf: .person:A foaf:name "Alice" .person:A foaf:mbox .person:B foaf:name "Bob" .PREFIX person: PREFIX foaf: SELECT ?n ?mailboxWHERE{ person:A foaf:mbox ?mailbox ; foaf:name ?n . }----------------------------------------| n | mailbox|========================================| "Alice" | |----------------------------------------
  5. 5. SPARQL 1.0 Example@prefix dc: .@prefix stock: .stock:book1 dc:title "SPARQL Query Language Tutorial" .stock:book2 dc:title "SPARQL Query Language (2nd ed)" .stock:book3 dc:title "Moving from SQL to SPARQL" .stock:book4 dc:title "Applying XQuery" .PREFIX dc: PREFIX stock: SELECT ?book ?title{?book dc:title ?title .FILTER (regex(?title, "SPARQL"))}--------------------------------------------------| book| title|==================================================| stock:book3 | "Moving from SQL to SPARQL"|| stock:book2 | "SPARQL Query Language (2nd ed)" || stock:book1 | "SPARQL Query Language Tutorial" |--------------------------------------------------
  6. 6. SPARQL 1.0 Experimentation for new features startedbefore the first standard was published But you cant wait until completely complete Issues Counting Standard function library Hard-to-use negation Query only, no update Only a note about a JSON output
  7. 7. History 1.1 SPARQL 1.1 Timescale : 2009 2013 2 years late Controversies Negation Property paths Graphs REST ...
  8. 8. SPARQL 1.1SPARQL 1.1 Query SPARQL 1.1 UpdateSPARQL 1.1 Protocol SPARQL 1.1 Graph Store ProtocolSPARQL 1.1 Service Description SPARQL 1.1 Federated QuerySPARQL 1.1 Query Results JSON Format SPARQL 1.1 Query Results CSV and TSV FormatsSPARQL Query Results XML FormatSPARQL 1.1 Entailment Regimes
  9. 9. SPARQL 1.1The important bits (IMO) SPARQL 1.1 Query Subqueries, aggregation negation property paths remote query SPARQL 1.1 Update SPARQL 1.1 Graph Store Protocol
  10. 10. SPARQL 1.1 Query ExamplesPREFIX rdf:PREFIX foaf: SELECT ?name{{ SELECT ?x (count(*) AS ?count){ ?x foaf:knows ?y . }GROUP BY ?xHAVING (?count = 3)}?x foaf:name ?name .}PREFIX rdf:PREFIX foaf: SELECT ?x{ ?x rdf:type foaf:Person .FILTER NOT EXISTS { ?x foaf:name ?name }}
  11. 11. Property Paths and InferenceClass inferencePREFIX rdf:PREFIX rdfs: PREFIX : SELECT ?s {?s rdf:type ?T .?T rdfs:subClassOf* :SomeClass .} Property inferencePREFIX rdf:PREFIX rdfs: PREFIX : SELECT * {?s ?p ?o .?p rdfs:subPropertyOf* :property .}
  12. 12. SPARQL 1.1 Update Fine grain graph manipulations Act on a graph store Add and remove graphs Act on the contents of graphs Quad centric LOAD, DROP, CREATE INSERT, DELETE Data and patterns One request is multiple operations
  13. 13. Data OperationsPREFIX rdf:PREFIX foaf: DELETE DATA { foaf:name "DEF" . } ;INSERT DATA { foaf:name "ABC" . } ;
  14. 14. Pattern Operations : DELETE-INSERT Pattern Delete triples Insert triples PREFIX foaf: PREFIX vc: DELETE { ?p vc:fn ?x } INSERT { ?p foaf:name ?x } WHERE {?p vc:fn ?x .?p foaf:knows } }
  15. 15. SPARQL 1.1 Graph Store Protocol Simple way to manage a store (RDF Dataset) GET, PUT, POST, DELETE Naming Same serverhttp://server/store/graph1 Different serverhttp://server/store?graph=http://example/g1http://server/store?graph=http%3A//example/g1http://server/store?default
  16. 16. RESTful(ish) operation curl -T D.ttl --header Content-type: text/turtle http://server.com/store?graph=http%3A//example/g1PUT /store?graph=http%3A//example/g1 HTTP/1.1Host: server.comContent-type: text/turtle@prefix : .:subject :pred1 1 ; :pred2 hello .
  17. 17. Digression: RDF 1.1 Work-in-progress Incremental Turtle, TriG, N-Triples, N-Quads RDF Datasets (as SPARQL?) Related: JSON-LD
  18. 18. JSON-LD Links and semantics for the JSON ecosystem Adds a "context" to map JSON to RDF RDF JSON-LD RDF is lossless{"@context": "http://json-ld.org/contexts/person.jsonld","@id": "http://example.org/alice.foaf#me","name": "Alice Hacker","homepage": "http://example.org/alice",}@prefix foaf: . foaf:name "Alice Hacker" ; foaf:homepage .
  19. 19. http://jena.apache.org/Title:(asf_logo.eps)Creator:Adobe Illustrator(R) 8.0CreationDate:(10/20/99) (11:38 AM)
  20. 20. Apache Jena Full Apache Project since May 2012 SPARQL 1.1 Query Update Protocol Graph Store Protocol
  21. 21. Fuseki SPARQL Server SPARQL server RDF native database ACID transactions Query timeout Deployed live
  22. 22. Data Management Web UI curl / wget SOH (SPARQL over HTTP) Scripts s-get, s-put, s-post, s-delete, s-query, s-update
  23. 23. Online http://www.sparql.org/ Fuseki running on Apache project hardware Services SPARQL query validator SPARQL update validator RDF data validator IRI validator

Recommended