So what you are saying is basically that the part inside the {} must contain at least one InvalidChar (https://docs.adobe.com/docs/en/spec/jcr/2.0/3_Repository_Model.html#3.2%20Names <https://docs.adobe.com/docs/en/spec/jcr/2.0/3_Repository_Model.html#3.2 Names>) to make Jackrabbit/Oak detect it as a expanded name? Why was the default namespace URI then defined as the empty string? That sounds like a mistake to me.
Currently I cannot even do NameParser.parse() (https://github.com/apache/jackrabbit/blob/b23d6734381e49f236c3705820126803555608b5/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/conversion/NameParser.java#L53 <https://github.com/apache/jackrabbit/blob/b23d6734381e49f236c3705820126803555608b5/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/conversion/NameParser.java#L53>) for name = "wrongtype". It throws an IllegalArgumentException: java.lang.IllegalArgumentException: No namespaceURI specified at org.apache.jackrabbit.spi.commons.name.NameFactoryImpl.create(NameFactoryImpl.java:49) at org.apache.jackrabbit.spi.commons.conversion.NameParser.parse(NameParser.java:191) with jackrabbit-spi-commons 2.20.0. "wrongtype" is IMHO a totally valid qualified name, therefore it shouldn't throw! Is this a bug? Konrad > On 11. Feb 2020, at 15:40, Julian Reschke <julian.resc...@gmx.de> wrote: > > On 11.02.2020 12:17, Konrad Windszus wrote: >> What should be the expanded name for the qualified name "foo" (without URI >> prefix) then? > > One could either say that there is none (and you don't need one), or > that it is "foo" (and raise a bug against the spec to say that missing > leading "{..." in an expanded name implies the empty namespace. > >> What namespace URI should be used then? > > If "foo" is in no namespace, and you need a namespace name, it would be > the empty string. > >> I am now totally lost to be honest. > > Yes, it's confusing. > > It's because in JCR 2.0, expanded names were introduced as an alternate > name notation, and we had to find a way not to let expanded names to > conflict with qualified names. > > The only way to make this work was to require the namespace name not to > be empty and to be a valid URI (which implies there's at least one ":" > in the namespace name). > > Best regards, Julian