# Graph Functions

A lot of graph functions accept a vertex (or edge) example as parameter as defined in the next sections.

Examples will explain the API on the the city graph:

## Get vertex *from* of an edge

Get the source vertex of an edge

`graph._fromVertex(edgeId)`

Returns the vertex defined with the attribute *_from* of the edge with *edgeId* as its *_id*.

**Parameters**

- edgeId (required)
*_id*attribute of the edge

## Get vertex *to* of an edge

Get the target vertex of an edge

`graph._toVertex(edgeId)`

Returns the vertex defined with the attribute *_to* of the edge with *edgeId* as its *_id*.

**Parameters**

- edgeId (required)
*_id*attribute of the edge

## Get Neighbors

Get `all neighbors`

of the vertices defined by the example

`graph._neighbors(vertexExample, options)`

The function accepts an id, an example, a list of examples or even an empty example as parameter for vertexExample.

The complexity of this method is **O(n*m^x)** with *n* being the vertices defined by the parameter vertexExamplex, *m* the average amount of neighbors and *x* the maximal depths. Hence the default call would have a complexity of **O(n*m)**;

**Parameters**

- vertexExample (optional)
- options (optional) An object defining further options. Can have the following values:
*direction*: The direction of the edges. Possible values are*outbound*,*inbound*and*any*(default).*edgeExamples*: Filter the edges*neighborExamples*: Filter the neighbor vertices*edgeCollectionRestriction*: One or a list of edge-collection names that should be considered to be on the path.*vertexCollectionRestriction*: One or a list of vertex-collection names that should be considered on the intermediate vertex steps.*minDepth*: Defines the minimal number of intermediate steps to neighbors (default is 1).*maxDepth*: Defines the maximal number of intermediate steps to neighbors (default is 1).

## Get Common Neighbors

Get all `common neighbors`

of the vertices defined by the examples.

`graph._commonNeighbors(vertex1Example, vertex2Examples, optionsVertex1, optionsVertex2)`

This function returns the intersection of *graph_module._neighbors(vertex1Example, optionsVertex1)* and *graph_module._neighbors(vertex2Example, optionsVertex2)*.

For parameter documentation see _neighbors.

The complexity of this method is **O(n*m^x)** with *n* being the maximal amount of vertices defined by the parameters vertexExamples, *m* the average amount of neighbors and *x* the maximal depths. Hence the default call would have a complexity of **O(n*m)**;

### Count Common Neighbors

Get the amount of common neighbors of the vertices defined by the examples.

`graph._countCommonNeighbors(vertex1Example, vertex2Examples, optionsVertex1, optionsVertex2)`

Similar to _commonNeighbors but returns count instead of the elements.

## Get Common Properties

Get the vertices of the graph that share `common properties`

.

`graph._commonProperties(vertex1Example, vertex2Examples, options)`

The function accepts an id, an example, a list of examples or even an empty example as parameter for vertex1Example and vertex2Example.

The complexity of this method is **O(n)** with *n* being the maximal amount of vertices defined by the parameters vertexExamples.

**Parameters**

- vertex1Examples (optional) Filter the set of source vertices
- vertex2Examples (optional) Filter the set of vertices compared to.
- options (optional) An object defining further options. Can have the following values:
*vertex1CollectionRestriction*: One or a list of vertex-collection names that should be searched for source vertices.*vertex2CollectionRestriction*: One or a list of vertex-collection names that should be searched for compare vertices.*ignoreProperties*: One or a list of attribute names of a document that should be ignored.

## Count Common Properties

Get the amount of vertices of the graph that share common properties.

`graph._countCommonProperties(vertex1Example, vertex2Examples, options)`

Similar to _commonProperties but returns count instead of the objects.

## Get Paths

The `_paths`

function returns all paths of a graph.

`graph._paths(options)`

This function determines all available paths in a graph.

The complexity of this method is **O(n*n*m)** with *n* being the amount of vertices in the graph and *m* the average amount of connected edges;

**Parameters**

- options (optional) An object containing options, see below:
*direction*: The direction of the edges. Possible values are*any*,*inbound*and*outbound*(default).*followCycles*(optional): If set to*true*the query follows cycles in the graph, default is false.*minLength*(optional): Defines the minimal length a path must have to be returned (default is 0).*maxLength*(optional): Defines the maximal length a path must have to be returned (default is 10).

## Get Shortest Path

The `_shortestPath`

function returns all shortest paths of a graph.

`graph._shortestPath(startVertexExample, endVertexExample, options)`

This function determines all shortest paths in a graph. The function accepts an id, an example, a list of examples or even an empty example as parameter for start and end vertex.

The length of a path is by default the amount of edges from one start vertex to an end vertex. The option weight allows the user to define an edge attribute representing the length.

**Parameters**

