Skip to content
EN FR

Concepts, instances and interfaces

Documentation status: reference — see Maturity and evidence.

A concept declaration defines a conceptual type. Runtime instances are occurrences of that type. Interface attachment adds a conceptual view over an existing support without replacing its identity.

Concept and instance

define .:#WorkItem(me)[title::#string];
#task42:#WorkItem[title='Review proposal'];

The class/model declaration and the semantic concept declaration are distinct responsibilities. A model classified as an Entity must still declare its semantic Entity participation when it needs to participate in conceptual registration, implication and reasoning.

: versus ::

#alice:#Person;
#alice::#Customer;

: declares or types a term. :: attaches an interface to an existing support. The second form does not destructively retype #alice; it adds a conceptual interface whose distinguished support is the existing object.

define .:#Auditable(me)[auditLevel::#integer];
doc42::#Auditable;
auditBox:#Auditable(doc42)[auditLevel=2];

The named auditBox form is useful when the attached interface instance itself must be addressed.

Structural use requires a defined type

Forward annotations may be accepted in limited positions, but structural application, interface attachment and argument use require a known definition. Define a structural type before using it as an applied concept.

Design rule

Keep business identity, conceptual identity and persistence identifiers separate. Do not add a literal Me field to application metadata merely to imitate H-Logic notation.