1+ // Read the similarity relationship from the projection. Variables: dependencies_projection
2+
3+ CALL gds .graph .relationshipProperty .stream (
4+ $dependencies_projection + '-cleaned'
5+ ,'score'
6+ ,['SIMILAR' ]
7+ )
8+ YIELD sourceNodeId
9+ ,targetNodeId
10+ ,relationshipType
11+ ,propertyValue
12+ WITH gds .util .asNode (sourceNodeId ) AS sourceNode
13+ ,gds .util .asNode (targetNodeId ) AS targetNode
14+ ,propertyValue AS similarity
15+ OPTIONAL MATCH (sourceArtifact :Artifact )- [ : CONTAINS ] -> (sourceNode )
16+ OPTIONAL MATCH (targetArtifact :Artifact )- [ : CONTAINS ] -> (targetNode )
17+ WITH sourceNode
18+ ,targetNode
19+ ,replace (last (split (sourceArtifact .fileName , '/' )), '.jar' , '' ) AS sourceArtifactName
20+ ,replace (last (split (targetArtifact .fileName , '/' )), '.jar' , '' ) AS targetArtifactName
21+ ,similarity
22+ WHERE (sourceNode .incomingDependencies > 0
23+ OR sourceNode .outgoingDependencies > 0 )
24+ AND (targetNode .incomingDependencies > 0
25+ OR targetNode .outgoingDependencies > 0 )
26+ RETURN similarity
27+ ,sourceArtifactName
28+ ,coalesce (sourceNode .fqn , sourceNode .fileName , sourceNode .name ) AS sourceNodeName
29+ ,sourceNode .incomingDependencies AS sourceNodeIncomingDependencies
30+ ,sourceNode .outgoingDependencies AS sourceNodeOutgoingDependencies
31+ ,targetArtifactName
32+ ,coalesce (targetNode .fqn , targetNode .fileName , targetNode .name ) AS targetNodeName
33+ ,targetNode .incomingDependencies AS targetNodeIncomingDependencies
34+ ,targetNode .outgoingDependencies AS targetNodeOutgoingDependencies
35+ ORDER BY similarity DESCENDING , sourceNodeName , targetNodeName
0 commit comments