Master Informatique 1 Semantic Technologies Part 5SPARQL Werner Nutt.

Slides:



Advertisements
Similar presentations
ESDSWG2011 – Semantic Web session Semantic Web Sub-group Session ESDSWG 2011 Meeting – Semantic Web sub-group session Wednesday, November 2, 2011 Norfolk,
Advertisements

Master Informatique 1 Semantic Technologies Part 4Jena Werner Nutt.
RDF Tutorial.
Semantic Web Introduction
© Copyright IBM Corporation 2014 Getting started with Rational Engineering Lifecycle Manager queries Andy Lapping – Technical sales and solutions Joanne.
Jena Sparql 4/11/2017.
 Copyright 2004 Digital Enterprise Research Institute. All rights reserved. SPARQL Query Language for RDF presented by Cristina Feier.
SPARQL RDF Query.
Chapter 3 Querying RDF stores with SPARQL. TL;DR We will want to query large RDF datasets, e.g. LOD SPARQL is the SQL of RDF SPARQL is a language to query.
SPARQL for Querying PML Data Jitin Arora. Overview SPARQL: Query Language for RDF Graphs W3C Recommendation since 15 January 2008 Outline: Basic Concepts.
Visual Web Information Extraction With Lixto Robert Baumgartner Sergio Flesca Georg Gottlob.
WRITING BASIC SQL SELECT STATEMENTS Lecture 7 1. Outlines  SQL SELECT statement  Capabilities of SELECT statements  Basic SELECT statement  Selecting.
CORE 2: Information systems and Databases STORAGE & RETRIEVAL 2 : SEARCHING, SELECTING & SORTING.
Semantic Web Andrejs Lesovskis. Publishing on the Web Making information available without knowing the eventual use; reuse, collaboration; reproduction.
Semantic Web Bootcamp Dominic DiFranzo PhD Student/Research Assistant Rensselaer Polytechnic Institute Tetherless World Constellation.
Chapter 3A Semantic Web Primer 1 Chapter 3 Querying the Semantic Web Grigoris Antoniou Paul Groth Frank van Harmelen Rinke Hoekstra.
Logics for Data and Knowledge Representation SPARQL Protocol and RDF Query Language (SPARQL) Feroz Farazi.
© 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Publishing data on the Web (with.
Master Informatique 1 Semantic Technologies Part 6Semantics of SPARQL Werner Nutt.
1 Ontology Query and Reasoning Payam Barnaghi Institute for Communication Systems (ICS) Faculty of Engineering and Physical Sciences University of Surrey.
Chapter 5 Introduction to SQL. Structured Query Language = the “programming language” for relational databases SQL is a nonprocedural language = the user.
SPARQL All slides are adapted from the W3C Recommendation SPARQL Query Language for RDF Web link:
ASP.NET Programming with C# and SQL Server First Edition
Introduction to SPARQL. Acknowledgements This presentation is based on the W3C Candidate Recommendation “SPARQL Query Language for RDF” from
The Semantic Web Web Science Systems Development Spring 2015.
Chapter 3 Querying RDF stores with SPARQL. Why an RDF Query Language? Why not use an XML query language? XML at a lower level of abstraction than RDF.
Master Informatique 1 Semantic Technologies Part 11Direct Mapping Werner Nutt.
SPARQL W3C Simple Protocol And RDF Query Language
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Lesley Charles November 23, 2009.
Ontology Query. What is an Ontology Ontologies resemble faceted taxonomies but use richer semantic relationships among terms and attributes, as well as.
SPARQL AN RDF Query Language. SPARQL SPARQL is a recursive acronym for SPARQL Protocol And Rdf Query Language SPARQL is the SQL for RDF Example: PREFIX.
SPARQL All slides are adapted from the W3C Recommendation SPARQL Query Language for RDF Web link:
Logics for Data and Knowledge Representation SPARQL -- Exercises Feroz Farazi.
Master Informatique 1 Semantic Technologies Part 7SPARQL 1.1 Werner Nutt.
SPARQL Query Graph Model (How to improve query evaluation?) Ralf Heese and Olaf Hartig Humboldt-Universität zu Berlin.
RDF and XML 인공지능 연구실 한기덕. 2 개요  1. Basic of RDF  2. Example of RDF  3. How XML Namespaces Work  4. The Abbreviated RDF Syntax  5. RDF Resource Collections.
1 SPARQL A. Emrah Sanön. 2 RDF RDF is quite committed to Semantic Web. Data model Serialization by means of XML Formal semantics Still something is missing!
Practical RDF Chapter 10. Querying RDF: RDF as Data Shelley Powers, O’Reilly SNU IDB Lab. Hyewon Lim.
Practical RDF Ch.10 Querying RDF: RDF as Data Taewhi Lee SNU OOPSLA Lab. Shelley Powers, O’Reilly August 27, 2004.
05/01/2016 SPARQL SPARQL Protocol and RDF Query Language S. Garlatti.
Chapter 3 Querying RDF stores with SPARQL
Alexandra Cristea 1.  pronounced "sparkle“  recursive acronym for: ◦ SPARQL Protocol and RDF Query Language  a semantic query language  a query language.
CC L A W EB DE D ATOS P RIMAVERA 2015 Lecture 8: SPARQL (1.1) Aidan Hogan
RDF & SPARQL Introduction Dongfang Xu Ph.D student, School of Information, University of Arizona Sept 10, 2015.
An Effective SPARQL Support over Relational Database Jing Lu, Feng Cao, Li Ma, Yong Yu, Yue Pan SWDB-ODBIS 2007 SNU IDB Lab. Hyewon Lim July 30 th, 2009.
CC L A W EB DE D ATOS P RIMAVERA 2015 Lecture 7: SPARQL (1.0) Aidan Hogan
Knowledge Technologies Manolis Koubarakis 1 Some Other Useful Features of RDF.
9/29/2005From Introduction to Oracle:SQL and PL/SQL, Oracle 1 Restricting and Sorting Data Kroenke, Chapter Two.
Chapter 04 Semantic Web Application Architecture 23 November 2015 A Team 오혜성, 조형헌, 권윤, 신동준, 이인용.
XML Schema – XSLT Week 8 Web site:
Semantic Web in Depth SPARQL Protocol and RDF Query Language Dr Nicholas Gibbins –
Chapter 5 Introduction to SQL.
Vincenzo Maltese, Fausto Giunchiglia University of Trento
CC La Web de Datos Primavera 2017 Lecture 7: SPARQL [i]
SPARQL.
CC La Web de Datos Primavera 2016 Lecture 8: SPARQL (1.1)
Introduction to SPARQL
SPARQL SPARQL Protocol and RDF Query Language
Supporting Arbitrary Custom Datatypes in RDF and SPARQL
JDBC.
SPARQL: A query language for RDF
Jena Sparql (for Mac) 9/22/2018.
Logics for Data and Knowledge Representation
CC La Web de Datos Primavera 2016 Lecture 7: SPARQL (1.0)
Chapter # 7 Introduction to Structured Query Language (SQL) Part II.
CC La Web de Datos Primavera 2018 Lecture 8: SPARQL [1.1]
Resource Description Framework (RDF)
Logics for Data and Knowledge Representation
Semantic-Web, Triple-Strores, and SPARQL
Presentation transcript:

Master Informatique 1 Semantic Technologies Part 5SPARQL Werner Nutt

Master Informatique 2 Semantic Technologies Part 5SPARQL Acknowledgment These slides are based on the slide set Jena By Mariano Rodriguez (see (CC Attribution Share Alike 3.0 License) which are based on the slide set An introduction to SPARQL and Queries over Linked Data. Chapter 2 SPARQL. By Olaf Hartig (CC Attribution Share Alike 3.0 License) License This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License (

Master Informatique 3 Semantic Technologies Part 5SPARQL SPARQL in General A family of W3C recommendations SPARQL Query –Declarative query language for RDF data SPARQL Update –Declarative update language for RDF data SPARQL Protocol –Communication between SPARQL processing services (a.k.a. SPARQL endpoints) and clients SPARQL Query Results XML Format –XML Format for serializing query results

Master Informatique 4 Semantic Technologies Part 5SPARQL Idea of SPARQL queries Pattern matching –Describe subgraphs of the queried RDF graph –Subgraphs that match your description contribute an answer –Building blocks: graph patterns (i.e. RDF graphs with variables)

Master Informatique 5 Semantic Technologies Part 5SPARQL Idea of SPARQL queries ?v dbpedia:Mount_Baker dbpedia:Mount_Etna

Master Informatique 6 Semantic Technologies Part 5SPARQL Components of SPARQL Queries PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 7 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Prologue –Prefix definitions for compact URIs –Attention (difference w.r.t. Turtle): No period (“.”) character as separator PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 8 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Result form specification –SELECT, DESCRIBE, CONSTRUCT or ASK (more later) PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 9 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Dataset specification –Specify the RDF dataset to be queries (more on that later) PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 10 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Query pattern –WHERE clause specifies the graph pattern to be matched PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 11 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Solution modifiers –ORDER BY, LIMIT, OFFSET (more about that later) –Only available in some of the result forms PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 12 Semantic Technologies Part 5SPARQL Graph patterns Different types of graph patterns for the query pattern (WHERE clause): –Basic graph pattern (BGP) –Group graph pattern –Optional graph pattern –Union graph pattern –Named Graph pattern –(Constraints)

Master Informatique 13 Semantic Technologies Part 5SPARQL Basic Graph Patterns Set of triple patterns in Turtle syntax (i.e., RDF triples with variables) Variable names prefixed with “?” or “$” PREFIX rdf: PREFIX rdfs: PREFIX umbel-sc: SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano. ?v rdfs:label ?name }

Master Informatique 14 Semantic Technologies Part 5SPARQL Basic Graph Patterns Set of triple patterns in Turtle syntax (i.e., RDF triples with variables) Variable names prefixed with “?” or “$” PREFIX rdf: PREFIX rdfs: PREFIX umbel-sc: SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name }

Master Informatique 15 Semantic Technologies Part 5SPARQL Example What are the names of all (known) volcanos? SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label ?name “Etna”

Master Informatique 16 Semantic Technologies Part 5SPARQL Example List all types of the volcano called “Beerenberg” SELECT ?type WHERE { ?v rdf:type ?type ; rdfs:label “Beerenberg” } ?type dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 17 Semantic Technologies Part 5SPARQL Example List all types of the volcano called “Beerenberg” SELECT ?type WHERE { ?v rdf:type ?type ; rdfs:label } ?type umbel-sc:Volcano umbel-sc:NaturalElevation dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 18 Semantic Technologies Part 5SPARQL Example Where are all (known) volcanos located? (List the names of these locations) SELECT ?name WHERE { _:x rdf:type umbel-sc:Volcano ; p:location [ rdfs:label ?name ]. } dbpedia:Mount_Baker rdf:type umbel-sc:Volcano; p:location dbpedia:United_States. dbpedia:United_Statesrdfs:label“United States” ?name “United States” Blank nodes in SPARQL queries As subject or object of triple patterns Non-selectable variables

Master Informatique 19 Semantic Technologies Part 5SPARQL Example Blank nodes in the queried data –Blank node identifiers may appear in the results SELECT ?l ?name WHERE { ?v rdf:type umbel-sc:Volcano ; p:location ?l. ?l rdfs:label ?name. } dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; p:location [ rdfs:label "United ]. dbpedia:Mount_Etna rdf:type umbel-sc:Volcano ; p:location [ rdfs:label "Italy" ]. ?l?name _:n0“United _:n1"Italy"

Master Informatique 20 Semantic Technologies Part 5SPARQL Optional Graph Patterns What are all volcanos and their names? SELECT ?v ?name WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name. } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ?v?name dbpedia:Mount_Etna“Etna” Problem: Missing Mount Baker (it has no name)

Master Informatique 21 Semantic Technologies Part 5SPARQL Optional Graph Patterns SELECT ?v ?name WHERE { ?v rdf:type umbel-sc:Volcano. OPTIONAL { ?v rdfs:label ?name } } ?v?name dbpedia:Mount_Etna“Etna” dbpedia:Mount_Baker Optional patterns may result in unbound variables

Master Informatique 22 Semantic Technologies Part 5SPARQL Union Graph Patterns List all volcanos located in Italy or Norway SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano; p:location ??????? } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna” ; p:location dbpedia:Italy. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; p:location dbpedia:United_States. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, rdfs:label ; p:location dbpedia:Norway.

