TinkerPop3 M2 Delay for MetaProperties by Marko A. Rodreiguez.
From the post:
TinkerPop3 3.0.0.M2 was suppose to be released 1.5 weeks ago. We have delayed the release because we have now introduced MetaProperties into TinkerPop3. Matthias Bröcheler of Titan-fame has been pushing TinkerPop to provide this feature for over a year now. We had numerous discussions about it over the past year, and at one point, rejected the feature request. However, recently, a solid design proposal was presented by Matthias and Stephen and I went about implementing it over the last 1.5 weeks. With that said, TinkerPop3 now has MetaProperties.
What are meta-properties?
- Edges have Properties
- Vertices have MetaProperties
- MetaProperties have Properties
What are the consequences of meta-properties?
- A vertex can have multiple “name” properties (for example).
- A vertex’s properties (i.e. meta-properties) can have normal key/value properties (e.g. a “name” property can have an “acl:public” property).
What are the use cases?
- Provenance: different users have different declarations for Marko’s name: “marko”, “marko rodriguez,” “marko a. rodriguez.”
- Security: you can now do property-level security. Marko’s “age” has an acl:private property and his “name”(s) have acl:public properties.
- History: who mutated what and when did they do it? each vertex property can have a “creator:stephen” and a “createdAt:2014” property.
If you have ever had to build a graph application that required provenance, security, history, and the like, you realized how difficult it is with the current key/value property graph model. You end up, in essence, creating vertices for properties so you can express such higher order semantics. However, maintaing that becomes a nightmare as tools like Gremlin and GraphWrappers don’t know the semantics and you basically are left to create your own GremlinDSL-extensions and tools to process such a custom representation. Well now, you get it for free and TinkerPop will be able to provide (in the future) wrappers (called strategies in TP3) for provenance, security, history, etc.
I don’t grok the reason for a distinction between properties of vertices and properties of edges so I have posted a note asking about it.
Take the quoted portion as a sample of the quality of work being done on TinkerPop3.