SlideShare a Scribd company logo
1 of 35
SuRF – Tapping into the Web of Data Cosmin Basca Digital Enterprise Research Institute, Galway cosmin.basca@gmail.com Special Thanks to: Benjamin Heitman andUldis Bojars Digital Enterprise Research Institute, Galway firstname.lastname@deri.org
Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 2
DERI – http://www.deri.ie/ Digital Enterprise Research Institute (DERI):  http://www.deri.ie/ main goal: enabling networked knowledge research about the future of the Web biggest Semantic Web research institute in the world 120 people part of the National University of Ireland, Galway 3
Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 4
Why ? Develop Web applications that allow  Data Integration Flexibility Schema definition and modeling Schema evolution Robustness Support for new Data  Sources Types 5
There is a Wealth of (RDF) data out there 6
Popular Semantic Web Vocabularies FOAF = for describing people and social network connections between them   http://xmlns.com/foaf/spec/ SIOC = for describing Social Web content created by people   http://sioc-project.org/ DOAP = for describing software projects   http://trac.usefulinc.com/doap used by PyPi 7
Linked Open Data - Growth 8
Linked Open Data - Growth 9
Linked Open Data - Growth 10
The data model Traditional Approach use the Relational model Usually leads to big ugly Schemas 11
The RDF (Graph) Data model Flexible Support for both schema and data evolution during runtime Simple model Relations are represented explicitly Schema is a graph Can integrate data – union of two graphs 12
The RDF (Graph) Data model 13 Subject Object Predicate A triple is a  Eric Person
Example RDF graph describing Eric Miller (RDF Primer) – human readable format 14 Person is a  Eric has full name Eric Miller has e-mail em@w3.org has personal title Dr.
Example RDF graph describing Eric Miller (RDF Primer) – machine readable format 15 http://w3.org/2000/10/swap/pic/contact#Person http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://w3.org/People/EM/contact#me http://www.w3.org/2000/10/swap/pim/contact#fullName Eric Miller http://www.w3.org/2000/10/swap/pim/contact#mailbox mailto:em@w3.org http://www.w3.org/2000/10/swap/pim/contact#personalTitle Dr.
The RDF (Graph) Data model – Identification  URI’s provide strong references The URIref is a an unambiguous pointer to something of meaning Nodes (“Subjects”) 	connect via Links (“Predicates”) 	to Objects Can be Nodes or Literals (plain or typed strings) 16
SPARQL – Querying the Semantic Web SPARQL is to RDF what SQL is to Relational tables Expressive, designed with the Graph data model in mind 17 Carrie Fisher starred_in Star Wars starred_in Harrison Ford starred_in Blade Runner starred_in Darryl Hannah SELECT ?actor ?movie WHERE { ?actor starred_in ?movie }
Levels of Data abstraction 18 Direct SPARQL Access O-RDF Mapper  SuRF
O-RDF Mapper, Why? Clean OO design Increased productivity model is free from persistence constraints Separation of concerns and specialization ORMs often reduce the amount of code needed to be written, making the software more robust 20% to 30% less code needs to be written Less code – less testing – less errors 19
O-RDF Mapper, How? How do we see RDF data? As a SET of triples? As a SET of resources? The resource view is more suitable for the OO model How do we define an RDF resource ? All triples <S,P,O>with same subject (ActiveRDF, SuRF) And all triples <O,P,S> (SuRF) Apply Open World principles 20
Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 21
SuRF – Semantic Resource Framework Inspired by ActiveRDF Developed in DERI for ruby Expose RDF as sets of resources Semantic attributes exposed as a “virtual API”, generated through introspection.  Naming convention: instance.namespace_attribute cosmin.foaf_knows Finder methods Retrieve resources by type or by attributes Session keeps track of resources, when calling session.commit() only dirty resources will be persisted 22
SuRF – Architecture 23
SuRF – Architecture – Currently supported plugins 24 Add your own plugins, extend: surf.store.plugins.RDFReader surf.store.plugins.RDFWriter Redefine the __type__ attribute This is the plugin identifier To install plugins import my_plugin
SuRF - installation Available on PyPi easy_install –U surf (to get the latest) Open-source available on Google Code, BSD licence http://code.google.com/p/surfrdf/ 25
Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 26
DBpedia public SPARQL endpoint - read-only Create the store proxy from surf import* 	store = Store(reader='sparql-protocol',endpoint='http://dbpedia.org/sparql',                default_graph='http://dbpedia.org') Create the surf session print'Create the session'session =Session(store,{}) Map a dbpedia concept to an internal class PhilCollinsAlbums=session.get_class(ns.YAGO['PhilCollinsAlbums']) SuRF – simple example 27
SuRF – simple example DBpedia public SPARQL endpoint - read-only Get all Phill Collins albums all_albums=PhilCollinsAlbums.all() Do something with the albums (display the links to their covers) print'All covers'for a inall_albums:    ifa.dbpedia_name:        print'Cover %s for "%s"'%(a.dbpedia_cover,a.dbpedia_name) 28
Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 29
SuRF – integrate into Pylons Create a blog on top of an RDF database Replace SQLAlchemy with SuRF Download and install either AllegroGraph Free Edition (preferred) or Sesame2 http://www.franz.com/downloads/clp/ag_survey Free for up to 50.000.000 triples (records) Install pylons: easy_install pylons Install SuRF: easy_install surf Create a pylons application: paster create -t pylons MyBlog cd MyBlog 30
SuRF – Pylons Blog  ~/MyBlog/development.ini: In the [app:main] section add rdf_store = localhost rdf_store_port = 6789 rdf_repository = tagbuilder rdf_catalog = repositories ~/MyBlog/myblog/config/environment.py from surf import * rdf_store = Store(  reader      =   'sparql-sesame2-api', 	                        writer      	=   'sesame2-api', 	                        server       =   config['rdf_store'], 	                        port           =   config['rdf_store_port'], 	                        catalog      =   config['rdf_catalog'], 	                        repository  =   config['rdf_repository']) rdf_session = Session(rdf_store, {}) 31
SuRF – Pylons Blog  ~/MyBlog/myblog/model/__ init __.py from surf import *	 definit_model(session): 			global rdf_session rdf_session = session 			# register a namespace for the concepts in my blog ns.register(myblog=‘http://example.url/myblog/namespace#’) Blog = rdf_session.get_class(ns.MYBLOG[‘Blog’]) Create the blog controllerpaster controller blog ~/MyBlog/myblog/controllers/blog.py import logging  frommyblog.lib.baseimport *  log = logging.getLogger(__name__)  classBlogController(BaseController):  def index(self):  c.posts = model.Blog.all(0,5) return render("/blog/index.html") 32
SuRF – Pylons Blog  Create the template mkdir ~/MyBlog/myblog/templates/blog ~/MyBlog/myblog/templates/blog/index.html  <%inherit file="site.html" />  <%def name="title()">MyBlog Home</%def>  <p>${len(c.posts)} new blog posts!</p>  % for post inc.posts:  <p class="content" style="border-style:solid;border-width:1px">  <span class="h3"> ${post.myblog_title} </span>  <span class="h4">Posted on: ${post.myblog_date} by ${post.myblog_author}</span>  <br> ${post.myblog_content}  </p>  % endfor ~/MyBlog/myblog/templates/blog/site.html Start the development built in server: paster serve --reload development.ini 33
SuRF – Tapping into the Web of Data Can tap into the web of Data SPARQL endpoints Local or remote RDF Stores Plugin framework, allows for more access protocols to be defined Code is generated dynamically (pragmatic bottom up approach): Introspection, meta-programming,  exposing a virtual API (defined by the data and the schema) to the developer Can easily be integrated into popular python frameworks pylons 34
exit() cosmin.basca@deri.prg http://code.google.com/p/surfrdf/ easy_install –U surf 35