Master Informatique 23 Semantic Technologies Part 5SPARQL Union Graph Patterns SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano. { ?v p:location dbpedia:Italy } UNION { ?v p:location dbpedia:Norway } } SELECT ?v WHERE { { ?v rdf:type umbel-sc:Volcano; p:location dbpedia:Italy } UNION {?v rdf:type umbel-sc:Volcano; p:location dbpedia:Norway. } } semantically equivalent

Master Informatique 24 Semantic Technologies Part 5SPARQL Union Graph Patterns SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano. { ?v p:location dbpedia:Italy } UNION { ?v p:location dbpedia:Norway } } SELECT ?v WHERE { { ?v rdf:type umbel-sc:Volcano. } { { ?v p:location dbpedia:Italy } UNION { ?v p:location dbpedia:Norway } } semantically equivalent

Master Informatique 25 Semantic Technologies Part 5SPARQL Constraints on Solutions Syntax: Keyword FILTER followed by a filter expression Filter expressions are formed by operators and functions Operators and functions operate on RDF terms SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; p:lastEruption ?le FILTER ( ?le > 1900 ) }

Master Informatique 26 Semantic Technologies Part 5SPARQL Constraints (Truth Table) Filter expressions evaluate to true, false or error Truth table: ABA || BA && B TTTT TFTF FTTF FFFF TETE ETTE FEEF EFEF EEEE

