User Manual        
   Getting Started
   Using the Graph
   Save/Open Graphs
   Software Design

   PaperScope 1.0

   Bug Reporting
   User Forums


Software Design

PaperScope is programmed completely in Java and utilizes a number of different open source java libraries for displaying the graph and performing other functions.  The program can be basically divided into three components, the query backend and data structure, the graph and graph tools, and the main GUI interface. 

ADS Access and Data Structure

The queries for papers are simply performed by sending query information to the standard HTTP interface of the ADS (  The results are returned in XML format and are then translated using a DOM parser into a Java object array.  The contents of the object array are then checked against the existing papers on the graph for duplicates, and the results are collected and transformed into the GraphML format used by the visualization library. 

Graph Visualization

The graph is built using the Prefuse Visualization library (  Prefuse uses an XML based backend called GraphML to build the graph object and the visualization objects (nodes and edges).  Prefuse is an adaptable library that can be used for constructing many types of visualizations, and the one that PaperScope currently uses is the Radial Graph.  Future versions of PaperScope may include different types of visuals such as tree views or other extended graph views.

GUI and Other Libraries

The main GUI is built using Java Swing and includes the Java 6 provided version of the SwingWorker class (for running queries and other tasks as background threads).  A backwards compatible version of PaperScope that does not use Java 6 is under development for Mac users and users that cannot upgrade to Java 6 (expected to be ready by October 2007).

Other open source libraries used by PaperScope:

  • Apache Lucene ( - Lucene is an open source search engine which is included in PaperScope for providing search results on the nodes in the graph (the 'Search' box tool).

  • BrowserLauncher 2 ( - An open source tool for opening a browser window on the client machine (a task which is more complicated than it sounds...)