Tutorial: Querying DBpedia
Web Technology
2ID60
14 November 2013
Dr. Katrien Verbert
Dr. ir. Natasha Stash
Dr. George Flet...
Overview
• 
• 
• 
• 
• 

Introduction to Jena
Setting up the environment
Querying DBpedia
Other APIs
PHP example
Jena
•  Jena is a Java framework for the creation of applications
for the Semantic Web
•  Provides interfaces and classes ...
RDF concepts
Capabilities of Jena
• 
• 
• 
• 

RDF API
Reading and writing in RDF/XML, N-Triples
In-memory and persistent storage
SPARQ...
RDF concepts
•  The Jena RDF API contains classes and interfaces for every
important aspect of the RDF specification
•  Th...
RDF concepts
// Create an empty model
Model model = ModelFactory.createDefaultModel();
String ns = new String("http://www....
SPARQL query processing
•  Jena uses the ARQ engine for the processing of
SPARQL queries
•  The ARQ API classes are found ...
SPARQL query processing
// Prepare query string
String queryString =
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax...
SPARQL query processing

// Print results
while(resultSet.hasNext()) {
// Each row contains two fields: ‘married’ and ‘spo...
ARQ Application API
http://jena.apache.org/documentation/query/app_api.html
Overview
• 
• 
• 
• 

Introduction to Jena
Setting up the environment
Querying Dbpedia
Other APIs
Setting up the environment
Download Netbeans Java EE version:
https://netbeans.org/downloads/
Downloading Jena

http://jena.apache.org
Download binary distribution
http://www.apache.org/dist/jena/
Getting started with Jena in Netbeans
Create a new Java project
Create a Java project
Add Jena libraries to class path
Add Jena libraries to class path
Add all jars in lib folder of Jena distribution
Add all jars in lib folder
Using Jena with Eclipse
•  http://www.iandickinson.me.uk/articles/jena-eclipsehelloworld/
Tutorials

http://jena.apache.org/getting_started/
Overview
• 
• 
• 
• 

Introduction to Jena
Setting up the environment
Querying Dbpedia
Other APIs
QueryFactory
•  has various create() methods to read a textual query
•  these create() methods
•  return a Query object,
•...
QueryExecutionFactory
Create a QueryExecution that will access a SPARQL
service over HTTP
QueryExecutionFactory.sparqlServ...
Querying Dbpedia
SPARQL endpoint
http://dbpedia.org/sparql
Example
String service = "http://dbpedia.org/sparql";
String query = "ASK { }";
QueryExecution qe = QueryExecutionFactory....
Test connection
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import co...
Example queries
http://wiki.dbpedia.org/OnlineAccess#h28-5
Example query: people who were born in Eindhoven
String service="http://dbpedia.org/sparql";
String query="PREFIX dbo:<htt...
Processing results
QuerySolution soln = results.nextSolution() ;
RDFNode x = soln.get("varName") ; // Get a result variabl...
Example
String service="http://dbpedia.org/sparql";
String query="PREFIX dbo:<http://dbpedia.org/ontology/>"
+ "PREFIX : <...
Example query: people who were born in Berlin
before 1900
PREFIX dbo: http://dbpedia.org/ontology/
PREFIX rdfs: <http://ww...
Other APIs
PHP:	
  RAP	
  –	
  RDF	
  
h+p://www.seasr.org/wp-­‐content/plugins/meandre/rdfapi-­‐php/doc/	
  
	
  

Python...
Installing PHP
Mac OS:
https://netbeans.org/kb/docs/php/configure-phpenvironment-mac-os.html
Windows:
https://netbeans.org...
Create new PHP project
Install RAP
•  Download at:
http://wifo5-03.informatik.uni-mannheim.de/bizer/rdfapi/
•  Unpack the zip file.
•  Include RD...
PHP RAP: example
k.verbert@tue.nl
n.v.stash@tue.nl
g.l.fletcher@tue.nl

03/28/11
Sources
•  Konstantinos Tzonas. The Jena RDF Framework.
Upcoming SlideShare
Loading in...5
×

WebTech Tutorial Querying DBPedia

4,097

Published on

Published in: Education

WebTech Tutorial Querying DBPedia

  1. 1. Tutorial: Querying DBpedia Web Technology 2ID60 14 November 2013 Dr. Katrien Verbert Dr. ir. Natasha Stash Dr. George Fletcher
  2. 2. Overview •  •  •  •  •  Introduction to Jena Setting up the environment Querying DBpedia Other APIs PHP example
  3. 3. Jena •  Jena is a Java framework for the creation of applications for the Semantic Web •  Provides interfaces and classes for the creation and manipulation of RDF repositories
  4. 4. RDF concepts
  5. 5. Capabilities of Jena •  •  •  •  RDF API Reading and writing in RDF/XML, N-Triples In-memory and persistent storage SPARQL query engine
  6. 6. RDF concepts •  The Jena RDF API contains classes and interfaces for every important aspect of the RDF specification •  They can be used in order to construct RDF graphs from scratch, or edit existent graphs •  These classes/interfaces reside in the com.hp.hpl.jena.rdf.model package •  In Jena, the Model interface is used to represent RDF graphs •  Through Model, statements can be obtained/ created/ removed etc
  7. 7. RDF concepts // Create an empty model Model model = ModelFactory.createDefaultModel(); String ns = new String("http://www.example.com/example#"); // Create two Resources Resource john = model.createResource(ns + "John"); Resource jane = model.createResource(ns + "Jane"); // Create the 'hasBrother' Property declaration Property hasBrother = model.createProperty(ns, "hasBrother"); // Associate jane to john through 'hasBrother' jane.addProperty(hasBrother, john); // Create the 'hasSister' Property declaration Property hasSister = model.createProperty(ns, "hasSister"); // Associate john and jane through 'hasSister' with a Statement Statement sisterStmt = model.createStatement(john, hasSister, jane); model.add(sisterStmt);
  8. 8. SPARQL query processing •  Jena uses the ARQ engine for the processing of SPARQL queries •  The ARQ API classes are found in com.hp.hpl.jena.query •  Basic classes in ARQ: •  Query: Represents a single SPARQL query. •  Dataset: The knowledge base on which queries are executed (Equivalent to RDF Models) •  QueryFactory: Can be used to generate Query objects from SPARQL strings •  QueryExecution: Provides methods for the execution of queries •  ResultSet: Contains the results obtained from an executed query •  QuerySolution: Represents a row of query results. •  If there are many answers to a query, a ResultSet is returned after the query is executed. The ResultSet contains many QuerySolutions
  9. 9. SPARQL query processing // Prepare query string String queryString = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>n" + "PREFIX : <http://www.example.com/onto1#>n" + "SELECT ?married ?spouse WHERE {" + "?married rdf:type :MarriedPerson.n" + "?married :hasSpouse ?spouse." + "}"; // Use the ontology model to create a Dataset object // Note: If no reasoner has been attached to the model, no results // will be returned (MarriedPerson has no asserted instances) Dataset dataset = DatasetFactory.create(ontModel); // Parse query string and create Query object Query q = QueryFactory.create(queryString); // Execute query and obtain result set QueryExecution qexec = QueryExecutionFactory.create(q, dataset); ResultSet resultSet = qexec.execSelect();
  10. 10. SPARQL query processing // Print results while(resultSet.hasNext()) { // Each row contains two fields: ‘married’ and ‘spouse’, // as defined in the query string QuerySolution row = (QuerySolution)resultSet.next(); RDFNode nextMarried = row.get("married"); System.out.print(nextMarried.toString()); System.out.print(" is married to "); RDFNode nextSpouse = row.get("spouse"); System.out.println(nextSpouse.toString()); }
  11. 11. ARQ Application API http://jena.apache.org/documentation/query/app_api.html
  12. 12. Overview •  •  •  •  Introduction to Jena Setting up the environment Querying Dbpedia Other APIs
  13. 13. Setting up the environment Download Netbeans Java EE version: https://netbeans.org/downloads/
  14. 14. Downloading Jena http://jena.apache.org
  15. 15. Download binary distribution http://www.apache.org/dist/jena/
  16. 16. Getting started with Jena in Netbeans Create a new Java project
  17. 17. Create a Java project
  18. 18. Add Jena libraries to class path
  19. 19. Add Jena libraries to class path
  20. 20. Add all jars in lib folder of Jena distribution
  21. 21. Add all jars in lib folder
  22. 22. Using Jena with Eclipse •  http://www.iandickinson.me.uk/articles/jena-eclipsehelloworld/
  23. 23. Tutorials http://jena.apache.org/getting_started/
  24. 24. Overview •  •  •  •  Introduction to Jena Setting up the environment Querying Dbpedia Other APIs
  25. 25. QueryFactory •  has various create() methods to read a textual query •  these create() methods •  return a Query object, •  which encapsulates a parsed query.
  26. 26. QueryExecutionFactory Create a QueryExecution that will access a SPARQL service over HTTP QueryExecutionFactory.sparqlService(String service, Query query)
  27. 27. Querying Dbpedia SPARQL endpoint http://dbpedia.org/sparql
  28. 28. Example String service = "http://dbpedia.org/sparql"; String query = "ASK { }"; QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
  29. 29. Test connection import com.hp.hpl.jena.query.QueryExecution; import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.sparql.engine.http.QueryExceptionHTTP; public class QueryTest { public static void main(String[] args) { String service = "http://dbpedia.org/sparql"; String query = "ASK { }"; QueryExecution qe = QueryExecutionFactory.sparqlService(service, query); try { if (qe.execAsk()) { System.out.println(service + " is UP"); } // end if } catch (QueryExceptionHTTP e) { System.out.println(service + " is DOWN"); } finally { qe.close(); } } }
  30. 30. Example queries http://wiki.dbpedia.org/OnlineAccess#h28-5
  31. 31. Example query: people who were born in Eindhoven String service="http://dbpedia.org/sparql"; String query="PREFIX dbo:<http://dbpedia.org/ontology/>" + "PREFIX : <http://dbpedia.org/resource/>" + "select ?person where {?person dbo:birthPlace :Eindhoven.}"; QueryExecution qe=QueryExecutionFactory.sparqlService(service, query); ResultSet rs=qe.execSelect(); while (rs.hasNext()){ QuerySolution s=rs.nextSolution(); System.out.println(s.getResource("?person").toString()); } 03/28/11
  32. 32. Processing results QuerySolution soln = results.nextSolution() ; RDFNode x = soln.get("varName") ; // Get a result variable by name. Resource r = soln.getResource("VarR") ; // Get a result variable - must be a resource Literal l = soln.getLiteral("VarL") ; // Get a result variable - must be a literal
  33. 33. Example String service="http://dbpedia.org/sparql"; String query="PREFIX dbo:<http://dbpedia.org/ontology/>" + "PREFIX : <http://dbpedia.org/resource/>" + "PREFIX foaf:<http://xmlns.com/foaf/0.1/>" + "select ?person ?name where {?person dbo:birthPlace :Eindhoven." + "?person foaf:name ?name}"; QueryExecution qe=QueryExecutionFactory.sparqlService(service, query); ResultSet rs=qe.execSelect(); while (rs.hasNext()){ QuerySolution s=rs.nextSolution(); Resource r=s.getResource("?person"); Literal name=s.getLiteral("?name"); System.out.println(s.getResource("?person").toString()); System.out.println(s.getLiteral("?name").getString()); } 03/28/11
  34. 34. Example query: people who were born in Berlin before 1900 PREFIX dbo: http://dbpedia.org/ontology/ PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX : http://dbpedia.org/resource/ SELECT ?name ?birth ?death ?person WHERE { ?person dbo:birthPlace :Berlin . ?person dbo:birthDate ?birth . ?person foaf:name ?name . ?person dbo:deathDate ?death . FILTER (?birth < "1900-01-01"^^xsd:date) . } ORDER BY ?name
  35. 35. Other APIs PHP:  RAP  –  RDF   h+p://www.seasr.org/wp-­‐content/plugins/meandre/rdfapi-­‐php/doc/     Python:  RDFLib   h+p://www.rdflib.net/     C:  Redland   h+p://librdf.org/  
  36. 36. Installing PHP Mac OS: https://netbeans.org/kb/docs/php/configure-phpenvironment-mac-os.html Windows: https://netbeans.org/kb/docs/php/configure-phpenvironment-windows.html
  37. 37. Create new PHP project
  38. 38. Install RAP •  Download at: http://wifo5-03.informatik.uni-mannheim.de/bizer/rdfapi/ •  Unpack the zip file. •  Include RDF API into your scripts: •  define("RDFAPI_INCLUDE_DIR", "C:/Apache/htdocs/rdf_api/ api/"); •  include(RDFAPI_INCLUDE_DIR . "RDFAPI.php"); •  Change the constant RDFAPI_INCLUDE_DIR to the directory in which you have unpacked the zip file.
  39. 39. PHP RAP: example
  40. 40. k.verbert@tue.nl n.v.stash@tue.nl g.l.fletcher@tue.nl 03/28/11
  41. 41. Sources •  Konstantinos Tzonas. The Jena RDF Framework.
  1. A particular slide catching your eye?

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

×