- startVertexExample (optional) An example for the desired start Vertices.
- endVertexExample (optional) An example for the desired end Vertices.
- options (optional) An object containing options, see below:
*direction*: The direction of the edges as a string. Possible values are*outbound*,*inbound*and*any*(default).*edgeCollectionRestriction*: One or multiple edge collection names. Only edges from these collections will be considered for the path.*startVertexCollectionRestriction*: One or multiple vertex collection names. Only vertices from these collections will be considered as start vertex of a path.*endVertexCollectionRestriction*: One or multiple vertex collection names. Only vertices from these collections will be considered as end vertex of a path.*weight*: The name of the attribute of the edges containing the length as a string.*defaultWeight*: Only used with the option*weight*. If an edge does not have the attribute named as defined in option*weight*this default is used as length. If no default is supplied the default would be positive Infinity so the path could not be calculated.

## Get Distance To

The `_distanceTo`

function returns all paths and there distance within a graph.

`graph._distanceTo(startVertexExample, endVertexExample, options)`

This function is a wrapper of graph._shortestPath. It does not return the actual path but only the distance between two vertices.

## Absolute Eccentricity

Get the eccentricity{:target="_blank"} of the vertices defined by the examples.

`graph._absoluteEccentricity(vertexExample, options)`

The function accepts an id, an example, a list of examples or even an empty example as parameter for vertexExample.

**Parameters**

- vertexExample (optional) Filter the vertices.
- options (optional) An object defining further options. Can have the following values:
*direction*: The direction of the edges. Possible values are*outbound*,*inbound*and*any*(default).*edgeCollectionRestriction*: One or a list of edge-collection names that should be considered to be on the path.*startVertexCollectionRestriction*: One or a list of vertex-collection names that should be considered for source vertices.*endVertexCollectionRestriction*: One or a list of vertex-collection names that should be considered for target vertices.*weight*: The name of the attribute of the edges containing the weight.*defaultWeight*: Only used with the option*weight*. If an edge does not have the attribute named as defined in option*weight*this default is used as weight. If no default is supplied the default would be positive infinity so the path and hence the eccentricity can not be calculated.

## Get Eccentricity

Get the normalized eccentricity{:target="_blank"} of the vertices defined by the examples.

`graph._eccentricity(vertexExample, options)`

Similar to _absoluteEccentricity but returns a normalized result.

## Get Absolute Closeness

Get the closeness of the vertices defined by the examples.

`graph._absoluteCloseness(vertexExample, options)`

The function accepts an id, an example, a list of examples or even an empty example as parameter for *vertexExample*.

**Parameters**

- vertexExample (optional) Filter the vertices.
- options (optional) An object defining further options. Can have the following values:
*direction*: The direction of the edges. Possible values are*outbound*,*inbound*and*any*(default).*edgeCollectionRestriction*: One or a list of edge-collection names that should be considered to be on the path.*startVertexCollectionRestriction*: One or a list of vertex-collection names that should be considered for source vertices.*endVertexCollectionRestriction*: One or a list of vertex-collection names that should be considered for target vertices.*weight*: The name of the attribute of the edges containing the weight.*defaultWeight*: Only used with the option*weight*. If an edge does not have the attribute named as defined in option*weight*this default is used as weight. If no default is supplied the default would be positive infinity so the path and hence the closeness can not be calculated.

## Get Closeness

Get the normalized closeness{:target="_blank"} of graphs vertices.

`graph._closeness(options)`

Similar to _absoluteCloseness but returns a normalized value.

## Get Absolute Betweenness

Get the betweenness{:target="_blank"} of all vertices in the graph.

`graph._absoluteBetweenness(vertexExample, options)`

**Parameters**

- vertexExample (optional) Filter the vertices, see Definition of examples
- options (optional) An object defining further options. Can have the following values:
*direction*: The direction of the edges. Possible values are*outbound*,*inbound*and*any*(default).*weight*: The name of the attribute of the edges containing the weight.*defaultWeight*: Only used with the option*weight*. If an edge does not have the attribute named as defined in option*weight*this default is used as weight. If no default is supplied the default would be positive infinity so the path and hence the betweenness can not be calculated.

## Get Betweenness

Get the normalized betweenness of graphs vertices.

`graph_module._betweenness(options)`

Similar to _absoluteBetweenness but returns normalized values.

## Get Radius

Get the radius of a graph.

**Parameters**

- options (optional) An object defining further options. Can have the following values:
*direction*: The direction of the edges. Possible values are*outbound*,*inbound*and*any*(default).*weight*: The name of the attribute of the edges containing the weight.*defaultWeight*: Only used with the option*weight*. If an edge does not have the attribute named as defined in option*weight*this default is used as weight. If no default is supplied the default would be positive infinity so the path and hence the radius can not be calculated.

## Get Diameter

Get the diameter{:target="_blank"} of a graph.

`graph._diameter(graphName, options)`

**Parameters**

- options (optional) An object defining further options. Can have the following values:
*direction*: The direction of the edges. Possible values are*outbound*,*inbound*and*any*(default).*weight*: The name of the attribute of the edges containing the weight.*defaultWeight*: Only used with the option*weight*. If an edge does not have the attribute named as defined in option*weight*this default is used as weight. If no default is supplied the default would be positive infinity so the path and hence the radius can not be calculated.