Marko A. Rodriguez created TINKERPOP-1565:
---------------------------------------------
Summary: GraphSON 2.0 updates -- supporting attachment,
maintaining consistency, and reducing verbosity
Key: TINKERPOP-1565
URL: https://issues.apache.org/jira/browse/TINKERPOP-1565
Project: TinkerPop
Issue Type: Improvement
Components: io
Affects Versions: 3.2.3
Reporter: Marko A. Rodriguez
Fix For: 3.2.3
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 -->
{code}
properties : {
key : "aKey",
value : { @type: "gProperty", @value : {"key","aKey","value",10}}
}
{code}
VertexProperty-->
{code}
properties : {
key : "aKey",
value : 10
}
{code}
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-->
{code}
return new
Vertex(json.get("id"),json.getOrDefault("label",Vertex.DEFAULT_LABEL),json.getOrDefault("properties",Collections.emptyMap()))
{code}
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 message was sent by Atlassian JIRA
(v6.3.4#6332)