[ 
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)

Reply via email to