SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
Tutorial: Querying DBpedia
Web Technology
2ID60
14 November 2013
Dr. Katrien Verbert
Dr. ir. Natasha Stash
Dr. George Fletcher
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 for the creation and
manipulation of RDF repositories
RDF concepts
Capabilities of Jena
• 
• 
• 
• 

RDF API
Reading and writing in RDF/XML, N-Triples
In-memory and persistent storage
SPARQL query engine
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
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);
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
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();
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());
}
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,
•  which encapsulates a parsed query.
QueryExecutionFactory
Create a QueryExecution that will access a SPARQL
service over HTTP
QueryExecutionFactory.sparqlService(String service,
Query query)
Querying Dbpedia
SPARQL endpoint
http://dbpedia.org/sparql
Example
String service = "http://dbpedia.org/sparql";
String query = "ASK { }";
QueryExecution qe = QueryExecutionFactory.sparqlService(service,
query);
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();
}
}
}
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:<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
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
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
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
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/	
  
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
Create new PHP project
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.
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.

Weitere ähnliche Inhalte

Was ist angesagt?

온톨로지 개념 및 표현언어
온톨로지 개념 및 표현언어온톨로지 개념 및 표현언어
온톨로지 개념 및 표현언어
Dongbum Kim
 
Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQL
Open Data Support
 
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
Fabien Gandon
 

Was ist angesagt? (20)

SPARQL in a nutshell
SPARQL in a nutshellSPARQL in a nutshell
SPARQL in a nutshell
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & Practice
 
SPARQL 사용법
SPARQL 사용법SPARQL 사용법
SPARQL 사용법
 
Jena Programming
Jena ProgrammingJena Programming
Jena Programming
 
온톨로지 개념 및 표현언어
온톨로지 개념 및 표현언어온톨로지 개념 및 표현언어
온톨로지 개념 및 표현언어
 
Tutorial on SPARQL: SPARQL Protocol and RDF Query Language
Tutorial on SPARQL: SPARQL Protocol and RDF Query Language Tutorial on SPARQL: SPARQL Protocol and RDF Query Language
Tutorial on SPARQL: SPARQL Protocol and RDF Query Language
 
Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQL
 
How to Create a Golden Ontology
How to Create a Golden OntologyHow to Create a Golden Ontology
How to Create a Golden Ontology
 
Introduction to W3C Linked Data Platform
Introduction to W3C Linked Data PlatformIntroduction to W3C Linked Data Platform
Introduction to W3C Linked Data Platform
 
Introduction To RDF and RDFS
Introduction To RDF and RDFSIntroduction To RDF and RDFS
Introduction To RDF and RDFS
 
LinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODO
LinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODOLinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODO
LinkML Intro July 2022.pptx PLEASE VIEW THIS ON ZENODO
 
Taxonomy Management based on SKOS-XL
Taxonomy Management based on SKOS-XLTaxonomy Management based on SKOS-XL
Taxonomy Management based on SKOS-XL
 
SHACL: Shaping the Big Ball of Data Mud
SHACL: Shaping the Big Ball of Data MudSHACL: Shaping the Big Ball of Data Mud
SHACL: Shaping the Big Ball of Data Mud
 
Knowledge Graph Generation from Wikipedia in the Age of ChatGPT: Knowledge ...
Knowledge Graph Generation  from Wikipedia in the Age of ChatGPT:  Knowledge ...Knowledge Graph Generation  from Wikipedia in the Age of ChatGPT:  Knowledge ...
Knowledge Graph Generation from Wikipedia in the Age of ChatGPT: Knowledge ...
 
Resource description framework
Resource description frameworkResource description framework
Resource description framework
 
Neo4J 사용
Neo4J 사용Neo4J 사용
Neo4J 사용
 
RDF 개념 및 구문 소개
RDF 개념 및 구문 소개RDF 개념 및 구문 소개
RDF 개념 및 구문 소개
 
