1. Doug Burke
  2. swish


swish / CHANGES

  - Split out vocabularies into Swish.RDF.Vocabulary.DublinCore,
    Swish.RDF.Vocabulary.FOAF, Swish.RDF.Vocabulary.Geo,
    Swish.RDF.Vocabulary.OWL, Swish.RDF.Vocabulary.RDF, and
    Swish.RDF.Vocabulary.XSD (some of these are new and additional
    terms added to the pre-existing vocabularies). A few have also
    been added to Swish.RDF.RDFGraph.

  - Minimum Cabal version has been updated to 1.9.2 as the tests have
    been converted to take advantage of the support now in Cabal; this
    means that the tests flag has been replaced by the --enable-tests

  - Change to the internal labelling of the RDFS container-property
    axioms in Swish.RDF.RDFProofContext.

  - Moved src/ to app/, and took advantage of the emptiness to move
    the library code into src/.

  - corrected mtl constraint from >= 1 to >= 2 as the code does not
    build with mtl=1 and increased the upper limit on time to 1.4.

  - minor improvements to error message when parsing Turtle, N3 or
    Ntriples format; a fragment of the remaining text to be parsed is
    included to provide some context for the user (it is still not as
    useful as the error message provided when parsec was being used).

  - add support for reading and writing Turtle format and the
    Swish.RDF.TurtleFormatter and Swish.RDF.TurtleParser modules.  No
    tests are provided at this time, although the parser handles most
    of the W3C test files; the issues include Network.URI not
    recognizing some IRI's and issues with equating XSD decimal and
    double values due to canonicalization.

  - use the hashing interface provided by Data.Hashable rather than

  - use the intern package to create Data.Interned.URI and use
    this within QName to speed up the equality check.

  - Missed a FlexibleInstances pragma for ghc 7.2.

  - Removed random and bytesttring package constraints and moved HUnit
    constraint to only apply if the tests flag is used. Added
    FlexibleInstances pragma for ghc 7.2 compatability.

  - updated package constraints in cabal file to try and support
    building with ghc 7.2. No code change.

  - The constructors for ScopedName and QName have been removed in
    order to allow a simple experimental optimisation (partly added in A similar change has been added for Namespace (but no

  - Use polyparse rather than parsec-2 for parsing. As part of this,
    the parsing is done using Text rather than String values, where
    sensible.  Some parsing should be faster now, but that is more due
    to a better use of parser combinators than differences in the
    parsing library used. No serious attempt at optimisation has been

    Unfortunately the error messages created on invalid input are
    significantly less helpfull than in the previous version.

  - removed Swish.Utils.DateTime and Swish.Utils.TraceHelpers

  - removed the following exported symbols from Swish.Utils.LookupMap:
        mapSortByKey, mapSortByVal

  - removed the following exported symbols from Swish.Utils.ListHelpers:
        allf, anyf, combinations, ffold, hasPartitions,
        mapset, pairsUngroup, powerSequences, powerSequences_inf

  - removed the following exported symbols from Swish.Utils.MiscHelpers:
        assert, stricmp, lower, quote

  - removed _ from exported symbols; the conversion is mainly to camel
    case but some may retain lower case parts (e.g. xxx_1_1_inv to

  - Namespace now uses Maybe Text to store the optional prefix rather
    than an ad-hoc ""/"?" solution and URI rather than String for the
    URI.  The local part of ScopedName is now Text.  QName also uses
    URIs and no longer exports the constructor so newQName or related
    should be used to create QNames.

    We have currently lost N3 formatting of the default prefix (any
    default prefix elements end up getting written out fully
    qualified). The output is still valid N3 but perhaps not what
    you'd expect.

  - use foldl' rather than foldl in some modules

  - Swish.Utils.*:

    - marked routines as deprecated

  - Swish.RDF.N3Parser:

    - the parser no longer has a set of pre-defined namespaces with
      the aim of reducing un-needed statements on output.

  There is no API change worthy of a bump of the minor version but
  the behavioural change is large enough to make it worth while.

  - Swish.RDF.RDFGraph:

    - toRDFGraph now uses the supplied labels to set up the namespace
      rather than using an empty namespace map.

    - minor documentation improvements.

  - N3 I/O: 

    - strings ending in a double-quote character are now written out

    - xsd:double values are not written using XSD canonical
      form/capital E but with using a lower-case exponent.

    - in input, xsd:double literals are converted to XSD canonical
      form (as stored in 'RDFLabel'), which can make simple textual
      comparison of literals fail.

  - RDFLabel:

    - the Eq instance now ignores the case of the language tag for

    - the Show instance uses the XSD canonical form for xsd:boolean,
      xsd:integer, xsd:decimal and xsd:double literals. 

  - The ToRDFLable and FromRDFLabel classes replicate
    existing functionality in Swish.RDF.RDFDatatype; this should
    be cleaned up.

  - NSGraph:

    - added Monoid instance with a Label constraint.

  - RDFLabel:

    - added IsString instance.

    - added ToRDFLabel and FromRDFLabel type classes for converting to
      and from RDFLabel along with instances for some standard Haskell

  - RDFTriple:

    - added toRDFTriple and fromRDFTriple functions that take advantage
      of the To/FromRDFLabel typeclasses to ease conversion from/to Arcs.

  - QName and ScopedName:

    - added IsString instance.

  - UTCTime support (To/FromRDFLabel) has required adding old-locale
    and time to the package constraints.

  - added xsd_dateTime export to Swish.RDF.Vocabulary.

  - added Swish and Swish.RDF modules for documentation purposes.

  - marked Swish.Utils.DateTime as deprecated.

  - the N3 formatter now writes true, 1, 1.2, 1.2e34 rather than
    "true"^^xsd:boolean, "1"^^xsd:integer, "1.2"^^xsd:decimal
    and "1.2e34"^^xsd:double.

  - improved test coverage.

  - changed scripts/SwishExample.ss script so that the proof succeeds.

  - minor documentation improvements, including the addition of the
    Swish script format in Swish.RDF.SwishScript.

  - minor changes to behavior of Swish in several edge cases.

  - bugfix: stop losing triples with a bnode subject when using the
    N3 Formatter which also makes the scripts/SwishTest.ss script run

  - several commands in Swish scripts now create screen
    output as an aid to debugging.

  - added the developer flag.

  - updated the Swish script parser to work with the changes in (reported by Rick Murphy).

  - several example scripts are installed in the scripts/ directory,
    although only VehicleCapacity.ss works with this release.

0.2.1 to

  - Renamed module hierarchy from




  - removed modules, either because un-needed or replaced
    by other libraries:

    *) replaced with Data.Traversable instances


    *) replaced with routines from Network.URI


    *) copy of a Parsec module


    *) Replaced with Data.List.sort as only used the 
       stableQuickSort routine


    *) Replaced use with simple parsec parser


    *) Replaced with 'Either String'


    *) Un-needed 


  - removed Either String instance from ErrorM

  - should now compile with mtl-2

  - added upper and lower bounds to package dependencies

  - a number of Test executables have been removed, either
    because of a removed module or missing data files.

  - updated Haddock documentation to build

  - added the following flags

      tests   - compile tests or not?
      hpc     - compile tests with -hpc?

  - support for the NTriples format has been added (e.g. the -nt
    flag in Swish)

  - the N3 parser and formatter have been re-written to better
    match the latest specification. Some previously valid N3 files
    will likely no-linger parse since support for constructs like
    'this' and ':-' have been removed.

    The N3 parser does not handle @forAll statements and ignores any
    @forSome statements. It is also slower than the original parser.

    The formatter has been updated to make better use of the '[]', 
    '()' and '{}' syntactic short cuts.

    Strings containing "unexpected" escape combinations - such as \a -
    may not be handled correctluy.

  - change in behavior of Swish command-line tool when given
    invalid arguments as it now errors out if given an invalid
    argument before processing any input.