Skip to content

Maven Miner Procedures

amine BEN edited this page May 7, 2019 · 4 revisions

Maven Graph procedures

Maven miner procedures is a plugin to be shipped within aNeo4j server to simplify writing queries on top of the Maven Central dependency graph.

To see the full list of available procedures execute the following Cypher query:

CALL maven.miner.help();

In what follows we describe the existing functions and procedures, organized by topic:

Indexing Procedures

type name description
procedure maven.miner.group.precedenceship Creating per-version precedence relationship for all group nodes
procedure maven.miner.group.temporalIndex Creating per-GAV temporal index

General use Procedures

type name description
procedure maven.miner.artifacts.dependencyUpgrade maven.miner.artifacts.dependencyUpgrade() - Retrieves all the dependency changes due to upgrades
procedure maven.miner.artifacts.group.dependencyUpgrade maven.miner.artifacts.group.dependencyUpgrade('groupName') - Retrieves all the dependency changes due to upgrades for a given group
procedure maven.miner.artifacts.top top X most used artifacts
procedure maven.miner.artifacts.group.top top X most used artifacts of a group
procedure maven.miner.artifacts.latest maven.miner.artifacts.latest(['groupName']) - Retrieves all latest artifacts of a given group name. By default it returns all the latest artifacts in the graph.
procedure maven.miner.help "Provides descriptions of available procedures. To narrow the results supply a search string. To also search in the description text append : to the end of the search string."

Dependency Usage

type name description
procedure maven.miner.dependent.onRange "maven.miner.dependent.onRange('g:a',true,false, 'startVersion'[, 'endVersion', true\false]) - Retrieving all artifacts depending on an artifact in a particular version range"
procedure maven.miner.dependent.onSingle "maven.miner.dependent.onSingle('g:a',true,false; 'startVersion'[, 'endVersion', true\false]) - Retrieving all artifacts depending on a specific artifact identified by its coordinates 'g: a : v' "

Temporal procedures

type name description
procedure maven.miner.time.between "maven.miner.time.between('start='YYYY-MM-DD'[,end = '9999-12-31']?) - Retrieving all artifacts during a period of time. This period is characterized using the the date values in the form YYYY-MM-DD"
procedure maven.miner.time.during "maven.miner.version.between('g:a', 'version-low', 'version-high'[, inclusive=true]?) - Retrieving all artifacts with version belong to the provided range"
procedure maven.miner.time.group.between "maven.miner.time.group.between('groupName','start (YYYY-MM-DD)'[,end = '9999-12-31']?) - Retrieving all artifacts of the given groupName during a period of time. This period is characterized using the the date values in the form YYYY-MM-DD"
procedure maven.miner.time.group.during "maven.miner.time.group.during('g', year[, month=0]?) - Retrieving all artifacts during a period of time. This period is characterized using the the Long values, year and month"

Upgrades and releases

type name description
procedure maven.miner.upgrade.all maven.miner.upgrade.all - All the durations between upgrades for all libraries with more than one upgrade
procedure maven.miner.upgrade.group maven.miner.upgrade.group- Retrieving all the duration between releases
procedure maven.miner.upgrade.group.average maven.miner.upgrade.group.average('group:artifact') - The average release time between two successive versions of a given library ('group:artifact') in DAYS
procedure maven.miner.upgrade.group.max maven.miner.upgrade.group.average('group:artifact') - The maximum release time between two successive versions of a given library ('group:artifact') in DAYS
procedure maven.miner.upgrade.group.median maven.miner.upgrade.group.median('group:artifact') - The median release time between two successive versions of a given library ('group:artifact') in DAYS
procedure maven.miner.upgrade.group.min maven.miner.upgrade.group.min('group:artifact') - The minimum release time between two successive versions of a given library ('group:artifact') in DAYS

Versioning

