forked from docker/genai-stack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
output_example.json
5265 lines (5265 loc) · 541 KB
/
output_example.json
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"items": [
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 16342673,
"reputation": 117,
"user_id": 11803228,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/d09735ea42185e8b0712bf96aa36ada9?s=256&d=identicon&r=PG",
"display_name": "FlagT",
"link": "https://stackoverflow.com/users/11803228/flagt"
},
"is_accepted": false,
"score": 0,
"creation_date": 1702190081,
"answer_id": 77633889,
"question_id": 77633753,
"body_markdown": "In the topmost MATCH statement, I didn't define a name for the Relationships, such as r1, so the returned data did not include these relationships. Oddly enough, the browser managed to return data using the unnamed Cypher, which might involve some behind-the-scenes processing. By modifying the Cypher query, I have resolved this issue.",
"title": "The same Cypher query yields inconsistent results between the SDK and the browser, with several Relationships missing"
}
],
"owner": {
"account_id": 16342673,
"reputation": 117,
"user_id": 11803228,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/d09735ea42185e8b0712bf96aa36ada9?s=256&d=identicon&r=PG",
"display_name": "FlagT",
"link": "https://stackoverflow.com/users/11803228/flagt"
},
"is_answered": false,
"view_count": 21,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1702185335,
"question_id": 77633753,
"body_markdown": "I suspect that I have encountered a bug. When querying with the Go SDK, the data results obtained are inconsistent with those in the Neo4j browser, with several Relationships missing.\r\n\r\n Neo4j Version: Neo4j Kernel 5.12.0 community\r\n\r\n Neo4j Mode: Single instance\r\n\r\n Driver version: Go driver v5.12.0\r\n\r\n Operating System: centos\r\n\r\nMy Cypher is\r\n\r\n```\r\nMATCH (n1:AAA_IngressOfSecurityGroup {AssetsAccountId:"aaaa"})-[:IngressOfSecurityGroup]->(n2:AAA_SecurityGroup {AssetsAccountId:"aaaa"})-[:SecurityGroupOfNetworkInterface]->(n3:AAA_NetworkInterface {AssetsAccountId:"aaaa"})-[:NetworkInterfaceOfCvm]->(n4:AAA_CvmInstance {AssetsAccountId:"aaaa",AssetUniqueId:"aaaa-165d2740e7fa",AssetsVersion:"1702108924"}) WHERE n4.InstanceState = 'RUNNING' AND n4.RestrictState = 'NORMAL' AND n1.Action = 'ACCEPT' AND (n1.Ipv6CidrBlock = "::/0" OR n1.CidrBlock = "0.0.0.0/0") AND toLower(n1.Port) = 'all' AND (toLower(n1.Protocol) = 'tcp' or toLower(n1.Protocol) = 'udp' or toLower(n1.Protocol)= 'all' ) WITH n1, n2, n3, n4 WHERE ALL (groupId IN n3.GroupSet WHERE NOT EXISTS { MATCH (n2_other:AAA_SecurityGroup {AssetsAccountId:"aaaa", SecurityGroupId: groupId})-[:IngressOfSecurityGroup]->(n1_other:AAA_IngressOfSecurityGroup) WHERE n1_other.Action = 'DROP' AND ((n1_other.CidrBlock = "0.0.0.0/0" OR n1_other.Ipv6CidrBlock = "::/0") AND toLower(n1_other.Port) = 'all') AND NOT EXISTS { MATCH (n1_smaller:AAA_IngressOfSecurityGroup)-[:IngressOfSecurityGroup]->(n2_other) WHERE toInteger(n1_smaller.PolicyIndex) < toInteger(n1_other.PolicyIndex) } } ) OPTIONAL MATCH p2 = (n7:AAA_PublicIp {AssetsAccountId:"aaaa"})-[:PublicIpToVpc]->(n6:AAA_Vpc {AssetsAccountId:"aaaa"})-[:SubnetsInVPC]->(n5:AAA_Subnet {AssetsAccountId:"aaaa"})-[:NetworkInterfaceInSubnet]->(n3) WHERE p2 IS NOT NULL OPTIONAL MATCH p3 = (n8:AAA_Eip {AssetsAccountId:"aaaa"})-[:EipOToVpc]->(n6)-[:SubnetsInVPC]->(n5)-[:NetworkInterfaceInSubnet]->(n3) WHERE p3 IS NOT NULL WITH DISTINCT n4, n1, n2, n3, n6, n7, p2, p3 RETURN n1, n2, n3,n4, n6, n7, p2, p3\r\n```\r\n\r\nThe code I use to process the data returned from Neo4j is as follows.\r\n\r\n```\r\nresult, session, err := global.Neo4j.RunCypherQuery(body.Cypher, nil)\r\n\tif err != nil {\r\n\t\tlogger.Log.Error("RunCypherQuery error: " + err.Error())\r\n\t\tresponse := responses.NewErrorResponse(responses.StatusCodeUnknownErr, err.Error())\r\n\t\tc.JSON(http.StatusOK, response)\r\n\t\treturn\r\n\t}\r\n\r\n\tvar nodes []neo4j.Node\r\n\tvar relationships []neo4j.Relationship\r\n\r\n\tseenNodes := make(map[int64]bool)\r\n\tseenRelationships := make(map[int64]bool)\r\n\tfor result.Next() {\r\n\t\trecord := result.Record()\r\n\t\tfor _, value := range record.Values {\r\n\t\t\tif value == nil {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tswitch v := value.(type) {\r\n\t\t\tcase neo4j.Node:\r\n\t\t\t\tif _, found := seenNodes[v.Id]; !found {\r\n\t\t\t\t\tseenNodes[v.GetId()] = true\r\n\t\t\t\t\tnodes = append(nodes, v)\r\n\t\t\t\t}\r\n\t\t\tcase neo4j.Relationship:\r\n\t\t\t\tif _, found := seenRelationships[v.Id]; !found {\r\n\t\t\t\t\tseenRelationships[v.GetId()] = true\r\n\t\t\t\t\trelationships = append(relationships, v)\r\n\t\t\t\t}\r\n\t\t\tcase neo4j.Path:\r\n\t\t\t\tfor _, node := range v.Nodes {\r\n\t\t\t\t\tif _, found := seenNodes[node.Id]; !found {\r\n\t\t\t\t\t\tseenNodes[node.GetId()] = true\r\n\t\t\t\t\t\tnodes = append(nodes, node)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfor _, rel := range v.Relationships {\r\n\t\t\t\t\tif _, found := seenRelationships[rel.Id]; !found {\r\n\t\t\t\t\t\tseenRelationships[rel.GetId()] = true\r\n\t\t\t\t\t\trelationships = append(relationships, rel)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\tcase []interface{}:\r\n\t\t\t\tfor _, item := range v {\r\n\t\t\t\t\tswitch elem := item.(type) {\r\n\t\t\t\t\tcase neo4j.Node:\r\n\t\t\t\t\t\tif _, found := seenNodes[elem.GetId()]; !found {\r\n\t\t\t\t\t\t\tseenNodes[elem.GetId()] = true\r\n\t\t\t\t\t\t\tnodes = append(nodes, elem)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\tcase neo4j.Relationship:\r\n\t\t\t\t\t\tif _, found := seenRelationships[elem.GetId()]; !found {\r\n\t\t\t\t\t\t\tseenRelationships[elem.GetId()] = true\r\n\t\t\t\t\t\t\trelationships = append(relationships, elem)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tlogger.Log.Error("Unexpected type in []interface{}: %T", item)\r\n\t\t\t\t\t\tresponse := responses.NewErrorResponse(responses.StatusCodeUnknownErr, errors.New(fmt.Sprintf("Unexpected type in []interface{}: %T", item)).Error())\r\n\t\t\t\t\t\tc.JSON(http.StatusOK, response)\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\tlogger.Log.Error("Unexpected type: %T", v)\r\n\t\t\t\tresponse := responses.NewErrorResponse(responses.StatusCodeUnknownErr, errors.New(fmt.Sprintf("Unexpected type: %T", v)).Error())\r\n\t\t\t\tc.JSON(http.StatusOK, response)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n```\r\n\r\n```\r\nfunc (c *Client) RunCypherQuery(query string, params map[string]interface{}) (neo4j.Result, neo4j.Session, error) {\r\n\tsession := c.driver.NewSession(neo4j.SessionConfig{})\r\n\tfmt.Println(query)\r\n\tresult, err := session.Run(query, params)\r\n\tif err != nil {\r\n\t\treturn nil, session, err\r\n\t}\r\n\treturn result, session, nil\r\n}\r\n```\r\n\r\nin neo4j desktop search result is\r\n\r\n[![enter image description here][1]][1]\r\n\r\n\r\nin my code search result is\r\n\r\n[![enter image description here][2]][2]\r\n\r\nThe position marked with a red "X" indicates that no results were found.\r\n\r\nIn the RunCypherQuery method, the data for these three Relationships were not found in the returned result.\r\n\r\n\r\n\r\n [1]: https://i.stack.imgur.com/LBl50.png\r\n [2]: https://i.stack.imgur.com/rAFEJ.png",
"link": "https://stackoverflow.com/questions/77633753/the-same-cypher-query-yields-inconsistent-results-between-the-sdk-and-the-browse",
"title": "The same Cypher query yields inconsistent results between the SDK and the browser, with several Relationships missing"
},
{
"tags": [
"neo4j",
"neo4j-browser"
],
"answers": [
{
"owner": {
"account_id": 1575719,
"reputation": 19504,
"user_id": 2662355,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/6ea0a9d988f145b0e666dfdd96374736?s=256&d=identicon&r=PG",
"display_name": "Christophe Willemsen",
"link": "https://stackoverflow.com/users/2662355/christophe-willemsen"
},
"is_accepted": false,
"score": 0,
"creation_date": 1702120797,
"answer_id": 77631068,
"question_id": 77630912,
"body_markdown": "In the neo4j browser, the `connect result nodes` option is enabled by default. \r\n\r\n[![enter image description here][1]][1]\r\n\r\nWhen you return nodes from queries, the browser will make in the background an additional query for finding relationships between the nodes and automatically display them.\r\n\r\nFor example, if I would return only two nodes with Cypher\r\n\r\n```\r\nMATCH (n:Person {name: "Christophe"})\r\nMATCH (s:Song {title: "Numb"})\r\nRETURN n, s\r\n```\r\n\r\nIt will find there is an existing relationship between them in the background and will fetch it from the database and display it\r\n\r\n[![enter image description here][2]][2]\r\n\r\n\r\n [1]: https://i.stack.imgur.com/f1cL7.png\r\n [2]: https://i.stack.imgur.com/TcVZr.png",
"title": "Neo4j Web Browser : Display phantom data (data does not exists on server)"
}
],
"owner": {
"account_id": 30104260,
"reputation": 1,
"user_id": 23070531,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/276537b5cf8e3551b79763bb76d1b391?s=256&d=identicon&r=PG&f=y&so-version=2",
"display_name": "Nizar",
"link": "https://stackoverflow.com/users/23070531/nizar"
},
"is_answered": false,
"view_count": 22,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1702117013,
"question_id": 77630912,
"body_markdown": "We observe unexplainable behaviour with Neo4j Web Browser.\r\n\r\n- Cypher query return only 3 relationships but the web browser display 5.\r\n\r\n- As you can see, on the right side we have this text : Displaying 4 Nodes, 3 rel\r\n But the graph shows 5 rel.\r\n\r\n- The table Tab in the Web Browser shows 3 records and the cypher results return 3 rel\r\n\r\n- We observe this behaviors with other queries, it's not only for the query shared here.\r\n\r\n- When we refresh the Neo4j WebBrowser (reload/refresh the chrome browser tab), sometimes we have the display with the right data, sometimes not\r\n\r\n[a snapshot to help to inderstand](https://i.stack.imgur.com/qVgc9.png)\r\n\r\nPS : we run 5.14.0 community version and Neo4j Web Browser 5.12.0\r\n\r\nRegards,\r\nNizar",
"link": "https://stackoverflow.com/questions/77630912/neo4j-web-browser-display-phantom-data-data-does-not-exists-on-server",
"title": "Neo4j Web Browser : Display phantom data (data does not exists on server)"
},
{
"tags": [
"neo4j",
"cypher",
"graph-databases",
"graph-data-science"
],
"answers": [
{
"owner": {
"account_id": 5007043,
"reputation": 672,
"user_id": 4024409,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/-4JS5nVp4cYs/AAAAAAAAAAI/AAAAAAAAAAA/9dswBlPXPdw/photo.jpg?sz=256",
"display_name": "Vincent Rupp",
"link": "https://stackoverflow.com/users/4024409/vincent-rupp"
},
"is_accepted": true,
"score": 2,
"creation_date": 1701970942,
"answer_id": 77622086,
"question_id": 77621751,
"body_markdown": "The frequency of graph changes will determine if you should batch or not.\r\n\r\nTo your main question, FastRP depends on a node and its neighbors, the neighbors of those, the neighbors of those, etc.\r\n\r\nThere's a configuration parameter IterationWeights which does two things:\r\n1. Determines the number of neighbor-neighbor-neighbors to look at.\r\n2. Determines how relevant each degree of separation is.\r\n\r\nIf you set IterationWeights to [1.0], FastRP will only look at immediate neighbors.\r\n\r\nIf you use [0.0, 1.0] then first and second-degree neighbors will be used, weighted equally.\r\n\r\nTo update your embeddings when changes occur, let's say you're using second-degree neighbors and your node A changes. Create a projection with just A, its neighbors and neighbor-neighbors, and run FastRP in write mode.\r\n\r\nSame idea for batch updates, just select the nodes that have changed and everything up to 2 hops out from those.",
"title": "Updating Neo4j Embeddings on Graph Change"
}
],
"owner": {
"account_id": 27718658,
"reputation": 25,
"user_id": 21159756,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a/AEdFTp7ViXMCr1RVFcrYuGXAB5pQU9wN_yd6j-8qcuOQ=k-s256",
"display_name": "Chetra Abeid",
"link": "https://stackoverflow.com/users/21159756/chetra-abeid"
},
"is_answered": true,
"view_count": 39,
"favorite_count": 0,
"accepted_answer_id": 77622086,
"answer_count": 1,
"score": 2,
"creation_date": 1701967766,
"question_id": 77621751,
"body_markdown": "I am using the Neo4j Graph Data Science (GDS) library with Fast Random Projection (FastRP) for graph embeddings. I'm facing challenges in updating these embeddings efficiently in response to frequent graph changes (additions/removals of nodes and edges). I'm particularly interested in understanding the best practices for updating these embeddings - should I opt for incremental updates after each change, or batch processing at regular intervals?\r\n\r\nAdditionally, I'm curious if it's feasible to update embeddings for only the affected sub-graph while maintaining the integrity and consistency of embeddings as if they were done on the global graph projection.",
"link": "https://stackoverflow.com/questions/77621751/updating-neo4j-embeddings-on-graph-change",
"title": "Updating Neo4j Embeddings on Graph Change"
},
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701883396,
"answer_id": 77615121,
"question_id": 77614613,
"body_markdown": "Assuming `id` and `type` are properties, this works:\r\n```sql\r\nMATCH (n0 {id: "A"})--(n1 {type:2})--(n2)\r\nWHERE n2.id IN ["D", "E"]\r\nWITH collect(DISTINCT [n0, n1]) AS r1, collect(DISTINCT [n1, n2]) AS r2\r\nWITH \r\n COLLECT {\r\n WITH r1\r\n UNWIND r1 AS r\r\n WITH r[0].id AS lhs, 'type' + r[1].type AS rhs, count(*) AS num\r\n RETURN {lhs: lhs, rhs: rhs, num: num }\r\n } AS first, \r\n COLLECT {\r\n WITH r2\r\n UNWIND r2 AS r\r\n WITH 'type' + r[0].type AS lhs, r[1].id AS rhs, count(*) AS num\r\n RETURN {lhs: lhs, rhs: rhs, num: num }\r\n } AS second\r\nUNWIND first + second AS cn\r\nRETURN \r\n cn.lhs + ' to ' + cn.rhs + ': ' + cn.num + \r\n CASE \r\n WHEN cn.num = 1 THEN ' connection' \r\n ELSE ' connections' \r\n END AS result\r\n```\r\nIt's not pretty ...",
"title": "Count distinct node pairings in a multihop match"
},
{
"owner": {
"account_id": 947871,
"reputation": 64252,
"user_id": 974731,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/8f54ba41697411b238379022f9a6df56?s=256&d=identicon&r=PG",
"display_name": "cybersam",
"link": "https://stackoverflow.com/users/974731/cybersam"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701900782,
"answer_id": 77616605,
"question_id": 77614613,
"body_markdown": "This query might suffice (it repeats the same `A_to_type2` count in each result row):\r\n\r\n MATCH ({id: "A"})-[r1]-({type:2})-[r2]-(n2)\r\n WHERE n2.id IN ["D", "E"]\r\n WITH COUNT(DISTINCT r1) AS A_to_type2, COLLECT({n2Id: n2.id, r2: r2}) AS data\r\n UNWIND data AS d\r\n RETURN A_to_type2, d.n2Id AS n2Id, COUNT(DISTINCT d.r2) AS type2_to_n2Id\r\n\r\nOutput for your sample data:\r\n\r\n ╒══════════╤════╤═════════════╕\r\n │A_to_type2│n2Id│type2_to_n2Id│\r\n ╞══════════╪════╪═════════════╡\r\n │2 │"D" │2 │\r\n ├──────────┼────┼─────────────┤\r\n │2 │"E" │1 │\r\n └──────────┴────┴─────────────┘\r\n\r\nOr, to return a single row with a collection of the type2_to_n2Id counts:\r\n\r\n MATCH ({id: "A"})-[r1]-({type:2})-[r2]-(n2)\r\n WHERE n2.id IN ["D", "E"]\r\n WITH COUNT(DISTINCT r1) AS A_to_type2, COLLECT({n2Id: n2.id, r2: r2}) AS data\r\n UNWIND data AS d\r\n WITH A_to_type2, d.n2Id AS n2Id, COUNT(DISTINCT d.r2) AS cnt\r\n RETURN A_to_type2, COLLECT({n2Id: n2Id, count: cnt}) AS type2_to_n2Id\r\n\r\nSample result:\r\n\r\n ╒══════════╤══════════════════════════════════════════════╕\r\n │A_to_type2│type2_to_n2Id │\r\n ╞══════════╪══════════════════════════════════════════════╡\r\n │2 │[{count: 2, n2Id: "D"}, {count: 1, n2Id: "E"}]│\r\n └──────────┴──────────────────────────────────────────────┘",
"title": "Count distinct node pairings in a multihop match"
}
],
"owner": {
"account_id": 7753371,
"reputation": 31,
"user_id": 5868625,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/a26d526794bcf8b9755d4cfde3514e42?s=256&d=identicon&r=PG&f=y&so-version=2",
"display_name": "erikejan",
"link": "https://stackoverflow.com/users/5868625/erikejan"
},
"is_answered": false,
"view_count": 28,
"favorite_count": 0,
"answer_count": 2,
"score": 0,
"creation_date": 1701878441,
"question_id": 77614613,
"body_markdown": "I'm looking to count the number of distinct pairings in query of neighbor's neighbors. Let say I have a small graph consisting of the following nodes and edges,\r\n\r\n (id:A, type:1)->(id:B, type:2)\r\n (id:A, type:1)->(id:C, type:2)\r\n (id:B, type:2)->(id:D, type:3)\r\n (id:C, type:2)->(id:D, type:3)\r\n (id:C, type:2)->(id:E, type:3)\r\n\r\nand a pattern to match like,\r\n\r\n MATCH (n0 {id: A})--(n1:2)--(n2)\r\n WHERE n2.id IN ["D", "E"]\r\n\r\nI am looking for a query that will count the distinct pairings along this 2-hop pattern. In other words, the expected answer would give the counts,\r\n\r\n A to type2 : 2 connections\r\n type2 to D : 2 connections\r\n type2 to E : 1 connection",
"link": "https://stackoverflow.com/questions/77614613/count-distinct-node-pairings-in-a-multihop-match",
"title": "Count distinct node pairings in a multihop match"
},
{
"tags": [
"neo4j",
"cypher",
"graph-databases",
"shortest-path",
"neo4j-apoc"
],
"answers": [
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701812532,
"answer_id": 77609396,
"question_id": 77608911,
"body_markdown": "If you want to only find paths where the relationships are in one direction e.g. outbound, you can either prepend `<` to the relationship type for inbound, or append `>` for outbound. \r\n\r\nTo only follow outbound `ROAD_SEGMENT` relationships, your query would become:\r\n```sql\r\nMATCH (a:Address)-[:NEAREST_INTERSECTION]->(source:Intersection)\r\nWHERE a.full_address CONTAINS "410 E 5TH AVE SAN MATEO, CA"\r\nMATCH (poi:Address)-[:NEAREST_INTERSECTION]->(dest:Intersection) \r\nWHERE poi.full_address CONTAINS "39 GRAND BLVD SAN MATEO, CA"\r\nCALL apoc.algo.aStarConfig(source, dest, "ROAD_SEGMENT>", \r\n {pointPropName: "location", weight: "length"}) \r\nYIELD weight, path\r\nRETURN *\r\n``` ",
"title": "Shortest path of weighted and directed graph in Neo4j"
}
],
"owner": {
"account_id": 30074975,
"reputation": 1,
"user_id": 23048059,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/07bf9a2ad417d0989b6e131f6125237e?s=256&d=identicon&r=PG&f=y&so-version=2",
"display_name": "strzelaczbramek9",
"link": "https://stackoverflow.com/users/23048059/strzelaczbramek9"
},
"is_answered": false,
"view_count": 17,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1701805911,
"question_id": 77608911,
"body_markdown": "I created a map of city in Neo4j using OpenStreetMap and OpenAddresses data. I want to find the shortest path from one address to another. The problem is that, when I'm using function apoc.algo.aStarConfig,I'm getting a path without consideration about direction of a relationship.\r\n\r\n\r\n```\r\nMATCH (a:Address)-[:NEAREST_INTERSECTION]->(source:Intersection)\r\nWHERE a.full_address CONTAINS "410 E 5TH AVE SAN MATEO, CA"\r\nMATCH (poi:Address)-[:NEAREST_INTERSECTION]->(dest:Intersection) \r\nWHERE poi.full_address CONTAINS "39 GRAND BLVD SAN MATEO, CA"\r\nCALL apoc.algo.aStarConfig(source, dest, "ROAD_SEGMENT", \r\n {pointPropName: "location", weight: "length"}) \r\nYIELD weight, path\r\nRETURN *\r\n```\r\n[Result of the query](https://i.stack.imgur.com/nTytn.png)\r\n\r\n\r\n**So my question is if there is a possibility to find the shortest path from one path to another not consider upstream relathionships?**",
"link": "https://stackoverflow.com/questions/77608911/shortest-path-of-weighted-and-directed-graph-in-neo4j",
"title": "Shortest path of weighted and directed graph in Neo4j"
},
{
"tags": [
"graph",
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701806107,
"answer_id": 77608932,
"question_id": 77608338,
"body_markdown": "With the first query, you are probably getting an error telling you that `classId` is not defined. In which case, no nodes are being created.\r\n\r\nIf you are just looking to test the properties of the first created node, you can modify your existing query to declare a variable e.g. `n` in the node pattern. You can then access node properties with the dot notation in the `RETURN` clause:\r\n```sql\r\nLOAD CSV WITH HEADERS FROM 'file:///Badges.csv' AS row\r\nCREATE (n:Badges {\r\n classid: toInteger(row.Class),\r\n name: row.Name,\r\n badgeId: toInteger(row.Id)\r\n})\r\nRETURN n.classid, n.name, n.badgeId \r\nLIMIT 1;\r\n```",
"title": "I can not import from csv files into Neo4j"
}
],
"owner": {
"account_id": 14106680,
"reputation": 1,
"user_id": 10190562,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/-4Hb169t4leM/AAAAAAAAAAI/AAAAAAAAAAs/VJRzPqTBMiA/photo.jpg?sz=256",
"display_name": "mahsa tajik",
"link": "https://stackoverflow.com/users/10190562/mahsa-tajik"
},
"is_answered": false,
"view_count": 41,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1701799094,
"question_id": 77608338,
"body_markdown": "```sql\r\n// BadgesNode\r\nLOAD CSV WITH HEADERS FROM 'file:///Badges.csv' AS row\r\nCREATE (:Badges {\r\n classid: toInteger(row.Class),\r\n name: row.Name,\r\n badgeId: toInteger(row.Id)\r\n})\r\nWITH *\r\nLIMIT 1\r\nRETURN classid, name, badgeId;\r\n```\r\n\r\nwhen I run it, there is no value in the properties. But when I run this cypher \r\n\r\n```sql\r\nLOAD CSV WITH HEADERS FROM 'file:///Badges.csv' AS row\r\nRETURN row\r\n```\r\n\r\nand this is the result that it returns:\r\n```json\r\n{\r\n "Name": "Informed",\r\n "Date": "2014-05-13 23:06",\r\n "Class": "3",\r\n "Id": "1",\r\n "UserId": "1",\r\n "TagBased": "FALSE"\r\n}\r\n```\r\n\r\n\r\nI can not understand why the first cypher does not return values into the properties. Can somebody help me. I stuck in this part for two days. \r\n\r\nI need to fill the properties by the values in the csv file.\r\nAnd this is a subset of my csv file.\r\n\r\n[![enter image description here][1]][1]\r\n\r\n\r\n [1]: https://i.stack.imgur.com/834Hw.png",
"link": "https://stackoverflow.com/questions/77608338/i-can-not-import-from-csv-files-into-neo4j",
"title": "I can not import from csv files into Neo4j"
},
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 8355167,
"reputation": 1,
"user_id": 6275738,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/-FxqHo1AG_G0/AAAAAAAAAAI/AAAAAAAAAIw/pSFQVbBMydg/photo.jpg?sz=256",
"display_name": "Shakthi Ramalingam",
"link": "https://stackoverflow.com/users/6275738/shakthi-ramalingam"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701327176,
"answer_id": 77576432,
"question_id": 77576343,
"body_markdown": "```sql\r\nMATCH (n:Commercial) \r\nWITH count(n) AS grosssales \r\nMATCH (c:Commercial) \r\nWITH grosssales,count(c) AS distinctcustomer, c.customer_id AS customer, tofloat(grosssales/count(c)) AS salesreach \r\nRETURN imp AS grosssales, distinctcustomer, customer, salesreach\r\n```\r\n",
"title": "Cypher Nested Query"
},
{
"owner": {
"account_id": 947871,
"reputation": 64252,
"user_id": 974731,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/8f54ba41697411b238379022f9a6df56?s=256&d=identicon&r=PG",
"display_name": "cybersam",
"link": "https://stackoverflow.com/users/974731/cybersam"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701916218,
"answer_id": 77617346,
"question_id": 77576343,
"body_markdown": "You can simplify the query by using the new [COUNT subquery](https://neo4j.com/docs/cypher-manual/current/subqueries/count/) (in neo4j 5.0+) to count the total number of `Commercial` nodes. Although `COUNT()` is an aggregating function, a COUNT subquery is not -- so it is not affected by the `customer` grouping key.\r\n\r\n MATCH (c:Commercial) \r\n WITH COUNT{ (:Commercial) } AS grosssales, COUNT(c) AS distinctcustomer, c.customer_id AS customer\r\n RETURN grosssales, distinctcustomer, customer, TOFLOAT(grosssales/distinctcustomer) AS salesreach\r\n\r\n",
"title": "Cypher Nested Query"
}
],
"owner": {
"account_id": 8355167,
"reputation": 1,
"user_id": 6275738,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/-FxqHo1AG_G0/AAAAAAAAAAI/AAAAAAAAAIw/pSFQVbBMydg/photo.jpg?sz=256",
"display_name": "Shakthi Ramalingam",
"link": "https://stackoverflow.com/users/6275738/shakthi-ramalingam"
},
"is_answered": false,
"view_count": 36,
"favorite_count": 0,
"answer_count": 2,
"score": 0,
"creation_date": 1701325970,
"question_id": 77576343,
"body_markdown": "Trying to build nested query in cypher sql to find the grosssale, sales by distinctcustomer and salesreach and not able to pass column 1 value as input to another column - any help would be appreciated.\r\n\r\nSyntax here\r\n\r\n```sql\r\nMATCH (n:Commercial)\r\nWITH (n) AS grosssales, count(n) AS distinctcustomer, \r\n n.customer_id AS customer, ### grouping by customer_id ###\r\n grosssale / distinctcustomer AS salesreach\r\nRETURN grossale, distinctcustomer, salesreach, customer_id\r\n```\r\n\r\nTried WITH clause however no joy, would appreciate any help in correcting the cypher syntax.",
"link": "https://stackoverflow.com/questions/77576343/cypher-nested-query",
"title": "Cypher Nested Query"
},
{
"tags": [
"spring",
"neo4j"
],
"answers": [
{
"owner": {
"account_id": 26739540,
"reputation": 91,
"user_id": 20340543,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/391fa27c030df060dd7293769457b56c?s=256&d=identicon&r=PG",
"display_name": "Podbrushkin",
"link": "https://stackoverflow.com/users/20340543/podbrushkin"
},
"is_accepted": true,
"score": 1,
"creation_date": 1701288939,
"answer_id": 77574246,
"question_id": 77571107,
"body_markdown": "If you are asking about how to use embedded neo4j in Spring Data Neo4j application, - indeed it is possible, even though officially is [not supported](https://gist.github.com/michael-simons/d3137f64ac0b13713fae8e7e1a69367e?permalink_comment_id=4756611#gistcomment-4756611) (I wonder where it is officially proclaimed). \r\n\r\nThis is how it can be done:\r\n1. Add neo4j to dependencies:\r\n```xml\r\n<dependency>\r\n\t\t<groupId>org.neo4j</groupId>\r\n\t\t<artifactId>neo4j</artifactId>\r\n\t\t<version>5.13.0</version>\r\n</dependency>\r\n```\r\n2. Add these beans to your Spring Boot configuration class:\r\n```java\r\n@Bean\r\n\tpublic Configuration cypherDslConfiguration() {\r\n\t\treturn Configuration.newConfig().withDialect(Dialect.NEO4J_5).build();\r\n\t}\r\n\r\n//https://neo4j.com/docs/java-reference/current/java-embedded/setup/\r\n@Bean\r\npublic DatabaseManagementService databaseManagementService() {\r\n\tDatabaseManagementService managementService = new \r\n\t\tDatabaseManagementServiceBuilder(new File("target/mydb").toPath())\r\n\t\t\t.setConfig(GraphDatabaseSettings.transaction_timeout, Duration.ofSeconds( 60 ) )\r\n\t\t\t.setConfig( BoltConnector.enabled, true )\r\n\t\t\t.setConfig(BoltConnector.encryption_level, BoltConnector.EncryptionLevel.DISABLED)\r\n\t\t\t.build();\r\n\t\r\n\tregisterShutdownHook(managementService);\r\n\treturn managementService;\r\n}\r\n\r\n@Bean\r\npublic GraphDatabaseService graphDatabaseService(DatabaseManagementService managementService) {\r\n\tGraphDatabaseService graphDb =\r\n\t\tmanagementService.database(GraphDatabaseSettings.DEFAULT_DATABASE_NAME);\r\n\tlog.info("Neo4j database Embedded instance is available: {}", graphDb.isAvailable());\r\n\treturn graphDb;\r\n}\r\nprivate static void registerShutdownHook(final DatabaseManagementService managementService) {\r\n\tRuntime.getRuntime().addShutdownHook(new Thread() {\r\n\t\t@Override\r\n\t\tpublic void run() {\r\n\t\t\tmanagementService.shutdown();\r\n\t\t}\r\n\t});\r\n}\r\n```\r\n3. Annotate your Spring Boot `@SpringBootApplication` with `@EnableNeo4jRepositories`.\r\n4. SDN repositories now will work. \r\n\r\nFully working example can be found [in this Gist](https://gist.github.com/Podbrushkin/54518ad6c4835706fd3344f01ea6acc9), place those files in correct subdirectories and execute `mvn clean spring-boot:run`, you will see repositories are working. Application will break only if you will enable HttpConnector.\r\n\r\nI hope this is what you've asked for.\r\n\r\nduplicate: https://stackoverflow.com/questions/76901420/how-to-connect-spring-data-neo4j-to-embedded-neo4j-server",
"title": "Spring Boot embedded neo4j for demo purposes"
}
],
"owner": {
"account_id": 20541842,
"reputation": 173,
"user_id": 20036372,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/a60111308ed533786c6b22b8d82d3db6?s=256&d=identicon&r=PG",
"display_name": "asfarasiknow",
"link": "https://stackoverflow.com/users/20036372/asfarasiknow"
},
"is_answered": true,
"view_count": 35,
"favorite_count": 0,
"accepted_answer_id": 77574246,
"answer_count": 1,
"score": 0,
"creation_date": 1701260419,
"question_id": 77571107,
"body_markdown": "I want to use the built-in neo4j for demonstration purposes, so the application must be deployed somewhere. It cannot be any test instance such as `TestContainers`. I know that neo4j has a built-in neo4j driver for java, but it is not supported by `spring data neo4j` - I would have to rewrite all the application logic, which now uses spring data neo4j. I use docker for local development, but the goal is to have neo4j `in-memory` fully supported by `spring data neo4j`. \r\n ",
"link": "https://stackoverflow.com/questions/77571107/spring-boot-embedded-neo4j-for-demo-purposes",
"title": "Spring Boot embedded neo4j for demo purposes"
},
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": true,
"score": 1,
"creation_date": 1701192069,
"answer_id": 77565897,
"question_id": 77565696,
"body_markdown": "To follow all paths composed of relationships with either type `Sync` and direction outbound, or type `Async` and direction inbound, the following [quantified path pattern][1] will work:\r\n```sql\r\nMATCH (s {type: 'service'}) \r\n ((n)-[r]-() WHERE (n = startNode(r) AND r:Sync) \r\n OR (n = endNode(r) AND r:Async))+ (dependent)\r\nRETURN s, collect(DISTINCT dependent) AS allDependentNodes\r\n```\r\n\r\n\r\n [1]: https://neo4j.com/docs/cypher-manual/current/patterns/concepts/#quantified-path-patterns",
"title": "How to match nodes in Cypher query based on different directions per relationship type"
}
],
"owner": {
"account_id": 964672,
"reputation": 2010,
"user_id": 988324,
"user_type": "registered",
"accept_rate": 65,
"profile_image": "https://www.gravatar.com/avatar/e9a50cfb6dd20efd1198fdafc0b1c11a?s=256&d=identicon&r=PG",
"display_name": "Richard Deurwaarder",
"link": "https://stackoverflow.com/users/988324/richard-deurwaarder"
},
"is_answered": true,
"view_count": 56,
"favorite_count": 0,
"accepted_answer_id": 77565897,
"answer_count": 1,
"score": 1,
"creation_date": 1701190063,
"question_id": 77565696,
"body_markdown": "I've got a graph with two types of relationships: `Sync` and `Async`.\r\n\r\nI want a query to give me a subgraph, meaning all the nodes that can be reached directly or indirectly.\r\n\r\nThis query works for this:\r\n\r\n MATCH (s {type: 'service')\r\n OPTIONAL MATCH (s)-[:Async|Sync*]->(dependent)\r\n WITH s, COLLECT(DISTINCT dependent) AS allDependentNodes\r\n\r\nThis gives me every node that can be reached via an Sync or Async relationship.\r\n\r\n\r\nBut now I'd like to use a different direction based on the type of relation. I want nodes that can be reached via outgoing Sync `a -> b` OR reached via incoming Async `a <- b`. \r\n\r\nSo it's like an OR'd match condition. I've tried a few things without much success:\r\n\r\n MATCH (s {type: 'service')\r\n OPTIONAL MATCH (s)-[:Sync*]->(dependent), (s)<-[:Async*]-(d)\r\n WITH s, totalNodes, COLLECT(DISTINCT dependent) AS allDependentNodes\r\n\r\n\r\nHow can I OR'd together relationship matches or how can I match different types of relationships with different directions?",
"link": "https://stackoverflow.com/questions/77565696/how-to-match-nodes-in-cypher-query-based-on-different-directions-per-relationshi",
"title": "How to match nodes in Cypher query based on different directions per relationship type"
},
{
"tags": [
"neo4j"
],
"answers": [
{
"owner": {
"account_id": 33099,
"reputation": 29846,
"user_id": 92359,
"user_type": "registered",
"accept_rate": 94,
"profile_image": "https://www.gravatar.com/avatar/664d3d4c50c731d90a32db5f9e01b4b9?s=256&d=identicon&r=PG",
"display_name": "InverseFalcon",
"link": "https://stackoverflow.com/users/92359/inversefalcon"
},
"is_accepted": true,
"score": 2,
"creation_date": 1701129988,
"answer_id": 77560648,
"question_id": 77560500,
"body_markdown": "Assuming you want to continuously follow a pattern of sent emails, you could use quantified path patterns to do so:\r\n\r\n```\r\nMATCH (p1:Person where p1.name='Jeff') (()-[:EMAIL_FROM]->(:Email)-[:EMAIL_TO]->(:Person))+ (p2)\r\nRETURN DISTINCT p2\r\n```\r\n\r\nThis will repeat the last part of the pattern with a lower bound of 1 and no upper bound. For any non-trivial graph this may not finish, and you may have heap issues. We would recommend setting an upper bound if possible.\r\n\r\nAnother approach would be to use APOC Procedures, the path explorer procedures, as those might be more efficient in finding distinct reachable nodes.\r\n\r\n```\r\nMATCH (p1:Person where p1.name='Jeff') \r\nCALL apoc.path.subgraphNodes(p1, {relationshipFilter:'EMAIL_FROM>, EMAIL_TO>', labelFilter:'>Person'}) YIELD node\r\nRETURN node\r\n```\r\n\r\nThis will repeat outgoing :EMAIL_FROM and :EMAIL_TO relationships, returning only :Person nodes, and the uniqueness used by this procedure should only return distinct end nodes.",
"title": "Neo4j: Variable-length-relationship with intermediary node"
}
],
"owner": {
"account_id": 24101638,
"reputation": 47,
"user_id": 18073394,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a/AATXAJyEN-n5TpGIABhidOfpIdq3rVAPCr2oRvfpTjsN=k-s256",
"display_name": "NoraTheFlora",
"link": "https://stackoverflow.com/users/18073394/noratheflora"
},
"is_answered": true,
"view_count": 34,
"favorite_count": 0,
"accepted_answer_id": 77560648,
"answer_count": 1,
"score": 0,
"creation_date": 1701127131,
"question_id": 77560500,
"body_markdown": "I have a neo4j database with two types of node labels: person and email.\r\nOne email node always connects two person nodes through the relationships 'EMAIL_FROM' and 'EMAIL_TO'\r\nsuch that the relationship can be queried like such:\r\n\r\n match (p1:Person)-[:EMAIL_FROM]->(:Email)-[:EMAIL_TO]->(p2:Person) return p1, p2\r\nI'm trying to write a variable-length-relationship query which begins at a certain person node and finds all other person nodes that can be reached through the intermediary email nodes. This is what I tried:\r\n\r\n match (p1:Person where p1.name='Jeff')-[:EMAIL_FROM*]->(:Email)-[:EMAIL_TO*]->(p2:Person) return p1, p2\r\nThis sadly does not work as I thought it would and returns only directly reachable from the 'Jeff' node by iterating through the pattern once but then it stops although I know the nodes reached in the first iteration have outgoing 'EMAIL_FROM' relationships themselves. Thanks in advance.",
"link": "https://stackoverflow.com/questions/77560500/neo4j-variable-length-relationship-with-intermediary-node",
"title": "Neo4j: Variable-length-relationship with intermediary node"
},
{
"tags": [
"python",
"neo4j"
],
"answers": [
{
"owner": {
"account_id": 29000777,
"reputation": 1,
"user_id": 22214354,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/96faa0d16e180bc41836018844e66c62?s=256&d=identicon&r=PG&f=y&so-version=2",
"display_name": "Jonathan Giffard",
"link": "https://stackoverflow.com/users/22214354/jonathan-giffard"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701078800,
"answer_id": 77555954,
"question_id": 77555016,
"body_markdown": "Looking at the output from print(dir(connector)) , the message is correct - there is no attribute named 'run'\r\n\r\n> ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__',\r\n> '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__',\r\n> '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__',\r\n> '__lt__', '__module__', '__ne__', '__new__', '__reduce__',\r\n> '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',\r\n> '__subclasshook__', '__weakref__', '_driver', 'close', 'driver']\r\n\r\n\r\nI'd look at connector.driver.execute_query as that will likely achieve what you are looking to do. \r\n\r\n",
"title": "How to fix "Type 'Neo4jConnector' doesn't have expected attribute 'run' " in python file"
},
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": true,
"score": 0,
"creation_date": 1701079458,
"answer_id": 77556024,
"question_id": 77555016,
"body_markdown": "Some of your functions e.g. `edit_inbound_rule` call a method `run` that the class `Neo4jConnector` does not have. One fix is to work with the GraphDatabase.driver, as is done in `create_inbound_rule`. \r\n\r\nFor example, rewrite `edit_inbound_rule` like so:\r\n```python\r\ndef edit_inbound_rule(connector, new_profile_id, new_message, new_processingflag1):\r\n s_id = dict["s_id"]\r\n return_name = 'Rule Edit Successfully'\r\n query = (\r\n "MATCH (r:Rule) WHERE r.id_name = $s_id "\r\n "SET r.profileid = $new_profile_id, "\r\n " r.message = $new_message, "\r\n " r.processingflag1 = $new_processingflag1 "\r\n )\r\n\r\n with connector._driver.session() as session:\r\n session.write_transaction(lambda tx: tx.run(query, new_profile_id=new_profile_id,\r\n new_message=new_message, new_processingflag1=new_processingflag1, s_id=s_id))\r\n\r\n return return_name\r\n```",
"title": "How to fix "Type 'Neo4jConnector' doesn't have expected attribute 'run' " in python file"
}
],
"owner": {
"account_id": 25680619,
"reputation": 13,
"user_id": 19443460,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a/AATXAJww51pxUl9Y4zOSRkBlvASDGz9bXc4RF8ZJ-5VnCA=k-s256",
"display_name": "Kevin Paul Babu",
"link": "https://stackoverflow.com/users/19443460/kevin-paul-babu"
},
"is_answered": true,
"view_count": 44,
"favorite_count": 0,
"accepted_answer_id": 77556024,
"answer_count": 2,
"score": 0,
"creation_date": 1701068434,
"question_id": 77555016,
"body_markdown": "This is the code below for connecting and running `neo4j` and python . I have seen a `neo4j` warning from the code . Is that a severe warning or is it mandatory to fix it? How to fix this issue? The warning is `" Type 'Neo4jConnector' doesn't have expected attribute 'run' "`\r\n```\r\nfrom neo4j import GraphDatabase\r\n\r\n\r\nclass Neo4jConnector:\r\n def __init__(self, uri, user, password):\r\n self._driver = GraphDatabase.driver(uri, auth=(user, password))\r\n\r\n def close(self):\r\n self._driver.close()\r\n\r\n @property\r\n def driver(self):\r\n return self._driver\r\n\r\n\r\ndef get_nodes_by_id_name(tx, id_name):\r\n query = (\r\n "MATCH (r:Rule) "\r\n "WHERE r.id_name = $id_name "\r\n "RETURN r"\r\n )\r\n result = []\r\n for record in tx.run(query, id_name=id_name):\r\n result.append(record["node"])\r\n return result\r\n\r\n\r\ndef create_inbound_rule(connector, profileid, sender, receiver, message, processingflag1, ruletype):\r\n id_name = receiver + '_inBOUND_' + sender\r\n name1_inbound = receiver + '_inBOUND_' + sender + '_SFTP_STEP1'\r\n return_name = name1_inbound + '& SFTP_STEP2 created successfully'\r\n\r\n query = (\r\n "CREATE (r:Rule {sender: $sender, receiver: $receiver, "\r\n "message: $message, profileid: $profileid, ruletype: $ruletype, "\r\n "processingflag1: $processingflag1,id_name:$id_name})"\r\n )\r\n\r\n with connector._driver.session() as session:\r\n session.write_transaction(lambda tx: tx.run(query, sender=sender, receiver=receiver,\r\n message=message, profileid=profileid,\r\n ruletype=ruletype, processingflag1=processingflag1,\r\n id_name=id_name))\r\n return return_name\r\n\r\n\r\ndef create_outbound_rule(connector, profileid_outbound, sender_outbound, receiver_outbound,\r\n message_outbound, processingflag1_outbound, filename_output):\r\n id_name = receiver_outbound + '_outbound_' + sender_outbound\r\n name1_outbound = receiver_outbound + '_Outbound_' \\\r\n + sender_outbound + '_SFTP_STEP1'\r\n return_name = name1_outbound + '& SFTP_STEP2 created successfully'\r\n query = (\r\n "CREATE (r:Rule {sender_outbound: $sender_outbound, receiver_outbound: $receiver_outbound, "\r\n "message_outbound: $message_outbound, profileid_outbound: $profileid_outbound, "\r\n "filename_output: $filename_output, "\r\n "processingflag1_outbound: $processingflag1_outbound,id_name:$id_name})"\r\n )\r\n\r\n with connector._driver.session() as session:\r\n session.write_transaction(\r\n lambda tx: tx.run(query, sender_outbound=sender_outbound, receiver_outbound=receiver_outbound,\r\n message_outbound=message_outbound, profileid_outbound=profileid_outbound,\r\n filename_output=filename_output, processingflag1_outbound=processingflag1_outbound,\r\n id_name=id_name))\r\n return return_name\r\n\r\n\r\ndef create_both_rule(connector, inbound_profileid, outbound_profileid, sender, receiver, message, processingflag1,\r\n filename, return_name, id_name):\r\n query = (\r\n "CREATE (r:Rule {sender: $sender, receiver: $receiver, "\r\n "message: $message, inbound_profileid: $inbound_profileid, outbound_profileid: $outbound_profileid, "\r\n "processingflag1: $processingflag1, filename: $filename,id_name:$id_name})"\r\n )\r\n\r\n with connector._driver.session() as session:\r\n session.write_transaction(lambda tx: tx.run(query, sender=sender, receiver=receiver,\r\n message=message, inbound_profileid=inbound_profileid,\r\n outbound_profileid=outbound_profileid,\r\n processingflag1=processingflag1,\r\n filename=filename, id_name=id_name))\r\n return return_name\r\n\r\n\r\ndef create_inbound_basictx_rule(connector, tradingpartner_basictx, profileid_basictx, processingflag1_basictx, id_name):\r\n name1_basictx = "1.0.0_ELUX_INBOUND_RECEIVE_FROM_" + tradingpartner_basictx + "_SFTP_TO_BASICTX"\r\n name2_basictx = "1.0.2_ELUX_GENERIC_IN_FLAT_FILE_" + processingflag1_basictx + "_BASICTX_TO_CC_FINISH"\r\n return_name = name1_basictx + name2_basictx + "created successfully"\r\n query = (\r\n "CREATE (r:Rule {TradingPartner: $tradingpartner_basictx, profileid: $profileid_basictx, "\r\n "processingflag1_basictx: $processingflag1_basictx,id_name:$id_name})"\r\n )\r\n\r\n with connector._driver.session() as session:\r\n session.write_transaction(lambda tx: tx.run(query, tradingpartner_basictx=tradingpartner_basictx,\r\n profileid_basictx=profileid_basictx,\r\n processingflag1_basictx=processingflag1_basictx, id_name=id_name))\r\n return return_name\r\n\r\n\r\ndef create_outbound_basictx_rule(connector, tradingpartner_basictx, profileid_basictx, processingflag1_basictx,\r\n id_name):\r\n name1_basictx = "1.0.0_ELUX_OUTBOUND_RECEIVE_FROM_" + tradingpartner_basictx + "_SFTP_TO_BASICTX"\r\n name2_basictx = "1.0.2_ELUX_GENERIC_IN_FLAT_FILE_" + processingflag1_basictx + "_BASICTX_TO_CC_FINISH"\r\n return_name = name1_basictx + name2_basictx + "created successfully"\r\n query = (\r\n "CREATE (r:Rule {TradingPartner: $tradingpartner_basictx, profileid: $profileid_basictx, "\r\n "processingflag1: $processingflag1_basictx,id_name:$id_name})"\r\n )\r\n with connector._driver.session() as session:\r\n session.write_transaction(lambda tx: tx.run(query, tradingpartner_basictx=tradingpartner_basictx,\r\n profileid_basictx=profileid_basictx,\r\n processingflag1_basictx=processingflag1_basictx, id_name=id_name))\r\n return return_name\r\n\r\n\r\ndef edit_inbound_rule(connector, new_profile_id, new_message, new_processingflag1):\r\n s_id = dict["s_id"]\r\n return_name = 'Rule Edit Successfully'\r\n query = (\r\n "MATCH (r:Rule) WHERE r.id_name = $s_id "\r\n "SET r.profileid = $new_profile_id, "\r\n " r.message = $new_message, "\r\n " r.processingflag1 = $new_processingflag1 "\r\n )\r\n connector.run(query, new_profile_id=new_profile_id,\r\n new_message=new_message, new_processingflag1=new_processingflag1, s_id=s_id)\r\n\r\n return return_name\r\n\r\n\r\ndef edit_outbound_rule(connector, new_profile_id, new_message, new_processing_flag, new_filename):\r\n s_id = dict["s_id"]\r\n return_name = 'Rule Edit Successfully'\r\n query = (\r\n "MATCH (r:Rule) WHERE r.id_name = $id_name "\r\n "SET r.profileid_outbound = $new_profile_id, "\r\n " r.message_outbound = $new_message, "\r\n " r.processingflag1_outbound = $new_processing_flag, "\r\n " r.filename_output = $new_filename"\r\n )\r\n connector.run(query, return_name=return_name, new_profile_id=new_profile_id,\r\n new_message=new_message, new_processing_flag=new_processing_flag,\r\n new_filename=new_filename, s_id_name=s_id)\r\n\r\n\r\ndef edit_both_rule(connector, new_inbound_profile_id, new_outbound_profile_id, new_message,\r\n new_processing_flag,\r\n new_filename):\r\n s_id = dict["s_id"]\r\n return_name = 'Rule Edit Successfully'\r\n query = (\r\n "MATCH (r:Rule) WHERE r.id_name = $s_id "\r\n "SET r.inbound_profileid_both = $new_inbound_profile_id, "\r\n " r.outbound_profileid_both = $new_outbound_profile_id, "\r\n " r.message_both = $new_message, "\r\n " r.processingflag1_both= $new_processing_flag, "\r\n " r.filename_both = $new_filename"\r\n )\r\n connector.run(query, new_inbound_profile_id=new_inbound_profile_id,\r\n new_outbound_profile_id=new_outbound_profile_id, new_message=new_message,\r\n new_processing_flag=new_processing_flag, new_filename=new_filename, s_id_=s_id)\r\n\r\n return return_name\r\n\r\n\r\ndef edit_inbound_basictx_rule(connector, new_tradingpartner, new_profile_id, new_processing_flag):\r\n s_id = dict["s_id"]\r\n return_name = 'Rule Edit Successfully'\r\n query = (\r\n "MATCH (r:Rule) WHERE r.id_name = $s_id "\r\n "SET r.tradingpartner = $new_tradingpartner, "\r\n " r.profile_id = $new_profile_id, "\r\n " r.processing_flag = $new_processing_flag"\r\n )\r\n connector.run(query, new_tradingpartner=new_tradingpartner,\r\n new_profile_id=new_profile_id, new_processing_flag=new_processing_flag, s_id=s_id)\r\n\r\n return return_name\r\n\r\n\r\ndef edit_outbound_basictx_rule(connector, new_tradingpartner, new_profile_id, new_processing_flag):\r\n s_id = dict["s_id"]\r\n return_name = 'Rule Edit Successfully'\r\n query = (\r\n "MATCH (r:Rule) WHERE r.id_name = $s_id "\r\n "SET r.tradingpartner_basictx = $new_tradingpartner, "\r\n " r.profileid_basictx = $new_profile_id, "\r\n " r.processingflag1_basictx = $new_processing_flag"\r\n )\r\n\r\n connector.run(query, return_name=return_name, new_tradingpartner=new_tradingpartner,\r\n new_profile_id=new_profile_id, new_processing_flag=new_processing_flag, s_id=s_id)\r\n\r\n return return_name\r\n\r\n\r\ndef main(dict):\r\n uri = "bolt://localhost:7687"\r\n user = "admin"\r\n password = "password"\r\n connector = Neo4jConnector(uri, user, password)\r\n ruletype = dict['ruletype']\r\n # Initialize a dictionary to store the result\r\n\r\n if ruletype == 'Inbound':\r\n profileid = dict['profile_id']\r\n sender = dict['sender']\r\n receiver = dict['receiver']\r\n message = dict['message']\r\n processingflag1 = dict['processingflag1']\r\n create_inbound_rule(connector, profileid, sender, receiver, message, processingflag1, )\r\n\r\n elif ruletype == 'Outbound':\r\n profileid_outbound = dict['profileid_outbound']\r\n sender_outbound = dict['sender_outbound']\r\n receiver_outbound = dict['receiver_outbound']\r\n message_outbound = dict['message_outbound']\r\n processingflag1_outbound = dict['processingflag1_outbound']\r\n filename_output = dict['filename_output']\r\n\r\n create_outbound_rule(connector, profileid_outbound, sender_outbound, receiver_outbound,\r\n message_outbound, processingflag1_outbound, filename_output)\r\n elif ruletype == 'Both':\r\n inbound_profileid_both = dict['inbound_profileid_both']\r\n outbound_profileid_both = dict['outbound_profile_id_both']\r\n sender_both = dict['sender_both']\r\n receiver_both = dict['receiver_both']\r\n message_both = dict['message_both']\r\n processingflag1_both = dict['processingflag1_both']\r\n\r\n filename_both = dict['filename_both']\r\n id_name = receiver_both + '_Both_' + sender_both\r\n return_name = receiver_both + 'both' + sender_both + 'SFTP_STEP1,SFTP_STEP2 created successfully'\r\n create_both_rule(connector, inbound_profileid_both, outbound_profileid_both, sender_both,\r\n receiver_both, message_both, processingflag1_both, filename_both, return_name)\r\n\r\n elif ruletype == 'Inbound BasicTx':\r\n tradingpartner_basictx = dict["tradingpartner_Basictx"]\r\n profileid_basictx = dict["profileid_Basictx"]\r\n processingflag1_basictx = dict["ProcessingFlag1_Basictx"]\r\n id_name = "ELUX_INBOUND_RECEIVE_FROM_" + tradingpartner_basictx\r\n create_inbound_basictx_rule(connector, tradingpartner_basictx, profileid_basictx,\r\n processingflag1_basictx, id_name)\r\n elif ruletype == 'Outbound BasicTx':\r\n tradingpartner_basictx = dict["tradingpartner_basictx"]\r\n profileid_basictx = dict["profile_id_basictx"]\r\n processingflag1_basictx = dict["processingflag1_basictx"]\r\n id_name = "ELUX_INBOUND_RECEIVE_FROM_" + tradingpartner_basictx\r\n create_outbound_basictx_rule(connector, tradingpartner_basictx, profileid_basictx,\r\n processingflag1_basictx, id_name)\r\n elif ruletype == 'Edit Inbound Rule':\r\n\r\n new_message = dict["new_message"]\r\n new_profile_id = dict["new_profile_id"]\r\n new_processing_flag = dict["new_processing_flag"]\r\n\r\n edit_inbound_rule(connector, new_profile_id, new_message, new_processing_flag)\r\n\r\n elif ruletype == 'Edit Outbound Rule':\r\n\r\n new_profile_id = dict["new_profile_id"]\r\n new_message = dict["new_message"]\r\n new_processing_flag = dict["new_processing_flag"]\r\n new_filename = dict["new_filename"]\r\n edit_outbound_rule(connector, new_profile_id, new_message, new_processing_flag, new_filename)\r\n\r\n elif ruletype == 'Edit Both Rule':\r\n\r\n new_inbound_profile_id = dict["new_inbound_profile_id"]\r\n new_outbound_profile_id = dict["new_outbound_profile_id"]\r\n new_filename = dict['new_filename']\r\n new_message = dict["Message_edit_Both"]\r\n new_processing_flag = dict["new_processing_flag"]\r\n edit_both_rule(connector, new_inbound_profile_id, new_outbound_profile_id, new_message,\r\n new_processing_flag, new_filename)\r\n elif ruletype == 'Edit Inbound BasicTx':\r\n id_name = dict['id_name']\r\n new_tradingpartner = dict["new_tradingpartner"]\r\n new_profile_id = dict["new_profile_id"]\r\n new_processing_flag = dict["new_processing_flag"]\r\n edit_inbound_basictx_rule(connector, new_tradingpartner, new_profile_id, new_processing_flag)\r\n\r\n elif ruletype == 'Edit Outbound BasicTx':\r\n new_tradingpartner = dict["new_tradingpartner"]\r\n new_profile_id = dict["new_profile_id"]\r\n new_processing_flag = dict["new_processing_flag"]\r\n edit_outbound_basictx_rule(connector, new_tradingpartner, new_profile_id, new_processing_flag)\r\n\r\n elif ruletype == 'Rule Search':\r\n # Call the get_nodes_by_id_name function to retrieve nodes by id_name\r\n id_name = dict['id_name']\r\n return_name = 'Rule Search Successfully'\r\n\r\n else:\r\n print(f"Unsupported ruletype: {ruletype}")\r\n connector.close()\r\n\r\n```\r\n\r\n\r\nI tried to solve this error to fix these warnings and it did not fix the issue\r\n",
"link": "https://stackoverflow.com/questions/77555016/how-to-fix-type-neo4jconnector-doesnt-have-expected-attribute-run-in-pyt",
"title": "How to fix "Type 'Neo4jConnector' doesn't have expected attribute 'run' " in python file"
},
{
"tags": [
"java",
"spring",
"spring-boot",
"neo4j",
"spring-data-neo4j"
],
"answers": [
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": false,
"score": 0,
"creation_date": 1700999067,
"answer_id": 77551513,
"question_id": 77546470,
"body_markdown": "If you want the count of nodes to which the `SET` was applied, return the count of rows:\r\n\r\n```sql\r\nMATCH (n:Student) WHERE n.id IN $idList \r\nSET n.isRegistered = true\r\nRETURN count(*) AS numAffected\r\n```\r\n\r\nIf you want the count of nodes whose value of `isRegistered` was changed, remove nodes that already have `isRegistered = true` with the `WHERE` clause:\r\n\r\n```sql\r\nMATCH (n:Student) \r\nWHERE n.id IN $idList AND NOT coalesce(n.isRegistered, false) \r\nSET n.isRegistered = true\r\nRETURN count(*) AS numAffected\r\n```\r\n\r\n(I've just formatted as stand-alone Cypher to make it easier read.)",
"title": "Spring Data Neo4j return count of affected nodes after update operation"
}
],
"owner": {
"account_id": 18625023,
"reputation": 27,
"user_id": 13574344,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a-/AOh14GhGuIzJ2-1xF-utmOJhucA_rPsejZT_BlTMM9K7=k-s256",
"display_name": "stackoverflow_user",
"link": "https://stackoverflow.com/users/13574344/stackoverflow-user"
},
"is_answered": false,
"view_count": 31,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1700880286,
"question_id": 77546470,
"body_markdown": "Is there any way to return the count of affected nodes after doing the update operation with Spring Data Neo4j repository?\r\n\r\ne.g\r\n```\r\n@Query("MATCH (n:Student) WHERE n.id IN $idList SET n.isRegistered = true")\r\nInteger updateRegisterInfo(@Param("idList") List<String> idList);\r\n```\r\n\r\nBut sdn can only return void/null value for such operation.\r\n\r\nThanks",
"link": "https://stackoverflow.com/questions/77546470/spring-data-neo4j-return-count-of-affected-nodes-after-update-operation",
"title": "Spring Data Neo4j return count of affected nodes after update operation"
},
{
"tags": [
"csv",
"vector",
"neo4j",
"cypher",
"neo4j-admin"
],
"answers": [
{
"owner": {
"account_id": 159676,
"reputation": 88163,
"user_id": 379235,
"user_type": "registered",
"accept_rate": 62,
"profile_image": "https://i.stack.imgur.com/qSUBs.png?s=256&g=1",
"display_name": "daydreamer",
"link": "https://stackoverflow.com/users/379235/daydreamer"
},
"is_accepted": false,
"score": 0,
"creation_date": 1700601817,
"answer_id": 77526008,
"question_id": 77525633,
"body_markdown": "I was able to solve this in 2 steps\r\n\r\n## Step 1: Fix the header file\r\n```\r\nid:ID,:LABEL,amount:double,measureUnit:string,gramWeight:double,embedding:float[]\r\n```\r\nNote the `float[]` as the type\r\n\r\n## Step 2: Importing array\r\nThis involved 2 steps\r\n### Step 2.1: Create a valid delimiter for array\r\n\r\n```\r\nconst embedding = await createEmbedding(embeddingInput);\r\nconst embeddingString = embedding.join(ARRAY_DELIMITER);\r\n```\r\nWhere `ARRAY_DELIMITER` is `|`\r\n\r\n### Step 2.2 Update import command to tell about delimiter\r\n```\r\nneo4j-admin database import full --array-delimiter='|' // and so on...\r\n```\r\nNote `--array-delimiter='|'` here.\r\n\r\nThis helped me fix the issue.",
"title": "Importing Vector Embedding in Neo4J via neo4j-admin import is failing with unknown property type 'LIST<FLOAT>'"
}
],
"owner": {
"account_id": 159676,
"reputation": 88163,
"user_id": 379235,
"user_type": "registered",
"accept_rate": 62,
"profile_image": "https://i.stack.imgur.com/qSUBs.png?s=256&g=1",
"display_name": "daydreamer",
"link": "https://stackoverflow.com/users/379235/daydreamer"
},
"is_answered": false,
"view_count": 11,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1700596915,
"question_id": 77525633,
"body_markdown": "I have a CSV header and data file that I want to import in Neo4J using `neo4j-admin database` along with other files.\r\n\r\nHere are my files\r\n\r\n`HEADER`\r\n```\r\nid:ID,:LABEL,amount:double,measureUnit:string,gramWeight:double,embedding:LIST<FLOAT>\r\n```\r\n\r\n`DATA`\r\n```\r\nFFP_0_321358,FoodPortion_3_0_0,2,"tablespoon",33.9,[0.1671835333108902,-0.7092851996421814,0.14913123846054077,0.7785872220993042,-0.312934011220932,0.08211034536361694,-0.028107712045311928,-0.25594303011894226,0.5699977278709412,0.6135631799697876,0.19823063910007477,0.09847097098827362,-0.6676387190818787,0.004426721017807722,-0.5394071340560913,0.9914360046386719,0.37802284955978394,0.2705143392086029,-0.06354071199893951,-0.3283253610134125,-0.12500542402267456,0.5226773023605347,-0.5599125623703003,-0.17582887411117554,0.33407628536224365,0.8492608666419983,1.6623034477233887,1.037268877029419,0.22571976482868195,0.5713614821434021,0.004049248062074184,-0.3291890323162079,-0.2762421667575836,0.2313031107187271,-0.1946457028388977,-0.17294952273368835,-0.08332429081201553,0.3433372676372528,0.5293984413146973,1.145921230316162,-0.6517155170440674,0.8047919273376465,0.012163370847702026,0.3513254225254059,-0.04551488906145096,0.2955775856971741,-0.023389466106891632,0.06517010182142258,-0.1647074818611145,-0.0821857675909996,0.23624971508979797,-0.7499469518661499,0.3026871979236603,-0.996300995349884,0.4166252911090851,0.338083416223526,1.4630589485168457,0.3421212434768677,-0.740848183631897,0.10450270026922226,-0.5746254920959473,0.9487141370773315,-0.6349362134933472,0.6473907232284546,0.737545907497406,0.631997287273407,-0.585864782333374,-1.2288835048675537,-0.4180561304092407,-0.2542168200016022,0.2972530126571655,0.14671950042247772,-0.22330710291862488,-0.602167546749115,0.29623106122016907,0.7523813247680664,-0.7711286544799805,-0.46698877215385437,-0.6049727201461792,0.5525864362716675,0.3214971125125885,-0.0008972518844529986,0.024934018030762672,0.09121513366699219,-0.99419105052948,0.01268870010972023,-0.25948208570480347,0.0844053328037262,-0.198614239692688,-0.03724987059831619,-0.6223516464233398,0.616694450378418,-0.7710570693016052,0.1813107579946518,0.2166164517402649,-0.2937754690647125,0.03168824687600136,-0.09738413244485855,-0.9887257814407349,-0.2576909363269806,-0.003925889730453491,0.039951808750629425,-0.1942584365606308,0.01654890924692154,0.027941200882196426,0.060958266258239746,0.31667277216911316,-0.5193405747413635,-0.5178394317626953,0.2285129725933075,-0.3170968294143677,-0.2246341109275818,0.2833319902420044,-0.5099343657493591,-0.49715498089790344,-0.3493226170539856,0.3292626142501831,0.24636048078536987,0.7207037210464478,0.16913318634033203,-0.6909018754959106,0.06924944370985031,0.4800015687942505,-0.2168654501438141,0.5917078852653503,0.23160593211650848,0.537395715713501,0.7937036752700806,0.17396502196788788,-0.3983372151851654,0.8670725226402283,-0.21596691012382507,0.7286391854286194,0.338647723197937,-0.541279137134552,-0.24414321780204773,0.7341932058334351,0.4927745461463928,-0.7745022177696228,0.8004167079925537,-0.6826944947242737,0.13118436932563782,-0.19548332691192627,0.07437360286712646,-0.5719180703163147,0.24923273921012878,-0.5927393436431885,0.8679149150848389,0.5983684062957764,-0.027823010459542274,0.7718298435211182,-0.4654153287410736,-1.3462893962860107,0.7995166182518005,-0.011185641400516033,-0.4824565351009369,0.5111072063446045,-0.44001948833465576,-0.3706497848033905,-0.5190173983573914,0.32828569412231445,-0.08511803299188614,-0.2909694015979767,0.6947621703147888,-0.48054996132850647,0.9403616786003113,0.9104567766189575,-0.3861950635910034,0.12150025367736816,-1.0906805992126465,-0.4025906026363373,0.9348596930503845,-1.0202574729919434,0.20373153686523438,-0.523996114730835,0.053802911192178726,0.24222053587436676,0.3762281537055969,-0.5176705121994019,-0.20220249891281128,0.03934430330991745,0.09392368793487549,0.7321622967720032,-0.14787785708904266,0.09097499400377274,-1.0559947490692139,0.48921504616737366,0.05759872868657112,0.8594281077384949,0.7001445293426514,-0.5685751438140869,-1.088683009147644,-0.6474522948265076,0.7292926907539368,0.09484611451625824,-0.13430261611938477,0.5815054774284363,-0.12725986540317535,-0.2390153408050537,-0.5564658641815186,0.03633316978812218,-0.13943913578987122,0.8008201122283936,-0.03932861611247063,-0.592444121837616,-0.28947505354881287,-1.3887320756912231,-0.2919691503047943,0.10906774550676346,-0.16127485036849976,0.4028816521167755,0.18391253054141998,-0.4581294655799866,0.7862441539764404,-0.8642418384552002,-0.8036615252494812,-0.20525407791137695,0.0392296127974987,0.9526417255401611,0.42765557765960693,0.33285951614379883,-0.5506075620651245,-0.6694586873054504,0.07510815560817719,-0.038032107055187225,-0.03092881664633751,-0.04241414740681648,0.1725407838821411,-0.5417670607566833,-0.5349268317222595,-0.5855259299278259,0.5592337250709534,0.4357283115386963,-0.47289806604385376,0.4332028329372406,-0.8731499910354614,0.6391263604164124,-0.5809072256088257,0.13061028718948364,0.1224871352314949,-0.35391929745674133,0.005123510956764221,-0.035462722182273865,-0.3733997642993927,-0.28362974524497986,-0.5538771152496338,0.3602936565876007,-0.6868255138397217,-0.03687463328242302,-0.02161470241844654,-0.01347095426172018,0.33665063977241516,0.17859768867492676,-0.11408817768096924,0.9829856157302856,0.2166203111410141,-0.8720398545265198,0.5416585206985474,0.4413844347000122,-0.45122820138931274,0.6702153086662292,-0.8764693140983582,-0.2828983664512634,-0.3100939989089966,-0.12255239486694336,-1.0492029190063477,-0.8187520503997803,0.24328432977199554,-0.6477587223052979,-0.5662667155265808,0.5299931168556213,-0.16486720740795135,-0.5515258312225342,-0.4993116557598114,0.20804063975811005,0.5959509611129761,-0.5303364992141724,0.33830690383911133,0.6449111104011536,0.15322712063789368,-0.5701629519462585,-0.8095422387123108,0.299686998128891,-0.15813173353672028,-0.42938998341560364,0.01225562859326601,0.2296690195798874,-0.003090759040787816,-0.4748457670211792,-0.6214565634727478,-0.34394094347953796,0.25212395191192627,0.6680505275726318,-0.4346116781234741,0.05700011923909187,-0.5419701337814331,-0.06856900453567505,0.22415021061897278,0.39412787556648254,0.15209266543388367,-0.12497655302286148,-0.14452865719795227,0.10466565191745758,-0.885491669178009,0.16965919733047485,0.3295234143733978,0.5647721886634827,0.6704097390174866,0.3424019515514374,-0.03930060938000679,-0.09012854844331741,-0.4867702126502991,-0.19723494350910187,-0.3999251127243042,-0.12402091920375824,-0.3148922622203827,-0.03522349148988724,0.08981114625930786,-0.5273032784461975,-0.2906345725059509,-0.008796274662017822,0.10828336328268051,-0.5253278017044067,0.32934826612472534,0.1370808184146881,0.40024134516716003,0.15117497742176056,-0.39427340030670166,0.28206363320350647,0.03590822592377663,-0.5984677076339722,-0.7090610861778259,-0.9651968479156494,0.2385367751121521,-0.6296990513801575,0.4865530729293823,-0.3372344374656677,-0.4074413478374481,0.40377700328826904,0.2570020258426666,0.4174588918685913,0.8144797086715698,0.36606156826019287,0.3249886631965637,-0.3144724667072296,-0.13040763139724731,0.11302396655082703,-0.5673134326934814,-0.302737295627594,0.07992523908615112,0.8787054419517517,1.172546148300171,0.4492942988872528,-0.030851297080516815,0.2505459785461426,0.41262075304985046,-0.49564653635025024,0.8719723224639893,0.07523376494646072,-1.1572521924972534,-0.01636483334004879,-0.26380544900894165,-1.4837547540664673,0.5048713088035583,-0.08823634684085846,0.07521479576826096,-0.49488142132759094,0.26249536871910095,-0.6110193729400635,-0.2207442820072174,-0.6484773755073547,1.0147236585617065,-0.44640663266181946,-0.5317413806915283,-0.14681464433670044,-1.1751823425292969,0.23739926517009735,0.7769442796707153,0.5977027416229248,-0.09468377381563187,-0.1947668194770813,0.8031347990036011,-0.27485743165016174,0.3829503059387207,0.008609862998127937,-0.12533974647521973,-0.14479875564575195,0.09938973188400269,0.32281163334846497,0.9557879567146301,0.44236403703689575,-0.3139778673648834,-0.6251403093338013,-0.9560933709144592,-0.026251723989844322,1.0045522451400757,-0.37324783205986023,-1.1330887079238892,-0.7285730242729187,-0.8578240871429443,0.283489465713501,0.3208872675895691,-0.19238921999931335,0.018476346507668495,-0.5433160066604614,0.7849560379981995,0.6621338725090027,-0.04260914772748947,0.5969443321228027,0.44642236828804016,-0.26311758160591125,-0.9876590371131897,0.3932715058326721,-0.15448811650276184,0.13365773856639862,-0.0799962505698204,0.7488629817962646,-0.6475675106048584,-0.009853999130427837,-0.7468257546424866,0.47061026096343994,-0.3518182933330536,-0.18345221877098083,-0.5140756368637085,0.1674567610025406,-0.9340670704841614,-0.025641120970249176,-0.34011444449424744,-0.8153799176216125,-0.26087984442710876,0.3495074212551117,-0.07597187161445618,0.6782748699188232,-0.12641578912734985,1.2685917615890503,-0.8028026819229126,0.5285968780517578,0.5295302271842957,0.3867567479610443,-0.1515539586544037,-1.0572096109390259,-0.49948495626449585,-0.39823028445243835,-0.8323652744293213,-0.9415347576141357,0.6449390053749084,-0.14691118896007538,0.04789162799715996,1.2827277183532715,-0.09551580995321274,0.603675901889801,0.09274474531412125,1.0837756395339966,0.4858129918575287,-0.9330762028694153,0.09257236123085022,-0.6846525073051453,0.6818339824676514,0.4644860029220581,0.8943250179290771,-0.5759118795394897,-0.05204038321971893,-1.039456844329834,-0.7968854308128357,0.25239646434783936,0.4111694395542145,0.0011898776283487678,0.04329173266887665,-0.7683977484703064,0.09674887359142303,0.5332443118095398,-0.8648918271064758,-0.4710420072078705,0.2660006582736969,0.22469790279865265,0.5526612401008606,-0.2161717712879181,-0.48416608572006226,-0.924457848072052,0.5668873190879822,0.4644615948200226,0.016160206869244576,-0.16353924572467804,-0.13962322473526,-0.3175646960735321,0.4352322518825531,0.6779831051826477,0.9168933033943176,-0.7922529578208923,0.5794135332107544,-0.05354280769824982,-0.3465318977832794,0.06871140003204346,-0.2459251582622528,-0.05720151960849762,0.32953858375549316,-0.44721513986587524,0.050602808594703674,0.8087331056594849,-0.5344159603118896,0.305500328540802,-0.18340158462524414,-0.19031253457069397,-0.309244304895401,-0.2884880304336548,0.11887530237436295,0.18470722436904907,0.199752539396286,-0.06084237992763519,0.24666717648506165,-0.26213422417640686,0.49224817752838135,0.48226016759872437,-0.5415734052658081,-0.3253564238548279,1.3615599870681763,0.5222530364990234,-0.32182902097702026,0.46122345328330994,0.24173259735107422,-0.0673547014594078,0.5831491351127625,1.2432188987731934,0.49218353629112244,-0.5042010545730591,0.7092238664627075,0.06750074774026871,-0.09383261948823929,-0.0081543093547225,0.44860950112342834,-0.1970268189907074,-0.28806084394454956,0.6269216537475586,-0.803895890712738,-0.22598743438720703,0.5601255893707275,-0.3778359591960907,0.2135166972875595,-0.7522717118263245,-0.779211163520813,0.1779584139585495,-0.11637934297323227,-0.5567536354064941,0.4780929386615753,0.07993963360786438,1.180921196937561,-1.0012739896774292,1.0854748487472534,1.2030161619186401,-0.39551323652267456,-0.3470480144023895,-0.5964025259017944,-0.003305548569187522,-0.5828757882118225,0.6706764698028564,-0.07850617915391922,0.16851960122585297,-0.20571738481521606,-0.268282413482666,-0.7996156215667725,0.33568376302719116,-0.12711429595947266,-0.25941455364227295,-0.015434486791491508,0.42356789112091064,-0.13292774558067322,0.0037969565019011497,-0.18581432104110718,0.9464324116706848,0.8409354090690613,0.4372020363807678,-0.6313837170600891,-0.055603086948394775,0.09673861414194107,0.3239489793777466,-0.06169762834906578,-0.7502389550209045,0.7076743245124817,-0.45781442523002625,-0.16617447137832642,0.38411039113998413,1.180161476135254,0.21009182929992676,0.11365732550621033,0.5472085475921631,1.1442530155181885,0.2281898409128189,0.2820669710636139,0.9721088409423828,0.5765435099601746,0.4725164771080017,0.8732017874717712,-0.15962526202201843,-0.06697147339582443,0.9765822291374207,-0.6608487963676453,0.43563368916511536,0.46180063486099243,0.11050009727478027,0.5212056636810303,0.6355578899383545,-0.280332088470459,0.11997316777706146,-0.800595760345459,-0.287690669298172,0.43648675084114075,0.026447953656315804,-0.4591667354106903,-0.9742065072059631,-0.11056825518608093,0.07913459837436676,0.3082919120788574,0.22297149896621704,0.4662155508995056,0.24451857805252075,-0.3344615399837494,0.6512241363525391,0.04811880365014076,-0.011844181455671787,-0.10874098539352417,-0.20612436532974243,-0.27597931027412415,0.6450008749961853,0.038915444165468216,-0.8701965808868408,0.19781824946403503,-0.5256267189979553,-0.1740768998861313,-0.16985800862312317,0.12679293751716614,-0.4636904299259186,-0.16456031799316406,-0.21601201593875885,0.27244970202445984,0.41580191254615784,0.47157996892929077,-1.0791044235229492,0.27602824568748474,-0.12321404367685318,-0.1431848406791687,-0.016102466732263565,-0.11164054274559021,0.3355039954185486,0.7526078820228577,0.3873237371444702,0.43889203667640686,0.020581483840942383,0.0665377601981163,0.7098839282989502,-1.2233948707580566,-0.8678389191627502,-0.30513134598731995,0.3215208649635315,-0.3935432434082031,-0.5412213206291199,1.115997314453125,0.9920573830604553,0.914484977722168,-0.9107837677001953,0.017293615266680717,-0.2077222615480423,0.2669888138771057,0.22706453502178192,0.649146318435669,-0.4583829343318939,-0.22682905197143555,0.2800329625606537,-1.0090821981430054,-0.362485408782959,0.4176114797592163,0.1970158964395523,-0.38053134083747864,0.5054555535316467,0.6325038075447083,-0.4901634752750397,0.21487581729888916,0.31514257192611694,0.20230068266391754,-0.10582146048545837,0.22879809141159058,0.8290401101112366,-0.5272077918052673,-0.1003471314907074,-0.4193391501903534,-0.3952881693840027,-0.5583227872848511,-0.6888096332550049,-0.0452975295484066,-0.13799642026424408,-0.62837815284729,-0.4729372262954712,-0.14849378168582916,1.0821017026901245,0.9769520163536072,-1.0336458683013916,-0.852587878704071,0.9743750691413879,0.370536208152771,-0.6756088137626648,-0.23825114965438843,-0.1673172116279602,-0.07628379762172699,-0.5976764559745789,0.7753019332885742,0.6446144580841064,0.5124966502189636,0.31413015723228455,-0.00003639691567514092,-0.8735217452049255,0.5028191208839417,0.49051231145858765,0.2277340292930603,-0.6177209615707397,-0.30641138553619385,-0.605127215385437,-0.2127356231212616,0.28962069749832153,0.7604162096977234,-0.3130319118499756,-0.11445695906877518,0.4159240424633026,0.6234878301620483,0.2780379056930542,0.5945948958396912,0.37354910373687744,-1.0610800981521606,0.521527111530304,0.31822124123573303,0.33180931210517883,-0.10160930454730988,-0.513020396232605,0.570996105670929,0.47622430324554443,-0.8863240480422974,-0.44037914276123047,-0.3269352912902832,-1.8785266876220703,-0.6457673907279968,0.8876060247421265,-0.08890876173973083,-1.0130339860916138,-0.2681725323200226,-0.025494800880551338,0.30071747303009033,-0.7092866897583008,0.8538867831230164,-0.08444361388683319,0.1759151965379715,-0.0645117536187172,-0.6093289852142334,0.3150272071361542,0.6975864768028259,-0.7012813687324524,-0.22271794080734253,0.649813711643219,0.5986615419387817,-0.08681211620569229,0.04726758971810341,-0.36053359508514404,0.36199748516082764,-0.09300746023654938,-0.1462542563676834,-0.13827596604824066,-0.6411302089691162,0.06707187741994858,0.31476008892059326,0.3629421889781952,-1.0855286121368408]\r\n```\r\n\r\nMy command is \r\n```\r\nneo4j-admin database import full --nodes=datasets/bulk/t/ff_sr_fndds_food_portions_header.csv,datasets/bulk/t/ff_sr_fndds_food_portions.csv --relationships=datasets/bulk/t/ff_sr_fndds_food_portions_relations_header.csv,datasets/bulk/t/ff_sr_fndds_food_portions_relations.csv\r\n```\r\n\r\nIt fails with the following error\r\n```\r\norg.neo4j.internal.batchimport.input.HeaderException: Unable to parse header, unknown property type 'LIST<FLOAT>'\r\n\tat org.neo4j.internal.batchimport.input.csv.DataFactories.parsePropertyType(DataFactories.java:483)\r\n\tat org.neo4j.internal.batchimport.input.csv.DataFactories$AbstractDefaultFileHeaderParser.propertyExtractor(DataFactories.java:280)\r\n\tat org.neo4j.internal.batchimport.input.csv.DataFactories$DefaultNodeFileHeaderParser.create(DataFactories.java:410)\r\n\tat org.neo4j.internal.batchimport.input.csv.DataFactories.parseHeaderEntries(DataFactories.java:196)\r\n\tat org.neo4j.internal.batchimport.input.csv.DataFactories$AbstractDefaultFileHeaderParser.create(DataFactories.java:221)\r\n\tat org.neo4j.internal.batchimport.input.csv.CsvInput.verifyHeaders(CsvInput.java:164)\r\n\tat org.neo4j.internal.batchimport.input.csv.CsvInput.<init>(CsvInput.java:145)\r\n\tat org.neo4j.internal.batchimport.input.csv.CsvInput.<init>(CsvInput.java:108)\r\n\tat org.neo4j.importer.CsvImporter.doImport(CsvImporter.java:175)\r\n\tat org.neo4j.importer.ImportCommand$Base.doExecute(ImportCommand.java:431)\r\n\tat org.neo4j.importer.ImportCommand$Full.execute(ImportCommand.java:590)\r\n\tat org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:92)\r\n\tat org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:37)\r\n\tat picocli.CommandLine.executeUserObject(CommandLine.java:2041)\r\n\tat picocli.CommandLine.access$1500(CommandLine.java:148)\r\n\tat picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)\r\n\tat picocli.CommandLine$RunLast.handle(CommandLine.java:2453)\r\n\tat picocli.CommandLine$RunLast.handle(CommandLine.java:2415)\r\n\tat picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)\r\n\tat picocli.CommandLine$RunLast.execute(CommandLine.java:2417)\r\n\tat picocli.CommandLine.execute(CommandLine.java:2170)\r\n\tat org.neo4j.cli.AdminTool.execute(AdminTool.java:94)\r\n\tat org.neo4j.cli.AdminTool.main(AdminTool.java:82)\r\nCaused by: java.lang.IllegalArgumentException: 'LIST<FLOAT>'\r\n\tat org.neo4j.csv.reader.Extractors.valueOf(Extractors.java:199)\r\n\tat org.neo4j.internal.batchimport.input.csv.DataFactories.parsePropertyType(DataFactories.java:481)\r\n\t... 22 more\r\nroot@51d13ae3cbf2:/var/lib/neo4j/import# \r\n```\r\n\r\nI am using neo4j in my docker with following version\r\n```\r\nroot@51d13ae3cbf2:/var/lib/neo4j/import# neo4j version\r\nneo4j 5.13.0\r\n```\r\n\r\nIt seems admin command only understand simple types like `STRING`, `INT`, etc. so, how can I fix this issue? ",
"link": "https://stackoverflow.com/questions/77525633/importing-vector-embedding-in-neo4j-via-neo4j-admin-import-is-failing-with-unkno",
"title": "Importing Vector Embedding in Neo4J via neo4j-admin import is failing with unknown property type 'LIST<FLOAT>'"
},
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 33099,
"reputation": 29846,
"user_id": 92359,
"user_type": "registered",
"accept_rate": 94,
"profile_image": "https://www.gravatar.com/avatar/664d3d4c50c731d90a32db5f9e01b4b9?s=256&d=identicon&r=PG",
"display_name": "InverseFalcon",
"link": "https://stackoverflow.com/users/92359/inversefalcon"
},
"is_accepted": true,
"score": 0,
"creation_date": 1700599333,
"answer_id": 77525820,
"question_id": 77524947,
"body_markdown": "You could try a query like this:\r\n\r\n```\r\nMATCH (n:Resource)\r\nWHERE EXISTS {\r\n MATCH (n)-[*0..1]->(x)\r\n WHERE (x:Resource OR x:Tag)\r\n AND any(prop IN ['name', 'description', 'legal_name', 'organization_type', 'tag'] WHERE x[prop] CONTAINS 'school')\r\n}\r\n\r\nWITH n, [(n)-[]->(m) | m] as resources\r\nRETURN n, resources;\r\n```\r\n\r\nThis uses an EXISTS {} subquery to say that you're looking for a node (that could be the same node, or could be a connected node) that is a :Resource or :Tag node that has any of the given properties with the property value contains 'school'.\r\n\r\nFor the resulting nodes that pass that filter, THEN you can match out to and collect the connected nodes (though in this case I'm using a pattern comprehension to do so, which will be more efficient).\r\n\r\nEDIT: Fixed up the grouping of the AND and OR operators, that should ensure the any() list predicate must always be considered.",
"title": "[Neo4j][Cypher Query] Filter On Node or Relationship Node Properties and Then Return All Nodes and Their Relationship Nodes"
},
{
"owner": {
"account_id": 520031,
"reputation": 482,
"user_id": 2258090,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/g8J8h.jpg?s=256&g=1",
"display_name": "Finbar Good",
"link": "https://stackoverflow.com/users/2258090/finbar-good"
},
"is_accepted": false,
"score": 0,
"creation_date": 1700774191,
"answer_id": 77539656,
"question_id": 77524947,
"body_markdown": "The `Tags` look a lot like labels. Their one property, `tag`, could just as easily be the label identifier. With the tags as labels, the predicates can be simplified like so:\r\n```sql\r\nWITH ['name', 'description', 'legal', 'organization_type'] AS props\r\nMATCH (n:Resource)-->(m) \r\nWHERE n:School OR any(prop IN props WHERE m[prop] CONTAINS 'school')\r\nRETURN n, collect(m);\r\n```",
"title": "[Neo4j][Cypher Query] Filter On Node or Relationship Node Properties and Then Return All Nodes and Their Relationship Nodes"
}
],
"owner": {
"account_id": 8667309,
"reputation": 13,
"user_id": 6487302,
"user_type": "registered",
"profile_image": "https://graph.facebook.com/10110994760169374/picture?type=large",
"display_name": "Daniel Kohli",
"link": "https://stackoverflow.com/users/6487302/daniel-kohli"
},
"is_answered": true,
"view_count": 54,
"favorite_count": 0,
"accepted_answer_id": 77525820,
"answer_count": 2,
"score": 0,
"creation_date": 1700589233,
"question_id": 77524947,
"body_markdown": "I've got a Neo4j DB that contains `Resource` nodes with several relationship nodes including `Tag`, `Address`, `PhoneNumber`, etc.\r\n\r\nThe schema for `Resource` is as follows:\r\n```\r\nResource: {\r\n name: str,\r\n description: str,\r\n legal_name: str,\r\n organization_type: str,\r\n}\r\n```\r\n\r\nThe schema for `Tag` is as follows:\r\n```\r\nTag: {\r\n tag: str,\r\n}\r\n```\r\n\r\nI'm building a query that returns all `Resource` nodes along with their relationship nodes where the `Resource` node has a property that contains a specific string AND/OR related `Tag` node(s) has(ve) a property that contains the same string.\r\n\r\nExample cases to return:\r\n1. A `Resource` node DOES have one or more property that contains the string "school" but all related `Tag` nodes DO NOT have a `tag` property containing the string "school": the `Resource` node is returned along with all of its relationship nodes\r\n2. A `Resource` node DOES NOT have any properties that contain the string "school" but has at least one related `Tag` node that DOES have a `tag` property containing the string "school": the `Resource` node is returned along with all of its relationship nodes\r\n3. A `Resource` node DOES have one or more property that contains the string "school" and has at least one related `Tag` node that DOES have a `tag` property containing the string "school": the `Resource` node is returned along with all of its relationship nodes\r\n\r\n I'm currently using the below query and it works for the most part; however, for case 2 above no other relationship nodes of the originating `Resource` node are returned in the result set. Ideally, we would ALWAYS get all relationship nodes of the `Resource` node matching the above criteria. Any help would be greatly appreciated!\r\n\r\n```\r\nMATCH (n:Resource)-[]->(m) \r\nWHERE n.name CONTAINS 'school'\r\n OR n.description CONTAINS 'school'\r\n OR n.legal_name CONTAINS 'school'\r\n OR n.organization_type CONTAINS 'school'\r\n OR m.tag CONTAINS 'school'\r\nRETURN n, collect(m);\r\n```",
"link": "https://stackoverflow.com/questions/77524947/neo4jcypher-query-filter-on-node-or-relationship-node-properties-and-then-re",
"title": "[Neo4j][Cypher Query] Filter On Node or Relationship Node Properties and Then Return All Nodes and Their Relationship Nodes"
},
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 5007043,
"reputation": 672,
"user_id": 4024409,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/-4JS5nVp4cYs/AAAAAAAAAAI/AAAAAAAAAAA/9dswBlPXPdw/photo.jpg?sz=256",
"display_name": "Vincent Rupp",
"link": "https://stackoverflow.com/users/4024409/vincent-rupp"
},
"is_accepted": false,
"score": 0,
"creation_date": 1701792720,
"answer_id": 77607672,
"question_id": 77522450,
"body_markdown": "One thing I see is that you have a long pattern, and within that pattern you have a condition that uses a property of a node in that pattern.\r\n\r\nThat is, you match on t1 and require `{movOre: t1.nutel}`, and the same thing again when you use a REBIX relationship property to filter on `t2: Tel`\r\n\r\nThis means every t1 has to be found, and every value of `t1.nuTel` used in the pattern. If you have 1000 Tel nodes, you have 1000 nuTel properties. Basically, the possibilities for nuTel and movBene are exploding.\r\n\r\nYou might refactor to split this into multiple MATCH statements:\r\n\r\n```\r\nMATCH (t1:Tel {TB:true})\r\nWITH distinct t1.nuTel as t1nuTel\r\nMATCH (t1:Tel {TB:true, nulTel:t1nuTel})<-[:TelBIZ]-(:ACC {TB:true})-[or:REBIZ {movOre: t1nuTel}]->(:ACC {TB:true})->(t2:Tel {TB:true, nuTel: or.movBene})\r\nWHERE t1.nuTel <> t2.nuTel\r\nRETURN t1, t2, count(or) as Ope, sum(or.imp) as Total, 10^3 as Precision, max(or.Txt) as mRB\r\n```\r\n\r\nThat may not be the best solution for your graph, and there's still the issue with `or.movBene` being used as a filter when it's part of a pattern, but hopefully I've communicated the idea and you can refine from there.\r\n\r\nAlso, indexes on nuTel, movBene, and TB will be incredibly faster, if you don't haver them already.",
"title": "Optimization of a MATCH statement"
}
],
"owner": {
"account_id": 29810119,
"reputation": 11,
"user_id": 22845737,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a/ACg8ocKNKzG4ZG21RjKJZ87NmjljaKskSXrI6x6i6Z3c2cr241k=k-s256",
"display_name": "Somnath Deb",
"link": "https://stackoverflow.com/users/22845737/somnath-deb"
},
"is_answered": false,
"view_count": 48,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1700566122,
"question_id": 77522450,
"body_markdown": "```\r\nMATCH (t1:Tel {TB:true})<-[:TelBIZ]-\r\n (:ACC {TB:true})-[or:REBIZ {movOre:t1.nuTel}]->\r\n (:ACC {TB:true})-[:TelBIZ]->(t2:Tel {TB:true,nuTel:or.movBene}) \r\nWHERE t1.nuTel<>t2.nuTel\r\nRETURN t1, t2, COUNT(or) AS Ope, SUM(or.imp) AS Total, \r\n 10^3 as Precision, max(or.Txt) AS mRB\r\n```\r\n\r\nI am trying to get this query to return few values, but I find the query is not optimised and returns a lot of data. Please suggest me how I can optimize it. I am using Neo4j v3.5.",
"link": "https://stackoverflow.com/questions/77522450/optimization-of-a-match-statement",
"title": "Optimization of a MATCH statement"
},
{
"tags": [
"java",
"spring",
"spring-boot",
"neo4j",
"spring-data-neo4j"
],
"answers": [
{
"owner": {
"account_id": 1261634,
"reputation": 24551,
"user_id": 1219755,
"user_type": "registered",
"accept_rate": 84,
"profile_image": "https://i.stack.imgur.com/UmjNt.jpg?s=256&g=1",
"display_name": "alexanoid",
"link": "https://stackoverflow.com/users/1219755/alexanoid"
},
"is_accepted": false,
"score": 0,
"creation_date": 1700955753,
"answer_id": 77549953,
"question_id": 77520005,
"body_markdown": "I'm not sure if I'm doing it right, but I've encountered this problem myself and haven't found a better solution than simply creating a new object of the class I need and populating it with values that I extract from the `InternalNode`.\r\n\r\nFor example:\r\n\r\n InternalNode internalNode = (InternalNode) weightedCriteriaArrayElement.get("criterion");\r\n \r\n Criterion criterion = new Criterion(); // my entity class\r\n Map<String, Object> nodeProperties = new HashMap<>(internalNode.asMap());\r\n BeanUtils.populate(criterion, nodeProperties);\r\n criterion.setGraphId(internalNode.id());",
"title": "Spring data Neo4j can't convert InternalNode back to entity class when retrieving paths"
}
],
"owner": {
"account_id": 18625023,
"reputation": 27,
"user_id": 13574344,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a-/AOh14GhGuIzJ2-1xF-utmOJhucA_rPsejZT_BlTMM9K7=k-s256",
"display_name": "stackoverflow_user",
"link": "https://stackoverflow.com/users/13574344/stackoverflow-user"
},
"is_answered": false,
"view_count": 56,
"favorite_count": 0,
"answer_count": 1,
"score": 1,
"creation_date": 1700534522,
"question_id": 77520005,
"body_markdown": "I'm using Neo4jClient to do the following query for retrieving nodes and relationships by paths.\r\n```\r\n public Collection<Map<String, Object>> findBookByUniqueIds(List<String> srcUniqueIds, String name) {\r\n\r\n return neo4jClient.query(\r\n """\r\n MATCH path = (src:Book)-[*1..2]-(target:Book)\r\n WHERE src.uniqueId IN $uniqueIds\r\n AND toUpper(target.name) = toUpper($name)\r\n RETURN nodes(path) AS nodes, relationships(path) AS relations\r\n """)\r\n .bind(srcUniqueIds).to("uniqueIds")\r\n .bind(name).to("name")\r\n .fetch().all();\r\n }\r\n```\r\n\r\nAnd I extract the data like this:\r\n```\r\nCollection<Map<String, Object>> result = findBookByUniqueIds(ids, name);\r\nList<Object> nodes = (List<Object>) result.get("nodes");\r\nList<Object> relationships = (List<Object>) result.get("relations");\r\n```\r\n\r\nWhen I was trying to cask the node back to entity class:\r\n```\r\nif (nodes.size() == 2) {\r\n Book book1 = (Book) nodes.get(0);\r\n Book book2 = (Book) nodes.get(1);\r\n} else if (nodes.size() == 3) {\r\n Book book1 = (Book) nodes.get(0);\r\n Author author = (Author) nodes.get(1);\r\n Book book2 = (Book) nodes.get(2);\r\n}\r\n```\r\nAnd I got the exception `java.lang.ClassCastException: class org.neo4j.driver.internal.InternalNode cannot be cast to class xxx`\r\n\r\nAny idea on how to convert the node back to entity class?\r\n\r\nThanks",
"link": "https://stackoverflow.com/questions/77520005/spring-data-neo4j-cant-convert-internalnode-back-to-entity-class-when-retrievin",
"title": "Spring data Neo4j can't convert InternalNode back to entity class when retrieving paths"
},
{
"tags": [
"neo4j"
],
"answers": [
{
"owner": {
"account_id": 5567614,
"reputation": 773,
"user_id": 4414246,
"user_type": "registered",
"accept_rate": 60,
"profile_image": "https://i.stack.imgur.com/HDcLp.jpg?s=256&g=1",
"display_name": "David A Stumpf",
"link": "https://stackoverflow.com/users/4414246/david-a-stumpf"
},
"is_accepted": false,
"score": 0,
"creation_date": 1700586406,
"answer_id": 77524665,
"question_id": 77514862,
"body_markdown": "You could try this ...\r\n\r\n MATCH (n:YourNodeLabel)\r\n RETURN apoc.convert.toHex(n.yourByteArrayProperty) AS hexValue\r\n\r\nI've created a [hex-ORDPATH][1] in a Neo4j user defined function (UDF). That code might help if you want to write a custom UDF. \r\n\r\n\r\n [1]: https://github.com/waigitdas/Neo4j-Genealogy-PlugIns/blob/main/java%20classes/graph/ordpath.java",
"title": "Display byte array as hex string in Neo4j Browser"
}
],
"owner": {
"account_id": 1612911,
"reputation": 3570,
"user_id": 1491378,
"user_type": "registered",
"accept_rate": 88,
"profile_image": "https://www.gravatar.com/avatar/ac8b182351a52912a793fcf193d0b02b?s=256&d=identicon&r=PG",
"display_name": "Hett",
"link": "https://stackoverflow.com/users/1491378/hett"
},
"is_answered": false,
"view_count": 20,
"favorite_count": 0,
"answer_count": 1,
"score": 0,
"creation_date": 1700473840,
"question_id": 77514862,
"body_markdown": "Is it possible to show data in hex format if I stored data as byte array using Neo4j Browser?\r\nIt is 16 bytes of md5 sum.\r\n",
"link": "https://stackoverflow.com/questions/77514862/display-byte-array-as-hex-string-in-neo4j-browser",
"title": "Display byte array as hex string in Neo4j Browser"
},
{
"tags": [
"neo4j",
"neo4j-parallel-runtime"
],
"answers": [
{
"owner": {
"account_id": 2108938,
"reputation": 2372,
"user_id": 1874594,
"user_type": "registered",
"accept_rate": 69,
"profile_image": "https://i.stack.imgur.com/vS7Eu.jpg?s=256&g=1",
"display_name": "user1874594",
"link": "https://stackoverflow.com/users/1874594/user1874594"
},
"is_accepted": true,
"score": 0,
"creation_date": 1701329442,
"answer_id": 77576603,
"question_id": 77509091,
"body_markdown": " Due the the Parallel nature of `Neo4j` these situations stem as reasons for what you experienced. \r\n\r\n - Results may not be deterministic, as different threads may finish at different times - use the `ORDER BY` clause \r\n - `PARALLEL runtime` does not support updating queries, such as those using the `CREATE, MERGE, SET, DELETE, or REMOVE` - updating the graph in parallel may cause conflicts or inconsistencies to use the same to read ,use `:begin` and `:commit` commands in `Cypher Shell` to control the transactions or another runtime, such as `SLOTTED or PIPELINED`, for the write queries.\r\n - Also it does not support reading data that has been modified in the same transaction, as this may cause `concurrency` issues or `stale reads` aka you cannot use the `apoc.cypher.mapParallel2` procedure to read data that you have updated in the same transaction - use another procedure, such as `apoc.cypher.doIt`, or split transaction into two parts. \r\n\r\nFor situational restrictions so mentioned , I doubt if they have plans to update. ",
"title": "Neo4j PARALLEL runtime query returns different result"
}
],
"owner": {
"account_id": 1261634,
"reputation": 24551,
"user_id": 1219755,
"user_type": "registered",
"accept_rate": 84,
"profile_image": "https://i.stack.imgur.com/UmjNt.jpg?s=256&g=1",
"display_name": "alexanoid",
"link": "https://stackoverflow.com/users/1219755/alexanoid"
},
"is_answered": true,
"view_count": 126,
"favorite_count": 0,
"accepted_answer_id": 77576603,
"answer_count": 1,
"score": 2,
"creation_date": 1700350923,
"question_id": 77509091,
"body_markdown": "I'm testing the new Neo4j PARALLEL runtime and am unable to pass my tests because my queries return different results (different elements order) compared to SLOTTED or PIPELINED. Do I need to somehow refine these queries so that they work properly on PARALLEL runtime? Do you have any docs on this? Or, are these refinements unnecessary, and the queries should return exactly the same result as on SLOTTED or PIPELINED?\r\n\r\nAlso, there is a limitation `It is not possible to use the parallel runtime if a change has been made to the state of a transaction.` https://neo4j.com/docs/cypher-manual/current/planning-and-tuning/runtimes/reference/\r\n\r\nUnfortunately, I have many scenarios where I currently use `apoc.cypher.mapParallel2` to read data in the same transaction where I'm updating it. I would like to transition to the PARALLEL runtime, but I am unable to do so due to this limitation. Are you planning to overcome this limitation in the future?",
"link": "https://stackoverflow.com/questions/77509091/neo4j-parallel-runtime-query-returns-different-result",
"title": "Neo4j PARALLEL runtime query returns different result"
},
{
"tags": [
"neo4j",
"cypher"
],
"answers": [
{
"owner": {
"account_id": 1575719,
"reputation": 19504,
"user_id": 2662355,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/6ea0a9d988f145b0e666dfdd96374736?s=256&d=identicon&r=PG",
"display_name": "Christophe Willemsen",
"link": "https://stackoverflow.com/users/2662355/christophe-willemsen"
},
"is_accepted": true,
"score": 1,
"creation_date": 1700341881,
"answer_id": 77508731,
"question_id": 77508656,
"body_markdown": "You're looking for the `ANY` predicate\r\n\r\n```\r\nMATCH p =(mFirst:MoveNode)-[:NEXT_MOVE*${patternLength - 1}]->(:MoveNode)\r\nWHERE ANY(\r\n x IN $patterns \r\n WHERE ( mFirst.move = head(x) AND [m IN nodes(p) | m.move] = x )\r\n)\r\n```",
"title": "Practical Way of Doing Equality Against Multiple Possible Values in Cypher"
}
],
"owner": {
"account_id": 3348911,
"reputation": 6259,
"user_id": 4756173,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/0e50f7e8bb3963d1dc749e278c3d8d33?s=256&d=identicon&r=PG",
"display_name": "Philippe Fanaro",
"link": "https://stackoverflow.com/users/4756173/philippe-fanaro"
},
"is_answered": true,
"view_count": 23,
"favorite_count": 0,
"accepted_answer_id": 77508731,
"answer_count": 1,
"score": 0,
"creation_date": 1700340432,
"question_id": 77508656,
"body_markdown": "> This question follows up on [@cybersam's answer to one of my previous questions](https://stackoverflow.com/a/77499034/4756173), however no previous knowledge about this problem is necessary.\r\n\r\nIn a pattern-search query, a simplified version of [@cybersam's query here](https://stackoverflow.com/a/77499034/4756173), I would like to, ideally, match paths not only to an input pattern but to all of its isomorphisms (board rotations and reflections) and permutations.\r\n\r\n> A pattern in this case is a list of strings (A-Z) of length 2, e.g. `['pq', 'dd', 'pp']`.\r\n\r\nSo, in that query, I would have to create an `OR` statement for each pattern in a pattern list:\r\n\r\n```cypher\r\nMATCH p = (mFirst:MoveNode)\r\n -[:NEXT_MOVE*${patternLength - 1}]\r\n ->(:MoveNode)\r\n\r\nWHERE (\r\n mFirst.move = HEAD($patterns[0]) \r\n AND [m IN NODES(p) | m.move] = $patterns[0]\r\n )\r\n OR (\r\n mFirst.move = HEAD($patterns[1]) \r\n AND [m IN NODES(p) | m.move] = $patterns[1]\r\n )\r\n OR (...)\r\n .\r\n .\r\n .\r\n```\r\n\r\nIs there a way of making this programmatic? Cause, this isn't scalable, since I don't know how many permutations I'm gonna end up having. ",
"link": "https://stackoverflow.com/questions/77508656/practical-way-of-doing-equality-against-multiple-possible-values-in-cypher",
"title": "Practical Way of Doing Equality Against Multiple Possible Values in Cypher"
},
{
"tags": [
"neo4j",
"parallel-processing",
"gpu",
"neo4j-parallel-runtime"
],
"answers": [
{
"owner": {
"account_id": 28282947,
"reputation": 86,
"user_id": 21624328,
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/a/AGNmyxZzl1uvGNT2Zj90oWIgnDozeOoiJzA7-rJgem4f=k-s256",
"display_name": "Christoffer Bergman",
"link": "https://stackoverflow.com/users/21624328/christoffer-bergman"
},
"is_accepted": true,
"score": 0,
"creation_date": 1700230936,
"answer_id": 77502358,
"question_id": 77501923,
"body_markdown": "The Parallel Runtime is a very powerful mechanism for certain queries to parallelise the processing of a single query (though parallel processing isn't new when you have multiple parallel queries).\r\n\r\nHowever, GPU's are not supported by the parallel runtime and it is not really foreseen either.",
"title": "Neo4j parallel runtime and GPU"
}
],
"owner": {
"account_id": 1261634,
"reputation": 24551,
"user_id": 1219755,
"user_type": "registered",
"accept_rate": 84,
"profile_image": "https://i.stack.imgur.com/UmjNt.jpg?s=256&g=1",
"display_name": "alexanoid",
"link": "https://stackoverflow.com/users/1219755/alexanoid"
},
"is_answered": true,
"view_count": 62,
"favorite_count": 0,