O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

4 sw architectures and sparql

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 42 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a 4 sw architectures and sparql (20)

Anúncio

Mais de Mariano Rodriguez-Muro (20)

Mais recentes (20)

Anúncio

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, AllegroGra ph,…  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

×