SlideShare a Scribd company logo
+

SW Software architecture
and SPARQL
Mariano Rodriguez-Muro,
Free University of Bozen-Bolzano
+

Disclaimer


License




This work is licensed under a
Creative Commons Attribution-Share Alike 3.0 License
(http://creativecommons.org/licenses/by-sa/3.0/)

Material for these slides has been taken from


W3C pages for SPARQL



Jena and Sesame‟s documentation
+

Summary


Semantic web idea, and overview of SWT



RDF data model



Jena intro



SPARQL protocol
+

Reading material


Semantic Web Programming Part III, Chapter 8



FUSEKI tutorial
+
SW Software architectures
+

Architecture of SW applications


Local access




The RDF graph is stored
locally and is accessible
through an API

Mixed access


Manual (hard coded)



Federated Queries



Traversal



Remote access


The RDF graph is owned by
a third party and expossed
through an SPARQLendpoint or a web service
+
Local Access
Triple stores and APIs
+

Local access


Data is managed locally by
means of a triple store (e.g.,
Jena, Sesame)



Data may be:


RDF (e.g., local copies of
Linked Data



Legacy data transformed into
RDF (more in a few)
+

Local access(triple stores)


Possible triple stores:
 Jena
TDB, SDB, Sesame, 4Store,
…
 Virtuoso, OWLIM, AllegroGra
ph,…



3rd party data:
 From DUMPs
 http://wiki.dbpedia.org/
 http://pro.europeana.eu/dat
asets
 Crawling (e.g, LDSpider)



Legacy transformation
+

Local access (legacy sources)


3rd party tools to transform
 CSV
 XLS, etc.



XSLT to transform XML



Mapping based
(R2RML, D2RQ)
 3rd party tools to transform
RDBMS into RDF dumps
 3rd party tools to expose
RDBMS as virtual RDF



All of these will be covered in
the course
+

Local access (local queries)


All triple stores offer SPARQL
execution


Accessible through console
tools (mysql and psql style)

bin/sparql --data=data-mydata.rdf
--query=my-sparql-query.rq



Through their own API
+

SPARQL with Jena in Java


Key API objects


Query



QueryFactory



QueryExecutionFactory



QueryExecution


execAsk() > boolean



execConstruct() > Model



execDescribe() > Model



execSelect() > ResultSet

String queryString = "PREFIX owl:
<http://www.w3.org/2002/07/owl#> SELECT *
WHERE { ?x owl:sameas ?y }";
Query query =
QueryFactory.create(queryString);
QueryExecution qe =
QueryExecutionFactory.create(query, tdb);
ResultSet results = qe.execSelect();
+

SPARQL with Jena in Java


ResultSet


Results from a query in a
table-like manner for
SELECT queries. Each row
corresponds to a set of
bindings which fulfil the
conditions of the query.
Access to the results is by
variable name.



getResultVars() >
List<String>



hasNext() > boolean



next() > QuerySolution

String queryString = "PREFIX owl:
<http://www.w3.org/2002/07/owl#> SELECT *
WHERE { ?x owl:sameas ?y }";
Query query =
QueryFactory.create(queryString);
QueryExecution qe =
QueryExecutionFactory.create(query, tdb);
ResultSet results = qe.execSelect();
+

SPARQL with Jena in Java


QuerySolution


A single answer from a
SELECT query



varNames() >
Iterator<String>



contains(varname) > boolean



get(varname) > RDFNode



getResource(varname) >
Resource



getLiteral(varname) > Literal

String queryString = "PREFIX owl:
<http://www.w3.org/2002/07/owl#> SELECT *
WHERE { ?x owl:sameas ?y }";
Query query =
QueryFactory.create(queryString);
QueryExecution qe =
QueryExecutionFactory.create(query, tdb);
ResultSet results = qe.execSelect();
+

SPARQL with Jena in Java


Tools for ResultSet


ResultSetFormatter




asRDF, asText,
asXMLString, asJSON…

Parameterized SPARQL
query

----------------------------------------------------| uri
|
=====================================================
| <http://www.opentox.org/api/1.1#NumericFeature> |
| <http://www.opentox.org/api/1.1#NominalFeature> |
| <http://www.opentox.org/api/1.1#StringFeature> |
| <http://www.opentox.org/api/1.1#Feature>
|
| <http://www.w3.org/2002/07/owl#Nothing>
|
| <http://www.opentox.org/api/1.1#Identifier>
|
| <http://www.opentox.org/api/1.1#ChemicalName> |
| <http://www.opentox.org/api/1.1#IUPACName>
|
| <http://www.opentox.org/api/1.1#InChI>
|
| <http://www.opentox.org/api/1.1#MolecularFormula> |
| <http://www.opentox.org/api/1.1#CASRN>
|
| <http://www.opentox.org/api/1.1#SMILES>
|
-----------------------------------------------------
+
Remote Access
SPARQL Protocol
+

Remote access (SPARQL Protocol)


Means to access query
processors



Compatible with RDF



Abstract specification



Bindings with the following
protocols:


HTTP



SOAP (WSDL)
+

SPARQL Protocol


Main elements:
 operation
 one operation „query‟
 In message
 one sparql query
 zero or more datasets
 Out Message
 SPARQL results document
(for SELECT or ASK)
 An RDF graph serialized in
RDF/XML (for DESCRIBE
and CONSTRUCT)
+

SPARQL Protocol


Means to access query
processors



Compatible with RDF



Abstract specification



Bindings with the following
protocols:


HTTP



SOAP (WSDL)
+

SPARQL Protocol (HTTP bindings)


Uses HTTP GET and POST messages



Encoded query message (HTTP Encode)



Returns document in requested format (or the default)

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?book ?who
WHERE { ?book dc:creator ?who }
+

SPARQL Protocol (HTTP bindings)


Request
GET /sparql/?query=EncodedQuery HTTP/1.1
Host: www.example
User-agent: my-sparql-client/0.1



Response (next page)


(Uses the XML formatting for SPARQL results)
HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:12 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="book"/>
<variable name="who"/>
</head>
<results distinct="false" ordered="false">
<result>
<binding name="book"><uri>http://www.example/book/book5</uri></binding>
<binding name="who"><bnode>r29392923r2922</bnode></binding>
</result>
...
</sparql>
+

SPARQL Protocol (HTTP bindings)


Request (specifying the default graph)

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.other.example/books HTTP/1.1
Host: www.other.example
User-agent: my-sparql-client/0.1



Response (next page)


Runs against the dataset identified by the URI:
http://www.other.example/books
HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:12 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="book"/>
<variable name="who"/>
</head>
<results distinct="false" ordered="false">
<result>
<binding name="book"><uri>http://www.example/book/book5</uri></binding>
<binding name="who"><bnode>r29392923r2922</bnode></binding>
</result>
...
</sparql>
+

SPARQL Protocol (HTTP bindings)


Request with content negotiation

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/jose-foaf.rdf HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1
Accept: text/turtle, application/rdf+xml



Response (next page)


Using the format specified by the client
HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:11 GMT
Server: Apache/1.3.29 (Unix)
Connection: close
Content-Type: text/turtle
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix myfoaf: <http://www.example/jose/foaf.rdf#>.
myfoaf:jose foaf:name "Jose Jimeñez";
foaf:depiction <http://www.example/jose/jose.jpg>;
foaf:nick "Jo";
...
+

SPARQL Protocol (SOAP bindings)


A protocol for accessing web services



Based on HTTP and XML



Messages are passed through envelopes



SPARQL requests and responses are embedded in the
envelopes
+

SPARQL Protocol (SOAP bindings)


Request (note content type, encoding of the query)

POST /services/sparql-query HTTP/1.1
Content-Type: application/soap+xml
Accept: application/soap+xml, multipart/related, text/*
User-Agent: Axis/1.2.1
Host: www.example
SOAPAction: ""
Content-Length: 438
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soapenv:Body>
<query-request xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#">
<query>SELECT ?z {?x ?y ?z . FILTER regex(?z, 'Harry')}</query>
</query-request>
</soapenv:Body>
</soapenv:Envelope>
+

SPARQL Protocol (SOAP bindings)


Response is a SOAP message embedding SPARQL/XML
HTTP/1.1 200 OK
Content-Type: application/soap+xml
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<query-result xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#">
<ns1:sparql xmlns:ns1="http://www.w3.org/2005/sparql-results#">
<ns1:head>
<ns1:variable name="z"/>
</ns1:head>
<ns1:results distinct="false" ordered="false">
<ns1:result>
<ns1:binding name="z">
<ns1:literal>Harry Potter and the Chamber of Secrets</ns1:literal>
</ns1:binding>
</ns1:result>
...
</ns1:results>
</ns1:sparql>
</query-result>
</soapenv:Body>
</soapenv:Envelope>
+

SPARQL Protocol (SOAP bindings)


Response is a SOAP message embedding SPARQL/XML
HTTP/1.1 200 OK
Content-Type: application/soap+xml
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<query-result xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#">
<ns1:sparql xmlns:ns1="http://www.w3.org/2005/sparql-results#">
<ns1:head>
<ns1:variable name="z"/>
</ns1:head>
<ns1:results distinct="false" ordered="false">
<ns1:result>
<ns1:binding name="z">
<ns1:literal>Harry Potter and the Chamber of Secrets</ns1:literal>
</ns1:binding>
</ns1:result>
...
</ns1:results>
</ns1:sparql>
</query-result>
</soapenv:Body>
</soapenv:Envelope>
+

Remote access (SPARQLendpoints)


A SPARQL processor that is accessible
through the SPARQL protocol



Many open endpoints:
http://www.w3.org/wiki/SparqlEndpoints



Often accessible through query forms, e.g.:


Dbpedia:
http://dbpedia.org/sparql



BBC programme information:
http://lod.openlinksw.com/sparql/
+

Remote access (SPARQLendpoints)


Using implementing the SPARQL protocol
on your own, or



Using a library that supports the SPARQL
protocol:


Python: RDFLib



PHP: librdf, RAP



JavaScript



Java: Jena, Sesame, etc
+

Remote access (SPARQLendpoints with Jena)


In Jena:
String location = “http://dbpedia.org/sparql”;
String query = “PREFIX …. SELECT …. “;
QueryExecution x = QueryExecutionFactory.sparqlService(location, query);
ResultSet results = x.execSelect();
ResultSetFormatter.out(System.out, results);



The library hides all details about the protocol. You can use the
normal API calls and objects to work with the results.
+
Remote Access
Creating SPARQL endpoints
+

Creating a SPARQL end-point


Most triple stores include a HTTP implementation of the
SPARQL protocol



Set up depends on the system



Jena‟s way is by mean of JOSEKI now (FUSEKI)
+

Setting up Joseki


Package comes with





Server JARs
Scripts to manage the server and data

Once the system is running, the control panel can be found at:
http://localhost:3030/
+

Running a Fuseki Server


fuseki-server --mem /DatasetPathName
create an empty, in-memory dataset



fuseki-server --file=FILE /DatasetPathName
create an empty, in-memory dataset and load FILE into it



fuseki-server --loc=DB /DatasetPathName
Use an existing TDB database, or create one if it doesn‟t exist.



fuseki-server --config=ConfigFile
construct one ore more endpoints based on the config. desc.
+

Server URI scheme


http://*host*/dataset/query
the SPARQL query endpoint.



http://*host*/dataset/update
the SPARQL Update language endpoint.



http://*host*/dataset/data
the SPARQL Graph Store Protocol endpoint.



http://*host*/dataset/upload
the file upload endpoint.

Default port 3030
+

Script Control


Load data
s-put http://localhost:3030/ds/data default books.ttl



Get it back
s-get http://localhost:3030/ds/data default



Query it with SPARQL using the .../query endpoint.
s-query --service http://localhost:3030/ds/query 'SELECT * {?s ?p ?o}'



Update it with SPARQL using the .../update endpoint.
s-update --service http://localhost:3030/ds/update 'CLEAR DEFAULT'
+

Summary


Covered:



SPARQL endpoints



Creating and managing
endpoints




SPARQL through APIS

HTTP Protocol

Later


Transforming data into RDF



Virtual RDF (R2RML, D2RQ)
+

See also


http://www.w3.org/TR/rdf-sparql-protocol/



http://jena.apache.org/documentation/serving_data/



Not discussed here: Serving LOD with dereferencable URI‟s
and the SPARQL protocol
+
Sesame

More Related Content

What's hot

Using Apache Solr
Using Apache SolrUsing Apache Solr
Using Apache Solr
pittaya
 
Jena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for JavaJena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for Java
Aleksander Pohl
 
Twinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query ToolTwinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query Tool
Leigh Dodds
 
From SQL to SPARQL
From SQL to SPARQLFrom SQL to SPARQL
From SQL to SPARQL
George Roth
 
Tutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component pluginTutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component plugin
searchbox-com
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conference
Erik Hatcher
 
An Introduction to the Jena API
An Introduction to the Jena APIAn Introduction to the Jena API
An Introduction to the Jena API
Craig Trim
 
Apache Solr Workshop
Apache Solr WorkshopApache Solr Workshop
Apache Solr Workshop
Saumitra Srivastav
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & Practice
Adriel Café
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query Parsing
Erik Hatcher
 
SPARQL 1.1 Status
SPARQL 1.1 StatusSPARQL 1.1 Status
SPARQL 1.1 Status
LeeFeigenbaum
 
Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)
Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)
Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)
Alexandre Rafalovitch
 
