swish- A semantic web toolkit.

MaintainerDouglas Burke
Safe HaskellNone




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



  • The parser needs to be updated to the latest version ("W3C Team Submission 28 March 2011", http://www.w3.org/TeamSubmission/2011/SUBM-n3-20110328/)
  • UTF-8 handling is not really tested.
  • 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)



type ParseResult = Either String RDFGraphSource

The result of a parse, which is either an error message or a graph.



:: Text

input in N3 format.

-> Maybe QName

optional base URI

-> ParseResult 

Parse a string with an optional base URI.

See also parseN3fromString.



:: Text

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

-> Text

input to be parsed

-> Either String a 

Function to supply initial context and parse supplied term.

parseTextFromText :: String -> Text -> Either String StringSource

Used in testing.

parseAltFromText :: String -> String -> Text -> Either String StringSource

Used in testing.

parseNameFromText :: Text -> Either String StringSource

Used in testing.

parseAbsURIrefFromText :: Text -> Either String URISource

Used in testing.

parseLexURIrefFromText :: Text -> Either String URISource

Used in testing.

Exports for parsers that embed Notation3 in a bigger syntax

type N3Parser a = Parser N3State aSource

The N3 parser.

type SpecialMap = Map String ScopedNameSource

Type for special name lookup table

getPrefix :: N3Parser ()Source

Process the remainder of an @prefix line (after this has been processed). The prefix value and URI are added to the parser state.

n3symbol :: N3Parser ScopedNameSource

Match a N3 symbol (an explicit URI or a QName) and convert it to a ScopedName.

lexUriRef :: N3Parser URISource

An explicitly given URI followed by white space.

document :: N3Parser RDFGraphSource

Process a N3 document, returning a graph.

subgraph :: RDFLabel -> N3Parser RDFGraphSource

Process a sub graph and assign it to the given label.

newBlankNode :: N3Parser RDFLabelSource

Create a new blank node.