Master Informatique 27 Semantic Technologies Part 5SPARQL Unary Operators in Constraints OperatorType(A)Result type !Axsd:boolean +Anumeric -Anumeric BOUND(A)variablexsd:boolean isURI(A)RDF termxsd:boolean isBLANK(A)RDF termxsd:boolean isLITERAL(A)RDF termxsd:boolean STR(A)literal / URIsimple literal LANG(A)literalsimple literal DATATYPE(A)literalsimple literal

Master Informatique 28 Semantic Technologies Part 5SPARQL Example List all types of the volcano called “Beerenberg” SELECT ?type WHERE { ?v rdf:type ?type ; rdfs:label “Beerenberg” } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label ?type

Master Informatique 29 Semantic Technologies Part 5SPARQL Example List all types of the volcano called “Beerenberg” SELECT ?type WHERE { ?v rdf:type ?type ; rdfs:label ?name. FILTER( STR(?name) = “Beerenberg) } ?type umbel-sc:Volcano umbel-sc:NaturalElevation dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 30 Semantic Technologies Part 5SPARQL Constraints (Further operators) Binary operators: –Logical connectives && and || for xsd:boolean –Comparison operators =, !=,, = for numeric datatypes, xsd:dateTime, xsd:string, and xsd:boolean –Comparison operators = and != for other datatypes –Arithmetic operators +, -, *, and / for numeric datatypes Furthermore: –REGEX(String,Pattern) or REGEX(String,Pattern,Flags) –sameTERM(A,B) –langMATCHES(A,B)

