Ваша цель состоит в том, чтобы связать все заболевания с тестами, чтобы при любом заболевании вы могли выяснить, какие тесты актуальны и для каждого теста, на какие заболевания он тестируется?
Если это так, вы почти на месте.
Вам не нужны узлы связи, кроме как для того, чтобы помочь вам во время привязки тестов к болезням.В текущем сценарии вы обрабатываете узлы связи так же, как если бы вы создавали реляционную базу данных.Они не добавят никакой ценности в ваш график.Вы можете создать единую взаимосвязь между болезнями и тестами, которая выполнит всю работу.
Вот пошаговый способ загрузки вашей базы данных.(Возможно, он не самый эффективный, но за ним легко следить, и он работает.)
Нормализуйте и загрузите ваши тесты:
load csv with headers from "file:///test_mstr_csv.csv" as line
merge (:Test {testname:line.test_name});
Загрузите ваши болезни (эти показания мне нормализовались)
load csv with headers from "file:///disease_mstr_csv.csv" as line
create (:Disease {did:line.did, diseasename:line.disease_name});
Загрузите узлы ссылок:
load csv with headers from "file:///test_mstr_csv.csv" as line
merge (:Link {testname:line.test_name, parentdiseaseid:line.parent_disease_ID});
Теперь вы можете создать прямую связь между болезнями и тестами с помощью следующего запроса:
match(d:Disease), (l:Link) where d.did = l.parentdiseaseid
with d, l.testname as name
match(t:Test {testname:name}) create (d)<-[:TEST_FOR]-(t);
Этот последний запрос найдет все узлы ссылки для каждого заболевания и извлечет название теста.Затем он просматривает тест и присоединяет его непосредственно к соответствующему заболеванию.
Узлы ссылок теперь избыточны, поэтому вы можете удалить их, если хотите.
Чтобы создать «синие линии»Я полагаю, что для определения общих заболеваний в тестах запустите следующий запрос:
match (d:Disease)<-[]-(:Test)-[]->(e:Disease) where id(d) > id(e)
merge (d)-[:BLUE_LINE]->(e);
Предложение match находит все пары заболеваний с общим тестом, где предложение обеспечивает создание ссылки только в одном направлении, а предложение merge обеспечивает создание только одной ссылки.