2014-02-19 3 views
0

Я хочу получить весь путь между двумя узлами с отношением «->» между ними. Я прошу мою БД с помощью запроса (Cypher) как то:Все пути между двумя узлами neo4j - неправильный ответ (от neo4j)

START a=node(27), b=node(0) MATCH p=b<-[*]-a RETURN p 

В визуализации Neo4j я получаю это:

Cypher query visualization

Я хочу, чтобы получить список 3 пути:

  • 27 -> 81 -> .... -> 0
  • 27 -> 67 -> .... -> 0
  • 27 -> 24 -> .... -> 0

, но в результате у меня есть 6 путей (вместо 3). Я хочу понять, почему.

+2

Вы можете создать график этого? Легче играть вокруг – Badmiral

+0

Можете ли вы предоставить 6 путей в результате? – RaduK

+0

В результате было много времени, чтобы положить в в комментариях, так вот ссылка на него: https://hubic.com/home/pub/?ruid=aHR0cHM6Ly9sYjEuaHViaWMub3ZoLm5ldC92MS9BVVRIXzYyMDJjZTM1Y2VkNDMyMzBmMjk4YWNlYzZkNDEyYmJkL2RlZmF1bHQvLm92aFB1Yi8xMzkyODgyMzY1XzEzOTM3NDYzNjU/dGVtcF91cmxfc2lnPWYyYzA3ZjBiN2Q5YmQyMTY0ZjdlNjYzNzI3MDFhZWViM2UyNjI1ZjImdGVtcF91cmxfZXhwaXJlcz0xMzkzNzQ2MzY1# – trojek

ответ

1

Это происходит потому, что запрос включает в себя пути длины 0, начиная с 'a'. Если вы посмотрите на файл, который вы предоставили, последние три результата будут такими же, как и первые три, за исключением дублирования узла [0] в начале пути.

+0

Я не понимаю, почему запрос включает пути 0 длины, начиная с «а». Невозможно перейти от «a» к «b» по пути с длиной 0 Не могли бы вы объяснить это мне ясно? Как должен выглядеть запрос, чтобы дать 3 пути? – trojek

+0

Вы можете прочитать здесь о путях длиной 0: http://docs.neo4j.org/chunked/1.9.6/query-match.html#match-zero-length-paths Запрос для 3 путей должен быть чем-то например: START a = узел (27), b = узел (0) MATCH p = b <- [1..3] -a RETURN p – RaduK

+0

Я не уверен, что вы правы. Я думаю, что вы имеете в виду [* 1..3] не [1..3] в соответствии с http://docs.neo4j.org/refcard/2.0/. Это означает, что вы хотите получить путь длиной от 1 до 3. Я проверил длину пути, а первые 3 - 6, 7, 7, а следующие 3 - 7,8,8. Я до сих пор не знаю, как запросить, чтобы получить то, что я хочу. – trojek

1

Ваш (OwlThing) имеет отношение [:subClassOf]. Это не отображается при визуализации, но это то, что

Node[0]{name:"owl:Thing"},:subClassOf[35]{},Node[0]{name:"owl:Thing"} 

в ваших результатах означает. Для каждого пути от этого заканчивается (41)-[43]->(0), также есть (41)-[43]->(0)-[35]->(0), что означает, что ваши результаты удваиваются.

Смежные вопросы