type name description
procedure maven.miner.version.between "maven.miner.version.between('g:a', version-low, version-high[, inclusive=true]?) - Retrieving all artifacts with version belong to the provided range"
function maven.miner.version.isGreater "maven.miner.version.isGreater(Node n, String 'v') - Returns true if the the version of a node 'n' is Greater than the provided version value"
function maven.miner.version.isGreaterOrEqual "maven.miner.version.isGreater(Node n, 'v') - returns true if the the version of a node 'n' is Greater or equal the provided version value"
function maven.miner.version.isLower "maven.miner.version.isGreater(Node n, 'v') - returns true if the the version of a node 'n' is lower than the provided version value"
function maven.miner.version.isLowerOrEqual "maven.miner.version.isGreater(Node n, 'v') - returns true if the the version of a node 'n' is lower of equal than the provided version value"

Syntactic co-similarity

type name description
function maven.miner.duration.between "maven.miner.duration.between(String startTime, String endTime, String unit)- Returns the duration, in a given unit, between two string dates. Supported units are H (for HOURS), D (for DAYS), and M (for MONTHS)"
function maven.miner.similarity.cosine "maven.miner.similarity.cosine(['d1','d2',...], ['d1','d2',...])) - Computes the cosine similarity matrix of two given lists.Mainly intended to compute syntactic similarities between two dependencies' list. Preferably, the artifacts coordinates of the dependencies should be passed in arguments"
function maven.miner.similarity.cosine.custom "maven.miner.similarity.cosine.custom(['d1','d2',...], ['d1','d2',...]) - Computes a custom cosine similarity matrix of two given lists. The custom method removes versions, and compare only artifactId if the group is the same. Otherwise, it compares the group and artifact combined of each coordinates. Mainly intended to compute syntactic similarities between two dependencies' list. Preferably, the artifacts coordinates of the dependencies should be passed in arguments"
function maven.miner.similarity.cosine.custom.single "maven.miner.similarity.cosine.custom.single(['d1','d2',...], ['d1','d2',...]) - Computes a custom cosine similarity value between two strings. The custom method removes versions, and compare only artifactId if the group is the same. Otherwise, it compares the group and artifact combined of each coordinates. Mainly intended to compute syntactic similarities between two dependencies' list. Preferably, the artifacts coordinates of the dependencies should be passed in arguments"
function maven.miner.similarity.cosine.single "maven.miner.similarity.cosine.single('d1', 'd2') - Computes the cosine similarity value between two strings. Preferably, the artifacts coordinates of the dependencies should be passed in argument"
function maven.miner.similarity.jaroWinkler "maven.miner.similarity.jaroWinkler(['d1','d2',...], ['d1','d2',...]) - Computes the jaroWinkler similarity matrix of two given lists. Mainly intended to compute syntactic similarities between two dependencies' list. Preferably, the artifacts coordinates of the dependencies should be passed in arguments"
function maven.miner.similarity.jaroWinkler.custom "maven.miner.similarity.jaroWinkler.custom(['d1','d2',...], ['d1','d2',...]) - Computes the jaroWinkler similarity matrix of two given artifact coordinates. The custom method removes versions, and compare only artifactId if the group is the same. Otherwise, it compares the group and artifact combined of each coordinates. Mainly intended to compute syntactic similarities between two dependencies' list. Preferably, the artifacts coordinates of the dependencies should be passed in argument"
function maven.miner.similarity.jaroWinkler.custom.single "maven.miner.similarity.jaroWinkler.custom(['d1','d2',...], ['d1','d2',...]) - Computes the cosine similarity matrix of two given lists of artifact coordinates.The custom method removes versions, and compare only artifactId if the group is the same. Otherwise, it compares the group and artifact combined of each coordinates. Preferably, the artifacts coordinates of the dependencies should be passed in arguments"
function maven.miner.similarity.jaroWinkler.single "maven.miner.similarity.jaroWinkler.custom(['d1','d2',...], ['d1','d2',...]) - Computes the jaroWinkler similarity matrix of two given lists of artifact coordinates."