package tr.com.srdc.mdr.core.api.ai; import java.util.List; import tr.com.srdc.mdr.core.model.iso11179.ObjectClassResource; /** * An Object Class is a set of ideas, abstractions, or things in the real world * that can be identified with explicit boundaries and meaning and whose * properties and behavior follow the same rules. It may be either a single or a * group of associated concepts, abstractions, or things. An Object Class may be * a single unit of thought (i.e., {@link Concept}) or a set of Concepts in a * relationship with each other to form a more complex concept (i.e., * {@link ConceptRelationship}). A Concept and a Concept Relationship are * subtypes of an Object Class. Each Concept Relationship carries a concept * relationship type description that describes the nature of the relationship.<br> * As an {@link AdministeredItem}, an Object Class carries its own * Administration Record information, allowing it to be identified, named, * defined and optionally classified within a {@link ClassificationScheme}. An * Object Class may be registered as an Administered Item without necessarily * being associated with a {@link DataElementConcept} or, through the latter, a * {@link Property}. * * @author anil */ public interface ObjectClass extends AdministeredItem { @Override /** * @return the {@link ObjectClassResource} version this instance. */ ObjectClassResource asMDRResource(); /** * Create a {@link DataElementConcept} with this {@link ObjectClass} and * given {@link Property}. * * @param property * @return */ DataElementConcept createDataElementConcept(Property property, ConceptualDomain conceptualDomain, String definition); /** * Create a {@link DataElementConcept} with this {@link ObjectClass} and a * newly created {@link Property} with the given propertyName and * propertyDefinition. * * @param propertyName * @param propertyDefinition * @return */ DataElementConcept createDataElementConcept(String propertyName, String propertyDefinition, ConceptualDomain conceptualDomain, String definition); /** * Executes SPARQL Query to find {@link DataElementConcept}s created by * using this ObjectClass * * @return List of all DataElementConcept's having this */ List<DataElementConcept> getDataElementConcepts(); /** * * @param limit * Total number of results to be returned * @param offset * The initial point of the results * @return List of DataElementConcept's having this */ List<DataElementConcept> getDataElementConcepts(Integer limit, Integer offset); /** * Returns a {@link DataElementConcept} of which unique id is given * * @param id * unique identifier of in the repository * @return */ DataElementConcept getDataElementConcept(String id); /** * * @return total number of Data Element Concepts of this Object Class */ int getNumberOfDataElementConcepts(); /** * This method is used to create hierarchy between ObjectClass'es. * * @param parent * Optional. Sets given ObjectClass as a parent for this; if * given <code>null</code>, removes existing value */ void setParentConcept(ObjectClass parent); /** * @return the parent concept of this ObjectClass, in other way returns the * broader concept */ ObjectClass getParentConcept(); /** * Adds given ObjectClass as sub concept for this and sets given * ObjectClass'es parent as this * * @param oc */ void addSubConcept(ObjectClass oc); /** * @return List of all {@link ObjectClass}es whose parent concept is this */ List<ObjectClass> getSubConcepts(); }