swish- A semantic web toolkit.

Copyright(c) 2003, Graham Klyne, 2009 Vasili I Galchin, 2011, 2012 Douglas Burke
LicenseGPL V2
MaintainerDouglas Burke
Safe HaskellNone



This module defines algebraic datatypes for namespaces and scoped names.

For these purposes, a namespace is a prefix and URI used to identify a namespace (cf. XML namespaces), and a scoped name is a name that is scoped by a specified namespace.



data Namespace Source

A NameSpace value consists of an optional prefix and a corresponding URI.


Eq Namespace

Equality is defined by the URI, not by the prefix (so the same URI with different prefixes will be considered to be equal).

Ord Namespace 
Show Namespace 

makeNamespace Source


:: Maybe Text

optional prefix.

-> URI


-> Namespace 

Create a name space from a URI and an optional prefix label.

makeNamespaceQName Source


:: Namespace

The name space URI is used in the qualified name

-> LName

local component of the qualified name (can be emptyLName)

-> QName 

Create a qualified name by combining the URI from the name space with a local component.

getNamespacePrefix :: Namespace -> Maybe Text Source

Returns the prefix stored in the name space.

getNamespaceURI :: Namespace -> URI Source

Returns the URI stored in the name space.

getNamespaceTuple :: Namespace -> (Maybe Text, URI) Source

Convert the name space to a (prefix, URI) tuple.

data ScopedName Source

A full ScopedName value has a QName prefix, namespace URI and a local part. ScopedName values may omit the prefix (see Namespace) or the local part.

Some applications may handle null namespace URIs as meaning the local part is relative to some base URI.


Eq ScopedName

Scoped names are equal if their corresponding QName values are equal.

Ord ScopedName

Scoped names are ordered by their QName components.

Show ScopedName

If there is a namespace associated then the Show instance uses prefix:local, otherwise url.

IsString ScopedName

This is not total since it will fail if the input string is not a valid URI.

FromRDFLabel ScopedName

Converts from a Resource.

ToRDFLabel ScopedName

Converts to a Resource.

getScopeNamespace :: ScopedName -> Namespace Source

Returns the namespace.

getScopeLocal :: ScopedName -> LName Source

Returns the local part.

getScopePrefix :: ScopedName -> Maybe Text Source

Returns the prefix of the namespace, if set.

getScopeURI :: ScopedName -> URI Source

Returns the URI of the namespace.

getQName :: ScopedName -> QName Source

Get the QName corresponding to a scoped name.

getScopedNameURI :: ScopedName -> URI Source

Get URI corresponding to a scoped name (using RDF conventions).

matchName :: String -> ScopedName -> Bool Source

Test if supplied string matches the display form of a scoped name.

makeScopedName Source


:: Maybe Text

prefix for the namespace

-> URI


-> LName

local name

-> ScopedName 

Construct a ScopedName.

makeQNameScopedName Source


:: Maybe Text


-> QName 
-> ScopedName 

Construct a ScopedName from a QName.

makeURIScopedName :: URI -> ScopedName Source

Construct a ScopedName for a bare URI (the label is set to "").

makeNSScopedName Source


:: Namespace


-> LName

local component

-> ScopedName 

Construct a ScopedName.

nullScopedName :: ScopedName Source

This should never appear as a valid name

namespaceToBuilder :: Namespace -> Builder Source

Utility routine to create a @prefix line (matching N3/Turtle) grammar for this namespace.