В генеалогии мы используем ДНК для поиска матчей. Y-ДНК находит патрилинейные спички. Neo4j запрос (где RN представляет собой уникальный идентификатор для человека), который делает это:Neo4j cypher запрос с различными отношениями по признаку пола
MATCH (n{RN:1}) match p=n-[r:father*..22]->m return m.RN as RN,m.fullname as FullName,m.sex as Sex,m.bd as BD,m.dd as DD,length(p) as generation,case when left(m.bd,4)>'1930' and rtrim(m.dd)='' then 'Y' else 'N' end as mtDNA_Candidate, reduce(srt2 ='|', q IN nodes(p)| srt2 + q.RN + '|') AS PathOrder order by generation desc,PathOrder desc
или мы используем митохондриальной ДНК для матрилинейных матчей:
`MATCH (n{RN:1}) match p=n-[r:mother*..22]->m return m.RN as RN,m.fullname as FullName,m.sex as Sex,m.bd as BD,m.dd as DD,length(p) as generation,case when left(m.bd,4)>'1930' and rtrim(m.dd)='' then 'Y' else 'N' end as mtDNA_Candidate, reduce(srt2 ='|', q IN nodes(p)| srt2 + q.RN + '|') AS PathOrder order by generation desc,PathOrder desc`
МОЙ ВОПРОС связано к ДНК Х-хромосомы. Отец дает Х-хромосому только своим дочерям, а мать дает ее всем своим детям. Таким образом, мне нужен запрос cypher, который получает все матери, но только отца, когда есть дочь в ближайшем более позднем временном поколении. Если в более позднем поколении есть сын, я исключаю отца. У меня есть свойство «секс» в узлах со значением либо M или F. дата рождения не всегда известна, поэтому он не может быть использован для определения Направленности
Я попытался это, но получает сообщение об ошибке:
`MATCH (n{RN:1}) match p=n-[r:mother*..22|father*..1]->m return m.RN as RN,m.fullname as FullName,m.sex as Sex,m.bd as BD,m.dd as DD,length(p) as generation,case when left(m.bd,4)>'1930' and rtrim(m.dd)='' then 'Y' else 'N' end as mtDNA_Candidate, reduce(srt2 ='|', q IN nodes(p)| srt2 + q.RN + '|') AS PathOrder order by generation desc,PathOrder desc`
Что представляет собой сообщение об ошибке? –
Не могли бы вы описать свою модель данных более подробно? Что именно вы ищете с точки зрения графика? –
Сообщение об ошибке с третьим запросом - это недопустимый ввод '|': ожидается символ идентификатора, карта свойств или ']' (строка 1, столбец 41 (смещение: 40)) "MATCH (n {RN: 1}) match p = n- [r: mother * .. 22 | father * .. 1] -> m return m.RN as RN, m.fullname как FullName, m.sex as Sex, m.bd as BD, m. dd как DD, длина (p) как генерация, случай, когда left (m.bd, 4)> '1930' и rtrim (m.dd) = '' then 'Y' else 'N' end as mtDNA_Candidate, уменьшить (srt2 = '|', q IN nodes (p) | srt2 + q.RN + '|') AS PathOrder порядок по генерации desc, PathOrder desc " ^ –