Object Relational Mapping in PHP
Object Relational Mapping in PHPObject Relational Mapping in PHP
Object Relational Mapping in PHP
Rob Knight
 
Java and XML
Java and XMLJava and XML
Java and XML
Raji Ghawi
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development Tutorial
Erik Hatcher
 
Lucene's Latest (for Libraries)
Lucene's Latest (for Libraries)Lucene's Latest (for Libraries)
Lucene's Latest (for Libraries)
Erik Hatcher
 
Building your own search engine with Apache Solr
Building your own search engine with Apache SolrBuilding your own search engine with Apache Solr
Building your own search engine with Apache Solr
Biogeeks
 
Jena framework
Jena frameworkJena framework
Jena framework
Marakana Inc.
 
Web data from R
Web data from RWeb data from R
Web data from R
schamber
 
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
Erik Hatcher
 

What's hot (20)

Using Apache Solr
Using Apache SolrUsing Apache Solr
Using Apache Solr
 
Jena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for JavaJena – A Semantic Web Framework for Java
Jena – A Semantic Web Framework for Java
 
Twinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query ToolTwinkle: A SPARQL Query Tool
Twinkle: A SPARQL Query Tool
 
From SQL to SPARQL
From SQL to SPARQLFrom SQL to SPARQL
From SQL to SPARQL
 
Tutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component pluginTutorial on developing a Solr search component plugin
Tutorial on developing a Solr search component plugin
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conference
 
An Introduction to the Jena API
An Introduction to the Jena APIAn Introduction to the Jena API
An Introduction to the Jena API
 
Apache Solr Workshop
Apache Solr WorkshopApache Solr Workshop
Apache Solr Workshop
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & Practice
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query Parsing
 
SPARQL 1.1 Status
SPARQL 1.1 StatusSPARQL 1.1 Status
SPARQL 1.1 Status
 
Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)
Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)
Rebuilding Solr 6 examples - layer by layer (LuceneSolrRevolution 2016)
 
Object Relational Mapping in PHP
Object Relational Mapping in PHPObject Relational Mapping in PHP
Object Relational Mapping in PHP
 
Java and XML
Java and XMLJava and XML
Java and XML
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development Tutorial
 
Lucene's Latest (for Libraries)
Lucene's Latest (for Libraries)Lucene's Latest (for Libraries)
Lucene's Latest (for Libraries)
 
Building your own search engine with Apache Solr
Building your own search engine with Apache SolrBuilding your own search engine with Apache Solr
Building your own search engine with Apache Solr
 
Jena framework
Jena frameworkJena framework
Jena framework
 
Web data from R
Web data from RWeb data from R
Web data from R
 
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)code4lib 2011 preconference: What's New in Solr (since 1.4.1)
code4lib 2011 preconference: What's New in Solr (since 1.4.1)
 

Similar to 4 sw architectures and sparql

SWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQLSWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQL
Mariano Rodriguez-Muro
 
Sparql a simple knowledge query
Sparql  a simple knowledge querySparql  a simple knowledge query
Sparql a simple knowledge query
Stanley Wang
 
The Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLThe Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQL
Myungjin Lee
 
2008 11 13 Hcls Call
2008 11 13 Hcls Call2008 11 13 Hcls Call
2008 11 13 Hcls Call
Jun Zhao
 
2009 Dils Flyweb
2009 Dils Flyweb2009 Dils Flyweb
2009 Dils Flyweb
Jun Zhao
 
SPARQLing cocktails
SPARQLing cocktailsSPARQLing cocktails
SPARQLing cocktails
Timea Turdean
 
