This module defines an algebraic datatype for qualified names (QNames),
which represents a
URI as the combination of a namespace
and a local component (
LName), which can be empty.
Although RDF supports using IRIs, the use of
URI here precludes this,
which means that, for instance,
LName only accepts a subset of valid
characters. There is currently no attempt to convert from an IRI into a URI.
A qualified name, consisting of a namespace URI and the local part of the identifier, which can be empty. The serialisation of a QName is formed by concatanating the two components.
Prelude> :set prompt "swish> " swish> :set -XOverloadedStrings swish> :m + Swish.QName swish> let qn1 = "http://example.com/" :: QName swish> let qn2 = "http://example.com/bob" :: QName swish> let qn3 = "http://example.com/bob/fred" :: QName swish> let qn4 = "http://example.com/bob/fred#x" :: QName swish> let qn5 = "http://example.com/bob/fred:joe" :: QName swish> map getLocalName [qn1, qn2, qn3, qn4, qn5] ["","bob","fred","x","fred:joe"] swish> getNamespace qn1 http://example.com/ swish> getNamespace qn2 http://example.com/ swish> getNamespace qn3 http://example.com/bob/ swish> getNamespace qn4 http://example.com/bob/fred#
Equality is determined by a case sensitive comparison of the URI.
The format used to display the URI is
This is not total since it will fail if the input string is not a valid URI.
Converts from a Resource.
Converts to a Resource.
A local name, which can be empty.
At present, the local name can not contain a space character and can only
contain ascii characters (those that match
0.9.0.3 and earlier, the following characters were not
allowed in local names: '#', ':', or '/' characters.
This is all rather experimental.
Create a new qualified name with an explicit local component.
The URI will be deconstructed to find if it contains a local component.
|-> Maybe QName|
The failure case may be removed.
Create a new qualified name.
Return the URI of the namespace stored in the QName. This does not contain the local component.
Returns the full URI of the QName (ie the combination of the namespace and local components).
Convert a filepath to a file: URI stored in a QName. If the input file path is relative then the current working directory is used to convert it into an absolute path.
If the input represents a directory then it *must* end in
the directory separator - so for Posix systems use
"/foo/bar/" rather than
This has not been tested on Windows.