В Neo4j я использую алгоритм обнаружения сообщества и возвращаю только те узлы и отношения, принадлежащие сообществу, которым присвоен идентификатор '10', как показано ниже.
MATCH p=(a:Function)-[:BASED_ON]->(b:Requirement)-[:RESULT_OF]->(c:Scenario)
WHERE a.community = 10 AND b.community = 10 AND c.community = 10
RETURN p
Теперь я хочу дополнительно отфильтровать это подмножество базы данных графа и отобразить узлы и отношения, принадлежащие сообществу '10', которые имеют PageRank, определенный с помощью алгоритма центральности PageRank, который больше указанного значения, например 1.
Я пытался сделать это, используя следующее:
MATCH p=(a:Function)-[:BASED_ON]->(b:Requirement)-[:RESULT_OF]->(c:Scenario)
WHERE a.community = 10 AND b.community = 10 AND c.community = 10 AND c.pagerank >1
RETURN p
Однако это не возвращает требуемый результат. Узлы типа «Функция» и «Требование», которые сами имеют pagerank больше 1, исключаются, если они связаны с узлом «Scenario» с pagerank меньше 1, поскольку эти узлы не удовлетворяют предложению MATCH.
Какой запрос я могу использовать, чтобы ТОЛЬКО отобразить узлы, принадлежащие сообществу '10', которые имеют PageRank больше 1, независимо от PageRank узлов, к которым они подключены. Другими словами, я хочу вернуть узлы с pagerank больше 1, даже если они подключены к другому узлу, например, «Сценарий» с pagerank меньше 1, как видно из предыдущего примера кода.
Любая помощь будет принята с благодарностью.