Hello everyone,
With Michael Hunger's help, NeoTechnology has published the following two
artifacts to Apache's Maven Central Repo:
http://repo1.maven.org/maven2/org/neo4j/neo4j-tinkerpop-api/
(Apache2 licensed API)
http://repo1.maven.org/maven2/org/neo4j/neo4j-tinkerpop-api-impl/ (AGPL
licensed API implementation)
Note that TinkerPop3's Neo4j-Gremlin only <depends/> on the Apache2 licensed
neo4j-tinkerpop-api artifact. When a user wishes to :install Neo4j-Gremlin
(e.g. GremlinServer or GremlinConsole), then the AGPL binaries will be
downloaded from Maven Central to the user's machine.
Neo4j-Gremlin was originally in TinkerPop3 M1 through M7. However, once
TinkerPop went Apache Software Foundation, we had to gut it until the above ASF
permitted model was implemented. Note that the current Neo4jGraph
implementation has seen a lot of updates since M7 so please give it a test
drive and find any problems issues.
http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#neo4j-gremlin
A collection of notes:
1. Neo4j 2.2+ has done a lot to ensure transaction consistency between
indices and global graph operations.
- All the "isDeleted()" checks in Neo4jGraph are gone.
2. The entire TinkerPop3 test suite passes except for TransactionTest
test around graph.close() semantics.
- Michael Hunger is looking into the problem. Right now its
OPT_OUT as its not a critical test.
3. Neo4jGraph no longer supports legacy indices -- only schema indices.
- This greatly simplified the code and ensured no @Deprecated
references.
- Creating indices in Neo4jGraph is done via Cypher:
graph.cypher("CREATE INDEX on :person(name)").
-
http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#_indices
4. Neo4jGraph supports Neo4j multi-labels both at the Neo4jVertex API
level and at the Neo4jGraphStep index lookup level.
- We now have LabelP.of() which allows for
g.V.has(label,of('person')).
-
http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#_multi_label
5. Neo4jGraph supports multi/meta-properties though this is considered
an experimental feature until it is more fully tested at scale and high
concurrency.
- The fear is that multi/meta-properties diverges from the
native Neo4j representation and until we are comfortable with the embedding,
its not safe for production use.
-
http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#_multi_meta_properties
5. And of course, you can still go Cypher->Gremlin which is really cool.
-
http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#_cypher
Thanks again to NeoTechnology for working with TinkerPop and releasing an
Apache2 licensed version of their API so the community can enjoy Neo4j-Gremlin.
Take care,
Marko.
http://markorodriguez.com