More Related Content

What's hot

Linked Open Communism - c4l13
Linked Open Communism - c4l13Linked Open Communism - c4l13
Linked Open Communism - c4l13
charper
 
Mon norton tut_queryinglinkeddata02
Mon norton tut_queryinglinkeddata02Mon norton tut_queryinglinkeddata02
Mon norton tut_queryinglinkeddata02
eswcsummerschool
 
Bigdive 2014 - RDF, principles and case studies
Bigdive 2014 - RDF, principles and case studiesBigdive 2014 - RDF, principles and case studies
Bigdive 2014 - RDF, principles and case studies
Diego Valerio Camarda
 
Linked data: spreading data over the web
Linked data: spreading data over the webLinked data: spreading data over the web
Linked data: spreading data over the web
shellac
 

What's hot (20)

A Hands On Overview Of The Semantic Web
A Hands On Overview Of The Semantic WebA Hands On Overview Of The Semantic Web
A Hands On Overview Of The Semantic Web
 
The Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQLThe Semantic Web #10 - SPARQL
The Semantic Web #10 - SPARQL
 
Linked Open Communism - c4l13
Linked Open Communism - c4l13Linked Open Communism - c4l13
Linked Open Communism - c4l13
 
Intro to Linked, Dutch Ships and Sailors and SPARQL handson
Intro to Linked, Dutch Ships and Sailors and SPARQL handson Intro to Linked, Dutch Ships and Sailors and SPARQL handson
Intro to Linked, Dutch Ships and Sailors and SPARQL handson
 
