Dear,

thanks for this amazing community, I was looking for a function to be used in cypher to get the node children or node parent, how to achieve this in cypher or apoc

noting that I have node property or label only

Thanks and regards

Dear,

thanks for this amazing community, I was looking for a function to be used in cypher to get the node children or node parent, how to achieve this in cypher or apoc

noting that I have node property or label only

Thanks and regards

Do you mean:

MATCH (child:Person {property: x})-[relationship:CHILD_OF]->(parent:Person) RETURN parent?

MATCH (child:Person {property: x})<-[relationship:PARENT_OF]-(parent:Person) RETURN child?

Or what do you mean? What is your datamodel?

I think there is no inheritance in the standard graph model of neo4j. However, I am also interested in ways to implement concepts of inheritance.

hi, @martin3 thanks for your quick response,

in general, I am trying to get the node children or node parents but it seems we can't know this directly

basically, I have a property name for example "node title" so when I match I use this

`MATCH p = (n{property: x})-[r]->(m) RETURN p`

after this match, it will return the node and all its relationships,

now I was trying to do a match in cypher or using apoc to get children's only of the node with property x.

The main purpose of this is to find the path of a list of nodes and I don't have except their property value in a given list

if you like this is my graph model

```
CREATE (root:A{name:"root"}), (rc1:R_C_1{name:"first child of the root"}), (rc2:R_C_2{name:"second child of the root"}),
(ch1:R_C_1_1{name:"first child of the first root child"}), (ch2:R_C_1_2{name:"second child of the first root child"}),
(node1:NODE_1{name:"node 1"}),(node2:NODE_2{name:"node 2"}), (node3:NODE_3{name:"node 3"})
CREATE (root)-[:X]->(rc1)
CREATE (root)-[:X]->(rc2)
CREATE (rc1)-[:Y]->(ch1)
CREATE (rc1)-[:Y]->(ch2)
CREATE (node1)-[:Z]->(ch1)
CREATE (node2)-[:M]->(ch1)
CREATE (node3)-[:R]->(ch1)
CREATE (node1)-[:Z]->(ch2)
CREATE (node2)-[:M]->(ch2)
```

and I am trying to find the following:

```
// this should return the given nodes only
WITH ['root', 'first child of the root', 'first child of the first root child', 'node 1', 'node 2', 'node 3'] as names
MATCH p = (n1)-[*]-()
WHERE n1.name IN names
RETURN p
// if I tried to find the path of ['root', 'first child of the root', 'node 1', 'node 2', 'node 3'] // this should return the nodes and thier relasionships ['root', 'first child of the root', 'first child of the first root child' , 'second child of the first root child' , 'node 1', 'node 2', 'node 3']
```

hope we can find a solution for this.

Thanks

If I'm understanding the situation properly, the simplest solution would be to assign variables to individual objects instead of the whole path. For example, rather than

**MATCH p = (n:Label{property: x})-[r]->(m)
RETURN p**

you could do

**MATCH (n:Label{property: x})-->(m)
RETURN m**

This performs exactly the same traversal, but only returns the child nodes. No relationships, and no parent.

1 Like

@brian.freitas1 thanks a lot, yes I was looking for a function or cypher query to return the parent or the child of the node, so I have to do what you say

```
MATCH (n:Label{property: x})-->(m)
RETURN m
```

where node m is the child of node n

thanks for you help.