Return true if
- s is the base schema for the XXXSchema class this schema is
an instance of (e.g. s is ConceptSchema.getBaseSchema() and this
schema is an instance of ConceptSchema)
- s is the base schema for a super-class of the XXXSchema class
this schema is an instance of (e.g. s is TermSchema.getBaseSchema()
and this schema is an instance of ConceptSchema)

For each slot
- get the corresponding attribute value from the abstract descriptor
abs
- Check that it is not null if the slot is mandatory
- Check that its schema is compatible with the schema of the slot
- Check that it is a correct abstract descriptor by validating it
against its schema.

add

Add a slot with cardinality between cardMin
and cardMax to this schema.
Adding such a slot corresponds to add a slot
of type Aggregate and then to add proper facets (constraints)
to check that the type of the elements in the aggregate are
compatible with elementsSchema and that the
aggregate contains at least cardMin elements and
at most cardMax elements. By default the Aggregate
is of type BasicOntology.SEQUENCE.

addSuperSchema

Adds a super-schema to this schema. This allows defining
inheritance relationships between ontological predicates.
It must be noted that a predicate always inherits from another
predicate --> A super-schema of a PredicateSchema
must be a PredicateSchema too.

descendsFrom

Return true if
- s is the base schema for the XXXSchema class this schema is
an instance of (e.g. s is ConceptSchema.getBaseSchema() and this
schema is an instance of ConceptSchema)
- s is the base schema for a super-class of the XXXSchema class
this schema is an instance of (e.g. s is TermSchema.getBaseSchema()
and this schema is an instance of ConceptSchema)

add

Add a slot with cardinality between cardMin
and cardMax to this schema.
Adding such a slot corresponds to add a slot
of type Aggregate and then to add proper facets (constraints)
to check that the type of the elements in the aggregate are
compatible with elementsSchema and that the
aggregate contains at least cardMin elements and
at most cardMax elements. By default the Aggregate
is of type BasicOntology.SEQUENCE.

validateSlots

For each slot
- get the corresponding attribute value from the abstract descriptor
abs
- Check that it is not null if the slot is mandatory
- Check that its schema is compatible with the schema of the slot
- Check that it is a correct abstract descriptor by validating it
against its schema.

isCompatibleWith

Check if this schema is compatible with a given schema s.
This is the case if
1) This schema is equals to s
2) s is one of the super-schemas of this schema
3) This schema descends from s i.e.
- s is the base schema for the XXXSchema class this schema is
an instance of (e.g. s is ConceptSchema.getBaseSchema() and this
schema is an instance of ConceptSchema)
- s is the base schema for a super-class of the XXXSchema class
this schema is an instance of (e.g. s is TermSchema.getBaseSchema()
and this schema is an instance of ConceptSchema)

getFacets

Retrieves the facets defined upon a slot. More in details this method returns
all facets defined in this schema plus all facets defined in super-schemas
up to the schema actually declaring the given slot.

isAssignableFrom

This method checks whether or not an abstract object that is an instance
of schema s can be used in place of an abstract object that is an instance
of this schema.
Note that unlike the method isCompatibleWith() that
perform "ontological" checks (i.e. they are related to the reference ontology),
this method only performs a structural check on the slots regardless of the fact
that the two schemas belong to the same ontology or not.