GraphAware Neo4j Framework
GraphAware Framework speeds up development with Neo4j by providing a platform for building useful generic as well as domain-specific functionality, analytical capabilities, (iterative) graph algorithms, etc.
See the announcement on our blog.
On a high level, there are two key pieces of functionality:
- GraphAware Server is a Neo4j server extension that allows developers to rapidly build (REST) APIs on top of Neo4j using Spring MVC, rather than JAX-RS
- GraphAware Runtime is a runtime environment for both embedded and server deployments, which
allows the use of pre-built as well as custom modules called GraphAware Runtime Modules. These
modules typically extend the core functionality of the database by
- transparently enriching/modifying/preventing ongoing transactions in real-time
- performing continuous computations on the graph in the background
Whether or not you use the code in this repository as a framework or runtime as described above, you can always use it as a software library by adding it as a dependency to your project, and take advantage of its useful features. For Java developers only(1), the following functionality is provided:
- GraphAware Test
- Improved Neo4j Transaction API
- Transaction Executor and Batch Transaction Executor
- Database Writer
- Miscellaneous Utilities
(1) i.e., for embedded mode users, managed/unmanaged extensions developers, GraphAware Runtime Module developers and framework-powered Spring MVC controller developers
Please take a look at the provided examples.
- downloading the appropriate .jar files
- copying them into the plugins directory in your Neo4j installation (if you installed using .dmg installer, this will be in
/Applications/Neo4j [Community|Enterprise] Edition.app/Contents/Resources/app/plugins/)
- restarting the server
The framework and modules are then used via calls to their REST APIs, if they provide any.
Embedded Mode / Java Development
Java developers that use Neo4j in embedded mode and those developing Neo4j server plugins, unmanaged extensions, GraphAware Runtime Modules, or Spring MVC controllers can include use the framework as a dependency for their Java project and use it as a library of useful tested code, in addition to the functionality provided for server mode.
Getting GraphAware Framework
To use the latest release, download the appropriate version and put it the plugins directory in your Neo4j server installation and restart the server (server mode), or on the classpath (embedded mode).
Releases are synced to Maven Central repository. When using Maven for dependency management, include one or more dependencies in your pom.xml. To find out which ones, read further by clicking on one of the sub-modules of this project.
To use the latest development version, just clone this repository and run
mvn clean install. This will produce 188.8.131.52-SNAPSHOT
jar files. If you need standalone .jar files with all dependencies, look into the
target folders in the
Note on Versioning Scheme
The version number has two parts. The first three numbers indicate compatibility with a Neo4j version. The last number is the version of the framework. For example, version 184.108.40.206 is version 28 of the framework compatible with Neo4j 2.2.0
Note that framework sends a POST request to Google Analytics every 5 minutes after start just so we know how many people actually use it. The only data transmitted are module and controller class names, version and edition of the framework, and the database store ID.
If you wish to completely disable stats collection, please add the following to
Copyright (c) 2013-17 GraphAware
GraphAware is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.