1. Introduction
This software is an implementation of N-RMiner, an algorithm to mine patterns from multi-relational data containing relationships of any arity, as described
Eirini Spyropoulou, Tijl De Bie, Mario Boley: Mining Interesting Patterns in Multi-relational Data with N-ary Relationships. Discovery Science, 2013: 217-232.

Some parts of this work (that constitute parts of the software as well), are described in more detail in our previous work. The constraints on the pattern
syntax are described in detail in:
Eirini Spyropoulou, Tijl De Bie and Mario Boley. Interesting Pattern Mining in Multi-Relational Data. Data Mining & Knowledge Discovery, 28(3): 808-849 (2014).

The selection of the interesting pattern set of k patterns is described in:
Tijl De Bie, Kleanthis-Nikolaos Kontonasios, Eirini Spyropoulou: A framework for mining interesting pattern sets. SIGKDD Explorations, 2010 12(2): 92-100.

2. Compilation
To compile run the command file.

Note: If you are interested to see the maximum memory usage during runtime there is a small part of code that is specific to linux platforms (in RMiner.cpp and RMiner.h). This is by default commented out with a clear message. To turn memory reporting on, remove the comments from this part of the code and re-compile.

3. Data format
The data is formatted as follows. There is a one_to_one folder containing one file for every entity type. Every file lists all the entities of this type and associates the id of each entity with a string. These files can be either comma or tab separated. The first line of these files is of the form id,entity_type. There is also a nary folder containing all the relationships. Every file lists all relationship instances between the ids of the entities. These files are comma separated The first line of these files is of the form entity_type1,entity_type2.

4. Running
To run N-RMiner you need a configuration file. The configuration file has the following format (see config.txt for an example):

-i 0(to not compute interestingness)_or_1(to compute interestingness)
-r size_of_pattern_set_to_print
path_to_one_to_one_file1 constraint1
path_to_one_to_one_file2 constraint2

Note 1: Setting the parameters -i 1 and -r 0 will print all patterns ranked by interestingness. Setting -i 1 and -r k it will print an interesting set of k patterns. 
Note 2: The experimental evaluation of the efficiency(memory/speed) of N-RMiner presented in the related publications was done using -i 0 and -r 0.

5. Example
There is an example dataset in the folder and a configuration file related to it. To run N-RMiner on it: ./NRMiner config.txt