Same Community

The following content is a preview of an upcoming release. For documentation covering current releases, see https://neo4j.com/docs.

This section describes the Same Community algorithm in the Neo4j Graph Data Science library.

Same Community is a way of determining whether two nodes belong to the same community. These communities could be computed by using one of the Community detection.

This algorithm is in the alpha tier. For more information on algorithm tiers, see Graph algorithms.

1. History and explanation

If two nodes belong to the same community, there is a greater likelihood that there will be a relationship between them in future, if there isn’t already.

A value of 0 indicates that two nodes are not in the same community. A value of 1 indicates that two nodes are in the same community.

The library contains a function to calculate closeness between two nodes.

2. Syntax

The following will run the algorithm and return the result:
RETURN gds.alpha.linkprediction.sameCommunity(node1:Node, node2:Node, communityProperty:String)
Table 1. Parameters
Name Type Default Optional Description

node1

Node

null

no

A node

node2

Node

null

no

Another node

communityProperty

String

'community'

yes

The property that contains the community to which nodes belong

3. Same Community algorithm sample

The following will create a sample graph:
CREATE (zhen:Person {name: 'Zhen', community: 1}),
       (praveena:Person {name: 'Praveena', community: 2}),
       (michael:Person {name: 'Michael', community: 1}),
       (arya:Person {name: 'Arya', partition: 5}),
       (karin:Person {name: 'Karin', partition: 5}),
       (jennifer:Person {name: 'Jennifer'})
The following will indicate that Michael and Zhen belong to the same community:
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Zhen'})
RETURN gds.alpha.linkprediction.sameCommunity(p1, p2) AS score
Table 2. Results
score

1.0

The following will indicate that Michael and Praveena do not belong to the same community:
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Praveena'})
RETURN gds.alpha.linkprediction.sameCommunity(p1, p2) AS score
Table 3. Results
score

0.0

If one of the nodes doesn’t have a community, this means it doesn’t belong to the same community as any other node.

The following will indicate that Michael and Jennifer do not belong to the same community:
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Jennifer'})
RETURN gds.alpha.linkprediction.sameCommunity(p1, p2) AS score
Table 4. Results
score

0.0

By default, the community is read from the community property, but it is possible to explicitly state which property to read from.

The following will indicate that Arya and Karin belong to the same community, based on the partition property:
MATCH (p1:Person {name: 'Arya'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.alpha.linkprediction.sameCommunity(p1, p2, 'partition') AS score
Table 5. Results
score

1.0