PublicShow -- Process URIs

This library provides high-performance C-based primitives for manipulating URIs. We decided for a C-based implementation for the much better performance on raw character manipulation. Notably, URI handling primitives are used in time-critical parts of RDF processing. This implementation is based on RFC-3986:

The URI processing in this library is rather liberal. That is, we break URIs according to the rules, but we do not validate that the components are valid. Also, percent-decoding for IRIs is liberal. It first tries UTF-8; then ISO-Latin-1 and finally accepts %-characters verbatim.

Earlier experience has shown that strict enforcement of the URI syntax results in many errors that are accepted by many other web-document processing tools.

Source uri_components(+URI, -Components) is det
uri_components(-URI, +Components) is det
Break a URI into its 5 basic components according to the RFC-3986 regular expression:
 12            3  4          5       6  7        8 9
Components- is a term uri_components(Scheme, Authority, Path, Search, Fragment). If a URI is parsed, i.e., using mode (+,-), components that are not found are left uninstantiated (variable). See uri_data/3 for accessing this structure.
Source uri_data(?Field, +Components, ?Data) is semidet
Provide access the uri_component structure. Defined field-names are: scheme, authority, path, search and fragment

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

Source uri_iri(Arg1, Arg2)
Source uri_file_name(Arg1, Arg2)
Source uri_authority_data(Arg1, Arg2, Arg3)
Source uri_encoded(Arg1, Arg2, Arg3)
Source uri_authority_components(Arg1, Arg2)
Source uri_is_global(Arg1)
Source uri_resolve(Arg1, Arg2, Arg3)
Source uri_query_components(Arg1, Arg2)
Source iri_normalized(Arg1, Arg2, Arg3)
Source uri_normalized_iri(Arg1, Arg2, Arg3)
Source uri_normalized(Arg1, Arg2, Arg3)
Source iri_normalized(Arg1, Arg2)
Source uri_normalized(Arg1, Arg2)
Source uri_normalized_iri(Arg1, Arg2)
Source uri_data(Arg1, Arg2, Arg3, Arg4)