A la découverte du Web sémantique
A la découverte du Web sémantiqueA la découverte du Web sémantique
A la découverte du Web sémantique
 
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
 

Ähnlich wie WebTech Tutorial Querying DBPedia

070517 Jena
070517 Jena070517 Jena
070517 Jena
yuhana
 
03 form-data
03 form-data03 form-data
03 form-data
snopteck
 
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
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
b_kathir
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
Michael Hackstein
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
Ajax Experience 2009
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
WalaSidhom1
 
Web data from R
Web data from RWeb data from R
Web data from R
schamber
 

Ähnlich wie WebTech Tutorial Querying DBPedia (20)

070517 Jena
070517 Jena070517 Jena
070517 Jena
 
03 form-data
03 form-data03 form-data
03 form-data
 
SPARQLing cocktails
SPARQLing cocktailsSPARQLing cocktails
SPARQLing cocktails
 
4 sw architectures and sparql
4 sw architectures and sparql4 sw architectures and sparql
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
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
 
Data shapes-test-suite
Data shapes-test-suiteData shapes-test-suite
Data shapes-test-suite
 
Rapid API Development ArangoDB Foxx
Rapid API Development ArangoDB FoxxRapid API Development ArangoDB Foxx
Rapid API Development ArangoDB Foxx
 
The Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLThe Semantic Web #10 - SPARQL
The Semantic Web #10 - 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
 
SFScon 2020 - Peter Hopfgartner - Open Data de luxe
SFScon 2020 - Peter Hopfgartner - Open Data de luxeSFScon 2020 - Peter Hopfgartner - Open Data de luxe
SFScon 2020 - Peter Hopfgartner - Open Data de luxe
 
Examiness hints and tips from the trenches
Examiness hints and tips from the trenchesExaminess hints and tips from the trenches
Examiness hints and tips from the trenches
 
Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)Querying Linked Data with SPARQL (2010)
Querying Linked Data with SPARQL (2010)
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
 
More on Fitnesse and Continuous Integration (Silicon Valley code camp 2012)
More on Fitnesse and Continuous Integration (Silicon Valley code camp 2012)More on Fitnesse and Continuous Integration (Silicon Valley code camp 2012)
More on Fitnesse and Continuous Integration (Silicon Valley code camp 2012)
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
 
Scala45 spray test
Scala45 spray testScala45 spray test
Scala45 spray test
 
Web data from R
Web data from RWeb data from R
Web data from R
 
How to use soap component
How to use soap componentHow to use soap component
How to use soap component
 
Practical OData
Practical ODataPractical OData
Practical OData
 

Mehr von Katrien Verbert

Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...
Katrien Verbert
 
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Katrien Verbert
 

Mehr von Katrien Verbert (20)

Explainability methods
Explainability methodsExplainability methods
Explainability methods
 
Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?
 
Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?
 
Human-centered AI: how can we support lay users to understand AI?
Human-centered AI: how can we support lay users to understand AI?Human-centered AI: how can we support lay users to understand AI?
Human-centered AI: how can we support lay users to understand AI?
 
Explaining job recommendations: a human-centred perspective
Explaining job recommendations: a human-centred perspectiveExplaining job recommendations: a human-centred perspective
Explaining job recommendations: a human-centred perspective
 
Explaining recommendations: design implications and lessons learned
Explaining recommendations: design implications and lessons learnedExplaining recommendations: design implications and lessons learned
Explaining recommendations: design implications and lessons learned
 
Designing Learning Analytics Dashboards: Lessons Learned
Designing Learning Analytics Dashboards: Lessons LearnedDesigning Learning Analytics Dashboards: Lessons Learned
Designing Learning Analytics Dashboards: Lessons Learned
 
Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...
 
Explainable AI for non-expert users
Explainable AI for non-expert usersExplainable AI for non-expert users
Explainable AI for non-expert users
 
