Graphs
Qwiery has a graph package with various algorithms and structures to make it easy to create graphs and analyze them.
There are several (easy) ways to create a graph, for example via an edge array:
// tapole graph
Graph.fromEdgeArray(["1->2", "2->2"])
which is equivalent to:
Graph.fromArrows("1->2->2")
These simple formats allow you to create unlabelled graphs
Graph.fromArrows(["1->2->2", "2->3"])
but it does not allow to add a payload to the nodes or edges. For this purpose you need the pseudo-cypher format:
Graph.fromPseudoCypher("(u:Person{name:'Anna'})-[r:Knows]->(v{id:33})")
This will pick up the labels and the payload of nodes and edges. This is not a full Cypher implementation in the sense that traversals and querying are not parsed. The format is meant to be used for data creation, not for data extraction.
Graph generators
There are lots of graph generators and predefined graphs to work with:
- the famous karate club
- the Watts-Strogatz generator
- the Erdos-Renyi generator
and much more. Simply use
Graph.create("small world")
Graph.create("women")
Graph.create("karate")
Graph.create("Erdos", {nodeCount: 120})
and more. There are diverse name variations for the graph or generator and each one has its own set of parameters.
Trees and forests
A tree with a root
const tree = new Tree("root");
can be turned into a forest
const forest = tree.toForest();
and you can add children with
tree.root.appendChild("child");
You will also find depth-first and breadth-first algorithms to traverse the trees and forest.