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.
This open-source (GPL) version of the GraphAware Framework is compatible with Neo4j Community Edition (GPL) only. It will not work with Neo4j Enterprise Edition, which is a proprietary and commercial software product of Neo4j, Inc..
GraphAware offers an Enterprise version of the GraphAware Framework to licensed users of Neo4j Enterprise Edition. Please get in touch to receive access.
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
- GraphUnit - simple graph unit-testing
- Integration Testing - support for integration testing
- Performance Testing - support for performance testing
- 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.
When using Neo4j in the standalone server mode, deploying the GraphAware Framework (and any code using it) is a matter of :
- 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/
) - adding
dbms.unmanaged_extension_classes=com.graphaware.server=/graphaware
toneo4j.conf
- restarting the server
The framework and modules are then used via calls to their REST APIs, if they provide any.
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.
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 {newVersion}.XX-SNAPSHOT jar files (eg. 4.2.6.66-SNAPSHOT). If you need standalone .jar files with all dependencies, look into the target
folders in the build
directory.
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 2.2.0.28 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 neo4j.conf
:
com.graphaware.runtime.stats.disabled=true
com.graphaware.server.stats.disabled=true
Copyright (c) 2013-19 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/.