Master Informatique 31 Semantic Technologies Part 5SPARQL Example List all types of the volcano with “e” in their name SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name. FILTER( REGEX(STR(?name), "e") ) } ?v dbpedia:Beerenberg dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 32 Semantic Technologies Part 5SPARQL Example List all types of the volcano with “e” in their name (case insensitive) SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name. FILTER( REGEX(STR(?name), "e", "i") ) } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label ?v dbpedia:Mount_Etna dbpedia:Beerenberg

Master Informatique 33 Semantic Technologies Part 5SPARQL Named Graph Patterns SPARQL queries are executed over an RDF dataset: –One default graph and –Zero or more named graphs (identified by an URI) dbpedia:Mount_Etnardfs:seeAlso dbpedia:Mount_Baker rdfs:seeAlso dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label ; dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. Default graph

Master Informatique 34 Semantic Technologies Part 5SPARQL Graphs in RDF Currently no official specification of named graphs in RDF However, most RDF triple stores support them –Loading data into graphs in Jena, use “ng4j”

Master Informatique 35 Semantic Technologies Part 5SPARQL Named Graphs in Jena (Example) // Create a new graphset NamedGraphSet graphset = new NamedGraphSetImpl(); NamedGraph graph = graphset.createGraph(" // Add information to the NamedGraph graph.add(new Triple(Node.createURI(" foaf.rdf#FarizDarari"), Node.createURI(" Node.createLiteral("FarizDarari", null, null))); // Create a quad Quad quad = new Quad(Node.createURI(" InformationAboutFariz"), Node.createURI(" Node.createURI(" // Add the quad to the graphset. This will create a new NamedGraph in the // graphset. graphset.addQuad(quad);

