I think the problem is that SPARQL/RDF value proposition is that it is
an extension of the WWW and builds on the URI/URL principle which
generally is seen as using / as a namespace separator so you would not
expect to have to do something special to process a URL
You seem to be conflating URIs with Prefixed Names, prefixed names are a convenience mechanism designed to allow you to write URIs down in more compact forms for human readability. As such they can't represent every possible URI without using escape characters for things that would otherwise be ambiguous in the grammar.
As Joshua Taylor's answer demonstrates the downside of this (in your opinion) is that you can't use relative URIs as-is with prefixed names which is merely a syntax limitation of SPARQL and other RDF serialisations that use similar syntactic constructs.
However we can naturally write down relative URIs without recourse to any special characters if we instead use a BASE
directive e.g.
BASE <http://www.me.org/root1/>
SELECT *
WHERE
{
?s ?p <level1/level2/etc> .
}
LIMIT 100
Note in this case we have to enclose the relative URI in < >
as we are using a URI rather than a prefixed name. Where the URI is relative a SPARQL processor will resolve it against the declared BASE
giving you the desired full URI without needing to use any escape characters.
This perhaps gives you something you consider a more natural fit?