@@ -40,12 +40,17 @@ struct Args {
40
40
41
41
#[ arg( long) ]
42
42
out_id_edges_csv_path : String ,
43
+
44
+ #[ arg( long) ]
45
+ add_prefix : String , // used to prepend the subgraph name like hra_kg:g:
43
46
}
44
47
45
48
fn main ( ) -> std:: io:: Result < ( ) > {
46
49
47
50
let args = Args :: parse ( ) ;
48
51
52
+ let add_prefix = args. add_prefix . as_bytes ( ) ;
53
+
49
54
let start_time = std:: time:: Instant :: now ( ) ;
50
55
51
56
@@ -123,7 +128,7 @@ fn main() -> std::io::Result<()> {
123
128
124
129
let sliced = SlicedEntity :: from_json ( & line) ;
125
130
126
- write_node ( & line, & sliced, & all_entity_props, & mut nodes_writer, & mut id_edges_writer) ;
131
+ write_node ( & line, & sliced, & all_entity_props, & mut nodes_writer, & mut id_edges_writer, & add_prefix ) ;
127
132
128
133
n_nodes = n_nodes + 1 ;
129
134
if n_nodes % 1000000 == 0 {
@@ -146,7 +151,7 @@ fn main() -> std::io::Result<()> {
146
151
147
152
let sliced = SlicedEdge :: from_json ( & line) ;
148
153
149
- write_edge ( & line, sliced, & all_edge_props, & mut edges_writer) ;
154
+ write_edge ( & line, sliced, & all_edge_props, & mut edges_writer, & add_prefix ) ;
150
155
151
156
n_edges = n_edges + 1 ;
152
157
if n_edges % 1000000 == 0 {
@@ -165,12 +170,13 @@ fn main() -> std::io::Result<()> {
165
170
Ok ( ( ) )
166
171
}
167
172
168
- fn write_node ( src_line : & [ u8 ] , entity : & SlicedEntity , all_node_props : & HashSet < String > , nodes_writer : & mut BufWriter < & File > , id_edges_writer : & mut BufWriter < & File > ) {
173
+ fn write_node ( src_line : & [ u8 ] , entity : & SlicedEntity , all_node_props : & HashSet < String > , nodes_writer : & mut BufWriter < & File > , id_edges_writer : & mut BufWriter < & File > , add_prefix : & [ u8 ] ) {
169
174
170
175
let refs: Map < String , Value > = serde_json:: from_slice ( entity. _refs . unwrap ( ) ) . unwrap ( ) ;
171
176
172
177
// grebi:nodeId
173
178
nodes_writer. write_all ( b"\" " ) . unwrap ( ) ;
179
+ nodes_writer. write_all ( & add_prefix) . unwrap ( ) ;
174
180
write_escaped_value ( entity. id , nodes_writer) ;
175
181
nodes_writer. write_all ( b"\" ,\" " ) . unwrap ( ) ;
176
182
@@ -215,7 +221,7 @@ fn write_node(src_line:&[u8], entity:&SlicedEntity, all_node_props:&HashSet<Stri
215
221
if header_prop. as_bytes ( ) == row_prop. key {
216
222
if row_prop. key == "id" . as_bytes ( ) {
217
223
for val in row_prop. values . iter ( ) {
218
- write_id_row ( val, id_edges_writer, & entity. id ) ;
224
+ write_id_row ( val, id_edges_writer, & entity. id , & add_prefix ) ;
219
225
}
220
226
}
221
227
for val in row_prop. values . iter ( ) {
@@ -246,17 +252,20 @@ fn write_node(src_line:&[u8], entity:&SlicedEntity, all_node_props:&HashSet<Stri
246
252
nodes_writer. write_all ( b"\n " ) . unwrap ( ) ;
247
253
}
248
254
249
- fn write_edge ( src_line : & [ u8 ] , edge : SlicedEdge , all_edge_props : & HashSet < String > , edges_writer : & mut BufWriter < & File > ) {
255
+ fn write_edge ( src_line : & [ u8 ] , edge : SlicedEdge , all_edge_props : & HashSet < String > , edges_writer : & mut BufWriter < & File > , add_prefix : & [ u8 ] ) {
250
256
251
257
let refs: Map < String , Value > = serde_json:: from_slice ( edge. _refs . unwrap ( ) ) . unwrap ( ) ;
252
258
253
259
edges_writer. write_all ( b"\" " ) . unwrap ( ) ;
260
+ write_escaped_value ( & add_prefix, edges_writer) ;
254
261
write_escaped_value ( edge. from , edges_writer) ;
255
262
edges_writer. write_all ( b"\" ,\" " ) . unwrap ( ) ;
256
263
write_escaped_value ( edge. edge_type , edges_writer) ;
257
264
edges_writer. write_all ( b"\" ,\" " ) . unwrap ( ) ;
265
+ write_escaped_value ( & add_prefix, edges_writer) ;
258
266
write_escaped_value ( edge. to , edges_writer) ;
259
267
edges_writer. write_all ( b"\" ,\" " ) . unwrap ( ) ;
268
+ write_escaped_value ( & add_prefix, edges_writer) ;
260
269
write_escaped_value ( edge. edge_id , edges_writer) ;
261
270
edges_writer. write_all ( b"\" ,\" " ) . unwrap ( ) ;
262
271
@@ -340,7 +349,7 @@ fn parse_json_and_write(buf:&[u8], refs:&Map<String,Value>, writer:&mut BufWrite
340
349
}
341
350
}
342
351
343
- fn write_id_row ( val : & SlicedPropertyValue , id_edges_writer : & mut BufWriter < & File > , grebi_node_id : & [ u8 ] ) {
352
+ fn write_id_row ( val : & SlicedPropertyValue , id_edges_writer : & mut BufWriter < & File > , grebi_node_id : & [ u8 ] , add_prefix : & [ u8 ] ) {
344
353
345
354
let actual_id = {
346
355
if val. kind == JsonTokenType :: StartObject {
@@ -356,6 +365,7 @@ fn write_id_row(val:&SlicedPropertyValue, id_edges_writer:&mut BufWriter<&File>,
356
365
} ;
357
366
358
367
id_edges_writer. write_all ( b"\" " ) . unwrap ( ) ;
368
+ write_escaped_value ( & add_prefix, id_edges_writer) ;
359
369
write_escaped_value ( grebi_node_id, id_edges_writer) ;
360
370
id_edges_writer. write_all ( b"\" ,\" " ) . unwrap ( ) ;
361
371
write_escaped_value ( b"id" , id_edges_writer) ;
0 commit comments