From the webpage:
Welcome to scalax.collection.Graph
Graph for Scala provides basic graph functionality that seamlessly fits into the Scala standard collections library. Like members of scala.collection, graph instances are in-memory containers that expose a rich, user-friendly interface.
Graph for Scala also has ready-to-go implementations of JSON-Import/Export and Dot-Export. Database emulation and distributed graph processing are due to be supported.
Backed by the Scala core team, Graph for Scala started in 2011 as an open source project in the EPFL Scala incubator space on Assembla. Meanwhile it is also hosted on Github.
Want to take it for a spin? Grab the latest release to get started, then visit the Core User Guide (Warning: Broken Link)to learn more!
If you follow the “Core” option under “Users Guides” on the top menu bar, you will find: Core User Guide: Introduction, which reads in part:
Why Use Graph for Scala?
The most important reasons why Graph for Scala speeds up your development are:
- Simplicity: Creating, manipulating and querying
Graph
is intuitive.- Consistency: Graph for Scala seamlessly maintains a consistent state of nodes and edges including prevention of duplicates, intelligent addition and removal.
- Conformity: As a regular collection class,
Graph
has the same “look and feel” as other members of the Scala collection framework. Whenever appropriate, result types are Scala collection types themselves.- Flexibility: All kinds of graphs including mixed graphs, multi-graphs and hypergraphs are supported.
- Functional Style: Graph for Scala facilitates a concise, functional style of utilizing graph functionality, including traversals, not seen in Java-based libraries.
- Extendibility: You can easily customize Graph for Scala to reflect the needs of you application retaining all benefits of
Graph
.- Documentation: Ideal progress curve through adequate documentation.
Look and see!
You will find support for hyperedges, directed hyperedges, edges and directed edges.
Further documentation covers exporting to Dot, moving data into and out of JSON, and constraining graphs.