Data shapes-test-suite
Data shapes-test-suiteData shapes-test-suite
Data shapes-test-suite
Jose Emilio Labra Gayo
 
070517 Jena
070517 Jena070517 Jena
070517 Jena
yuhana
 
Introduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applicationsIntroduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applications
Fulvio Corno
 
Querying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQLQuerying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQL
Emanuele Della Valle
 
Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)
Olaf Hartig
 
2010 03 Lodoxf Openflydata
2010 03 Lodoxf Openflydata2010 03 Lodoxf Openflydata
2010 03 Lodoxf Openflydata
Jun Zhao
 
Jdbc[1]
Jdbc[1]Jdbc[1]
Jdbc[1]
Fulvio Corno
 
JDBC programming
JDBC programmingJDBC programming
JDBC programming
Fulvio Corno
 
Practical OData
Practical ODataPractical OData
Practical OData
Vagif Abilov
 
DistributingSoftwareKnowledgeForDevOps
DistributingSoftwareKnowledgeForDevOpsDistributingSoftwareKnowledgeForDevOps
DistributingSoftwareKnowledgeForDevOps
Paul Worrall
 
SWT Lecture Session 4 - Sesame
SWT Lecture Session 4 - SesameSWT Lecture Session 4 - Sesame
SWT Lecture Session 4 - Sesame
Mariano Rodriguez-Muro
 
4 sesame
4 sesame4 sesame
Introducing JDBC for SPARQL
Introducing JDBC for SPARQLIntroducing JDBC for SPARQL
Introducing JDBC for SPARQL
Rob Vesse
 
The Atmosphere Framework
The Atmosphere FrameworkThe Atmosphere Framework
The Atmosphere Framework
jfarcand
 

Similar to 4 sw architectures and sparql (20)

SWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQLSWT Lecture Session 4 - SW architectures and SPARQL
SWT Lecture Session 4 - SW architectures and SPARQL
 
Sparql a simple knowledge query
Sparql  a simple knowledge querySparql  a simple knowledge query
Sparql a simple knowledge query
 
The Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLThe Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQL
 
2008 11 13 Hcls Call
2008 11 13 Hcls Call2008 11 13 Hcls Call
2008 11 13 Hcls Call
 
2009 Dils Flyweb
2009 Dils Flyweb2009 Dils Flyweb
2009 Dils Flyweb
 
SPARQLing cocktails
SPARQLing cocktailsSPARQLing cocktails
SPARQLing cocktails
 
Data shapes-test-suite
Data shapes-test-suiteData shapes-test-suite
Data shapes-test-suite
 
070517 Jena
070517 Jena070517 Jena
070517 Jena
 
Introduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applicationsIntroduction to JDBC and database access in web applications
Introduction to JDBC and database access in web applications
 
Querying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQLQuerying the Semantic Web with SPARQL
Querying the Semantic Web with SPARQL
 
Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)
 
2010 03 Lodoxf Openflydata
2010 03 Lodoxf Openflydata2010 03 Lodoxf Openflydata
2010 03 Lodoxf Openflydata
 
Jdbc[1]
Jdbc[1]Jdbc[1]
Jdbc[1]
 
JDBC programming
JDBC programmingJDBC programming
JDBC programming
 
Practical OData
Practical ODataPractical OData
Practical OData
 
DistributingSoftwareKnowledgeForDevOps
DistributingSoftwareKnowledgeForDevOpsDistributingSoftwareKnowledgeForDevOps
DistributingSoftwareKnowledgeForDevOps
 
SWT Lecture Session 4 - Sesame
SWT Lecture Session 4 - SesameSWT Lecture Session 4 - Sesame
SWT Lecture Session 4 - Sesame
 
4 sesame
4 sesame4 sesame
4 sesame
 
Introducing JDBC for SPARQL
Introducing JDBC for SPARQLIntroducing JDBC for SPARQL
Introducing JDBC for SPARQL
 
The Atmosphere Framework
The Atmosphere FrameworkThe Atmosphere Framework
The Atmosphere Framework
 

More from Mariano Rodriguez-Muro

SWT Lecture Session 2 - RDF
SWT Lecture Session 2 - RDFSWT Lecture Session 2 - RDF
SWT Lecture Session 2 - RDF
Mariano Rodriguez-Muro
 
SWT Lab 3
SWT Lab 3SWT Lab 3
SWT Lab 5
SWT Lab 5SWT Lab 5
SWT Lab 2
SWT Lab 2SWT Lab 2
SWT Lab 1
SWT Lab 1SWT Lab 1
SWT Lecture Session 11 - R2RML part 2
SWT Lecture Session 11 - R2RML part 2SWT Lecture Session 11 - R2RML part 2
SWT Lecture Session 11 - R2RML part 2
Mariano Rodriguez-Muro
 
SWT Lecture Session 10 R2RML Part 1
SWT Lecture Session 10 R2RML Part 1SWT Lecture Session 10 R2RML Part 1
SWT Lecture Session 10 R2RML Part 1
Mariano Rodriguez-Muro
 
SWT Lecture Session 9 - RDB2RDF direct mapping
SWT Lecture Session 9 - RDB2RDF direct mappingSWT Lecture Session 9 - RDB2RDF direct mapping
SWT Lecture Session 9 - RDB2RDF direct mapping
Mariano Rodriguez-Muro
 
SWT Lecture Session 8 - Rules
SWT Lecture Session 8 - RulesSWT Lecture Session 8 - Rules
SWT Lecture Session 8 - Rules
Mariano Rodriguez-Muro
 
SWT Lecture Session 8 - Inference in jena
SWT Lecture Session 8 - Inference in jenaSWT Lecture Session 8 - Inference in jena
SWT Lecture Session 8 - Inference in jena
Mariano Rodriguez-Muro
 
