Specifies the interfaces for and capabilities of the JUNG vertex, edge, and graph classes.

In general, a graph consists of a vertex set and an edge set. The Archetype interfaces are the most general, and should encompass all types of graphs including hypergraphs and graphs with parallel edges. The Graph, Vertex, and Edge interfaces specify the behavior for (binary) graphs in which each edge connects exactly two vertices, and the Directed and Undirected interfaces describe the specific operations available to graphs which contain directed and undirected edges, respectively.

The `impl` package contains implementations of these interfaces, including `SparseGraph`, `BipartiteGraph`, and `KPartiteSparseGraph`.

In addition, the Hypergraph, -Vertex, and -Edge interfaces specify the behavior for the general Hypergraph, in which an edge can contain any number of vertices. The impl package contains HypergraphBPG, an implementation of Hypergraph that uses BipartiteGraph as an underlying data type.