001package org.biojava.ontology;
002
003import java.util.Set;
004
005/**
006 * This is an interface for optimizing ontology operators.
007 *
008 * <p>
009 * Some ontology implementations will be able to compute some derived properties
010 * very quickly because of how they store their data. This is likely to out-
011 * perform generic implementations of algorithms using the Ontology interface
012 * to get the same result. Ontology instances provide an instance of
013 * OntologyOps, publishing optimizations of some common operations. The reasoner
014 * may then choose to call OntologyOps methods on the Ontology instance rather
015 * than using its fall-back implementations.
016 * </p>
017 *
018 * @author Matthew Pocock
019 * @since 1.4
020 */
021public interface OntologyOps {
022  /**
023   * Get the set of all remote terms.
024   *
025   * <p>
026   * We do not currently specify whether this set is mutable or not, and if it
027   * will reflect modifications to the optimised ontolgies.
028   * </p>
029   *
030   * @return a Set containing all remote terms in the ontology
031   */
032  public Set getRemoteTerms();
033}