Portability | H98 |
---|---|
Stability | experimental |
Maintainer | Douglas 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].
- Semantic web: http://www.w3.org/2001/sw/
- CWM: http://www.w3.org/2000/10/swap/doc/cwm.html
- Motivation: http://www.w3.org/2000/10/swap/doc/Motivation.html
- Notation 3: http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/
- RDF: http://www.w3.org/RDF/
- data SwishStatus
- data SwishAction
- runSwish :: String -> IO ExitCode
- runSwishActions :: [SwishAction] -> IO SwishStatus
- displaySwishHelp :: IO ()
- splitArguments :: [String] -> ([String], [String])
- validateCommands :: [String] -> Either (String, SwishStatus) [SwishAction]
Documentation
data SwishStatus Source
Status of the processor
SwishSuccess | successful run |
SwishGraphCompareError | graphs do not compare |
SwishDataInputError | input data problem (ie format/syntax) |
SwishDataAccessError | data access error |
SwishArgumentError | command-line argument error |
SwishExecutionError | 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.