package tr.com.srdc.mdr.core.api.ai;
import java.util.List;
import tr.com.srdc.mdr.core.model.iso11179.ConceptualDomainResource;
/**
*
* A Conceptual Domain is a set of Value Meanings, which may either be
* enumerated or expressed via a description.<br>
* As an Administered Item, a Conceptual Domain carries its own Administration
* Record information, allowing it to be identified, named, defined and
* optionally classified within a Classification Scheme.<br>
* A Conceptual Domain may be associated with other Conceptual Domains, via the
* Conceptual Domain Relationship in Figure 9. The nature of the relationship is
* described using the conceptual domain relationship type description. Through
* the Conceptual Domain Relationship, a Conceptual Domain may be composed of
* other Conceptual Domains or may be a member (component) of a larger
* Conceptual Domain.<br>
* A Conceptual Domain may specify a constraint such as “linear measure” as its
* dimensionality. When a dimensionality is specified, any Value Domain that is
* based on this Conceptual Domain shall specify a Unit of Measure that is
* consistent with this dimensionality.
*
* @author anil
*
*/
public interface ConceptualDomain extends AdministeredItem {
@Override
/**
* @return the {@link ConceptualDomainResource} version this instance.
*/
ConceptualDomainResource asMDRResource();
/**
* @return Dimensionality value of this ConceptualDomain if there is any, if
* not, <code>null</code>
*/
String getDimensionality();
/**
* Set the dimensionality of this {@link ConceptualDomain}.
*
* @param dimensionality
*/
void setDimensionality(String dimensionality);
/**
* @return List of all {@link ValueDomain}s representing this
* ConceptualDomain
*/
List<ValueDomain> getValueDomains();
/**
* Returns a {@link ValueDomain} of which unique ID is given
*
* @param valueDomainID
*/
ValueDomain getValueDomain(String valueDomainID);
/**
*
* @return whether the conceptual domain is enumerated.
*/
boolean isEnumeratedConceptualDomain();
}