Printing names of kind

Is there an easy way to print the name of a kind?

For example, I have a “weapon” kind and a bunch of generic weapons. I would like to write some code like this:

An armament is a kind of thing.  An armament has a number called durability. An armament has a material. Makeup relates a thing (called item) to a material (called stuff) when the material of the item is the stuff. The verb to be made of means the makeup relation.

Damage-type is a kind of value. The damage-types are piercing, bludgeoning, and slashing.

A weapon is a kind of armament.   A weapon has a damage-type. A weapon can be heavy, medium, or light (this is its encumbrance property).  A weapon can be 1H, 2H, or bastard (this is its handedness property).

A sword is a kind of 1H slashing medium weapon. 
A warhammer is a kind of 1H bludgeoning medium weapon.
A greataxe is a kind of 2H slashing heavy weapon.
A maul is a kind of 2H bludgeoning heavy weapon.
A dagger is a kind of 1H piercing light weapon.
A knife is a kind of 1H slashing light weapon.
A spear is a kind of 2H piercing medium weapon.

The description of a weapon (called blade) is usually "This is a [kind of the blade] made of [material of the blade]. It is meant for [damage-type of the blade] things."

The first four blocks work well enough. The last does not.

[Edit: include sample weapon definitions]

The easiest way is to define a property and then add lines like

The kind-name of a knife is usually “knife”.

Writing with Inform 16.16 and 16.17 look like they might explain how to do what you want using tables.

Sorted this in the thread [url=https://intfiction.org/t/saying-the-kind-of-a-thing/7879/1] based on code at [url=https://intfiction.org/t/tables-and-kinds/2422/11]
Basically add:

An object type is a kind of value. To decide what object type is the type of (O - an object): (- ({O}.2) -). To say (T - an object type): (- print (I7_Kind_Name){T}; -).

Then you can use:

say "This noun is a [type of the noun]"