SWT Lecture Session 7 - Advanced uses of RDFS
SWT Lecture Session 7 - Advanced uses of RDFSSWT Lecture Session 7 - Advanced uses of RDFS
SWT Lecture Session 7 - Advanced uses of RDFS
Mariano Rodriguez-Muro
 
SWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfs
SWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfsSWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfs
SWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfs
Mariano Rodriguez-Muro
 
SWT Lecture Session 5 - RDFS
SWT Lecture Session 5 - RDFSSWT Lecture Session 5 - RDFS
SWT Lecture Session 5 - RDFS
Mariano Rodriguez-Muro
 
SWT Lecture Session 3 - SPARQL
SWT Lecture Session 3 - SPARQLSWT Lecture Session 3 - SPARQL
SWT Lecture Session 3 - SPARQL
Mariano Rodriguez-Muro
 
7 advanced uses of rdfs
7 advanced uses of rdfs7 advanced uses of rdfs
7 advanced uses of rdfs
Mariano Rodriguez-Muro
 
5 rdfs
5 rdfs5 rdfs
SWT Lecture Session 1 - Introduction
SWT Lecture Session 1 - IntroductionSWT Lecture Session 1 - Introduction
SWT Lecture Session 1 - Introduction
Mariano Rodriguez-Muro
 
ontop: A tutorial
ontop: A tutorialontop: A tutorial
ontop: A tutorial
Mariano Rodriguez-Muro
 
Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...
Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...
Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...
Mariano Rodriguez-Muro
 
Introduction to query rewriting optimisation with dependencies
Introduction to query rewriting optimisation with dependenciesIntroduction to query rewriting optimisation with dependencies
Introduction to query rewriting optimisation with dependencies
Mariano Rodriguez-Muro
 

More from Mariano Rodriguez-Muro (20)

SWT Lecture Session 2 - RDF
SWT Lecture Session 2 - RDFSWT Lecture Session 2 - RDF
SWT Lecture Session 2 - RDF
 
SWT Lab 3
SWT Lab 3SWT Lab 3
SWT Lab 3
 
SWT Lab 5
SWT Lab 5SWT Lab 5
SWT Lab 5
 
SWT Lab 2
SWT Lab 2SWT Lab 2
SWT Lab 2
 
SWT Lab 1
SWT Lab 1SWT Lab 1
SWT Lab 1
 
SWT Lecture Session 11 - R2RML part 2
SWT Lecture Session 11 - R2RML part 2SWT Lecture Session 11 - R2RML part 2
SWT Lecture Session 11 - R2RML part 2
 
SWT Lecture Session 10 R2RML Part 1
SWT Lecture Session 10 R2RML Part 1SWT Lecture Session 10 R2RML Part 1
SWT Lecture Session 10 R2RML Part 1
 
SWT Lecture Session 9 - RDB2RDF direct mapping
SWT Lecture Session 9 - RDB2RDF direct mappingSWT Lecture Session 9 - RDB2RDF direct mapping
SWT Lecture Session 9 - RDB2RDF direct mapping
 
SWT Lecture Session 8 - Rules
SWT Lecture Session 8 - RulesSWT Lecture Session 8 - Rules
SWT Lecture Session 8 - Rules
 
SWT Lecture Session 8 - Inference in jena
SWT Lecture Session 8 - Inference in jenaSWT Lecture Session 8 - Inference in jena
SWT Lecture Session 8 - Inference in jena
 
SWT Lecture Session 7 - Advanced uses of RDFS
SWT Lecture Session 7 - Advanced uses of RDFSSWT Lecture Session 7 - Advanced uses of RDFS
SWT Lecture Session 7 - Advanced uses of RDFS
 
SWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfs
SWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfsSWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfs
SWT Lecture Session 6 - RDFS semantics, inference techniques, sesame rdfs
 
SWT Lecture Session 5 - RDFS
SWT Lecture Session 5 - RDFSSWT Lecture Session 5 - RDFS
SWT Lecture Session 5 - RDFS
 
SWT Lecture Session 3 - SPARQL
SWT Lecture Session 3 - SPARQLSWT Lecture Session 3 - SPARQL
SWT Lecture Session 3 - SPARQL
 
7 advanced uses of rdfs
7 advanced uses of rdfs7 advanced uses of rdfs
7 advanced uses of rdfs
 
5 rdfs
5 rdfs5 rdfs
5 rdfs
 
SWT Lecture Session 1 - Introduction
SWT Lecture Session 1 - IntroductionSWT Lecture Session 1 - Introduction
SWT Lecture Session 1 - Introduction
 
ontop: A tutorial
ontop: A tutorialontop: A tutorial
ontop: A tutorial
 
Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...
Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...
Stanford'12 Intro to Ontology Based Data Access for RDBMS through query rewri...
 
Introduction to query rewriting optimisation with dependencies
Introduction to query rewriting optimisation with dependenciesIntroduction to query rewriting optimisation with dependencies
Introduction to query rewriting optimisation with dependencies
 

Recently uploaded

Nutrition Inc FY 2024, 4 - Hour Training
Nutrition Inc FY 2024, 4 - Hour TrainingNutrition Inc FY 2024, 4 - Hour Training
Nutrition Inc FY 2024, 4 - Hour Training
melliereed
 
BIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptx
BIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptxBIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptx
BIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptx
RidwanHassanYusuf
 
Temple of Asclepius in Thrace. Excavation results
Temple of Asclepius in Thrace. Excavation resultsTemple of Asclepius in Thrace. Excavation results
Temple of Asclepius in Thrace. Excavation results
Krassimira Luka
 
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
mulvey2
 
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
PECB
 
