Hi Ed,
I agree much with the thrust of your complaint. I'm thinking that
the underspecification implicit in a role like 'Teacher' is at the
root of a few of the problems you're citing. It surely wouldn't be a
recommended practice to subtype Person with Teacher! A computer
program can be a teacher too in an educational setting, but surely
can never be an assigned-person-to-teacher-role. Anyway, there are
different names for such assigned persons, eg Staff Teacher,
Substitute Teacher, Special Teacher, Summer Instructor, and so on,
rarely just Teacher. It'd sure be interesting to see a hierarchy of
Role meta-classes that reflect these different types, eg GenericRole,
InheritedRole and AssignedRole to name a few.
/jmc
On 2/25/2014 10:08 AM, Barkmeyer,
Edward J wrote:
Of
the above, as a type, only (5) is properly a subtype of whatever
kind of thing plays the role. It is a common error to see type
(2),(3),(4) roles modeled as subtypes of the class of
individuals that can play the role. Teacher, defined as in (5),
is a subtype of person. ‘teacher of (c)’ where c is a class,
i.e., ‘teacher’ as a (2), is not a subtype of person; it is a
role of person with respect to a ‘given’ class c. (teacher(2)
is not a unary predicate, it is a function.) It “becomes” a (5)
when you ‘give’ the class c, either as a constant or as an
existential, i.e., when you fill the (c) argument slot.
‘Principal’ is a (4). It is not a subtype of ‘person’; it is a
subtype of ‘organizational position’ and it is related to
‘person’ by something like ‘job of (person)’. But there is also
a role (5) ‘School Principal’, which is the class of persons who
hold, or have held, those positions.
|