package org.molgenis.ontology.core.service;
import org.molgenis.ontology.core.model.Ontology;
import org.molgenis.ontology.core.model.OntologyTerm;
import java.util.List;
import java.util.Set;
public interface OntologyService
{
/**
* Retrieves all ontologies.
*/
List<Ontology> getOntologies();
/**
* Retrieves a specific ontology
*
* @param iri IRI of the ontology to retrieve.
* @return the Ontology
*/
Ontology getOntology(String iri);
/**
* Finds ontology terms that are exact matches to a certain search string.
*
* @param pageSize number of results to return.
* @return List of {@link OntologyTerm}s that match the search term.
*/
List<OntologyTerm> findExcatOntologyTerms(List<String> ontologyIds, Set<String> terms, int pageSize);
/**
* Finds ontology terms that match a certain search string.
*
* @param pageSize number of results to return.
* @return List of {@link OntologyTerm}s that match the search term.
*/
List<OntologyTerm> findOntologyTerms(List<String> ontologyIds, Set<String> terms, int pageSize);
/**
* Retrieve all ontology terms from the specified ontology
*
* @param ontologyIri
* @return all the {@link OntologyTerm}
*/
List<OntologyTerm> getAllOntologyTerms(String ontologyIri);
// voor de tag service
/**
* Retrieves a specific OntologyTerm
*
* @return Combined {@link OntologyTerm} for all IRI's listed
*/
OntologyTerm getOntologyTerm(String iri);
/**
* Retrieves all children from the current ontology term
*
* @param ontologyTerm
* @return a list of {@link OntologyTerm} as children
*/
List<OntologyTerm> getChildren(OntologyTerm ontologyTerm);
/**
* Calculate distance between two ontology terms
*
* @param ontologyTerm1
* @param ontologyTerm2
* @return
*/
Integer getOntologyTermDistance(OntologyTerm ontologyTerm1, OntologyTerm ontologyTerm2);
/**
* Retrieves all ontologies ids.
*
* @return String Ontology Id
*/
List<String> getAllOntologiesIds();
}