I have tried you suggested solution, but it’s not feasible to construct multiple such queries (which in the real database are quite complex) for 1000nd of nodes. I understand your explanation on the @recurse function, but I also noticed this behavior that it seems to traverse the same node and same edges multiple times.
Query
{
xref(func: eq(name,["MeSH:C538443","MONDO:0007053"])) @recurse(depth: 5, loop : true) {
id:name
is_xref{
xref:name
}
}
}
Output
{
"extensions": {
"server_latency": {
"parsing_ns": 26298,
"processing_ns": 32704080,
"encoding_ns": 1897765
},
"txn": {
"start_ts": 40003
}
},
"data": {
"xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "OMIM:102300"
},
{
"id": "MeSH:C538443"
},
{
"id": "GARD:0009709"
}
]
}
]
},
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053",
"is_xref": [
{
"id": "UMLS:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MedGen:C3888109",
"is_xref": [
{
"id": "MeSH:C538443"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "OMIM:102300",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
},
{
"id": "MeSH:C538443",
"is_xref": [
{
"id": "UMLS:C3888109"
},
{
"id": "MedGen:C3888109"
},
{
"id": "MONDO:0007053"
}
]
},
{
"id": "GARD:0009709",
"is_xref": [
{
"id": "MONDO:0007053"
}
]
}
]
}
]
}
]
}
]
}
}
I would not expect it to take the same edge back and forth until it reaches the defined depth. Is there a way to avoid this, similarly as the path expander in Neo4j (Neo4j APOC Procedures User Guide) which allows you to specify the uniqueness of nodes and relations while expanding (12.1.4 Uniqueness).