[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]