Hi Garry,
This is expected behaviour.
The following line does the following things.
- It defines an adjective "ball" (via id 'ball_twine').
- It defines a noun "twine" (via id 'ball_twine').
- Every time it encounters the following text sequences "ball of twine", "ball" or "twine", it replaces the text sequence with the registered noun for the object, "twine".
ball_twine : object "a ball of twine" at = "room" {experimental_matching_text_sequences = ["ball of twine", "ball", "twine"]}
The long and the short of it is that every object needs a noun, and the last (non numeric) segment of the an object id is the noun.
Any text substitututions you register take precedence over parsing the sentence, therefore 'noun' will return the substituted version.
Chris