Имея график, в котором молекулы присоединены к общей эшафоте с отношениями [: substructureOf] и где подобные молекулы связаны с eachothers с отношением [: isSimilarTo], является способом вернуть все [: isSimilarTo] отношения для определенного подмножества молекул?Как найти все отношения в cypher
В псевдокоде шифровальщика, рассматривая м как совокупность (подмножество молекул), хотелось бы оценить, что m1 и m2 каждой сим отношений является частью м
MATCH (:Scaffold {Name: 'A'}) <-[:usbstructureOf]- (m:Molecule)
WITH m MATCH (m1:Molecule) -[sim:isSimilarTo]- (m2:Molecule)
WHERE m1 IN m AND m2 IN m
Есть ли собственно Шифр способ написать это? Пример набора данных ниже.
CREATE (:Scaffold {Name: 'A'});
CREATE (:Scaffold {Name: 'B'});
MATCH (s:Scaffold {Name: 'A'}) MERGE (s) -[:substructureOf]->(:Molecule {Name: 'm1'});
MATCH (s:Scaffold {Name: 'A'}) MERGE (s) -[:substructureOf]->(:Molecule {Name: 'm2'});
MATCH (s:Scaffold {Name: 'A'}) MERGE (s) -[:substructureOf]->(:Molecule {Name: 'm3'});
MATCH (s:Scaffold {Name: 'A'}) MERGE (s) -[:substructureOf]->(:Molecule {Name: 'm4'});
MATCH (s:Scaffold {Name: 'B'}) MERGE (s) -[:substructureOf]->(:Molecule {Name: 'm5'});
MATCH (m:Molecule {Name: 'm1'}), (n:Molecule {Name: 'm2'}) CREATE (m) -[isSimilarTo]-> (n);
MATCH (m:Molecule {Name: 'm1'}), (n:Molecule {Name: 'm3'}) CREATE (m) -[isSimilarTo]-> (n);
MATCH (m:Molecule {Name: 'm2'}), (n:Molecule {Name: 'm3'}) CREATE (m) -[isSimilarTo]-> (n);
MATCH (m:Molecule {Name: 'm3'}), (n:Molecule {Name: 'm4'}) CREATE (m) -[isSimilarTo]-> (n);
MATCH (m:Molecule {Name: 'm4'}), (n:Molecule {Name: 'm5'}) CREATE (m) -[isSimilarTo]-> (n);
Я не понимаю ваш вопрос. Вы просто хотите, чтобы все похожие молекулы были теми, которые вы «MATCH» в первом запросе? Больше ограничений? Объясните. –
На самом деле, я хочу получить все отношения подобия. В указанную дату m1, m2, m3 и m4 разделяют эшафот A. Мне хотелось бы знать, похож ли m1 на m2, m3 и m4, а также на то, насколько m2 похожа на m3 и m4 и т. Д., Но я без заботы являются ли m1-m4 похожими на m5. Трудность - мне - это дважды пройти m1-m4. Идея псевдокода заключается в ограничении на ребрах подобия, в которых начальный и конечный узлы являются частью набора m1-m4. Как правильно написать это в cypher, это мой вопрос. – Pierre
На самом деле псевдокод мог работать, если m был коллекцией, а не узлом. С collect (m) MATCH ... – Pierre