[
https://issues.apache.org/jira/browse/TINKERPOP-1565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15705921#comment-15705921
]
Marko A. Rodriguez commented on TINKERPOP-1565:
-----------------------------------------------
In the development branch, this is what the serializations look like:
*VERTEX*
{code}
{
"@type": "g:Vertex",
"@value": {
"id": {
"@type": "g:Int32",
"@value": 1
},
"label": "person",
"properties": {
"name": [
{
"id": {
"@type": "g:Int64",
"@value": 0
},
"value": "marko"
}
],
"location": [
{
"id": {
"@type": "g:Int64",
"@value": 6
},
"value": "san diego",
"properties": {
"startTime": {
"@type": "g:Int32",
"@value": 1997
},
"endTime": {
"@type": "g:Int32",
"@value": 2001
}
}
},
{
"id": {
"@type": "g:Int64",
"@value": 7
},
"value": "santa cruz",
"properties": {
"startTime": {
"@type": "g:Int32",
"@value": 2001
},
"endTime": {
"@type": "g:Int32",
"@value": 2004
}
}
},
{
"id": {
"@type": "g:Int64",
"@value": 8
},
"value": "brussels",
"properties": {
"startTime": {
"@type": "g:Int32",
"@value": 2004
},
"endTime": {
"@type": "g:Int32",
"@value": 2005
}
}
},
{
"id": {
"@type": "g:Int64",
"@value": 9
},
"value": "santa fe",
"properties": {
"startTime": {
"@type": "g:Int32",
"@value": 2005
}
}
}
]
}
}
}
{code}
*VERTEX PROPERTY*
{code}
{
"@type": "g:VertexProperty",
"@value": {
"id": {
"@type": "g:Int64",
"@value": 6
},
"value": "san diego",
"vertex": {
"@type": "g:Int32",
"@value": 1
},
"label": "location",
"properties": {
"startTime": {
"@type": "g:Int32",
"@value": 1997
},
"endTime": {
"@type": "g:Int32",
"@value": 2001
}
}
}
}
{code}
*EDGE*
{code}
{
"@type": "g:Edge",
"@value": {
"id": {
"@type": "g:Int32",
"@value": 16
},
"label": "uses",
"inVLabel": "software",
"outVLabel": "person",
"inV": {
"@type": "g:Int32",
"@value": 11
},
"outV": {
"@type": "g:Int32",
"@value": 1
},
"properties": {
"skill": {
"@type": "g:Int32",
"@value": 5
}
}
}
}
{code}
*VERTEX PROPERTY PROPERTY*
{code}
{
"@type": "g:Property",
"@value": {
"key": "startTime",
"value": {
"@type": "g:Int32",
"@value": 1997
},
"vertexProperty": {
"id": {
"@type": "g:Int64",
"@value": 6
},
"label": "location",
"value": "san diego",
"vertex": {
"@type": "g:Int32",
"@value": 1
}
}
}
}
{code}
*EDGE PROPERTY*
{code}
{
"@type": "g:Property",
"@value": {
"key": "skill",
"value": {
"@type": "g:Int32",
"@value": 5
},
"edge": {
"id": {
"@type": "g:Int32",
"@value": 16
},
"label": "uses",
"inV": {
"@type": "g:Int32",
"@value": 11
},
"outV": {
"@type": "g:Int32",
"@value": 1
}
}
}
}
{code}
> 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
> Labels: breaking
> 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)