Master Informatique 36 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Dataset specification –Specify the RDF dataset to be queried (more on that later) Specification using FROM and FROM NAMED PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name

Master Informatique 37 Semantic Technologies Part 5SPARQL Named Graph Patterns Evaluation of patterns w.r.t. the active graph GRAPH clause for making a named graph the active graph dbpedia:Mount_Etnardfs:seeAlso dbpedia:Mount_Baker rdfs:seeAlso dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label ; dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. Default graph

Master Informatique 38 Semantic Technologies Part 5SPARQL Named Graph Patterns SELECT ?v WHERE { GRAPH ?g { ?v rdf:type umbel-sc:Volcano } } ?v dbpedia:Mount_Etna dbpedia:Mount_Baker dbpedia:Beerenberg dbpedia:Mount_Etnardfs:seeAlso dbpedia:Mount_Baker rdfs:seeAlso dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label ; dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. Default graph

Master Informatique 39 Semantic Technologies Part 5SPARQL Named Graph Patterns dbpedia:Mount_Etnardfs:seeAlso dbpedia:Mount_Baker rdfs:seeAlso dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label ; dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. Default graph SELECT ?v ?g WHERE { GRAPH ?g { ?v rdf:type umbel-sc:Volcano } } ?v?g dbpedia:Mount_Etna dbpedia:Mount_Baker dbpedia:Beerenberg

Master Informatique 40 Semantic Technologies Part 5SPARQL Named Graph Patterns SELECT ?v WHERE { _:x rdfs:seeAlso ?g GRAPH ?g { ?v rdf:type umbel-sc:Volcano } } ?v dbpedia:Mount_Etna dbpedia:Mount_Baker dbpedia:Mount_Etnardfs:seeAlso dbpedia:Mount_Baker rdfs:seeAlso dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label ; dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. Default graph

Master Informatique 41 Semantic Technologies Part 5SPARQL Negation What volcanos do not have a name in our data? SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano. OPTIONAL { ?v rdfs:label ?name } FILTER ( ! BOUND(?name) ) } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label ?v dbpedia:Mount_Baker Negation as failure

Master Informatique 42 Semantic Technologies Part 5SPARQL Negation What volcanos are not called “Beerenberg”? SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name. FILTER ( STR(?name) != “Beerenberg” ) } } ?name dbpedia:Mount_Etna dbpedia:Beerenberg dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 43 Semantic Technologies Part 5SPARQL Negation What volcanos are not called “Beerenberg”? SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano. OPTIONAL { ?v rdfs:label ?name. FILTER ( STR(?name) = “Beerenberg” ) } FILTER ( ! BOUND (?name) ) } ?name dbpedia:Mount_Etna dbpedia:Mount_Baker Negation as failure dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 44 Semantic Technologies Part 5SPARQL Named Graph Patterns and Negation Which named graphs contain the name of a volcano that is not referenced in the default graph dbpedia:Mount_Etnardfs:seeAlso dbpedia:Mount_Baker rdfs:seeAlso dbpedia:Beerenberg rdf:type umbel-sc:Volcano ; rdfs:label ; dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. Default graph SELECT ?g WHERE { GRAPH ?g { ?v rdf:type umble-sc:Volcano ; rdfs:label ?name. } OPTIONAL { ?v rdfs:seeAlso ?r } FILTER ( ! BOUND(?r) ) }

Master Informatique 45 Semantic Technologies Part 5SPARQL Summary – Graph Patterns Different types of graph patterns for the query pattern (WHERE clause): –Basic graph pattern (BGP) –Group graph pattern –Optional graph pattern – keyword OPTIONAL –Union graph pattern – keyword UNION –Named Graph pattern – keyword GRAPH –Constraints – keyword FILTER

