neo4j中的超图建模

时间:2014-06-05 09:00:32

标签: graph neo4j cypher

MATCH (hank)-[]->(hyperedge)-[]->(cletus)

如果Hank与hyperedge有多种关系,而/或者hyperedge与Cletus有多种关系,但只有一种关系 Hank hyperedge Cletus,这个查询会给我这种关系吗?

假设答案是肯定的,如果我这样做:

CREATE (hank)-[:FOO]->(hyperedge)-[:BAR]->(cletus)

MATCH (hank)-[:FOO]->(hyperedge)-[:BAR]->(cletus)

给我我刚创建的关系,如果Hank与hyperedge有多个FOO关系,而/或者hyperedge与Cletus有多个BAR关系?

1 个答案:

答案 0 :(得分:1)

这取决于,如果hank,hyperedge和cletus是固定的,那么是的,

否则你可能想要使用:

MATCH shortestPath((hank)-[:FOO]->(hyperedge)-[:BAR]->(cletus))

只获得一个。

否则你必须以某种方式“标记”这种关系,例如有财产。

MATCH (hank)-[:FOO {tag:1}]->(hyperedge)-[:BAR  {tag:1}]->(cletus)