# Introduction Swish - which stands for Semantic Web Inference Scripting in Haskell - was written by Graham Klyne as a framework, written in the purely functional programming language Haskell, for performing deductions in RDF data using a variety of techniques. Swish was conceived as a toolkit for experimenting with RDF inference, and for implementing stand-alone RDF file processors (usable in similar style to CWM, but with a view to being extensible in declarative style through added Haskell function and data value declarations). One of the aims was to explore Haskell as "[a scripting language for the Semantic Web](http://www.ninebynine.org/RDFNotes/Swish/Intro.html)". It was updated from version 0.2.1 by Vasili I Galchin so that it would build with the current version of GHC, and [released on Hackage](http://hackage.haskell.org/package/swish-0.2.1). Since then it has been updated to take advantage of recent developments in the Haskell ecosystem, add support for the NTriples and Turtle serialisation formats, and a number of convenience functions. Development is done on GitLab at https://gitlab.com/dburke/swish and the previous [bitbucket site](https://bitbucket.org/doug_burke/swish/) is now *outdated* (you may also find a version on GitHub which should also be ignored). I attempt to keep Swish buildable on recent GHC versions but it is done on a best-effort basis, so support for "older" versions of GHC is not guaranteed. # Aim Current development is based on my own needs, which are more about using this as a RDF library for I/O with limited querying rather than for inferencing or use as a flexible graph-processing library (e.g. for extensions to non-RDF models). # Copyright (c) 2003, 2004 G. Klyne (c) 2009 Vasili I Galchin (c) 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Doug Burke All rights reserved. # License [LGPL V2.1](https://gitlab.com/dburke/swish/raw/master/LICENSE) # Haskell and the Semantic Web Other Haskell packages for RDF support include * [rdf4h](http://hackage.haskell.org/package/rdf4h) * [hsparql](http://hackage.haskell.org/package/hsparql) * [hasparql-client](http://hackage.haskell.org/package/hasparql-client) # Installation The following commands will install a command-line tool `Swish` along with the modules in the `Swish` namespace; documentation can be found [on Hackage](http://hackage.haskell.org/package/swish). ## With cabal Install a recent version of the [Haskell platform](http://hackage.haskell.org/platform/) and then try % cabal update % cabal install swish ## With stack Swish is available as part of the stackage curated package set. There are several stack configuration files, for different GHC versions: % cd swish % stack install % STACK_YAML=stack-8.8.yaml stack install % STACK_YAML=stack-8.6.yaml stack install % STACK_YAML=stack-8.4.yaml stack install % STACK_YAML=stack-8.2.yaml stack install % STACK_YAML=stack-8.0.yaml stack install % STACK_YAML=stack-7.10.yaml stack install ## With nix There is now support for building with the [nix](https://nixos.org/nix/) package manager: % nix-shell ... nix-shell% cabal test At the time of writing this uses GHC 8.8.2, but you can switch compiler % nix-shell --argstr compiler ghc865