package org.openprovenance.prov.model; /** * <p>Interface for PROV Alternate association. * <p><a href="http://www.w3.org/TR/prov-dm/#concept-alternate">PROV-DM Definition for Alternate</a>: Two alternate * entities present aspects of the same thing. These aspects may be the same or different, and the alternate entities * may or may not overlap in time. * <p>Note that alternateOf is a necessarily very general relationship that, in reasoning, only states that the two * alternate entities respectively fix some aspects of some common thing (possibly evolving over time), and so there * is some relevant connection between the provenance of the alternates. In a specific application context, * alternateOf, or a subtype of it, could allow more inferences. * * <p><span class="strong">Relevant Factory Methods:</span> * <ul> * <li> {@link ProvFactory#newAlternateOf(QualifiedName, QualifiedName)} * <li> {@link ObjectFactory#createAlternateOf()} * </ul> * * * <p><span class="strong">Schema Definition:</span> * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType name="Alternate"> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="alternate1" type="{http://www.w3.org/ns/prov#}IDRef"/> * <element name="alternate2" type="{http://www.w3.org/ns/prov#}IDRef"/> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * * <p> * @see <a href="http://www.w3.org/TR/prov-dm/#term-alternate">PROV-DM Alternate</a> * @see <a href="http://www.w3.org/TR/prov-o/#alternateOf">PROV-O alternateOf</a> * @see <a href="http://www.w3.org/TR/prov-n/#expression-alternate">PROV-N Alternate</a> * @see <a href="http://www.w3.org/TR/prov-xml/#term-Alternate">PROV-XML Alternate</a> * @see <a href="http://www.w3.org/Submission/2013/SUBM-prov-json-20130424/#term-alternate">PROV-JSON Alternate</a> * * @author lavm * */ public interface AlternateOf extends Relation { /** Sets the identifier for the first of the two entities. * * @param entity a {@link QualifiedName} for second entity */ void setAlternate1(QualifiedName entity); /** Sets the identifier for the second of the two entities. * * @param entity a {@link QualifiedName} for second entity */ void setAlternate2(QualifiedName entity); /** Returns the identifier for the first of the two entities. * * @return a {@link QualifiedName} */ QualifiedName getAlternate1(); /** Returns the identifier for the second of the two entities. * * @return a {@link QualifiedName} */ QualifiedName getAlternate2(); }