SlideShare una empresa de Scribd logo
1 de 27
1
Twitter: @RobVesse
Email: rvesse@apache.org
2
 Software Engineer at YarcData, part of Cray Inc
 PMC Member and Committer on Apache Jena project
 Joined project in January 2012
 Can also be found hanging out on other Apache mailing
lists:
 Incubator General
 Giraph
 Marmotta
 Dev @ Community
 Interested in:
 Allthings Semantic Web, RDF and SPARQL
 Graphs (RDF or otherwise)
 Big Data particularly wrt. graphs
3
 Definitions
 Why JDBC for SPARQL?
 Introducing Jena JDBC
 Where can I getthis?
 What is it?
 Architecture
 Connection Strings
 Bridging the data model gap
 Fudging the metadata
 Supporting awkward tools
 Example Code
 Demo
 Alternative Options
4
 RDF
 Resource Description Framework
 W3C Standard for describing arbitrary data about resources
 SPARQL
 Recursive acronym-SPARQL Protocol and RDF Query Language
 Set of W3C standards for querying, updating and accessing RDF databases
 i.e. the SQL of the RDF database world
 JDBC
 JavaDatabase Connectivity
 Standard JavaAPIfor communicating with databases
 Part of the standard edition JavaRuntime
5
6
 Graph analytics is one of the hot topics in the Big
Data/Analytics world right now
 However most popular analytics tooling is primarily geared
around relational databases e.g.
 Pentaho
 Centrifuge
 QlikView
 Tableau
 etc.
 Often the database API of choice is JDBC
 Or ODBC
 Integrating SPARQL natively on a tool by tool basis is
arduous, limits code re-use and open sourcing
 May involve using semi-proprietary/restrictively licensed plugin APIs
 Implementing a JDBC driver lets people use SPARQL in any
JDBC supporting tool
7
8
 Available as part of the Apache Jena project from the 2.11.0
release onwards
 http://jena.apache.org
 NB - Not included in convenience binary packages
 Available via Maven
 http://jena.apache.org/documentation/jdbc/artifacts.html
 Group ID isorg.apache.jena
 Artifact IDs are of the formjena-jdbc-foowhere foois the specific module
 Current version for thesemodules is1.0.1
 Documentation on our website
 http://jena.apache.org/documentation/jdbc/index.html
9
 API Framework for building SPARQL over JDBC drivers
 JDBC 4.0 API compatibility
 Not JDBC 4.0 compliant
 JDBC Drivers for the major RDF/SPARQL back ends that
Jena supports
 In-Memory
 TDB
 Remote Endpoints
 Provides SPARQL over JDBC
 i.e. allows executing SPARQL queries through the JDBC API
 An uber-jar driver bundle that can be dropped into
applications to provide all the drivers and necessary
dependencies
1
0
Driver
Bundle
Driver
Implementations
Core API
1
1
 Provides high level abstract implementations of all the
infrastructure we need to implement a SPARQL over JDBC
driver e.g.
 Drivers
 Connections
 Metadata
 Statements
 Result Sets
 Data Typing
 Designed to be extensible and reused
 Most users won't need to know much about this
1
2
 One for each major RDF/SPARQL backend the Apache Jena
project supports
 These are the components most users care about
 In-Memory
 Non-persistent though may be initialized from a file on disk
 Usefulfor testing and prototyping
 Mavenartifact ID isjena-jdbc-driver-mem
 TDB
 Persistent disk backed RDF database
 Only driver that supports transactions
 Mavenartifact ID isjena-jdbc-driver-tdb
 Remote Endpoint
 Any RDF database that implements the SPARQL HTTP Protocol
 http://www.w3.org/TR/sparql11-protocol/
 Mavenartifact ID isjena-jdbc-driver-remote
 Bundle is a single convenience JAR containing all the drivers
 Mavenartifact ID isjena-jdbc-driver-bundle
1
3
jdbc:jena:mem:dataset=file.nq
jdbc:jena:mem:empty=true
jdbc:jena:tdb:location=/path/to/data
jdbc:jena:remote:query=http://localhost:3030/ds/query&update=http://localh
ost:3030/ds/update
 Jena JDBC drivers use a common jdbc:jena:foo: prefix
 Where foo is a driver specific prefix e.g. tdb
 Various implementation specific parameters plus some
