tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Glossaries     Architecture     IMS     UICC    |    search     info

ABNF grammars

|   SIP_Messages   |   SIP_URIs   |   SIP_Headers   |   SIP_Private_Headers   |   SIP_Response_Codes   |   SIP_basic_rules   |   SIP_common_rules   |   SDP_Session_Description   |   SDP_Attributes   |   RFC723x_HTTP_1.1   |   RFC3986_Generic_URI   |   RFC3987_IRI   |   RFC5322_IMF   |   RFC4975_MSRP   |   draft2326bis_RTSP_2.0   |   RFC5234_ABNF_Notation   |

IRI (Internationalized Resource Identifier) Syntax – RFC 3987

RFC 3987 defines a new protocol element, the Internationalized Resource Identifier (IRI), as a complement to the Uniform Resource Identifier (URI). An IRI is a sequence of characters from the Universal Character Set (Unicode/ISO 10646). A mapping from IRIs to URIs is defined, which means that IRIs can be used instead of URIs, where appropriate, to identify resources.


IRI   =
scheme   ":"   ihier-part   [ "?"   iquery ]   [ "#"   ifragment ]

ihier-part   =
IRI-reference   =
absolute-IRI   =
scheme   ":"   ihier-part   [ "?"   iquery ]

irelative-ref   =
irelative-part   [ "?"   iquery ]   [ "#"   ifragment ]

irelative-part   =
iauthority   =
[ iuserinfo   "@" ]   ihost   [ ":"   port ]

iuserinfo   =
*( iunreserved  /  pct-encoded  /  sub-delims  /  ":" )

ihost   =
ireg-name   =
ipath   =
ipath-abempty  /     ;  begins with "/" or is empty
ipath-absolute  /     ;  begins with "/" but not "//"
ipath-noscheme  /     ;  begins with a non-colon segment
ipath-rootless  /     ;  begins with a segment
ipath-empty     ;  zero characters

ipath-abempty   =
*( "/"   isegment )

ipath-absolute   =
"/"   [ isegment-nz   *( "/"   isegment ) ]

ipath-noscheme   =
isegment-nz-nc   *( "/"   isegment )

ipath-rootless   =
isegment-nz   *( "/"   isegment )

ipath-empty   =
0<ipchar>

isegment   =
isegment-nz   =
1*ipchar

isegment-nz-nc   =
1*( iunreserved  /  pct-encoded  /  sub-delims  /  "@" )
; non-zero-length segment without any colon ":"

ipchar   =
iunreserved  /  pct-encoded  /  sub-delims  /  ":"  /  "@"

iquery   =
*( ipchar  /  iprivate  /  "/"  /  "?" )

ifragment   =
*( ipchar  /  "/"  /  "?" )

iunreserved   =
ALPHA  /  DIGIT  /  "-"  /  "."  /  "_"  /  "~"  /  ucschar

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

iprivate   =
%xE000-F8FF  /
%xF0000-FFFFD  /
%x100000-10FFFD