1
votes

I am using tinkerpop's gremlin server with neo4j db. How to set the vertex property cardinality to set or list?

java.lang.UnsupportedOperationException: Multiple properties on a vertex is not supported 
at org.apache.tinkerpop.gremlin.structure.VertexProperty$Exceptions.multiPropertiesNotSupported(VertexProperty.java:99) 
at org.apache.tinkerpop.gremlin.neo4j.structure.trait.NoMultiNoMetaNeo4jTrait.setVertexProperty(NoMultiNoMetaNeo4jTrait.java:101) 
at org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jVertex.property(Neo4jVertex.java:85) 
at org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStep.sideEffect(AddPropertyStep.java:121) 
at org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectStep.processNextStart(SideEffectStep.java:39) 
at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) 
at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:192) 
at org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor.handleIterator(AbstractOpProcessor.java:89) 
at org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor.lambda$evalOpInternal$5(AbstractEvalOpProcessor.java:252) 
at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:273) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745)

I found neo4j graph config over here, neo4j graph multi/meta properties I have tried setting these following properties in neo4j.properties. The last three ones.

gremlin.graph=org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph 
gremlin.neo4j.directory=/var/lib/neo4j/data/databases/graph.db 
gremlin.neo4j.conf.node_auto_indexing=true 
gremlin.neo4j.conf.relationship_auto_indexing=true 
gremlin.neo4j.conf.allow_store_upgrade=true 
gremlin.neo4j.conf.multiProperties=true 
gremlin.neo4j.conf.metaProperties=true 
gremlin.tinkergraph.defaultVertexPropertyCardinality=list

So, this happens when I do a query like this

g.V().addV('Stephen').property(set, '1','2')
1

1 Answers

1
votes

Two things...first, gremlin.tinkergraph.defaultVertexPropertyCardinality=list is not a "neo4j" configuration option. Second, I don't think that you are calling property() right. It should be more like the example in the link you provided:

gremlin> g.addV().property('name','michael').property('name','michael hunger').property('name','mhunger')
==>v[0]

Thus in your case you would do:

gremlin> g.addV('person').property(set,'name','Stephen').property(set,'name','Stephen').property(set,'name','steve').iterate()
gremlin> g.V().properties('name')
==>vp[name->Stephen]
==>vp[name->steve]