general framework parameters e.g. jdbc-compatibility to
control data typing behaviour
 See documentation for fuller connection string reference:
 http://jena.apache.org/documentation/jdbc/drivers.html
1
4
 SPARQL has four query forms each with slightly different
results
 Need to make each fit JDBCs tabular result set API
 SELECT
 Tabular results- no translation necessary
 ASK
 Single boolean result - single column with single row
 CONSTRUCT/DESCRIBE
 RDF Graph result-represent the triples in tabular form
 i.e. table with 3columns- subject, predicate and object
1
5
 JDBC assumes uniform column typing
 Not true of SPARQL results
 We make the exact data typing behavior configurable
CC-BY-SA 3.0 - Wikimedia Commons
http://commons.wikimedia.org/wiki/File:Five_different_rubber_ducks.jpg
1
6
Public Domain - Wikimedia Commons -
http://commons.wikimedia.org/wiki/File:Butter_tablet_fudge.jpg
1
7
 Supported:
 Basic driver information
 Type information
 Function and keyword information
 SQL language support
 Result Set metadata
 Not Supported:
 Table and Procedure information
 Schema information
 There are alternative solutions that do support more
metadata but they represent a different architectural
approach to the problem
1
8
CC-BY-NC-SA 2.0 - rosipaw - http://www.flickr.com/photos/rosipaw/4643095630/
1
9
 API allows for adding both pre and post-request processors
to a connection
 Pre-processors can manipulate either the raw string or
parsed Query/Update as appropriate
 E.g.strip out extraneous syntaxtools might add
 Post-processors can manipulate the raw results before they
are returned
 E.g.rewrite variable namesto match what the toolexpect
2
0
2
1
// Open a Connection
Connection conn =
DriverManager.getConnection("jdbc:jena:tdb:location=/user/example/data/myd
b/");
// Prepare a Statement
PreparedStatement stmt = conn.prepareStatement("SELECT * WHERE { GRAPH ? {
?s ?p ?o } }");
stmt.setURL(1, new URL("http://example/graph"));
// Execute the Statement
ResultSet rset = stmt.executeQuery();
// Process the results...
// Clean up as normal
rset.close();
conn.close();
2
2
2
3
2
4
 Our approach is not the only one available as open source
 Two similar approaches to ours
 William Greenly's jdbc4sparql -http://code.google.com/p/jdbc4sparql/
 PaulGearon's scon -https://code.google.com/p/scon/wiki/Introduction
 An alternative approach is to map the RDF data into tables
and translate SQL queries into SPARQL queries behind the
scenes
 Claude Warren's jdbc4sparql -https://github.com/Claudenw/jdbc4sparql
2
5
Questions?
Twitter: @RobVesse
Email: rvesse@apache.org
2
6
Topic Link
Apache Jena Project http://jena.apache.org
RDF 1.1 Specification http://www.w3.org/TR/rdf11-concepts/
SPARQL 1.1 Specification http://www.w3.org/TR/sparql11-overview/
Jena JDBC Documentation http://jena.apache.org/documentation/jdbc/i
ndex.html
Jena JDBC Maven Artifacts Documentation http://jena.apache.org/documentation/jdbc/
artifacts.html
Jena JDBC Drivers Documentation -
Supported Drivers and Connection String
Parameters
http://jena.apache.org/documentation/jdbc/
drivers.html
SPARQL 1.1 Protocol http://www.w3.org/TR/sparql11-protocol/
2
7
Resource License Rightsholder URL
Square Peg
Round Hole
Image
CC-BY-SA-
NA 2.0
rosipaw http://www.flickr.com/photos/rosipaw/
4643095630/
Fudge Image Public
Domain
Wikimedia
Commons
http://commons.wikimedia.org/wiki/Fil
e:Butter_tablet_fudge.jpg
Rubber Ducks
Image
CC-BY-SA
3.0
Wikimedia
Commons
http://commons.wikimedia.org/wiki/Fil
e:Five_different_rubber_ducks.jpg

Más contenido relacionado

La actualidad más candente

