[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Stable XRI 1.1 ABNF
XRI TC Members and Observers,
Although the XRI Editors SC members have individually been swamped of late,
we finally found time to complete the loop on the proposed XRI 1.1 ABNF. The
following has a refined xri-path production and corrected an oversight that
hawk-eyed Dave McAlpin found where the xri-path-noscheme production allowed
colons in subsegments after the first subsegment; this is now disallowed
using the xri-subseg-nc production.
Thus we have reached a stable state where there are currently no remaining
issues among the XRI Editors SC members with this ABNF (that we know of -
Gabe is actually out of town on personal time and still needs to review it.)
Please look it over and send any feedback to the list ASAP, as we are now
embarking on the job of drafting the formal spec, and we'd obviously like to
do that around stable ABNF.
For those who prefer a Web page view, the following is also posted at
http://xrixdi.idcommons.net/moin.cgi/Xri1dot1ProposedAbnfv2.
Thanks,
=Drummond
== XRI 1.1 Specific Productions ==
XRI = [ "xri://" ] xri-hier-part [ "?" xri-query ] [ "#"
xri-fragment ]
xri-hier-part = ( xri-authority / iauthority ) [ xri-path-absolute ]
/ ipath-empty
XRI-reference = XRI
/ relative-XRI
absolute-XRI = [ "xri://" ] xri-hier-part [ "?" xri-query ]
relative-XRI = xri-path [ "?" xri-query ] [ "#" xri-fragment ]
xri-authority = xref-authority
/ gcs-authority
xref-authority = xref *xri-subseg
gcs-authority = gcs-char xri-segment
xri-path = xri-path-absolute
/ xri-path-noscheme
/ ipath-empty
xri-path-absolute = "/" [ xri-segment-nz *( "/" xri-segment ) ]
xri-path-noscheme = xri-subseg-od-nx *xri-subseg-nc *( "/" xri-segment )
xri-segment = xri-subseg-od *xri-subseg
xri-segment-nz = xri-subseg-od-nz *xri-subseg
xri-subseg = ( "*" / "!" ) (xref / *xri-pchar)
xri-subseg-nc = ( "*" / "!" ) (xref / *xri-pchar-nc)
xri-subseg-od = [ "*" / "!" ] (xref / *xri-pchar)
xri-subseg-od-nz = [ "*" / "!" ] (xref / 1*xri-pchar)
xri-subseg-od-nx = [ "*" / "!" ] 1*xri-pchar-nc
xref = "(" ( XRI-reference / IRI ) ")"
gcs-char = "=" / "@" / "+" / "$" / "!"
xri-pchar = xri-unreserved / pct-encoded / xri-sub-delims
/ ":"
xri-pchar-nc = xri-unreserved / pct-encoded / xri-sub-delims
xri-query = *( xri-pchar / iprivate / "/" / "?"
/ "@" / "(" / ")" / "!" / "$" / "*" / "+" / "=" )
xri-fragment = *( xri-pchar / "/" / "?"
/ "@" / "(" / ")" / "!" / "$" / "*" / "+" / "=" )
xri-reserved = xri-gen-delims / xri-sub-delims
xri-gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "("
/ ")" / "*" / gcs-char
xri-sub-delims = "&" / ";" / "," / "'"
xri-unreserved = unreserved / ucschar
== IRI Productions (inherited from the Internationalized Resource Identifier
spec) ==
IRI = scheme ":" ihier-part [ "?" iquery ]
[ "#" ifragment ]
scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
ihier-part = "//" iauthority ipath-abempty
/ ipath-abs
/ ipath-rootless
/ ipath-empty
iauthority = [ iuserinfo "@" ] ihost [ ":" port ]
iuserinfo = *( iunreserved / pct-encoded / sub-delims / ":" )
ihost = IP-literal / IPv4address / ireg-name
IP-literal = "[" ( IPv6address / IPvFuture ) "]"
IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
IPv6address = 6( h16 ":" ) ls32
/ "::" 5( h16 ":" ) ls32
/ [ h16 ] "::" 4( h16 ":" ) ls32
/ [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
/ [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
/ [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
/ [ *4( h16 ":" ) h16 ] "::" ls32
/ [ *5( h16 ":" ) h16 ] "::" h16
/ [ *6( h16 ":" ) h16 ] "::"
ls32 = ( h16 ":" h16 ) / IPv4address
h16 = 1*4HEXDIG
IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet = DIGIT ; 0-9
/ %x31-39 DIGIT ; 10-99
/ "1" 2DIGIT ; 100-199
/ "2" %x30-34 DIGIT ; 200-249
/ "25" %x30-35 ; 250-255
ireg-name = *( iunreserved / pct-encoded / sub-delims )
port = *DIGIT
ipath-abempty = *( "/" isegment )
ipath-abs = "/" [ isegment-nz *( "/" isegment ) ]
ipath-rootless = isegment-nz *( "/" isegment )
ipath-empty = 0<ipchar>
isegment = *ipchar
isegment-nz = 1*ipchar
iquery = *( ipchar / iprivate / "/" / "?" )
iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD
ifragment = *( ipchar / "/" / "?" )
ipchar = iunreserved / pct-encoded / sub-delims / ":"
/ "@"
iunreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" / ucschar
pct-encoded = "%" HEXDIG HEXDIG
ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF /
%x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD /
%x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD /
%x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD /
%xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD /
%xD0000-DFFFD / %xE1000-EFFFD
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]