/*
* ARX: Powerful Data Anonymization
* Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* This package provides the public API for the ARX anonymization framework.
* <p>
* <ul>
* <li>The class {@link AttributeType} encapsulates the four different kinds of attributes recognized by the framework.</li>
* <li>The class {@link DataType} encapsulates the three different kinds of data types recognized by the framework.</li>
* <li>The class {@link Data} represents an input dataset for the algorithm.</li>
* <li>The class {@link DataDefinitio}, an instance of which can be obtain for any input data by calling {@link Data.getDefinition()}, allows assign attribute types, data types and further parameters to a dataset.</li>
* <li>The class {@link DataHandle}, an instance of which can be obtain for any input data by calling {@link Data.getHandle()} and for any output data by calling {@link ARXResult.getHandle()}, implements convenience methods for accessing a dictionary encoded representation of a dataset. It also allows manipulating the data (e.g., sorting it) and makes sure that input and output data are always in sync.</li>
* <li>The class {@link ARXAnonymizer} represents the actual algorithm and allows to derive anonymous representations of the input dataset, e.g., by calling {@link ARXAnonymizer.kAnonymize()} or {@link ARXAnonymizer.lDiversify()}.</li>
* <li>The class {@link ARXResult} represents the results of executing the algorithm. It provides access to the globally optimal solution and the underlying generalization lattice {@link ARXLattice}.</li>
* <li>The class {@link ARXAdapter} can be utilized to attach a listener to the ARX framework, tracking its progress while anonymizing a dataset.</li>
* </ul>
*
* @author Fabian Prasser
* @author Florian Kohlmayer
*/
package org.deidentifier.arx;