Сайфер отношения один ко многим - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть CSV-файл с 3 столбцами с именем thingname (названия таких вещей, как A, B, .....) и второй столбец с thingtype (мебель,стационарный ...), а третий столбец - это описание (описание вещи). И сейчас я пытаюсь сделать что-то подобное в соответствии с моим требованием к графику.

Может кто-нибудь помочь мнес написанием запроса. Я получаю следующую ошибку:

Невозможно объединить отношения, используя нулевое значение свойства для thingType

LOAD CSV WITH HEADERS FROM "http://abc:port/a.csv" as line
MERGE (RealThings:realthings {name: "RealThings"})
MERGE (Basic:BasicThings{fieldname:"BasicThings"})
MERGE (Def:DEFINITION{name: "Definition"})
MERGE (e:thing {Name:line.thingname})
MERGE (Basic) -[:Contains]-> (e)
MERGE (RealThings) -[:Has_To_Configure]-> (Basic)
MERGE (e)-[:DEFINITION{thingType:line.thingType,description:line.description}]->(Def)

Есть ли проблемы с этим запросом?Все еще получаю ошибку, и моя цель не выполнена.Пожалуйста, дайте мне знать, где я совершил ошибку.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Проверьте файл a.csv, я думаю, что столбец thingType недоступен ...

0 голосов
/ 21 февраля 2019

То же самое в нескольких запросах.Я думаю, что вы рассчитывали график следующим образом.

RealThings --- (1: 1) ---> BasicThings --- (1: n) ---> thing --- (n:1) ---> DEFINITION

MERGE (RealThings:realthings {name: "RealThings"})
MERGE (Basic:BasicThings{fieldname:"BasicThings"})
MERGE (Def:DEFINITION{name: "Definition"})

внутри LOAD создаст несколько экземпляров вместо одного узла.

Следующий запрос создает график.

CREATE (RealThings:realthings {name: "RealThings"});
CREATE (Basic:BasicThings{fieldname:"BasicThings"});
CREATE (Def:DEFINITION{name: "Definition"});
LOAD CSV WITH HEADERS FROM "http://abc:port/a.csv" AS line
CREATE (e:thing {Name:line.thingname})
WITH e,line MATCH (m:BasicThings),(d:DEFINITION)
CREATE (m)-[:HAS_ROLE]->(e)
CREATE (e)-[:definition{thingType:line.thingType,description:line.description}]->(d);
CREATE (RealThings) -[:Has_To_Configure]-> (Basic);
0 голосов
/ 21 февраля 2019

Некоторые функции, такие как merge, плохо работают с нулевыми значениями.Вы можете использовать опции match и create, чтобы обойти это:

MERGE (e)-[r1:DEFINITION]->(Def) 
on create set r1.thingType = line.thingType 
on create set r1.description = line.description
on match set r1.thingType = line.thingType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...