HNHacker News
TopNewBestAskShowJobs

okram

368 karma · joined August 6, 2010

http://markorodriguez.com
submissionscomments
okram··on Introducing OpenCypher, the open graph query language project
https://github.com/dkuppitz/sparql-gremlin
okram··on Introducing OpenCypher, the open graph query language project
http://www.slideshare.net/slidarko/the-gremlin-traversal-lan...
okram··on Introducing OpenCypher, the open graph query language project
Gremlin3 is now apart of Apache and nearly every graph vendor supports TinkerPop3 (or in the process of migrating to TinkerPop3). http://tinkerpop.incubator.apache.org/ Next, with TinkerPop/Gremlin you not only get a language but a virtual machine that can execute other languages (e.g. SPARQL) http://www.datastax.com/dev/blog/the-benefits-of-the-gremlin... . The virtual machine executes over OLTP graph databases (Titan, Neo4j, OrientDB, etc.) and over OLAP graph processors (Spark, Giraph, etc.).
okram··on Stardog 4: Polyglot Graph Database
The TinkerPop3 integration in Stardog4 is impressive. The underlying specified OWL/RDFS schema allows Gremlin to traverser the implicit/reasoned edges. This is the best RDF/PropertyGraph-hybrid system I've seen.

http://docs.stardog.com/#_property_graphs

