-
-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Milestone
Description
ArcadeDB Version:
23.10.1
OS and JDK Version:
macOs Ventura Version 13.3.1, java 17.0.2 2022-01-18 LTS
Description
-
Use case:
- import a dataset with multi-label nodes (e.g
:Place:City,:Place:Country) from Neo4j using the arcadedb neo4j importer (jsonl/graphml) - be able to query from gremlin/cypher using both
Placeand its subtypes (e.gg.V().hasLabel(‘Place’)- should retrieve all thePlaces, Cities and Countries,g.V().hasLabel(‘City’)- should retrieve all theCities)
- import a dataset with multi-label nodes (e.g
-
From the documentation
- import from multi-label sources using the neo4j importer should create underscore-joined labels (e.g
City_Place) that use inheritance - vertices with multiple labels work using SQL inheritance and can be then retrieved in gremlin/cypher using the parent label as described here (No support for Multi-label nodes #384)
- import from multi-label sources using the neo4j importer should create underscore-joined labels (e.g
-
Expected behavior
- the neo4j importer should be able to import multi-label sources coming from Neo4j as the documentation states and then the vertices should be retrieved as expected by the gremlin/cypher queries
-
Actual behavior
- the import fail using the commands and jsonl file mentioned in the Steps to reproduce section
- the import using the graphml file completes but the vertices have
vertexas label (@type) and the actual labels are stored as string concatenation in a property (labels = “:Place:City”)
Steps to reproduce
json example line:
{“type”:“node”,“id”:“0",“labels”:[“Place”,“City”],“properties”:{“name”:“Test”}}
if from terminal we execute:
- docker exec -it arcadedb /bin/sh -c “rm -f /home/arcadedb/databases/graph/database.lck; ./bin/console.sh connect graph”
- import database file:///home/arcadedb/data/import/all.json
returns an error:
ERROR:
com.arcadedb.exception.CommandExecutionException: Error on importing database
at com.arcadedb.query.sql.parser.ImportDatabaseStatement.executeSimple(ImportDatabaseStatement.java:69)
at com.arcadedb.query.sql.executor.SingleOpExecutionPlan.executeInternal(SingleOpExecutionPlan.java:91)
at com.arcadedb.query.sql.parser.SimpleExecStatement.execute(SimpleExecStatement.java:52)
at com.arcadedb.query.sql.parser.Statement.execute(Statement.java:65)
at com.arcadedb.query.sql.SQLQueryEngine.command(SQLQueryEngine.java:110)
at com.arcadedb.database.EmbeddedDatabase.command(EmbeddedDatabase.java:1313)
at com.arcadedb.console.Console.executeSQL(Console.java:591)
at com.arcadedb.console.Console.execute(Console.java:267)
at com.arcadedb.console.Console.parse(Console.java:731)
at com.arcadedb.console.Console.interactiveMode(Console.java:129)
at com.arcadedb.console.Console.execute(Console.java:179)
at com.arcadedb.console.Console.main(Console.java:142)
Caused by: com.arcadedb.integration.importer.ImportException: Error on parsing source ‘file:///home/arcadedb/data/import/all.json (compressed=false size=37710174)’
at com.arcadedb.integration.importer.Importer.load(Importer.java:63)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.arcadedb.query.sql.parser.ImportDatabaseStatement.executeSimple(ImportDatabaseStatement.java:61)
... 11 more
Caused by: java.lang.IllegalStateException: stream has already been operated upon or closed
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at com.arcadedb.integration.importer.Neo4jImporter.typeNameFromLabels(Neo4jImporter.java:562)
at com.arcadedb.integration.importer.Neo4jImporter.lambda$syncSchema$1(Neo4jImporter.java:198)
at com.arcadedb.integration.importer.Neo4jImporter.executeCallback(Neo4jImporter.java:533)
at com.arcadedb.integration.importer.Neo4jImporter.readFile(Neo4jImporter.java:482)
at com.arcadedb.integration.importer.Neo4jImporter.syncSchema(Neo4jImporter.java:195)
at com.arcadedb.integration.importer.Neo4jImporter.run(Neo4jImporter.java:141)
at com.arcadedb.integration.importer.format.Neo4jImporterFormat.load(Neo4jImporterFormat.java:47)
at com.arcadedb.integration.importer.Importer.loadFromSource(Importer.java:95)
at com.arcadedb.integration.importer.Importer.load(Importer.java:54)
... 16 more
Further tests using version 22.6.1 (referenced in the issue_384 above)
- the import fail using the mentioned commands and jsonl file
- the import using the graphml file completes but the vertices have
vertexas label (@type) and the actual labels are stored as string concatenation in a property (labels = “:Place:City”)
Reactions are currently unavailable