+

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://...
+

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
...
+
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 access(triple stores)


Possible triple stores:
 Jena TDB, SDB, Sesame,
4Store,…
 Virtuoso, OWLIM,
AllegroGrap...
+

Local access (legacy sources)


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



XSLT to transform XML



Mapping b...
+

Local access (local queries)


All triple stores offer SPARQL
execution


Accessible through console
tools (mysql and...
+

SPARQL with Jena in Java


Key API objects


Query



QueryFactory



QueryExecutionFactory



QueryExecution


e...
+

SPARQL with Jena in Java


ResultSet


Results from a query in a
table-like manner for
SELECT queries. Each row
corre...
+

SPARQL with Jena in Java


QuerySolution


A single answer from a
SELECT query



varNames() >
Iterator<String>



...
+

SPARQL with Jena in Java


Tools for ResultSet


ResultSetFormatter




asRDF, asText,
asXMLString, asJSON…

Parame...
+
Remote Access
SPARQL Protocol
+

Remote access (SPARQL Protocol)


Means to access query
processors



Compatible with RDF



Abstract specification
...
+

SPARQL Protocol


Main elements:
 operation
 one operation „query‟
 In message
 one sparql query
 zero or more da...
+

SPARQL Protocol


Means to access query
processors



Compatible with RDF



Abstract specification



Bindings wit...
+

SPARQL Protocol (HTTP bindings)


Uses HTTP GET and POST messages



Encoded query message (HTTP Encode)



Returns ...
+

SPARQL Protocol (HTTP bindings)


Request
GET /sparql/?query=EncodedQuery HTTP/1.1
Host: www.example
User-agent: my-sp...
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
Con...
+

SPARQL Protocol (HTTP bindings)


Request (specifying the default graph)

GET /sparql/?query=EncodedQuery&default-grap...
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
Con...
+

SPARQL Protocol (HTTP bindings)


Request with content negotiation

GET /sparql/?query=EncodedQuery&default-graph-uri=...
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/turt...
+

SPARQL Protocol (SOAP bindings)


A protocol for accessing web services



Based on HTTP and XML



Messages are pas...
+

SPARQL Protocol (SOAP bindings)


Request (note content type, encoding of the query)

POST /services/sparql-query HTTP...
+

SPARQL Protocol (SOAP bindings)


Response is a SOAP message embedding SPARQL/XML
HTTP/1.1 200 OK
Content-Type: applic...
+

SPARQL Protocol (SOAP bindings)


Response is a SOAP message embedding SPARQL/XML
HTTP/1.1 200 OK
Content-Type: applic...
+

Remote access (SPARQLendpoints)


A SPARQL processor that is accessible
through the SPARQL protocol



Many open endp...
+

Remote access (SPARQLendpoints)


Using implementing the SPARQL protocol
on your own, or



Using a library that supp...
+

Remote access (SPARQLendpoints with Jena)


In Jena:
String location = “http://dbpedia.org/sparql”;
String query = “PR...
+
Remote Access
Creating SPARQL endpoints
+

Creating a SPARQL end-point


Most triple stores include a HTTP implementation of the
SPARQL protocol



Set up depen...
+

Setting up Joseki


Package comes with





Server JARs
Scripts to manage the server and data

Once the system is r...
+

Running a Fuseki Server


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



fuseki-server --...
+

Server URI scheme


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



http://*host*/dataset/update
the SPARQL...
+

Script Control


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



Get it back
s-get http://localhos...
+

Summary


Covered:



SPARQL endpoints



Creating and managing
endpoints




SPARQL through APIS

HTTP Protocol
...
+

See also


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



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



Not di...
+
Sesame
Upcoming SlideShare
Loading in...5
×

SWT Lecture Session 4 - SW architectures and SPARQL

542

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
542
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SWT Lecture Session 4 - SW architectures and SPARQL

  1. 1. + SW Software architecture and SPARQL Mariano Rodriguez-Muro, Free University of Bozen-Bolzano
  2. 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. 3. + Summary  Semantic web idea, and overview of SWT  RDF data model  Jena intro  SPARQL protocol
  4. 4. + Reading material  Semantic Web Programming Part III, Chapter 8  FUSEKI tutorial
  5. 5. + SW Software architectures
  6. 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
  7. 7. + Local Access Triple stores and APIs
  8. 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. 9. + Local access(triple stores)  Possible triple stores:  Jena TDB, SDB, Sesame, 4Store,…  Virtuoso, OWLIM, AllegroGraph,…  3rd party data:  From DUMPs  http://wiki.dbpedia.org/  http://pro.europeana.eu/dat asets  Crawling (e.g, LDSpider)  Legacy transformation
  10. 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. 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. 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. 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. 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. 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> | -----------------------------------------------------
  16. 16. + Remote Access SPARQL Protocol
  17. 17. + Remote access (SPARQL Protocol)  Means to access query processors  Compatible with RDF  Abstract specification  Bindings with the following protocols:  HTTP  SOAP (WSDL)
  18. 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. 19. + SPARQL Protocol  Means to access query processors  Compatible with RDF  Abstract specification  Bindings with the following protocols:  HTTP  SOAP (WSDL)
  20. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
  34. 34. + Remote Access Creating SPARQL endpoints
  35. 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. 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. 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. 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. 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. 40. + Summary  Covered:   SPARQL endpoints  Creating and managing endpoints   SPARQL through APIS HTTP Protocol Later  Transforming data into RDF  Virtual RDF (R2RML, D2RQ)
  41. 41. + 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
  42. 42. + Sesame
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×