Master Informatique 46 Semantic Technologies Part 5SPARQL Components of SPARQL Queries Result form specification –SELECT, DESCRIBE, CONSTRUCT or ASK (more later) PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name 

Master Informatique 47 Semantic Technologies Part 5SPARQL Result Forms SELECT –Result: sequence of solutions (i.e. sets of variable bindings) –Selected variables separated by space (not by comma!) –Asterisk character (“*”) selects all variables in the pattern ASK –Check whether there is at least one result –Result: true or false –Example: Do we have data about volcanos? ASK WHERE { ?v rdf:type umble-sc:Volcano }

Master Informatique 48 Semantic Technologies Part 5SPARQL Result Forms DESCRIBE –Result: an RDF graph with data about resources –Non-deterministic (i.e. query processor defines the actual structure of the resulting RDF graph) –Example: just name the resource –Possible to specify the resource by query pattern DESCRIBE DESCRIBE ?v WHERE { ?v rdf:type umbel-sc:Volcano. }

Master Informatique 49 Semantic Technologies Part 5SPARQL Result Forms CONSTRUCT –Result: an RDF graph constructed from a template –Template: graph pattern with variables from the query pattern CONSTRUCT { ?v rdfs:label ?name ; rdf:type myTypes:VolcanosOutsideTheUS } WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name. OPTIONAL { ?v p:location ?l  FILTER ( ?l = dbpedia:United_States ) } FILTER ( ! BOUND(?l) ) }

Master Informatique 50 Semantic Technologies Part 5SPARQL Result Forms dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna” ; p:location dbpedia:Italy. dbpedia:Mount_Baker rdf:type umbel-sc:Volcano ; rdfs:label "Mount Baker" ; p:location dbpedia:United_States. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, rdfs:label ; p:location dbpedia:Norway. dbpedia:Mount_Etnardfs:label "Etna” ; rdf:type myTypes:VolcanosOutsideTheUS dbpedia:Beerenberg rdfs:label ; rdf:type myTypes:VolcanosOutsideTheUS Result Data

Master Informatique 51 Semantic Technologies Part 5SPARQL Solution Modifiers Solution modifiers –Only for SELECT queries –Modify the result set as a whole (not single solutions) –Keywords: DISTINCT, ORDER BY, LIMIT, OFFSET PREFIX rdf: PREFIX umbel-sc: SELECT ?v FROM WHERE { ?v rdf:type umbel-sc:Volcano. } ORDER BY ?name 

Master Informatique 52 Semantic Technologies Part 5SPARQL Solution Modifiers DISTINCT removes duplicates from the result set SELECT ?type WHERE { _:x rdf:type ?type } dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label ?name umbel-sc:Volcano umbel-sc:NaturalElevation umbel-sc:Volcano

Master Informatique 53 Semantic Technologies Part 5SPARQL Solution Modifiers DISTINCT removes duplicates from the result set SELECT DISTINCT ?type WHERE { _:x rdf:type ?type } ?name umbel-sc:Volcano umbel-sc:NaturalElevation dbpedia:Mount_Etnardf:type umbel-sc:Volcano ; rdfs:label "Etna". dbpedia:Mount_Baker rdf:type umbel-sc:Volcano. dbpedia:Beerenberg rdf:type umbel-sc:Volcano, umbel-sc:NaturalElevation ; rdfs:label ; rdfs:label

Master Informatique 54 Semantic Technologies Part 5SPARQL Solution Modifiers ORDER BY orders the results How do you order different kinds of elements? –unbound < blank node < URI < literal ASC for ascending (default) and DESC for descending Hierarchical order criteria SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } ORDER BY ?name SELECT ?name WHERE { ?v rdf:type umbel-sc:Volcano ; p:lastEruption ?le ; rdfs:label ?name } ORDER BY DESC(?le), ?name

Master Informatique 55 Semantic Technologies Part 5SPARQL Solution Modifiers LIMIT – limits the number of result OFFSET – position/index of the first reported results Order of the result should be predictable (combine with ORDER BY) SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } ORDER BY ?name LIMIT 5 SELECT ?v WHERE { ?v rdf:type umbel-sc:Volcano ; rdfs:label ?name } ORDER BY ?name LIMIT 5 OFFSET 10

