Neo4j Cypher версии 1.8: Вероятная ошибка с идентификаторами отношений

http://console.neo4j.org/r/yx62bk

На графике выше запрос

start n=node(7,8,9) 
match n-[objectScore:score]->o-[:object_of_destination]->d<-[:destination_score]-n, 
o-[:instance_of]->ot, o-[:date]->oDate, d-[:date]->dDate where ot.name='HOTEL'  
return n, o, objectScore,  d;

возвращает o как null.

Измените запрос на удаление идентификатора отношения - objectScore

start n=node(7,8,9) 
match n-[:score]->o-[:object_of_destination]->d<-[:destination_score]-n,
o-[:instance_of]->ot, o-[:date]->oDate, d-[:date]->dDate where ot.name='HOTEL'  
return n, o, objectScore,  d;

и вывод правильно возвращает узел.

Для моего сценария мне нужны оба. Не уверен, как это сделать? Любые предложения по этому поводу.


person robinkc    schedule 30.08.2012    source источник
comment
Хорошая находка. Мне интересно услышать ответ, но я думаю, вам нужно удалить return ... objectScore, чтобы он запустил второй запрос.   -  person Eve Freeman    schedule 30.08.2012


Ответы (1)


Хорошая находка. Мы отслеживаем проблемы Cypher на github, поэтому я открыл там проблему по этому поводу: https://github.com/neo4j/community/issues/837.

Большое спасибо за сообщение об этом!

Изменить: я нашел проблему. По иронии судьбы, простой обходной путь - ввести необязательные отношения. Проблема находится в одном из сопоставителей, которые может использовать Cypher, и, помечая часть вашего шаблона как необязательный, вы заставляете Cypher использовать другое сопоставление. Если хотите

Итак, измените свой МАТЧ на это:

match n-[objectScore:score]->o-[:object_of_destination]->d<-[:destination_score]-n, 
      o-[:instance_of]->ot, 
      o-[:date]->oDate, 
      d-[?:date]->dDate 

Настоящее исправление находится в разработке.

person Andres    schedule 30.08.2012
comment
Просто комментирую: теперь это исправлено в сборке 1.9-SNAPSHOT. - person Eve Freeman; 30.09.2012
comment
Черт: Поскольку репозитории neo4j сливаются, эта проблема исчезла. Где я могу это увидеть? - person Riduidel; 29.01.2013