This directory contains the input and output datasets used for experimentations.
Three different datasets are studied here:
- Product comparison matrices of Wikipedia, taken from the software comparison category
- Excerpts of a product comparison matrix representing JHipster 3.6.1 variants
- A product comparison matrix gathering information about bot variants developed by the Robocode community
- 0_raw_PCMs/ contains .CSV files representing "raw" PCMs, i.e., as extracted from Wikipedia before manual cleaning.
- 0_clean_PCMs/ contains .CSV files representing the same previous PCMs of Wikipedia after manual cleaning (see PCM). It also contains the PCMs about JHipster and Robocode which are already cleaned.
All other directories are automatically generated with CLEF.
Each on of them contains:
- An .RCFT file representing the formal context obtained from the PCM.
- A directory varibility/ containing 4 text files respectivelly representing the extracted binary implications (transitive closure + transitive reduction), co-occurrences and mutex.
- A directory FCA/ containing the .DOT files representing the associated concept lattice and AC-poset.
This directory contains 4 main packages:
-
A package main, containing the class testExtraction having a method main.
-
A package multivaluedcontext, containing classes to manipulate complex variant descriptions such as product comparison matrices. A MultivaluedContext possesses a list of Characteristics, which can be BinaryAttribute or MultivaluedAttribute. CharacteristicType represents the 4 type of characteristics: a Feature is mandatorily a type Boolean, and an Attribute can be of type Integer, Double or Literal.
A MultivaluedAttribute possesses an instance of AbstractSimilarities, a meet semi-lattice automatically built on its value set. All Characteristic possess a method scaling() which takes a MultivaluedContext and return the same MultivaluedContext augmented with new binary attributes representing the binary scaling of the current characteristic. If the characteristic is a BinaryAttribute, this feature is added to the returned matrix. If the characteristic is a MultivaluedAttribute, a feature is created for each value of its associated meet semi-lattice and added to the returned context.
The binary scaled context is then saved in an .RCFT file (i.e., representing a formal context) and the tool RCAExplore is called to compute the assocatied AC-poset. .RCFT files are saved in CLEF/data/pcm_name/pcm_name.rcft, and the computed AC-poset is saved in CLEF/data/pcm_name/FCA/AC-poset/step0-0.dot.
To obtain a .PDF file representing the AC-poset from the .DOT file:
dot -Tpdf step0-0.dot -o ac-poset.pdf
-
A package similarities containing classes to automatically build taxonomies based on an MultivaluedAttribute value set. The type of the taxonomy depends on the type of the MultivaluedAttribute.
-
A package relationshipextraction containing 4 classes to extract variability information from the AC-poset built from the multi-valued context.
The main file is CLEF/src/main/testExtraction.java
- To initialise a multi-valued context (product matrix) from a cleaned PCM, one has to indicate the corresponding .CSV file to be processed. The .CSV file has to be in CLEF/data/0_clean_PCMs/. For instance, to initialise a multi-valued context from the file representing the excerpt of 500 JHipster variants:
MultivaluedContext pm = new MultivaluedContext("jhipster3.6.1-testresults_500.csv");- The method computeLattice() computes the conceptual structures corresponding to the context. This method first applies the binary scaling on each multi-valued attribute of the context to produce a boolean context. An .RCFT file is computed from the obtained boolean context and then saved. The tool RCAExplore, that computes conceptual structures from .RCFT files is then called.
pm.computeLattice();- To extract the binary implications from the obtained AC-poset, an instance of BinaryImplicationExtractor retrieves the AC-poset in the directory specified in parameter. The methode computeRelationships() has to be called first. If one wants to save the extracted relationships in a text file, the method exportsInTextFile() has to be called
String path = "data/" + pm.getName() + "/";
BinaryImplicationExtractor bie = new BinaryImplicationExtractor(path);
bie.computeRelationships();
bie.exportsInTextFile();- The same process is applicable to AllBinaryImplicationExtractor, CooccurrenceExtractor and MutexExtractor.