Standardized tool for Intelligence test.
Standardized tool for Intelligence test.Standardized tool for Intelligence test.
Standardized tool for Intelligence test.
deepaannamalai16
 
Bonku-Babus-Friend by Sathyajith Ray (9)
Bonku-Babus-Friend by Sathyajith Ray  (9)Bonku-Babus-Friend by Sathyajith Ray  (9)
Bonku-Babus-Friend by Sathyajith Ray (9)
nitinpv4ai
 
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.pptLevel 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
Henry Hollis
 
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Fajar Baskoro
 
Walmart Business+ and Spark Good for Nonprofits.pdf
Walmart Business+ and Spark Good for Nonprofits.pdfWalmart Business+ and Spark Good for Nonprofits.pdf
Walmart Business+ and Spark Good for Nonprofits.pdf
TechSoup
 
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptxNEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
iammrhaywood
 
math operations ued in python and all used
math operations ued in python and all usedmath operations ued in python and all used
math operations ued in python and all used
ssuser13ffe4
 
Chapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptxChapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptx
Denish Jangid
 
SWOT analysis in the project Keeping the Memory @live.pptx
SWOT analysis in the project Keeping the Memory @live.pptxSWOT analysis in the project Keeping the Memory @live.pptx
SWOT analysis in the project Keeping the Memory @live.pptx
zuzanka
 
مصحف القراءات العشر أعد أحرف الخلاف سمير بسيوني.pdf
مصحف القراءات العشر   أعد أحرف الخلاف سمير بسيوني.pdfمصحف القراءات العشر   أعد أحرف الخلاف سمير بسيوني.pdf
مصحف القراءات العشر أعد أحرف الخلاف سمير بسيوني.pdf
سمير بسيوني
 
Film vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movieFilm vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movie
Nicholas Montgomery
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
Nguyen Thanh Tu Collection
 
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
GeorgeMilliken2
 
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) Curriculum
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) CurriculumPhilippine Edukasyong Pantahanan at Pangkabuhayan (EPP) Curriculum
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) Curriculum
MJDuyan
 
writing about opinions about Australia the movie
writing about opinions about Australia the moviewriting about opinions about Australia the movie
writing about opinions about Australia the movie
Nicholas Montgomery
 

Recently uploaded (20)

Nutrition Inc FY 2024, 4 - Hour Training
Nutrition Inc FY 2024, 4 - Hour TrainingNutrition Inc FY 2024, 4 - Hour Training
Nutrition Inc FY 2024, 4 - Hour Training
 
BIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptx
BIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptxBIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptx
BIOLOGY NATIONAL EXAMINATION COUNCIL (NECO) 2024 PRACTICAL MANUAL.pptx
 
Temple of Asclepius in Thrace. Excavation results
Temple of Asclepius in Thrace. Excavation resultsTemple of Asclepius in Thrace. Excavation results
Temple of Asclepius in Thrace. Excavation results
 
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
 
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...
 
Standardized tool for Intelligence test.
Standardized tool for Intelligence test.Standardized tool for Intelligence test.
Standardized tool for Intelligence test.
 
Bonku-Babus-Friend by Sathyajith Ray (9)
Bonku-Babus-Friend by Sathyajith Ray  (9)Bonku-Babus-Friend by Sathyajith Ray  (9)
Bonku-Babus-Friend by Sathyajith Ray (9)
 
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.pptLevel 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
 
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
 
Walmart Business+ and Spark Good for Nonprofits.pdf
Walmart Business+ and Spark Good for Nonprofits.pdfWalmart Business+ and Spark Good for Nonprofits.pdf
Walmart Business+ and Spark Good for Nonprofits.pdf
 
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptxNEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
 
math operations ued in python and all used
math operations ued in python and all usedmath operations ued in python and all used
math operations ued in python and all used
 
Chapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptxChapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptx
 
SWOT analysis in the project Keeping the Memory @live.pptx
SWOT analysis in the project Keeping the Memory @live.pptxSWOT analysis in the project Keeping the Memory @live.pptx
SWOT analysis in the project Keeping the Memory @live.pptx
 
مصحف القراءات العشر أعد أحرف الخلاف سمير بسيوني.pdf
مصحف القراءات العشر   أعد أحرف الخلاف سمير بسيوني.pdfمصحف القراءات العشر   أعد أحرف الخلاف سمير بسيوني.pdf
مصحف القراءات العشر أعد أحرف الخلاف سمير بسيوني.pdf
 
Film vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movieFilm vocab for eal 3 students: Australia the movie
Film vocab for eal 3 students: Australia the movie
 
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
BÀI TẬP BỔ TRỢ TIẾNG ANH 8 CẢ NĂM - GLOBAL SUCCESS - NĂM HỌC 2023-2024 (CÓ FI...
 
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
 
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) Curriculum
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) CurriculumPhilippine Edukasyong Pantahanan at Pangkabuhayan (EPP) Curriculum
Philippine Edukasyong Pantahanan at Pangkabuhayan (EPP) Curriculum
 
writing about opinions about Australia the movie
writing about opinions about Australia the moviewriting about opinions about Australia the movie
writing about opinions about Australia the movie
 

