And there is Door Equipment

I agree with @JustinG. This just isn’t something that the semantic model can capture. Item metadata is the easiest approach I can think of.

In my rule templates that depend on Item metadata, The actual namespace is a property the end user fills in while configuring the rule which allows the end user to use what ever makes sense to them (of course there is a default also).

Then if the rule gets manually triggered (i.e. the event Object doesn’t exist) instead of doing the work of the rule, it goes through all the Items and configs and verifies they are configured correctly and generate a meaningful and actionable error message if a problem is found. For example, check that all the Door tagged Items have the metadata and the metadata is usable. Debounce [4.0.0.0;5.9.9.9] is a good example of this. The relevant code is at the bottom:

        if(this.event === undefined) {
          init();
        }

        else {
          switch(event.type) {
            case 'GroupItemStateChangedEvent':
            case 'ItemStateEvent':
            case 'ItemStateChangedEvent':
            case 'ItemCommandEvent':
              debounce();
              break;
            default:
              init();
          }
        }

The init() function is where the config checking takes place.