What I have found helpful (at least with CSV files), is to take it step by step.
First, see if you can create a Node. And as a first step to that, see if you can create a table of the properties of the nodes (not yet created).
CALL apoc.some_call("file:///somefile") YIELD value
RETURN value.field1, value.field2, ...
LIMIT 10
Then you should get a table. It's going to be a bit more complex than what I've shown because it's JSON, and you have to chase all the JSON elements.
If that works, then create the node:
CALL apoc.some_call("file:///somefile") YIELD value
CREATE (n:Label{ field1:value.field1, field2:value.field2, ...})
don't forget you might want to convert strings into, e.g.
length:toInt(value.length)
After that works, then you have to figure out the relationships, which is not clear in your data example.
Sometimes, to make it conceptually simple, I will create the nodes in a first pass.
Then, in a second pass, I'll MATCH
the existing nodes and then do a creation of the relationships. Something like:
CALL apoc.some_call("file:///somefile") YIELD value
MATCH(n1:LabelA, {property1:value.field1}
MATCH(n2:LabelB, {property2:value.field2}
MERGE(n1)-[:RELATIONSHIP]->(n2) # or CREATE
RETURN n1,n2
Once you get the hang of it, then it may be possible to do it one pass.
However, I think what I've outlined in sketchy detail will give you a method of learning about your data and Neo4J in bite-sized steps.
I hope that helps.