6.5. Export to Gephi

This section describes a procedure that can be used to export data into the Gephi visualization tool.

Gephi has a streaming plugin, that can provide and accept JSON-graph-data in a streaming fashion. The export to Gephi procedure sends data to this end point.

apoc gephi

This section includes:

6.5.1. Installing the plugin

Make sure to install the plugin first and activate it for your workspace (there is a new "Streaming"-tab besides "Layout"), right-click "Master"→"start" to start the server.

You can provide your workspace name (you might want to rename it before you start thes streaming), otherwise it defaults to workspace0

The default Gephi-URL is http://localhost:8080, resulting in http://localhost:8080/workspace0?operation=updateGraph

It can also be configured by adding the following to apoc.conf:

apoc.conf. 

apoc.gephi.url=url

or

apoc.conf. 

apoc.gephi.<key>.url=url

6.5.2. Available Procedure

The table below describes the available procedure:

type qualified name signature description

procedure

apoc.gephi.add

apoc.gephi.add(urlOrKey :: STRING?, workspace :: STRING?, data :: ANY?, weightproperty = null :: STRING?, exportproperties = [] :: LIST? OF STRING?) :: (file :: STRING?, source :: STRING?, format :: STRING?, nodes :: INTEGER?, relationships :: INTEGER?, properties :: INTEGER?, time :: INTEGER?, rows :: INTEGER?, batchSize :: INTEGER?, batches :: INTEGER?, done :: BOOLEAN?, data :: STRING?)

apoc.gephi.add(url-or-key, workspace, data, weightproperty, ['exportproperty']) | streams passed in data to Gephi

6.5.3. Export Format

All nodes and relationships of the passed in data are converted into individual Gephi-Streaming JSON fragements, separated by \r\n. \r\n.

Example of exported JSON. 

{"an":{"123":{"TYPE":"Person:Actor","label":"Tom Hanks",                           x:333,y:222,r:0.1,g:0.3,b:0.5}}}\r\n
{"an":{"345":{"TYPE":"Movie","label":"Forrest Gump",                               x:234,y:122,r:0.2,g:0.2,b:0.7}}}\r\n
{"ae":{"3344":{"TYPE":"ACTED_IN","label":"Tom Hanks",source:"123",target:"345","directed":true,"weight":1.0,r:0.1,g:0.3,b:0.5}}}

Gephi doesn’t render the graph data unless you also provide x,y coordinates in the payload, so the procedures send random ones within a 1000x1000 grid.

Colors are generated per label combination and relationship-type, both of which are also transferred as TYPE property.

Weight properties are stored as a number (integer,float) or a string. If the weight property is invalid or null, a default value of 1.0 will be used.

6.5.4. Examples

You can export your graph as an unweighted network.

The following exports ACTED_IN paths. 

match path = (:Person)-[:ACTED_IN]->(:Movie)
WITH path LIMIT 1000
with collect(path) as paths
call apoc.gephi.add(null,'workspace0', paths) yield nodes, relationships, time
return nodes, relationships, time

You can export your graph as a weighted network, by specifying the property of a relationship, that holds the weight value.

The following exports ACTED_IN paths where the weightproperty property exists on the relationship type. 

match path = (:Person)-[r:ACTED_IN]->(:Movie) where exists r.weightproperty
WITH path LIMIT 1000
with collect(path) as paths
call apoc.gephi.add(null,'workspace0', paths, 'weightproperty') yield nodes, relationships, time
return nodes, relationships, time

You can also export with your graph other properties of your nodes and/or relationship by adding an optional array with the property names you want to export.

The following exports ACTED_IN paths, but only includes the birthYear and role properties. 

match path = (:Person)-[r:ACTED_IN]->(:Movie) where exists r.weightproperty
WITH path LIMIT 1000
with collect(path) as paths
call apoc.gephi.add(null,'workspace0', paths, 'weightproperty',['birthYear', 'role']) yield nodes, relationships, time
return nodes, relationships, time