swish- A semantic web toolkit.

MaintainerDouglas Burke




This Module implements a Notation 3 parser (see [1], [2], [3]), returning a new RDFGraph consisting of triples and namespace information parsed from the supplied N3 input string, or an error indication.

Uses the Parsec monadic parser library.


1 http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/ Notation3 (N3): A readable RDF syntax, W3C Team Submission 14 January 2008

2 http://www.w3.org/DesignIssues/Notation3.html Tim Berners-Lee's design issues series notes and description

3 http://www.w3.org/2000/10/swap/Primer.html Notation 3 Primer by Sean Palmer


UTF-8 handling is not really tested.

Several items seem to be allowed (from looking at N3 test suites and files 'in the wild') that are not given supported by the N3 grammar [1]. We try to support these, including

  • ":" and "base:" as valid QNames (ie a blank local component)
  • true and false as well as @true and @false
  • use of lower-case characters for \u and \U escape codes

No performance testing has been applied.

Not all N3 grammar elements are supported, including:

  • @forSome (we read it in but ignore the arguments)
  • @forAll (this causes a parse error)
  • formulae are lightly tested
  • string support is incomplete (e.g. unrecognized escape characters such as \q are probably handled incorrectly)





:: String

input in N3 format.

-> Maybe QName

optional base URI

-> ParseResult 

Parse a string with an optional base URI.

See also parseN3fromString.



:: String

input in N3 format.

-> ParseResult 

Parse a string as N3 (with no real base URI).

See parseN3 if you need to provide a base URI.



:: N3Parser a

parser to apply

-> Maybe QName

base URI of the input, or Nothing to use default base value

-> String

input to be parsed

-> Either String a 

Function to supply initial context and parse supplied term.

We augment the Parsec error with the context.

Exports for parsers that embed Notation3 in a bigger syntax

type SpecialMap = LookupMap (String, ScopedName)Source

Type for special name lookup table

eof :: Show tok => GenParser tok st ()