gnu: avidemux: Don't replace 'sh' reference with 'bash'.
[jackhill/guix/guix.git] / gnu / packages / rdf.scm
index 3d0d031..1dd23c2 100644 (file)
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages rdf)
-  #:use-module ((guix licenses) #:select (lgpl2.0+))
+  #:use-module ((guix licenses)
+                #:select (non-copyleft isc gpl2 lgpl2.1 lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system waf)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages qt))
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages xml))
 
-(define-public soprano
+(define-public raptor2
   (package
-    (name "soprano")
-    (version "2.9.3")
-    ;; 2.9.4 requires clucene, see
-    ;; http://www.mailinglistarchive.com/html/lfs-book@linuxfromscratch.org/2013-10/msg00285.html
-    ;; The stable clucene-0.9.21b fails one of its tests;
-    ;; in the unstable clucene-2.3.3.4 the binary cl_test is not found.
-    ;; In any case, the library seems to be unmaintained.
+    (name "raptor2")
+    (version "2.0.15")
     (source (origin
              (method url-fetch)
-             (uri (string-append "mirror://sourceforge/soprano/Soprano/"
-                                version "/"
-                                "soprano-" version ".tar.bz2"))
+             (uri (string-append "http://download.librdf.org/source/" name
+                                 "-" version ".tar.gz"))
              (sha256
               (base32
-               "08gb5d8bgy7vc6qd6r1kkmmc5rli67dlglpjqjlahpnvs26r1cwl"))))
+               "1vc02im4mpc28zxzgli68k6j0dakh0k3s389bm436yvqajxg19xd"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("curl" ,curl)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:parallel-tests? #f))
+    (home-page "http://librdf.org/raptor/")
+    (synopsis "RDF syntax library")
+    (description "Raptor is a C library providing a set of parsers and
+serialisers that generate Resource Description Framework (RDF) triples
+by parsing syntaxes or serialise the triples into a syntax.  The supported
+parsing syntaxes are RDF/XML, N-Quads, N-Triples 1.0 and 1.1, TRiG,
+Turtle 2008 and 2013, RDFa 1.0 and 1.1, RSS tag soup including all versions
+of RSS, Atom 1.0 and 0.3, GRDDL and microformats for HTML, XHTML and
+XML.  The serialising syntaxes are RDF/XML (regular, abbreviated, XMP),
+Turtle 2013, N-Quads, N-Triples 1.1, Atom 1.0, RSS 1.0, GraphViz DOT,
+HTML and JSON.")
+    (license lgpl2.1+))) ; or any choice of gpl2+ or asl2.0
+
+(define-public clucene
+  (package
+    (name "clucene")
+    (version "2.3.3.4")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://sourceforge/clucene/"
+                                 "clucene-core-unstable/2.3/clucene-core-"
+                                 version ".tar.gz"))
+             (sha256
+              (base32
+               "1arffdwivig88kkx685pldr784njm0249k0rb1f1plwavlrw9zfx"))
+             (patches (search-patches "clucene-pkgconfig.patch"
+                                      "clucene-contribs-lib.patch"))))
     (build-system cmake-build-system)
