001package org.biopax.paxtools.model.level3;
002
003import java.util.Set;
004
005
006/**
007 * Definition: This class represents a term from an external controlled vocabulary (CV).
008 *
009 * Rationale: Controlled Vocabularies mark cases where BioPAX delegates the representation of a complex biological
010 * phenomena to an external controlled vocabulary development effort such as Gene Ontology. Each subclass of this
011 * class represents one such case and often has an associated "Best-Practice" external resource to use. See the
012 * documentation of each subclass for more specific information. Correct usage of controlled vocabularies are
013 * critical to data exchange and integration.
014 *
015 * Usage: The individuals belonging to this class must unambiguously refer to the source controlled vocabulary.
016 * This can be achieved in two manners:
017 *
018 * The xref property of this class is restricted to the unification xref class. It must point to the source
019 * controlled vocabulary.
020 *
021 * Alternatively the rdf-id of the member individuals can be set to the designated MIRIAM URN.
022 *
023 * It is a best practice to do both whenever possible.
024 *
025 * Although it is possible to use multiple unification xrefs to identify semantically identical terms across
026 * alternative controlled vocabularies, this is not a recommended practice as it might lead to maintenance
027 * issues as the controlled vocabularies change.
028 *
029 * There is no recommended use-cases for directly instantiating this class. Please, use its subclasses instead.
030 */
031public interface ControlledVocabulary extends UtilityClass, XReferrable
032{
033
034        /**
035         * @return The external controlled vocabulary term.
036         */
037        Set<String> getTerm();
038
039        /**
040         * @param term The external controlled vocabulary term.
041         */
042        void addTerm(String term);
043
044        /**
045         * @param term The external controlled vocabulary term.
046         */
047        void removeTerm(String term);
048
049
050}