package org.openprovenance.prov.model;
import org.openprovenance.prov.model.extension.QualifiedAlternateOf;
import org.openprovenance.prov.model.extension.QualifiedHadMember;
import org.openprovenance.prov.model.extension.QualifiedSpecializationOf;
/** Interface to a visitor like functionality operating over PROV statements and bundles.
* This visitor returns {@link Object}. For a visitor that returns void, see {@link StatementAction}.
*
* <p><span class="strong">Relevant Factory Methods:</span>
* <ul>
* <li> {@link ProvUtilities#doAction(org.openprovenance.prov.model.StatementOrBundle, org.openprovenance.prov.model.StatementActionValue)}
* <li> {@link ProvUtilities#doAction(org.openprovenance.prov.model.StatementOrBundle, org.openprovenance.prov.model.StatementAction)}
* <li> {@link ProvUtilities#forAllStatement(java.util.List, org.openprovenance.prov.model.StatementAction)}
* <li> {@link ProvUtilities#forAllStatementOrBundle(java.util.List, org.openprovenance.prov.model.StatementAction)}
* </ul>
*
* @author lavm
*
*/
public interface StatementActionValue {
Object doAction(Activity s);
Object doAction(Used s);
Object doAction(WasStartedBy s);
Object doAction(Agent s);
Object doAction(AlternateOf s);
Object doAction(WasAssociatedWith s);
Object doAction(WasAttributedTo s);
Object doAction(WasInfluencedBy s);
Object doAction(ActedOnBehalfOf s);
Object doAction(WasDerivedFrom s);
Object doAction(DictionaryMembership s);
Object doAction(DerivedByRemovalFrom s);
Object doAction(WasEndedBy s);
Object doAction(Entity s);
Object doAction(WasGeneratedBy s);
Object doAction(WasInvalidatedBy s);
Object doAction(HadMember s);
Object doAction(MentionOf s);
Object doAction(SpecializationOf s);
Object doAction(QualifiedSpecializationOf s);
Object doAction(QualifiedAlternateOf s);
Object doAction(QualifiedHadMember s);
Object doAction(DerivedByInsertionFrom s);
Object doAction(WasInformedBy s);
Object doAction(Bundle s, ProvUtilities provUtilities);
}