This project provides
- An implementation of the Similarity Flooding algorithm as defined by Sergey Melnik, Hector Garcia-Molina, and Erhard Rahm in 'Similarity flooding: A versatile graph matching algorithm and its application to schema matching' and in the technical report associated.
- The implementation of SFDiff, an algorithm based on the Similarity Flooding algorithm to compute the difference between two FAMIX models. This implementation comes with some optimizations allowing to process bigger models.
The implementation has been realised in Pharo 6, more specifically, inside the Moose 6.1 environment.
Metacello new
baseline: 'SimilarityFlooding';
repository: 'github://juliendelplanque/SFDiff/repository';
load
The most basic usage of SFDiff algorithm is the following:
changes := SFDiff baseModel: firstModel targetModel: secondModel
The core package of this framework is SimilarityFlooding which contains the implementation of Similarity Flooding.
Classes are distributed in four tags:
- Datastructures which contains all the data structures used by the algorithm
- Filters which contains filters applicable to the output of the algorithm to filter the results
- GraphBuilder which contains classes to build input graphs for SimilarityFlooding from MooseModels
- Traits which contains traits shared along multiple classes in the package
SimilarityFlooding-Diff contains the implementation of SFDiff.
To contribute via a bug fix/enhancement to this project, please use GitFile tree. If you want to have write access to this repository, please open an issue.
- Install GitFileTree using the Catalog Browser.
- Clone this repository on your computer:
git clone git@github.com:juliendelplanque/SFDiff.git - Install the project using the script in the preceding section.
- Open the 'Monticello Browser', select the package for which you want to modify something.
- Click on '+Repository' button, select 'gitfiletree://' and locate the subdirectory 'repository' of the directory in which you cloned this repository.
- Do some modifications.
- Go in the 'Monticello Browser' select the gitfiletree repository and click 'Save' button.
Repeat 6. and 7. for each modification you want to apply.
If you detect any bug in this project, please open an issue with a complete description of the bug you encountered.