Skip to content

GSOC2013_Progress_Denis

lukovnikov edited this page Jul 11, 2013 · 15 revisions

on GSoC: http://www.google-melange.com/gsoc/project/google/gsoc2013/lukovnikov/48001

Project

DBpedia Viewer

Mentors:

  • Claus Stadler
  • Dimitris Kontokostas
  • Sebastian Hellmann

Progress

see also dbpv.wordpress.com

Warming up:

Set up DBpedia mirror: DONE

  • DBpedia datasets import (blogpost):
    • Opensource Virtuoso server up and running locally
    • imported most English DBpedia 3.8 datasets (except pagelinks and some problematic datasets)

Install DBpedia plugin in Virtuoso: done

Work:

AngularJS:

  • Researched AngularJS and BackboneJS. AngularJS seems more powerful, but also heavier and "opiniated".
    • I like how the pieces work together in AngularJS better than in BackboneJS
    • AngularJS has an explicit Controller and is actually a MVC (unlike Backbone)
    • but still needs some research (e.g. hashless routing)
  • Got AngularJS working to fetch entities from DBpedia SPARQL endpoints and results from the Lookup service. Still very basic, but AngularJS works. Routing with hash works.

[end July 8]

  • Got querying the SPARQL endpoint working with Angular's $http through POST requests (to avoid possible errors due to 1900 char limit of Virtuoso URLs). Although, at first, it seemed to work properly only on live.dbpedia.org (will check again).
  • Using a double SELECT query instead of DESCRIBE now to get all triples about some entity dbpedia:X:
SELECT ?hasProperty ?value ?isProperty
WHERE {
   {<http://dbpedia.org/resource/X> ?hasProperty ?value} 
    UNION 
   {?value ?isProperty <http://dbpedia.org/resource/X>}
}
  • enabled hashless routing (HTML5 pushdown)
    • will go back to hash-routing when HTML5 history not supported
  • did a test on how to combine hash(less) routing of AngularJS with noscript (this is not yet RDFa scraping)
    • test succeeded

[end July 9]

  • moved SPARQL query logic to a Angular service (Entity service).
  • did a test about an idea how to combine SPARQLing with retrieving info from the loaded page in the Entity service
    • extended the service so it first looks for a piece of descriptive and correct JSON on a loaded page and if none found, SPARQLs the database. If a "preloaded" entity description is available, this JSON is fed to the proper Angular part of system. After this is done, the DOM element containing the preloaded description is removed.
      • this means we can just include a JSON var with a list of triples at the server (in the HTML) and these will be shown then
      • when we go from the page that was Angularilly built from a server-preloaded JSON, the new page where we go to is loaded in the Angular way (SPA). To ensure the Entity service doesn't read the preloaded JSON again, it is "burnt after reading".

[end July 10]

  • installed dbpedia-dav.vad (DBpedia Virtuoso plugin) and documented it.
  • wrote a couple of blog posts describing AngularJS for this project and no-JS support.
  • did some research on two-step loading of entity triples (to speed up perceived loading time) using the Angular way.
    • would require quite some refactoring

[end July 11]

TODO:

  • research RDFa scraping in JS instead of including JSON at server (less to send vs. more to compute)
Clone this wiki locally