-    ;; FIXME: Add optional dependencies: Raptor, Redland, odbci, clucene; doxygen
     (inputs
-     `(("pkg-config" ,pkg-config)
-       ("qt" ,qt-4)))
-    (home-page "http://soprano.sourceforge.net/")
-    (synopsis "RDF data library for Qt")
-    (description "Soprano (formerly known as QRDF) is a library which
-provides a highly usable object-oriented C++/Qt4 framework for RDF data.  It
-uses different RDF storage solutions as backends through a simple plugin
-system.")
-    (license lgpl2.0+)))
+     `(("boost" ,boost) ; could also use bundled copy
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:test-target "cl_test"
+       #:configure-flags '("-DBUILD_CONTRIBS_LIB=ON")
+       #:tests? #f)) ; Tests do not compile, as TestIndexSearcher.cpp uses
+                     ; undeclared usleep. After fixing this, one needs to run
+                     ; "make test" in addition to "make cl_test", then
+                     ; SimpleTest fails.
+                     ; Notice that the library appears to be unmaintained
+                     ; with no reaction to bug reports.
+    (home-page "http://clucene.sourceforge.net/")
+    (synopsis "C text indexing and searching library")
+    (description "CLucene is a high-performance, scalable, cross platform,
+full-featured indexing and searching API.  It is a port of the very popular
+Java Lucene text search engine API to C++.")
+    (license lgpl2.1)))
+
+(define-public lrdf
+  (package
+    (name "lrdf")
+    (version "0.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/swh/LRDF/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "18p2flb2sv2hq6w2qkd29z9c7knnwqr3f12i2srshlzx6vwkm05s"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-after
+                 'remove-out-of-tree-references 'autoreconf
+                 (lambda _
+                   (zero? (system* "autoreconf" "-vfi")))
+                 (alist-cons-after
+                  'unpack 'remove-out-of-tree-references
+                  (lambda _
+                    ;; remove symlinks to files in /usr/
+                    (delete-file-recursively "m4")
+                    (for-each delete-file '("config.guess"
+                                            "config.sub"
+                                            "depcomp"
+                                            "install-sh"
+                                            "ltmain.sh"
+                                            "missing"))
+                    ;; remove_test depends on an out-of-tree RDF file
+                    (substitute* "examples/Makefile.am"
+                      (("instances_test remove_test") "instances_test")
+                      (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
+                  %standard-phases))))
+    (inputs
+     `(("raptor" ,raptor2)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/swh/LRDF")
+    (synopsis "Lightweight RDF library for accessing LADSPA plugin metadata")
+    (description
+     "LRDF is a library to make it easy to manipulate RDF files describing
+LADSPA plugins.  It can also be used for general RDF manipulation.  It can
+read RDF/XLM and N3 files and export N3 files, and it also has a light
+taxonomic inference capability.")
+    (license gpl2)))
+
+(define-public rasqal
+  (package
+    (name "rasqal")
+    (version "0.9.33")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.librdf.org/source/" name
+                                 "-" version ".tar.gz"))
+             (sha256
+              (base32
+               "0z6rrwn4jsagvarg8d5zf0j352kjgi33py39jqd29gbhcnncj939"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl)
+       ("perl-xml-dom" ,perl-xml-dom) ; for the tests
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libgcrypt" ,libgcrypt)
+       ("libxml2" ,libxml2)
+       ("mpfr" ,mpfr)
+       ("pcre" ,pcre)
+       ("util-linux" ,util-linux)))
+    (propagated-inputs
+     `(("raptor2" ,raptor2))) ; stipulated by rasqal.pc
+    (arguments
+     `(#:parallel-tests? #f
+       ; test failure reported upstream, see
+       ; http://bugs.librdf.org/mantis/view.php?id=571
+       #:tests? #f))
+    (home-page "http://librdf.org/rasqal/")
+    (synopsis "RDF query library")
+    (description "Rasqal is a C library that handles Resource Description
+Framework (RDF) query language syntaxes, query construction and execution
+of queries returning results as bindings, boolean, RDF graphs/triples or
+syntaxes.  The supported query languages are SPARQL Query 1.0,
+SPARQL Query 1.1, SPARQL Update 1.1 (no executing) and the Experimental
+SPARQL extensions (LAQRS).  Rasqal can write binding query results in the
+SPARQL XML, SPARQL JSON, CSV, TSV, HTML, ASCII tables, RDF/XML and
+Turtle/N3 and read them in SPARQL XML, RDF/XML and Turtle/N3.")
+    (license lgpl2.1+))) ; or any choice of gpl2+ or asl2.0
+
+(define-public redland
+  (package
+    (name "redland")
+    (version "1.0.17")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.librdf.org/source/" name
+                                 "-" version ".tar.gz"))
+             (sha256
+              (base32
+               "109n0kp39p966dpiasad2bb7q66rwbcb9avjvimw28chnpvlf66y"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl) ; needed for installation
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("rasqal" ,rasqal))) ; in Requires.private field of .pc
+    (inputs
+     `(("bdb" ,bdb)))
+    (home-page "http://librdf.org/")
+    (synopsis "RDF library")
+    (description "The Redland RDF Library (librdf) provides the RDF API
+and triple stores.")
+    (license lgpl2.1+))) ; or any choice of gpl2+ or asl2.0
+
+(define-public serd
+  (package
+    (name "serd")
+    (version "0.22.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/serd-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "1lmgca2s6r7ysakcld2lrj06bgn0pr45c51b47k3apxpnj3h40vv"))))
+    (build-system waf-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (add-before
+          'configure 'set-ldflags
+          (lambda* (#:key outputs #:allow-other-keys)
+            (setenv "LDFLAGS"
+                    (string-append "-Wl,-rpath="
+                                   (assoc-ref outputs "out") "/lib")))))))
+    (home-page "http://drobilla.net/software/serd/")
+    (synopsis "Library for RDF syntax supporting Turtle and NTriples")
+    (description
+     "Serd is a lightweight C library for RDF syntax which supports reading
+and writing Turtle and NTriples.  Serd is not intended to be a swiss-army
+knife of RDF syntax, but rather is suited to resource limited or performance
+critical applications (e.g. converting many gigabytes of NTriples to Turtle),
+or situations where a simple reader/writer with minimal dependencies is
+ideal (e.g. in LV2 implementations or embedded applications).")
+    (license isc)))
+
+(define-public sord
+  (package
+    (name "sord")
+    (version "0.14.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/sord-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "16piw1s3l95cf9x3rdcplp9l52k2lxq8drwg2q50ygm4avndhmkn"))))
+    (build-system waf-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (add-before
+          'configure 'set-ldflags
+          (lambda* (#:key outputs #:allow-other-keys)
+            (setenv "LDFLAGS"
+                    (string-append "-Wl,-rpath="
+                                   (assoc-ref outputs "out") "/lib")))))))
+    (inputs
+     `(("serd" ,serd)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/sord/")
+    (synopsis "C library for storing RDF data in memory")
+    (description
+     "Sord is a lightweight C library for storing RDF data in memory.")
+    (license isc)))
+
+(define-public python-rdflib
+  (package
+    (name "python-rdflib")
+    (version "4.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/r/rdflib/rdflib-"
+              version
+              ".tar.gz"))
+        (patches
+          ;; The patch has no effect under Python 3.
+          (search-patches "python2-rdflib-drop-sparqlwrapper.patch"))
+        (sha256
+          (base32
+            "0kvaf332cqbi47rqzlpdx4mbkvw12mkrzkj8n9l19wk713d4py9w"))))
+    (build-system python-build-system)
+    (propagated-inputs
+      `(("python-html5lib" ,python-html5lib)
+        ("python-isodate" ,python-isodate)
+        ("python-pyparsing" ,python-pyparsing)))
+    (home-page "https://github.com/RDFLib/rdflib")
+    (synopsis
+      "Python RDF library")
+    (description
+      "RDFLib is a Python library for working with RDF, a simple yet
+powerful language for representing information.")
+    (license (non-copyleft "file://LICENSE"
+                        "See LICENSE in the distribution."))))
+
+(define-public python2-rdflib
+  (let ((base (package-with-python2 python-rdflib)))
+    (package
+      (inherit base)
+      (inputs
+        (append (package-inputs base)
+                `(("python2-nose" ,python2-nose))))
+      (arguments
+        `(#:python ,python-2
+          #:tests? #f))))) ; 3 tests fail, also outside Guix