Sparql query language for rdf
1 / 37

SPARQL Query Language for RDF - PowerPoint PPT Presentation

  • Uploaded on

SPARQL Query Language for RDF. 임형준 ( [email protected] ) 충남대학교 컴퓨터공학과 데이터베이스 시스템 연구실 2014년 9월 11일 목요일. Contents. SPARQL Status SPARQL Overview SPARQL Feature Summary References Appendix. SPARQL Status. SPARQL Query Language for RDF

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' SPARQL Query Language for RDF' - lynsey

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Sparql query language for rdf

SPARQLQuery Language for RDF

임형준([email protected])

충남대학교 컴퓨터공학과

데이터베이스 시스템 연구실

2014년 9월 11일 목요일


  • SPARQL Status

  • SPARQL Overview

  • SPARQL Feature

  • Summary

  • References

  • Appendix

Sparql status

  • SPARQL Query Language for RDF

    • W3C,

    • Published W3C Working Draft 26 March 2007

  • SPARQL Protocol for RDF

    • W3C,

    • Published W3C Candidate Recommendation 6 April 2006

  • SPARQL Query Results XML Format

    • W3C,

    • Published W3C Candidate Recommendation 6 April 2006

Sparql overview
SPARQL Overview

  • RDF

    • Resource Description Framework

    • Flexible and extensible way to represent information about WWW resources


    • SPARQL Protocol And RDF Query Language

    • Query Language + Protocol + XML Results Format

    • Product of the RDF Data Access Working Group

    • A query language for access and query RDF graphs

    • A protocol for issuing queries via HTTP GET, HTTP POST, or SOAP

    • Perfect for mashing up disparate data sources representable as RDF

Sparql overview1
SPARQL Overview

  • It provides facilities to:

    • Extract information in the form of URIs, blank nodes, plain and typed literals

    • Extract RDF subgraphs

    • Construct new RDF graphs based on information in the queried graphs

  • Feature

    • Matching graph patterns

    • Variables – global scope; indicated by ‘?‘ or ‘$‘

    • Query terms – based on Turtle syntax

    • Terms delimited by "<>" are relative URI references

    • Data description format - Turtle

Sparql query example
SPARQL Query Example

Find the URL of

the blog by the

person named

Jon Foobar

Figure 1. Basic graph structure for a single contributor in bloggers.rdf



Sparql features

SPARQL Features

Graph Patterns

RDF Dataset

Result Forms

Testing Values


Data Virtualization

Access Multiple Sources

SPARQL Protocol


Graph patterns
Graph Patterns

  • Set of Triple Patterns

    • Triple Pattern – similar to an RDF Triple (subject, predicate, object), but any component can be a query variable; literal subjects are allowed

    • Matching a triple pattern to a graph: bindings between variables and RDF Terms

Graph pattern multiple matches
Graph Pattern - Multiple Matches



Group Graph Pattern (set of graph patterns) also!

Query Result

Rdf dataset
RDF Dataset

  • The RDF data model expresses information as a graph

  • Many RDF data stores hold a multiple RDF graphs

  • There is one graph which does not have a name, called the background graph, and zero or more named graphs, identified by URI reference

# Default graph

@prefix dc: <> .

<> dc:publisher "Bob" .

<> dc:publisher "Alice".

# Named graph:

@prefix foaf: <> .

_:a foaf:name "Bob" .

_:a foaf:mbox <mailto:[email protected]> .

Querying the dataset
Querying the Dataset

# Graph: @prefix foaf: <> . _:a foaf:name "Alice" . _:a foaf:mbox <mailto:[email protected]> . _:a foaf:knows _:b . _:b foaf:name "Bob" . _:b foaf:mbox <mailto:[email protected]> . _:b foaf:age 32 . _:b foaf:PersonalProfileDocument <> .

# Graph: @prefix foaf: <> . _:1 foaf:mbox <mailto:[email protected]> . _:1 foaf:PersonalProfileDocument <>. _:1 foaf:age 35 .

Accessing graph labels
Accessing Graph Labels

