Hi,
Your assertion is correct, but I just wanted to clarify nodes, types, aspects and properties here…
Every node stored in the repository can support zero or more properties. For example, each folder created in the alfresco web client is stored as a node with a property called name (along with other properties too).
A model provides meta-data describing the property values that can be assigned to a node. Each property value may be data-typed, given a default etc. It also describes how nodes can be associated to each other. In effect, a model constrains what is otherwise a very free network of nodes and associated properties held in the repository.
Each model consists of type and aspect definitions. Each type and aspect can support zero or more property definitions (as well as associations etc) where the name, data-type, default value etc is declared.
A node is tied to a model via its primary type and aspects (also known as mixins in JSR-170 speak). A node must be of a single primary type (which is designated at node creation). On top of that, a node may also be designated zero or more aspects.
Typically, aspects are defined when it is known that a section of meta-data can be applied across a type model. For example, to represent folders and files, the types Folder and File can be declared with their specific property and association definitions. When a node is created, it's either a Folder or File (the primary type). On top of that, to represent services that cut-across both Folder and File, an aspect is declared e.g. Lock which declares properties such as the lock type and lock owner. The Folder and File nodes can then be assigned the Lock aspect. So, a general lock service can treat any node that is assigned the Lock aspect in a consistent manner.
We do exactly the above to support services such as Lock, Version, Translation, Categorisation etc; services which may apply to any type model.
You can think of types and aspects as Classes and Interfaces in Java.
Let me know if that clears it up.