package org.openprovenance.prov.model;
/**
* <p>Interface for the PROV Delegation association.
*
* <p><a href="http://www.w3.org/TR/prov-dm/#concept-delegation">PROV-DM Definition for Delegation</a>:
* Delegation is the assignment of authority and responsibility to an agent (by itself or by another agent)
* to carry out a specific activity as a delegate or representative, while the agent it acts on behalf of
* retains some responsibility for the outcome of the delegated work.
*
* <p>
* <p><span class="strong">Relevant Factory Methods:</span>
* <ul>
* <li> {@link ProvFactory#newActedOnBehalfOf(QualifiedName, QualifiedName, QualifiedName)}
* <li> {@link ProvFactory#newActedOnBehalfOf(QualifiedName, QualifiedName, QualifiedName, QualifiedName, java.util.Collection)}
* <li> {@link ObjectFactory#createActedOnBehalfOf()}
* </ul>
*
* <p><span class="strong">Schema Definition:</span>
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="Delegation">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="delegate" type="{http://www.w3.org/ns/prov#}IDRef"/>
* <element name="responsible" type="{http://www.w3.org/ns/prov#}IDRef"/>
* <element name="activity" type="{http://www.w3.org/ns/prov#}IDRef"/>
* <element ref="{http://www.w3.org/ns/prov#}label" maxOccurs="unbounded" minOccurs="0"/>
* <element ref="{http://www.w3.org/ns/prov#}type" maxOccurs="unbounded" minOccurs="0"/>
* <any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* <attribute ref="{http://www.w3.org/ns/prov#}id"/>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
* <p>
* @see <a href="http://www.w3.org/TR/prov-dm/#term-delegation">PROV-DM Delegation</a>
* @see <a href="http://www.w3.org/TR/prov-o/#Delegation">PROV-O Delegation</a>
* @see <a href="http://www.w3.org/TR/prov-n/#expression-delegation">PROV-N Delegation</a>
* @see <a href="http://www.w3.org/TR/prov-xml/#term-Delegation">PROV-XML Delegation</a>
* @see <a href="http://www.w3.org/Submission/2013/SUBM-prov-json-20130424/#term-delegation">PROV-JSON Delegation</a>
* @author lavm
*
*/
public interface ActedOnBehalfOf extends Identifiable, HasLabel, HasType, HasOther, Influence {
/** Get the activity identifier. This is the activity for which the delegation link holds.
* @return the activity QualifiedName
* @see <a href="http://www.w3.org/TR/prov-dm/#delegation.activity">delegation activity</a>
*/
QualifiedName getActivity();
/** Get the delegate identifier. The delegate is the agent associated with an activity, acting on behalf of the responsible agent.
* @return a QualifiedName
* @see <a href="http://www.w3.org/TR/prov-dm/#delegation.delegate">delegation delegate</a>
*/
QualifiedName getDelegate();
/** Get the responsible identifier. The responsible is the agent, on behalf of which the delegate agent acted.
* @return a QualifiedName
* @see <a href="http://www.w3.org/TR/prov-dm/#delegation.responsible">delegation responsible</a>
*/
QualifiedName getResponsible();
/** Set the activity identifier.
* @param activity QualifiedName of the activity
* @see <a href="http://www.w3.org/TR/prov-dm/#delegation.activity">delegation activity</a>
*/
void setActivity(QualifiedName activity);
/** Set the delegate identifier.
* @param delegate QualifiedName of the delegate agent.
* @see <a href="http://www.w3.org/TR/prov-dm/#delegation.delegate">delegation delegate</a>
*/
void setDelegate(QualifiedName delegate);
/**Set the responsible identifier
* @param responsible QualifiedName of the responsible agent.
* @see <a href="http://www.w3.org/TR/prov-dm/#delegation.responsible">delegation responsible</a>
*/
void setResponsible(QualifiedName responsible);
}