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 in version 0.8.0.3:

  • Fix up the tests so that they pass with hashable-1.1.2.5.

  • Update to support network-2.4.0.0: Network.URI.Ord is now a no-op since the network package provides the instance; fix to change in API of relativeTo.

  • Removed binary constraint as unused.

Changes in version 0.8.0.2:

  • Restrict hashable since tests fail with 1.1.2.5 (this is a hack).

  • Updated directory constraint to include 1.2 on ghc 7.6.

Changes in version 0.8.0.1 (unreleased):

  • Internal changes to Turtle/N3 formatting. No user-visible changes.

Changes in version 0.8.0.0:

  • The LDGraph class now uses Set (Arc lb), rather than [Arc lb], for setArcs, getArcs, and update. Several data types - e.g. NSGraph - now use sets rather than lists. There are a number of API tweaks - e.g. the addition of Ord constraints and the removal of Functor, Foldable, and Traversable instances. Not all list of Arcs have been converted since a review is needed to see where it makes sense and where it does not. This definitely speeds up some operations but a full analysis has not been attempted.

  • Replaced used of Data.LookupMap with Data.Map.Map. This has led to the removal of a number of language extensions from some modules.

  • Added Network.URI.Ord to provide an ordering for URIs.

  • A few other minor changes have been made: the removal of subset and equiv from Swish.Utils.ListHelpers; the ordering used for RDFLabel values has changed; added a Monoid instance for VarBinding; added Ord instances for a number of containers; removed some un-needed constraints; added Network.URI.Ord.

  • The containers upper limit has been increased to support version 0.5.

Changes in previous versions can be found at https://bitbucket.org/doug_burke/swish/src/tip/CHANGES.

References:


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
developer

Turn on developer flags

Disabled

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
Dependencies base (>=3 && <5), containers (>=0.4 && <0.6), directory (>=1.0 && <1.3), filepath (>=1.1 && <1.4), hashable (>=1.1 && <1.2), intern (>=0.8 && <1.0), mtl (>=2 && <3), network (>=2.2 && <2.5), old-locale (>=1.0 && <1.1), polyparse (>=1.6 && <1.9), semigroups (>=0.5 && <0.9), swish, text (>=0.11 && <0.12), time (>=1.1 && <1.5) [details]
License LicenseRef-LGPL
Copyright (c) 2003, 2004 G. Klyne; 2009 Vasili I Galchin; 2011, 2012 Doug Burke; All rights reserved.
Author Graham Klyne - GK@ninebynine.org
Maintainer dburke@cfa.harvard.edu
Category Semantic Web
Home page https://bitbucket.org/doug_burke/swish/wiki/Home
Bug tracker https://bitbucket.org/doug_burke/swish/issues
Source repo head: hg clone https://bitbucket.org/doug_burke/swish
Uploaded by DouglasBurke at 2012-09-19T19:19:08Z
Distributions Debian:0.10.1.0, LTSHaskell:0.10.7.0, NixOS:0.10.7.0, Stackage:0.10.7.0
Reverse Dependencies 1 direct, 0 indirect [details]
Executables Swish
Downloads 50503 total (257 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.8.0.3

[back to package description]
# 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 wass 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 recent version of GHC
(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 at
https://bitbucket.org/doug_burke/swish/.

# 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).

# 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

Install a recent version of the Haskell platform (http://hackage.haskell.org/platform/)
and then try

    % cabal update
    % cabal install swish

This will install a command-line tool `Swish` along with the modules
in the `Swish` namespace; documentation can be found at
http://hackage.haskell.org/package/swish .