Master Informatique 56 Semantic Technologies Part 5SPARQL Exercise Consider the example data xsd:. ex:Hamlet ex:author ex:Shakespeare ; ex:price "10.50"^^xsd:decimal. ex:Macbeth ex:author ex:Shakespeare. ex:Tamburlaine ex:author ex:Marlowe ; ex:price "17"^^xsd:integer. ex:DoctorFaustus ex:author ex:Marlowe ; ex:price "12"^^xsd:integer ; ; ex:title "The Tragical History of Doctor Faustus". ex:RomeusJuliet ex:author ex:Brooke ; ex:price ”12"^^xsd:integer.

Master Informatique 57 Semantic Technologies Part 5SPARQL Exercise Formulate SPARQL queries for the vocabulary in the data set: Who are the authors of some book? Who are the authors of a book that costs less than 15? Who are the authors of a book that costs less than 15, and what are the titles, if available? Which is the most expensive book? Which is the most expensive book by Shakespeare?

Master Informatique 58 Semantic Technologies Part 5SPARQL SPARQL in Jena What components would you expect in a framework like Jena?

Master Informatique 59 Semantic Technologies Part 5SPARQL SPARQL in Jena SPARQL functionality bundled with Jena has separate Javadocs: Main classes in package com.hp.hpl.jena.query –Query a SPARQL query –QueryFactory for creating queries in various ways –QueryExecution for the execution state of a query –QueryExecutionFactory for creating query executions –ResultSet for results of a SELECT CONSTRUCT and DESCRIBE return Models, ASK a Java boolean. SPARQL with ARQ is generally slow because queries are broken down into triple patterns.

Master Informatique 60 Semantic Technologies Part 5SPARQL Constructing a Query and a QueryExecution Query objects are usually constructed by parsing: String qStr = "PREFIX foaf: " + "SELECT ?a ?b WHERE {" + " ?a foaf:knows ?b." + "} ORDER BY ?a ?b"; Query q = QueryFactory.create(qStr); Programming interface deprecated and badly documented A Query can be used several times, on multiple models For each execution, a new QueryExecution is needed To produce a QueryExecution for a given Query and Model: QueryExecution qe = QueryExecutionFactory.create(q, model);

Master Informatique 61 Semantic Technologies Part 5SPARQL Executing a Query QueryExecution contains methods to execute different kinds of queries (SELECT, CONSTRUCT, etc.) E.g. for a SELECT query: ResultSet res = qe.execSelect(); ResultSet is a sub-interface of Iterator Also has methods to get list of variables QuerySolution has methods to get list of variables, value of single variables, etc. Important to call close() on query executions when no longer needed (Why?)

Master Informatique 62 Semantic Technologies Part 5SPARQL Example: SPARQL in Jena String qStr = "SELECT ?a ?b..."; Query q = QueryFactory.create(qStr); QueryExecution qe = QueryExecutionFactory.create(q,model); try { res = qe.execSelect(); while( res.hasNext()) { QuerySolution soln = res.next(); RDFNode a = soln.get("?a"); RDFNode b = soln.get("?b"); System.out.println(""+a+" knows "+b); } } finally { qe.close(); }

Master Informatique 63 Semantic Technologies Part 5SPARQL SPARQL on the Web Many sites (DBLP, dbpedia, dbtunes,... ) publish SPARQL endpoints I.e. SPARQL queries can be submitted to a database server that sends back the results Uses HTTP to submit URL-encoded queries to server GET /sparql/?query=... HTTP/1.1 Actually defined via W3C Web Services, see For SELECT queries you can get a XML or JSON result set, see Nothing you would want to do manually!

Master Informatique 64 Semantic Technologies Part 5SPARQL Remote SPARQL with Jena Jena can send SPARQL queries to a remote endpoint! Use one of the sparqlService methodes in QueryExecutionFactory E.g. String endpoint = " String qStr = "SELECT ?a ?b..."; Query q = QueryFactory.create(qStr); QueryExecution qe = QueryExecutionFactory.sparqlService(endpoint,q); try { res = qe.execSelect();... } finally { qe.close(); }