swish- A semantic web toolkit.

MaintainerDouglas Burke



Swish: Semantic Web Inference Scripting in Haskell

This program is a simple skeleton for constructing Semantic Web [1] inference tools in Haskell, using the RDF graph and several RDF parsers (at present Notation 3 and NTriples).

It might be viewed as a kind of embroyonic CWM [2] in Haskell, except that the intent is that Haskell will be used as a primary language for defining inferences. As such, Swish is an open-ended toolkit for constructing new special-purpose Semantic Web applications rather than a closed, self-contained general-purpose SW application. I anticipate that this module may be used as a starting point for creating new programs rathar then as a complete program in its own right. The functionality built into this code is selected with a view to testing the Haskell modules for handling RDF rather than for performing any particular application processing (though development as a tool with some broader utility is not ruled out). As such, it is part of another experiment along the lines described in [3].

  1. Semantic web: http://www.w3.org/2001/sw/
  2. CWM: http://www.w3.org/2000/10/swap/doc/cwm.html
  3. Motivation: http://www.w3.org/2000/10/swap/doc/Motivation.html
  4. Notation 3: http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/
  5. RDF: http://www.w3.org/RDF/



data SwishStatus Source

Status of the processor



successful run


graphs do not compare


input data problem (ie format/syntax)


data access error


command-line argument error


error executing a Swish script

data SwishAction Source

Represent an Swish action, with an optional argument and the Swish routine to act on that argument.

At present this type is a black box to external modules.

runSwish :: String -> IO ExitCodeSource

Parse and run the given string as if given at the command line. The "quiet", "version" and "help" options are ignored.

runSwishActions :: [SwishAction] -> IO SwishStatusSource

Execute the given set of actions.

displaySwishHelp :: IO ()Source

Write out the help for Swish

splitArguments :: [String] -> ([String], [String])Source

Return any arguments that need processing immediately, namely the "help", "quiet" and "version" options.

validateCommands :: [String] -> Either (String, SwishStatus) [SwishAction]Source

Given a list of command-line arguments create the list of actions to perform or a string and status value indicating an input error.