swish: A semantic web toolkit.

[ lgpl, library, program, semantic-web ] [ Propose Tags ]

Swish is a framework, written in the purely functional programming language Haskell, for performing deductions in RDF data using a variety of techniques. Swish is 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). It explores Haskell as "a scripting language for the Semantic Web".

Swish is a work-in-progress, and currently incorporates:

  • Turtle, Notation3 and NTriples input and output. The N3 support is incomplete (no handling of @forAll).

  • RDF graph isomorphism testing and merging.

  • Display of differences between RDF graphs.

  • Inference operations in forward chaining, backward chaining and proof-checking modes.

  • Simple Horn-style rule implementations, extendable through variable binding modifiers and filters.

  • Class restriction rule implementation, primarily for datatype inferences.

  • RDF formal semantics entailment rule implementation.

  • Complete, ready-to-run, command-line and script-driven programs.

Changes are given in the https://gitlab.com/dburke/swish/raw/master/CHANGELOG file.

References:


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
w3ctests

Build the RunW3CTests application

Disabled
network-uri

Get Network.URI from the network-uri package

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.2.1, 0.3.0.0, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.3.1.0, 0.3.1.1, 0.3.1.2, 0.3.2.0, 0.3.2.1, 0.4.0.0, 0.5.0.0, 0.5.0.1, 0.5.0.2, 0.5.0.3, 0.6.0.0, 0.6.0.1, 0.6.1.0, 0.6.1.1, 0.6.1.2, 0.6.2.1, 0.6.3.0, 0.6.4.0, 0.6.5.0, 0.6.5.1, 0.6.5.2, 0.7.0.0, 0.7.0.1, 0.7.0.2, 0.8.0.0, 0.8.0.2, 0.8.0.3, 0.9.0.0, 0.9.0.1, 0.9.0.2, 0.9.0.3, 0.9.0.4, 0.9.0.5, 0.9.0.6, 0.9.0.7, 0.9.0.8, 0.9.0.9, 0.9.0.10, 0.9.0.11, 0.9.0.12, 0.9.0.13, 0.9.0.14, 0.9.0.15, 0.9.1.0, 0.9.1.1, 0.9.1.2, 0.9.1.3, 0.9.1.5, 0.9.1.6, 0.9.1.7, 0.9.1.8, 0.9.1.9, 0.9.1.10, 0.9.2.0, 0.9.2.1, 0.10.0.0, 0.10.0.1, 0.10.0.2, 0.10.0.3, 0.10.0.4, 0.10.0.5, 0.10.0.6, 0.10.0.7, 0.10.0.8, 0.10.0.9, 0.10.1.0, 0.10.2.0, 0.10.3.0, 0.10.4.0, 0.10.5.0, 0.10.6.0, 0.10.7.0, 0.10.8.0, 0.10.9.0
Change log CHANGELOG
Dependencies base (>=4.8 && <4.21), containers (>=0.5 && <0.8), directory (>=1.0 && <1.4), filepath (>=1.1 && <1.6), hashable (>=1.1 && <1.2 || >=1.2.0.6 && <1.6), intern (>=0.8 && <1.0), mtl (>=2 && <3), network, network-uri (<2.8), polyparse (>=1.6 && <1.14), semigroups (>=0.16 && <0.21), swish, text (>=0.11 && <2.2), time (>=1.5 && <1.9 || >=1.9.1 && <1.15) [details]
License LGPL-2.1-or-later
Copyright (c) 2003, 2004 G. Klyne; 2009 Vasili I Galchin; 2011 - 2024 Doug Burke; All rights reserved.
Author Graham Klyne - GK@ninebynine.org
Maintainer dburke@cfa.harvard.edu
Category Semantic Web
Home page https://gitlab.com/dburke/swish
Bug tracker https://gitlab.com/dburke/swish/issues
Source repo head: git clone https://gitlab.com/dburke/swish.git
Uploaded by DouglasBurke at 2024-07-07T19:24:19Z
Distributions Debian:0.10.1.0, LTSHaskell:0.10.9.0, NixOS:0.10.9.0, Stackage:0.10.9.0
Reverse Dependencies 1 direct, 0 indirect [details]
Executables runw3ctests, Swish
Downloads 51253 total (55 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for swish-0.10.9.0

[back to package description]

Hackage Pipeline status Dependencies status

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".

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.

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 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 has essentially stalled - I was 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) - but that project has stopped.

Copyright

(c) 2003, 2004 G. Klyne
(c) 2009 Vasili I Galchin
(c) 2011 - 2024 Doug Burke

All rights reserved.

License

LGPL V2.1

Haskell and the Semantic Web

Other Haskell packages for RDF support include

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.

With cabal

Install a recent version of the Haskell 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-9.6.yaml stack install
% STACK_YAML=stack-9.4.yaml stack install
% STACK_YAML=stack-9.2.yaml stack install
% STACK_YAML=stack-9.0.yaml stack install
% STACK_YAML=stack-8.10.yaml 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

I do not guarantee they will all work.

With nix

There is now support for building with the nix package manager:

% nix-shell
...
nix-shell% cabal test

or

% nix-shell --argstr compiler ghc921
...
nix-shell% cabal test

or, with a flake, either of

% nix build

% nix develop
swish:13:13  /path/to/swish cabal test