Hadoop Performance Optimization at Scale, Lessons Learned at Twitter
Hadoop Performance Optimization at Scale, Lessons Learned at TwitterHadoop Performance Optimization at Scale, Lessons Learned at Twitter
Hadoop Performance Optimization at Scale, Lessons Learned at Twitter
DataWorks Summit
 
Presto conferencetokyo2019
Presto conferencetokyo2019Presto conferencetokyo2019
Presto conferencetokyo2019
wyukawa
 
Hadoop operations basic
Hadoop operations basicHadoop operations basic
Hadoop operations basic
Hafizur Rahman
 
ckan 2.0: Harvesting from other sources
ckan 2.0: Harvesting from other sourcesckan 2.0: Harvesting from other sources
ckan 2.0: Harvesting from other sources
Chengjen Lee
 
Apache hadoop, hdfs and map reduce Overview
Apache hadoop, hdfs and map reduce OverviewApache hadoop, hdfs and map reduce Overview
Apache hadoop, hdfs and map reduce Overview
Nisanth Simon
 

La actualidad más candente (20)

Hadoop Performance Optimization at Scale, Lessons Learned at Twitter
Hadoop Performance Optimization at Scale, Lessons Learned at TwitterHadoop Performance Optimization at Scale, Lessons Learned at Twitter
Hadoop Performance Optimization at Scale, Lessons Learned at Twitter
 
Madrid SPARQL handson
Madrid SPARQL handsonMadrid SPARQL handson
Madrid SPARQL handson
 
Perl Programming - 04 Programming Database
Perl Programming - 04 Programming DatabasePerl Programming - 04 Programming Database
Perl Programming - 04 Programming Database
 
Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)
 
Presto conferencetokyo2019
Presto conferencetokyo2019Presto conferencetokyo2019
Presto conferencetokyo2019
 
Apache Pig: A big data processor
Apache Pig: A big data processorApache Pig: A big data processor
Apache Pig: A big data processor
 
Hadoop architecture by ajay
Hadoop architecture by ajayHadoop architecture by ajay
Hadoop architecture by ajay
 
15 bufferand records
15 bufferand records15 bufferand records
15 bufferand records
 
HDFS Internals
HDFS InternalsHDFS Internals
HDFS Internals
 
Data Hacking with RHadoop
Data Hacking with RHadoopData Hacking with RHadoop
Data Hacking with RHadoop
 
Introduction to Hbase
Introduction to Hbase Introduction to Hbase
Introduction to Hbase
 
11. From Hadoop to Spark 2/2
11. From Hadoop to Spark 2/211. From Hadoop to Spark 2/2
11. From Hadoop to Spark 2/2
 
Hadoop 3 @ Hadoop Summit San Jose 2017
Hadoop 3 @ Hadoop Summit San Jose 2017Hadoop 3 @ Hadoop Summit San Jose 2017
Hadoop 3 @ Hadoop Summit San Jose 2017
 
Querying Linked Data with SPARQL
Querying Linked Data with SPARQLQuerying Linked Data with SPARQL
Querying Linked Data with SPARQL
 
Datasets and tools_from_ncbi_and_elsewhere_for_microbiome_research_v_62817
Datasets and tools_from_ncbi_and_elsewhere_for_microbiome_research_v_62817Datasets and tools_from_ncbi_and_elsewhere_for_microbiome_research_v_62817
Datasets and tools_from_ncbi_and_elsewhere_for_microbiome_research_v_62817
 
Hadoop operations basic
Hadoop operations basicHadoop operations basic
Hadoop operations basic
 
ckan 2.0: Harvesting from other sources
ckan 2.0: Harvesting from other sourcesckan 2.0: Harvesting from other sources
ckan 2.0: Harvesting from other sources
 
Apache hadoop, hdfs and map reduce Overview
Apache hadoop, hdfs and map reduce OverviewApache hadoop, hdfs and map reduce Overview
Apache hadoop, hdfs and map reduce Overview
 
Using R on High Performance Computers
Using R on High Performance ComputersUsing R on High Performance Computers
Using R on High Performance Computers
 
Real World Storage in Treasure Data
Real World Storage in Treasure DataReal World Storage in Treasure Data
Real World Storage in Treasure Data
 

Similar a Introducing JDBC for SPARQL

