package org.openprovenance.prov.model; /** * <p>Interface for PROV Derivation association. * <p><a href="http://www.w3.org/TR/prov-dm/#concept-derivation">PROV-DM Definition for Derivation</a>: A derivation is a transformation of an entity into another, * an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity. * * * <p>The constructor method {@link ProvFactory#newWasDerivedFrom(QualifiedName, QualifiedName, QualifiedName)} can be used to create an instance of <tt>WasDerivedFrom</tt>. * The following code snippet creates a new derivation statement, with a type attribute. * The instance of derivation is given an identifier <tt>myId</tt>. * <pre> * QualifiedName myId= ... ; // some qualified name * QualifiedName effectId= ... ; // some qualified name * QualifiedName causeId= ... ; // some qualified name * WasDerivedFrom myWasDerivedFrom=provFactory.newWasDerivedFrom(myId,effectId,causeId) * myWasDerivedFrom.getType().add(provFactory.newType(Name.PROV_REVISION)) * </pre> * * <p><span class="strong">Relevant Factory Methods:</span> * <ul> * <li> {@link ProvFactory#newWasDerivedFrom(QualifiedName, QualifiedName, QualifiedName)} * <li> {@link ObjectFactory#createWasDerivedFrom()} * </ul> * * <p><span class="strong">Schema Definition:</span> * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType name="Derivation"> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="generatedEntity" type="{http://www.w3.org/ns/prov#}IDRef"/> * <element name="usedEntity" type="{http://www.w3.org/ns/prov#}IDRef"/> * <element name="activity" type="{http://www.w3.org/ns/prov#}IDRef" minOccurs="0"/> * <element name="generation" type="{http://www.w3.org/ns/prov#}IDRef" minOccurs="0"/> * <element name="usage" type="{http://www.w3.org/ns/prov#}IDRef" minOccurs="0"/> * <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-Derivation">PROV-DM Derivation</a> * @see <a href="http://www.w3.org/TR/prov-o/#Derivation">PROV-O Derivation</a> * @see <a href="http://www.w3.org/TR/prov-n/#expression-Derivation">PROV-N Derivation</a> * @see <a href="http://www.w3.org/TR/prov-xml/#term-Derivation">PROV-XML Derivation</a> * @see <a href="http://www.w3.org/Submission/2013/SUBM-prov-json-20130424/#term-Derivation">PROV-JSON Derivation</a> * * */ public interface WasDerivedFrom extends Identifiable, HasLabel, HasType, HasOther, Influence { void setUsedEntity(QualifiedName aid2); void setGeneratedEntity(QualifiedName aid1); void setActivity(QualifiedName aid); void setGeneration(QualifiedName did1); void setUsage(QualifiedName did2); QualifiedName getGeneratedEntity(); QualifiedName getGeneration(); QualifiedName getUsedEntity(); QualifiedName getUsage(); QualifiedName getActivity(); }