WebGraph++

Click here to view a larger version of this image

Introduction

This software is a translation into C++ of the excellent Webgraph library by P. Boldi and S. Vigna. The original library, written in Java, is easy to use but hampered by some requirements of the Java virtual machine. This C++ translation attempts to preserve much of the ease of use (through integration with the Boost Graph Library), but bypass requirements imposed by a virtual machine.

Like the original Webgraph library, this work is available under the GNU General Public License.

This software is considered still in alpha stage. There are probably bugs. If you find any, please let Jacob know (unless you feel like fixing it!)

To build the library, run make from the main directory (of course, you must have Boost installed). This builds a file called libwebgraph.ar that must be linked in to any projects that use WebGraph++.

Download

You can get the WebGraph++ library on Github. It should compile on any system on which Boost can be compiled. It requires no libraries other than Boost. I’ve only tested it on the Linux and Mac OS X platforms; if you run into trouble getting it to work anywhere else, please let me (Jacob) know. Note that this is basically alpha software and since I’m not currently in active use of it, I probably won’t be able to respond for requests for complicated help. However, if you make major improvements or fixes it would be great if you could let me know so I could reincorporate them. Thanks!

Examples

The bv_graph::graph class (which is the main class in this library) models the Boost Graph concepts VertexListGraph and EdgeListGraph, and can thus be used with any algorithm that can work with these concepts. Code is provided that can be used to convert a graph in AsciiGraph format to a format that can be used with Webgraph. The following are some simple examples:

  • compress_webgraph.cpp: This is the source code for the compression example – to take an AsciiGraph and compress it.
  • print_graph.cpp – Print a webgraph’s vertices and edges – shows how to get and use edge iterators and vertex iterators.

About

This translation of the original Webgraph library is by Jacob Ratkiewicz. He got his Ph.D. in Computer Science at Indiana University. His advisor was Filippo Menczer; he was a member of his NaN research group.Click here for a larger version of the NSF logo

This material is based upon work supported by the National Science Foundation under award No. IIS-0348940. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.