There is a significant difference in the way Titan and Janus handles properties with the same name which have values with different datatypes.
Titan allows it but Janus does not.
I am in a process to port my app which is using Titan to Janus and this is causing a major issue. In my app the properites are added dynamically. Other than few fixed properties and there is no predictibility of which properties and their datatypes.
Is there a way Janus can be made to behave same as Titan?
here is an example of the difference of behavior between Titan and Janus
Titan
=====
gremlin> v1=graph.addVertex();
==>v[4144]
gremlin> v2=graph.addVertex();
==>v[4096]
gremlin> v1.property("status", 1);
==>vp[status->1]
gremlin> v2.property("status","connected");
==>vp[status->connected]
gremlin> v1.property("size", 2000000)
==>vp[size->2000000]
gremlin> v2.property("size", 3000000000);
==>vp[size->3000000000]
gremlin> v1.property("status").value().getClass();
==>class java.lang.Integer
gremlin> v2.property("status").value().getClass();
==>class java.lang.String
gremlin> v1.property("size").value().getClass();
==>class java.lang.Integer
gremlin> v2.property("size").value().getClass();
==>class java.lang.Long
Janus
=====
gremlin> v1=graph.addVertex();
==>v[4104]
gremlin> v2=graph.addVertex();
==>v[4176]
gremlin> v1.property("status", 1);
==>vp[status->1]
gremlin> graph.tx().commit();
==>null
gremlin> v2.property("status","connected");
Value [connected] is not an instance of the expected data type for property key [status] and cannot be converted. Expected: class java.lang.Integer, found: class java.lang.String
Type ':help' or ':h' for help.
Display stack trace? [yN]n
gremlin> v1.property("size", 2000000)
==>vp[size->2000000]
gremlin> v2.property("size", 3000000000);
Value [3000000000] is not an instance of the expected data type for property key [size] and cannot be converted. Expected: class java.lang.Integer, found: class java.lang.Long
Type ':help' or ':h' for help.
Display stack trace? [yN]n