What is the difference between a component and a profile in CMDI?

Components are reusable subsets of metadata blueprints, while profiles represent the complete blueprint for a metadata record. Both profiles and components are made up out of elements, attributes and components. However a profile cannot be used as part of a component.

At a technical level and in terms of their definition, there is no real difference other than usage. A profile is essentially a component that can be converted into an XSD file. A normal component can only be used within other components or profiles and can never be transformed into an XSD.

The isProfile="true" attribute indicates that a ComponentSpec defines a profile and not just a component.