SlideShare a Scribd company logo
1 of 42
+

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

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
 
Solr Black Belt Pre-conference
Solr Black Belt Pre-conferenceSolr Black Belt Pre-conference
Solr Black Belt Pre-conference
Erik Hatcher
 
Solr Query Parsing
Solr Query ParsingSolr Query Parsing
Solr Query Parsing
Erik Hatcher
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development Tutorial
Erik Hatcher
 
Web data from R
Web data from RWeb data from R
Web data from R
schamber
 

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
 
2009 Dils Flyweb
2009 Dils Flyweb2009 Dils Flyweb
2009 Dils Flyweb
Jun Zhao
 
070517 Jena
070517 Jena070517 Jena
070517 Jena
yuhana
 
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
 
2010 03 Lodoxf Openflydata
2010 03 Lodoxf Openflydata2010 03 Lodoxf Openflydata
2010 03 Lodoxf Openflydata
Jun Zhao
 
DistributingSoftwareKnowledgeForDevOps
DistributingSoftwareKnowledgeForDevOpsDistributingSoftwareKnowledgeForDevOps
DistributingSoftwareKnowledgeForDevOps
Paul Worrall
 

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 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 - 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
 

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

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Recently uploaded (20)

Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 

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)