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