LOAD CSV WITH HEADERS FROM "file:///node1.csv" AS line MERGE (z:概念1{name:line.node1})
LOAD CSV WITH HEADERS FROM "file:///node2.csv" AS line MERGE (z:概念2{name:line.node2})
LOAD CSV WITH HEADERS FROM "file:///tup.csv" AS line match (from:概念1{name:line.node1}),(to:概念2{name:line.node2}) merge (from)-[r:关联{name:line.link}]->(to)
导入并创建节点和关系
1 2 3 4
LOAD CSV FROM 'file:///tup.csv' AS line CREATE (:Map { linkID: line[0], nod1: line[1], link: line[2], nod2:line[3] });
LOAD CSV FROM 'file:///tup.csv' AS line CREATE (line[1])-[r:line[2]]->(line[3]);
显示所有关系
1 2 3 4 5
MATCH (n) RETURN (n)
MATCH (n:概念1{name:"细胞"}) RETURN n
MATCH (n:概念1{name:"细胞"})-[]-() RETURN n
利用apoc创建三元图
apoc是一个插件,需要先安装,然后才能调用。
创建概念1节点
1 2 3
LOAD CSV WITH HEADERS FROM "file:///node1.csv" AS line call apoc.create.node(["Concept1",line.node1],{name:line.node1}) yield node return node
创建概念2节点
1 2 3
LOAD CSV WITH HEADERS FROM "file:///node2.csv" AS line call apoc.create.node(["Concept2",line.node2],{name:line.node2}) yield node return node
创建关联
1 2 3 4
LOAD CSV WITH HEADERS FROM "file:///tup.csv" AS line match (c1:Concept1{name:line.node1}),(c2:Concept2{name:line.node2}) call apoc.create.relationship(c1,line.link,line{.type},c2) yield rel return rel
清除重复节点和关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
MATCH (n:Tag) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node
MATCH (n:Concept2) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node
MATCH (a:Concept1)-[r]-(b:Concept2) WITH a, b, collect(r) as rels CALL apoc.refactor.mergeRelationships(rels,{properties:"combine"}) YIELD rel RETURN count(rel)
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line call apoc.create.node(["Concept",line.hc],{name:line.hc}) yield node return node
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line call apoc.create.node(["Concept",line.tc],{name:line.tc}) yield node return node
去除重复节点
1 2 3 4 5
MATCH (n:Concept) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node
添加链接
1 2 3 4
LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS line match (c1:Concept{name:line.hc}),(c2:Concept{name:line.tc}) call apoc.create.relationship(c1,line.link,line{.role},c2) yield rel return rel
查看效果
1 2 3 4 5 6 7
MATCH p=()-->() RETURN p LIMIT 100
MATCH p=(:Concept{name:"细胞"})-[]->(:Concept{name:"蛋白质"}) RETURN p
MATCH p=(:Concept{name:"细胞"})-[*]->(:Concept{name:"蛋白质"}) RETURN p
显示结果如下:
修改和完善图谱
增加节点
1 2 3
CREATE (n:Person {name:'John'}) RETURN n
CREATE (n:Concept {name:'细胞呼吸'}) RETURN n
增加链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14
MATCH (a:Person {name:'Liz'}), (b:Person {name:'Mike'}) MERGE (a)-[:FRIENDS]->(b)
MATCH (a:Concept {name:'光合作用'}), (b:Concept {name:'光反应'}) MERGE (a)-[:包含]->(b)
MATCH (a:Concept {name:'光合作用'}), (b:Concept {name:'暗反应'}) MERGE (a)-[:包含]->(b)
MATCH p=(:Concept{name:"光合作用"})-[*..3]->() RETURN p LIMIT 100