Запрос шифра для возврата марковского одеяла

У меня есть DAG со многими узлами. Я ищу шифрованный запрос, чтобы вернуть Markov Blanket данного узла.

ps: Марковское одеяло A состоит из родителей A, детей A и других родителей его детей.

введите здесь описание изображения


person Nishanth    schedule 30.10.2014    source источник
comment
создайте образец набора данных с помощью console.neo4j.org и точно нарисуйте, как должен выглядеть ожидаемый результат запроса   -  person Stefan Armbruster    schedule 30.10.2014


Ответы (2)


Ну, я не знаю, в каком формате вы хотите вернуть данные, и я изобрел метки и тип отношения, но вы можете начать с этого:

MATCH (parent:Person)-[:PARENT_OF]->(a:Person)-[:PARENT_OF]->(child:Person)
WHERE a.identifier = "theOneYouWant"
WITH a, parent, child
MATCH (otherParent:Person)-[:PARENT_OF]->(child)
WHERE otherParent <> a
RETURN parent, a, otherParent, child
person JohnMark13    schedule 30.10.2014

Должны ли существовать все отношения? т. е. должен ли A быть ребенком? Нужно ли A иметь детей? Должны ли дети А иметь других родителей?

Если некоторые отношения являются необязательными, я думаю, вам нужно сделать что-то вроде этого

match (a:A)
optional match (a)<-[:PARENT_OF]-(p1)
optional match (a)-[:PARENT_OF]->(c)
optional match (p2)-[:PARENT_OF]->(c)
return *

Это вернет всех родителей, всех детей и всех других родителей детей.

person Dave Bennett    schedule 30.10.2014
comment
A не может иметь родителей и/или детей. Но да, все узлы и отношения одного типа. - person Nishanth; 31.10.2014
comment
хорошо, если все отношения необязательны. то есть даже узлы на периферии графа на вашей диаграмме имеют марковское одеяло, то я думаю, что приведенный выше шифр ему удовлетворяет. - person Dave Bennett; 31.10.2014