Are you sure that this is the reason that the host refuses to load the plugin?
To test, I tried modifying the DSPModulePluginDemo to use the parameter IDs “input.gain” and “output.gain”. The resulting plugin loads fine in the AudioPluginHost (without emitting any turtle-related warnings from Lilv), in Carla 2.5.2, and in REAPER 6.71. I also tried pasting the generated dsp.ttl into some online TTL validators, and those didn’t raise any complaints.
It would be helpful to know the hosts you’ve used for testing, and any log/error output produced by those hosts.
Ah, to be precise it is . at the end. . in the middle is allowed, as per RDF 1.1 specification (PN_LOCAL) I confirmed with Zrythm, QTractor, JUCE AudioPluginHost. They all use lilv.
Dexed (the one I mentioned) has such a parameter whose name ends with . e.g. OSC KEY SYNC. and it results in this error. Here is what lilv within JUCE AudioPluginHost emits on the console: