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.9.1.0:

  • The network-uri flag has been added, which uses the network-uri package to provide Network.URI. This has lead to the minimum version of the network package being bumped to 2.4.0.0 to avoid some CPP issues during building. The Network.URI.Ord module now really does nothing.

  • Updated the upper bound on the text dependency (requires an update to intern to use).

  • Updated the upper bound on the time dependency to 1.5 (at this time the test suite will not build due to a failing dependency, so it is untested).

Changes in version 0.9.0.15:

  • Updated the upper bound on the semigroups dependency.

Changes in version 0.9.0.14:

  • Updated the upper bound on the network dependency.

Changes in version 0.9.0.13:

  • Updated the upper bound on the semigroups dependency.

Changes in version 0.9.0.12:

  • Updated the upper bound on the text dependency to include version 1.1 (requires an update to semigroups to use).

Changes in version 0.9.0.11:

  • Hackage has a better chance of finding the CHANGELOG file if it is included in the distribution! There are *no* changes to the library or examples.

Changes in version 0.9.0.10:

  • Renamed CHANGES to CHANGELOG in the hope it will get picked up by Hackage. There are *no* changes to the library or examples.

Changes in version 0.9.0.9:

  • Updated the upper bound on the semigroups dependency (thanks to Leif Warner).

  • Updated the upper bound on the text dependency (however, requires changes to intern and semigroups to use).

Changes in version 0.9.0.8:

  • Updated the upper bound on the semigroups dependency (thanks to Leif Warner).

  • Display library version when running the runw3ctests executable and ensure there is a space between file name and test result in the screen output.

Changes in version 0.9.0.7:

  • Minor documentation fix for Swish.RDF.Graph.quote.

Changes in version 0.9.0.6:

  • Turtle/N3 output: \f characters in literals are converted to \u000C to work around some interoperability issues.

  • Changed the test handling to use test-framework.

Changes in version 0.9.0.5:

  • Turtle/N3 output: more changes for string literals containing double-quote characters.

  • N3 Parser: parsing of string literals within three quote marks has been updated to match the Turtle parser.

  • Turtle Parser: a few more error messages have been added.

Changes in version 0.9.0.4:

  • Turtle parser: updated to the Candidate Recommendation (19 February 2013) specification; added minor improvements to error messages when given invalid syntax. As part of the upgrade, there is no longer a default namespace set up for the empty prefix and numeric literals are no-longer converted into a canonical form.

  • Turtle/N3 output: improved string formatting (better handling of string literals with three or more consecutive " characters); blank node handling has been improved but the output may not be as elegant.

  • NTriples parser: now accepts upper-case language tags such as en-UK (case is preserved).

  • Swish.QName.LName names can now contain #, : and / characters.

  • Added tests for the Turtle parser and formatter.

  • The new w3ctests flag will build the runw3ctests executable, which will run the W3C Turtle tests (if downloaded from http://www.w3.org/2013/TurtleTests/).

  • Minor fixes and additions to the documentation.

Changes in version 0.9.0.3:

  • Minor Haddock fix to Swish.RDF.Parser.Utils.appendURIs.

Changes in version 0.9.0.2:

  • Updated the upper bound on the polyparse dependency.

Changes in version 0.9.0.1:

  • Updated the upper bound on the semigroups dependency (thanks to Leif Warner).

Changes in version 0.9.0.0:

  • Updated to support hashable-1.2 series; although this should *not* change the API from the 0.8 series, I have decided to bump up the version to 0.9 just in case.

  • Fix failing test on 64-bit GHC (no change to the library).

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

References:


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
developer

Turn on developer flags

Disabled
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
Change log CHANGELOG
Dependencies base (>=3 && <5), containers (>=0.4 && <0.6), directory, filepath (>=1.1 && <1.4), hashable (>=1.1 && <1.2 || >=1.2.0.6 && <1.3), intern (>=0.8 && <1.0), mtl (>=2 && <3), network, network-uri (<2.7), old-locale (>=1.0 && <1.1), polyparse (>=1.6 && <=1.9), semigroups (>=0.5 && <0.16), swish, text (>=0.11 && <1.3), time (>=1.1 && <1.6) [details]
License LicenseRef-LGPL
Copyright (c) 2003, 2004 G. Klyne; 2009 Vasili I Galchin; 2011, 2012, 2013, 2014 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 2014-09-21T23:07:11Z
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 runw3ctests, Swish
Downloads 50205 total (138 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.9.1.0

[back to package description]

Build 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 the bitbucket site; there is an outdated version on GitHub, which was being used for its access to Travis, but now I use drone.io for build/testing.

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 Doug Burke

All rights reserved.

License

GPL V2

Haskell and the Semantic Web

Other Haskell packages for RDF support include

Installation

Install a recent version of the Haskell 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 on Hackage.