Property Collection
Collection is a subtle but important concept. A Property Value isn't necessarily one of a
Type -- it can take several forms, and you have to say which one it is. As of this writing, the
available Collections are:
- Required -- the most common case, where the Property holds one of this Type. Note that this means
that it always holds one of this type; if you don't give it a value, it will be set to a default.
- Optional -- the Property may or may not hold a value of this Type. Use Optional when it makes sense
for a Thing to have the Property but not have it filled in. It is very common for a Model to have an
Optional Property, which its Instances can choose to fill in when it makes sense.
- List -- the Property holds an ordered list of this Type. You most often use List with Links. Note that
you can rearrange the List using drag-and-drop, and duplicates are allowed.
- Set -- the Property holds an unordered set of this Type. You most often use Set with Tags. Duplicates
will be silently thrown away, and order is not preserved; Sets are usually shown in alphabetical order.
When you create a Property, you must choose which Collection it uses. If you aren't sure, it is usually
best to go for Optional, but you should use any of these when they make sense.