20100614 ISWSA Keynote
20100614 ISWSA Keynote20100614 ISWSA Keynote
20100614 ISWSA Keynote
 
Mon norton tut_queryinglinkeddata02
Mon norton tut_queryinglinkeddata02Mon norton tut_queryinglinkeddata02
Mon norton tut_queryinglinkeddata02
 
Jena Programming
Jena ProgrammingJena Programming
Jena Programming
 
RDFa Tutorial
RDFa TutorialRDFa Tutorial
RDFa Tutorial
 
Introduction to RDFa
Introduction to RDFaIntroduction to RDFa
Introduction to RDFa
 
2007 03 12 Swecr 2
2007 03 12 Swecr 22007 03 12 Swecr 2
2007 03 12 Swecr 2
 
Tutorial for RDF Graphs
Tutorial for RDF GraphsTutorial for RDF Graphs
Tutorial for RDF Graphs
 
Django Files — A Short Talk (slides only)
Django Files — A Short Talk (slides only)Django Files — A Short Talk (slides only)
Django Files — A Short Talk (slides only)
 
GDG Meets U event - Big data & Wikidata - no lies codelab
GDG Meets U event - Big data & Wikidata -  no lies codelabGDG Meets U event - Big data & Wikidata -  no lies codelab
GDG Meets U event - Big data & Wikidata - no lies codelab
 
DHWI Linked Open Data - Show and Tell
DHWI Linked Open Data - Show and TellDHWI Linked Open Data - Show and Tell
DHWI Linked Open Data - Show and Tell
 
Bigdive 2014 - RDF, principles and case studies
Bigdive 2014 - RDF, principles and case studiesBigdive 2014 - RDF, principles and case studies
Bigdive 2014 - RDF, principles and case studies
 
Lucene's Latest (for Libraries)
Lucene's Latest (for Libraries)Lucene's Latest (for Libraries)
Lucene's Latest (for Libraries)
 
Apache Solr
Apache SolrApache Solr
Apache Solr
 
Ruby openfest
Ruby openfestRuby openfest
Ruby openfest
 
Django Files — A Short Talk
Django Files — A Short TalkDjango Files — A Short Talk
Django Files — A Short Talk
 
Linked data: spreading data over the web
Linked data: spreading data over the webLinked data: spreading data over the web
Linked data: spreading data over the web
 

Similar to SuRf – Tapping Into The Web Of Data

Triplestore and SPARQL
Triplestore and SPARQLTriplestore and SPARQL
Triplestore and SPARQL
Lino Valdivia
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic web
Marakana Inc.
 
Web data from R
Web data from RWeb data from R
Web data from R
schamber
 
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
WWW09 - Triplify Light-Weight Linked Data Publication from Relational DatabasesWWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
Sören Auer
 
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
Josef Petrák
 

Similar to SuRf – Tapping Into The Web Of Data (20)

Virtuoso Sponger - RDFizer Middleware for creating RDF from non RDF Data Sources
Virtuoso Sponger - RDFizer Middleware for creating RDF from non RDF Data SourcesVirtuoso Sponger - RDFizer Middleware for creating RDF from non RDF Data Sources
Virtuoso Sponger - RDFizer Middleware for creating RDF from non RDF Data Sources
 
Data in RDF
Data in RDFData in RDF
Data in RDF
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platform
 
Semantic web and Drupal: an introduction
Semantic web and Drupal: an introductionSemantic web and Drupal: an introduction
Semantic web and Drupal: an introduction
 
Programming the Semantic Web
Programming the Semantic WebProgramming the Semantic Web
Programming the Semantic Web
 
Triplestore and SPARQL
Triplestore and SPARQLTriplestore and SPARQL
Triplestore and SPARQL
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic web
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
 
RDFa Introductory Course Session 2/4 How RDFa
RDFa Introductory Course Session 2/4 How RDFaRDFa Introductory Course Session 2/4 How RDFa
RDFa Introductory Course Session 2/4 How RDFa
 
How RDFa works
How RDFa worksHow RDFa works
How RDFa works
 
Semantic Web talk TEMPLATE
Semantic Web talk TEMPLATESemantic Web talk TEMPLATE
Semantic Web talk TEMPLATE
 
Drupal and the Semantic Web
Drupal and the Semantic WebDrupal and the Semantic Web
Drupal and the Semantic Web
 
