TinkerPop 2.3.0 has been unleashed by Marko A. Rodriguez.
Release notes for:
A message from Marko Rodriguez announced the release of TinkerPop2 with notes on the major features of each:
- Massive changes to blueprints-core API
- TreePipe added for exposing the spanning tree of a traversal
- Automatic path and query optimizations
- https://github.com/tinkerpop/gremlin/downloads (download)
- FramedGraph is simply a wrapper graph in the Blueprints sense
- Synchronicity with the Blueprints API
- https://github.com/tinkerpop/rexster/downloads (download)
BTW, Marko says:
As you may know, there are big changes to the API: package renaming, new core API method names, etc. While this may be shocking, it is all worth it. In 2 weeks, there is going to be a release of something very big for which TinkerPop2 will be a central piece of the puzzle. Stay tuned and get ready for a summer of insane, crazy graph madness.
So, something to look forward to!
From the post:
We talked about graph databases in this and this blog post. As you might have read we’re big fans of a graph database called neo4j, and we’re using it together with JRuby. In this post we’ll share a little piece of code we created to make expressing graph traversals super easy and fun.
Jogger – almost like named_scopes
Jogger is a JRuby gem that enables lazy people to do very expressive graph traversals with the great pacer gem. If you don’t know what the pacer gem is, you should probably check pacer out first. (And don’t miss the pacer section at the end of the post.)
Remember the named_scopes from back in the days when you were using rails? Jogger gives you named traversals and is a little bit like named scopes. Jogger groups multiple pacer traversals together and give them a name. Pacer traversals are are like pipes. What are pipes? Pipes are great!!
The most important conceptual difference is, that the order in which named traversals are called matter, while it usually doesn’t matter in which order you call named scopes.
A nice way to make common traversals accessible by name.
Does the “order of calling” scopes in topic maps matter? At least for the current TMDM I think not because scopes are additive. That is the value covered by a set of scopes must be valid in each scope individually.
From the post:
In a time long, long right now and a place far, far within, there exists a little green gremlin named…well, Gremlin. Gremlin lives in a place known as TinkerPop. For those who think of a “place” as some terrestrial surface coating a sphere that is circling one of the many massive fiery nuclear reactors in the known universe, TinkerPop is that, yet at the same time, a wholly different type of place indeed.
In a day of obscure (are there any other kind?) errors and annoyances, this is an absolute delight!
New homepage design: http://tinkerpop.com
Blueprints 1.1 (Blueberry):
Gremlin 1.4 (Ain’t No Thing But a Chicken Wing):
You didn’t really want to spend all weekend holiday shopping and hanging out with relatives did you?
From the post:
Because the dataflow operators in a graph work in parallel, the model allows overlapping I/O operations with computation. This is a “whole application” approach to parallelization as opposed to many thread-oriented performance frameworks that focus on hot sections of code such as for loops. This addresses a key problem in processing “big data” for today’s many-core processors: feeding data fast enough to the processors.
While dataflow does this, it scales down easily as well. This distinguishes it from technologies, such as Hadoop and to a lesser extent, Map Reduce, which don’t scale downward well due to their innate complexity.
We’ve discussed how a dataflow architecture exploits multicore. These same principles can be applied to multi-node clusters by extending dataflow queues over networks with a dataflow graph executed on multiple systems in parallel. The compositional model of building dataflow graphs allows for replication of pieces of the graph across multiple nodes. Scaling out extends the reach of dataflow to solve large data problems.
Read the first comment. By J.P. Morrison, author of Flow Based Programming, the inspiration for Pipes. (Shamelessly repeated from a post by Marko Rodriguez on the gremlin-users list, Achim first noticed the article.)
Be aware that Amazon lists the Kindle edition for \$29.00 and a hardback edition for \$69.00. Sadly one reader reports the book has no index?
An Introduction to Tinkerpop by Takahiro Inoue.
Excellent introduction to the Tinkerpop stack.
Marko Rodriguez posted the following note to the Grelim-users mailing list today:
For many months, the TinkerPop community has been trying to realize the best way to go about providing a graph analysis package to the TinkerPop stack ( http://bit.ly/qCMlcP ). With the increased flexibility and power of Pipes and the partitioning of Gremlin into multiple JVM languages, we feel that the stack is organized correctly now to support Furnace — A Property Graph Algorithms Package.
The project is currently just stubbed, but overtime you can expect the ability to evaluate standard (and non-standard) graph analysis algorithms over Blueprints-enabled graphs in a way that respects explicit and implicit associations in the graph. In short, it will implement the ideas articulated in:
This will be possible due to Pipes and the ability to represent abstract relationships using Pipes, Gremlin_groovy (and the upcoming Gremlin_scala). Moreover, while more thought is needed, there will be a way to talk at the Frames-levels (http://frames.tinkerpop.com) and thus, calculate graph algorithms according to one’s domain model. Ultimately, in time, as Furnace develops, we will see a Rexster-Kibble that supports the evaluation of algorithms via Rexster.
While the project is still developing, please feel free to contribute ideas and/or participate in the development process. To conclude, we hope people are excited about the promises that Furnace will bring by raising the processing abstraction level above the imperative representations of Pipes/Gremlin.
You have been waiting for the opportunity to contribute to the Tinkerpop stack, particularly on graph analysis, so here is your chance! Seriously, you need to forward this to every graph person, graph project and graduate student taking graph theory.
We can use simple graphs and hope (pray?) the world is a simple place. Or use more complex graphs to model the world. Do you feel lucky? Do you?
On the Nature of Pipes by Marko Rodriguez.
From the post:
Pipes is a data flow framework developed by TinkerPop. The graph traversal language Gremlin is a Groovy-based domain-specific language for processing Blueprints-enabled graph databases with Pipes. Since the release of Pipes 0.7 on August 1, 2011, much of the functionality in Gremlin has been generalized and made available through Pipes. This has opened up the door for other JVM languages (e.g. JRuby, Jython, Clojure, etc.) to serve as host languages for graph traversal DSLs. In order to promote this direction, this post will explain Pipes from the vantage point of Gremlin.
You may not be a graph database enthusiast after reading Marko’s post but you will increase your understanding of them.
That you are not then a graph database enthusiast will be your own fault.
Good news from Marko Rodriguez:
TinkerPop just released a new round of stable releases.
Blueprints 0.9 (Mavin) – https://github.com/tinkerpop/blueprints/wiki/Release-Notes
Pipes 0.7 (PVC) – https://github.com/tinkerpop/pipes/wiki/Release-Notes
Frames 0.4 (Studs) – https://github.com/tinkerpop/frames/wiki/Release-Notes
Gremlin 1.2 (New Sheriff in Town) – https://github.com/tinkerpop/gremlin/wiki/Release-Notes
Rexster 0.5 (Dog Star) – https://github.com/tinkerpop/rexster/wiki/Release-Notes
Here is the main points with each release:
From the webpage:
This is a special edition of OrientDB with these TinkerPop technologies in bundle:
- Blueprints provides a collection of interfaces and implementations to common, complex data structures. In short, Blueprints provides a one stop shop for implemented interfaces to help developers create software without being tied to particular underlying data management systems.
- Gremlin is a Turing-complete, graph-based programming language designed for key/value-pair multi-relational graphs. Gremlin makes use of an XPath-like syntax to support complex graph traversals. This language has application in the areas of graph query, analysis, and manipulation.
- Pipes is a graph-based data flow framework for Java 1.6+. A process graph is composed of a set of process vertices connected to one another by a set of communication edges. Pipes supports the splitting, merging, and transformation of data from input to output.
The graph community just keeps getting stronger.
Instructions on creating a local copy of the Gremlin wiki (posted to the email@example.com mailing list by Pierre De Wilde).
The instructions (with minor formatting changes) from his post:
For those who want a local copy of Gremlin wiki:
git clone https://github.com/tinkerpop/gremlin.wiki.git
Open your browser at http://localhost:4567 and ta-da…
Moreover, the wiki is searchable and (unlike the github version) it’s printer-fiendly.
Gollum is a simple wiki system built on top of Git that powers GitHub Wikis.
To install Gollum, use RubyGems (http://rubygems.org/):
[sudo] gem install gollumcd cd
Of course, the same procedure may be applied for other Tinkerpop repositories (blueprints, pipes, frames, rexster, rexster-kibbles).
Unfortunately, gollum cannot access multiple repositories at once, so you will need to launch several versions with a different port (gollum -port xxxx)
Marko Rodriguez announced the release of Gremlin 1.0 and Rexster 0.3 (graph server) along with other releases:
Blueprints 0.7 (Patrick):
A property graph interface.
Frames 0.2 (Huff and Puff):
An object to graph framework.
Gremlin 1.0 (Gremlin):
A graph traversal language.
Pipes 0.5 (Drain):
A data flow framework using process graphs.
Rexster 0.3 (Dog Eat Dog):
A RESTful graph shell.
Slides from Marko Rodriguez presented at: The 2nd International Workshop on Graph Data Management (GDM’11) Hannover, Germany April 16, 2011.
State of Gremlin 0.9.
Very good introduction to Gremlin.
From the release notes:
Blueprints 0.6 Oscar: https://github.com/tinkerpop/blueprints/wiki/Release-Notes
Pipes 0.4 Spigot: https://github.com/tinkerpop/pipes/wiki/Release-Notes
Frames 0.1 Brick-by-Brick: https://github.com/tinkerpop/frames/wiki/Release-Notes
Gremlin 0.9 Gremlin the Grouch: https://github.com/tinkerpop/gremlin/wiki/Release-Notes
From the update announcement on 1 March 2011.
Today we bring you a new round of releases. TinkerPop is pleased to announce:
Blueprints 0.5 (Scooby) – https://github.com/tinkerpop/blueprints/wiki/Release-Notes
Pipes 0.3.1 (Mario) – https://github.com/tinkerpop/pipes/wiki/Release-Notes
Gremlin 0.8 (Grem Stefani) – https://github.com/tinkerpop/gremlin/wiki/Release-Notes
Rexster 0.2 (Dog House) – https://github.com/tinkerpop/rexster/wiki/Release-Notes
The graph database work and associated materials is looking more and more attractive.
Look for something specific about applying them to topic maps in the near term.