Towards the next generation of interactive and adaptive explanation methods
Towards the next generation of interactive and adaptive explanation methodsTowards the next generation of interactive and adaptive explanation methods
Towards the next generation of interactive and adaptive explanation methods
 
Personalized food recommendations: combining recommendation, visualization an...
Personalized food recommendations: combining recommendation, visualization an...Personalized food recommendations: combining recommendation, visualization an...
Personalized food recommendations: combining recommendation, visualization an...
 
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
 
Learning analytics for feedback at scale
Learning analytics for feedback at scaleLearning analytics for feedback at scale
Learning analytics for feedback at scale
 
Interactive recommender systems and dashboards for learning
Interactive recommender systems and dashboards for learningInteractive recommender systems and dashboards for learning
Interactive recommender systems and dashboards for learning
 
Interactive recommender systems: opening up the “black box”
Interactive recommender systems: opening up the “black box”Interactive recommender systems: opening up the “black box”
Interactive recommender systems: opening up the “black box”
 
Interactive Recommender Systems
Interactive Recommender SystemsInteractive Recommender Systems
Interactive Recommender Systems
 
Web Information Systems Lecture 2: HTML
Web Information Systems Lecture 2: HTMLWeb Information Systems Lecture 2: HTML
Web Information Systems Lecture 2: HTML
 
Information Visualisation: perception and principles
Information Visualisation: perception and principlesInformation Visualisation: perception and principles
Information Visualisation: perception and principles
 
Web Information Systems Lecture 1: Introduction
Web Information Systems Lecture 1: IntroductionWeb Information Systems Lecture 1: Introduction
Web Information Systems Lecture 1: Introduction
 
Information Visualisation: Introduction
Information Visualisation: IntroductionInformation Visualisation: Introduction
Information Visualisation: Introduction
 

Kürzlich hochgeladen

Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
negromaestrong
 
An Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfAn Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdf
SanaAli374401
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
MateoGardella
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 

Kürzlich hochgeladen (20)

Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
An Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdfAn Overview of Mutual Funds Bcom Project.pdf
An Overview of Mutual Funds Bcom Project.pdf
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 

WebTech Tutorial Querying DBPedia

  • 1. Tutorial: Querying DBpedia Web Technology 2ID60 14 November 2013 Dr. Katrien Verbert Dr. ir. Natasha Stash Dr. George Fletcher
  • 2. Overview •  •  •  •  •  Introduction to Jena Setting up the environment Querying DBpedia Other APIs PHP example
  • 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
  • 5. Capabilities of Jena •  •  •  •  RDF API Reading and writing in RDF/XML, N-Triples In-memory and persistent storage SPARQL query engine
  • 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. 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. 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. 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. 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()); }
  • 12. Overview •  •  •  •  Introduction to Jena Setting up the environment Querying Dbpedia Other APIs
  • 13. Setting up the environment Download Netbeans Java EE version: https://netbeans.org/downloads/
  • 16. Getting started with Jena in Netbeans Create a new Java project
  • 17. Create a Java project
  • 18. Add Jena libraries to class path
  • 19. Add Jena libraries to class path
  • 20. Add all jars in lib folder of Jena distribution
  • 21. Add all jars in lib folder
  • 22. Using Jena with Eclipse •  http://www.iandickinson.me.uk/articles/jena-eclipsehelloworld/
  • 24. Overview •  •  •  •  Introduction to Jena Setting up the environment Querying Dbpedia Other APIs
  • 25. QueryFactory •  has various create() methods to read a textual query •  these create() methods •  return a Query object, •  which encapsulates a parsed query.
  • 26. QueryExecutionFactory Create a QueryExecution that will access a SPARQL service over HTTP QueryExecutionFactory.sparqlService(String service, Query query)
  • 28. Example String service = "http://dbpedia.org/sparql"; String query = "ASK { }"; QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
  • 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(); } } }
  • 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. 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. 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. 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. 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/  
  • 37. Create new PHP project
  • 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.
  • 41. Sources •  Konstantinos Tzonas. The Jena RDF Framework.