package info.oais.interfaces.infomodel;


/**
 * A Data Object together with its Representation Information [OAIS]
 * <b>Information</b>: Any type of knowledge that can be exchanged. In an
 * exchange, it is represented by data. <br/> NOTE - An example of Information is
 * a string of bits (the data) accompanied by a description of how to interpret
 * the string of bits as numbers representing temperature observations measured in
 * degrees Celsius (the Representation Information).  [OAIS]<br/>
 * @author David
 * @version 1.0
 * @since 06-Sep-2021 15:59:46
 */
public interface InformationObject {

	//public DataObject im_DataObject = null;
	//public Identifier im_Identifier = null;
	//public RepresentationInformation im_RepresentationInformation = null;

	/**
	 * Get the DataObject of the InformationObject.
	 * 
	 * @return The DataObject of the InformationObject.
	 */
	public DataObject getDataObject();
	/**
	 * Get the RepresentationInformation of the informationObject.
	 * 
	 * @return The RepInfo of the InformationObject.
	 */
	public RepresentationInformation getRepresentationInformation();

	/**
	 * Set the DataObject of the InformationObject.
	 * 
	 * @param dataObj    The DataObject for the InfoObject.
	 */
	public void setDataObject(DataObject dataObj);

	/**
	 * Set the RepresentationInformation of the InformationObject.
	 * 
	 * @param repInfo    The RepInfo for the InfoObject.
	 */
	public void setRepresentationInformation(RepresentationInformation repInfo);
	
	/**
	 * Method to get the InfoObjectId.
	 * @return The Identifier of the InformationObject.
	 */
	public Identifier getIdentifier();
	
	/**
	 * Method to set the InfoObjectId.
	 * @param id The Identifier of the Info.
	 */
	public void setIdentifier(Identifier id);

}