It took a little while, but Gabe and I have worked through the ABNF and have a couple of comments/recommendations.
1. In xri-hier-part, iauthority is used. This allows an IRI authority that
can't be distinguished from an XRI authority. The problem is with the
iuserinfo part of iauthority -- @ihost is allowed. This could just as
easily be an XRI authority. Our recommendation is to use ihost (or a
similar production) instead of iauthority. We believe that the goal is to
allow authorities based on IP addresses and DNS names. It isn't clear that
keeping the iuserinfo part is meaningful in the context of XRI.
2. ireg-name (the production that is used to allow DNS names) allows strings that
are not legal DNS names. While IRI allows this, our opinion is that in XRI,
we should further restrict this to support only valid DNS names. This turns out
to be quite a chore, though, if we allow internationalized DNS names.
3. Is the absolute-XRI production just for parallelism with IRI? It's not clear
why we need it in XRI.
4. There doesn't seem to be a need to restrict the first segment in the path to
being a non-null segment. IRI needs to do this to avoid ambiguity, but the XRI
ABNF doesn't have this ambiguity. Our recommendation is to replace the
xri-path-absolute production as follows:
xri-path-absolute = "/" [ xri-segment ] *[ "/" xri-segment]
This would allow us to get rid of the xri-segment-nz and xri-subseg-od-nz
productions.
5. The ABNF explicitly disallows cross references as the first segment of a
relative XRI. This is due to allowing "xri://" to be optional.