http://git-wip-us.apache.org/repos/asf/jena/blob/36855e1b/jena-iri/src/main/java/org/apache/jena/iri/ViolationCodes.java ---------------------------------------------------------------------- diff --git a/jena-iri/src/main/java/org/apache/jena/iri/ViolationCodes.java b/jena-iri/src/main/java/org/apache/jena/iri/ViolationCodes.java new file mode 100644 index 0000000..1174302 --- /dev/null +++ b/jena-iri/src/main/java/org/apache/jena/iri/ViolationCodes.java @@ -0,0 +1,7618 @@ + + + + + /* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + AUTOGENERATED FILE: DO NOT EDIT + */ + + +package org.apache.jena.iri; + +import org.apache.jena.iri.impl.ViolationCodeInfo; + +import org.apache.jena.iri.impl.ViolationCodeInfo.InSpec; +import org.apache.jena.iri.impl.ViolationCodeInfo.FromSpec_iri; +import org.apache.jena.iri.impl.ViolationCodeInfo.FromSpec_other; +import org.apache.jena.iri.impl.ViolationCodeInfo.FromSpec_scheme; +import org.apache.jena.iri.impl.ViolationCodeInfo.FromAlso; +import org.apache.jena.iri.impl.Specification; +import org.apache.jena.iri.impl.SchemeSpecification; +import org.apache.jena.iri.impl.Force; + +/** + * Detailed description of problems detected. + * This interface lists the codes returned by + * {@link Violation#getViolationCode()}. + * Note: not all are errors, some merely reflect internal workings. + + <p>The violations are evaluated against the following standards: + </p> + <dl> + + <dt><a name="ref-RDF">[RDF]</a> + + </dt> + <dd><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-URIref"> + +Resource Description Framework (RDF): +Concepts and Abstract Syntax + + (section RDF URI References) + </a> + </dd> + + <dd> + The SCHEME component is required.<br> + + <br> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>foo/bar</code>></li> + + <li><<code>#frag</code>></li> + + <li><<code>//example.org/foo/bar#frag</code>></li> + + </ul> + + </dd> + + <dt><a name="ref-URI">[URI]</a> + + RFC 3986 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3986.html"> + Uniform Resource Identifier (URI): Generic Syntax</a> + </dd> + + <dt><a name="ref-Unicode">[Unicode]</a> + + </dt> + <dd><a href="http://www.unicode.org/"> + Unicode</a> + </dd> + + <dt><a name="ref-IRI">[IRI]</a> + + RFC 3987 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3987.html"> + Internationalized Resource Identifiers (IRIs)</a> + </dd> + + <dt><a name="ref-XML">[XML]</a> + + </dt> + <dd><a href="http://www.w3.org/TR/2004/REC-xml-20040204/#dt-sysid"> + Extensible Markup Language (XML) 1.0 (Third Edition) + (section system identifier) + </a> + </dd> + + <dd> + The FRAGMENT component must be omitted.<br /> + + </dd> + + <dt><a name="ref-XLink">[XLink]</a> + + </dt> + <dd><a href="http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators"> + XML Linking Language (XLink) Version 1.0 + (section Locator Attribute (href)) + </a> + </dd> + + <dt><a name="ref-Schema">[Schema]</a> + + </dt> + <dd><a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI"> + XML Schema Part 2: Datatypes Second Edition + (section anyURI) + </a> + </dd> + + </dl> + + <p>Scheme specific checks are enabled. The syntax of the following schemes is fully supported: + </p> + <dl> + + <dt><a name="ref-http">[http]</a> + + RFC 2616 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2616.html"> + Hypertext Transfer Protocol -- HTTP/1.1</a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc2616.html#sec-3.2.2">section 3.2.2</a> + </dt> + <dd> + + <pre> +http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] +</pre> + + + </dd> + + </dl> + </dd> + + <dd> + <br/> + This scheme requires the use of hostnames conforming to DNS syntax. + The IDNA compatibile processing of IRIs for this scheme is enabled if this scheme is enabled. + To disable this behaviour, this scheme has to be disabled using // TODO how to disable scheme + and DNS compatibile rules have to be disabled using {@link IRIFactory#dnsViolation}. + + The default port is 80.<br /> + + The USER component must be omitted.<br /> + + The HOST component is required.<br /> + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>http://www.example.org/foo/bar</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>http://www.example.org:80/foo/bar</code>></li> + + <li><<code>http:foo/bar</code>></li> + + <li><<code>http://[email protected]/foo/bar</code>></li> + + </ul> + + </dd> + + <dt><a name="ref-https">[https]</a> + + RFC 2818 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2818.html"> + Hypertext Transfer Protocol Secure</a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc2818.html#sec-2.4">section 2.4</a> + </dt> + <dd> +HTTP/TLS is differentiated from HTTP URIs by using the 'https' protocol identifier in place of the 'http' protocol identifier. + + </dd> + + <dt> + See <a href="#ref-http"> + [http]</a>, specifically, + <a href="http://www.apps.ietf.org/rfc/rfc2818.html#sec-3.2.2">section 3.2.2</a> + </dt> + <dd> + + <pre> +http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] +</pre> + + + </dd> + + </dl> + </dd> + + <dd> + <br/> + This scheme requires the use of hostnames conforming to DNS syntax. + The IDNA compatibile processing of IRIs for this scheme is enabled if this scheme is enabled. + To disable this behaviour, this scheme has to be disabled using // TODO how to disable scheme + and DNS compatibile rules have to be disabled using {@link IRIFactory#dnsViolation}. + + The default port is 443.<br /> + + The USER component must be omitted.<br /> + + The HOST component is required.<br /> + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>https://www.example.org/foo/bar</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>https://www.example.org:443/foo/bar</code>></li> + + <li><<code>https:foo/bar</code>></li> + + <li><<code>https://[email protected]/foo/bar</code>></li> + + </ul> + + </dd> + + <dt><a name="ref-ftp">[ftp]</a> + + RFC 1738 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.2"> + File Transfer Protocol + (section 3.2) + </a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-5">section 5</a> + </dt> + <dd> + + <pre> +ftpurl = "ftp://" login [ "/" fpath [ ";type=" ftptype ]] +fpath = fsegment *[ "/" fsegment ] +fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] +ftptype = "A" | "I" | "D" | "a" | "i" | "d" +</pre> + + + <pre> +login = [ user [ ":" password ] "@" ] hostport +</pre> + + + <pre> +safe = "$" | "-" | "_" | "." | "+" +extra = "!" | "*" | "'" | "(" | ")" | "," +escape = "%" hex hex +unreserved = alpha | digit | safe | extra +uchar = unreserved | escape +</pre> + + + </dd> + + </dl> + </dd> + + <dd> + <br/> + This scheme requires the use of hostnames conforming to DNS syntax. + The IDNA compatibile processing of IRIs for this scheme is enabled if this scheme is enabled. + To disable this behaviour, this scheme has to be disabled using // TODO how to disable scheme + and DNS compatibile rules have to be disabled using {@link IRIFactory#dnsViolation}. + + The default port is 21.<br /> + + The HOST component is required.<br /> + + The PATHQUERY component: + <ul> + <li> + is required to match the regular expression: [^;~]*(;@{mustLowerCase(type)}=@{shouldLowerCase([aid])}|) + </li> + <li> + may use ~; as sub-delimiters, and care must + be taken when percent escaping or unescaping these delimiters to not disrupt + the scheme specific syntax. + </li> + </ul> + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>ftp://[email protected]/foo/bar;type=d</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>ftp:///foo/bar</code>></li> + + <li><<code>ftp://[email protected]/foo/bar;type=z</code>></li> + + <li><<code>ftp://[email protected]/foo/b;ar;type=d</code>></li> + + </ul> + + </dd> + + <dt><a name="ref-news">[news]</a> + + RFC 1738 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.6"> + USENET news + (section 3.6) + </a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-5">section 5</a> + </dt> + <dd> + + <pre> +newsurl = "news:" grouppart +grouppart = "*" | group | article +group = alpha *[ alpha | digit | "-" | "." | "+" | "_" ] +article = 1*[ uchar | ";" | "/" | "?" | ":" | "&" | "=" ] "@" host +</pre> + + + <pre> +safe = "$" | "-" | "_" | "." | "+" +extra = "!" | "*" | "'" | "(" | ")" | "," +escape = "%" hex hex +unreserved = alpha | digit | safe | extra +uchar = unreserved | escape +</pre> + + + </dd> + + </dl> + </dd> + + <dd> + The AUTHORITY component must be omitted.<br /> + + The PATH component is required.<br /> + + The PATHQUERY component: + <ul> + <li> + is required to match the regular expression: [^@]+@@{host}|[*]|[a-zA-Z][-a-zA-Z0-9.+_]* + </li> + <li> + may use ~@ as sub-delimiters, and care must + be taken when percent escaping or unescaping these delimiters to not disrupt + the scheme specific syntax. + </li> + </ul> + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>news:*</code>></li> + + <li><<code>news:group.it</code>></li> + + <li><<code>news:[email protected]</code>></li> + + <li><<code>news:[email protected]</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>news:[email protected]\u00E7.org</code>></li> + + <li><<code>news:[email protected]\u00E7.org</code>></li> + + <li><<code>news:///foo/bar</code>></li> + + <li><<code>news://[email protected]/foo</code>></li> + + </ul> + + </dd> + + <dt><a name="ref-nntp">[nntp]</a> + + RFC 1738 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.7"> + USENET news using NNTP access + (section 3.7) + </a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-5">section 5</a> + </dt> + <dd> + + <pre> +nntpurl = "nntp://" hostport "/" group [ "/" digits ] +</pre> + + + <pre> +group = alpha *[ alpha | digit | "-" | "." | "+" | "_" ] +</pre> + + + </dd> + + </dl> + </dd> + + <dd> + <br/> + This scheme requires the use of hostnames conforming to DNS syntax. + The IDNA compatibile processing of IRIs for this scheme is enabled if this scheme is enabled. + To disable this behaviour, this scheme has to be disabled using // TODO how to disable scheme + and DNS compatibile rules have to be disabled using {@link IRIFactory#dnsViolation}. + + The default port is 119.<br /> + + The QUERY component must be omitted.<br /> + + The USER component must be omitted.<br /> + + The HOST component is required.<br /> + + The PATH component + is required to match the regular expression: /[a-zA-Z][-a-zA-Z0-9.+_]*(/[0-9]+)? + <br/> + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>nntp://example.org/foo4</code>></li> + + <li><<code>nntp://example.org/foo/4</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>nntp://[email protected]/foo</code>></li> + + <li><<code>nntp:/foo</code>></li> + + <li><<code>nntp:///foo</code>></li> + + <li><<code>nntp://example.org/foo/4/3</code>></li> + + <li><<code>nntp://example.org/</code>></li> + + <li><<code>nntp://example.org/foo/</code>></li> + + <li><<code>nntp://example.org/*</code>></li> + + </ul> + + </dd> + + <dt><a name="ref-file">[file]</a> + + RFC 1738 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.10"> + Host-specific file names + (section 3.10) + </a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc1738.html#sec-5">section 5</a> + </dt> + <dd> + + <pre> +fileurl = "file://" [ host | "localhost" ] "/" fpath +</pre> + + + <pre> +fpath = fsegment *[ "/" fsegment ] +fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] +</pre> + + + <pre> +safe = "$" | "-" | "_" | "." | "+" +extra = "!" | "*" | "'" | "(" | ")" | "," +escape = "%" hex hex +unreserved = alpha | digit | safe | extra +uchar = unreserved | escape +</pre> + + + </dd> + + </dl> + </dd> + + <dd> + <br/> + This scheme requires the use of hostnames conforming to DNS syntax. + The IDNA compatibile processing of IRIs for this scheme is enabled if this scheme is enabled. + To disable this behaviour, this scheme has to be disabled using // TODO how to disable scheme + and DNS compatibile rules have to be disabled using {@link IRIFactory#dnsViolation}. + + The USER component must be omitted.<br /> + + The PORT component must be omitted.<br /> + + The PATH component is required.<br /> + + The AUTHORITY component is required.<br /> + + The PATHQUERY component: + <ul> + <li> + is required to match the regular expression: [^;~]* + </li> + <li> + may use ~; as sub-delimiters, and care must + be taken when percent escaping or unescaping these delimiters to not disrupt + the scheme specific syntax. + </li> + </ul> + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>file:///foo/b</code>></li> + + <li><<code>file:///foo/b?ar/yuk</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>file://[email protected]/foo/bar</code>></li> + + <li><<code>file://eg:4029/foo/bar</code>></li> + + <li><<code>file:/foo/bar</code>></li> + + <li><<code>file://example.org</code>></li> + + <li><<code>file://foo/bar;t</code>></li> + + <li><<code>file://foo/~jjc</code>></li> + + </ul> + + </dd> + + </dl> + + + <p>The syntax of the following schemes is partially supported: + </p> + <dl> + + <dt><a name="ref-mailto">[mailto]</a> + + RFC 2368 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2368.html"> + Electronic mail address</a> + </dd> + + <dd> + The AUTHORITY component must be omitted.<br /> + + </dd> + + <dt><a name="ref-urn">[urn]</a> + + RFC 2141 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2141.html"> + Uniform Resource Names</a> + </dd> + + <dd> + Pertinent text from the specification includes: + <br /> + <dl> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc2141.html#sec-2">section 2</a> + </dt> + <dd> + All URNs have the following syntax (phrases enclosed in quotes are REQUIRED): + + <pre> +<URN> ::= "urn:" <NID> ":" <NSS> +</pre> + + + </dd> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc2141.html#sec-2.1">section 2.1</a> + </dt> + <dd> + + <pre> +<NID> ::= <let-num> [ 1,31<let-num-hyp> ] + +<let-num-hyp> ::= <upper> | <lower> | <number> | "-" + +<let-num> ::= <upper> | <lower> | <number> +</pre> + + + </dd> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc2141.html#sec-2.2">section 2.2</a> + </dt> + <dd> + + <pre> +<NSS> ::= 1*<URN chars> + +<URN chars> ::= <trans> | "%" <hex> <hex> + +<trans> ::= <upper> | <lower> | <number> | <other> | <reserved> + +<other> ::= "(" | ")" | "+" | "," | "-" | "." | + ":" | "=" | "@" | ";" | "$" | + "_" | "!" | "*" | "'" +</pre> + + + </dd> + + <dt> + See + <a href="http://www.apps.ietf.org/rfc/rfc2141.html#sec-2.3.2">section 2.3.2</a> + </dt> + <dd> +RFC 1630 [2] reserves the characters "/", "?", and "#" for particular purposes. +The URN-WG has not yet debated the applicability and precise semantics of those +purposes as applied to URNs. Therefore, these characters are RESERVED for future +developments. Namespace developers SHOULD NOT use these characters in unencoded form, +but rather use the appropriate %-encoding for each character. + + </dd> + + </dl> + </dd> + + <dd> + The AUTHORITY component must be omitted.<br /> + + The QUERY component must be omitted.<br /> + + The PATH component is required.<br /> + + The PATH component: + <ul> + <li> + is required to match the regular expression: (?![uU][rR][nN]:)[a-zA-Z0-9][-a-zA-Z0-9]{1,31}:[^/~]+ + </li> + <li> + may use /~ as sub-delimiters, and care must + be taken when percent escaping or unescaping these delimiters to not disrupt + the scheme specific syntax. + </li> + </ul> + <br/>TODO: case of NIS<br/>TODO: + registry of URNs, implement something of the NSS with Namespace specific rules. + <br/>TODO: + To avoid confusion with the "urn:" identifier, the NID "urn" is reserved and MUST NOT be used. + <br/>TODO: e-mail about frags in URNs<br/>TODO: +In addition, octet 0 (0 hex) should NEVER be used, in either unencoded or %-encoded form. + + <br/> + The following are examples of well-formed IRIs using this scheme: + <ul> + + <li><<code>urn:x-hp:foo\u00E9</code>></li> + + <li><<code>urn:urn-1:foo</code>></li> + + </ul> + + <br/> + The following are examples of ill-formed IRIs using this scheme: + <ul> + + <li><<code>urn:x-hp:foo/bar</code>></li> + + <li><<code>urn:urn:foo</code>></li> + + <li><<code>urn://foo</code>></li> + + <li><<code>urn:foo:bar?query</code>></li> + + <li><<code>urn:foo:ff~</code>></li> + + </ul> + + </dd> + + </dl> + + + <p>The names of the following registered schemes are known, but they are otherwise unsupported: + </p> + <dl> + + <dt><a name="ref-telnet">[telnet]</a> + + RFC 4248 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4248.txt"> + Reference to interactive sessions</a> + </dd> + + <dt><a name="ref-wais">[wais]</a> + + RFC 4156 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4156.txt"> + Wide Area Information Servers</a> + </dd> + + <dt><a name="ref-prospero">[prospero]</a> + + RFC 4157 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4157.txt"> + Prospero Directory Service</a> + </dd> + + <dt><a name="ref-gopher">[gopher]</a> + + RFC 4266 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4266.txt"> + The gopher URI scheme</a> + </dd> + + <dt><a name="ref-z39.50s">[z39.50s]</a> + + RFC 2056 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2056.html"> + Z39.50 Session</a> + </dd> + + <dt><a name="ref-z39.50r">[z39.50r]</a> + + RFC 2056 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2056.html"> + Z39.50 Retrieval</a> + </dd> + + <dt><a name="ref-cid">[cid]</a> + + RFC 2392 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2392.html"> + content identifier</a> + </dd> + + <dt><a name="ref-mid">[mid]</a> + + RFC 2392 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2392.html"> + message identifier</a> + </dd> + + <dt><a name="ref-vemmi">[vemmi]</a> + + RFC 2122 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2122.html"> + versatile multimedia interface</a> + </dd> + + <dt><a name="ref-service">[service]</a> + + RFC 2609 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2609.html"> + service location</a> + </dd> + + <dt><a name="ref-imap">[imap]</a> + + RFC 2192 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2192.html"> + internet message access protocol</a> + </dd> + + <dt><a name="ref-nfs">[nfs]</a> + + RFC 2224 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2224.html"> + network file system protocol</a> + </dd> + + <dt><a name="ref-acap">[acap]</a> + + RFC 2244 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2244.html"> + application configuration access protocol</a> + </dd> + + <dt><a name="ref-rtsp">[rtsp]</a> + + RFC 2326 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2326.html"> + real time streaming protocol</a> + </dd> + + <dt><a name="ref-tip">[tip]</a> + + RFC 2371 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2371.html"> + Transaction Internet Protocol</a> + </dd> + + <dt><a name="ref-pop">[pop]</a> + + RFC 2384 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2384.html"> + Post Office Protocol v3</a> + </dd> + + <dt><a name="ref-data">[data]</a> + + RFC 2397 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2397.html"> + data</a> + </dd> + + <dt><a name="ref-dav">[dav]</a> + + RFC 2518 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2518.html"> + dav</a> + </dd> + + <dt><a name="ref-opaquelocktoken">[opaquelocktoken]</a> + + RFC 2518 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2518.html"> + opaquelocktoken</a> + </dd> + + <dt><a name="ref-sip">[sip]</a> + + RFC 3261 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3261.html"> + session initiation protocol</a> + </dd> + + <dt><a name="ref-sips">[sips]</a> + + RFC 3261 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3261.html"> + secure session intitiaion protocol</a> + </dd> + + <dt><a name="ref-tel">[tel]</a> + + RFC 2806 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2806.html"> + telephone</a> + </dd> + + <dt><a name="ref-fax">[fax]</a> + + RFC 2806 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2806.html"> + fax</a> + </dd> + + <dt><a name="ref-modem">[modem]</a> + + RFC 2806 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2806.html"> + modem</a> + </dd> + + <dt><a name="ref-soap.beep">[soap.beep]</a> + + RFC 3288 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3288.html"> + soap.beep</a> + </dd> + + <dt><a name="ref-soap.beeps">[soap.beeps]</a> + + RFC 3288 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3288.html"> + soap.beeps</a> + </dd> + + <dt><a name="ref-xmlrpc.beep">[xmlrpc.beep]</a> + + RFC 3529 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3529.html"> + xmlrpc.beep</a> + </dd> + + <dt><a name="ref-xmlrpc.beeps">[xmlrpc.beeps]</a> + + RFC 3529 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3529.html"> + xmlrpc.beeps</a> + </dd> + + <dt><a name="ref-go">[go]</a> + + RFC 3368 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3368.html"> + go</a> + </dd> + + <dt><a name="ref-h323">[h323]</a> + + RFC 3508 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3508.html"> + H.323</a> + </dd> + + <dt><a name="ref-ipp">[ipp]</a> + + RFC 3510 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3510.html"> + Internet Printing Protocol</a> + </dd> + + <dt><a name="ref-tftp">[tftp]</a> + + RFC 3617 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3617.html"> + Trivial File Transfer Protocol</a> + </dd> + + <dt><a name="ref-mupdate">[mupdate]</a> + + RFC 3656 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3656.html"> + Mailbox Update (MUPDATE) Protocol</a> + </dd> + + <dt><a name="ref-pres">[pres]</a> + + RFC 3859 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3859.html"> + Presence</a> + </dd> + + <dt><a name="ref-im">[im]</a> + + RFC 3860 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3860.html"> + Instant Messaging</a> + </dd> + + <dt><a name="ref-mtqp">[mtqp]</a> + + RFC 3887 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3887.html"> + Message Tracking Query Protocol</a> + </dd> + + <dt><a name="ref-iris.beep">[iris.beep]</a> + + RFC 3983 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc3983.html"> + iris.beep</a> + </dd> + + <dt><a name="ref-dict">[dict]</a> + + RFC 2229 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2229.html"> + dictionary service protocol</a> + </dd> + + <dt><a name="ref-snmp">[snmp]</a> + + RFC 4088 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4088.txt"> + Simple Network Management Protocol</a> + </dd> + + <dt><a name="ref-crid">[crid]</a> + + RFC 4078 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4078.txt"> + TV-Anytime Content Reference Identifier</a> + </dd> + + <dt><a name="ref-tag">[tag]</a> + + RFC 4151 + </dt> + <dd><a href="http://www.ietf.org/rfc/rfc4151.txt"> + tag</a> + </dd> + + <dt><a name="ref-afs">[afs]</a> + + </dt> + <dd><a href="http://www.iana.org/assignments/uri-schemes"> + Andrew File System global file names</a> + </dd> + + <dt><a name="ref-tn3270">[tn3270]</a> + + </dt> + <dd><a href="http://www.iana.org/assignments/uri-schemes"> + Interactive 3270 emulation sessions</a> + </dd> + + <dt><a name="ref-mailserver">[mailserver]</a> + + </dt> + <dd><a href="http://www.iana.org/assignments/uri-schemes"> + Access to data available from mail servers</a> + </dd> + + <dt><a name="ref-dns">[dns]</a> + + </dt> + <dd><a href="http://www.iana.org/assignments/uri-schemes"> + Domain Name System</a> + </dd> + + <dt><a name="ref-info">[info]</a> + + </dt> + <dd><a href="http://www.iana.org/assignments/uri-schemes"> + Information Assets with Identifiers in Public Namespaces</a> + </dd> + + <dt><a name="ref-ldap">[ldap]</a> + + </dt> + <dd><a href="http://www.iana.org/assignments/uri-schemes"> + Lightweight Directory Access Protocol</a> + </dd> + + </dl> + + <p>Other relevant standards include: + </p> + <dl> + + <dt><a name="ref-URL_Registratrion">[URL_Registratrion]</a> + + RFC 2717 + </dt> + <dd><a href="http://www.apps.ietf.org/rfc/rfc2717.html"> + + Registration Procedures for URL + Scheme Names</a> + </dd> + + </dl> + + */ +public interface ViolationCodes { + +/** +This class is not part of the API. +*/ + class Initialize implements IRIComponents, Force { + static { + + Specification spec; + + + spec = + new Specification( + "RDF", + "iri", + "", + "http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-URIref", + "Resource Description Framework (RDF): Concepts and Abstract Syntax", + "RDF URI References", + + new String[]{ + + "foo/bar", + + "#frag", + + "//example.org/foo/bar#frag", + + }, + + new String[]{ + + } + ); + + spec.require( + IRIComponents.SCHEME + ); + + spec = + new Specification( + "URI", + "iri", + "3986", + "http://www.apps.ietf.org/rfc/rfc3986.html", + "Uniform Resource Identifier (URI): Generic Syntax", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec = + new Specification( + "Unicode", + "iri", + "", + "http://www.unicode.org/", + "Unicode", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec = + new Specification( + "IRI", + "iri", + "3987", + "http://www.apps.ietf.org/rfc/rfc3987.html", + "Internationalized Resource Identifiers (IRIs)", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec = + new Specification( + "XML", + "iri", + "", + "http://www.w3.org/TR/2004/REC-xml-20040204/#dt-sysid", + "Extensible Markup Language (XML) 1.0 (Third Edition)", + "system identifier", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec.prohibit( + IRIComponents.FRAGMENT + ); + + spec = + new Specification( + "XLink", + "iri", + "", + "http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators", + "XML Linking Language (XLink) Version 1.0", + "Locator Attribute (href)", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec = + new Specification( + "Schema", + "iri", + "", + "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI", + "XML Schema Part 2: Datatypes Second Edition", + "anyURI", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec = + new Specification( + "URL_Registratrion", + "other", + "2717", + "http://www.apps.ietf.org/rfc/rfc2717.html", + "Registration Procedures for URL Scheme Names", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + spec = + new SchemeSpecification( + "http", + "2616", + "http://www.apps.ietf.org/rfc/rfc2616.html", + "Hypertext Transfer Protocol -- HTTP/1.1", + "", + + new String[]{ + + "http://www.example.org:80/foo/bar", + + "http:foo/bar", + + "http://[email protected]/foo/bar", + + }, + + new String[]{ + + "http://www.example.org/foo/bar", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2616.html#sec-3.2.2", + ""+ + "\n"+ + "http_URL = \"http:\" \"//\" host [ \":\" port ] [ abs_path [ \"?\" query ]]\n"+ + "", + ""+ + "</p><pre>\n"+ + "http_URL = \"http:\" \"//\" host [ \":\" port ] [ abs_path [ \"?\" query ]]\n"+ + "</pre>"+ + "<p>" + ); + + spec.setDNS(true); + + spec.port(80); + + spec.prohibit( + IRIComponents.USER + ); + + spec.require( + IRIComponents.HOST + ); + + spec = + new SchemeSpecification( + "https", + "2818", + "http://www.apps.ietf.org/rfc/rfc2818.html", + "Hypertext Transfer Protocol Secure", + "", + + new String[]{ + + "https://www.example.org:443/foo/bar", + + "https:foo/bar", + + "https://[email protected]/foo/bar", + + }, + + new String[]{ + + "https://www.example.org/foo/bar", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2818.html#sec-2.4", + "HTTP/TLS is differentiated from HTTP URIs by using the 'https' protocol identifier in place of the 'http' protocol identifier.", + "HTTP/TLS is differentiated from HTTP URIs by using the 'https' protocol identifier in place of the 'http' protocol identifier." + ); + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2818.html#sec-3.2.2", + ""+ + "\n"+ + "http_URL = \"http:\" \"//\" host [ \":\" port ] [ abs_path [ \"?\" query ]]\n"+ + "", + ""+ + "</p><pre>\n"+ + "http_URL = \"http:\" \"//\" host [ \":\" port ] [ abs_path [ \"?\" query ]]\n"+ + "</pre>"+ + "<p>" + ); + + spec.setDNS(true); + + spec.port(443); + + spec.prohibit( + IRIComponents.USER + ); + + spec.require( + IRIComponents.HOST + ); + + spec = + new SchemeSpecification( + "ftp", + "1738", + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.2", + "File Transfer Protocol", + "3.2", + + new String[]{ + + "ftp:///foo/bar", + + "ftp://[email protected]/foo/bar;type=z", + + "ftp://[email protected]/foo/b;ar;type=d", + + }, + + new String[]{ + + "ftp://[email protected]/foo/bar;type=d", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-5", + ""+ + "\n"+ + "ftpurl = \"ftp://\" login [ \"/\" fpath [ \";type=\" ftptype ]]\n"+ + "fpath = fsegment *[ \"/\" fsegment ]\n"+ + "fsegment = *[ uchar | \"?\" | \":\" | \"@\" | \"&\" | \"=\" ]\n"+ + "ftptype = \"A\" | \"I\" | \"D\" | \"a\" | \"i\" | \"d\"\n"+ + ""+ + "\n"+ + "login = [ user [ \":\" password ] \"@\" ] hostport\n"+ + ""+ + "\n"+ + "safe = \"$\" | \"-\" | \"_\" | \".\" | \"+\"\n"+ + "extra = \"!\" | \"*\" | \"'\" | \"(\" | \")\" | \",\"\n"+ + "escape = \"%\" hex hex\n"+ + "unreserved = alpha | digit | safe | extra\n"+ + "uchar = unreserved | escape\n"+ + "", + ""+ + "</p><pre>\n"+ + "ftpurl = \"ftp://\" login [ \"/\" fpath [ \";type=\" ftptype ]]\n"+ + "fpath = fsegment *[ \"/\" fsegment ]\n"+ + "fsegment = *[ uchar | \"?\" | \":\" | \"@\" | \"&\" | \"=\" ]\n"+ + "ftptype = \"A\" | \"I\" | \"D\" | \"a\" | \"i\" | \"d\"\n"+ + "</pre>"+ + "<p>"+ + "</p><pre>\n"+ + "login = [ user [ \":\" password ] \"@\" ] hostport\n"+ + "</pre>"+ + "<p>"+ + "</p><pre>\n"+ + "safe = \"$\" | \"-\" | \"_\" | \".\" | \"+\"\n"+ + "extra = \"!\" | \"*\" | \"'\" | \"(\" | \")\" | \",\"\n"+ + "escape = \"%\" hex hex\n"+ + "unreserved = alpha | digit | safe | extra\n"+ + "uchar = unreserved | escape\n"+ + "</pre>"+ + "<p>" + ); + + spec.setDNS(true); + + spec.port(21); + + spec.require( + IRIComponents.HOST + ); + + spec.setPattern(PATHQUERY, + "[^;~]*(;@{mustLowerCase(type)}=@{shouldLowerCase([aid])}|)" ); + + spec.setReserved(PATHQUERY,"~;"); + + spec = + new SchemeSpecification( + "mailto", + "2368", + "http://www.apps.ietf.org/rfc/rfc2368.html", + "Electronic mail address", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec.prohibit( + IRIComponents.AUTHORITY + ); + + spec = + new SchemeSpecification( + "news", + "1738", + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.6", + "USENET news", + "3.6", + + new String[]{ + + "news:[email protected]\u00E7.org", + + "news:[email protected]\u00E7.org", + + "news:///foo/bar", + + "news://[email protected]/foo", + + }, + + new String[]{ + + "news:*", + + "news:group.it", + + "news:[email protected]", + + "news:[email protected]", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-5", + ""+ + "\n"+ + "newsurl = \"news:\" grouppart\n"+ + "grouppart = \"*\" | group | article\n"+ + "group = alpha *[ alpha | digit | \"-\" | \".\" | \"+\" | \"_\" ]\n"+ + "article = 1*[ uchar | \";\" | \"/\" | \"?\" | \":\" | \"&\" | \"=\" ] \"@\" host\n"+ + ""+ + "\n"+ + "safe = \"$\" | \"-\" | \"_\" | \".\" | \"+\"\n"+ + "extra = \"!\" | \"*\" | \"'\" | \"(\" | \")\" | \",\"\n"+ + "escape = \"%\" hex hex\n"+ + "unreserved = alpha | digit | safe | extra\n"+ + "uchar = unreserved | escape\n"+ + "", + ""+ + "</p><pre>\n"+ + "newsurl = \"news:\" grouppart\n"+ + "grouppart = \"*\" | group | article\n"+ + "group = alpha *[ alpha | digit | \"-\" | \".\" | \"+\" | \"_\" ]\n"+ + "article = 1*[ uchar | \";\" | \"/\" | \"?\" | \":\" | \"&\" | \"=\" ] \"@\" host\n"+ + "</pre>"+ + "<p>"+ + "</p><pre>\n"+ + "safe = \"$\" | \"-\" | \"_\" | \".\" | \"+\"\n"+ + "extra = \"!\" | \"*\" | \"'\" | \"(\" | \")\" | \",\"\n"+ + "escape = \"%\" hex hex\n"+ + "unreserved = alpha | digit | safe | extra\n"+ + "uchar = unreserved | escape\n"+ + "</pre>"+ + "<p>" + ); + + spec.prohibit( + IRIComponents.AUTHORITY + ); + + spec.require( + IRIComponents.PATH + ); + + spec.setPattern(PATHQUERY, + "[^@]+@@{host}|[*]|[a-zA-Z][-a-zA-Z0-9.+_]*" ); + + spec.setReserved(PATHQUERY,"~@"); + + spec = + new SchemeSpecification( + "nntp", + "1738", + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.7", + "USENET news using NNTP access", + "3.7", + + new String[]{ + + "nntp://[email protected]/foo", + + "nntp:/foo", + + "nntp:///foo", + + "nntp://example.org/foo/4/3", + + "nntp://example.org/", + + "nntp://example.org/foo/", + + "nntp://example.org/*", + + }, + + new String[]{ + + "nntp://example.org/foo4", + + "nntp://example.org/foo/4", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-5", + ""+ + "\n"+ + "nntpurl = \"nntp://\" hostport \"/\" group [ \"/\" digits ]\n"+ + ""+ + "\n"+ + "group = alpha *[ alpha | digit | \"-\" | \".\" | \"+\" | \"_\" ]\n"+ + "", + ""+ + "</p><pre>\n"+ + "nntpurl = \"nntp://\" hostport \"/\" group [ \"/\" digits ]\n"+ + "</pre>"+ + "<p>"+ + "</p><pre>\n"+ + "group = alpha *[ alpha | digit | \"-\" | \".\" | \"+\" | \"_\" ]\n"+ + "</pre>"+ + "<p>" + ); + + spec.setDNS(true); + + spec.port(119); + + spec.prohibit( + IRIComponents.QUERY + ); + + spec.prohibit( + IRIComponents.USER + ); + + spec.require( + IRIComponents.HOST + ); + + spec.setPattern(PATH, + "/[a-zA-Z][-a-zA-Z0-9.+_]*(/[0-9]+)?" ); + + spec = + new SchemeSpecification( + "telnet", + "4248", + "http://www.ietf.org/rfc/rfc4248.txt", + "Reference to interactive sessions", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "wais", + "4156", + "http://www.ietf.org/rfc/rfc4156.txt", + "Wide Area Information Servers", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "file", + "1738", + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-3.10", + "Host-specific file names", + "3.10", + + new String[]{ + + "file://[email protected]/foo/bar", + + "file://eg:4029/foo/bar", + + "file:/foo/bar", + + "file://example.org", + + "file://foo/bar;t", + + "file://foo/~jjc", + + }, + + new String[]{ + + "file:///foo/b", + + "file:///foo/b?ar/yuk", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc1738.html#sec-5", + ""+ + "\n"+ + "fileurl = \"file://\" [ host | \"localhost\" ] \"/\" fpath\n"+ + ""+ + "\n"+ + "fpath = fsegment *[ \"/\" fsegment ]\n"+ + "fsegment = *[ uchar | \"?\" | \":\" | \"@\" | \"&\" | \"=\" ]\n"+ + ""+ + "\n"+ + "safe = \"$\" | \"-\" | \"_\" | \".\" | \"+\"\n"+ + "extra = \"!\" | \"*\" | \"'\" | \"(\" | \")\" | \",\"\n"+ + "escape = \"%\" hex hex\n"+ + "unreserved = alpha | digit | safe | extra\n"+ + "uchar = unreserved | escape\n"+ + "", + ""+ + "</p><pre>\n"+ + "fileurl = \"file://\" [ host | \"localhost\" ] \"/\" fpath\n"+ + "</pre>"+ + "<p>"+ + "</p><pre>\n"+ + "fpath = fsegment *[ \"/\" fsegment ]\n"+ + "fsegment = *[ uchar | \"?\" | \":\" | \"@\" | \"&\" | \"=\" ]\n"+ + "</pre>"+ + "<p>"+ + "</p><pre>\n"+ + "safe = \"$\" | \"-\" | \"_\" | \".\" | \"+\"\n"+ + "extra = \"!\" | \"*\" | \"'\" | \"(\" | \")\" | \",\"\n"+ + "escape = \"%\" hex hex\n"+ + "unreserved = alpha | digit | safe | extra\n"+ + "uchar = unreserved | escape\n"+ + "</pre>"+ + "<p>" + ); + + spec.setDNS(true); + + spec.prohibit( + IRIComponents.USER + ); + + spec.prohibit( + IRIComponents.PORT + ); + + spec.require( + IRIComponents.PATH + ); + + spec.require( + IRIComponents.AUTHORITY + ); + + spec.setPattern(PATHQUERY, + "[^;~]*" ); + + spec.setReserved(PATHQUERY,"~;"); + + spec = + new SchemeSpecification( + "prospero", + "4157", + "http://www.ietf.org/rfc/rfc4157.txt", + "Prospero Directory Service", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "gopher", + "4266", + "http://www.ietf.org/rfc/rfc4266.txt", + "The gopher URI scheme", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "z39.50s", + "2056", + "http://www.apps.ietf.org/rfc/rfc2056.html", + "Z39.50 Session", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "z39.50r", + "2056", + "http://www.apps.ietf.org/rfc/rfc2056.html", + "Z39.50 Retrieval", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "cid", + "2392", + "http://www.apps.ietf.org/rfc/rfc2392.html", + "content identifier", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "mid", + "2392", + "http://www.apps.ietf.org/rfc/rfc2392.html", + "message identifier", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "vemmi", + "2122", + "http://www.apps.ietf.org/rfc/rfc2122.html", + "versatile multimedia interface", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "service", + "2609", + "http://www.apps.ietf.org/rfc/rfc2609.html", + "service location", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "imap", + "2192", + "http://www.apps.ietf.org/rfc/rfc2192.html", + "internet message access protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "nfs", + "2224", + "http://www.apps.ietf.org/rfc/rfc2224.html", + "network file system protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "acap", + "2244", + "http://www.apps.ietf.org/rfc/rfc2244.html", + "application configuration access protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "rtsp", + "2326", + "http://www.apps.ietf.org/rfc/rfc2326.html", + "real time streaming protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "tip", + "2371", + "http://www.apps.ietf.org/rfc/rfc2371.html", + "Transaction Internet Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "pop", + "2384", + "http://www.apps.ietf.org/rfc/rfc2384.html", + "Post Office Protocol v3", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "data", + "2397", + "http://www.apps.ietf.org/rfc/rfc2397.html", + "data", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "dav", + "2518", + "http://www.apps.ietf.org/rfc/rfc2518.html", + "dav", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "opaquelocktoken", + "2518", + "http://www.apps.ietf.org/rfc/rfc2518.html", + "opaquelocktoken", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "sip", + "3261", + "http://www.apps.ietf.org/rfc/rfc3261.html", + "session initiation protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "sips", + "3261", + "http://www.apps.ietf.org/rfc/rfc3261.html", + "secure session intitiaion protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "tel", + "2806", + "http://www.apps.ietf.org/rfc/rfc2806.html", + "telephone", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "fax", + "2806", + "http://www.apps.ietf.org/rfc/rfc2806.html", + "fax", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "modem", + "2806", + "http://www.apps.ietf.org/rfc/rfc2806.html", + "modem", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "soap.beep", + "3288", + "http://www.apps.ietf.org/rfc/rfc3288.html", + "soap.beep", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "soap.beeps", + "3288", + "http://www.apps.ietf.org/rfc/rfc3288.html", + "soap.beeps", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "xmlrpc.beep", + "3529", + "http://www.apps.ietf.org/rfc/rfc3529.html", + "xmlrpc.beep", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "xmlrpc.beeps", + "3529", + "http://www.apps.ietf.org/rfc/rfc3529.html", + "xmlrpc.beeps", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "urn", + "2141", + "http://www.apps.ietf.org/rfc/rfc2141.html", + "Uniform Resource Names", + "", + + new String[]{ + + "urn:x-hp:foo/bar", + + "urn:urn:foo", + + "urn://foo", + + "urn:foo:bar?query", + + "urn:foo:ff~", + + }, + + new String[]{ + + "urn:x-hp:foo\u00E9", + + "urn:urn-1:foo", + + } + ); + + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2141.html#sec-2", + "All URNs have the following syntax (phrases enclosed in quotes are REQUIRED):"+ + "\n"+ + "<URN> ::= \"urn:\" <NID> \":\" <NSS>\n"+ + "", + "All URNs have the following syntax (phrases enclosed in quotes are REQUIRED):"+ + "</p><pre>\n"+ + "<URN> ::= \"urn:\" <NID> \":\" <NSS>\n"+ + "</pre>"+ + "<p>" + ); + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2141.html#sec-2.1", + ""+ + "\n"+ + "<NID> ::= <let-num> [ 1,31<let-num-hyp> ]\n"+ + "\n"+ + "<let-num-hyp> ::= <upper> | <lower> | <number> | \"-\"\n"+ + "\n"+ + "<let-num> ::= <upper> | <lower> | <number>\n"+ + "", + ""+ + "</p><pre>\n"+ + "<NID> ::= <let-num> [ 1,31<let-num-hyp> ]\n"+ + "\n"+ + "<let-num-hyp> ::= <upper> | <lower> | <number> | \"-\"\n"+ + "\n"+ + "<let-num> ::= <upper> | <lower> | <number>\n"+ + "</pre>"+ + "<p>" + ); + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2141.html#sec-2.2", + ""+ + "\n"+ + "<NSS> ::= 1*<URN chars>\n"+ + "\n"+ + "<URN chars> ::= <trans> | \"%\" <hex> <hex>\n"+ + "\n"+ + "<trans> ::= <upper> | <lower> | <number> | <other> | <reserved>\n"+ + "\n"+ + "<other> ::= \"(\" | \")\" | \"+\" | \",\" | \"-\" | \".\" |\n"+ + " \":\" | \"=\" | \"@\" | \";\" | \"$\" |\n"+ + " \"_\" | \"!\" | \"*\" | \"'\"\n"+ + "", + ""+ + "</p><pre>\n"+ + "<NSS> ::= 1*<URN chars>\n"+ + "\n"+ + "<URN chars> ::= <trans> | \"%\" <hex> <hex>\n"+ + "\n"+ + "<trans> ::= <upper> | <lower> | <number> | <other> | <reserved>\n"+ + "\n"+ + "<other> ::= \"(\" | \")\" | \"+\" | \",\" | \"-\" | \".\" |\n"+ + " \":\" | \"=\" | \"@\" | \";\" | \"$\" |\n"+ + " \"_\" | \"!\" | \"*\" | \"'\"\n"+ + "</pre>"+ + "<p>" + ); + + spec + .addDefinition( + "http://www.apps.ietf.org/rfc/rfc2141.html#sec-2.3.2", + "RFC 1630 [2] reserves the characters \"/\", \"?\", and \"#\" for particular purposes. The URN-WG has not yet debated the applicability and precise semantics of those purposes as applied to URNs. Therefore, these characters are RESERVED for future developments. Namespace developers SHOULD NOT use these characters in unencoded form, but rather use the appropriate %-encoding for each character.", + "RFC 1630 [2] reserves the characters \"/\", \"?\", and \"#\" for particular purposes. The URN-WG has not yet debated the applicability and precise semantics of those purposes as applied to URNs. Therefore, these characters are RESERVED for future developments. Namespace developers SHOULD NOT use these characters in unencoded form, but rather use the appropriate %-encoding for each character." + ); + + spec.prohibit( + IRIComponents.AUTHORITY + ); + + spec.prohibit( + IRIComponents.QUERY + ); + + spec.require( + IRIComponents.PATH + ); + + spec.setPattern(PATH, + "(?![uU][rR][nN]:)[a-zA-Z0-9][-a-zA-Z0-9]{1,31}:[^/~]+" ); + + spec.setReserved(PATH,"/~"); + + spec = + new SchemeSpecification( + "go", + "3368", + "http://www.apps.ietf.org/rfc/rfc3368.html", + "go", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "h323", + "3508", + "http://www.apps.ietf.org/rfc/rfc3508.html", + "H.323", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "ipp", + "3510", + "http://www.apps.ietf.org/rfc/rfc3510.html", + "Internet Printing Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "tftp", + "3617", + "http://www.apps.ietf.org/rfc/rfc3617.html", + "Trivial File Transfer Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "mupdate", + "3656", + "http://www.apps.ietf.org/rfc/rfc3656.html", + "Mailbox Update (MUPDATE) Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "pres", + "3859", + "http://www.apps.ietf.org/rfc/rfc3859.html", + "Presence", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "im", + "3860", + "http://www.apps.ietf.org/rfc/rfc3860.html", + "Instant Messaging", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "mtqp", + "3887", + "http://www.apps.ietf.org/rfc/rfc3887.html", + "Message Tracking Query Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "iris.beep", + "3983", + "http://www.apps.ietf.org/rfc/rfc3983.html", + "iris.beep", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "dict", + "2229", + "http://www.apps.ietf.org/rfc/rfc2229.html", + "dictionary service protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "snmp", + "4088", + "http://www.ietf.org/rfc/rfc4088.txt", + "Simple Network Management Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "crid", + "4078", + "http://www.ietf.org/rfc/rfc4078.txt", + "TV-Anytime Content Reference Identifier", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "tag", + "4151", + "http://www.ietf.org/rfc/rfc4151.txt", + "tag", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "afs", + "", + "http://www.iana.org/assignments/uri-schemes", + "Andrew File System global file names", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "tn3270", + "", + "http://www.iana.org/assignments/uri-schemes", + "Interactive 3270 emulation sessions", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "mailserver", + "", + "http://www.iana.org/assignments/uri-schemes", + "Access to data available from mail servers", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "dns", + "", + "http://www.iana.org/assignments/uri-schemes", + "Domain Name System", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "info", + "", + "http://www.iana.org/assignments/uri-schemes", + "Information Assets with Identifiers in Public Namespaces", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + spec = + new SchemeSpecification( + "ldap", + "", + "http://www.iana.org/assignments/uri-schemes", + "Lightweight Directory Access Protocol", + "", + + new String[]{ + + }, + + new String[]{ + + } + ); + + + new ViolationCodeInfo( + ILLEGAL_CHARACTER, + "ILLEGAL_CHARACTER", + "The character violates the grammar rules for URIs/IRIs.", + "<p>The character violates the grammar rules for URIs/IRIs.</p>", + 0, + new InSpec[]{ + + new FromAlso( + "URI", + "http://www.apps.ietf.org/rfc/rfc3986.html#page-49" + ), + + new FromAlso( + "IRI", + "http://www.apps.ietf.org/rfc/rfc3987.html#sec-2.2" + ), + + new FromAlso( + "RDF", + "http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-URIref" + ), + + new FromAlso( + "XML", + "http://www.w3.org/TR/2004/REC-xml-20040204/#dt-sysid" + ), + + new FromAlso( + "XLink", + "http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators" + ), + + new FromAlso( + "Schema", + "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI" + ), + + }, + new String[]{ + + "ht$tp://example.org/foo", + + }, + + new String[]{ + + }, + + false + ); + + new ViolationCodeInfo( + PERCENT_ENCODING_SHOULD_BE_UPPERCASE, + "PERCENT_ENCODING_SHOULD_BE_UPPERCASE", + "Percent-escape sequences should use uppercase.", + "<p>Percent-escape sequences should use uppercase.</p>", + 0|Force.minting, + new InSpec[]{ + + new FromSpec_iri( + "URI", + -1, + "http://www.apps.ietf.org/rfc/rfc3986.html#sec-2.1", + "URI producers and normalizers should use *uppercase* hexadecimal digits for all percent-encodings.", + "<p>URI producers and normalizers should use"+ + " <em>uppercase</em> "+ + "hexadecimal digits for all percent-encodings.</p>" + ), + + new FromAlso( + "IRI", + "http://www.apps.ietf.org/rfc/rfc3987.html" + ), + + new FromAlso( + "RDF", + "http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-URIref" + ), + + new FromAlso( + "XML", + "http://www.w3.org/TR/2004/REC-xml-20040204/#dt-sysid" + ), + + new FromAlso( + "XLink", + "http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators" + ), + + new FromAlso( + "Schema", + "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI" + ), + + }, + new String[]{ + + "http://example.org/foo%c3%80", + + }, + + new String[]{ + + }, + + false + ); + + new ViolationCodeInfo( + SUPERFLUOUS_NON_ASCII_PERCENT_ENCODING, + "SUPERFLUOUS_NON_ASCII_PERCENT_ENCODING", + "Percent-escape sequences should not be used unnecessarily.", + "<p>Percent-escape sequences should not be used unnecessarily.</p>", + 0|Force.minting, + new InSpec[]{ + + new FromSpec_iri( + "IRI", + -1, + "http://www.apps.ietf.org/rfc/rfc3987.html#sec-3.2", + "URI-to-IRI conversion removes percent-encodings", + "<p>URI-to-IRI conversion removes percent-encodings</p>" + ), + + }, + new String[]{ + + "http://example.org/foo%C3%A9r", + + }, + + new String[]{ + + }, + true|| + false + ); + + new ViolationCodeInfo( + SUPERFLUOUS_ASCII_PERCENT_ENCODING, + "SUPERFLUOUS_ASCII_PERCENT_ENCODING", + "Percent-escape sequences should not be used unnecessarily.", + "<p>Percent-escape sequences should not be used unnecessarily.</p>", + 0|Force.minting, + new InSpec[]{ + + new FromSpec_iri( + "URI", + -1, + "http://www.apps.ietf.org/rfc/rfc3986.html#sec-2.3", + "For consistency, percent-encoded octets in the ranges of ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should not be created by URI producers", + "<p>For consistency, percent-encoded octets in the ranges of ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should not be created by URI producers</p>" + ), + + new FromAlso( + "IRI", + "http://www.apps.ietf.org/rfc/rfc3987.html" + ), + + new FromAlso( + "RDF", + "http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-URIref" + ), + + new FromAlso( + "XML", + "http://www.w3.org/TR/2004/REC-xml-20040204/#dt-sysid" + ), + + new FromAlso( + "XLink", + "http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators" + ), + + new FromAlso( + "Schema", + "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI" + ), + + }, + new String[]{ + + "http://example.org/foo%5Fb%61r", + + }, + + new String[]{ + + }, + true|| + false + ); + + new ViolationCodeInfo( + UNWISE_CHARACTER, + "UNWISE_CHARACTER", + "The character matches no grammar rules of URIs/IRIs. These characters are permitted in RDF URI References, XML system identifiers, and XML Schema anyURIs.", + "<p>The character matches no grammar rules of URIs/IRIs. These characters are permitted in RDF URI References, XML system identifiers, and XML Schema anyURIs.</p>", + 0|Force.minting, + new InSpec[]{ + + new FromSpec_iri( + "IRI", + -1, + "http://www.apps.ietf.org/rfc/rfc3987.html#page-13", + "Systems accepting IRIs MAY also deal with the printable characters in US-ASCII that are not allowed in URIs, namely \"<\", \">\", '\"', space, \"{\", \"}\", \"|\", \"\\\", \"^\", and \"`\", in step 2 above. If these characters are found but are not converted, then the conversion SHOULD fail.", + "<p>Systems accepting IRIs MAY also deal with the printable characters in US-ASCII that are not allowed in URIs, namely \"<\", \">\", '\"', space, \"{\", \"}\", \"|\", \"\\\", \"^\", and \"`\", in step 2 above. If these characters are found but are not converted, then the conversion SHOULD fail.</p>" + ), + + new FromAlso( + "URI", + "http://www.apps.ietf.org/rfc/rfc3986.html#page-49" + ), + + }, + new String[]{ + + "http://example.org/fo|o", + + "http://example.org/fo<o", + + "http://example.org/fo>o", + + "http://example.org/fo\"o", + + "http://example.org/fo`o", + + }, + + new String[]{ + + }, + + false + ); + + new ViolationCodeInfo( + CONTROL_CHARACTER, + "CONTROL_CHARACTER", + "Control characters are not allowed in URIs or RDF URI References.", + "<p>Control characters are not allowed in URIs or RDF URI References.</p>", + 0, + new InSpec[]{ + + new FromSpec_iri( + "RDF", + -1, + "http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-URIref", + "A URI reference within an RDF graph (an RDF URI reference) is a Unicode string [UNICODE] that: (0)does not contain any control characters ( #x00 - #x1F, #x7F-#x9F) ", + "<p>A URI reference within an RDF graph (an RDF URI reference) is a Unicode string [UNICODE] that:"+ + "</p><ul>"+ + " <li>does not contain any control characters ( #x00 - #x1F, #x7F-#x9F)</li> "+ + "</ul>"+ + "<p></p>" + ), + + new FromSpec_iri( + "IRI", + -1, + "http://www.apps.ietf.org/rfc/rfc3987.html", + ""+ + "\n"+ + "ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF\n"+ + " / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD\n"+ + " / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD\n"+ + " / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD\n"+ + " / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD\n"+ + " / %xD0000-DFFFD / %xE1000-EFFFD\n"+ + "", + "<p>"+ + "</p><pre>\n"+ + "ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF\n"+ + " / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD\n"+ + " / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD\n"+ + " / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD\n"+ + " / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD\n"+ + " / %xD0000-DFFFD / %xE1000-EFFFD\n"+ + "</pre>"+ + "<p></p>" + ), + + new FromAlso( + "URI", + "http://www.apps.ietf.org/rfc/rfc3986.html" + ), + + }, + new String[]{ + + "http://example.org/fo\u007Fo", + + "http://example.org/fo\u0085o", + + "http://example.org/fo\u0009o", + + "http://example.org/fo\u0001o", + + }, + + new String[]{ + + }, + + false + ); + + new ViolationCodeInfo( + NON_XML_CHARACTER, + "NON_XML_CHARACTER", + "The character is not legal in XML.", + "<p>The character is not legal in XML.</p>", + 0, + new InSpec[]{ + + new FromSpec_iri( + "XML", + -1, + "http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Char", + "Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]", + "<p>Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]</p>" + ), + + new FromAlso( + "XLink", + "http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators" + ), + + new FromAlso( + "Schema", + "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI" + ), + + }, + new String[]{ + + "http://example.org/foo\u0001", + + }, + + new String[]{ + + }, + + false + ); + + new ViolationCodeInfo( + DISCOURAGED_XML_CHARACTER, + "DISCOURAGED_XML_CHARACTER", + "The character is discouraged in XML documents.", + "<p>The character is discouraged in XML documents.</p>", + 0|Force.minting, + new InSpec[]{ + + new FromSpec_iri( + "XML", + -1, + "http://www.w3.org/TR/2004/REC-xml-20040204/#char32", + "Document authors are encouraged to avoid \"compatibility characters\", as defined in section 6.8 of [Unicode] (see also D21 in section 3.6 of [Unicode3]). The characters defined in the following ranges are also discouraged. They are either control characters or permanently undefined Unicode characters: [#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDDF],", + "<p>Document authors are encouraged to avoid \"compatibility characters\", as defined in section 6.8 of [Unicode] (see also D21 in section 3.6 of [Unicode3]). The characters defined in the following ranges are also discouraged. They are either control characters or permanently undefined Unicode characters: [#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDDF],</p>" + ), + + new FromAlso( + "XLink", + "http://www.w3.org/TR/2001/REC-xlink-20010627/#link-locators" + ), + + new FromAlso( + "Schema", + "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI" + ), + + }, + new String[]{ + + "http://example.org/foo\u0080", + + }, + + new String[]{ + + }, + + false + ); + + new ViolationCodeInfo( + NON_INITIAL_DOT_SEGMENT, + "NON_INITIAL_DOT_SEGMENT", + "The path contains a segment /../ not at the beginning of a relative reference, or it contains a /./ These should be removed.", + "<p>The path contains a segment /../ not at the beginning of a relative reference, or it contains a /./ These should be removed.</p>", + 0|Force.minting|Force.security, + new InSpec[]{ + + new FromSpec_iri( + "URI", + -1, + "http://www.apps.ietf.org/rfc/rfc3986.html#sec-6.2.2.3", + "The complete path segments \".\" and \"..\" are intended *only* for use within relative references", + "<p>The complete path segments \".\" and \"..\" are intended"+ + " <em>only</em> "+ + "for use within relative references</p>" + ), + + new FromAlso( + "IRI", + "http://www.apps.ietf.org/rfc/rfc3987.html" + ), + + new FromAlso( + "RDF", + "http:
<TRUNCATED>
