-
Notifications
You must be signed in to change notification settings - Fork 0
/
neo4j_import_commands.txt
114 lines (103 loc) · 4.76 KB
/
neo4j_import_commands.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
CREATE constraint on (t:Token) assert t.id is unique;
CREATE constraint on (s:Sentence) assert s.id is unique;
CREATE constraint on (m:Tale) assert m.id is unique;
CREATE constraint on (l:Lemma) assert l.text is unique;
CREATE constraint on (p:Pos) assert p.text is unique;
CREATE constraint on (c:Character) assert c.id is unique;
CREATE constraint on (r:Relation) assert r.id is unique;
CREATE constraint on (k:Category) assert k.id is unique;
CREATE constraint on (kr:CategoryRelation) assert kr.id is unique;
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/tokens')
YIELD value as tokens
UNWIND tokens._children AS token
CREATE (t:Token {id:token.ID, text:token._text})
WITH collect(t) AS tokens
UNWIND apoc.coll.pairs(tokens)[0..-1] AS value
WITH value[0] AS a, value[1] AS b
CREATE (a)-[:NEXT_TOKEN]->(b);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/sentences')
YIELD value as sentences
UNWIND sentences._children AS sentence
MATCH (t1:Token{id:head(split(sentence.tokenIDs, " "))})
MATCH (t2:Token{id:last(split(sentence.tokenIDs, " "))})
CREATE (s:Sentence{id:sentence.ID})
CREATE (s)-[:SENTENCE_STARTS]->(t1)
CREATE (s)-[:SENTENCE_ENDS]->(t2)
WITH collect(s) as sentences
UNWIND apoc.coll.pairs(sentences)[0..-1] AS value
WITH value[0] as a, value[1] as b
CREATE (a)-[:NEXT_SENTENCE]->(b);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/lemmas')
YIELD value as lemmas
UNWIND lemmas._children AS lemma
MATCH (t:Token{id:lemma.tokenIDs})
MERGE (l:Lemma{text:lemma._text})
CREATE (t)-[:LEMMATIZED]->(l);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/lemmas')
YIELD value as lemmas
UNWIND lemmas._children AS lemma
MATCH (t:Token{id:lemma.tokenIDs}) SET t.Lemma = lemma._text;
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/POStags')
YIELD value as tags
UNWIND tags._children AS pos
MATCH (t:Token{id:pos.tokenIDs})
MERGE (p:Pos{text:pos._text})
CREATE (t)-[:TAGGED]->(p);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/POStags')
YIELD value as tags
UNWIND tags._children AS pos
MATCH (t:Token{id:pos.tokenIDs}) SET t.Pos = pos._text;
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/tales')
YIELD value as tales
UNWIND tales._children AS tale
MATCH (s1:Sentence{id:head(split(tale.sentenceIDs, " "))})
MATCH (s2:Sentence{id:last(split(tale.sentenceIDs, " "))})
CREATE (m:Tale{id:tale.ID, title:tale.title})
CREATE (m)-[:TALE_STARTS]->(s1)
CREATE (m)-[:TALE_ENDS]->(s2)
WITH collect(m) as tales
UNWIND apoc.coll.pairs(tales)[0..-1] AS value
WITH value[0] as a, value[1] as b
CREATE (a)-[:NEXT_TALE]->(b);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/characters')
YIELD value as characters
UNWIND characters._children AS character
WITH split(character.taleIDs, " ") AS taleIDs, split(character.taleFreqs, " ") AS taleFreqs, character
UNWIND range(0, size(taleIDs)-1) AS i
MATCH (m:Tale{id:taleIDs[i]})
MERGE (c:Character{id:character.ID, name:character._text, freq:character.freq})
CREATE (c)-[:APPEARS_IN{frequency:taleFreqs[i]}]->(m);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/relations')
YIELD value as relations
UNWIND relations._children AS relation
WITH split(relation.taleIDs, " ") AS taleIDs, split(relation.taleFreqs, " ") AS taleFreqs, split(relation.characterIDs, " ") AS characterIDs, relation
MATCH (c1:Character{id:characterIDs[0]})
MATCH (c2:Character{id:characterIDs[1]})
MERGE (r:Relation{id:relation.ID, frequency:relation.freq, characters:relation._text})
CREATE (c1)-[:RELATION]->(r)
CREATE (c2)-[:RELATION]->(r)
WITH taleIDs, taleFreqs, r
UNWIND range(0, size(taleIDs)-1) AS i
MATCH (m:Tale{id:taleIDs[i]})
CREATE (r)-[:HAPPENS_IN{frequency:taleFreqs[i]}]->(m);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/categories')
YIELD value as categories
UNWIND categories._children AS category
WITH split(category.taleIDs, " ") AS taleIDs, split(category.taleFreqs, " ") AS taleFreqs, category
UNWIND range(0, size(taleIDs)-1) AS i
MATCH (m:Tale{id:taleIDs[i]})
MERGE (k:Category{id:category.ID, name:category._text, freq:category.freq})
CREATE (k)-[:APPEARS_IN{frequency:taleFreqs[i]}]->(m);
CALL apoc.load.xml("file:///tales_neo4j.tcf.xml",'/TextCorpus/categoriesRelations')
YIELD value as Crelations
UNWIND Crelations._children AS Crelation
WITH split(Crelation.taleIDs, " ") AS taleIDs, split(Crelation.taleFreqs, " ") AS taleFreqs, split(Crelation.categoryIDs, " ") AS categoryIDs, Crelation
MATCH (k1:Category{id:categoryIDs[0]})
MATCH (k2:Category{id:categoryIDs[1]})
MERGE (kr:CategoryRelation{id:Crelation.ID, frequency:Crelation.freq, categories:Crelation._text})
CREATE (k1)-[:RELATION]->(kr)
CREATE (k2)-[:RELATION]->(kr)
WITH taleIDs, taleFreqs, kr
UNWIND range(0, size(taleIDs)-1) AS i
MATCH (m:Tale{id:taleIDs[i]})
CREATE (kr)-[:HAPPENS_IN{frequency:taleFreqs[i]}]->(m);