Une nodos con nodos comunes con una relación - Neo4j Cypher

Tengo varios nodos de usuario y nodos de habilidades. La relación es entre habilidades y usuarios.

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/xyz.csv" AS row FIELDTERMINATOR '|'
WITH row
LIMIT 15

CREATE (u:User {company: row.company, salary: row.salary_float,         designation: row.designation, experience: row.experience_float})

FOREACH (s IN split(row.tag_skill, "@") |
MERGE (skill:SKILL {name: s})
ON CREATE SET skill.name = s
CREATE (u)-[:KNOWS]->(skill))

También necesito una relación entre los nodos de usuario donde si el usuario A está conectado a un número para los nodos de habilidad [s1, s2, s3, s4, s5, s6] y si el usuario B está conectado a [s1, s3, s4, s6]

El usuario A y el usuario B están en relación (similar) si al menos el 50% de sus habilidades coinciden.

en este ejemplo, A está en una relación con B ya que tienen en común s1, s3, s4, s6, que es más del 50% de coincidencia

Parece que no puedo entender esta consulta cifrada.