okram··on Titan: Distributed Graph Database
For graph-based PostgreSQL, check out Sqlg (http://umlg.org/sqlg.html).
okram··on Titan: Distributed Graph Database
Titan 1.0 will be released this month (September). It will support TinkerPop 3.0.1.
okram··on The Gremlin Graph Traversal Language
Gremlin (over Spark) does not use GraphX. It simply represents the graph as a tensor RDD (i.e. a multi-layered matrix) and with the Spark functional library, it implements BSP-based vertex-centric computing (i.e. message passing). You can see examples and a diagram explaining how it works at this location:

http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/...

okram··on The Gremlin Graph Traversal Language
Gremlin supports declarative pattern matching. See http://www.slideshare.net/slidarko/the-gremlin-traversal-lan... and http://www.slideshare.net/slidarko/the-gremlin-traversal-lan....
okram··on The Gremlin Graph Traversal Language
Gremlin is an Apache Software Foundation query language and as such, can be used by any graph system (Titan, Neo4j, OrientDB, etc.). It is not bound to a particular vendor.

Gremlin has a natural compilation to the common distributed vertex-centric computing model (bulk synchronous parallel for graphs). Thus, Gremlin works for both OLTP (graph databases) and OLAP (graph processors). The Apache distribution provides OLAP connectivity to Apache Hadoop, Spark, and Giraph.

Gremlin supports both imperative path expressions and declarative pattern matching.

Gremlin can be embedded in any host language. No "fat string" with result set. The user's database query code and data manipulation code are in the same language. There exists Gremlin-Java8, Gremlin-Groovy, Gremlin-Scala, Gremlin-Clojure, Gremlin-PHP, etc.

Gremlin is Turing Complete. Most any complex enough language is. However, Gremlin is related to a Turing Machine by a very simply mapping.

See http://arxiv.org/abs/1508.03843 for detailed specifics of the aforementioned benefits.

okram··on Titan Graph Database Integration with DynamoDB
Check out http://tinkerpop.com. Apache TinkerPop 3.0.0 was released in June 2015 and it is a quantum leap forward. Not only is it now apart of the Apache Software Foundation, but the Gremlin3 query language has advanced significantly since Gremlin2. The language is much cleaner, provides declarative graph pattern matching constructs, and it supports both OLTP graph databases (e.g. Titan, Neo4j, OrientDB) and OLAP graph processors (e.g. Spark, Giraph). With most every graph vendor providing TinkerPop-connectivity, this should make it easier for developers as they don't have to learn a new query language for each graph system and developers are less prone to experience vendor lock-in as their code (like JDBC/SQL) can just move to another underlying graph system.
okram··on “Titan Is Staying”
There is an ancient curse you can say to your enemies -- "May your OSS project be successful and your mailing list vibrant."
okram··on “Titan Is Staying”
There are some compelling reasons to use Titan at smaller scales:

http://thinkaurelius.com/2013/11/24/boutique-graph-data-with... (good in-memory performance -- like Neo4j)

http://thinkaurelius.com/2013/03/30/titan-server-from-a-sing... (if you do grow, its easy to add more machine)

okram··on Titan Distributed Graph Database 0.5.0
?. Perhaps you might want to ask questions on the public mailing list. https://groups.google.com/forum/#!forum/aureliusgraphs
okram··on Titan Distributed Graph Database 0.5.0
That is an old version of Titan. Please see 0.4.1+ and Titan's caching model: http://thinkaurelius.com/2013/11/24/boutique-graph-data-with...
okram··on Titan Distributed Graph Database 0.5.0
For those interested in Titan 1.0 roadmap and the evolution of the Titan OLTP/OLAP story. Titan will be implementing TinkerPop3 API http://www.tinkerpop.com/docs/current/ ... Currently, Titan 0.5.0 leverages the Faunus Gremlin compiler (http://faunus.thinkaurelius.com), but with TinkerPop3, TinkerPop3 provides an OLAP compiler for Gremlin that will make things easier for Titan as well as other graph computing engines implementing the stack http://www.tinkerpop.com/docs/current/#traversalvertexprogra...
okram··on Titan Distributed Graph Database 0.5.0
Titan provides both graph analytic (OLAP) and graph database capabilities (OLTP). For more information, please read:

http://thinkaurelius.com/2013/05/13/educating-the-planet-wit... (cluster-sized graphs OLTP)

http://thinkaurelius.com/2012/11/11/faunus-provides-big-grap... (OLAP engine)

http://thinkaurelius.com/2013/11/24/boutique-graph-data-with... (single-machine sized graphs OLTP)

okram··on Graph databases and Python
You might appreciate this landscape distinction. http://www.slideshare.net/slidarko/titan-the-rise-of-big-gra...

Furthermore, please have a look at "On Graph Computing" for a break down of 3 different categories of graph computing systems -- toolkit, database, analytics. http://markorodriguez.com/2013/01/09/on-graph-computing/

Finally, yes -- there is no theoretical expressivity gains between RDBMS and property graphs (and, RDF graphs). Nor is SQL (Turing Complete versions) any less expressive than Gremlin (Turing Complete path recognition). The only argument you can make is that graphs are more (or less) effective in terms of conciseness of expression and speed of execution at particular problems. Typically (as expected), its the difference between problem datasets that look like networks (graphs) and those that look like spreadsheets (tables).

okram··on Simulation of the world's universities in a single unified graph
Note that the codebase used in this benchmark was just released -- Titan 0.3.1.

https://github.com/thinkaurelius/titan/wiki/Downloads

okram··on Simulation of the world's universities in a single unified graph
Ha. The world works in mysterious ways -- and organizations are large with many heads. The ideas I see emanating from the Pearson team that Aurelius works with are along the lines of -- Why are there brick-and-mortar schools? Why is education just a short period of your life? Why does a teacher only teach < 100 students in one session? Why do tests still exist? Why can't software be the "office hours" that helps struggling students get back on track with the concepts at hand?

Many of the algorithms were are working with them go into the arena of computationally supporting education.

"If you want to understand X, given your personal knowledge graph, you will first need to understand Y."

"The graph is detecting that student A is struggling with X concept."

"Teacher, given the knowledge of your incoming students, you should focus more on Y concept."

"Teacher, no tests needed, here is a ranking of all your students based on their comprehension of the material."

... hopefully the 80£ (and 80 lbs) textbook will be a thing of the past.

okram··on Simulation of the world's universities in a single unified graph
I forget the exact cost, but it was, along with various dry runs at a smaller scale, around $30k.
okram··on Marko Rodriguez YOW: Solving Problems with Graphs [video]
The slides for this presentation are available here: http://www.slideshare.net/slidarko/yow-australia2012
okram··on OrientDB: New GraphDB Engine in Beta
This implementation is a native Blueprints (http://blueprints.tinkerpop.com) implementation.
okram··on Ask HN: Who is hiring? (April 2013)
Aurelius (http://thinkaurelius.com) develops the Aurelius Graph Cluster ( Titan + Faunus + Fulgora ). We are looking for an expert in DevOps + Java development. The type of person we need is one that knows how to deal with deploying clusters, managing clusters, understanding Java issues and optimizing code. Over time, the individual would help with codifying their experience into a deployment/management tool that makes it easy for end-users to work with Aurelius' technology. Our graph technology is within the Hadoop, Cassandra, and HBase space. Thus, expertise in one or more of these areas is desired.

We are a distributed team across the country and work from home completely through online tools.

If this sounds interesting, please contact us at info[at]thinkaurelius.com.

okram··on Titan 0.3.0 Released: Geo, full-text, edge indexing on billion edge graphs
I am not outside the project, but I use Titan/Faunus with clients and here are the pain points I notice.

1. Difficult to deal with clusters: while you can run Titan single machine (and that is easy to deal with), handling a multi-machine cluster can be frustrating and requires some DevOps skills. Pull in Faunus/Hadoop and you are in a world unto its own.

2. Lots of options: with Titan there are numerous configurations and you get into this "n choose m" scenario. However, I typically just run Titan/CassandraEmbedded + (now) Elastic Search. For instance, I gave up on Titan/BerkeleyDB. Decided that Titan/CassandraEmbedded was sufficient for most needs and thats that.

3. Lots of access points into Titan/TinkerPop: You can run Blueprints Java native, Gremlin, Rexster RexPro, Rexster REST, ... Unfortunately, depending on your situation, one approach is better than another. I typically do Rexster Extensions + Gremlin. In the future though, with RexPro (haven't gotten into it personally), I will probably just use RexPro as I can send Gremlin in and get results out.

4. There are so many bodies of code: Titan is Apache2. This is good. It feeds on alot of excellent open source projects -- HBase, Cassandra, Lucene, ElasticSearch, Gremlin, Blueprints, Rexster, Frames, ... There is no one source of documentation. I'm either reading TinkerPop documentation or Titan documentation. Then when there are issues, Googling the Cassandra mailing list. Luckily, I'm an expert in TinkerPop and since Titan is native TinkerPop my knowledge transfers. However, there are lots of peculiarities (Titan typing, configurations, exceptions, cluster setup etc.) that I have to learn and master.

I am fortunate enough to work on projects that use Titan/TinkerPop and thus, as I see these pain points I continually work to solve them. Over time, we will see much of these complexities hidden. Right now, Titan is a young project and some good packaging polish will happen with good time.

okram··on Titan 0.3.0 Released: Geo, full-text, edge indexing on billion edge graphs
One tangential direction we want to go with Titan is benchmarking it as a distributed RDF store. With edge indexing now in Titan 0.3.0 and Blueprints Sail (GraphSail), Titan can represent an RDF graph and be queried using SPARQL.

   https://github.com/tinkerpop/blueprints/wiki/Sail-Ouplementation
okram··on Titanium – a Clojure graph library built on top of Titan
With Titan/BerkeleyDB you will get blazing performance for a single-machine distribution. One of the wonderful innovations of Titan is vertex-centric indices that is even necessary at single-machine scale.

  http://thinkaurelius.com/2012/10/25/a-solution-to-the-supernode-problem/
Next, if you decide to scale horizontally, then you can simply change the storage.backend=cassandra and thats that (of course, you need to do a bulk data transfer from BerkeleyDB to Cassandra).
okram··on Titanium – a Clojure graph library built on top of Titan
We have a various clients using Titan in production. Of course, like any project, there are always more desired features. The Titan/Faunus roadmap is greatly influenced by our clients.
okram··on Titan 0.1.0 Released -- Big Graph Data
On Friday of last week, Aurelius released Titan 0.1.0.

http://thinkaurelius.github.com/titan/

Here are the biggest improvements:

1. Enhanced robustness due to community involvement, stress testing, and benchmarking. - http://thinkaurelius.github.com/titan/doc/titan-stress-poste... - http://thinkaurelius.com/2012/08/06/titan-provides-real-time... 2. Nicer integration with Rexster. - https://github.com/thinkaurelius/titan/wiki/Rexster-Graph-Se... 3. Titan manual has been extended to better support and train developers. - https://github.com/thinkaurelius/titan/wiki 4. Numerous nick-nack features and enhancements. 5. Development <dependency/> distributed through Apache Maven Central Repository - http://search.maven.org/#artifactdetails%7Ccom.thinkaurelius...

okram··on An Introduction to Graph Theory and Network Science
Ha. DZone contacted me last week asking if they could index/republish the blogs at thinkaurelius.com. Of course, I agreed and well, here we are.
okram··on Titan: A Highly Scalable, Distributed Graph Database
See https://speakerdeck.com/u/okram/p/titan-the-rise-of-big-grap...
← PreviousPage 2 of 3Next →