[ 
https://issues.apache.org/jira/browse/TINKERPOP-1565?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette updated TINKERPOP-1565:
----------------------------------------
    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 -->
{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 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. 



  was:
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}}.



        Summary: Setup GraphSON 3.0  (was: GraphSON 3.0 updates -- supporting 
attachment, maintaining consistency, and reducing verbosity)

Changed the scope of this ticket to focus on GraphSON 3.0 setup only. It's a 
large body of work as it is and adding more isn't going to make this any easier 
to review.

> Setup GraphSON 3.0
> ------------------
>
>                 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
>            Assignee: Marko A. Rodriguez
>             Fix For: 3.3.0
>
>
> 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 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. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to