Comparative Study That Aims Rdf Processing For The Java Platform
Comparative Study That Aims Rdf Processing For The Java PlatformComparative Study That Aims Rdf Processing For The Java Platform
Comparative Study That Aims Rdf Processing For The Java Platform
Computer Science
 
RDF_API_Java_Stefan_Apostoaie
RDF_API_Java_Stefan_ApostoaieRDF_API_Java_Stefan_Apostoaie
RDF_API_Java_Stefan_Apostoaie
iosstef
 
3.java database connectivity
3.java database connectivity3.java database connectivity
3.java database connectivity
web360
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 

Similar a Introducing JDBC for SPARQL (20)

Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
LOD2: State of Play WP6 - LOD2 Stack Architecture
LOD2: State of Play WP6 - LOD2 Stack ArchitectureLOD2: State of Play WP6 - LOD2 Stack Architecture
LOD2: State of Play WP6 - LOD2 Stack Architecture
 
Jdbc complete
Jdbc completeJdbc complete
Jdbc complete
 
Jdbc introduction
Jdbc introductionJdbc introduction
Jdbc introduction
 
Comparative Study That Aims Rdf Processing For The Java Platform
Comparative Study That Aims Rdf Processing For The Java PlatformComparative Study That Aims Rdf Processing For The Java Platform
Comparative Study That Aims Rdf Processing For The Java Platform
 
RDF_API_Java_Stefan_Apostoaie
RDF_API_Java_Stefan_ApostoaieRDF_API_Java_Stefan_Apostoaie
RDF_API_Java_Stefan_Apostoaie
 
Spark Workshop
Spark WorkshopSpark Workshop
Spark Workshop
 
1. java database connectivity (jdbc)
1. java database connectivity (jdbc)1. java database connectivity (jdbc)
1. java database connectivity (jdbc)
 
Starschema Products
Starschema ProductsStarschema Products
Starschema Products
 
DavidWible_res
DavidWible_resDavidWible_res
DavidWible_res
 
3.java database connectivity
3.java database connectivity3.java database connectivity
3.java database connectivity
 
Apache Spark Fundamentals Training
Apache Spark Fundamentals TrainingApache Spark Fundamentals Training
Apache Spark Fundamentals Training
 
Apache Marmotta - Introduction
Apache Marmotta - IntroductionApache Marmotta - Introduction
Apache Marmotta - Introduction
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
Spark
SparkSpark
Spark
 
Core jdbc basics
Core jdbc basicsCore jdbc basics
Core jdbc basics
 
Prashanthi
PrashanthiPrashanthi
Prashanthi
 
Spring data jpa are used to develop spring applications
Spring data jpa are used to develop spring applicationsSpring data jpa are used to develop spring applications
Spring data jpa are used to develop spring applications
 
.NET RDF APIs
.NET RDF APIs.NET RDF APIs
.NET RDF APIs
 
EKAW - Publishing with Triple Pattern Fragments
EKAW - Publishing with Triple Pattern FragmentsEKAW - Publishing with Triple Pattern Fragments
EKAW - Publishing with Triple Pattern Fragments
 

Más de Rob Vesse

Más de Rob Vesse (8)

Challenges and patterns for semantics at scale
Challenges and patterns for semantics at scaleChallenges and patterns for semantics at scale
Challenges and patterns for semantics at scale
 
Apache Jena Elephas and Friends
Apache Jena Elephas and FriendsApache Jena Elephas and Friends
Apache Jena Elephas and Friends
 
Quadrupling your elephants - RDF and the Hadoop ecosystem
Quadrupling your elephants - RDF and the Hadoop ecosystemQuadrupling your elephants - RDF and the Hadoop ecosystem
Quadrupling your elephants - RDF and the Hadoop ecosystem
 
Practical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking RevisitedPractical SPARQL Benchmarking Revisited
Practical SPARQL Benchmarking Revisited
 
Practical SPARQL Benchmarking
Practical SPARQL BenchmarkingPractical SPARQL Benchmarking
Practical SPARQL Benchmarking
 
Everyday Tools for the Semantic Web Developer
Everyday Tools for the Semantic Web DeveloperEveryday Tools for the Semantic Web Developer
Everyday Tools for the Semantic Web Developer
 
