Neocons is a young idiomatic Clojure client for the Neo4J REST API.
Neocons currently supports the following features (all via REST API, so you can use open source Neo4J Server edition for commercial projects):
- Create, read, update and delete nodes
- Create, read, update and delete relationships
- Fetch relationships for given node
- Create and delete indexes
- Index nodes
- Query node indexes for exact matches and using full text search queries
- Query automatic node index
- Traverse nodes, relationships and paths
- Find shortest path or all paths between nodes
- Predicates over paths, for example, if they include specific nodes/relationships
- Cypher queries (with Neo4J Server 1.6 and later)
- Basic HTTP authentication, including Heroku Neo4J add-on compatibility
- Efficient multi-get via Cypher queries
- Convenience functions for working with relationships and paths
Neocons is a young project and until 1.0 is released and documentation guides are written, it may be challenging to use for anyone except the author. For code examples, see our test suite.
Once documentation site is up, we will update this document.
Neocons has a mailing list. Feel free to join it and ask any questions you may have.
To subscribe for announcements of releases, important changes and so on, please follow @ClojureWerkz on Twitter.
Core Neocons APIs are stabilized but it is still a work in progress. Keep that in mind. 1.0 will be released in 2012 together with documentation guides and dedicated website.
With Leiningen:
[clojurewerkz/neocons "1.0.0-beta2"]
With Maven:
<dependency>
<groupId>clojurewerkz</groupId>
<artifactId>neocons</artifactId>
<version>1.0.0-beta2</version>
</dependency>
If you are comfortable with using snapshots, snapshot artifacts are released to Clojars every 24 hours.
With Leiningen:
[clojurewerkz/neocons "1.0.0-SNAPSHOT"]
With Maven:
<dependency>
<groupId>clojurewerkz</groupId>
<artifactId>neocons</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
CI is hosted by travis-ci.org
Neocons is built from the ground up for Clojure 1.3 and up.
Neocons supports Neo4J Server 1.5.0 and later versions. For the Cypher query language support, 1.6 is the minimum recommended versions because Cypher is supported by the REST API directly without any plugins.
Neocons is part of the group of libraries known as ClojureWerkz, together with Monger, Langohr, Elastisch, Quartzite and several others.
Neocons uses Leiningen 2. Make sure you have it installed and then run tests against all supported Clojure versions using
lein2 all test
Then create a branch and make your changes on it. Once you are done with your changes and all tests pass, submit a pull request on Github.
Copyright (C) 2011-2012 Michael S. Klishin
Distributed under the Eclipse Public License, the same as Clojure.
Because Neo4J is GPL software, linking against it will require your project to be open source. While there are perfectly valid use cases for this, Neocons was developed to be used in commercial projects and Neocons authors strongly prefer business-friendly licenses and Clojure community commitment to the Eclipse Public License v1.
Neocons namespace structure leave the door open for future Neo4J Server features like the binary protocol but it is highly unlikely that it will ever cover embedding, should Neo4J license stay GPL forever.
If you need a solid well-maintained EPLv1-licensed embeddable graph database for Clojure 1.3.0 and later, please use Jiraph.