swish-0.9.0.7: A semantic web toolkit.

# swish-0.9.0.7: A semantic web toolkit.

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.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 semigroup 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/CHANGES.

References:

- http://www.ninebynine.org/RDFNotes/Swish/Intro.html
- http://www.ninebynine.org/Software/swish-0.2.1.html
- CWM: http://www.w3.org/2000/10/swap/doc/cwm.html

Modules

- Data
  - Interned
    - Data.Interned.URI
  - Ord
    - Data.Ord.Partial
  - String
    - Data.String.ShowLines
- Network
  - URI
    - Network.URI.Ord
- Swish
  - Swish.Commands
  - Swish.Datatype
  - Swish.GraphClass
  - Swish.GraphMatch
  - Swish.GraphMem
  - Swish.GraphPartition
  - Swish.Monad
  - Swish.Namespace
  - Swish.Proof
  - Swish.QName
  - Swish.RDF
    - Swish.RDF.BuiltIn
      - Swish.RDF.BuiltIn.Datatypes
      - Swish.RDF.BuiltIn.Rules
    - Swish.RDF.ClassRestrictionRule
    - Swish.RDF.Datatype
      - XSD
        - Swish.RDF.Datatype.XSD.Decimal
        - Swish.RDF.Datatype.XSD.Integer
        - Swish.RDF.Datatype.XSD.MapDecimal
        - Swish.RDF.Datatype.XSD.MapInteger
        - Swish.RDF.Datatype.XSD.String
    - Formatter
      - Swish.RDF.Formatter.N3
      - Swish.RDF.Formatter.NTriples
      - Swish.RDF.Formatter.Turtle
    - Swish.RDF.Graph
    - Swish.RDF.GraphShowLines
    - Parser
      - Swish.RDF.Parser.N3
      - Swish.RDF.Parser.NTriples
      - Swish.RDF.Parser.Turtle
      - Swish.RDF.Parser.Utils
    - Swish.RDF.Proof
    - Swish.RDF.ProofContext
    - Swish.RDF.Query
    - Swish.RDF.Ruleset
    - Swish.RDF.VarBinding
    - Swish.RDF.Vocabulary
      - Swish.RDF.Vocabulary.DublinCore
      - Swish.RDF.Vocabulary.FOAF
      - Swish.RDF.Vocabulary.Geo
      - Swish.RDF.Vocabulary.OWL
      - Swish.RDF.Vocabulary.Provenance
      - Swish.RDF.Vocabulary.RDF
      - Swish.RDF.Vocabulary.SIOC
      - Swish.RDF.Vocabulary.XSD
  - Swish.Rule
  - Swish.Ruleset
  - Swish.Script
  - Utils
    - Swish.Utils.ListHelpers
  - Swish.VarBinding