Notes and to do list

47 views
Skip to first unread message

Zack Maril

unread,
Mar 3, 2014, 3:29:20 PM3/3/14
to clojure-...@googlegroups.com

Overview:


Archimedes provides functions to work with Tinkerpop/Blueprint objects.


Ogre provides functions to work with the Gremlin graph query language.


Built on top of Archimedes and Ogre, Titanium provides functions for working with the Titan graph database.



Architecture notes:


Archimedes and Ogre have been decoupled and don’t depend on one another.


Archimedes should work with any database that follows the tinkerpop interfaces.


Ogre doesn’t compile Gremlin pipelines until the last minute. The java api for Gremlin is such that you can’t reuse objects for multiple queries and so it is possible to get some unexpected results if you aren’t careful. Lazy compilation of pipelines was added in and the tests pass, but this is mostly undocumented and would be confusing for newcomers.

https://github.com/clojurewerkz/ogre/pull/14


In addition, the pipelines in Ogre are represented as vectors of anonymous functions until they are compiled into a GremlinPipeline object. Giving unique names to all the anonymous functions (like in-anon or dedup-anon) would make debugging queries easier.


Because most of the methods for GremlinPipelines are fairly simplistic and don’t need much wrapping, I wrote two macros that creates functions based off signatures for the method. The above suggestion, about naming anonymous functions, would be a two line change for about 30 functions.

https://github.com/clojurewerkz/ogre/blob/master/src/ogre/core.clj#L20

https://github.com/clojurewerkz/ogre/blob/master/src/ogre/core.clj#L119


Titanium currently depends on Archimedes. Titanium uses ztellman/potemkin to import functions into the appropriate namespaces and so users only need to think about interacting with Titanium when using Titan (instead of messing with Archimedes and Titanium at the same time).



Main todo’s:


No documentation exists for Archimedes.


jonase/eastwood has found a bunch of mistakes in the test suites for all libraries such as tests not running or not doing what is commonly expected. Having the tests pass the eastwood test would be smart.


Ogre’s lazy compilation is undocumented.


Gremlin Side effects are mostly unexplored beyond some basic functions in Ogre. Unsure of how to go about integrating them or when they would even be needed.

https://github.com/clojurewerkz/ogre/issues/2


Ogre is missing tests for random, simple-path, optional, and the emit step of loop.


Archimedes and Titanium uses dynamic vars to hold onto a single graph object at a time. This is not smart and makes it hard to do various things without much gain. The humbled branch on archimedes started work on refactoring.

https://github.com/clojurewerkz/archimedes/commit/e605e71423ba0ad5f3cf9fae2bd8dbf130926126


Titanium needs to be updated to 0.4.0. The documentation for Titan isn’t great and so a fine line must be walked between making up for the lack of good documentation and doing Think Aurelius job.


At some point, someone will probably want to work with Faunus. A library is probably in there somewhere.


-Zack

Michael Klishin

unread,
Mar 3, 2014, 10:38:50 PM3/3/14
to clojure-...@googlegroups.com
2014-03-04 0:29 GMT+04:00 Zack Maril <thewi...@gmail.com>:
Main todo’s:

FTR: these are in response to a Twitter thread where a few folks expressed
their interest in bringing Titanium up to date with Titan 0.4.

I'll try to file issues for these on GitHub later today.
--
MK

http://github.com/michaelklishin
http://twitter.com/michaelklishin

fmj...@gmail.com

unread,
Mar 18, 2014, 5:54:42 AM3/18/14
to clojure-...@googlegroups.com

Could this be a project for GSoC?

Ray Miller

unread,
May 26, 2014, 2:59:34 PM5/26/14
to clojure-...@googlegroups.com
Hi,

I've made a start at addressing some of the issues filed against archimedes in Github. The 'humbled' branch in Github removes the dynamic *graph* var, and I've got all tests passing on that branch.

Next I took a look at transactions; I've created a 'humbled-transactions' branch that adds a with-transaction macro very similar to clojure.java.jdbc/with-db-transaction. I also added tests for this, and pulled in some titan dependencies to the :dev profile. I would welcome feedback on the transactions work before I merge this into the 'humbled' branch.

What I'm aiming for is to get the 'humbled' branch into a state where we think it might be the next release, then get titanium working against that version. I'll move to latest version of Titan and Blueprints libraries as part of that work.

Ray.

Michael Klishin

unread,
May 27, 2014, 4:39:35 AM5/27/14
to Ray Miller, clojure-...@googlegroups.com

2014-05-26 22:59 GMT+04:00 Ray Miller <ray...@gmail.com>:

What I'm aiming for is to get the 'humbled' branch into a state where we think it might be the next release, then get titanium working against that version. I'll move to latest version of Titan and Blueprints libraries as part of that work.

Thank you very much for your work, Ray!
Reply all
Reply to author
Forward
0 new messages