OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xri message

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