PREFIX foaf: <> PREFIX data: <> SELECT ?src ?age WHERE GRAPH ?src { ( ?x foaf:mbox <mailto:[email protected]> ) ( ?x foaf:age ?age )


PREFIX foaf: <> PREFIX data: <> SELECT ?age WHERE GRAPH data:bobFoaf { ( ?x foaf:mbox <mailto:[email protected]> ) ( ?x foaf:age ?age ) }

Result forms
Result Forms

  • SPARQL has a number of query forms for returning results

    • SELECT

      • Returns all, or a subset of the variables bound in a query pattern match

      • Formats : XML or RDF/XML


      • Returns an RDF graph constructed by substituting variables in a set of triple templates


      • Returns an RDF graph that describes the resources found

    • ASK

      • Returns whether a query pattern matches or not

Testing values
Testing Values

  • Named functions and syntactically constructed operations:

    • Operands: subset of XML Schema DataTypes {xsd:string, xsd:decimal, xsd:double, xsd:dateTime} and types derived from xsd:decimal.

  • Subset of XQuery 1.0 and XPath 2.0 functions and operators

    • Operands: xs:string, xs:double, xs:float, xs:decimal, xs:integer, xs:dateTime

    • Additional operators: sop:RDFterm-equal, sop:bound, sop:isURI, sop:isBlank, sop:isLiteral, sop:str , sop:lang, sop:datatype, sop:logical-or, sop:logical-and

  • Type Promotion : xs:double, xs:float, xs:decimal

    • Each of the numeric types is promoted to any type higher in the above list when used as an argument to function expecting that higher type


  • An RDF graph may be backed by inference

    • OWL, RDFS, application, rules

:x rdf:type :C .:C rdfs:subClassOf :D .

PREFIX rdf: <>

SELECT ?type



?x rdf:type ?type .



| type |


| :C |

| :D |


Data virtualization
Data Virtualization

  • SPARQL as integrator

    • Data remains where it is

    • Existing applications untouched

    • Data appears as RDF, query to native form


    • Direct mapping of tables

      • Semi-automatic generation of mapping

      • SquirrelRDF (also does LDAP)

    • Modelled: D2RQ

      • High-quality mapping, manually developed

Federated query single point of access




Federated QuerySingle Point of Access

  • Inputs:

    • Service Description

    • Information Directory

    • Request

  • Outputs:

    • Unified results

Query BrokerSPARQL => SPARQL





Access multiple sources
Access Multiple Sources

  • “Find the name and email addresses of authors of a paper”

  • Query tech reports first, then go to LDAP for more information.

  • SQL database; LDAP server

PREFIX dc: <>PREFIX ldap: <>

PREFIX foaf:

SELECT ?name ?email


?doc dc:title ?title .

FILTER regex(?title, “SPARQL”) .

?doc dc:creator ?reseacher .

?researcher ldap:email ?email .

?researcher ldap:name ?name


Access multiple sources1
Access Multiple Sources

  • “Find the reports written by the person with email address [email protected]

  • Go to LDAP first, then the reports database

PREFIX dc: <>PREFIX ldap: <>

PREFIX foaf:

SELECT ?name


?doc dc:title ?title .

?doc dc:creator ?reseacher .

?researcher ldap:email <mailto:[email protected]> .


Sparql as a protocol
SPARQL as a Protocol

  • A way of communication between parties that run SPARQL queries

  • Defining a way of invoking the service

  • Bindings of a transport protocol

Sparql protocol 1
SPARQL Protocol(1)

  • WSDL description file:

    • Description of the protocol

    • Not for human understanding

  • HTTP binding:

    • Specify how to encode SPARQL queries in URLs with GET and POST methods

  • SOAP binding:

    • Specify the SOAP message format (XML message exchange format for queries)

Sparql protocol 2
SPARQL Protocol(2)

  • Interface SparqlQuery

    • Only one operation: query

      • For transferring string query

    • Data types: via XML schema

    • Bindings: HTTP / SOAP binding for invokable operations

  • A service must support SparqlQuery interface

    • Support the bindings as described in the WSDL

Http binding example
HTTP Binding Example

  • HTTP Binding Get methods

GET /sparql/?query=EncodedQuery&default-graph-uri=http://my.example/publishers&named-graph-uri=http://my.example/bob&named-graph-uri=http://my.example/aliceHTTP/1.1Host: my.exampleUser-agent: sparql-client/0.1

Wsdl description file example
WSDLDescription File Example

WSDL description file: (HTTP binding part)

<binding name="queryHttp" interface="tns:SparqlQuery“

… >

<fault name="MalformedQuery" whttp:zode="400"/>

<!-- the GET binding for query operation -->

<operation ref="tns:query" whttp:method="GET"

whttp:inputSerialization=“…" />


Soap binding example
SOAP Binding Example

HTTP/1.1 200 OK

Date: Wed, 27Dec 2005 12:48:25 GMT

Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3

Connection: closeContent-Type: application/sparql-results+xml;


<?xml version="1.0"?>

<sparql xmlns=“…"> … …


Walkthrough example 1
Walkthrough Example(1)

  • XML File

<Person> <name>Henry Story</name><mbox>[email protected]</mbox><knows><Person><name>Tim Bray</name>

<mbox>[email protected]</mbox>

</Person><Person><name>Jonathan Story</name>

<mbox>[email protected]</mbox>

</Person> </knows>


Walkthrough example 11
Walkthrough Example(1)


[ a :Person;

:name "Henry Story";

:mbox <mailto:[email protected]>; :knows [ a :Person; :name "Tim Bray"; :mbox <mailto:[email protected]]; :knows [ a :Person; :name "Jonathan Story"; :mbox <mailto:[email protected]> ]; ] .

Walkthrough example 2
Walkthrough Example(2)

  • XML File

<AddressBook> <Person> <name>Jonathan Story</name>

<mbox>[email protected]</mbox>

<address> <Country>France</Country>




<name>Tim Bray</name>

<mbox>[email protected]</mbox>

<address> <Country>Canada</Country>




Walkthrough example 21
Walkthrough Example(2)


[ a :Person;

:name "Tim Bray";

:mbox <mailto:[email protected]>

:address [

a :Address;

:country "Canada"@en ]


[ a :Person;

:name "Jonathan Story";

:mbox <mailto:[email protected]>

:address [

a :Address;

:country "France"@en ]



  • SPARQL (SPARQL Protocol And RDF Query Language) is a query language for getting information from RDF graphs

  • It provides facilities to:

    • Extract information in the form of URIs, bNodes, Plain and typed literals

    • Extract RDF subgraphs

    • Construct new RDF graphs based on information in the queried graphs


  • W3C, “SPARQL Query Language for RDF”, 26, March. 2007

  • IBM Developerworks, “Search RDF data with SPARQL”, 10, May. 2005

  • Oreillynet, “SPARQL: Web 2.0 Meet the Semantic Web”, 16, September. 2005

Appendix 01

  • SPARQL Update

    • Future HP proposal to W3C

INSERT{ book:newBook dc:title “More about SPARQL” . book:newBook dc:creator

[ foaf:mbox <mailto:[email protected]> ;

foaf:name “Alex Author” ]



{ ?book dc:title ?title ;

dc:creator ?c }WHERE{ ?book dc:title ?title ; dc:creator ?c FILTER regex(?title, “first edition”)}

Appendix 02

  • SPARQL: Web 2.0 Meet the Semantic Web

    • RDF is pretty foundational to the Semantic Web

    • Most Web 2.0 applications and services involve a REST protocol or interface

    • REST offers a standard set of operations


    • No standard way to execute an arbitrary query

      • A Web 2.0 app or service’s dataset

      • Get back a representation of that resource

Appendix 021

  • SW and Web 2.0 need a data access protocol

    • Using WSDL 2.0, SPARQL Protocol for RDF describes a very simple web service with one operation, query

    • Available with both HTTP and SOAP bindings

      • The way you send SPARQL queries to other sites

      • The way you get back the results

  • Imagine having one query language, and one client, which lets you arbitrarily slice the data ofWeb 2.0 sites, all FOAF files, all of the RSS 1.0 feeds

  • A good SPARQL client implementation in Javascript, along with some conventions for building and moving queries around in an AJAX-friendly way

    • SPARQL over AJAX just by itself is so cool it gives me a headache!