Skip to content

@jexp jexp released this May 30, 2019 · 200 commits to 3.5 since this release

This is just a quick intermediate release before spring is over.


Powered by Neo4j Labs.

As usual big thanks to our contributors that spent countless hours to improve APOC and add useful functionality.

Here are the highlights:

  • New procedures: apoc.merge.node.eager() and apoc.merge.relationship.eager()
  • New functions: apoc.map.(m)get, apoc.map.mget and apoc.map.submap that fail on missing keys
  • Added apoc.date.convertFormats for String date conversions

Bugfixes/Improvements

  • Make sure custom procedures are also recreated on other cluster members
  • headers incorrect order after apoc csv export
  • Prepend cypher runtime=slotted in apoc.periodic.iterate driving statement
  • Make the dbms.directories.import directory the root for exports too as only that directory should be readable/writeable on a server
  • keep the mongodb connection open until stream is closed
  • allow loading of xml with DTD references
  • alias sql statements in neo4j.conf for apoc.load.jdbc
  • Adds ignoreQuotations configuration to apoc.load.csv
  • Avoid using recursion for re-submitting rejected tasks in the Pools.
  • Fix apoc.refactor.mergeNodes index conflict exception by moving property copying last just after deleting of source node

Enjoy!

Assets 3

@jexp jexp released this May 30, 2019 · 45 commits to 3.5 since this release

This is just a quick intermediate release before spring is over.


Powered by Neo4j Labs.

As usual big thanks to our contributors that spent countless hours to improve APOC and add useful functionality.

Here are the highlights:

  • New procedures: apoc.merge.node.eager() and apoc.merge.relationship.eager()
  • New functions: apoc.map.(m)get, apoc.map.mget and apoc.map.submap that fail on missing keys
  • Added apoc.date.convertFormats for String date conversions

Bugfixes/Improvements

  • Make sure custom procedures are also recreated on other cluster members
  • headers incorrect order after apoc csv export
  • Prepend cypher runtime=slotted in apoc.periodic.iterate driving statement
  • Make the dbms.directories.import directory the root for exports too as only that directory should be readable/writeable on a server
  • keep the mongodb connection open until stream is closed
  • allow loading of xml with DTD references
  • alias sql statements in neo4j.conf for apoc.load.jdbc
  • Adds ignoreQuotations configuration to apoc.load.csv
  • Avoid using recursion for re-submitting rejected tasks in the Pools.
  • Fix apoc.refactor.mergeNodes index conflict exception by moving property copying last just after deleting of source node

Enjoy!

Assets 3

@jexp jexp released this Apr 17, 2019 · 65 commits to 3.5 since this release

APOC Spring Release 3.5.0.3


Powered by Neo4j Labs.

This is the first Neo4jLabs release of APOC.
It is full of new features and extensions to existing ones.

Over the next few weeks you will see articles exploring those features a bit more in detail.

As usual we got a lot of support and contributions from many people, especially @conker84 and @AngeloBusato from our partner Larus-IT, Italy.
But this time we have to thank also a lot of new and previous contributors:

New Features

  • Automatically create a graph representation from nested JSON document, this is a starting point, it will get more configurable, optionally returns a virtual graph
  • New modes for apoc.export.cypher that optimize import performance, down from 4 hours for 4M nodes/rels to 10 minutes (with cypher-shell 1.1.9)
  • An automatic UUID handler configurable by label, ensures that each node of that label will get an UUID id set at creation time, with means to update existing nodes
  • Excel Export (apoc.export.xls.*) also allows different labels to go to different sheets
  • New functions for checking if relationships exists and their degrees: apoc.node.relationships.exist / apoc.node.relationships.degrees, also for lists of nodes

