-
Notifications
You must be signed in to change notification settings - Fork 239
Release Notes
okram edited this page Dec 8, 2011
·
80 revisions
All releases can be accessed through the TinkerPop Maven2 repository identified below.
<repository>
<id>tinkerpop-repository</id>
<name>TinkerPop Maven2 Repository</name>
<url>http://tinkerpop.com/maven2</url>
</repository>
<dependency>
<groupId>com.tinkerpop.gremlin</groupId>
<artifactId>gremlin-java</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.tinkerpop.gremlin</groupId>
<artifactId>gremlin-groovy</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.tinkerpop.gremlin</groupId>
<artifactId>gremlin-scala</artifactId>
<version>1.4</version>
</dependency>
- Generalized Gremlin to be a meta-language
- Added
gremlin-test
as a universal test suite for all Gremlin implementations - Added
gremlin-java
as the Java representation of the Gremlin language - Added
gremlin-groovy
as the Groovy representation of the Gremlin language - Added
gremlin-scala
as the Scala representation of the Gremlin language
- Added
- Added
IndexElementsPipe
as a start pipe that pulls elements from an index - Renamed
uniqueObject
step todedup
- Renamed
orFilter
andandFilter
toor
andand
, respectively - Renamed
uniquePath
tosimplePath
- Added
store
step to support lazily loading of objects into collection - Added
dedup{closure}
to allow for uniqueness determination as a function -
gremlin-groovy
updates- Renamed
Graph.saveGraphJSON()
toGraph.saveGrapSON()
(likewise for load method) - No more
_()
required off of graph-based objects - No more
[ [ ]]
filtering supported - No more support for
>>
syntax-
>>1
isnext()
-
>>2
isnext(2)
-
>>-1
isiterate()
-
>>[]
istoList()
-
>>collection
isfill(collection)
-
- Renamed
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>1.3</version>
</dependency>
- Added
SailGraph.loadRDF()
meta method to make it easier to load RDF files - Optimized
>>-1
to use a try/catch model which is more efficient given the architecture ofAbstractPipe
- Updated
gremlin.sh
to respect previous classpaths and to make sym-linking easier - Fixed table width bug in
Table
- Added
Graph.loadGraphJSON()
andGraph.saveGraphJSON()
with respectivedata/graph-example-1.json
- Moved to
FluentPipeline
model provided by Pipes - Filter functions must be made explicit now (e.g.
out{it.id > 2}
must now beout.filter{it.id > 2}
) - Migrated
TablePipe
andTable
to Pipes - Renamed
propFilter
step topropertyFilter
- Added multi-vertex/edge lookup support via
g.v(1,2,3) -> [v[1],v[2],v[3]]
(andg.e()
as well) - Added
memoize()
step to provide theMemoizePipe
functionality to Gremlin - Added support for simpler
PipeFunction
model introduced by Pipes - Bumped to Groovy 1.8.2
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>1.2</version>
</dependency>
- Added respective pipe support for
Vertex.getOutEdges(String...)
andVertex.getInEdges(String...)
- Added path closures to
paths
to allow for post-processing a returned path - Added map entry closures to
groupCount
to allow for pre-processing an entry’s key/value pairs - Added
Gremlin.version()
to get version information (returnsGremlinTokens.VERSION
) - Added
Gremlin.defineStep()
to make it simple for developers to add new steps - Added support for
Graph.loadGraphML(URL)
- Renamed
ifelse
toifThenElse
and provided ‘scatter’ functionality if branch yields an iterator/iterable - Implemented
Pipe.reset()
method for all Gremlin-specific pipes - Migrated all Gremlin-specific pipes to Pipes
- Added
GroovyPipeClosure
to map a GroovyClosure
to aPipeClosure
- Added
- Update
g.idx()
to reflectnull
behavior of Blueprints index API update - Added
map
step to emit an element’s property map - Added support for
aggregate
step closure to process object prior to insertion into the aggregate collection - Bumped to Groovy 1.8.1
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>1.1</version>
</dependency>
- The
.gremlin_history
file is always saved to the users home directory - Supports an inclusive max on
RangeFilterPipe
- Supports integer range filtering for
Map
— e.g.m[0..10]
- Added meta methods
loadGraphML
andsaveGraphML
toGraph
-
SailGraph
is no longer a strict dependency (however, loads meta methods if in classpath) - Added
optional
step for doingback
, but without filtering - Extended support for graph pattern matching
- Added
AsPipe
for naming steps.- Added
table
step with respectiveTablePipe
andTable
data structure - Added support for named steps in
loop
- Added support for named steps in
back
- Added support for named steps in
optional
- Added
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>1.0</version>
</dependency>
- Added
out(label?)
,in(label?)
, andboth(label?)
- Added
copySplit
,fairMerge
,exhaustMerge
-
SailLoader
is loaded on startup (no longer required by developer) - Faster
Gremlin.compile()
usingGremlinScriptEngine
- Renamed
andf
,off
, andpropf
toandFilter
,orFilter
, andpropFilter
- Moved to the more optimal vertex/edge adjacency Pipes
- Renamed
unique
touniqueObject
- Updated Gremlin-specific pipes to support
reset()
API
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.9</version>
</dependency>
-
Iterable
andIterator
meta methods are nowPipe
exclusive -
Index
results are auto-wrapped in anIdentityPipe
to ensure consistent behavior across graphs - Added
DexGraph
as imported graph database -
Object.propertyMissing
is no longer defined to ensure Gremlin safety -
emit
step renamed totransform
-
foreach
step renamed tosideeffect
- Removed
futuref
step asback
supplies necessary computation - The
it
of thegather
step is now the gatheredList
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.8</version>
</dependency>
- Added new steps
-
emit
to emit results of provided closure -
ifelse
to perform a if/then/else branch -
uniquePath
to filter looping paths
-
- Added new methods
-
Object.mean()
to calculate the average of delegate -
Pipe.count()
to calculate the number of objects in pipe
-
- Added support for stack trace printing during an error in the console
-
loop
step now requires “back integer” - Added step caching model to increase speed of property notation
- Added
outE(label)
,inE(label)
andbothE(label)
support - Added support for dynamic counter adjustment in
groupCount
- Bumped to using Groovy 1.7.8
- Created a type-cast friendly
groupCount
step
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.7</version>
</dependency>
- Added many new steps
-
loop
step for in-line looping -
foreach
step for closure based operations on flowing objects -
back
step for backtracking in pipeline (i.e.../
) -
aggregate
,except
, andretain
for except/retain pattern -
groupCount
for map aggregations (i.e.g:op-value()
) -
step
for anonymous/lambda steps
-
- Massive refactoring of documentation
- Changed to Groovy as the host language
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.6</version>
</dependency>
- Fixed
foreach
bug that occurred on single object looping - Fixed
if/else
bug that occurred on function call -
null
and empty iterator/iterable result now printed in console - Empty path expression returns an empty iterable, not
null
- Added
g:copy-ve()
function that conveniently copies an element from one graph into another - Fixed numerous bugs in how functions were computing atoms
- GPath optimization through auto-reset of Gremlin-specific range-based pipes
- Comparing numbers is now possible without casting
- Fixed a major bug in error message handling (many exceptions w/o message being provided in console)
- Improved Gremlin evaluator load time with static function and step loading
- Added support for Blueprints 0.3 multi-indexes
-
g:add-aidx-key()
,g:add-idx()
,g:drop-idx()
,g:show-aidx-keys()
,g:show-idx()
,g:remove-aidx-keys()
-
- Added
return ?object
to return from a user defined function or step - Added support for path generation through
g:path()
(main body of work in Pipes)
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.5.5</version>
</dependency>
- A rework of the user-defined step model
- Renamed the concept of “path” to “step”
- Users can now define computations in steps
- Added
gather
andscatter
steps to allow for aggregation and unrolling of objects within a path - Added
g:append()
function to concatenate objects to an iterable (e.g. list, set)
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.5</version>
</dependency>
- A complete redesign and implementation of the Gremlin compiler
- Significant performance improvements
- Order of magnitude increase in speed for numerous operations
- Lazy evaluation for better memory usage
-
Functions
implement theServiceLoader
pattern for ease of incorporating 3rd-party extensions - Numerous changes to the Gremlin function library
- All core functions are now in the
g
namespace (e.g.g:count()
,g:string()
) -
g:id()
changed tog:id-v()
andg:id-e()
for getting vertices and edges, respectively -
g:key()
changed tog:key-v()
- Added
g:version()
function to retrieve version information - Added
g:g()
(group) to semi-replace()
model in Gremlin 0.2.2 - Added
g:flatten()
to flatten embedded iterables - Added
g:includes()
to determine if an object is in an iterable - Added
g:power()
to implement raising a number by a power - Added
g:range()
to allow for integer ranges to be created - Changed
g:difference()
tog:diff()
(abbreviation policy enacted for function names) - Added
g:set()
to create a set (unordered, unique collection of objects) - Added
g:integer()
,g:long()
,g:float()
, andg:double()
to support number casting
- All core functions are now in the
- Additions to the Gremlin type system
- Supports iterable as a super type in order to have direct support for lazy evaluation
- Supports set as an unordered, unique collection of objects
- Supports integer (1), long (1l), float (1.0), double (1.0d) as different number types
- Print streams can be dynamically set in
GremlinScriptContext
-
true()
,false()
, andnull()
are now keywords—true
,false
,null
- String concatenation is supported with the
+
operation - Range filter support through
[1..10]
type syntax - Index of lists starts at 0 instead of 1 as in Gremlin 0.2.2
- Test cases now provide performance statistics
- Removed the ‘show all aspects’ * step (i.e.
./outE/inV/*
) - Allow for the use of assignment and other operations within a path (e.g.
./outE/inV[g:p($x := .)
] - Provided support for OrientDB graph database (main body of work in Blueprints)
- Update to dependency inclusions
- Distribution includes all supported graph databases in Blueprints (
gremlin-*-standalone.jar
) - Dependency provide
<scope>provided</scope>
- Distribution includes all supported graph databases in Blueprints (
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.2.2</version>
</dependency>
- Fixed a bug introduced in 0.2.1 having to do with variables copied from a parent path context
- Added dependency on Neo4j RDF and SAIL SNAPSHOTS
- Added Neo4jSailGraph BETA to the core distribution
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.2.1</version>
</dependency>
- Instance naming convention for
Functions
changed toFunctionLibrary
-
list g:list(object+)
is nowlist g:list(object*)
- Added support for Java 1.6+ JSR 223
ScriptEngine
andScriptEngineFactory
- Renamed
GremlinEngine
toGremlinScriptEngine
- Renamed
GremlinEngineFactory
toGremlinScriptEngineFactory
- Renamed
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.2</version>
</dependency>
- Added user defined functions
- Gremlin and Java defined functions supported
- Added user defined paths
- Gremlin and Java defined functions supported
- Added
.gremlinrc
load script - Added support for manual transaction handling of Neo4j graphs
-
boolean neo4j:start-tx()
,boolean neo4j:stop-tx(boolean)
added
-
- Added support for embedded maps and lists
- Added support for JSON encoding and decoding of Gremlin types
-
g:json(object)
was removed -
string g:to-json(object)
andobject g:from-json(string)
added
-
- Added better support for vertex and edge property indexing
- Added working graph
$_g
variable and updated graph functions to support it - Added support for SPARQL queries for SAIL-based graphs
-
list sail:sparql(string)
was added
-
- Added support for Linked Data SAIL for real-time analysis of the Web of Data
- Added support for script loading
script gremlin-script.grm
- Added support for JUNG algorithms over Gremlin graphs
- Renamed
g:append(object, object+)
tog:list(object+)
- Renamed the general graph model to property graph model
- Moved the model and its implementations to Blueprints
- Uses Blueprints 0.1
- Various bug fixes and optimizations
<dependency>
<groupId>com.tinkerpop</groupId>
<artifactId>gremlin</artifactId>
<version>0.1</version>
</dependency>
- Initial release of the language and virtual machine