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}