Improvements:

  • breaking change: switch import directory mode to honor neo4j import directory setting by default, so only files in the import directory can be accessed (security)
  • apoc.export.csv has now an option (bulkImport:true) for supporting the bulk import via apoc.import.csv, also handling of quote characters
  • don't follow redirects that change protocols (security)
  • added functions for apoc.static.get*
  • added functions for apoc.text.phonetic*
  • automatically prefix the slotted runtime for apoc.periodic.iterate esp for graph refactorings
  • description field for custom procedures
  • list custom functions and procedures with apoc.custom.list
  • config options to (disable,garble, enable) custom logging (security)
  • add an option includeFailedBatches to apoc.periodic.iterate that returns a portion of the failed batch for analysis
  • fix division by zero operation during sampling of metadata
  • revised Metrics and Log Streaming approach, especially for the Halin Monitoring tool (security) (see https://install.graphapp.io)
  • test container support for cassandra, jdbc(postgres), neo4j (testing)

Bugfixes

  • proper write locking of both nodes and relationships in apoc.lock.all
  • made clone and relationship direction procedures eager.
Assets 3

@jexp jexp released this Apr 17, 2019 · 200 commits to 3.5 since this release

APOC Spring Release 3.4.0.6


Powered by Neo4j Labs.

This is the first Neo4jLabs release of APOC.
It is full of new features and extensions to existing ones.

Over the next few weeks you will see articles exploring those features a bit more in detail.

As usual we got a lot of support and contributions from many people, especially @conker84 and @AngeloBusato from our partner Larus-IT, Italy.
But this time we have to thank also a lot of new and previous contributors:

New Features

  • Automatically create a graph representation from nested JSON document, this is a starting point, it will get more configurable, optionally returns a virtual graph
  • New modes for apoc.export.cypher that optimize import performance, down from 4 hours for 4M nodes/rels to 10 minutes (with cypher-shell 1.1.9)
  • An automatic UUID handler configurable by label, ensures that each node of that label will get an UUID id set at creation time, with means to update existing nodes
  • Excel Export (apoc.export.xls.*) also allows different labels to go to different sheets
  • New functions for checking if relationships exists and their degrees: apoc.node.relationships.exist / apoc.node.relationships.degrees, also for lists of nodes

Improvements:

  • breaking change: switch import directory mode to honor neo4j import directory setting by default, so only files in the import directory can be accessed (security)
  • apoc.export.csv has now an option (bulkImport:true) for supporting the bulk import via apoc.import.csv, also handling of quote characters
  • don't follow redirects that change protocols (security)
  • added functions for apoc.static.get*
  • added functions for apoc.text.phonetic*
  • automatically prefix the slotted runtime for apoc.periodic.iterate esp for graph refactorings
  • description field for custom procedures
  • list custom functions and procedures with apoc.custom.list
  • config options to (disable,garble, enable) custom logging (security)
  • add an option includeFailedBatches to apoc.periodic.iterate that returns a portion of the failed batch for analysis
  • fix division by zero operation during sampling of metadata
  • revised Metrics and Log Streaming approach, especially for the Halin Monitoring tool (security) (see https://install.graphapp.io)
  • test container support for cassandra, jdbc(postgres), neo4j (testing)

Bugfixes

  • proper write locking of both nodes and relationships in apoc.lock.all
  • made clone and relationship direction procedures eager.
Assets 3

@jexp jexp released this Apr 17, 2019 · 100 commits to 3.5 since this release

This release of APOC is packed with new features and capabilities.

Thanks a lot to all the contributors who help to make it such a successful open-source project.

We also proudly introduce the new documentation pages for APOC, which now come with chunked paged for each section.

As usual, we'd love your feedback on the new release and functions. Please submit issues and improvement requests.

New features:

  • Added apoc.refactor.cloneSubgraph() for cloning and re-anchoring a subgraph of nodes and relationships between them
  • Added functions for node, relationship or graph hash calculation (fingerprinting)
  • A function apoc.nodes.collapse(node-list, {config}) to collapse larger sets of nodes into single virtual nodes
  • Adds apoc.metrics.storage(dirName) to allow inspection of free storage
  • Reporting CSV Metrics and Log File Streaming
  • Function to drop duplicate neighbors in a collection
  • Added apoc.agg.graph to return a minimal, distinct set of nodes and relationships from a query

Improvements:

  • apoc.convert.toTree config option to include/exclude certain properties
  • character index and more config options for apoc.xml.import
  • Make apoc.meta.* sample at batches taking a given sample-count across all nodes of each label
  • Add ability to provide label to schema functions for filtered result
  • apoc.meta.cypherType should give consistent cypher-type info
  • Provide a configuration parameter map with user/pass for JDBC

Bugfixes

  • quotes handling for apoc.export.csv
  • Several fixes for graphml export and gephi streaming
  • apoc.periodic.commit should check for limit
  • apoc.export.cypher.all fails when a compound constraint exists
  • apoc.load.xls Cannot convert java.util.Date to AnyValue
  • apoc.load.jdbc select timestamp column which value is NULL raise Exception
  • export function label ordering
  • Better null handling for collection functions

Build Improvments

  • Add TestContainer Integration for database and Neo4j(Enterprise) tests
  • Add new documentation build toolchain using asciidoc with docbook
Assets 3

@jexp jexp released this Feb 15, 2019 · 200 commits to 3.5 since this release

This release of APOC is packed with new features and capabilities.

Thanks a lot to all the contributors who help to make it such a successful open-source project.

We also proudly introduce the new documentation pages for APOC, which now come with chunked paged for each section.

New features:

  • Added apoc.refactor.cloneSubgraph() for cloning and re-anchoring a subgraph of nodes and relationships between them
  • Added functions for node, relationship or graph hash calculation (fingerprinting)
  • A function apoc.nodes.collapse(node-list, {config}) to collapse larger sets of nodes into single virtual nodes
  • Adds apoc.metrics.storage(dirName) to allow inspection of free storage
  • Reporting CSV Metrics and Log File Streaming
  • Function to drop duplicate neighbors in a collection
  • Added apoc.agg.graph to return a minimal, distinct set of nodes and relationships from a query

Improvements:

  • apoc.convert.toTree config option to include/exclude certain properties
  • character index and more config options for apoc.xml.import
  • Make apoc.meta.* sample at batches taking a given sample-count across all nodes of each label
  • Add ability to provide label to schema functions for filtered result
  • apoc.meta.cypherType should give consistent cypher-type info
  • Provide a configuration parameter map with user/pass for JDBC

Bugfixes

  • quotes handling for apoc.export.csv
  • Several fixes for graphml export and gephi streaming
  • apoc.periodic.commit should check for limit
  • apoc.export.cypher.all fails when a compound constraint exists
  • apoc.load.xls Cannot convert java.util.Date to AnyValue
  • apoc.load.jdbc select timestamp column which value is NULL raise Exception
  • export function label ordering
  • Better null handling for collection functions

Build Improvments

  • Add TestContainer Integration for database and Neo4j(Enterprise) tests
  • Add new documentation build toolchain using asciidoc with docbook
Assets 3

@jexp jexp released this Nov 27, 2018 · 171 commits to 3.4 since this release

This is the first APOC release for Neo4j 3.5.0, it is available via Neo4j Desktop.

We're really excited about this APOC release. It contains a lot of solved issues and new features.

Thanks a lot to all contributors that helped crafting the release, especially the folks from our partner Larus, Italy (@conker84 , @AngeloBusato, @omarlarus, @albertodelazzari ), @szarnyasg, my colleagues @sarmbruster, @michael-simons, @kvegter

Let's have a look at the changes:

  • apoc.export.json - exports your database/query/subgraph as stream of json objects
  • apoc.text.format - additional locale for formatting
  • apoc.coll.frequenciesAsMap - the item is the key an the count the value
  • added fast procedures for finding distinct neighbours of a node many hops apart
  • cypher initializer for running statements at startup of the database
  • Added apoc.trigger.removeAll

Issues:

  • support older JDBC drivers with missing isClosed method
  • Support Temporal types in apoc.load.jdbc
  • remove support for XML entities (CVE)
  • fix one-line XML import
  • handle relative import paths correctly if configured
  • apoc.schema.assert does not drop existence constraints
  • JSON numbers are loaded as long values, like Cypher supports
  • apoc.export.cypher.all works with temporal types
  • deal gracefully with URLStreamHandlerFactory init issues
  • better argument handling for date format functions
  • Fix Graph Refactoring for merge nodes

As usual, please try them out and let us know if everything works for you.
If you run into any issues please raise a GitHub issue here, or ask on the Community Site.

Assets 3

@jexp jexp released this Nov 16, 2018 · 127 commits to 3.4 since this release

We're really excited about this APOC release. It contains a lot of solved issues and new features.

Thanks a lot to all contributors that helped crafting the release, especially the folks from our partner Larus, Italy (@conker84 , @AngeloBusato, @omarlarus, @albertodelazzari ), @szarnyasg, my colleagues @sarmbruster, @michael-simons, @kvegter

Let's have a look at the changes:

  • apoc.export.json - exports your database/query/subgraph as stream of json objects
  • apoc.text.format - additional locale for formatting
  • apoc.coll.frequenciesAsMap - the item is the key an the count the value
  • added fast procedures for finding distinct neighbours of a node many hops apart
  • cypher initializer for running statements at startup of the database
  • Added apoc.trigger.removeAll

Issues:

  • support older JDBC drivers with missing isClosed method
  • Support Temporal types in apoc.load.jdbc
  • remove support for XML entities (CVE)
  • fix one-line XML import
  • handle relative import paths correctly if configured
  • apoc.schema.assert does not drop existence constraints
  • JSON numbers are loaded as long values, like Cypher supports
  • apoc.export.cypher.all works with temporal types
  • deal gracefully with URLStreamHandlerFactory init issues
  • better argument handling for date format functions
  • Fix Graph Refactoring for merge nodes

As usual, please try them out and let us know if everything works for you.
If you run into any issues please raise a GitHub issue here, or ask on the Community Site.

Assets 3

@jexp jexp released this Oct 11, 2018 · 171 commits to 3.4 since this release

This release is mostly fixing API issues with Neo4j 3.5 and to test out APOC with Neo4j 3.5

Notable changes:

  • we will remove several the graph algorithms as the internal Neo4j APIs have been removed
  • startup changes slightly internally from having one startup cycle to one for the dbms and one per db.

No real changes since 3.4.0.3, some minor documentation updates.

Assets 3

@jexp jexp released this Sep 20, 2018 · 173 commits to 3.4 since this release

Just in time for GraphConnect 2081 in NYC, we are happy to release APOC 3.4.0.3.

Thanks so much to all the contributors that have been really busy.

This release has some neat new features.

We added support for defining custom procedures and functions implemented in plain Cypher and then call them like regular ones.

CALL apoc.custom.asProcedure('neighbours',
  'MATCH (n:Person {name:$name})-->(nb) RETURN nb as neighbour','read',
  [['neighbour','NODE']],[['name','STRING']]);

CALL custom.neighbours('Keanu Reeves') YIELD neighbour;

You can now load data from inside of zip archives by appending the !path/to/file.csv to your file url.

To scrape data from websites you can use apoc.load.html, which is really useful.

The warmup.run() procedure was rewritten to also allow warm-up of index files and others.

You can now stream the results of apoc.export.csv.* directly to the client within your Cypher result instead writing a file on the server.

Explicit index procedures can now return the number of hits instead of the data.

Date formatting can now use named formats, something we got inspiration for from ElasticSearch.

Couchbase (4.x and 5.x) new authentication methods are now supported.

With apoc.text.index(es)Of you can get one or more occurrences of substrings.

There were a lot of docs updates, for JDBC, text, map, XML, schema and much more.

Please try out the new features and report back how well they work for you.

You can also ask questions around APOC in the new Neo4j Community Forum

Assets 3
You can’t perform that action at this time.