Основная цель - выделить эго-граф второго порядка в neo4j из набора данныхdge.csv, доступного в Kaggle . Первоначально я загрузил данные, используя руководство здесь .
Видел это и это , но, похоже, они не покрывали мост к neo4j.
Испытание того, что казалось простым подходом с igraph
:
library(igraph)
df <- read.csv("edges.csv")
g <- graph_from_edgelist(as.matrix(df),directed = FALSE)
#pull out 2nd order ego graph for Cap
g_ego <- make_ego_graph(g, 2, nodes = which((V(g)$name)=='CAPTAIN AMERICA'))
#extract the graph object
n_g <- g_ego[[1]]
#create an edge list with names like the edges.csv from Kaggle
named_ego <- get.edgelist(n_g, names = TRUE)
write.csv(named_ego, file = "scnd_order_ego.csv")
Используя те же команды шифра, что и в руководстве выше на этом CSV:
USING PERIODIC COMMIT 5000
LOAD CSV WITH HEADERS FROM
"file:///scnd_order_ego.csv" as row
MERGE (h:Hero{name:row.hero})
MERGE (c:Comic{name:row.comic})
MERGE (h)-[:APPEARED_IN]->(c)
CALL apoc.periodic.iterate(
"MATCH (p1:Hero)-->(:Comic)<--(p2:Hero) where id(p1) < id(p2) RETURN p1,p2",
"MERGE (p1)-[r:KNOWS]-(p2) ON CREATE SET r.weight = 1 ON MATCH SET r.weight
= r.weight + 1"
, {batchSize:5000, parallel:false,iterateList:true})
Я ожидал увидеть однокомпонентный граф, так как думал, что вытащил соответствующий граф эго, но вместо этого:
Чего-то явно не хватает в командах R или cypher?
Как выделить эго-граф второго порядка для отдельного узла в neo4j (предпочтительно, в том числе, как записать его в список ребер, сравнимый с edge.csv)?