Github user newkek commented on the issue:

    https://github.com/apache/tinkerpop/pull/386
  
    Hey @okram , 
    
    > 1. The term is "namespace" not "domain." In case that terminology is used 
in the documentation and not just in the PR notes.
    
    Ok, it's some places here and there in the code, I'll correct it.
    
    > 2. Why do we have `@class` and `@type`.
    
    `@class` shouldn't be anywhere near GraphSON 2.0 anymore, everything is 
`@type`, if you've seen it somewhere, that should be corrected. While writing 
that I realise I might have forgotten to update the "the-graph.asciidoc" doc... 
so I'll correct it. But in the actual code it shouldn't be there anymore.
    
    > 3. I read your notes, but its still not clear to me. Why do we have 
`@value`? I think we [...]
    
    So, taking a step back and I'm going to use the exampleof ByteCode. As you 
can see in the `GraphSONSerializersV2d0`, serializers don't have to care 
anymore about types, serializer are put into the context of "You're in a place 
where you can write whatever you want, type is handled somewhere else for you". 
For the ByteCode serializer it means it would open a Map, put a field 
"language" and its value, put a field "argument" and its value, put a field 
"value" (or call it "bytecode") and its value, close the map. When 
deserializing, read the map, get the fields values, create the ByteCode object.
    Let's admit for whatever reason the ByteCode serializer in the future needs 
to change and instead of writing a Map, it needs to start by an Array where the 
first element of the array is 'something', the rest is the Map described 
before, and close the array. Doing this is currently possible with the current 
format `{"@type":"typename", "@value":value}`, because the serializer is in a 
place where it can write whatever it wants to. 
    Now let's consider another format: `{"@type":"typename", value}`. There, 
the serializer is put in the context "You are currently in a **Map**, whatever 
you write, it must be in the form of a key/value pair". The "potential future" 
evolution of the ByteCode serializer (writing an array) *wouldn't* be possible. 
For the sake of consistency, I think it is important to keep the format as is
    
    > 4. I think we can save some bytes and still be readable if we make our 
namespace g
    
    Totally fine with `g`, again for the sake of consistency, I think it'd be 
valuable to have a 'name space' all the time.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to