Description
GraphSON 2.0 has some issues that should be recified for its "official release" in 3.3.0.
Supporting Attachment
We need to make sure that every element and property can be attached back to the main graph.
- For Vertex, this means that we need to have the ID encoded (CHECK).
- For Edge, this means we need to have the out/in vertex ids encoded (CHECK).
- For VertexProperty, this means we need to have the vertex ID encoded (ERROR).
- For Property, this means we need to have the the element ID (vertex property or edge) encoded and then the subsequent vertex ID (ERROR).
Maintaining Consistency
Currently, property encoding in Edge is different than property encoding in VertexProperty.
Edge -->
properties : { key : "aKey", value : { @type: "gProperty", @value : {"key","aKey","value",10}} }
VertexProperty-->
properties : {
key : "aKey",
value : 10
}
This should be consistent.
Reducing Verbosity
We have the problem of representing both DetachedElements and ReferenceElements. DetachedElements contain lots of information and is typicaly used to ensure a data rich result set. ReferenceElements contain only the necessary information for attachment. I think we can support both representations by making certain fields "optional."
Vertex-->
return new Vertex(json.get("id"),json.getOrDefault("label",Vertex.DEFAULT_LABEL),json.getOrDefault("properties",Collections.emptyMap()))
That is, lots of getOrDefault() use will make sure that when desesired, we only send/recv information that is needed for the particular computatation. E.g. as dictated by HaltedTraverserStrategy.
This issue has evolved a bit since it was first written. The work thus far has been to setup GraphSON 3.0. The other stuff mentioned in the description above will be discussed/handled in other tickets. Those things are beyond the scope of this ticket at this point.
Attachments
Issue Links
- incorporates
-
TINKERPOP-1414 Change default GraphSON version to 3.0
- Closed
-
TINKERPOP-1574 Get rid of untyped GraphSON in 3.0
- Closed
- is related to
-
TINKERPOP-1474 API Alignment Between Java Gremlin Graph Structure and GLVs
- Closed
- relates to
-
TINKERPOP-1592 Add withDetachment() and specify the "detachment" model.
- Closed
- links to