We just completed another training class, and like they say, “no one learns more than the instructor.” In this case the blindingly obvious and yet elusive pattern that revealed itself was the separation of the sufficient from the necessary.
Until last week, while we had an intellectual understanding of the distinction between “necessary” and “necessary and sufficient” (and a very tenuous grip on sufficient but not necessarily necessary), we weren’t using the distinction consistently in our designs.
In the course of discussion, prompted by some questions in the class and elaborated in the bar (thank god for cocktail napkins), we were able to tease out the patterns of “sufficient” (technically, a superclass of a restriction) from necessary (a subclass of a restriction), and to line them up with some design patterns.
“Sufficient” is essentially the “rule in” pattern. For instance, having a child who is a human is sufficient to make you a human. But of course it is not necessary. Having a biologicallMother who is an animal is necessary as a Person, but not sufficient.
I’m going back to gist and factoring out the necessary from the sufficient.
Meanwhile, a reminder: last call for papers for next year’s Semantic Technology Conference. We’ve still got a few slots open.