4 sw architectures and sparql

  • 1. + SW Software architecture and SPARQL Mariano Rodriguez-Muro, Free University of Bozen-Bolzano
  • 2. + Disclaimer  License   This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License (http://creativecommons.org/licenses/by-sa/3.0/) Material for these slides has been taken from  W3C pages for SPARQL  Jena and Sesame‟s documentation
  • 3. + Summary  Semantic web idea, and overview of SWT  RDF data model  Jena intro  SPARQL protocol
  • 4. + Reading material  Semantic Web Programming Part III, Chapter 8  FUSEKI tutorial
  • 6. + Architecture of SW applications  Local access   The RDF graph is stored locally and is accessible through an API Mixed access  Manual (hard coded)  Federated Queries  Traversal  Remote access  The RDF graph is owned by a third party and expossed through an SPARQLendpoint or a web service
  • 8. + Local access  Data is managed locally by means of a triple store (e.g., Jena, Sesame)  Data may be:  RDF (e.g., local copies of Linked Data  Legacy data transformed into RDF (more in a few)
  • 9. + Local access(triple stores)  Possible triple stores:  Jena TDB, SDB, Sesame, 4Store, …  Virtuoso, OWLIM, AllegroGra ph,…  3rd party data:  From DUMPs  http://wiki.dbpedia.org/  http://pro.europeana.eu/dat asets  Crawling (e.g, LDSpider)  Legacy transformation
  • 10. + Local access (legacy sources)  3rd party tools to transform  CSV  XLS, etc.  XSLT to transform XML  Mapping based (R2RML, D2RQ)  3rd party tools to transform RDBMS into RDF dumps  3rd party tools to expose RDBMS as virtual RDF  All of these will be covered in the course
  • 11. + Local access (local queries)  All triple stores offer SPARQL execution  Accessible through console tools (mysql and psql style) bin/sparql --data=data-mydata.rdf --query=my-sparql-query.rq  Through their own API
  • 12. + SPARQL with Jena in Java  Key API objects  Query  QueryFactory  QueryExecutionFactory  QueryExecution  execAsk() > boolean  execConstruct() > Model  execDescribe() > Model  execSelect() > ResultSet String queryString = "PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameas ?y }"; Query query = QueryFactory.create(queryString); QueryExecution qe = QueryExecutionFactory.create(query, tdb); ResultSet results = qe.execSelect();
  • 13. + SPARQL with Jena in Java  ResultSet  Results from a query in a table-like manner for SELECT queries. Each row corresponds to a set of bindings which fulfil the conditions of the query. Access to the results is by variable name.  getResultVars() > List<String>  hasNext() > boolean  next() > QuerySolution String queryString = "PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameas ?y }"; Query query = QueryFactory.create(queryString); QueryExecution qe = QueryExecutionFactory.create(query, tdb); ResultSet results = qe.execSelect();
  • 14. + SPARQL with Jena in Java  QuerySolution  A single answer from a SELECT query  varNames() > Iterator<String>  contains(varname) > boolean  get(varname) > RDFNode  getResource(varname) > Resource  getLiteral(varname) > Literal String queryString = "PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameas ?y }"; Query query = QueryFactory.create(queryString); QueryExecution qe = QueryExecutionFactory.create(query, tdb); ResultSet results = qe.execSelect();
  • 15. + SPARQL with Jena in Java  Tools for ResultSet  ResultSetFormatter   asRDF, asText, asXMLString, asJSON… Parameterized SPARQL query ----------------------------------------------------| uri | ===================================================== | <http://www.opentox.org/api/1.1#NumericFeature> | | <http://www.opentox.org/api/1.1#NominalFeature> | | <http://www.opentox.org/api/1.1#StringFeature> | | <http://www.opentox.org/api/1.1#Feature> | | <http://www.w3.org/2002/07/owl#Nothing> | | <http://www.opentox.org/api/1.1#Identifier> | | <http://www.opentox.org/api/1.1#ChemicalName> | | <http://www.opentox.org/api/1.1#IUPACName> | | <http://www.opentox.org/api/1.1#InChI> | | <http://www.opentox.org/api/1.1#MolecularFormula> | | <http://www.opentox.org/api/1.1#CASRN> | | <http://www.opentox.org/api/1.1#SMILES> | -----------------------------------------------------
  • 17. + Remote access (SPARQL Protocol)  Means to access query processors  Compatible with RDF  Abstract specification  Bindings with the following protocols:  HTTP  SOAP (WSDL)
  • 18. + SPARQL Protocol  Main elements:  operation  one operation „query‟  In message  one sparql query  zero or more datasets  Out Message  SPARQL results document (for SELECT or ASK)  An RDF graph serialized in RDF/XML (for DESCRIBE and CONSTRUCT)
  • 19. + SPARQL Protocol  Means to access query processors  Compatible with RDF  Abstract specification  Bindings with the following protocols:  HTTP  SOAP (WSDL)
  • 20. + SPARQL Protocol (HTTP bindings)  Uses HTTP GET and POST messages  Encoded query message (HTTP Encode)  Returns document in requested format (or the default) PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?book ?who WHERE { ?book dc:creator ?who }
  • 21. + SPARQL Protocol (HTTP bindings)  Request GET /sparql/?query=EncodedQuery HTTP/1.1 Host: www.example User-agent: my-sparql-client/0.1  Response (next page)  (Uses the XML formatting for SPARQL results)
  • 22. HTTP/1.1 200 OK Date: Fri, 06 May 2005 20:55:12 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="book"/> <variable name="who"/> </head> <results distinct="false" ordered="false"> <result> <binding name="book"><uri>http://www.example/book/book5</uri></binding> <binding name="who"><bnode>r29392923r2922</bnode></binding> </result> ... </sparql>
  • 23. + SPARQL Protocol (HTTP bindings)  Request (specifying the default graph) GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.other.example/books HTTP/1.1 Host: www.other.example User-agent: my-sparql-client/0.1  Response (next page)  Runs against the dataset identified by the URI: http://www.other.example/books
  • 24. HTTP/1.1 200 OK Date: Fri, 06 May 2005 20:55:12 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/sparql-results+xml <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="book"/> <variable name="who"/> </head> <results distinct="false" ordered="false"> <result> <binding name="book"><uri>http://www.example/book/book5</uri></binding> <binding name="who"><bnode>r29392923r2922</bnode></binding> </result> ... </sparql>
  • 25. + SPARQL Protocol (HTTP bindings)  Request with content negotiation GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/jose-foaf.rdf HTTP/1.1 Host: www.example User-agent: sparql-client/0.1 Accept: text/turtle, application/rdf+xml  Response (next page)  Using the format specified by the client
  • 26. HTTP/1.1 200 OK Date: Fri, 06 May 2005 20:55:11 GMT Server: Apache/1.3.29 (Unix) Connection: close Content-Type: text/turtle @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix myfoaf: <http://www.example/jose/foaf.rdf#>. myfoaf:jose foaf:name "Jose Jimeñez"; foaf:depiction <http://www.example/jose/jose.jpg>; foaf:nick "Jo"; ...
  • 27. + SPARQL Protocol (SOAP bindings)  A protocol for accessing web services  Based on HTTP and XML  Messages are passed through envelopes  SPARQL requests and responses are embedded in the envelopes
  • 28. + SPARQL Protocol (SOAP bindings)  Request (note content type, encoding of the query) POST /services/sparql-query HTTP/1.1 Content-Type: application/soap+xml Accept: application/soap+xml, multipart/related, text/* User-Agent: Axis/1.2.1 Host: www.example SOAPAction: "" Content-Length: 438 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> <soapenv:Body> <query-request xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#"> <query>SELECT ?z {?x ?y ?z . FILTER regex(?z, 'Harry')}</query> </query-request> </soapenv:Body> </soapenv:Envelope>
  • 29. + SPARQL Protocol (SOAP bindings)  Response is a SOAP message embedding SPARQL/XML HTTP/1.1 200 OK Content-Type: application/soap+xml <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <query-result xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#"> <ns1:sparql xmlns:ns1="http://www.w3.org/2005/sparql-results#"> <ns1:head> <ns1:variable name="z"/> </ns1:head> <ns1:results distinct="false" ordered="false"> <ns1:result> <ns1:binding name="z"> <ns1:literal>Harry Potter and the Chamber of Secrets</ns1:literal> </ns1:binding> </ns1:result> ... </ns1:results> </ns1:sparql> </query-result> </soapenv:Body> </soapenv:Envelope>
  • 30. + SPARQL Protocol (SOAP bindings)  Response is a SOAP message embedding SPARQL/XML HTTP/1.1 200 OK Content-Type: application/soap+xml <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <query-result xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#"> <ns1:sparql xmlns:ns1="http://www.w3.org/2005/sparql-results#"> <ns1:head> <ns1:variable name="z"/> </ns1:head> <ns1:results distinct="false" ordered="false"> <ns1:result> <ns1:binding name="z"> <ns1:literal>Harry Potter and the Chamber of Secrets</ns1:literal> </ns1:binding> </ns1:result> ... </ns1:results> </ns1:sparql> </query-result> </soapenv:Body> </soapenv:Envelope>
  • 31. + Remote access (SPARQLendpoints)  A SPARQL processor that is accessible through the SPARQL protocol  Many open endpoints: http://www.w3.org/wiki/SparqlEndpoints  Often accessible through query forms, e.g.:  Dbpedia: http://dbpedia.org/sparql  BBC programme information: http://lod.openlinksw.com/sparql/
  • 32. + Remote access (SPARQLendpoints)  Using implementing the SPARQL protocol on your own, or  Using a library that supports the SPARQL protocol:  Python: RDFLib  PHP: librdf, RAP  JavaScript  Java: Jena, Sesame, etc
  • 33. + Remote access (SPARQLendpoints with Jena)  In Jena: String location = “http://dbpedia.org/sparql”; String query = “PREFIX …. SELECT …. “; QueryExecution x = QueryExecutionFactory.sparqlService(location, query); ResultSet results = x.execSelect(); ResultSetFormatter.out(System.out, results);  The library hides all details about the protocol. You can use the normal API calls and objects to work with the results.
  • 35. + Creating a SPARQL end-point  Most triple stores include a HTTP implementation of the SPARQL protocol  Set up depends on the system  Jena‟s way is by mean of JOSEKI now (FUSEKI)
  • 36. + Setting up Joseki  Package comes with    Server JARs Scripts to manage the server and data Once the system is running, the control panel can be found at: http://localhost:3030/
  • 37. + Running a Fuseki Server  fuseki-server --mem /DatasetPathName create an empty, in-memory dataset  fuseki-server --file=FILE /DatasetPathName create an empty, in-memory dataset and load FILE into it  fuseki-server --loc=DB /DatasetPathName Use an existing TDB database, or create one if it doesn‟t exist.  fuseki-server --config=ConfigFile construct one ore more endpoints based on the config. desc.
  • 38. + Server URI scheme  http://*host*/dataset/query the SPARQL query endpoint.  http://*host*/dataset/update the SPARQL Update language endpoint.  http://*host*/dataset/data the SPARQL Graph Store Protocol endpoint.  http://*host*/dataset/upload the file upload endpoint. Default port 3030
  • 39. + Script Control  Load data s-put http://localhost:3030/ds/data default books.ttl  Get it back s-get http://localhost:3030/ds/data default  Query it with SPARQL using the .../query endpoint. s-query --service http://localhost:3030/ds/query 'SELECT * {?s ?p ?o}'  Update it with SPARQL using the .../update endpoint. s-update --service http://localhost:3030/ds/update 'CLEAR DEFAULT'
  • 40. + Summary  Covered:   SPARQL endpoints  Creating and managing endpoints   SPARQL through APIS HTTP Protocol Later  Transforming data into RDF  Virtual RDF (R2RML, D2RQ)