Everyday Tools for the Semantic Web Developer
Everyday Tools for the Semantic Web DeveloperEveryday Tools for the Semantic Web Developer
Everyday Tools for the Semantic Web Developer
 
dotNetRDF - A Semantic Web/RDF Library for .Net Developers
dotNetRDF - A Semantic Web/RDF Library for .Net DevelopersdotNetRDF - A Semantic Web/RDF Library for .Net Developers
dotNetRDF - A Semantic Web/RDF Library for .Net Developers
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Introducing JDBC for SPARQL

  • 2. 2  Software Engineer at YarcData, part of Cray Inc  PMC Member and Committer on Apache Jena project  Joined project in January 2012  Can also be found hanging out on other Apache mailing lists:  Incubator General  Giraph  Marmotta  Dev @ Community  Interested in:  Allthings Semantic Web, RDF and SPARQL  Graphs (RDF or otherwise)  Big Data particularly wrt. graphs
  • 3. 3  Definitions  Why JDBC for SPARQL?  Introducing Jena JDBC  Where can I getthis?  What is it?  Architecture  Connection Strings  Bridging the data model gap  Fudging the metadata  Supporting awkward tools  Example Code  Demo  Alternative Options
  • 4. 4  RDF  Resource Description Framework  W3C Standard for describing arbitrary data about resources  SPARQL  Recursive acronym-SPARQL Protocol and RDF Query Language  Set of W3C standards for querying, updating and accessing RDF databases  i.e. the SQL of the RDF database world  JDBC  JavaDatabase Connectivity  Standard JavaAPIfor communicating with databases  Part of the standard edition JavaRuntime
  • 5. 5
  • 6. 6  Graph analytics is one of the hot topics in the Big Data/Analytics world right now  However most popular analytics tooling is primarily geared around relational databases e.g.  Pentaho  Centrifuge  QlikView  Tableau  etc.  Often the database API of choice is JDBC  Or ODBC  Integrating SPARQL natively on a tool by tool basis is arduous, limits code re-use and open sourcing  May involve using semi-proprietary/restrictively licensed plugin APIs  Implementing a JDBC driver lets people use SPARQL in any JDBC supporting tool
  • 7. 7
  • 8. 8  Available as part of the Apache Jena project from the 2.11.0 release onwards  http://jena.apache.org  NB - Not included in convenience binary packages  Available via Maven  http://jena.apache.org/documentation/jdbc/artifacts.html  Group ID isorg.apache.jena  Artifact IDs are of the formjena-jdbc-foowhere foois the specific module  Current version for thesemodules is1.0.1  Documentation on our website  http://jena.apache.org/documentation/jdbc/index.html
  • 9. 9  API Framework for building SPARQL over JDBC drivers  JDBC 4.0 API compatibility  Not JDBC 4.0 compliant  JDBC Drivers for the major RDF/SPARQL back ends that Jena supports  In-Memory  TDB  Remote Endpoints  Provides SPARQL over JDBC  i.e. allows executing SPARQL queries through the JDBC API  An uber-jar driver bundle that can be dropped into applications to provide all the drivers and necessary dependencies
  • 11. 1 1  Provides high level abstract implementations of all the infrastructure we need to implement a SPARQL over JDBC driver e.g.  Drivers  Connections  Metadata  Statements  Result Sets  Data Typing  Designed to be extensible and reused  Most users won't need to know much about this
  • 12. 1 2  One for each major RDF/SPARQL backend the Apache Jena project supports  These are the components most users care about  In-Memory  Non-persistent though may be initialized from a file on disk  Usefulfor testing and prototyping  Mavenartifact ID isjena-jdbc-driver-mem  TDB  Persistent disk backed RDF database  Only driver that supports transactions  Mavenartifact ID isjena-jdbc-driver-tdb  Remote Endpoint  Any RDF database that implements the SPARQL HTTP Protocol  http://www.w3.org/TR/sparql11-protocol/  Mavenartifact ID isjena-jdbc-driver-remote  Bundle is a single convenience JAR containing all the drivers  Mavenartifact ID isjena-jdbc-driver-bundle
  • 13. 1 3 jdbc:jena:mem:dataset=file.nq jdbc:jena:mem:empty=true jdbc:jena:tdb:location=/path/to/data jdbc:jena:remote:query=http://localhost:3030/ds/query&update=http://localh ost:3030/ds/update  Jena JDBC drivers use a common jdbc:jena:foo: prefix  Where foo is a driver specific prefix e.g. tdb  Various implementation specific parameters plus some general framework parameters e.g. jdbc-compatibility to control data typing behaviour  See documentation for fuller connection string reference:  http://jena.apache.org/documentation/jdbc/drivers.html
  • 14. 1 4  SPARQL has four query forms each with slightly different results  Need to make each fit JDBCs tabular result set API  SELECT  Tabular results- no translation necessary  ASK  Single boolean result - single column with single row  CONSTRUCT/DESCRIBE  RDF Graph result-represent the triples in tabular form  i.e. table with 3columns- subject, predicate and object
  • 15. 1 5  JDBC assumes uniform column typing  Not true of SPARQL results  We make the exact data typing behavior configurable CC-BY-SA 3.0 - Wikimedia Commons http://commons.wikimedia.org/wiki/File:Five_different_rubber_ducks.jpg
  • 16. 1 6 Public Domain - Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Butter_tablet_fudge.jpg
  • 17. 1 7  Supported:  Basic driver information  Type information  Function and keyword information  SQL language support  Result Set metadata  Not Supported:  Table and Procedure information  Schema information  There are alternative solutions that do support more metadata but they represent a different architectural approach to the problem
  • 18. 1 8 CC-BY-NC-SA 2.0 - rosipaw - http://www.flickr.com/photos/rosipaw/4643095630/
  • 19. 1 9  API allows for adding both pre and post-request processors to a connection  Pre-processors can manipulate either the raw string or parsed Query/Update as appropriate  E.g.strip out extraneous syntaxtools might add  Post-processors can manipulate the raw results before they are returned  E.g.rewrite variable namesto match what the toolexpect
  • 20. 2 0
  • 21. 2 1 // Open a Connection Connection conn = DriverManager.getConnection("jdbc:jena:tdb:location=/user/example/data/myd b/"); // Prepare a Statement PreparedStatement stmt = conn.prepareStatement("SELECT * WHERE { GRAPH ? { ?s ?p ?o } }"); stmt.setURL(1, new URL("http://example/graph")); // Execute the Statement ResultSet rset = stmt.executeQuery(); // Process the results... // Clean up as normal rset.close(); conn.close();
  • 22. 2 2
  • 23. 2 3
  • 24. 2 4  Our approach is not the only one available as open source  Two similar approaches to ours  William Greenly's jdbc4sparql -http://code.google.com/p/jdbc4sparql/  PaulGearon's scon -https://code.google.com/p/scon/wiki/Introduction  An alternative approach is to map the RDF data into tables and translate SQL queries into SPARQL queries behind the scenes  Claude Warren's jdbc4sparql -https://github.com/Claudenw/jdbc4sparql
  • 26. 2 6 Topic Link Apache Jena Project http://jena.apache.org RDF 1.1 Specification http://www.w3.org/TR/rdf11-concepts/ SPARQL 1.1 Specification http://www.w3.org/TR/sparql11-overview/ Jena JDBC Documentation http://jena.apache.org/documentation/jdbc/i ndex.html Jena JDBC Maven Artifacts Documentation http://jena.apache.org/documentation/jdbc/ artifacts.html Jena JDBC Drivers Documentation - Supported Drivers and Connection String Parameters http://jena.apache.org/documentation/jdbc/ drivers.html SPARQL 1.1 Protocol http://www.w3.org/TR/sparql11-protocol/
  • 27. 2 7 Resource License Rightsholder URL Square Peg Round Hole Image CC-BY-SA- NA 2.0 rosipaw http://www.flickr.com/photos/rosipaw/ 4643095630/ Fudge Image Public Domain Wikimedia Commons http://commons.wikimedia.org/wiki/Fil e:Butter_tablet_fudge.jpg Rubber Ducks Image CC-BY-SA 3.0 Wikimedia Commons http://commons.wikimedia.org/wiki/Fil e:Five_different_rubber_ducks.jpg