package arida.ufc.br.moap.association.api;
import java.util.Collection;
import arida.ufc.br.moap.core.algorithm.spi.AbstractParametricAlgorithm;
import arida.ufc.br.moap.datamodelapi.imp.ListModelImpl;
import arida.ufc.br.moap.datamodelapi.instances.api.IInstancesBasedModel;
/**
* @author igobrilhante
*
* Abstract class that defines the capabilities of an association rules algorithm.
* It receives IInstancesBasedModel as input and results a ListModelImpl<IAssociationRule>
*/
public abstract class AssociationRulesAlgorithm extends AbstractParametricAlgorithm<IInstancesBasedModel, ListModelImpl<IAssociationRule>> {
/**
* @return index of the item attribute. It corresponds to the attribute that will be the item of the transactions
*/
public abstract int getItemAttributeIndex();
/**
* return index of the transaction attribute index. Transaction index is the unique identifier of the transaction, e.g. user id.
*/
public abstract int getTransactionAttributeIndex();
/**
* @return transaction format. Simple, each line for a item, or List, all items of a single transaction per line
*/
public abstract TransactionFormat getTransactionFormat();
/**
* @return number of transactions
*/
public abstract int getTransactionsCount();
/**
* @param item
* @return collection of rules with a given item
*/
public abstract Collection<IAssociationRule> getAssociationRules(Item item);
/**
* @param items
* @param and, if all the items should be in the association rules
* @return collection of rules with a given list of items
*/
public abstract Collection<IAssociationRule> getAssociationRules(Collection<Item> items,boolean and);
/**
* @return number os rules found
*/
public abstract int getAssociationRulesCount();
/**
* @return number of items
*/
public abstract int getItemsCount();
/**
* @return support
*/
public abstract float getSupport();
/**
* @return confidence
*/
public abstract float getConfidence();
}