001package org.biopax.paxtools.model.level3;
002
003import java.util.Set;
004
005/**
006 * This class represents a discrete biological unit used when describing
007 * pathways. This is the root class for all biological concepts in the ontology,
008 * which include pathways, interactions and physical entities. As the most
009 * abstract class in the ontology, instances of the entity class should never be
010 * created. Instead, more specific classes should be used. Synonyms: thing,
011 * object, bioentity.
012 */
013public interface Entity extends Level3Element, Observable, Named
014{
015        // --------------------- ACCESORS and MUTATORS---------------------
016
017        // Property AVAILABILITY
018
019        /**
020         * The contents of this set can be modified but semantic consistency is not
021         * guaranteed. Using {@link #addAvailability(String)} and {@link
022         * #removeAvailability(String)} is recommended.
023         * @return a set of  strings describing the availability of this data (e.g. a
024         *         copyright statement).
025         */
026        public Set<String> getAvailability();
027
028
029        /**
030         * This method adds the given text to the avaialability set.
031         * @param availability a string describing the availability of this data
032         * (e.g. a copyright statement).
033         */
034        public void addAvailability(String availability);
035
036        /**
037         * This method removes the given text from the avaialability set.
038         * @param availability a string describing the availability of this data
039         * (e.g. a copyright statement).
040         */
041        public void removeAvailability(String availability);
042
043
044        // Property DATA-SOURCE
045
046        /**
047         * This method returns a set of free text descriptions of the source of this
048         * data, e.g. a database or person name. This property should be used to
049         * describe the source of the data. This is meant to be used by databases that
050         * export their data to the BioPAX format or by systems that are integrating
051         * data from multiple sources. The granularity of use (specifying the data
052         * source in many or few instances) is up to the user. It is intended that
053         * this property report the last data source, not all data sources that the
054         * data has passed through from creation.
055         * 
056         * The contents of this set can be modified but semantic consistency is not
057         * guaranteed. Using {@link #addDataSource(Provenance)} and {@link #removeDataSource(Provenance)} is
058         * recommended.
059         * @return a set of free text descriptions of the source of this data, e.g. a
060         *         database or person name.
061         */
062        public Set<Provenance> getDataSource();
063
064
065        /**
066         * This method adds the given value to the DATA_SOURCE set.
067         * @param dataSource a free text description of the source of this data,
068         * e.g. a database or person name.
069         */
070        public void addDataSource(Provenance dataSource);
071
072        /**
073         * This method removes the given value from the DATA_SOURCE set.
074         * @param dataSource a free text description of the source of this data,
075         * e.g. a database or person name.
076         */
077        public void removeDataSource(Provenance dataSource);
078
079
080
081
082        /**
083         * This method  returns the interaction that this entity/pep takes part in.
084         * Contents of this set should not be modified.
085         * Reverse of {@link org.biopax.paxtools.model.level3.Interaction#getParticipant()}
086         * @return a set of interactions that
087         */
088        public Set<Interaction> getParticipantOf();
089
090}