Producing, publishing and consuming linked data - CSHALS 2013
Producing, publishing and consuming linked data - CSHALS 2013Producing, publishing and consuming linked data - CSHALS 2013
Producing, publishing and consuming linked data - CSHALS 2013
 
Semantic Web
Semantic WebSemantic Web
Semantic Web
 
RDF APIs for .NET Framework
RDF APIs for .NET FrameworkRDF APIs for .NET Framework
RDF APIs for .NET Framework
 
Mashups MAX 360|MAX 2008 Unconference
Mashups MAX 360|MAX 2008 UnconferenceMashups MAX 360|MAX 2008 Unconference
Mashups MAX 360|MAX 2008 Unconference
 
Web data from R
Web data from RWeb data from R
Web data from R
 
Web Frameworks
Web FrameworksWeb Frameworks
Web Frameworks
 
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
WWW09 - Triplify Light-Weight Linked Data Publication from Relational DatabasesWWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
 
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
 

Recently uploaded

Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Recently uploaded (20)

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
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 

SuRf – Tapping Into The Web Of Data

  • 1. SuRF – Tapping into the Web of Data Cosmin Basca Digital Enterprise Research Institute, Galway cosmin.basca@gmail.com Special Thanks to: Benjamin Heitman andUldis Bojars Digital Enterprise Research Institute, Galway firstname.lastname@deri.org
  • 2. Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 2
  • 3. DERI – http://www.deri.ie/ Digital Enterprise Research Institute (DERI): http://www.deri.ie/ main goal: enabling networked knowledge research about the future of the Web biggest Semantic Web research institute in the world 120 people part of the National University of Ireland, Galway 3
  • 4. Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 4
  • 5. Why ? Develop Web applications that allow Data Integration Flexibility Schema definition and modeling Schema evolution Robustness Support for new Data Sources Types 5
  • 6. There is a Wealth of (RDF) data out there 6
  • 7. Popular Semantic Web Vocabularies FOAF = for describing people and social network connections between them   http://xmlns.com/foaf/spec/ SIOC = for describing Social Web content created by people   http://sioc-project.org/ DOAP = for describing software projects   http://trac.usefulinc.com/doap used by PyPi 7
  • 8. Linked Open Data - Growth 8
  • 9. Linked Open Data - Growth 9
  • 10. Linked Open Data - Growth 10
  • 11. The data model Traditional Approach use the Relational model Usually leads to big ugly Schemas 11
  • 12. The RDF (Graph) Data model Flexible Support for both schema and data evolution during runtime Simple model Relations are represented explicitly Schema is a graph Can integrate data – union of two graphs 12
  • 13. The RDF (Graph) Data model 13 Subject Object Predicate A triple is a Eric Person
  • 14. Example RDF graph describing Eric Miller (RDF Primer) – human readable format 14 Person is a Eric has full name Eric Miller has e-mail em@w3.org has personal title Dr.
  • 15. Example RDF graph describing Eric Miller (RDF Primer) – machine readable format 15 http://w3.org/2000/10/swap/pic/contact#Person http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://w3.org/People/EM/contact#me http://www.w3.org/2000/10/swap/pim/contact#fullName Eric Miller http://www.w3.org/2000/10/swap/pim/contact#mailbox mailto:em@w3.org http://www.w3.org/2000/10/swap/pim/contact#personalTitle Dr.
  • 16. The RDF (Graph) Data model – Identification URI’s provide strong references The URIref is a an unambiguous pointer to something of meaning Nodes (“Subjects”) connect via Links (“Predicates”) to Objects Can be Nodes or Literals (plain or typed strings) 16
  • 17. SPARQL – Querying the Semantic Web SPARQL is to RDF what SQL is to Relational tables Expressive, designed with the Graph data model in mind 17 Carrie Fisher starred_in Star Wars starred_in Harrison Ford starred_in Blade Runner starred_in Darryl Hannah SELECT ?actor ?movie WHERE { ?actor starred_in ?movie }
  • 18. Levels of Data abstraction 18 Direct SPARQL Access O-RDF Mapper SuRF
  • 19. O-RDF Mapper, Why? Clean OO design Increased productivity model is free from persistence constraints Separation of concerns and specialization ORMs often reduce the amount of code needed to be written, making the software more robust 20% to 30% less code needs to be written Less code – less testing – less errors 19
  • 20. O-RDF Mapper, How? How do we see RDF data? As a SET of triples? As a SET of resources? The resource view is more suitable for the OO model How do we define an RDF resource ? All triples <S,P,O>with same subject (ActiveRDF, SuRF) And all triples <O,P,S> (SuRF) Apply Open World principles 20
  • 21. Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 21
  • 22. SuRF – Semantic Resource Framework Inspired by ActiveRDF Developed in DERI for ruby Expose RDF as sets of resources Semantic attributes exposed as a “virtual API”, generated through introspection. Naming convention: instance.namespace_attribute cosmin.foaf_knows Finder methods Retrieve resources by type or by attributes Session keeps track of resources, when calling session.commit() only dirty resources will be persisted 22
  • 24. SuRF – Architecture – Currently supported plugins 24 Add your own plugins, extend: surf.store.plugins.RDFReader surf.store.plugins.RDFWriter Redefine the __type__ attribute This is the plugin identifier To install plugins import my_plugin
  • 25. SuRF - installation Available on PyPi easy_install –U surf (to get the latest) Open-source available on Google Code, BSD licence http://code.google.com/p/surfrdf/ 25
  • 26. Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 26
  • 27. DBpedia public SPARQL endpoint - read-only Create the store proxy from surf import* store = Store(reader='sparql-protocol',endpoint='http://dbpedia.org/sparql',                default_graph='http://dbpedia.org') Create the surf session print'Create the session'session =Session(store,{}) Map a dbpedia concept to an internal class PhilCollinsAlbums=session.get_class(ns.YAGO['PhilCollinsAlbums']) SuRF – simple example 27
  • 28. SuRF – simple example DBpedia public SPARQL endpoint - read-only Get all Phill Collins albums all_albums=PhilCollinsAlbums.all() Do something with the albums (display the links to their covers) print'All covers'for a inall_albums:    ifa.dbpedia_name:        print'Cover %s for "%s"'%(a.dbpedia_cover,a.dbpedia_name) 28
  • 29. Outline About DERI Why Semantic Web? Linked Open Data (LOD) RDF (Resource Description Framework) SPARQL O-RDF Mapping (ActiveRDF / SuRF) How? Architecture Installation Examples Simple: access DBpedia (Semantic Wikipedia) More complex: create a blog on top of RDF 29
  • 30. SuRF – integrate into Pylons Create a blog on top of an RDF database Replace SQLAlchemy with SuRF Download and install either AllegroGraph Free Edition (preferred) or Sesame2 http://www.franz.com/downloads/clp/ag_survey Free for up to 50.000.000 triples (records) Install pylons: easy_install pylons Install SuRF: easy_install surf Create a pylons application: paster create -t pylons MyBlog cd MyBlog 30
  • 31. SuRF – Pylons Blog ~/MyBlog/development.ini: In the [app:main] section add rdf_store = localhost rdf_store_port = 6789 rdf_repository = tagbuilder rdf_catalog = repositories ~/MyBlog/myblog/config/environment.py from surf import * rdf_store = Store( reader = 'sparql-sesame2-api', writer = 'sesame2-api', server = config['rdf_store'], port = config['rdf_store_port'], catalog = config['rdf_catalog'], repository = config['rdf_repository']) rdf_session = Session(rdf_store, {}) 31
  • 32. SuRF – Pylons Blog ~/MyBlog/myblog/model/__ init __.py from surf import * definit_model(session): global rdf_session rdf_session = session # register a namespace for the concepts in my blog ns.register(myblog=‘http://example.url/myblog/namespace#’) Blog = rdf_session.get_class(ns.MYBLOG[‘Blog’]) Create the blog controllerpaster controller blog ~/MyBlog/myblog/controllers/blog.py import logging frommyblog.lib.baseimport * log = logging.getLogger(__name__) classBlogController(BaseController): def index(self): c.posts = model.Blog.all(0,5) return render("/blog/index.html") 32
  • 33. SuRF – Pylons Blog Create the template mkdir ~/MyBlog/myblog/templates/blog ~/MyBlog/myblog/templates/blog/index.html <%inherit file="site.html" /> <%def name="title()">MyBlog Home</%def> <p>${len(c.posts)} new blog posts!</p> % for post inc.posts: <p class="content" style="border-style:solid;border-width:1px"> <span class="h3"> ${post.myblog_title} </span> <span class="h4">Posted on: ${post.myblog_date} by ${post.myblog_author}</span> <br> ${post.myblog_content} </p> % endfor ~/MyBlog/myblog/templates/blog/site.html Start the development built in server: paster serve --reload development.ini 33
  • 34. SuRF – Tapping into the Web of Data Can tap into the web of Data SPARQL endpoints Local or remote RDF Stores Plugin framework, allows for more access protocols to be defined Code is generated dynamically (pragmatic bottom up approach): Introspection, meta-programming, exposing a virtual API (defined by the data and the schema) to the developer Can easily be integrated into popular python frameworks pylons 34