/*
 * Created on Feb 28, 2005 <p>
 * By Eddie <p>
 */
package org.biomoby.shared;


/**
 * @author Eddie Kawas
 * <p>Created for
 * <p>This class was created to ...
 * <p>For questions, comments, or bugs
 * <p>email me at edward.kawas@gmail.com
 */
public interface MobyObjectDecomposition {

    /**
     *  
     * <b>PRE:</b>None.<p>
     * <b>POST:</b>If object is a valid MOBY object, then all of the primitives in the objects HAS and HASA containers are returned as an array of strings.<p>
     * @param object - the object to flatten into its primitives.
     * @return - the full decomposition of an object into its primitives.
     */
    public org.biomoby.shared.data.MobyDataObject[] getFlattenedPrims(String object);

    /**
     *  
     * <b>PRE:</b>None.<p>
     * <b>POST:</b>A Map of relationships with the keys being "isa", "has", and "hasa". The values are string arrays or null if no relationship exists.<p>
     * @param object - the object to decompose into its HAS & HASA container objects.
     * @return - A Map of relationships with the keys being "isa", "has", and "hasa". The values are string arrays consisting of [object,articleName], for has and hasa relationships,  or null if no relationship exists.
     * @throws MobyException - if no such object exists in the MOBY ontology.
     */
    public java.util.Map getObjectComposition(String object, String mobyEndpoint) throws MobyException;

    /**
     *  
     * <b>PRE:</b>None.<p>
     * <b>POST:</b>if object is a primitive, boolean true is returned, otherwise false is returned.<p>
     * @param object - the MOBY object to check.
     * @return true if object is a primitive, false otherwise.
     */
    public boolean isPrimitive(String object);

}
