On 2016-07-19 22:28 (+0100), Marko Rodriguez <okramma...@gmail.com> wrote: 
> Hi,
> 
> However, in general we just need an “object mapper pattern.” For instance:
> 
> For any JSON object { } that has a @type field, the @type value maps to a 
> deserializer. Thus, while we need to be able to serialize/deserialize the 
> standard Vertex/Edge/VertexProperty/etc. the representation should be 
> generalized to support any registered @type.

Agree with that, we wouldn't have had the choice than adding deserializers for 
these types anyway with how Jackson works. I had also planned indeed to make 
the GraphSONTypeIdResolver - which is the component that handles the conversion 
"typeID" -> "Java Class" for deserialization and "Java Class" -> "typeID" for 
serialization - configurable for users.

> 
>       Java GraphSON serializer/deserializer registration:
>               
> https://github.com/apache/tinkerpop/blob/TINKERPOP-1278/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java#L129-L147
>  
> <https://github.com/apache/tinkerpop/blob/TINKERPOP-1278/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java#L129-L147>
> 
>       Python GraphSON serializer registration:
>               
> https://github.com/apache/tinkerpop/blob/TINKERPOP-1278/gremlin-python/src/main/jython/gremlin_python/process/graphson.py#L122-L127
>  
> <https://github.com/apache/tinkerpop/blob/TINKERPOP-1278/gremlin-python/src/main/jython/gremlin_python/process/graphson.py#L122-L127>
> 
> People can register more @types as needed for their graph processor’s type 
> system.
> 
> Marko.
> 
> http://markorodriguez.com
> 
> 
> 
> > On Jul 19, 2016, at 12:55 PM, Marko Rodriguez <okramma...@gmail.com> wrote:
> > 
> > We need:
> > 
> >     Graph
> >     Element
> >             Vertex
> >             Edge
> >             VertexProperty
> >     Property
> >     Path
> >     TraversalExplanation
> >     TraversalMetrics
> >     Traversal (i.e. Bytecode)
> >     Traverser (object + bulk at minimum)
> > 
> > Marko.
> > 
> > http://markorodriguez.com
> > 
> > 
> > 
> >> On Jul 19, 2016, at 12:45 PM, Robert Dale <robd...@gmail.com> wrote:
> >> 
> >> There's also Path that can be returned from a query. It looks like
> >> GraphSON 1.0 handles this today in the REST API but it's not typed as
> >> a path.
> >> 
> >> On Tue, Jul 19, 2016 at 2:14 PM, gallardo.kev...@gmail.com
> >> <gallardo.kev...@gmail.com> wrote:
> >>> 
> >>> 
> >>> On 2016-07-19 18:02 (+0100), Robert Dale <robd...@gmail.com> wrote:
> >>>> - It seems redundant to nest a vertex or edge inside a type-value
> >>>> object and is inconsistent with a VertexProperty.
> >>>> - VertexProperty and (edge) Property are implicit types. I don't know
> >>>> if this is ok. Could they ever be used outside of their parents where
> >>>> they would need to be typed?
> >>> 
> >>> I agree with the VertexProperty remark. That's one last question I wanted 
> >>> to solve, if we go for typing Vertex and edges, do we include others? The 
> >>> full list I see then is : vertex/edge/vertexproperty/property/graph.
> >>> 
> >>> However I am not sure how useful it is to have more than Vertex and Edge. 
> >>> As, when deserializing a Vertex for example, there's no question as to 
> >>> what is in the "properties" field of the Vertex, there are necessarily 
> >>> only VertexProperties. However looking at the API, it seems like it is 
> >>> supported to write only a VertexProperty if one wants to (see 
> >>> GraphWriter.writeVertexProperty()), so in that case, to me it makes sense 
> >>> to add the types for the elements of the list I described above. @stephen 
> >>> any thoughts about that ?
> >>> 
> >>>> - Edges:
> >>>> - is in/outVLabel new? Couldn't find it in the API or any examples of 
> >>>> this.
> >>>> - why not make inV/outV have proper vertices with labels (to satisfy
> >>>> the case previous case) instead of just IDs? This would also be more
> >>>> consistent with the API.
> >>> 
> >>> I haven't touched that part, it was in the format before. I believe this 
> >>> is a question for Stephen.
> >>> 
> >>>> 
> >>>> Otherwise looks good!
> >>> 
> >>> Thanks for the feedback.
> >>>> 
> >>>> On Tue, Jul 19, 2016 at 12:05 PM, gallardo.kev...@gmail.com
> >>>> <gallardo.kev...@gmail.com> wrote:
> >>>>> 
> >>>>> 
> >>>>> On 2016-07-15 16:25 (+0100), 
> >>>>> "gallardo.kev...@gmail.com"<gallardo.kev...@gmail.com> wrote:
> >>>>>> 
> >>>>>> 
> >>>>>> On 2016-07-09 16:48 (+0100), Stephen Mallette <spmalle...@gmail.com> 
> >>>>>> wrote:
> >>>>>>> With all the work on GLVs and the recent work on GraphSON 2.0, I 
> >>>>>>> think it's
> >>>>>>> important that we have a solid, efficient, programming language 
> >>>>>>> neutral,
> >>>>>>> lossless serialization format. Right now that format is GraphSON and 
> >>>>>>> it
> >>>>>>> works for that purpose (ever more  so with 2.0). Given some 
> >>>>>>> discussion on
> >>>>>>> the GraphSON 2.0 PR driven a bit by Robert Dale:
> >>>>>>> 
> >>>>>>> https://github.com/apache/tinkerpop/pull/351#issuecomment-231157389
> >>>>>>> 
> >>>>>>> I wonder if we shouldn't consider another IO format that has Gremlin
> >>>>>>> Server/GLVs in mind. At this point I'm not suggesting anything 
> >>>>>>> specific -
> >>>>>>> I'm just hanging the idea out for further discussion and brain 
> >>>>>>> storming.
> >>>>>>> Thoughts?
> >>>>>>> 
> >>>>>> 
> >>>>>> Hey, so I'm trying to gather all infos we have here in order to 
> >>>>>> prepare to move forward with the implem of GraphSON 2.0, here's what I 
> >>>>>> come up with :
> >>>>>> 
> >>>>>> Things we have :
> >>>>>> - Type format.
> >>>>>> - The structure in Jackson to implement our own type format.
> >>>>>> - All non native Graph types are typed (except the domain specific 
> >>>>>> types).
> >>>>>> 
> >>>>>> New things we need :
> >>>>>> - Types for domain specific objects.
> >>>>>> - Types for all numeric values.
> >>>>>> - Don't serialize empty fields (outV and stuff).
> >>>>>> 
> >>>>>> Things we consider changing :
> >>>>>> - Type IDs convention. Before : Java simple class names. Now : starts 
> >>>>>> with a "domain" like "gremlin" followed by the "type name", which is a 
> >>>>>> lowercased type name (like "uuid", or "float", or "vertex"). Example : 
> >>>>>> "gremlin:uuid".
> >>>>>> - Type format ?
> >>>>>> 
> >>>>>> Am I missing something ?
> >>>>>> 
> >>>>> Hey,
> >>>>> 
> >>>>> So I've made a few changes in the code from the original GraphSON 2.0, 
> >>>>> with the objectives described above, the code is still messy but I just 
> >>>>> thought I'd share some samples to start getting into the work and 
> >>>>> gather some feedback.
> >>>>> 
> >>>>> In the example I've created a TinkerGraph with 2 vertices connected by 
> >>>>> an edge. The graph is serialized as a TinkerGraph.
> >>>>> The samples are there : 
> >>>>> https://gist.github.com/newkek/97da94342bc32e571cf4a0ba1018df60
> >>>>> 
> >>>>> Any feedback appreciated.
> >>>> 
> >>>> 
> >>>> 
> >>>> --
> >>>> Robert Dale
> >>>> 
> >> 
> >> 
> >> 
> >> -- 
> >> Robert Dale
> > 
> 
> 

Reply via email to