What I do when I have trouble with an import (or anything at all complex) with Cypher, is make a version that is simple as possible and gradually build up from there. (You can also use PROFILE to see where the data "disappears".)
e.g. start with
WITH "file:///cite1.json" AS url
CALL apoc.load.json(url) YIELD value
RETURN value.citation, value.venue.id
and see if you are getting what you expect. (If you had a typo in a field name, Cypher doesn't complain...)
and slowly add statements. Also, do this on a clone of your DB, which you can delete if it doesn't work, so you don't pollute your existing data.
It's a bit hard to eyeball this much Cypher code and see what's wrong.
You might want to follow this thread on Debugging Cypher: