You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@any23.apache.org by le...@apache.org on 2019/10/01 14:08:46 UTC

[any23] branch master updated: ANY23-448 Move service and plugins out of core

This is an automated email from the ASF dual-hosted git repository.

lewismc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/any23.git


The following commit(s) were added to refs/heads/master by this push:
     new 9570214  ANY23-448 Move service and plugins out of core
9570214 is described below

commit 9570214b6f6bf83c688ddd531e3cdbd302e7710a
Author: Lewis John McGibbney <le...@gmail.com>
AuthorDate: Tue Oct 1 07:08:38 2019 -0700

    ANY23-448 Move service and plugins out of core
---
 plugins/README.md                                  |  66 ---
 plugins/basic-crawler/pom.xml                      | 206 --------
 .../src/main/assembly/LICENSE-with-deps.txt        | 251 ----------
 .../src/main/assembly/NOTICE-with-deps.txt         |  12 -
 plugins/basic-crawler/src/main/assembly/README.txt |  77 ---
 plugins/basic-crawler/src/main/assembly/bin.xml    |  69 ---
 .../main/java/org/apache/any23/cli/Crawler.java    | 164 -------
 .../any23/plugin/crawler/CrawlerListener.java      |  36 --
 .../any23/plugin/crawler/DefaultWebCrawler.java    |  74 ---
 .../apache/any23/plugin/crawler/SharedData.java    | 122 -----
 .../apache/any23/plugin/crawler/SiteCrawler.java   | 270 -----------
 .../apache/any23/plugin/crawler/package-info.java  |  22 -
 .../META-INF/services/org.apache.any23.cli.Tool    |   1 -
 .../java/org/apache/any23/cli/CrawlerTest.java     |  97 ----
 .../any23/plugin/crawler/SiteCrawlerTest.java      |  83 ----
 .../src/test/resources/log4j.properties            |  23 -
 plugins/html-scraper/pom.xml                       | 124 -----
 .../src/main/assembly/LICENSE-with-deps.txt        | 212 ---------
 .../src/main/assembly/NOTICE-with-deps.txt         |   9 -
 plugins/html-scraper/src/main/assembly/README.txt  |  77 ---
 plugins/html-scraper/src/main/assembly/bin.xml     |  67 ---
 .../plugin/htmlscraper/HTMLScraperExtractor.java   | 141 ------
 .../htmlscraper/HTMLScraperExtractorFactory.java   |  42 --
 .../any23/plugin/htmlscraper/package-info.java     |  22 -
 .../org.apache.any23.extractor.ExtractorFactory    |   1 -
 .../htmlscraper/HTMLScraperExtractorTest.java      |  87 ----
 .../htmlscraper/html-scraper-extractor-test.html   | 493 -------------------
 plugins/integration-test/pom.xml                   | 174 -------
 .../java/org/apache/any23/plugin/PluginIT.java     | 128 -----
 .../src/test/resources/log4j.properties            |  23 -
 plugins/office-scraper/pom.xml                     | 114 -----
 .../src/main/assembly/LICENSE-with-deps.txt        | 212 ---------
 .../src/main/assembly/NOTICE-with-deps.txt         |   6 -
 .../office-scraper/src/main/assembly/README.txt    |  77 ---
 plugins/office-scraper/src/main/assembly/bin.xml   |  67 ---
 .../any23/plugin/officescraper/ExcelExtractor.java | 186 --------
 .../officescraper/ExcelExtractorFactory.java       |  64 ---
 .../any23/plugin/officescraper/package-info.java   |  22 -
 .../main/java/org/apache/any23/vocab/Excel.java    | 143 ------
 .../org.apache.any23.extractor.ExtractorFactory    |   1 -
 .../plugin/officescraper/ExcelExtractorTest.java   | 130 -----
 .../plugin/officescraper/XSSFWorkbookTest.java     |  96 ----
 .../src/test/resources/log4j.properties            |  34 --
 .../any23/plugin/officescraper/test1-workbook.xlsx | Bin 29878 -> 0 bytes
 .../any23/plugin/officescraper/test2-workbook.xls  | Bin 25088 -> 0 bytes
 plugins/openie/pom.xml                             | 164 -------
 .../plugin/extractor/openie/OpenIEExtractor.java   | 149 ------
 .../extractor/openie/OpenIEExtractorFactory.java   |  52 --
 .../org.apache.any23.extractor.ExtractorFactory    |   1 -
 .../apache/any23/openie/OpenIEExtractorTest.java   |  88 ----
 pom.xml                                            |   6 -
 service/README.md                                  |  49 --
 service/pom.xml                                    | 289 ------------
 .../src/main/assembly/LICENSE-server-embedded.txt  | 426 -----------------
 service/src/main/assembly/LICENSE-with-deps.txt    | 426 -----------------
 service/src/main/assembly/LICENSE-without-deps.txt | 233 ---------
 .../src/main/assembly/NOTICE-server-embedded.txt   |  29 --
 service/src/main/assembly/NOTICE-with-deps.txt     |  21 -
 service/src/main/assembly/NOTICE-without-deps.txt  |  12 -
 service/src/main/assembly/README.txt               | 113 -----
 service/src/main/assembly/prepare-war-legals.xml   |  48 --
 service/src/main/assembly/server-embedded.xml      |  86 ----
 service/src/main/assembly/with-deps.xml            |  60 ---
 service/src/main/assembly/without-deps.xml         |  53 ---
 service/src/main/bin/any23server                   |  90 ----
 service/src/main/bin/any23server.bat               | 105 -----
 .../org/apache/any23/servlet/RedirectServlet.java  |  95 ----
 .../java/org/apache/any23/servlet/Servlet.java     | 333 -------------
 .../org/apache/any23/servlet/WebResponder.java     | 377 ---------------
 .../any23/servlet/conneg/Any23Negotiator.java      |  53 ---
 .../servlet/conneg/ContentTypeNegotiator.java      | 230 ---------
 .../any23/servlet/conneg/MediaRangeSpec.java       | 268 -----------
 .../apache/any23/servlet/conneg/package-info.java  |  21 -
 .../org/apache/any23/servlet/package-info.java     |  22 -
 service/src/main/resources/form.html               | 460 ------------------
 service/src/main/webapp/WEB-INF/web.xml            |  43 --
 .../main/webapp/resources/css/bootstrap.min.css    |   9 -
 .../webapp/resources/images/logo-any23-214x97.png  | Bin 20194 -> 0 bytes
 .../webapp/resources/images/logo-apache-90x30.png  | Bin 6323 -> 0 bytes
 .../main/webapp/resources/js/bootstrap-modal.js    | 222 ---------
 .../main/webapp/resources/js/jquery-1.7.2.min.js   |   4 -
 .../java/org/apache/any23/servlet/ServletTest.java | 525 ---------------------
 service/src/test/resources/log4j.properties        |  34 --
 .../apache/any23/servlet/missing-og-namespace.html |  30 --
 84 files changed, 9551 deletions(-)

diff --git a/plugins/README.md b/plugins/README.md
deleted file mode 100644
index 26c4091..0000000
--- a/plugins/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# Any23 Plugins
-
-This is the root dir of the Any23 Plugins module.
-
-A plugin is an extension of the Any23 core and can be plugged using
-the Plugin Manager capabilities.
-
-# Plugins
-
-## basic-crawler
-
-A CLI tool which extends the Rover CLI adding crawler specific
-capabilities.
-
-## html-scraper
-
-The HTML scraper is able to convert any HTML page to triples
-containing the text scraped from the page.
-
-## office-scraper
-
-The Office scraper is able to convert the main MS Office compatible
-formats and convert them to triples.
-
-## integration-test
-
-This module contains the integration tests for all the defined plugins.
-
-# Generate Plugin Packaging
-
-To generate the desired plugin package, navigate to the plugin directory and execute 
-```
-mvn package
-```
-e.g. to generate the basic-crawler plugin package
-```
-$cd $ANY23-HOME/plugins/basic-crawler
-$ mvn package
-```
-From the basic-crawler directory this generates
-```
-.
-|-- pom.xml
-|-- src
-|   |-- main
-|   |   |-- assembly
-|   |   `-- java
-|   `-- test
-`-- target
-    |-- any23-basic-crawler-${version}.jar
-    |-- apache-any23-basic-crawler-${version}-bin.tar.gz <<<
-    |-- apache-any23-basic-crawler-${version}-bin.zip <<<
-    |-- archive-tmp
-    |-- classes
-    |   |-- META-INF
-    |   `-- org
-    |-- generated-sources
-    |-- maven-archiver
-    |-- maven-shared-archive-resources
-    |-- surefire
-    |-- surefire-reports
-    `-- test-classes
-...
-```
-Plugin specific README's can be found in either ./target/*.tar.gz || ./target/*.zip (annotated above with '<<<'), where much more detailed information sources can be located.
-  
diff --git a/plugins/basic-crawler/pom.xml b/plugins/basic-crawler/pom.xml
deleted file mode 100644
index 685a1e7..0000000
--- a/plugins/basic-crawler/pom.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.any23</groupId>
-    <artifactId>apache-any23</artifactId>
-    <version>2.4-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.any23.plugins</groupId>
-  <artifactId>apache-any23-basic-crawler</artifactId>
-
-  <name>Apache Any23 :: Plugins :: Basic Crawler</name>
-  <description>Any23 plugin for crawling sites.</description>
-
-  <dependencies>
-    <!-- RDF4J -->
-    <dependency>
-      <groupId>org.eclipse.rdf4j</groupId>
-      <artifactId>rdf4j-model</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- Any23 Core. -->
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-cli</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-cli</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    
-    <!-- Crawler4j -->
-    <dependency>
-      <groupId>edu.uci.ics</groupId>
-      <artifactId>crawler4j</artifactId>
-      <version>4.4.0</version>
-      <type>jar</type>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-classic</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <!-- The CLI interfaces -->
-    <dependency>
-      <groupId>com.beust</groupId>
-      <artifactId>jcommander</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    
-    <!-- Logging -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- BEGIN: Test Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- END: Test Dependencies -->
-
-  </dependencies>
-
-  <build>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <!-- Solve concurrency issues in Crawler4j internal status. -->
-          <forkCount>1</forkCount>
-          <reuseForks>false</reuseForks>
-        </configuration>
-      </plugin>
-
-      <!-- Generates the distribution package -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptors>
-            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-shade-plugin</artifactId>
-        <version>3.0.0</version>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>shade</goal>
-            </goals>
-            <configuration>
-              <transformers>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                  <manifestEntries>
-                    <Main-Class>org.apache.any23.cli.Crawler</Main-Class>
-                    <Build-Number>${implementation.build}</Build-Number>
-                  </manifestEntries>
-                </transformer>
-              </transformers>
-              <filters>
-                <filter>
-                  <artifact>*:*</artifact>
-                  <excludes>
-                    <exclude>META-INF/*.SF</exclude>
-                    <exclude>META-INF/*.DSA</exclude>
-                    <exclude>META-INF/*.RSA</exclude>
-                  </excludes>
-                </filter>
-              </filters>
-              <finalName>${project.artifactId}-uber-${project.version}</finalName>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <resources>
-          <resource>
-            <directory>${basedir}/../../</directory>
-            <targetPath>${project.build.directory}/apidocs/META-INF</targetPath>
-            <includes>
-              <include>LICENSE.txt</include>
-              <include>NOTICE.txt</include>
-            </includes>
-          </resource>
-        </resources>
-      </build>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/plugins/basic-crawler/src/main/assembly/LICENSE-with-deps.txt b/plugins/basic-crawler/src/main/assembly/LICENSE-with-deps.txt
deleted file mode 100644
index 55ffc5a..0000000
--- a/plugins/basic-crawler/src/main/assembly/LICENSE-with-deps.txt
+++ /dev/null
@@ -1,251 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE ANY23 DEPENDENCIES:
-
-The Apache Any23 distribution packages include a number of dependencies with
-separate copyright notices and license terms. Your use of the source
-code for the these dependencies is subject to the terms and
-conditions of the following licenses.
-
-For the Apache HttpClient component (http://hc.apache.org/httpcomponents-client-ga/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the crawler4j component (http://code.google.com/p/crawler4j/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the sleepycat component (http://www.oracle.com/database/berkeley-db/index.html)
-Copyright (c) 2002, 2011 Oracle and/or its affiliates.  All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. Redistributions in any form must be accompanied by information on
-   how to obtain complete source code for the Oracle Berkeley DB
-   Java Edition software and any accompanying software that uses the
-   Oracle Berkeley DB Java Edition software.  The source code must
-   either be included in the distribution or be available for no
-   more than the cost of distribution plus a nominal fee, and must be
-   freely redistributable under reasonable conditions.  For an
-   executable file, complete source code means the source code for all
-   modules it contains.  It does not include source code for modules or
-   files that typically accompany the major components of the operating
-   system on which the executable file runs.
-
-THIS SOFTWARE IS PROVIDED BY ORACLE ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
-NON-INFRINGEMENT, ARE DISCLAIMED.  IN NO EVENT SHALL ORACLE BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/plugins/basic-crawler/src/main/assembly/NOTICE-with-deps.txt b/plugins/basic-crawler/src/main/assembly/NOTICE-with-deps.txt
deleted file mode 100644
index d28669a..0000000
--- a/plugins/basic-crawler/src/main/assembly/NOTICE-with-deps.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Apache Any23
-Copyright 2011-2017 The Apache Software Foundation
-Copyright 2008-2011 Digital Enterprise Research Institute (DERI)
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-UniMI (http://www.unimi.it/)
-
-This product includes software developed by
-Yasser Ganjisaffar (http://code.google.com/p/crawler4j/)
diff --git a/plugins/basic-crawler/src/main/assembly/README.txt b/plugins/basic-crawler/src/main/assembly/README.txt
deleted file mode 100644
index 0b3bf28..0000000
--- a/plugins/basic-crawler/src/main/assembly/README.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-${project.name} (${implementation.build}; ${maven.build.timestamp})
-
-  What is it?
-  -----------
-
-  ${project.description}
-
-  Documentation
-  -------------
-
-  The most up-to-date documentation can be found at ${project.parent.url}.
-
-  Release Notes
-  -------------
-
-  The full list of changes can be found at ${project.parent.url}/changes-report.html.
-
-  System Requirements
-  -------------------
-
-  JDK:
-    ${javac.target.version} or above. (see http://www.oracle.com/technetwork/java/)
-  Memory:
-    No minimum requirement.
-  Disk:
-    No minimum requirement.
-  Operating System:
-    No minimum requirement. On Windows, Windows NT and above or Cygwin is required for
-    the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.
-
-  Installing Apache Any23
-  ----------------
-
-** Windows 2000/XP
-
-  1) Unzip the distribution archive, i.e. apache-${project.build.finalName}-bin.zip
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Copy the jar files under C:\Documents and Settings\<username>\.any23\plugins
-
-** Unix-based Operating Systems (Linux, Solaris and Mac OS X)
-
-  1) Extract the distribution archive, i.e. apache-${project.build.finalName}-bin.tar.gz.
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Copy the jar files under ~/.any23/plugins
-
-  Licensing
-  ---------
-
-  Please see the file called LICENSE.TXT
-
-  Apache Any23 URLS
-  ----------
-
-  Home Page:          ${project.parent.url}/
-  Downloads:          ${project.parent.url}/download.html
-  Release Notes:      ${project.parent.url}/changes-report.html
-  Mailing Lists:      ${project.parent.url}/mail-lists.html
-  Source Code:        ${project.parent.scm.url}
-  Issue Tracking:     ${project.issueManagement.url}
-  Available Plugins:  ${project.parent.url}/plugins.html
diff --git a/plugins/basic-crawler/src/main/assembly/bin.xml b/plugins/basic-crawler/src/main/assembly/bin.xml
deleted file mode 100644
index 85401a5..0000000
--- a/plugins/basic-crawler/src/main/assembly/bin.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>bin</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}</baseDirectory>
-
-  <!-- Use the N&L files which apply to the included dependencies -->
-  <files>
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-with-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-with-deps.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/README.txt</source>
-      <filtered>true</filtered>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/../../RELEASE-NOTES.txt</source>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-  </files>
-
-  <dependencySets>
-    <dependencySet>
-      <useProjectArtifact>true</useProjectArtifact>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>${project.groupId}:${project.artifactId}</include>
-        <include>edu.uci.ics:crawler4j</include>
-        <include>org.apache.httpcomponents:*</include>
-        <include>com.sleepycat:*</include>
-      </includes>
-    </dependencySet>
-  </dependencySets>
-
-</assembly>
diff --git a/plugins/basic-crawler/src/main/java/org/apache/any23/cli/Crawler.java b/plugins/basic-crawler/src/main/java/org/apache/any23/cli/Crawler.java
deleted file mode 100644
index 8acc3dd..0000000
--- a/plugins/basic-crawler/src/main/java/org/apache/any23/cli/Crawler.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.cli;
-
-import com.beust.jcommander.IStringConverter;
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.ParameterException;
-import com.beust.jcommander.Parameters;
-import com.beust.jcommander.converters.FileConverter;
-import edu.uci.ics.crawler4j.crawler.Page;
-import edu.uci.ics.crawler4j.parser.HtmlParseData;
-import edu.uci.ics.crawler4j.parser.ParseData;
-import org.apache.any23.plugin.crawler.CrawlerListener;
-import org.apache.any23.plugin.crawler.SiteCrawler;
-import org.apache.any23.source.StringDocumentSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Locale;
-import java.util.UUID;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import static java.lang.String.format;
-
-/**
- * Implementation of a <b>CLI crawler</b> based on
- * {@link Rover}.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-@Parameters(commandNames = "crawler", commandDescription = "Any23 Crawler Command Line Tool.")
-public class Crawler extends Rover {
-
-    private static final Logger LOG = LoggerFactory.getLogger(Crawler.class);
-
-    private final Object roverLock = new Object();
-
-    @Parameter(
-       names = { "-pf", "--pagefilter" },
-       description = "Regex used to filter out page URLs during crawling.",
-       converter = PatterConverter.class
-    )
-    private Pattern pageFilter = Pattern.compile( SiteCrawler.DEFAULT_PAGE_FILTER_RE );
-
-    @Parameter(
-       names = { "-sf", "--storagefolder" },
-       description = "Folder used to store crawler temporary data.",
-       converter = FileConverter.class
-    )
-    private File storageFolder = new File(System.getProperty("java.io.tmpdir"), "crawler-metadata-" + UUID.randomUUID().toString());
-
-    @Parameter(names = { "-nc", "--numcrawlers" }, description = "Sets the number of crawlers.")
-    private int numCrawlers = SiteCrawler.DEFAULT_NUM_OF_CRAWLERS;
-
-    @Parameter(names = { "-mp", "--maxpages" }, description = "Max number of pages before interrupting crawl.")
-    private int maxPages = Integer.MAX_VALUE;
-
-    @Parameter(names = { "-md", "--maxdepth" }, description = "Max allowed crawler depth.")
-    private int maxDepth = Integer.MAX_VALUE;
-
-    @Parameter(names = { "-pd", "--politenessdelay" }, description = "Politeness delay in milliseconds.")
-    private int politenessDelay = Integer.MAX_VALUE;
-
-    @Override
-    public void run() throws Exception {
-        super.configure();
-
-        if (inputIRIs.size() != 1) {
-            throw new IllegalArgumentException("Expected just one seed.");
-        }
-        final URL seed = new URL(inputIRIs.get( 0 ));
-
-        if ( storageFolder.isFile() ) {
-            throw new IllegalStateException( format(Locale.ROOT, "Storage folder %s can not be a file, must be a directory",
-                                                     storageFolder ) );
-        }
-
-        if ( !storageFolder.exists() ) {
-            if ( !storageFolder.mkdirs() ) {
-                throw new IllegalStateException(
-                        format(Locale.ROOT, "Storage folder %s can not be created, please verify you have enough permissions",
-                                                         storageFolder ) );
-            }
-        }
-
-        final SiteCrawler siteCrawler = new SiteCrawler( storageFolder );
-        siteCrawler.setNumOfCrawlers( numCrawlers );
-        siteCrawler.setMaxPages( maxPages );
-        siteCrawler.setMaxDepth( maxDepth );
-        siteCrawler.setPolitenessDelay(politenessDelay);
-
-        siteCrawler.addListener(new CrawlerListener() {
-            @Override
-            public void visitedPage(Page page) {
-                final String pageURL = page.getWebURL().getURL();
-                LOG.info(format(Locale.ROOT, "Processing page: [%s]", pageURL) );
-
-                final ParseData parseData = page.getParseData();
-                if (parseData instanceof HtmlParseData) {
-                    final HtmlParseData htmlParseData = (HtmlParseData) parseData;
-                    try {
-                        synchronized (roverLock) {
-                            Crawler.super.performExtraction(
-                                    new StringDocumentSource(
-                                            htmlParseData.getHtml(),
-                                            pageURL
-
-                                    )
-                            );
-                        }
-                    } catch (Exception e) {
-                        LOG.error(format(Locale.ROOT, "Error while processing page [%s], error: %s .",
-                                                  pageURL, e.getMessage())
-                        );
-                    }
-                }
-            }
-        });
-
-        Runtime.getRuntime().addShutdownHook( new Thread() {
-            @Override
-            public void run() {
-                try {
-                    LOG.error(Crawler.super.printReports());
-                } catch (Exception e) {
-                    LOG.error(e.getMessage());
-                }
-            }
-        });
-        siteCrawler.start(seed, pageFilter, true);
-    }
-
-    public static final class PatterConverter implements IStringConverter<Pattern> {
-
-        @Override
-        public Pattern convert( String value ) {
-            try {
-                return Pattern.compile(value);
-            } catch (PatternSyntaxException pse) {
-                throw new ParameterException(format(Locale.ROOT, "Invalid page filter, '%s' must be a regular expression.", value) );
-            }
-        }
-
-    }
-
-}
diff --git a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/CrawlerListener.java b/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/CrawlerListener.java
deleted file mode 100644
index 31a492b..0000000
--- a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/CrawlerListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.crawler;
-
-import edu.uci.ics.crawler4j.crawler.Page;
-
-/**
- * Defines a listener for a {@link SiteCrawler}.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public interface CrawlerListener {
-
-    /**
-     * Notifies to the listener that a page has been discovered.
-     *
-     * @param page the page data.
-     */
-    void visitedPage(Page page);
-
-}
diff --git a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/DefaultWebCrawler.java b/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/DefaultWebCrawler.java
deleted file mode 100644
index 835e77d..0000000
--- a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/DefaultWebCrawler.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.crawler;
-
-import edu.uci.ics.crawler4j.crawler.Page;
-import edu.uci.ics.crawler4j.crawler.WebCrawler;
-import edu.uci.ics.crawler4j.url.WebURL;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Locale;
-import java.util.regex.Pattern;
-
-/**
- * Default {@link WebCrawler} implementation.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class DefaultWebCrawler extends WebCrawler {
-
-    private static final Logger logger = LoggerFactory.getLogger(DefaultWebCrawler.class);
-
-    /**
-     * Shared data reference.
-     */
-    private final SharedData sharedData = SharedData.getInstance();
-
-    /**
-     * Page filter pattern.
-     */
-    private final Pattern pattern = sharedData.getPattern();
-
-    /**
-     * Override this method to specify whether the given URL should be visited or not.
-     */
-
-    @Override
-    public boolean shouldVisit(Page referringPage, WebURL url) {
-        if (!super.shouldVisit(referringPage, url))
-            return false;
-        if (url.getURL() == null)
-            return false;
-        final String href = url.getURL().toLowerCase(Locale.ROOT);
-        if (!href.startsWith(sharedData.getSeed()))
-            return false;
-        return pattern == null || !pattern.matcher(href).matches();
-    }
-
-    /**
-     * Override this method to implement the single page processing logic.
-     */
-    @Override
-    public void visit(Page page) {
-        logger.trace("Visiting page: " + page.getWebURL().getURL());
-        sharedData.notifyPage(page);
-    }
-
-}
-
diff --git a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/SharedData.java b/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/SharedData.java
deleted file mode 100644
index ccb23fb..0000000
--- a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/SharedData.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.crawler;
-
-import edu.uci.ics.crawler4j.crawler.Page;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.regex.Pattern;
-
-/**
- * This class hosts shared data structures accessible
- * to all the {@link DefaultWebCrawler} instances
- * run by the {@link SiteCrawler}.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class SharedData {
-
-    /**
-     * Singleton instance.
-     */
-    private static SharedData instance;
-
-    /**
-     * Crawl seed.
-     */
-    private final String seed;
-
-    /**
-     * Crawl page filter pattern.
-     */
-    private final Pattern pattern;
-
-    /**
-     * List of crawler listeners.
-     */
-    private final List<CrawlerListener> listeners;
-
-//    /**
-//     * Output triple handler.
-//     */
-//    private final TripleHandler tripleHandler;
-
-    /**
-     * @return the singleton instance.
-     */
-    protected static SharedData getInstance() {
-        if(instance == null) throw new IllegalStateException("The configuration has not yet initialized.");
-        return instance;
-    }
-
-    /**
-     * Initializes the crawler data.
-     *
-     * @param seed crawler seed.
-     * @param regex page filter regex.
-     * @param listeners the listeners to be notified of the crawler activity.
-     */
-    protected static void setCrawlData(String seed, Pattern regex, List<CrawlerListener> listeners) {
-        instance = new SharedData(seed, regex, listeners);
-    }
-
-    /**
-     * Internal constructor.
-     *
-     * @param seed
-     * @param pattern
-     * @param listeners
-     */
-    private SharedData(String seed, Pattern pattern, List<CrawlerListener> listeners) {
-        if(seed == null || seed.trim().length() == 0)
-            throw new IllegalArgumentException(
-                String.format(Locale.ROOT, "Invalid seed '%s'", seed)
-            );
-
-        this.seed      = seed;
-        this.pattern   = pattern;
-        this.listeners = listeners;
-    }
-
-    /**
-     * @return crawl seed.
-     */
-    protected String getSeed() {
-        return seed;
-    }
-
-    /**
-     * @return page filter pattern.
-     */
-    protected Pattern getPattern() {
-        return pattern;
-    }
-
-    /**
-     * Notifies all listeners that a page has been discovered.
-     *
-     * @param page the discovered page.
-     */
-    protected void notifyPage(Page page) {
-        for(CrawlerListener listener : listeners) {
-            listener.visitedPage(page);
-        }
-    }
-
-}
diff --git a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/SiteCrawler.java b/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/SiteCrawler.java
deleted file mode 100644
index 7fd0d48..0000000
--- a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/SiteCrawler.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.crawler;
-
-import edu.uci.ics.crawler4j.crawler.CrawlConfig;
-import edu.uci.ics.crawler4j.crawler.CrawlController;
-import edu.uci.ics.crawler4j.crawler.WebCrawler;
-import edu.uci.ics.crawler4j.fetcher.PageFetcher;
-import edu.uci.ics.crawler4j.robotstxt.RobotstxtConfig;
-import edu.uci.ics.crawler4j.robotstxt.RobotstxtServer;
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.regex.Pattern;
-
-/**
- * A basic <em>site crawler</em> to extract semantic content
- * of small/medium size sites.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class SiteCrawler {
-
-    public static final String DEFAULT_PAGE_FILTER_RE =
-        ".*(\\.(" +
-                    "css|js"                            +
-                    "|bmp|gif|jpe?g|png|tiff?"          +
-                    "|mid|mp2|mp3|mp4|wav|wma"          +
-                    "|avi|mov|mpeg|ram|m4v|wmv|rm|smil" +
-                    "|pdf"        +
-                    "|swf"        +
-                    "|zip|rar|gz" +
-                    "|xml|txt"    +
-        "))$";
-
-    /**
-     * Default number of crawler instances.
-     */
-    public static final int DEFAULT_NUM_OF_CRAWLERS = 10;
-
-    /**
-     * Default crawler implementation.
-     */
-    public static final Class<? extends WebCrawler> DEFAULT_WEB_CRAWLER = DefaultWebCrawler.class;
-
-    /**
-     * Default filter applied to skip contents.
-     */
-    public final Pattern defaultFilters = Pattern.compile(DEFAULT_PAGE_FILTER_RE);
-
-    /**
-     * The crawler threads controller.
-     */
-    private final CrawlController controller;
-
-    /**
-     * Crawler listeners.
-     */
-    private final List<CrawlerListener> listeners = new ArrayList<CrawlerListener>();
-
-    /**
-     * Actual number of crawler instances.
-     */
-    private int numOfCrawlers = DEFAULT_NUM_OF_CRAWLERS;
-
-    /**
-     * Actual web crawler.
-     */
-    private Class<? extends WebCrawler> webCrawler = DEFAULT_WEB_CRAWLER;
-
-    /**
-     * Internal crawler configuration.
-     */
-    private final CrawlConfig crawlConfig;
-
-    /**
-     * Internal executor service.
-     */
-    private ExecutorService service;
-
-    /**
-     * Constructor.
-     *
-     * @param storageFolder location used to store the temporary data structures used by the crawler.
-     */
-    public SiteCrawler(File storageFolder) {
-        try {
-            crawlConfig = new CrawlConfig();
-            crawlConfig.setCrawlStorageFolder( storageFolder.getAbsolutePath() );
-            crawlConfig.setUserAgentString("Apache Any23 Web Crawler");
-            
-            final PageFetcher pageFetcher = new PageFetcher(crawlConfig);
-
-            RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
-            final RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
-            
-            controller = new CrawlController(crawlConfig, pageFetcher, robotstxtServer);
-        } catch (Exception e) {
-            throw new IllegalArgumentException("Error while initializing crawler controller.", e);
-        }
-    }
-
-    /**
-     * @return number of crawler instances.
-     */
-    public int getNumOfCrawlers() {
-        return numOfCrawlers;
-    }
-
-    /**
-     * Sets the number of crawler instances.
-     *
-     * @param n an integer &gt;= 0.
-     */
-    public void setNumOfCrawlers(int n) {
-        if(n <=0) throw new IllegalArgumentException("Invalid number of crawlers, must be > 0 .");
-        this.numOfCrawlers = n;
-    }
-
-    public Class<? extends WebCrawler> getWebCrawler() {
-        return webCrawler;
-    }
-
-    /**
-     * Sets the actual crawler class.
-     *
-     * @param c a not <code>class</code>.
-     */
-    public void setWebCrawler(Class<? extends WebCrawler> c) {
-        if(c == null) throw new NullPointerException("c cannot be null.");
-        this.webCrawler = c;
-    }
-
-    /**
-     * @return the max allowed crawl depth, <code>-1</code> means no limit.
-     */
-    public int getMaxDepth() {
-        return crawlConfig.getMaxDepthOfCrawling();
-    }
-
-    /**
-     * Sets the maximum depth.
-     *
-     * @param maxDepth maximum allowed depth. <code>-1</code> means no limit.
-     */
-    public void setMaxDepth(int maxDepth) {
-        if(maxDepth < -1 || maxDepth == 0) throw new IllegalArgumentException("Invalid maxDepth, must be -1 or > 0");
-        crawlConfig.setMaxDepthOfCrawling(maxDepth);
-    }
-
-    /**
-     * @return max number of allowed pages.
-     */
-    public int getMaxPages() {
-        return crawlConfig.getMaxPagesToFetch();
-    }
-
-    /**
-     * Sets the maximum collected pages.
-     *
-     * @param maxPages maximum allowed pages. <code>-1</code> means no limit.
-     */
-    public void setMaxPages(int maxPages) {
-        if(maxPages < -1 || maxPages == 0) throw new IllegalArgumentException("Invalid maxPages, must be -1 or > 0");
-        crawlConfig.setMaxPagesToFetch(maxPages);
-    }
-
-    /**
-     * @return the politeness delay in milliseconds.
-     */
-    public int getPolitenessDelay() {
-        return crawlConfig.getPolitenessDelay();
-    }
-
-    /**
-     * Sets the politeness delay.
-     *
-     * @param millis delay in milliseconds.
-     */
-    public void setPolitenessDelay(int millis) {
-        if(millis >= 0) crawlConfig.setPolitenessDelay(millis);
-    }
-
-    /**
-     * Registers a {@link CrawlerListener} to this crawler.
-     *
-     * @param listener a {@link org.apache.any23.plugin.crawler.CrawlerListener} 
-     * implementation which listens for page discovery
-     */
-    public void addListener(CrawlerListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     * Deregisters a {@link CrawlerListener} from this crawler.
-     *
-     * @param listener a {@link org.apache.any23.plugin.crawler.CrawlerListener} 
-     * implementation which listens for page discovery
-     */
-    public void removeListener(CrawlerListener listener) {
-        listeners.remove(listener);
-    }
-
-    /**
-     * Starts the crawling process.
-     *
-     * @param seed the starting URL for the crawler process.
-     * @param filters filters to be applied to the crawler process. Can be <code>null</code>.
-     * @param wait if <code>true</code> the process will wait for the crawler termination.
-     * @throws Exception if an error occurred during crawler initiation
-     */
-    public synchronized void start(
-            final URL seed, final Pattern filters, final boolean wait
-    ) throws Exception {
-        SharedData.setCrawlData(seed.toExternalForm(), filters, Collections.synchronizedList(listeners) );
-        controller.addSeed(seed.toExternalForm());
-        final Runnable internalRunnable = new Runnable() {
-            @Override
-            public void run() {
-                controller.start(getWebCrawler(), getNumOfCrawlers());
-            }
-        };
-        if(wait) {
-            internalRunnable.run();
-        } else {
-            if(service != null) throw new IllegalStateException("Another service seems to run.");
-            service = Executors.newSingleThreadExecutor();
-            service.execute(internalRunnable);
-        }
-    }
-
-    /**
-     * Starts the crawler process with the {@link #defaultFilters}.
-     *
-     * @param seed the starting URL for the crawler process.
-     * @param wait if <code>true</code> the process will wait for the crawler termination.
-     * @throws Exception if an error occurred during crawler initiation
-     */
-    public void start(final URL seed, final boolean wait) throws Exception {
-        start(seed, defaultFilters, wait);
-    }
-
-    /**
-     * Interrupts the crawler process if started with <code>wait</code> flag == <code>false</code>.
-     */
-    public synchronized void stop() {
-        service.shutdownNow();
-    }
-
-}
diff --git a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/package-info.java b/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/package-info.java
deleted file mode 100644
index 450ba8b..0000000
--- a/plugins/basic-crawler/src/main/java/org/apache/any23/plugin/crawler/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- *  <i>Commandline</i> extension of {@link org.apache.any23.cli.Rover} able
- *  to extract semantic content from an entire <i>site</i>.
- */
-package org.apache.any23.plugin.crawler;
diff --git a/plugins/basic-crawler/src/main/resources/META-INF/services/org.apache.any23.cli.Tool b/plugins/basic-crawler/src/main/resources/META-INF/services/org.apache.any23.cli.Tool
deleted file mode 100644
index cd000e0..0000000
--- a/plugins/basic-crawler/src/main/resources/META-INF/services/org.apache.any23.cli.Tool
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.any23.cli.Crawler
\ No newline at end of file
diff --git a/plugins/basic-crawler/src/test/java/org/apache/any23/cli/CrawlerTest.java b/plugins/basic-crawler/src/test/java/org/apache/any23/cli/CrawlerTest.java
deleted file mode 100644
index 0e6cd29..0000000
--- a/plugins/basic-crawler/src/test/java/org/apache/any23/cli/CrawlerTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.cli;
-
-import org.apache.any23.Any23OnlineTestBase;
-import org.apache.any23.rdf.RDFUtils;
-import org.apache.any23.util.FileUtils;
-import org.junit.Test;
-import org.eclipse.rdf4j.model.Statement;
-import org.eclipse.rdf4j.rio.RDFFormat;
-import org.eclipse.rdf4j.rio.RDFHandlerException;
-import org.eclipse.rdf4j.rio.RDFParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import static org.junit.Assert.assertTrue;
-
-/**
- * Test case for {@link Crawler} CLI.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class CrawlerTest extends Any23OnlineTestBase {
-
-    public static final Logger logger = LoggerFactory.getLogger(CrawlerTest.class);
-
-    @Test
-    public void testCLI() throws IOException, RDFHandlerException, RDFParseException {
-        assumeOnlineAllowed();
-
-        final File outFile = File.createTempFile("crawler-test", ".nq", tempDirectory);
-        outFile.delete();
-        logger.info( "Outfile: " + outFile.getAbsolutePath() );
-
-        final Future<?> future = Executors.newSingleThreadExecutor().submit(
-            new Runnable() {
-                @Override
-                public void run() {
-                    try {
-                        ToolRunner.main(
-                                String.format(
-                                        "crawler -f nquads --maxpages 50 --maxdepth 1 --politenessdelay 500 -o %s " +
-                                        "http://any23.apache.org",
-                                        outFile.getAbsolutePath()
-                                ).split(" ")
-                        );
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-        );
-
-        try {
-            future.get(10, TimeUnit.SECONDS);
-        } catch (Exception e) {
-            // OK.
-            if( ! (e instanceof TimeoutException) ) {
-                e.printStackTrace();
-            }
-        }
-        assertTrue("The output file has not been created.", outFile.exists());
-
-        final String[] lines = FileUtils.readFileLines(outFile);
-        final StringBuilder allLinesExceptLast = new StringBuilder();
-        for (int i = 0; i < lines.length - 1; i++) {
-            allLinesExceptLast.append(lines[i]);
-            allLinesExceptLast.append("\n");
-        }
-
-        final Statement[] statements = RDFUtils.parseRDF(RDFFormat.NQUADS, allLinesExceptLast.toString());
-        assertTrue(statements.length > 0);
-    }
-
-}
diff --git a/plugins/basic-crawler/src/test/java/org/apache/any23/plugin/crawler/SiteCrawlerTest.java b/plugins/basic-crawler/src/test/java/org/apache/any23/plugin/crawler/SiteCrawlerTest.java
deleted file mode 100644
index 5c7fc02..0000000
--- a/plugins/basic-crawler/src/test/java/org/apache/any23/plugin/crawler/SiteCrawlerTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.crawler;
-
-import edu.uci.ics.crawler4j.crawler.Page;
-import org.apache.any23.Any23OnlineTestBase;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.net.URL;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.Iterator;
-
-/**
- * Test case for {@link SiteCrawler}.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class SiteCrawlerTest extends Any23OnlineTestBase {
-
-    public static final Logger logger = LoggerFactory.getLogger(SiteCrawlerTest.class);
-
-    /**
-     * Tests the main crawler use case.
-     *
-     * @throws Exception if there is an error asserting test data
-     */
-    @Test
-    public void testSiteCrawling() throws Exception {
-        assumeOnlineAllowed();
-
-        File tmpFile = File.createTempFile("site-crawler-test", ".storage");
-        tmpFile.delete();
-
-        final SiteCrawler controller = new SiteCrawler(tmpFile);
-        controller.setMaxPages(100);
-        logger.info("Crawler4j: Setting max num of pages to: " + controller.getMaxPages());
-        controller.setPolitenessDelay(500);
-        logger.info("Crawler4j: Setting Politeness delay to: " + controller.getPolitenessDelay() + "ms");
-
-        final Set<String> distinctPages = new HashSet<String>();
-        controller.addListener(new CrawlerListener() {
-            @Override
-            public void visitedPage(Page page) {
-                distinctPages.add( page.getWebURL().getURL() );
-                Iterator<String> it = distinctPages.iterator();
-                while (it.hasNext()) {
-                    logger.info("Crawler4j: Fetching page - " + it.next());
-                }
-            }
-        });
-
-        controller.start( new URL("http://any23.apache.org/"), false);
-
-        synchronized (this) {
-            this.wait(15 * 1000);
-        }
-        controller.stop();
-
-        logger.info("Distinct pages: " + distinctPages.size());
-        Assert.assertTrue("Expected some page crawled.", distinctPages.size() > 0);
-    }
-
-}
diff --git a/plugins/basic-crawler/src/test/resources/log4j.properties b/plugins/basic-crawler/src/test/resources/log4j.properties
deleted file mode 100644
index d715976..0000000
--- a/plugins/basic-crawler/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=INFO, stdout
-
-log4j.appender.stdout.Threshold=INFO
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
-log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %m%n
diff --git a/plugins/html-scraper/pom.xml b/plugins/html-scraper/pom.xml
deleted file mode 100644
index 4ed4594..0000000
--- a/plugins/html-scraper/pom.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.any23</groupId>
-    <artifactId>apache-any23</artifactId>
-    <version>2.4-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.any23.plugins</groupId>
-  <artifactId>apache-any23-html-scraper</artifactId>
-
-  <name>Apache Any23 :: Plugins :: HTML Scraper</name>
-  <description>Any23 plugin for scraping HTML code.</description>
-
-  <dependencies>
-    <!-- RDF4J -->
-    <dependency>
-      <groupId>org.eclipse.rdf4j</groupId>
-      <artifactId>rdf4j-model</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- Any23 Core. -->
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- BEGIN: BoilerPipe -->
-    <dependency>
-      <groupId>net.sourceforge.nekohtml</groupId>
-      <artifactId>nekohtml</artifactId>
-      <version>1.9.22</version>
-    </dependency>
-    <dependency>
-      <groupId>xerces</groupId>
-      <artifactId>xercesImpl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>de.l3s.boilerpipe</groupId>
-      <artifactId>boilerpipe</artifactId>
-    </dependency>
-    <!-- END: BoilerPipe -->
-
-    <!-- Logging -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <version>${slf4j.logger.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <!-- BEGIN: Test Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- END: Test Dependencies -->
-
-  </dependencies>
-
-  <build>
-
-    <plugins>
-      <!-- Generates the distribution package -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptors>
-            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <resources>
-          <resource>
-            <directory>${basedir}/../../</directory>
-            <targetPath>${project.build.directory}/apidocs/META-INF</targetPath>
-            <includes>
-              <include>LICENSE.txt</include>
-              <include>NOTICE.txt</include>
-            </includes>
-          </resource>
-        </resources>
-      </build>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/plugins/html-scraper/src/main/assembly/LICENSE-with-deps.txt b/plugins/html-scraper/src/main/assembly/LICENSE-with-deps.txt
deleted file mode 100644
index 5010c05..0000000
--- a/plugins/html-scraper/src/main/assembly/LICENSE-with-deps.txt
+++ /dev/null
@@ -1,212 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE ANY23 DEPENDENCIES:
-
-The Apache Any23 distribution packages include a number of dependencies with
-separate copyright notices and license terms. Your use of the source
-code for the these dependencies is subject to the terms and
-conditions of the following licenses.
-
-For the boilerpipe component (http://code.google.com/p/boilerpipe/)
-This is licensed under the The Apache Software License, Version 2.0, see above
diff --git a/plugins/html-scraper/src/main/assembly/NOTICE-with-deps.txt b/plugins/html-scraper/src/main/assembly/NOTICE-with-deps.txt
deleted file mode 100644
index 104dba8..0000000
--- a/plugins/html-scraper/src/main/assembly/NOTICE-with-deps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Apache Any23
-Copyright 2011-2017 The Apache Software Foundation
-Copyright 2008-2011 Digital Enterprise Research Institute (DERI)
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Christian Kohlschuetter (http://code.google.com/p/boilerpipe/)
diff --git a/plugins/html-scraper/src/main/assembly/README.txt b/plugins/html-scraper/src/main/assembly/README.txt
deleted file mode 100644
index 0b3bf28..0000000
--- a/plugins/html-scraper/src/main/assembly/README.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-${project.name} (${implementation.build}; ${maven.build.timestamp})
-
-  What is it?
-  -----------
-
-  ${project.description}
-
-  Documentation
-  -------------
-
-  The most up-to-date documentation can be found at ${project.parent.url}.
-
-  Release Notes
-  -------------
-
-  The full list of changes can be found at ${project.parent.url}/changes-report.html.
-
-  System Requirements
-  -------------------
-
-  JDK:
-    ${javac.target.version} or above. (see http://www.oracle.com/technetwork/java/)
-  Memory:
-    No minimum requirement.
-  Disk:
-    No minimum requirement.
-  Operating System:
-    No minimum requirement. On Windows, Windows NT and above or Cygwin is required for
-    the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.
-
-  Installing Apache Any23
-  ----------------
-
-** Windows 2000/XP
-
-  1) Unzip the distribution archive, i.e. apache-${project.build.finalName}-bin.zip
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Copy the jar files under C:\Documents and Settings\<username>\.any23\plugins
-
-** Unix-based Operating Systems (Linux, Solaris and Mac OS X)
-
-  1) Extract the distribution archive, i.e. apache-${project.build.finalName}-bin.tar.gz.
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Copy the jar files under ~/.any23/plugins
-
-  Licensing
-  ---------
-
-  Please see the file called LICENSE.TXT
-
-  Apache Any23 URLS
-  ----------
-
-  Home Page:          ${project.parent.url}/
-  Downloads:          ${project.parent.url}/download.html
-  Release Notes:      ${project.parent.url}/changes-report.html
-  Mailing Lists:      ${project.parent.url}/mail-lists.html
-  Source Code:        ${project.parent.scm.url}
-  Issue Tracking:     ${project.issueManagement.url}
-  Available Plugins:  ${project.parent.url}/plugins.html
diff --git a/plugins/html-scraper/src/main/assembly/bin.xml b/plugins/html-scraper/src/main/assembly/bin.xml
deleted file mode 100644
index 68570df..0000000
--- a/plugins/html-scraper/src/main/assembly/bin.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>bin</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}</baseDirectory>
-
-  <!-- Use the N&L files which apply to the included dependencies -->
-  <files>
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-with-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-with-deps.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/README.txt</source>
-      <filtered>true</filtered>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/../../RELEASE-NOTES.txt</source>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-  </files>
-
-  <dependencySets>
-    <dependencySet>
-      <useProjectArtifact>true</useProjectArtifact>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>${project.groupId}:${project.artifactId}</include>
-        <include>de.l3s.boilerpipe:boilerpipe</include>
-      </includes>
-    </dependencySet>
-  </dependencySets>
-
-</assembly>
diff --git a/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractor.java b/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractor.java
deleted file mode 100644
index 0f6af9d..0000000
--- a/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractor.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.htmlscraper;
-
-import de.l3s.boilerpipe.BoilerpipeExtractor;
-import de.l3s.boilerpipe.BoilerpipeProcessingException;
-import de.l3s.boilerpipe.extractors.ArticleExtractor;
-import de.l3s.boilerpipe.extractors.CanolaExtractor;
-import de.l3s.boilerpipe.extractors.DefaultExtractor;
-import de.l3s.boilerpipe.extractors.LargestContentExtractor;
-import org.apache.any23.extractor.ExtractionContext;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractionResult;
-import org.apache.any23.extractor.Extractor;
-import org.apache.any23.extractor.ExtractorDescription;
-import org.apache.any23.vocab.SINDICE;
-import org.eclipse.rdf4j.model.IRI;
-import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implementation of content extractor for performing <i>HTML</i> scraping.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class HTMLScraperExtractor implements Extractor.ContentExtractor {
-
-    public static final IRI PAGE_CONTENT_DE_PROPERTY  =
-            SimpleValueFactory.getInstance().createIRI(SINDICE.NS + "pagecontent/de");
-    public static final IRI PAGE_CONTENT_AE_PROPERTY  =
-            SimpleValueFactory.getInstance().createIRI(SINDICE.NS + "pagecontent/ae");
-    public static final IRI PAGE_CONTENT_LCE_PROPERTY =
-            SimpleValueFactory.getInstance().createIRI(SINDICE.NS + "pagecontent/lce");
-    public static final IRI PAGE_CONTENT_CE_PROPERTY  =
-            SimpleValueFactory.getInstance().createIRI(SINDICE.NS + "pagecontent/ce");
-
-    private final List<ExtractionRule> extractionRules = new ArrayList<>();
-
-    public HTMLScraperExtractor() {
-        loadDefaultRules();
-    }
-
-    public void addTextExtractor(String name, IRI property, BoilerpipeExtractor extractor) {
-        extractionRules.add( new ExtractionRule(name, property, extractor) );
-    }
-
-    public String[] getTextExtractors() {
-        final List<String> extractors = new ArrayList<>();
-        for(ExtractionRule er : extractionRules) {
-            extractors.add(er.name);
-        }
-        return extractors.toArray( new String[extractors.size()] );
-    }
-
-    @Override
-    public void run(
-            ExtractionParameters extractionParameters,
-            ExtractionContext extractionContext,
-            InputStream inputStream,
-            ExtractionResult extractionResult
-    ) throws IOException, ExtractionException {
-        try {
-            final IRI documentIRI = extractionContext.getDocumentIRI();
-            for (ExtractionRule extractionRule : extractionRules) {
-                final String content = extractionRule.boilerpipeExtractor.getText(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
-                extractionResult.writeTriple(
-                        documentIRI,
-                        extractionRule.property,
-                        SimpleValueFactory.getInstance().createLiteral(content)
-                );
-            }
-        } catch (BoilerpipeProcessingException bpe) {
-            throw new ExtractionException("Error while applying text processor " + ArticleExtractor.class, bpe);
-        }
-    }
-
-    @Override
-    public ExtractorDescription getDescription() {
-        return HTMLScraperExtractorFactory.getDescriptionInstance();
-    }
-
-    @Override
-    public void setStopAtFirstError(boolean b) {
-        // Ignored.
-    }
-
-    private void loadDefaultRules() {
-        addTextExtractor("default-extractor"      , PAGE_CONTENT_DE_PROPERTY , DefaultExtractor.getInstance());
-        addTextExtractor("article-extractor"      , PAGE_CONTENT_AE_PROPERTY , ArticleExtractor.getInstance());
-        addTextExtractor("large-content-extractor", PAGE_CONTENT_LCE_PROPERTY, LargestContentExtractor.getInstance());
-        addTextExtractor("canola-extractor"       , PAGE_CONTENT_CE_PROPERTY , CanolaExtractor.getInstance());
-    }
-
-    /**
-     * This class associates a <i>BoilerPipe</i> extractor with the property going to host the extracted content.
-     */
-    class ExtractionRule {
-
-        public final String name;
-        public final IRI property;
-        public final BoilerpipeExtractor boilerpipeExtractor;
-
-        ExtractionRule(String name, IRI property, BoilerpipeExtractor boilerpipeExtractor) {
-            if(name == null) {
-                throw new NullPointerException("name cannot be null.");
-            }
-            if(property == null) {
-                throw new NullPointerException("property cannot be null.");
-            }
-            if(boilerpipeExtractor == null) {
-                throw new NullPointerException("extractor cannot be null.");
-            }
-            this.name = name;
-            this.property = property;
-            this.boilerpipeExtractor = boilerpipeExtractor;
-        }
-
-    }
-}
diff --git a/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractorFactory.java b/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractorFactory.java
deleted file mode 100644
index 25a9992..0000000
--- a/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractorFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 
- */
-package org.apache.any23.plugin.htmlscraper;
-
-import java.util.Arrays;
-
-import org.apache.any23.extractor.ExtractorDescription;
-import org.apache.any23.extractor.ExtractorFactory;
-import org.apache.any23.extractor.SimpleExtractorFactory;
-import org.apache.any23.rdf.Prefixes;
-
-/**
- * @author Peter Ansell p_ansell@yahoo.com
- *
- */
-public class HTMLScraperExtractorFactory extends SimpleExtractorFactory<HTMLScraperExtractor> implements
-        ExtractorFactory<HTMLScraperExtractor> {
-
-    public static final String NAME = "html-scraper";
-    
-    public static final Prefixes PREFIXES = null;
-
-    private static final ExtractorDescription descriptionInstance = new HTMLScraperExtractorFactory();
-    
-    public HTMLScraperExtractorFactory() {
-        super(
-                HTMLScraperExtractorFactory.NAME, 
-                HTMLScraperExtractorFactory.PREFIXES,
-                Arrays.asList("text/html;q=0.02", "application/xhtml+xml;q=0.02"),
-                null);
-    }
-    
-    @Override
-    public HTMLScraperExtractor createExtractor() {
-        return new HTMLScraperExtractor();
-    }
-
-    public static ExtractorDescription getDescriptionInstance() {
-        return descriptionInstance;
-    }
-}
diff --git a/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/package-info.java b/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/package-info.java
deleted file mode 100644
index 441a4de..0000000
--- a/plugins/html-scraper/src/main/java/org/apache/any23/plugin/htmlscraper/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * The {@link org.apache.any23.plugin.htmlscraper.HTMLScraperExtractor} is a special extractor
- * to scrape textual content from a generic <i>HTML</i> pages.
- */
-package org.apache.any23.plugin.htmlscraper;
diff --git a/plugins/html-scraper/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory b/plugins/html-scraper/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory
deleted file mode 100644
index 30e75c2..0000000
--- a/plugins/html-scraper/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.any23.plugin.htmlscraper.HTMLScraperExtractorFactory
\ No newline at end of file
diff --git a/plugins/html-scraper/src/test/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractorTest.java b/plugins/html-scraper/src/test/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractorTest.java
deleted file mode 100644
index 4d7b0f3..0000000
--- a/plugins/html-scraper/src/test/java/org/apache/any23/plugin/htmlscraper/HTMLScraperExtractorTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.htmlscraper;
-
-import org.apache.any23.extractor.ExtractionContext;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractionResult;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.eclipse.rdf4j.model.IRI;
-import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.HashSet;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-/**
- * Test case for {@link HTMLScraperExtractor}.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class HTMLScraperExtractorTest {
-
-    private HTMLScraperExtractor extractor;
-
-    @Before
-    public void setUp() {
-        extractor = new HTMLScraperExtractorFactory().createExtractor();
-    }
-
-    @After
-    public void tearDown() {
-        extractor = null;
-    }
-
-    @Test
-    public void testGetExtractors() {
-        final String[] extractors = extractor.getTextExtractors();
-        Assert.assertEquals( new HashSet<>(Arrays.asList(extractors)).size(), 4 );
-    }
-
-    @Test
-    public void testRun() throws IOException, ExtractionException {
-        final InputStream is = this.getClass().getResourceAsStream("html-scraper-extractor-test.html");
-        final ExtractionResult extractionResult = mock(ExtractionResult.class);
-        final IRI pageIRI = SimpleValueFactory.getInstance().createIRI("http://fake/test/page/testrun");
-        final ExtractionContext extractionContext = new ExtractionContext(
-                extractor.getDescription().getExtractorName(),
-                pageIRI
-        );
-        extractor.run(ExtractionParameters.newDefault(), extractionContext, is, extractionResult);
-
-        verify(extractionResult).writeTriple(
-                eq(pageIRI), eq(HTMLScraperExtractor.PAGE_CONTENT_DE_PROPERTY), any());
-        verify(extractionResult).writeTriple(
-                eq(pageIRI), eq(HTMLScraperExtractor.PAGE_CONTENT_AE_PROPERTY), any());
-        verify(extractionResult).writeTriple(
-                eq(pageIRI), eq(HTMLScraperExtractor.PAGE_CONTENT_LCE_PROPERTY), any());
-        verify(extractionResult).writeTriple(
-                eq(pageIRI), eq(HTMLScraperExtractor.PAGE_CONTENT_CE_PROPERTY), any());
-    }
-
-}
diff --git a/plugins/html-scraper/src/test/resources/org/apache/any23/plugin/htmlscraper/html-scraper-extractor-test.html b/plugins/html-scraper/src/test/resources/org/apache/any23/plugin/htmlscraper/html-scraper-extractor-test.html
deleted file mode 100644
index 6ec92fb..0000000
--- a/plugins/html-scraper/src/test/resources/org/apache/any23/plugin/htmlscraper/html-scraper-extractor-test.html
+++ /dev/null
@@ -1,493 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:svg="http://www.w3.org/2000/svg">
-<head>
-    <title>Sindice - The semantic web index</title>
-    <meta http-equiv="Content-Type" content="xhtml/xml; charset=UTF-8"/>
-    <link type="text/css" rel="stylesheet" href="/stylesheets/site.css"/>
-
-    <link rel="search"
-          type="application/opensearchdescription+xml"
-          href="http://sindice.com/opensearch-term.xml"
-          title="Sindice Term Search"/>
-    <link rel="search"
-          type="application/opensearchdescription+xml"
-          href="http://sindice.com/opensearch-advanced.xml"
-          title="Sindice Triple Search"/>
-    <link type="image/gif" rel="icon" href="/favicon.gif"/>
-    <link type="image/vnd.microsoft.icon" rel="shortcut icon" href="/favicon.ico"/>
-
-    <link href="/javascripts/jquery/css/start/jquery-ui-1.8.1.custom.css?1291645617" media="screen" rel="stylesheet"
-          type="text/css"/>
-    <link href="/javascripts/jquery/css/blue/style.css?1291645617" media="screen" rel="stylesheet" type="text/css"/>
-    <link href="/javascripts/jsTree/source/tree_component.css?1291645617" media="screen" rel="stylesheet"
-          type="text/css"/>
-    <link href="/javascripts/jquery/js/jquery.jcarousel.css?1291645617" media="screen" rel="stylesheet"
-          type="text/css"/>
-    <link href="/javascripts/jquery/css/jcarousel/tango/skin.css?1291645617" media="screen" rel="stylesheet"
-          type="text/css"/>
-
-
-    <script type="text/javascript" src="/javascripts/jquery/js/jquery-1.4.2.min.js"></script>
-    <script type="text/javascript" src="/javascripts/jquery/js/jquery-ui-1.8.1.custom.min.js"></script>
-    <script src="/javascripts/jquery/js/jquery.jcarousel.min.js?1291645617" type="text/javascript"></script>
-    <script src="/javascripts/replacePrefix.js?1291645618" type="text/javascript"></script>
-    <script src="/javascripts/jquery/js/jquery.tablesorter.min.js?1291645617" type="text/javascript"></script>
-    <script src="/javascripts/jsTree/_lib/css.js?1291645617" type="text/javascript"></script>
-    <script src="/javascripts/jsTree/source/tree_component.js?1291645617" type="text/javascript"></script>
-    <script src="/javascripts/idleDetector.js?1291645618" type="text/javascript"></script>
-    <script src="/javascripts/mainPage.js?1291645618" type="text/javascript"></script>
-</head>
-<body>
-<div class="hidden"><a href="#main">Skip to contents</a></div>
-<div id="header" style="position:relative;" class="container fixedWidth">
-    <div class="columnL span-3">
-        <div id="logo"><a href="/"><img src="/images/logo.png" height="80" width="240" alt="Sindice" title=""/></a>
-        </div>
-        <!-- /column -->
-    </div>
-    <div class="columnR span-8a last">
-        <ul id="nav" class="_">
-            <li class="_"><a href="/">Home</a></li>
-            <li class="_"><a href="/main/about">About</a></li>
-            <li class="_"><a href="/search">Search</a></li>
-            <li class="_"><a href="/main/submit">Submit</a></li>
-            <li class="_"><a href="/main/forum">Forum</a></li>
-            <li class="_"><a href="/developers/welcome">Dev</a></li>
-        </ul>
-        <!-- /column -->
-    </div>
-    <div style="float: right; font-size: 11px; color: rgb(166, 201, 226); position:absolute; bottom:0; right:4px;"
-         id="frontendVersion">
-        web01
-        <a href="/main/changes#version-2.0.1">Version: 2.0.1</a>
-    </div>
-    <!-- /header -->
-</div>
-
-<div id="main" class="container fixedWidth">
-<div id="intro" class="clear">
-
-
-    <div class="column span-6">
-        <h1>Sindice - Data Web Services</h1>
-
-        <div id="about">
-
-            <p>
-                Billion pieces of reusable information can already be found
-                across hundreds of millions web pages which embed RDF and Microformats. Start
-                consuming this data today with Sindice Data Web services.
-            </p>
-
-            <a href="/main/about"><img src="/images/learn-more-white.png" alt="Learn more"/></a>
-
-            <!-- /padding -->
-        </div>
-
-        <!-- /column -->
-    </div>
-
-
-    <div class="column span-6 last">
-        <div id="search-w">
-            <ul class="clear">
-                <li title="search" class="current frontendTab">
-                    Search
-                </li>
-                <li title="submit" class="frontendTab">
-                    Submit
-                </li>
-                <li title="search-inspect" class="frontendTab">
-                    Inspector Tool
-                </li>
-            </ul>
-
-
-            <div id="search" class="frontendTabContent">
-                <h2>Search: </h2>
-
-                <div style="float:left;border:none;">
-                    <input class="search-types-radio" type="radio" name="search-types" id="term-type" value="term"
-                           checked="checked"/><label class="search-type-label" for="term-type">term</label>
-                    <input class="search-types-radio" type="radio" name="search-types" id="property-type"
-                           value="property"/><label class="search-type-label" for="property-type">property</label>
-                    <input class="search-types-radio" type="radio" name="search-types" id="advanced-type"
-                           value="advanced"/><label class="search-type-label" for="advanced-type">advanced</label>
-                    <input class="search-types-radio" type="radio" name="search-types" id="sigma-type"
-                           value="sigma"/><label class="search-type-label" for="sigma-type"><img
-                        style="vertical-align:sub; width:46px;margin-top:6px;" src="/images/sig.ma-about.png"/></label>
-                </div>
-                <div class="search-types" id="search-type-term">
-                    <form action="/search" method="get">
-                        <input onfocus="if (this.value=='Type one or more keywords or IRI') {this.value=''} else {this.select()}; return true;"
-                               type="text" name="q" size="45" value="Type one or more keywords or IRI"/>
-                        <button type="submit" class="inspectButton">
-                            SEARCH
-                        </button>
-                    </form>
-		        <span class="tip">Examples:
-		          <a href="/search?q=tim%20berners%20lee">tim berners lee</a>
-		          (by <a href="/search?q=http%3A%2F%2Fwww.w3.org%2FPeople%2FBerners-Lee%2Fcard">IRI</a>),
-		          <a href="/search?q=michele">michele</a>, <a href="/search?q=deri">deri</a></span>
-
-                    <div style="height:1em;">
-                        <div class="search-numbers-small documentNumberTotal" style="display:none;">
-                            <span>Searching on about </span><span class="totalNo"></span><span> documents.</span>
-                        </div>
-                    </div>
-                </div>
-
-                <div class="search-types" style="display:none;" id="search-type-property">
-                    <form method="get" action="/search">
-                        <input type="text" name="predicate" id="predicate" value="foaf:mbox" size="20"/>
-                        <input type="text" name="value" id="value" value="mailto:timbl@w3.org" size="20"
-                               style="margin-right: 7px;"/>
-                        <button id="propertySearch" class="inspectButton">
-                            SEARCH
-                        </button>
-                    </form>
-                    <script type="text/javascript">
-                        jQuery(document).ready(function() {
-                            jQuery("#propertySearch").click(function() {
-                                var predicate = "<" + jQuery("#predicate").val() + ">";
-
-                                var value = jQuery("#value").val();
-                                if (value.indexOf("http") === 0) {
-                                    value = "<" + value + ">";
-                                } else {
-                                    value = '"' + value + '"';
-                                }
-
-                                var nq = "* " + predicate + " " + value;
-                                document.location.href = "/search?nq=" + encodeURIComponent(nq);
-                                return false;
-                            });
-                        });
-                    </script>
-			        <span class="tip">Examples:
-			          <a href="/search?nq=*+<foaf%3Aknows>+<http%3A%2F%2Frichard.cyganiak.de%2Ffoaf.rdf>">Richard's
-                          contacts</a>,
-			          <a href="/search?nq=*+<foaf%3AworkplaceHomepage>+<http%3A%2F%2Fwww.deri.ie>">deri people</a>,
-			        </span>
-
-                    <div style="height:1em;">
-                        <div class="search-numbers-small documentNumberTotal" style="display:none;">
-                            <span>Searching on about </span><span class="totalNo"></span><span> documents.</span>
-                        </div>
-                    </div>
-                </div>
-
-
-                <div class="search-types" style="display:none;" id="search-type-advanced">
-                    <form method="get" action="/search">
-                        <input type="text" value="Type triple query" size="45" name="nq"
-                               onfocus="if (this.value=='Type triple query') {this.value=''} else {this.select()}; return true;"/>
-
-                        <button type="submit" class="inspectButton">
-                            SEARCH
-                        </button>
-                    </form>
-				        <span class="tip">
-				        <a href="developers/api#Querylanguages-AdvancedSearch">Query Language Documentation</a>,
-				        Example:
-				          <a href="/search?nq=*+%3Cvcard%3Atitle%3E+%27research%27">self confessed researchers</a>
-				        </span>
-
-                    <div style="height:1em;">
-                        <div class="search-numbers-small documentNumberTotal" style="display:none;">
-                            <span>Searching on about </span><span class="totalNo"></span><span> documents.</span>
-                        </div>
-                    </div>
-                </div>
-                <div class="search-types" style="display:none;" id="search-type-sigma">
-
-                    <input id="sigma-search-input" type="text" value="Type keyword query" size="45" name="q"
-                           onfocus="if (this.value=='Type keyword query') {this.value=''} else {this.select()}; return true;"/>
-
-                    <button type="submit" class="inspectButton" id="sigma-search-button">
-                        SEARCH
-                    </button>
-                    <br/>
-					        <span class="tip">Example:
-					          <a href="http://sig.ma/search?q=Michael%20Jackson">Michael Jackson</a>,
-					          <a href="http://sig.ma/search?q=Tim%20Berners%20Lee">Tim Berners Lee</a>,
-					          <a href="http://sig.ma/search?q=Barack%20Obama">Barack Obama</a>
-					        </span>
-
-                    <div style="height:1em;">
-                        <div class="search-numbers-small">
-                            Sig.ma - Live views on the Web of Data.
-                        </div>
-                    </div>
-
-                </div>
-            </div>
-
-
-            <div id="search-inspect" style="display:none;" class="frontendTabContent">
-                <h2 style="margin-bottom:2px;">Inspect a web page for structured data content</h2>
-                <input id="inspect-search-input" type="text" value="http://www.deri.ie/about/team/" size="45" name="q"
-                       onfocus="if (this.value=='http://www.deri.ie/about/team/') {this.value=''} else {this.select()}; return true;"/>
-                <button class="inspectButton" type="submit" id="inspect-search-button">
-                    INSPECT
-                </button>
-                <br/>
-        <span class="tip">
-        <a href="http://inspector.sindice.com">The Web Data Inspector</a>
-        </span>
-
-                <div style="height:1em;">
-                    <div class="search-numbers-small">
-                        shows how Sindice sees your structured data markup.
-                    </div>
-                </div>
-            </div>
-
-            <div id="submit" style="display:none;" class="frontendTabContent">
-                <h2 style="margin-bottom:2px;">Submit a URL of a page with microformats, RDFa markup or RDF files</h2>
-
-                <form method="post" action="/api/v2/ping">
-                    <input size="45" type="text" name="url" id="url" value="http://www.deri.ie/about/team/"
-                           onfocus="if (this.value=='http://www.deri.ie/about/team/') {this.value=''} else {this.select()}; return true;"/>
-                    <button type="submit" class="inspectButton">
-                        SUBMIT
-                    </button>
-                </form>
-        <span class="tip">
-        Use the
-        <a href="/main/submit">full submit form</a>
-        </span>
-
-                <div style="height:1em;">
-                    <div class="search-numbers-small">
-                        to submit multiple pages or semantic sitemaps.
-                    </div>
-                </div>
-            </div>
-
-        </div>
-
-        <!-- /column -->
-    </div>
-
-    <!-- /intro -->
-</div>
-
-<div id="content" class="clear">
-
-
-    <div class="column span-6 equalColumn">
-
-
-        <div class="smallbox pubsub">
-            <h2>
-                <span>Latest data</span>
-                <a class="latestData" style="display:none;" href="/search?q=date%3Atoday&qt=term">
-                    <span class="last24"></span><span> documents processed today</span>
-                </a>
-            </h2>
-
-            <div style="clear:both;"></div>
-            <div id="jcarousel" class="jcarousel-skin-tango">
-                <ul></ul>
-            </div>
-            <script type="text/javascript">
-                var LATEST_DATA_WIDGET_SERVLET_URL = "http://api.sindice.com/latest-data-widget/latest-data-widget";
-            </script>
-            <script src="/javascripts/latest-data-widget.js?1297082337" type="text/javascript"></script>
-        </div>
-
-
-        <div id="latest-news" class="smallbox">
-            <h2>Highlights</h2>
-
-            <div id="gallery">
-                <a href="http://blog.sindice.com/2010/02/19/any23-v0-2-released/" class="show">
-                    <img src="/images/slideshow/any23-logo.png" alt="Anything to triples" alt=""
-                         title="" class="galeryImage"
-                         rel="<h3>any23</h3>Anything to Triples. New version - <b>Now available</b>"/>
-                </a>
-
-                <a href="http://siren.sindice.com">
-                    <img src="/images/slideshow/x-siren.png" alt="SIREn" alt=""
-                         title="" class="galeryImage"
-                         rel="<h3>SIREn</h3><b>Open Source!</b> Efficient Information Retrieval for Lucene"/>
-                </a>
-
-                <a href="http://sig.ma">
-                    <img src="/images/slideshow/x-sigma.png" alt="Sig.ma" alt=""
-                         title="" class="galeryImage"
-                         rel="<h3>Sig.ma</h3>See how Sindice is powering <b>Sigma</b>, live views on the Web of Data"/>
-                </a>
-
-                <a href="http://inspector.sindice.com/inspect">
-                    <img src="/images/slideshow/x-inspector.png" alt="Web data inspector" alt=""
-                         title="" class="galeryImage"
-                         rel="<h3>Web Data Inspector</h3>tool + Full Sindice Cache (with reasoning!) - <b>Now available</b>"/>
-                </a>
-
-                <div class="caption">
-                    <div class="content"></div>
-                </div>
-            </div>
-        </div>
-        <script src="/javascripts/gallery.js?1291645618" type="text/javascript"></script>
-
-
-        <div id="dev" class="smallbox">
-
-            <h2>Developers: start consuming the Web of Data</h2>
-
-            <div>
-                <img style="float:right" src="/images/icon-rdf-dev.png" alt="RDF Developer" width="106" height="60"/>
-
-                <p>
-                    Add value and cool features to your application by using our restful
-                    APIs and JS widgets.
-                    Let us help you finding the right data and the way to access it!
-                </p>
-
-                <p>
-                    How do I build my application? <a href="/developers/api">API documentation</a>
-                </p>
-                <img style="float:right" src="/images/mf-lg-ora.png" alt="Microformat" width="106" height="50"/>
-                <!--
-            <p>
-            What Data, which sources? <a href="/map">Map of the Web of Data</a>
-            </p>
-            -->
-                <p>
-                    Questions? Ideas? <a href="http://groups.google.com/group/sindice-dev">Sindice-dev</a> group.
-                </p>
-                <a href="/developers/welcome">
-                    <img src="/images/learn-more-green.png" alt="Learn more"/>
-                </a>
-            </div>
-
-            <!-- /dev -->
-        </div>
-
-
-        <!-- /column -->
-    </div>
-
-    <div class="column span-6 last equalColumn">
-
-
-        <div id="blog" class="box">
-            <h2 class="clear"><span><a href="http://blog.sindice.com">Sindice Blog</a></span>
-        <span class="feed">
-          <a href="http://blog.sindice.com/feed/atom/">Feed</a>
-        </span>
-            </h2>
-
-            <div class="blogEntriesBox">
-
-                <!-- v0.715358440328743 -->
-                <ul>
-                    <li>
-                        <div class="clear title">
-                            <h3><a href="http://blog.sindice.com/?p=273">Sindice migration</a></h3>
-                            <span class="date">Nov 26, 2010</span>
-                        </div>
-                        <p>This is mainly a test post to verify that the Sindice blog continues to work after migrating
-                            it to a new server. (<a href="http://blog.sindice.com/?p=273">More&nbsp;&rarr;</a>)</p>
-                    </li>
-                    <li>
-                        <div class="clear title">
-                            <h3><a href="http://blog.sindice.com/?p=264">Sindice now supports Efficient Data discovery
-                                and Sync</a></h3>
-                            <span class="date">Jul 09, 2010</span>
-                        </div>
-                        <p>So far semantic web search engines and semantic aggregation services have been inserting
-                            datasets by hand or have been based on &#8220;ran... (<a
-                                    href="http://blog.sindice.com/?p=264">More&nbsp;&rarr;</a>)</p>
-                    </li>
-                    <li>
-                        <div class="clear title">
-                            <h3><a href="http://blog.sindice.com/?p=258">Sindice planned downtime this weekend</a></h3>
-                            <span class="date">Jun 09, 2010</span>
-                        </div>
-                        <p>HiDue to an expansion of one of our datacentres (and the electrical work that this implies),
-                            Sindice and related services such as sig.ma w... (<a href="http://blog.sindice.com/?p=258">More&nbsp;&rarr;</a>)
-                        </p>
-                    </li>
-                    <li>
-                        <div class="clear title">
-                            <h3><a href="http://blog.sindice.com/?p=240">Any23 v0.4.0 Released</a></h3>
-                            <span class="date">May 27, 2010</span>
-                        </div>
-                        <p>Dear All, the Sindice FBK team is proud to announce the Any23 0.4.0 release. (<a
-                                href="http://blog.sindice.com/?p=240">More&nbsp;&rarr;</a>)</p>
-                    </li>
-                    <li>
-                        <div class="clear title">
-                            <h3><a href="http://blog.sindice.com/?p=225">Any23 v0.3.0 Released</a></h3>
-                            <span class="date">Apr 23, 2010</span>
-                        </div>
-                        <p>Dear All, we&#8217;re pleased to announce the Any23 0.3.0 releasePlease keep in mind this is
-                            a beta, so everybody using Any23 in a develop... (<a href="http://blog.sindice.com/?p=225">More&nbsp;&rarr;</a>)
-                        </p>
-                    </li>
-
-                </ul>
-
-
-                <div class="archives">
-                    <a href="http://blog.sindice.com/">More blog posts &rarr;</a>
-                </div>
-
-            </div>
-        </div>
-
-        <!-- /column -->
-    </div>
-</div>
-
-</div>
-
-<div id="footer" class="container clear fixedWidth">
-    <div class="span-6" style="float:left;">
-        <p>
-            <a href="/">Home</a> |
-            <a href="/main/about">About</a> |
-            <a href="/search">Search</a> |
-            <a href="/main/submit">Submit</a> |
-            <a href="/main/forum">Forum</a> |
-            <a href="/developers/welcome">Dev</a>
-        </p>
-        <!-- /column -->
-    </div>
-
-    <div style="text-align: right;float:right !important;" class="span-6 last">
-        <p>
-            <a href="http://blog.sindice.com">Blog</a> |
-            <a href="/developers/feedback">Contact</a> |
-            Copyright &copy; 2008-2011 <a href="http://www.deri.ie">DERI</a>
-        </p>
-        <!-- /column -->
-    </div>
-    <!-- /footer -->
-</div>
-<div style="clear:both;"></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/integration-test/pom.xml b/plugins/integration-test/pom.xml
deleted file mode 100644
index fe8d385..0000000
--- a/plugins/integration-test/pom.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.any23</groupId>
-    <artifactId>apache-any23</artifactId>
-    <version>2.4-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.any23.plugins</groupId>
-  <artifactId>apache-any23-integration-test</artifactId>
-
-  <name>Apache Any23 :: Plugins :: Integration Test</name>
-  <description>Any23 plugin integration test module.</description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-cli</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.any23.plugins</groupId>
-      <artifactId>apache-any23-html-scraper</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.any23.plugins</groupId>
-      <artifactId>apache-any23-office-scraper</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-      <dependency>
-      <groupId>org.apache.any23.plugins</groupId>
-      <artifactId>apache-any23-basic-crawler</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.any23.plugins</groupId>
-      <artifactId>apache-any23-openie</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-
-    <!-- BEGIN: Test Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- END: Test Dependencies -->
-
-  </dependencies>
-
-  <build>
-
-    <plugins>
-      <!-- skip assembly generation for ITs -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <skipAssembly>true</skipAssembly>
-        </configuration>
-      </plugin>
-
-      <!--
-        Detect any plugin declared within the ./plugin classes,
-        for each one performs a compilation and a dependency distribution.
-        Such step is required for the subsequent integration test.
-      -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-invoker-plugin</artifactId>
-        <configuration>
-          <projectsDirectory>..</projectsDirectory>
-          <cloneProjectsTo>${project.build.directory}/plugins-build</cloneProjectsTo>
-          <pomIncludes>
-            <pomInclude>*/pom.xml</pomInclude>
-          </pomIncludes>
-          <pomExcludes>
-            <pomExclude>integration-test/*</pomExclude>
-          </pomExcludes>
-          <properties>
-            <assembly.skip>true</assembly.skip>
-          </properties>
-          <goals>
-            <goal>clean</goal>
-            <goal>dependency:copy-dependencies</goal>
-            <goal>integration-test</goal>
-          </goals>
-        </configuration>
-        <executions>
-          <execution>
-            <phase>verify</phase>
-            <goals>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <!--
-        Runs the integration tests declared in this module.
-        An integration test ends by IT.java
-      -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <executions>
-          <execution>
-            <phase>verify</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-            <configuration>
-              <skip>false</skip>
-              <excludes>
-                <exclude>none</exclude>
-              </excludes>
-              <includes>
-                <include>**/*IT.java</include>
-              </includes>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <resources>
-          <resource>
-            <directory>${basedir}/../../</directory>
-            <targetPath>${project.build.directory}/apidocs/META-INF</targetPath>
-            <includes>
-              <include>LICENSE.txt</include>
-              <include>NOTICE.txt</include>
-            </includes>
-          </resource>
-        </resources>
-      </build>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/plugins/integration-test/src/test/java/org/apache/any23/plugin/PluginIT.java b/plugins/integration-test/src/test/java/org/apache/any23/plugin/PluginIT.java
deleted file mode 100644
index 351280a..0000000
--- a/plugins/integration-test/src/test/java/org/apache/any23/plugin/PluginIT.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin;
-
-import org.apache.any23.cli.Crawler;
-import org.apache.any23.cli.Tool;
-import org.apache.any23.extractor.ExtractorGroup;
-import org.apache.any23.extractor.ExtractorRegistryImpl;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-/**
- * Integration test for plugins.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class PluginIT {
-
-    private static final int NUM_OF_EXTRACTORS_INCL_OPENIE = 37;
-    
-    private static final int NUM_OF_EXTRACTORS_EXCL_OPENIE = 36;
-
-    private static final String PLUGIN_DIR = "target/plugins-build/";
-
-    private static final File HTML_SCRAPER_TARGET_DIR       = new File(PLUGIN_DIR + "html-scraper/target/classes");
-    private static final File HTML_SCRAPER_DEPENDENCY_DIR   = new File(PLUGIN_DIR + "html-scraper/target/dependency");
-
-    private static final File OFFICE_SCRAPER_TARGET_DIR     = new File(PLUGIN_DIR + "office-scraper/target/classes");
-    private static final File OFFICE_SCRAPER_DEPENDENCY_DIR = new File(PLUGIN_DIR + "office-scraper/target/dependency");
-
-    private static final File CRAWLER_TARGET_DIR     = new File(PLUGIN_DIR + "basic-crawler/target/classes");
-    private static final File CRAWLER_DEPENDENCY_DIR = new File(PLUGIN_DIR + "basic-crawler/target/dependency");
-
-    private static final File OPENIE_TARGET_DIR     = new File(PLUGIN_DIR + "openie/target/classes");
-    private static final File OPENIE_DEPENDENCY_DIR = new File(PLUGIN_DIR + "openie/target/dependency");
-
-    private Any23PluginManager manager;
-
-    @Before
-    public void before() {
-        manager = Any23PluginManager.getInstance();
-    }
-
-    @After
-    public void after() {
-        manager = null;
-    }
-
-    /**
-     * {@link org.apache.any23.extractor.Extractor} plugins detection testing.
-     *
-     * @throws IOException
-     * @throws InstantiationException
-     * @throws IllegalAccessException
-     */
-    @Test
-    public void testDetectExtractorPlugins() throws IOException, InstantiationException, IllegalAccessException {
-        final ExtractorGroup extractorGroup = manager.getApplicableExtractors(
-                new ExtractorRegistryImpl(),
-                HTML_SCRAPER_TARGET_DIR,
-                HTML_SCRAPER_DEPENDENCY_DIR,
-                OFFICE_SCRAPER_TARGET_DIR,
-                OFFICE_SCRAPER_DEPENDENCY_DIR,
-                OPENIE_TARGET_DIR,
-                OPENIE_DEPENDENCY_DIR
-        );
-        try {
-          Class.forName("org.apache.any23.plugin.extractor.openie.OpenIEExtractor", false, this.getClass().getClassLoader());
-          assertEquals("Did not find the number of expected extractors", NUM_OF_EXTRACTORS_INCL_OPENIE ,
-                  extractorGroup.getNumOfExtractors()
-          );
-        } catch (ClassNotFoundException e) {
-          assertEquals("Did not find the number of expected extractors", NUM_OF_EXTRACTORS_EXCL_OPENIE ,
-                  extractorGroup.getNumOfExtractors()
-          );
-        }
-    }
-
-    /**
-     * {@link Tool} plugins detection testing.
-     *
-     * @throws IOException
-     */
-    @Test
-    public void testDetectCLIPlugins() throws IOException {
-        final Iterator<Tool> tools = manager.getApplicableTools(CRAWLER_TARGET_DIR, CRAWLER_DEPENDENCY_DIR);
-        final Set<String> toolClasses = new HashSet<String>();
-        Tool tool;
-        while(tools.hasNext()) {
-            tool = tools.next();
-            assertTrue("Found duplicate tool.", toolClasses.add(tool.getClass().getName()));
-        }
-        assertTrue(
-                String.format(
-                        "Expected [%s] plugin to be detected, but it is not found in the built classpath.",
-                        Crawler.class.getName()
-                ),
-                toolClasses.contains(Crawler.class.getName())
-        );
-        assertEquals(7, toolClasses.size()); // core CLIs
-    }
-
-}
diff --git a/plugins/integration-test/src/test/resources/log4j.properties b/plugins/integration-test/src/test/resources/log4j.properties
deleted file mode 100644
index d715976..0000000
--- a/plugins/integration-test/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=INFO, stdout
-
-log4j.appender.stdout.Threshold=INFO
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
-log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %m%n
diff --git a/plugins/office-scraper/pom.xml b/plugins/office-scraper/pom.xml
deleted file mode 100644
index 8c0d821..0000000
--- a/plugins/office-scraper/pom.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.any23</groupId>
-    <artifactId>apache-any23</artifactId>
-    <version>2.4-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.any23.plugins</groupId>
-  <artifactId>apache-any23-office-scraper</artifactId>
-
-  <name>Apache Any23 :: Plugins :: Office Scraper</name>
-  <description>Any23 plugin for scraping metadata from MS Office related file formats.</description>
-
-  <dependencies>
-    <!-- RDF4J -->
-    <dependency>
-      <groupId>org.eclipse.rdf4j</groupId>
-      <artifactId>rdf4j-model</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- Any23 Core. -->
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- Apache POI -->
-    <dependency>
-      <groupId>org.apache.poi</groupId>
-      <artifactId>poi</artifactId>
-    </dependency>
-    
-    <!-- Logging -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <version>${slf4j.logger.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <!-- BEGIN: Test Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- END: Test Dependencies -->
-
-  </dependencies>
-
-  <build>
-
-    <plugins>
-      <!-- Generates the distribution package -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptors>
-            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <resources>
-          <resource>
-            <directory>${basedir}/../../</directory>
-            <targetPath>${project.build.directory}/apidocs/META-INF</targetPath>
-            <includes>
-              <include>LICENSE.txt</include>
-              <include>NOTICE.txt</include>
-            </includes>
-          </resource>
-        </resources>
-      </build>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/plugins/office-scraper/src/main/assembly/LICENSE-with-deps.txt b/plugins/office-scraper/src/main/assembly/LICENSE-with-deps.txt
deleted file mode 100644
index 4fe12ff..0000000
--- a/plugins/office-scraper/src/main/assembly/LICENSE-with-deps.txt
+++ /dev/null
@@ -1,212 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE ANY23 DEPENDENCIES:
-
-The Apache Any23 distribution packages include a number of dependencies with
-separate copyright notices and license terms. Your use of the source
-code for the these dependencies is subject to the terms and
-conditions of the following licenses.
-
-For the Apache POI component (http://poi.apache.org/)
-This is licensed under the The Apache Software License, Version 2.0, see above
diff --git a/plugins/office-scraper/src/main/assembly/NOTICE-with-deps.txt b/plugins/office-scraper/src/main/assembly/NOTICE-with-deps.txt
deleted file mode 100644
index 341fcb5..0000000
--- a/plugins/office-scraper/src/main/assembly/NOTICE-with-deps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache Any23
-Copyright 2011-2017 The Apache Software Foundation
-Copyright 2008-2011 Digital Enterprise Research Institute (DERI)
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/plugins/office-scraper/src/main/assembly/README.txt b/plugins/office-scraper/src/main/assembly/README.txt
deleted file mode 100644
index 0b3bf28..0000000
--- a/plugins/office-scraper/src/main/assembly/README.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-${project.name} (${implementation.build}; ${maven.build.timestamp})
-
-  What is it?
-  -----------
-
-  ${project.description}
-
-  Documentation
-  -------------
-
-  The most up-to-date documentation can be found at ${project.parent.url}.
-
-  Release Notes
-  -------------
-
-  The full list of changes can be found at ${project.parent.url}/changes-report.html.
-
-  System Requirements
-  -------------------
-
-  JDK:
-    ${javac.target.version} or above. (see http://www.oracle.com/technetwork/java/)
-  Memory:
-    No minimum requirement.
-  Disk:
-    No minimum requirement.
-  Operating System:
-    No minimum requirement. On Windows, Windows NT and above or Cygwin is required for
-    the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.
-
-  Installing Apache Any23
-  ----------------
-
-** Windows 2000/XP
-
-  1) Unzip the distribution archive, i.e. apache-${project.build.finalName}-bin.zip
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Copy the jar files under C:\Documents and Settings\<username>\.any23\plugins
-
-** Unix-based Operating Systems (Linux, Solaris and Mac OS X)
-
-  1) Extract the distribution archive, i.e. apache-${project.build.finalName}-bin.tar.gz.
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Copy the jar files under ~/.any23/plugins
-
-  Licensing
-  ---------
-
-  Please see the file called LICENSE.TXT
-
-  Apache Any23 URLS
-  ----------
-
-  Home Page:          ${project.parent.url}/
-  Downloads:          ${project.parent.url}/download.html
-  Release Notes:      ${project.parent.url}/changes-report.html
-  Mailing Lists:      ${project.parent.url}/mail-lists.html
-  Source Code:        ${project.parent.scm.url}
-  Issue Tracking:     ${project.issueManagement.url}
-  Available Plugins:  ${project.parent.url}/plugins.html
diff --git a/plugins/office-scraper/src/main/assembly/bin.xml b/plugins/office-scraper/src/main/assembly/bin.xml
deleted file mode 100644
index 06b91f1..0000000
--- a/plugins/office-scraper/src/main/assembly/bin.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>bin</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}</baseDirectory>
-
-  <!-- Use the N&L files which apply to the included dependencies -->
-  <files>
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-with-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-with-deps.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/README.txt</source>
-      <filtered>true</filtered>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/../../RELEASE-NOTES.txt</source>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-  </files>
-
-  <dependencySets>
-    <dependencySet>
-      <useProjectArtifact>true</useProjectArtifact>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>${project.groupId}:${project.artifactId}</include>
-        <include>org.apache.poi:poi</include>
-      </includes>
-    </dependencySet>
-  </dependencySets>
-
-</assembly>
diff --git a/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/ExcelExtractor.java b/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/ExcelExtractor.java
deleted file mode 100644
index 5d12b6f..0000000
--- a/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/ExcelExtractor.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.officescraper;
-
-import org.apache.any23.extractor.ExtractionContext;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractionResult;
-import org.apache.any23.extractor.Extractor;
-import org.apache.any23.extractor.ExtractorDescription;
-import org.apache.any23.rdf.RDFUtils;
-import org.apache.any23.vocab.Excel;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellType;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.eclipse.rdf4j.model.IRI;
-import org.eclipse.rdf4j.model.vocabulary.RDF;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Locale;
-
-/**
- * Implementation of {@link org.apache.any23.extractor.Extractor.ContentExtractor} able to process
- * a <i>MS Excel 97-2007+</i> file format <i>.xls/.xlsx</i> and
- * convert the detected content to triples.
- * This extractor is based on
- * <a href="http://poi.apache.org/spreadsheet/index.html">Apache POI-HSSF and POI-XSSF Java API</a>.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class ExcelExtractor implements Extractor.ContentExtractor {
-
-    private static final Excel excel = Excel.getInstance();
-
-    private boolean stopAtFirstError = false;
-
-    public ExcelExtractor() {}
-
-    public boolean isStopAtFirstError() {
-        return stopAtFirstError;
-    }
-
-    @Override
-    public void setStopAtFirstError(boolean f) {
-        stopAtFirstError = f;
-    }
-
-    @Override
-    public ExtractorDescription getDescription() {
-        return ExcelExtractorFactory.getDescriptionInstance();
-    }
-
-    @Override
-    public void run(
-            ExtractionParameters extractionParameters,
-            ExtractionContext context,
-            InputStream in,
-            ExtractionResult er
-    ) throws IOException, ExtractionException {
-        try {
-            final IRI documentIRI = context.getDocumentIRI();
-            final Workbook workbook = createWorkbook(documentIRI, in);
-            processWorkbook(documentIRI, workbook, er);
-        } catch (Exception e) {
-            throw new ExtractionException("An error occurred while extracting MS Excel content.", e);
-        }
-    }
-
-    // TODO: this should be done by Tika, the extractors should be split.
-    private Workbook createWorkbook(IRI document, InputStream is) throws IOException {
-        final String documentIRI = document.toString();
-        if (documentIRI.endsWith(".xlsx")) {
-            return new XSSFWorkbook(is);
-        } else if (documentIRI.endsWith("xls")) {
-            return new HSSFWorkbook(is);
-        } else {
-            throw new IllegalArgumentException("Unsupported extension for resource [" + documentIRI + "]");
-        }
-    }
-
-    private void processWorkbook(IRI documentIRI, Workbook wb, ExtractionResult er) {
-        for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
-            final Sheet sheet = wb.getSheetAt(sheetIndex);
-            final IRI sheetIRI = getSheetIRI(documentIRI, sheet);
-            er.writeTriple(documentIRI, excel.containsSheet, sheetIRI);
-            er.writeTriple(sheetIRI, RDF.TYPE, excel.sheet);
-            writeSheetMetadata(sheetIRI, sheet, er);
-            for (Row row : sheet) {
-                final IRI rowIRI = getRowIRI(sheetIRI, row);
-                er.writeTriple(sheetIRI, excel.containsRow, rowIRI);
-                er.writeTriple(rowIRI, RDF.TYPE, excel.row);
-                writeRowMetadata(rowIRI, row, er);
-                for (Cell cell : row) {
-                    writeCell(rowIRI, cell, er);
-                }
-            }
-        }
-    }
-
-    private void writeSheetMetadata(IRI sheetIRI, Sheet sheet, ExtractionResult er) {
-        final String sheetName   = sheet.getSheetName();
-        final int    firstRowNum = sheet.getFirstRowNum();
-        final int    lastRowNum  = sheet.getLastRowNum();
-        er.writeTriple(sheetIRI, excel.sheetName, RDFUtils.literal(sheetName));
-        er.writeTriple(sheetIRI, excel.firstRow, RDFUtils.literal(firstRowNum));
-        er.writeTriple(sheetIRI, excel.lastRow, RDFUtils.literal(lastRowNum));
-    }
-
-    private void writeRowMetadata(IRI rowIRI, Row row, ExtractionResult er) {
-        final int    firstCellNum = row.getFirstCellNum();
-        final int    lastCellNum  = row.getLastCellNum();
-        er.writeTriple(rowIRI, excel.firstCell , RDFUtils.literal(firstCellNum));
-        er.writeTriple(rowIRI, excel.lastCell  , RDFUtils.literal(lastCellNum ));
-    }
-
-    private void writeCell(IRI rowIRI, Cell cell, ExtractionResult er) {
-        final IRI cellType = cellTypeToType(cell.getCellType());
-        if (cellType == null)
-            return; // Skip unsupported cells.
-        final IRI cellIRI = getCellIRI(rowIRI, cell);
-        er.writeTriple(rowIRI, excel.containsCell, cellIRI);
-        er.writeTriple(cellIRI, RDF.TYPE, excel.cell);
-        er.writeTriple(
-                cellIRI,
-                excel.cellValue,
-                RDFUtils.literal(cell.getStringCellValue(), cellType)
-        );
-    }
-
-    private IRI getSheetIRI(IRI documentIRI, Sheet sheet) {
-        return RDFUtils.iri(documentIRI.toString() + "/sheet/" + sheet.getSheetName());
-    }
-
-    private IRI getRowIRI(IRI sheetIRI, Row row) {
-        return RDFUtils.iri(sheetIRI.toString() + "/" + row.getRowNum());
-    }
-
-    private IRI getCellIRI(IRI rowIRI, Cell cell) {
-        return RDFUtils.iri(rowIRI +
-                String.format(Locale.ROOT, "/%d/", cell.getColumnIndex()));
-    }
-
-    private IRI cellTypeToType(CellType cellType) {
-        final String postfix;
-        if (cellType == null) {
-            postfix = null;
-        } else {
-            switch (cellType) {
-                case STRING:
-                    postfix = "string";
-                    break;
-                case BOOLEAN:
-                    postfix = "boolean";
-                    break;
-                case NUMERIC:
-                    postfix = "numeric";
-                    break;
-                default:
-                    postfix = null;
-            }
-        }
-        return postfix == null ? null : RDFUtils.iri(excel.getNamespace().toString() + postfix);
-    }
-
-
-}
diff --git a/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/ExcelExtractorFactory.java b/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/ExcelExtractorFactory.java
deleted file mode 100644
index 2515bf0..0000000
--- a/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/ExcelExtractorFactory.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.officescraper;
-
-import java.util.Arrays;
-
-import org.apache.any23.extractor.ExtractorDescription;
-import org.apache.any23.extractor.ExtractorFactory;
-import org.apache.any23.extractor.SimpleExtractorFactory;
-import org.apache.any23.rdf.Prefixes;
-
-/**
- * @author Peter Ansell p_ansell@yahoo.com
- *
- */
-public class ExcelExtractorFactory extends SimpleExtractorFactory<ExcelExtractor> implements
-        ExtractorFactory<ExcelExtractor> {
-
-    public static final String NAME = "excel";
-    
-    public static final Prefixes PREFIXES = null;
-
-    private static final ExtractorDescription descriptionInstance = new ExcelExtractorFactory();
-    
-    public ExcelExtractorFactory() {
-        super(
-                ExcelExtractorFactory.NAME, 
-                ExcelExtractorFactory.PREFIXES,
-                Arrays.asList(
-                        "application/vnd.ms-excel;q=0.1",
-                        "application/msexcel;q=0.1",
-                        "application/x-msexcel;q=0.1",
-                        "application/x-ms-excel;q=0.1",
-                        "application/x-tika-ooxml;q=0.1",
-                        "application/x-tika-msoffice;q=0.1",
-                        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;q=0.1"
-                ),
-                null);
-    }
-    
-    @Override
-    public ExcelExtractor createExtractor() {
-        return new ExcelExtractor();
-    }
-
-    public static ExtractorDescription getDescriptionInstance() {
-        return descriptionInstance;
-    }
-}
diff --git a/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/package-info.java b/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/package-info.java
deleted file mode 100644
index 17fc3cc..0000000
--- a/plugins/office-scraper/src/main/java/org/apache/any23/plugin/officescraper/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * This package defines a set of {@link org.apache.any23.extractor.Extractor}s
- * able to extract metadata from various <i>Microsoft Office</i> documents.
- */
-package org.apache.any23.plugin.officescraper;
\ No newline at end of file
diff --git a/plugins/office-scraper/src/main/java/org/apache/any23/vocab/Excel.java b/plugins/office-scraper/src/main/java/org/apache/any23/vocab/Excel.java
deleted file mode 100644
index 7fc5bbc..0000000
--- a/plugins/office-scraper/src/main/java/org/apache/any23/vocab/Excel.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.vocab;
-
-import org.eclipse.rdf4j.model.IRI;
-
-/**
- * The <i>MS Excel</i> extractor vocabulary.
- *
- * @see org.apache.any23.plugin.officescraper.ExcelExtractor
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class Excel extends Vocabulary {
-
-    public static final String SHEET = "sheet";
-    public static final String ROW   = "row";
-    public static final String CELL  = "cell";
-
-    public static final String CONTAINS_SHEET = "containsSheet";
-    public static final String CONTAINS_ROW   = "containsRow";
-    public static final String CONTAINS_CELL  = "containsCell";
-    public static final String CELL_VALUE     = "cellValue";
-
-
-    public static final String SHEET_NAME = "sheetName";
-    public static final String FIRST_ROW  = "firstRow";
-    public static final String LAST_ROW   = "lastRow";
-    public static final String FIRST_CELL = "firstCell";
-    public static final String LAST_CELL  = "lastCell";
-
-    /**
-     * This property links the identifier of a <i>document</i> to the identifier of a <i>sheet</i>.
-     */
-    public final IRI containsSheet = createProperty(CONTAINS_SHEET);
-
-    /**
-     * This property links the identifier of a <i>sheet</i> to the identifier of a <i>row</i>.
-     */
-    public final IRI containsRow = createProperty(CONTAINS_ROW);
-
-    /**
-     * This property links the identifier of a <i>row</i> to the identifier of a <i>cell</i>.
-     */
-    public final IRI containsCell = createProperty(CONTAINS_CELL);
-
-    /**
-     * This property links the identifier of a <i>Sheet</i> to the name of the sheet.
-     */
-    public final IRI sheetName = createProperty(SHEET_NAME);
-
-    /**
-     * This property links the identifier of a <i>Sheet</i> to the index of the first declared row.
-     */
-    public final IRI firstRow = createProperty(FIRST_ROW);
-
-    /**
-     * This property links the identifier of a <i>Sheet</i> to the index of the last declared row.
-     */
-    public final IRI lastRow = createProperty(LAST_ROW);
-
-    /**
-     * This property links the identifier of a <i>Row</i> to the index of the first declared cell.
-     */
-    public final IRI firstCell = createProperty(FIRST_CELL);
-
-    /**
-     * This property links the identifier of a <i>Row</i> to the index of the last declared cell.
-     */
-    public final IRI lastCell = createProperty(LAST_CELL);
-
-    /**
-     * This property links the identifier of a <i>cell</i> to the content of the cell.
-     */
-    public final IRI cellValue = createProperty(CELL_VALUE);
-
-
-    /**
-     * This resource identifies a <i>Sheet</i>.
-     */
-    public final IRI sheet = createResource(SHEET);
-
-    /**
-     * This resource identifies a <i>row</i>.
-     */
-    public final IRI row = createResource(ROW);
-
-    /**
-     * This resource identifies a <i>cell</i>.
-     */
-    public final IRI cell = createResource(CELL);
-
-    /**
-     * The namespace of the vocabulary as a string.
-     */
-    public static final String NS = "http://any23.apache.org/excel/";
-
-    private static final class InstanceHolder {
-        private static final Excel instance = new Excel();
-    }
-
-    public static Excel getInstance() {
-        return InstanceHolder.instance;
-    }
-
-    /**
-    *
-    * @param localName resource label to create
-    * @return the new IRI instance.
-    */
-    public IRI createResource(String localName) {
-        return createProperty(NS, localName);
-    }
-
-    /**
-     *
-     * @param localName property label to create
-     * @return the new IRI instance.
-     */
-    public IRI createProperty(String localName) {
-        return createProperty(NS, localName);
-    }
-
-    private Excel() {
-        super(NS);
-    }
-
-
-}
diff --git a/plugins/office-scraper/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory b/plugins/office-scraper/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory
deleted file mode 100644
index 1b4576c..0000000
--- a/plugins/office-scraper/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.any23.plugin.officescraper.ExcelExtractorFactory
\ No newline at end of file
diff --git a/plugins/office-scraper/src/test/java/org/apache/any23/plugin/officescraper/ExcelExtractorTest.java b/plugins/office-scraper/src/test/java/org/apache/any23/plugin/officescraper/ExcelExtractorTest.java
deleted file mode 100644
index 3edebbf..0000000
--- a/plugins/office-scraper/src/test/java/org/apache/any23/plugin/officescraper/ExcelExtractorTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.officescraper;
-
-import org.apache.any23.extractor.ExtractionContext;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractionResult;
-import org.apache.any23.extractor.ExtractionResultImpl;
-import org.apache.any23.rdf.RDFUtils;
-import org.apache.any23.vocab.Excel;
-import org.apache.any23.writer.CompositeTripleHandler;
-import org.apache.any23.writer.CountingTripleHandler;
-import org.apache.any23.writer.NTriplesWriter;
-import org.apache.any23.writer.TripleHandler;
-import org.apache.any23.writer.TripleHandlerException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.eclipse.rdf4j.model.IRI;
-import org.eclipse.rdf4j.model.vocabulary.RDF;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Test case for {@link ExcelExtractor}.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class ExcelExtractorTest {
-
-    private static final Logger logger = LoggerFactory.getLogger(ExcelExtractorTest.class);
-
-    private ExcelExtractor extractor;
-
-    @Before
-    public void setUp() {
-        extractor = new ExcelExtractorFactory().createExtractor();
-    }
-
-    @Test
-    public void testGetDescription() {
-        Assert.assertNotNull( extractor.getDescription() );
-    }
-
-    @Test
-    public void testExtractXLSX() throws IOException, ExtractionException, TripleHandlerException {
-        final String FILE = "test1-workbook.xlsx";
-        processFile(FILE);
-    }
-
-    @Test
-    public void testExtractXLS() throws IOException, ExtractionException, TripleHandlerException {
-        final String FILE = "test2-workbook.xls";
-        processFile(FILE);
-    }
-
-    private void processFile(String resource) throws IOException, ExtractionException, TripleHandlerException {
-        final ExtractionParameters extractionParameters = ExtractionParameters.newDefault();
-        final ExtractionContext extractionContext = new ExtractionContext(
-                extractor.getDescription().getExtractorName(),
-                RDFUtils.iri("file://" + resource)
-        );
-        final InputStream is = this.getClass().getResourceAsStream(resource);
-        final CompositeTripleHandler compositeTripleHandler = new CompositeTripleHandler();
-        final TripleHandler verifierTripleHandler = Mockito.mock(TripleHandler.class);
-        compositeTripleHandler.addChild(verifierTripleHandler);
-        final CountingTripleHandler countingTripleHandler = new CountingTripleHandler();
-        compositeTripleHandler.addChild(countingTripleHandler);
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        compositeTripleHandler.addChild( new NTriplesWriter(out) );
-        final ExtractionResult extractionResult = new ExtractionResultImpl(
-                extractionContext, extractor, compositeTripleHandler
-        );
-        extractor.run(extractionParameters, extractionContext, is, extractionResult);
-        compositeTripleHandler.close();
-        logger.debug(out.toString());
-
-        verifyPredicateOccurrence(verifierTripleHandler, Excel.getInstance().containsSheet, 2 );
-        verifyPredicateOccurrence(verifierTripleHandler, Excel.getInstance().containsRow  , 6 );
-        verifyPredicateOccurrence(verifierTripleHandler, Excel.getInstance().containsCell , 18);
-
-        verifyTypeOccurrence(verifierTripleHandler, Excel.getInstance().sheet, 2 );
-        verifyTypeOccurrence(verifierTripleHandler, Excel.getInstance().row  , 6 );
-        verifyTypeOccurrence(verifierTripleHandler, Excel.getInstance().cell , 18);
-    }
-
-    private void verifyPredicateOccurrence(TripleHandler mock, IRI predicate, int occurrence)
-    throws TripleHandlerException {
-        Mockito.verify( mock, Mockito.times(occurrence)).receiveTriple(
-                Mockito.any(),
-                Mockito.eq(predicate),
-                Mockito.any(),
-                Mockito.any(),
-                Mockito.any()
-        );
-    }
-
-    private void verifyTypeOccurrence(TripleHandler mock, IRI type, int occurrence)
-    throws TripleHandlerException {
-        Mockito.verify( mock, Mockito.times(occurrence)).receiveTriple(
-                Mockito.any(),
-                Mockito.eq(RDF.TYPE),
-                Mockito.eq(type),
-                Mockito.any(),
-                Mockito.any()
-        );
-    }
-
-}
diff --git a/plugins/office-scraper/src/test/java/org/apache/any23/plugin/officescraper/XSSFWorkbookTest.java b/plugins/office-scraper/src/test/java/org/apache/any23/plugin/officescraper/XSSFWorkbookTest.java
deleted file mode 100644
index ebb8da1..0000000
--- a/plugins/office-scraper/src/test/java/org/apache/any23/plugin/officescraper/XSSFWorkbookTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.plugin.officescraper;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * General test to verify usability of the {@link XSSFWorkbook} class.
- *
- * @author Michele Mostarda (mostarda@fbk.eu)
- */
-public class XSSFWorkbookTest {
-
-    private static final Logger logger = LoggerFactory.getLogger(XSSFWorkbookTest.class);
-
-    @Test
-    public void testXLSXFormatAccess() throws IOException {
-        verifyResource("test1-workbook.xlsx");
-    }
-
-    @Test
-    public void testXLSFormatAccess() throws IOException {
-        verifyResource("test2-workbook.xls");
-    }
-
-    private void verifyResource(String resource) throws IOException {
-        final InputStream document = this.getClass().getResourceAsStream(resource);
-        final Workbook wb;
-        if(resource.endsWith(".xlsx")) {
-            wb = new XSSFWorkbook(document);
-        } else if(resource.endsWith("xls")) {
-            wb = new HSSFWorkbook(document);
-        } else {
-            throw new IllegalArgumentException("Unsupported extension for resource " + resource);
-        }
-        Assert.assertEquals(2, wb.getNumberOfSheets());
-        Sheet sheet;
-        for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
-            sheet = wb.getSheetAt(sheetIndex);
-            int rowcount = 0;
-            for (Row row : sheet) {
-                rowcount++;
-                int cellcount = 0;
-                for (Cell cell : row) {
-                    cellcount++;
-                    logger.debug(
-                            String.format(
-                                    "cell [%d, %d]: %s",
-                                    cell.getRowIndex(),
-                                    cell.getColumnIndex(),
-                                    cell.getStringCellValue()
-                            )
-                    );
-                    verifyContent(sheetIndex, cell.getRowIndex(), cell.getColumnIndex(), cell.getStringCellValue());
-                }
-                Assert.assertEquals(3, cellcount);
-            }
-            Assert.assertEquals(3, rowcount);
-        }
-    }
-
-    private void verifyContent(int sheet, int row, int col, String content) {
-        Assert.assertEquals(
-                String.format("%s %d.%d", sheet == 0 ? "a" : "b", row + 1, col + 1),
-                content
-        );
-    }
-
-}
diff --git a/plugins/office-scraper/src/test/resources/log4j.properties b/plugins/office-scraper/src/test/resources/log4j.properties
deleted file mode 100644
index 1a9ad34..0000000
--- a/plugins/office-scraper/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-log4j.rootCategory=INFO, O  
-      
-# Stdout  
-log4j.appender.O=org.apache.log4j.ConsoleAppender  
-      
-# File  
-#log4j.appender.R=org.apache.log4j.RollingFileAppender  
-#log4j.appender.R.File=log4j.log  
-      
-# Control the maximum log file size  
-#log4j.appender.R.MaxFileSize=100KB  
-      
-# Archive log files (one backup file here)  
-log4j.appender.R.MaxBackupIndex=1  
-      
-log4j.appender.R.layout=org.apache.log4j.PatternLayout  
-log4j.appender.O.layout=org.apache.log4j.PatternLayout  
-      
-log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n  
-log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n  
diff --git a/plugins/office-scraper/src/test/resources/org/apache/any23/plugin/officescraper/test1-workbook.xlsx b/plugins/office-scraper/src/test/resources/org/apache/any23/plugin/officescraper/test1-workbook.xlsx
deleted file mode 100644
index 4cb187f..0000000
Binary files a/plugins/office-scraper/src/test/resources/org/apache/any23/plugin/officescraper/test1-workbook.xlsx and /dev/null differ
diff --git a/plugins/office-scraper/src/test/resources/org/apache/any23/plugin/officescraper/test2-workbook.xls b/plugins/office-scraper/src/test/resources/org/apache/any23/plugin/officescraper/test2-workbook.xls
deleted file mode 100644
index cb385a1..0000000
Binary files a/plugins/office-scraper/src/test/resources/org/apache/any23/plugin/officescraper/test2-workbook.xls and /dev/null differ
diff --git a/plugins/openie/pom.xml b/plugins/openie/pom.xml
deleted file mode 100644
index 35811f7..0000000
--- a/plugins/openie/pom.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.any23</groupId>
-    <artifactId>apache-any23</artifactId>
-    <version>2.4-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.any23.plugins</groupId>
-  <artifactId>apache-any23-openie</artifactId>
-
-  <name>Apache Any23 :: Plugins :: OpenIE</name>
-  <description>Open Information Extraction module.</description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>${project.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-test-resources</artifactId>
-      <version>${project.version}</version>
-      <scope>test</scope>
-      <type>test-jar</type>
-    </dependency>
-    <dependency>
-      <groupId>org.allenai.openie</groupId>
-      <artifactId>openie_2.11</artifactId>
-      <version>${openie_2.11.version}</version>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-classic</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.allenai.openie</groupId>
-      <artifactId>openie_2.11</artifactId>
-      <version>${openie_2.11.version}</version>
-      <scope>compile</scope>
-      <type>pom</type>
-      <exclusions>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-classic</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>edu.washington.cs.knowitall</groupId>
-      <artifactId>openregex</artifactId>
-      <version>${openregex.version}</version>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <skipTests>true</skipTests>
-        </configuration>
-      </plugin>
-      <!-- Generates the distribution package -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptors>
-            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-    </plugins>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>${maven-assembly-plugin.version}</version>
-          <executions>
-            <execution>
-              <id>assembly</id>
-              <phase>package</phase>
-              <goals>
-                <goal>single</goal>
-              </goals>
-            </execution>
-          </executions>
-          <configuration>
-            <attach>true</attach>
-            <skipAssembly>true</skipAssembly>
-            <tarLongFileMode>gnu</tarLongFileMode>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <resources>
-          <resource>
-            <directory>${basedir}/../</directory>
-            <targetPath>${project.build.directory}/apidocs/META-INF</targetPath>
-            <includes>
-              <include>LICENSE.txt</include>
-              <include>NOTICE.txt</include>
-            </includes>
-          </resource>
-        </resources>
-      </build>
-    </profile>
-
-  </profiles>
-
-</project>
diff --git a/plugins/openie/src/main/java/org/apache/any23/plugin/extractor/openie/OpenIEExtractor.java b/plugins/openie/src/main/java/org/apache/any23/plugin/extractor/openie/OpenIEExtractor.java
deleted file mode 100644
index 3992388..0000000
--- a/plugins/openie/src/main/java/org/apache/any23/plugin/extractor/openie/OpenIEExtractor.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.any23.plugin.extractor.openie;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-
-import org.apache.any23.extractor.Extractor;
-import org.apache.any23.extractor.IssueReport;
-import org.apache.any23.extractor.ExtractionContext;
-import org.apache.any23.extractor.ExtractorDescription;
-import org.apache.any23.plugin.Author;
-import org.apache.any23.rdf.RDFUtils;
-import org.apache.any23.util.StreamUtils;
-import org.apache.tika.Tika;
-import org.apache.tika.exception.TikaException;
-import org.eclipse.rdf4j.model.IRI;
-import org.eclipse.rdf4j.model.Resource;
-import org.eclipse.rdf4j.model.Value;
-import org.eclipse.rdf4j.model.vocabulary.RDF;
-import org.eclipse.rdf4j.model.vocabulary.RDFS;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractionResult;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-
-import edu.knowitall.openie.Argument;
-import edu.knowitall.openie.Instance;
-import edu.knowitall.openie.OpenIE;
-import edu.knowitall.tool.parse.ClearParser;
-import edu.knowitall.tool.postag.ClearPostagger;
-import edu.knowitall.tool.srl.ClearSrl;
-import edu.knowitall.tool.tokenize.ClearTokenizer;
-import scala.collection.JavaConversions;
-import scala.collection.Seq;
-
-/**
- * An <a href="https://github.com/allenai/openie-standalone">OpenIE</a> 
- * extractor able to generate <i>RDF</i> statements from 
- * sentences representing relations in the text.
- */
-@Author(name="Lewis John McGibbney (lewismc@apache.org)")
-public class OpenIEExtractor implements Extractor.TagSoupDOMExtractor {
-
-    private static final Logger LOG = LoggerFactory.getLogger(OpenIEExtractor.class);
-
-    /**
-     * default constructor
-     */
-    public OpenIEExtractor() {
-        // default constructor
-    }
-
-    /**
-     * @see org.apache.any23.extractor.Extractor#getDescription()
-     */
-    @Override
-    public ExtractorDescription getDescription() {
-        return OpenIEExtractorFactory.getDescriptionInstance();
-    }
-
-    @Override
-    public void run(ExtractionParameters extractionParameters,
-            ExtractionContext context, Document in, ExtractionResult out)
-                    throws IOException, ExtractionException {
-
-        Runtime runtime = Runtime.getRuntime();
-        long maxMemory = runtime.maxMemory();
-        //free up as much memory as possible before performing this calculation
-        runtime.gc();
-        long usedMemory = Math.max(0L, runtime.totalMemory() - runtime.freeMemory());
-        long availableMemory = maxMemory - usedMemory;
-        if (availableMemory < 4294967296L) {
-            out.notifyIssue(IssueReport.IssueLevel.FATAL,
-                    "Not enough heap space available to perform OpenIE extraction: "
-                            + (availableMemory/1048576L) + "/" + (maxMemory / 1048576L)
-                            + " MB. Requires 4096 MB.", -1, -1);
-            LOG.error("Increase JVM heap size when running OpenIE extractor. max=" + maxMemory + "; available=" + availableMemory);
-            return;
-        }
-
-        IRI documentIRI = context.getDocumentIRI();
-        RDFUtils.iri(documentIRI.toString() + "root");
-        out.writeNamespace(RDF.PREFIX, RDF.NAMESPACE);
-        out.writeNamespace(RDFS.PREFIX, RDFS.NAMESPACE);
-        LOG.debug("Processing: {}", documentIRI.toString());
-
-        OpenIE openIE = new OpenIE(
-                new ClearParser(
-                        new ClearPostagger(
-                                new ClearTokenizer())), new ClearSrl(), false, false);
-
-        Seq<Instance> extractions = null;
-        Tika tika = new Tika();
-        try {
-            extractions = openIE.extract(tika.parseToString(StreamUtils.documentToInputStream(in)));
-        } catch (TransformerConfigurationException | TransformerFactoryConfigurationError e) {
-            LOG.error("Encountered error during OpenIE extraction.", e);
-        } catch (TikaException e) {
-            LOG.error("Encountered error whilst parsing InputStream with Tika.", e);
-        }
-
-        List<Instance> listExtractions = JavaConversions.seqAsJavaList(extractions);
-        // for each extraction instance we can obtain a number of extraction elements
-        // instance.confidence() - a confidence value for the extraction itself
-        // instance.extr().context() - an optional representation of the context for this extraction
-        // instance.extr().arg1().text() - subject
-        // instance.extr().rel().text() - predicate
-        // instance.extr().arg2s().text() - object
-        String thresholdString;
-        try {
-            thresholdString = extractionParameters.getProperty("any23.extraction.openie.confidence.threshold");
-        } catch (RuntimeException e) {
-            thresholdString = null;
-        }
-        double threshold = thresholdString == null ? 0.5 : Double.parseDouble(thresholdString);
-        for(Instance instance : listExtractions) {
-            if (instance.confidence() > threshold) {
-                List<Argument> listArg2s = JavaConversions.seqAsJavaList(instance.extr().arg2s());
-                for(Argument argument : listArg2s) {
-                    Resource subject = RDFUtils.makeIRI(instance.extr().arg1().text(), documentIRI);
-                    IRI predicate = (IRI) RDFUtils.makeIRI(instance.extr().rel().text(), documentIRI);
-                    Value object = RDFUtils.toValue(argument.text());
-                    out.writeTriple(subject, predicate, object);
-                }
-            }
-        }
-    }
-}
diff --git a/plugins/openie/src/main/java/org/apache/any23/plugin/extractor/openie/OpenIEExtractorFactory.java b/plugins/openie/src/main/java/org/apache/any23/plugin/extractor/openie/OpenIEExtractorFactory.java
deleted file mode 100644
index 1c86c62..0000000
--- a/plugins/openie/src/main/java/org/apache/any23/plugin/extractor/openie/OpenIEExtractorFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.any23.plugin.extractor.openie;
-
-import java.util.Arrays;
-
-import org.apache.any23.extractor.ExtractorDescription;
-import org.apache.any23.extractor.ExtractorFactory;
-import org.apache.any23.extractor.SimpleExtractorFactory;
-import org.apache.any23.rdf.Prefixes;
-
-/**
- * @author lewismc
- *
- */
-public class OpenIEExtractorFactory extends SimpleExtractorFactory<OpenIEExtractor>
-        implements ExtractorFactory<OpenIEExtractor> {
-
-    public static final String NAME = "openie";
-
-    public static final Prefixes prefixes = null;
-
-    private static final ExtractorDescription descriptionInstance = new OpenIEExtractorFactory();
-
-    public OpenIEExtractorFactory() {
-        super(NAME, prefixes, Arrays.asList("text/html;q=0.1", "application/xhtml+xml;q=0.1"), "example-openie.html");
-    }
-
-    @Override
-    public OpenIEExtractor createExtractor() {
-        return new OpenIEExtractor();
-    }
-
-    public static ExtractorDescription getDescriptionInstance() {
-        return descriptionInstance;
-    }
-
-}
diff --git a/plugins/openie/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory b/plugins/openie/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory
deleted file mode 100644
index 10ebf16..0000000
--- a/plugins/openie/src/main/resources/META-INF/services/org.apache.any23.extractor.ExtractorFactory
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.any23.plugin.extractor.openie.OpenIEExtractorFactory
\ No newline at end of file
diff --git a/plugins/openie/src/test/java/org/apache/any23/openie/OpenIEExtractorTest.java b/plugins/openie/src/test/java/org/apache/any23/openie/OpenIEExtractorTest.java
deleted file mode 100644
index dcc4e8f..0000000
--- a/plugins/openie/src/test/java/org/apache/any23/openie/OpenIEExtractorTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.any23.openie;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import org.apache.any23.extractor.ExtractionContext;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractionResult;
-import org.apache.any23.extractor.ExtractionResultImpl;
-import org.apache.any23.plugin.extractor.openie.OpenIEExtractor;
-import org.apache.any23.rdf.RDFUtils;
-import org.apache.any23.util.StreamUtils;
-import org.apache.any23.writer.RDFXMLWriter;
-import org.apache.any23.writer.TripleHandler;
-import org.apache.any23.writer.TripleHandlerException;
-import org.eclipse.rdf4j.model.IRI;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author lewismc
- *
- */
-public class OpenIEExtractorTest {
-
-    private static final Logger logger = LoggerFactory.getLogger(OpenIEExtractorTest.class);
-
-    private OpenIEExtractor extractor;
-
-    @Before
-    public void setUp() throws Exception {
-        extractor = new OpenIEExtractor();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        extractor = null;
-    }
-
-    @Test
-    public void testExtractFromHTMLDocument() 
-      throws IOException, ExtractionException, TripleHandlerException {
-        final IRI uri = RDFUtils.iri("http://podaac.jpl.nasa.gov/aquarius");
-        extract(uri, "/org/apache/any23/extractor/openie/example-openie.html");
-    }
-    
-    public void extract(IRI uri, String filePath) 
-      throws IOException, ExtractionException, TripleHandlerException {
-      FileOutputStream fos = new FileOutputStream(File.createTempFile("OpenIEExtractorTest", "tmp"));
-      final TripleHandler tHandler = new RDFXMLWriter(fos);
-      final ExtractionContext extractionContext = new ExtractionContext("rdf-openie", uri);
-      final ExtractionResult result = new ExtractionResultImpl(extractionContext, extractor, tHandler);
-      try {
-        extractor.run(
-                ExtractionParameters.newDefault(),
-                extractionContext,
-                StreamUtils.inputStreamToDocument(this.getClass().getResourceAsStream(filePath)),
-                result
-        );
-      } finally {
-        logger.debug(fos.toString());
-        tHandler.close();
-        result.close();
-      }
-    }
-
-}
diff --git a/pom.xml b/pom.xml
index df41a12..58b4040 100644
--- a/pom.xml
+++ b/pom.xml
@@ -234,12 +234,6 @@
     <module>encoding</module>
     <module>core</module>
     <module>cli</module>
-    <module>plugins/basic-crawler</module>
-    <module>plugins/html-scraper</module>
-    <module>plugins/office-scraper</module>
-    <module>plugins/openie</module>
-    <!--module>plugins/integration-test</module-->
-    <module>service</module>
   </modules>
 
   <scm>
diff --git a/service/README.md b/service/README.md
deleted file mode 100644
index 0de9b8a..0000000
--- a/service/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Any23 Web Service
-
-This is the root dir of the Any23 Web-Service module.
-
-Apache Any23 provides a Web-Service that can be used to extract RDF from Web documents.
-
-## Generate Web-Service Packaging
-
-To generate the desired Web-service package, execute 'mvn package' from this directory.
-
-```
-$ cd $ANY23-HOME/service
-$ mvn package
-```
-From this directory it generates roughly the following...
-```
-.
-├── pom.xml
-├── README.txt
-├── src
-│   ├── main
-│   │   ├── assembly
-│   │   ├── bin
-│   │   ├── java
-│   │   ├── resources
-│   │   └── webapp
-│   └── test
-│       ├── java
-│       └── resources
-└── target
-    ├── any23-service-${version}.war
-    ├── any23-service-${version}-without-deps.war
-    ├── apache-any23-service-${version}-bin-server-embedded.tar.gz <<<
-    ├── apache-any23-service-${version}-bin-server-embedded.zip <<<
-    ├── apache-any23-service-${version}-bin.tar.gz <<<
-    ├── apache-any23-service-${version}-bin-without-deps.tar.gz <<<
-    ├── apache-any23-service-${version}-bin-without-deps.zip <<<
-    ├── apache-any23-service-${version}-bin.zip <<<
-    ├── archive-tmp
-    ├── classes
-    ├── generated-sources
-    ├── maven-archiver
-    ├── maven-shared-archive-resources
-    ├── surefire
-    ├── surefire-reports
-    └── test-classes
-```
-
-Specific README's for each of the artifacts can be found in either ./target/*.tar.gz || ./target/*.zip (annotated above with '<<<'), where much more detailed information sources can be located.
diff --git a/service/pom.xml b/service/pom.xml
deleted file mode 100644
index 2f12c2f..0000000
--- a/service/pom.xml
+++ /dev/null
@@ -1,289 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.any23</groupId>
-    <artifactId>apache-any23</artifactId>
-    <version>2.4-SNAPSHOT</version>
-    <relativePath>../</relativePath>
-  </parent>
-
-  <artifactId>apache-any23-service</artifactId>
-  <packaging>war</packaging>
-
-  <name>Apache Any23 :: Service</name>
-  <description>Any23 Frontend and REST Service implementation.</description>
-
-  <properties>
-    <!-- the following property is used in the bash script as well, don't remove it! -->
-    <jetty.runner.version>9.4.20.v20190813</jetty.runner.version>
-    <output.directory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/lib/apache-any23-openie</output.directory>
-  </properties>
-
-  <dependencies>
-    <!-- Any23 Modules -->
-    <dependency>
-      <groupId>org.apache.any23</groupId>
-      <artifactId>apache-any23-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.any23.plugins</groupId>
-      <artifactId>apache-any23-openie</artifactId>
-      <version>${project.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.allenai.openie</groupId>
-      <artifactId>openie_2.11</artifactId>
-      <version>${openie_2.11.version}</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-classic</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.allenai.openie</groupId>
-      <artifactId>openie_2.11</artifactId>
-      <version>${openie_2.11.version}</version>
-      <scope>provided</scope>
-      <type>pom</type>
-      <exclusions>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-classic</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>edu.washington.cs.knowitall</groupId>
-      <artifactId>openregex</artifactId>
-      <version>${openregex.version}</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- BEGIN: Java EE APIs -->
-    <dependency>
-      <groupId>javax.xml.ws</groupId>
-      <artifactId>jaxws-api</artifactId>
-      <version>2.3.1</version>
-    </dependency>
-
-    <!-- BEGIN: Jetty Dependencies -->
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-runner</artifactId>
-      <version>${jetty.runner.version}</version>
-      <scope>provided</scope>
-      <optional>true</optional>
-    </dependency>
-    <!-- BEGIN: Test Dependencies -->
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-      <version>${jetty.runner.version}</version>
-      <scope>test</scope>
-      <classifier>tests</classifier>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-http</artifactId>
-      <version>${jetty.runner.version}</version>
-      <scope>test</scope>
-      <classifier>tests</classifier>
-    </dependency>
-    <!-- END:   Jetty Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <version>${slf4j.logger.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <!-- END: Test Dependencies -->
-
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-maven-plugin</artifactId>
-        <version>${jetty.runner.version}</version>
-        <configuration>
-          <webAppConfig>
-              <baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection">
-                  <resourcesAsCSV>src/main</resourcesAsCSV>
-              </baseResource>
-            <contextPath>/${project.artifactId}</contextPath>
-          </webAppConfig>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-war-plugin</artifactId>
-        <configuration>
-          <webResources>
-            <resource>
-              <directory>${basedir}/src/main/resources/</directory>
-              <targetPath>/resources</targetPath>
-              <filtering>true</filtering>
-            </resource>
-          </webResources>
-        </configuration>
-        <executions>
-          <execution>
-            <id>self-contained-war</id>
-            <phase>package</phase>
-            <goals>
-              <goal>war</goal>
-            </goals>
-            <configuration>
-              <webResources>
-                <resource>
-                  <directory>${project.build.directory}/war-legals/with-deps/</directory>
-                  <targetPath>/META-INF</targetPath>
-                </resource>
-              </webResources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>war-without-deps</id>
-            <phase>package</phase>
-            <goals>
-              <goal>war</goal>
-            </goals>
-            <configuration>
-              <classifier>without-deps</classifier>
-              <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
-              <archive>
-                <manifest>
-                  <addClasspath>true</addClasspath>
-                  <classpathPrefix>lib/</classpathPrefix>
-                </manifest>
-              </archive>
-              <webResources>
-                <resource>
-                  <directory>${project.build.directory}/war-legals/without-deps/</directory>
-                  <targetPath>/META-INF</targetPath>
-                </resource>
-              </webResources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- Generates the distribution package -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>prepare-package</id>
-            <phase>prepare-package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-            <configuration>
-              <attach>false</attach>
-              <finalName>war-legals</finalName>
-              <appendAssemblyId>false</appendAssemblyId>
-              <descriptors>
-                <descriptor>${basedir}/src/main/assembly/prepare-war-legals.xml</descriptor>
-              </descriptors>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <descriptors>
-            <descriptor>${basedir}/src/main/assembly/with-deps.xml</descriptor>
-            <descriptor>${basedir}/src/main/assembly/without-deps.xml</descriptor>
-            <descriptor>${basedir}/src/main/assembly/server-embedded.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-
-      <!-- Used to provide dynamic OpenIE toggling within service -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy</id>
-            <phase>prepare-package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <includeScope>provided</includeScope>
-              <outputDirectory>${output.directory}</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <classpathDependencyExcludes>
-            <classpathDependencyExclude>org.apache.any23.plugins:apache-any23-openie</classpathDependencyExclude>
-          </classpathDependencyExcludes>
-        </configuration>
-      </plugin>
-
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <resources>
-          <resource>
-            <directory>${basedir}/../</directory>
-            <targetPath>${project.build.directory}/apidocs/META-INF</targetPath>
-            <includes>
-              <include>LICENSE.txt</include>
-              <include>NOTICE.txt</include>
-            </includes>
-          </resource>
-        </resources>
-      </build>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/service/src/main/assembly/LICENSE-server-embedded.txt b/service/src/main/assembly/LICENSE-server-embedded.txt
deleted file mode 100644
index ada5751..0000000
--- a/service/src/main/assembly/LICENSE-server-embedded.txt
+++ /dev/null
@@ -1,426 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE ANY23 DEPENDENCIES:
-
-The Apache Any23 distribution packages include a number of dependencies with
-separate copyright notices and license terms. Your use of the binaries for these
-dependencies is subject to the terms and conditions of the following licenses.
-
-For the jQuery component (http://jquery.com/)
-Copyright (c) 2012 John Resig, http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-For the Twitter Bootstrap components (http://twitter.github.com/bootstrap/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Eclipse RDF4J components licensed under the Eclipse Distribution 
-License (a BSD-style license) 
-
-   Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
-   Copyright Aduna (http://www.aduna-software.com/) 2001-2013
-
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-   * Redistributions of source code must retain the above copyright notice, this
-     list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
-   * Neither the name of the Eclipse Foundation, Inc. nor the names of its
-     contributors may be used to endorse or promote products derived from this
-     software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-For the Jetty Web Container (http://mortbay.com/)
-This is licensed under the Apache License v2.0, see above
-
-For the TagSoup component (http://home.ccil.org/~cowan/XML/tagsoup/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons HttpClient component (http://hc.apache.org/httpclient-3.x/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache PDFBox component (http://incubator.apache.org/pdfbox/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache POI component (http://poi.apache.org/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Tika core component (http://lucene.apache.org/tika/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Codec component (http://commons.apache.org/codec/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons CLI component (http://commons.apache.org/cli/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons CSV (Sandbox) component (http://commons.apache.org/sandbox/csv/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Compress component (http://commons.apache.org/compress/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Lang component (http://commons.apache.org/lang/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache FontBox component (http://www.apache.org/fontbox/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Jempbox component (http://www.apache.org/jempbox/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Log4j component (http://logging.apache.org/log4j/docs/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Logging component (http://commons.apache.org/logging/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Neko HTML component (http://nekohtml.sourceforge.net/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the STAX API 1.0 component (http://geronimo.apache.org/specs/geronimo-stax-api_1.0_spec)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache XML Commons External components component (http://xml.apache.org/commons/components/external/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Xerces2 Java Parser component (http://xerces.apache.org/xerces2-j)
-This is licensed under the The Apache Software License, Version 2.0, see above
-Portions of this software were originally based on the following:
-- software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
-- software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
-- voluntary contributions made by Paul Eng on behalf of the
-  Apache Software Foundation that were originally developed at
-  iClick, Inc., software copyright (c) 1999.
-
-For the Apache XmlBeans component (http://xmlbeans.apache.org)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the ASM component (http://asm.ow2.org/)
-Copyright (c) 2000-2011 INRIA, France Telecom
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holders nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-
-For the SLF4J components (http://www.slf4j.org)
-Copyright (c) 2004-2011 QOS.ch
- All rights reserved.
-
- Permission is hereby granted, free  of charge, to any person obtaining
- a  copy  of this  software  and  associated  documentation files  (the
- "Software"), to  deal in  the Software without  restriction, including
- without limitation  the rights to  use, copy, modify,  merge, publish,
- distribute,  sublicense, and/or sell  copies of  the Software,  and to
- permit persons to whom the Software  is furnished to do so, subject to
- the following conditions:
-
- The  above  copyright  notice  and  this permission  notice  shall  be
- included in all copies or substantial portions of the Software.
-
- THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
- EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
- MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-For the dom4j component (http://dom4j.org)
-Copyright 2001-2010 (C) MetaStuff, Ltd. All Rights Reserved.
-
-Redistribution and use of this software and associated documentation
-("Software"), with or without modification, are permitted provided
-that the following conditions are met:
-
-1. Redistributions of source code must retain copyright
-   statements and notices.  Redistributions must also contain a
-   copy of this document.
- 
-2. Redistributions in binary form must reproduce the
-   above copyright notice, this list of conditions and the
-   following disclaimer in the documentation and/or other
-   materials provided with the distribution.
- 
-3. The name "DOM4J" must not be used to endorse or promote
-   products derived from this Software without prior written
-   permission of MetaStuff, Ltd.  For written permission,
-   please contact dom4j-info@metastuff.com.
- 
-4. Products derived from this Software may not be called "DOM4J"
-   nor may "DOM4J" appear in their names without prior written
-   permission of MetaStuff, Ltd. DOM4J is a registered
-   trademark of MetaStuff, Ltd.
- 
-5. Due credit should be given to the DOM4J Project - 
-   http://dom4j.sourceforge.net
- 
-THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
-NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/service/src/main/assembly/LICENSE-with-deps.txt b/service/src/main/assembly/LICENSE-with-deps.txt
deleted file mode 100644
index c480f37..0000000
--- a/service/src/main/assembly/LICENSE-with-deps.txt
+++ /dev/null
@@ -1,426 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE ANY23 DEPENDENCIES:
-
-The Apache Any23 distribution packages include a number of dependencies with
-separate copyright notices and license terms. Your use of the binaries for these
-dependencies is subject to the terms and conditions of the following licenses.
-
-For the jQuery component (http://jquery.com/)
-Copyright (c) 2012 John Resig, http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-For the Twitter Bootstrap component (http://twitter.github.com/bootstrap/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the simplePopup components (http://www.phpixel.fr/simple-popup/)
-TO BE DEFINED
-
-For the Eclipse RDF4J components licensed under the Eclipse Distribution 
-License (a BSD-style license) 
-
-   Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
-   Copyright Aduna (http://www.aduna-software.com/) 2001-2013
-
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-   * Redistributions of source code must retain the above copyright notice, this
-     list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
-   * Neither the name of the Eclipse Foundation, Inc. nor the names of its
-     contributors may be used to endorse or promote products derived from this
-     software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-For the TagSoup component (http://home.ccil.org/~cowan/XML/tagsoup/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons HttpClient component (http://hc.apache.org/httpclient-3.x/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache PDFBox component (http://incubator.apache.org/pdfbox/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache POI component (http://poi.apache.org/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Tika core component (http://lucene.apache.org/tika/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Codec component (http://commons.apache.org/codec/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons CLI component (http://commons.apache.org/cli/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons CSV (Sandbox) component (http://commons.apache.org/sandbox/csv/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Compress component (http://commons.apache.org/compress/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Lang component (http://commons.apache.org/lang/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache FontBox component (http://www.apache.org/fontbox/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Jempbox component (http://www.apache.org/jempbox/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Log4j component (http://logging.apache.org/log4j/docs/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Commons Logging component (http://commons.apache.org/logging/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Neko HTML component (http://nekohtml.sourceforge.net/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the STAX API 1.0 component (http://geronimo.apache.org/specs/geronimo-stax-api_1.0_spec)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache XML Commons External components component (http://xml.apache.org/commons/components/external/)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the Apache Xerces2 Java Parser component (http://xerces.apache.org/xerces2-j)
-This is licensed under the The Apache Software License, Version 2.0, see above
-Portions of this software were originally based on the following:
-- software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
-- software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
-- voluntary contributions made by Paul Eng on behalf of the
-  Apache Software Foundation that were originally developed at
-  iClick, Inc., software copyright (c) 1999.
-
-For the Apache XmlBeans component (http://xmlbeans.apache.org)
-This is licensed under the The Apache Software License, Version 2.0, see above
-
-For the ASM component (http://asm.ow2.org/)
-Copyright (c) 2000-2011 INRIA, France Telecom
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holders nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-
-For the SLF4J components (http://www.slf4j.org)
-Copyright (c) 2004-2011 QOS.ch
- All rights reserved.
-
- Permission is hereby granted, free  of charge, to any person obtaining
- a  copy  of this  software  and  associated  documentation files  (the
- "Software"), to  deal in  the Software without  restriction, including
- without limitation  the rights to  use, copy, modify,  merge, publish,
- distribute,  sublicense, and/or sell  copies of  the Software,  and to
- permit persons to whom the Software  is furnished to do so, subject to
- the following conditions:
-
- The  above  copyright  notice  and  this permission  notice  shall  be
- included in all copies or substantial portions of the Software.
-
- THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
- EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
- MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-For the dom4j component (http://dom4j.org)
-Copyright 2001-2010 (C) MetaStuff, Ltd. All Rights Reserved.
-
-Redistribution and use of this software and associated documentation
-("Software"), with or without modification, are permitted provided
-that the following conditions are met:
-
-1. Redistributions of source code must retain copyright
-   statements and notices.  Redistributions must also contain a
-   copy of this document.
- 
-2. Redistributions in binary form must reproduce the
-   above copyright notice, this list of conditions and the
-   following disclaimer in the documentation and/or other
-   materials provided with the distribution.
- 
-3. The name "DOM4J" must not be used to endorse or promote
-   products derived from this Software without prior written
-   permission of MetaStuff, Ltd.  For written permission,
-   please contact dom4j-info@metastuff.com.
- 
-4. Products derived from this Software may not be called "DOM4J"
-   nor may "DOM4J" appear in their names without prior written
-   permission of MetaStuff, Ltd. DOM4J is a registered
-   trademark of MetaStuff, Ltd.
- 
-5. Due credit should be given to the DOM4J Project - 
-   http://dom4j.sourceforge.net
- 
-THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
-NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/service/src/main/assembly/LICENSE-without-deps.txt b/service/src/main/assembly/LICENSE-without-deps.txt
deleted file mode 100644
index 1c75f93..0000000
--- a/service/src/main/assembly/LICENSE-without-deps.txt
+++ /dev/null
@@ -1,233 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE ANY23 DEPENDENCIES:
-
-The Apache Any23 distribution packages include a number of dependencies with
-separate copyright notices and license terms. Your use of the binaries for these
-dependencies is subject to the terms and conditions of the following licenses.
-
-For the jQuery component (http://jquery.com/)
-Copyright (c) 2012 John Resig, http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-For the Twitter Bootstrap components (http://twitter.github.com/bootstrap/)
-This is licensed under the The Apache Software License, Version 2.0, see above
diff --git a/service/src/main/assembly/NOTICE-server-embedded.txt b/service/src/main/assembly/NOTICE-server-embedded.txt
deleted file mode 100644
index 7566350..0000000
--- a/service/src/main/assembly/NOTICE-server-embedded.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Apache Any23
-Copyright 2011-2018 The Apache Software Foundation
-Copyright 2008-2011 Digital Enterprise Research Institute (DERI)
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-Jetty Web Container
-Copyright 1995-2012 Mort Bay Consulting Pty Ltd.
-
-The Jetty Web Container includes:
-UnixCrypt.java
-Copyright 1996 Aki Yoshida,
-modified April 2001  by Iris Van den Broeke, Daniel Deville.
-
-This product includes software developed by
-Aduna Software (http://www.aduna-software.org/)
-
-This product includes software developed by
-MetaStuff, Ltd. (http://dom4j.org)
-
-ASM - Copyright (c) 2000-2011 INRIA, France Telecom
-All rights reserved. (http://asm.ow2.org/)
-
-This product includes software developed by
-jQuery Foundation (http://jquery.org/)
-
-This product includes software developed by
-Twitter, Inc (http://twitter.github.com/bootstrap/)
diff --git a/service/src/main/assembly/NOTICE-with-deps.txt b/service/src/main/assembly/NOTICE-with-deps.txt
deleted file mode 100644
index 7ecdddd..0000000
--- a/service/src/main/assembly/NOTICE-with-deps.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Apache Any23
-Copyright 2011-2018 The Apache Software Foundation
-Copyright 2008-2011 Digital Enterprise Research Institute (DERI)
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Aduna Software (http://www.aduna-software.org/)
-
-This product includes software developed by
-MetaStuff, Ltd. (http://dom4j.org)
-
-ASM - Copyright (c) 2000-2011 INRIA, France Telecom
-All rights reserved. (http://asm.ow2.org/)
-
-This product includes software developed by
-jQuery Foundation (http://jquery.org/)
-
-This product includes software developed by
-Twitter, Inc (http://twitter.github.com/bootstrap/)
diff --git a/service/src/main/assembly/NOTICE-without-deps.txt b/service/src/main/assembly/NOTICE-without-deps.txt
deleted file mode 100644
index e2af4e5..0000000
--- a/service/src/main/assembly/NOTICE-without-deps.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Apache Any23
-Copyright 2011-2018 The Apache Software Foundation
-Copyright 2008-2011 Digital Enterprise Research Institute (DERI)
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-jQuery Foundation (http://jquery.org/)
-
-This product includes software developed by
-Twitter, Inc (http://twitter.github.com/bootstrap/)
diff --git a/service/src/main/assembly/README.txt b/service/src/main/assembly/README.txt
deleted file mode 100644
index 0a54677..0000000
--- a/service/src/main/assembly/README.txt
+++ /dev/null
@@ -1,113 +0,0 @@
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-Apache Any23 Service ${project.version} (${implementation.build.tstamp})
-
-  What is it?
-  -----------
-
-  ${project.description}
-
-  Documentation
-  -------------
-
-  The most up-to-date documentation can be found at ${project.parent.url}.
-
-  Release Notes
-  -------------
-
-  The full list of changes can be found at ${project.parent.url}/service.html.
-
-  System Requirements
-  -------------------
-
-  JDK:
-    ${javac.target.version} or above. (see http://www.oracle.com/technetwork/java/)
-  Memory:
-    No minimum requirement.
-  Disk:
-    No minimum requirement.
-  Operating System:
-    No minimum requirement. On Windows, Windows NT and above or Cygwin is required for
-    the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.
-
-  Installing Apache Any23 Service
-  ----------------
-
-** Windows 2000/XP
-
-  1) Unzip the distribution archive, i.e. apache-${project.build.finalName}-bin.zip to the directory you wish to
-        install Apache Any23 ${project.version}.
-        These instructions assume you chose C:\Program Files\Apache Software Foundation.
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) Add the ANY23_HOME environment variable by opening up the system properties (WinKey + Pause),
-        selecting the "Advanced" tab, and the "Environment Variables" button, then adding the ANY23_HOME
-        variable in the user variables with the value
-        C:\Program Files\Apache Software Foundation\apache-${project.build.finalName}.
-
-  3) In the same dialog, add the ANY23 environment variable in the user variables with the value %ANY23_HOME%\bin.
-
-  4) Optional: In the same dialog, add the EXTRA_JVM_ARGUMENTS environment variable in the user variables to specify
-        JVM properties, e.g. the value -Xms256m -Xmx512m. This environment variable can be used to supply extra options.
-        By default, it is set to: -Xms500m -Xmx500m -XX:-UseGCOverheadLimit
-
-  5) In the same dialog, update/create the Path environment variable in the user variables and prepend the value
-        %ANY23% to add Apache Any23 available in the command line.
-
-  6) In the same dialog, make sure that JAVA_HOME exists in your user variables or in the system variables and it is
-        set to the location of your JDK, e.g. C:\Program Files\Java\jdk1.5.0_02 and that %JAVA_HOME%\bin is in your Path
-        environment variable.
-
-  7) Open a new command prompt (Winkey + R then type cmd) and run any23server to launch the service.
-
-** Unix-based Operating Systems (Linux, Solaris and Mac OS X)
-
-  1) Extract the distribution archive, i.e. apache-${project.build.finalName}-bin.tar.gz to the directory you wish to
-        install Apache Any23 ${project.version}.
-        These instructions assume you chose /usr/local/apache-any23.
-        The subdirectory apache-${project.build.finalName} will be created from the archive.
-
-  2) In a command terminal, add the ANY23_HOME environment variable, e.g.
-        export ANY23_HOME=/usr/local/apache-any23/apache-${project.build.finalName}.
-
-  3) Add the ANY23 environment variable, e.g. export ANY23=$ANY23_HOME/bin.
-
-  4) Optional: Add the EXTRA_JVM_ARGUMENTS environment variable to specify JVM properties, e.g.
-        export EXTRA_JVM_ARGUMENTS="-Xms256m -Xmx512m".
-        This environment variable can be used to supply extra options.
-
-  5) Add ANY23 environment variable to your path, e.g. export PATH=$ANY23:$PATH.
-
-  6) Make sure that JAVA_HOME is set to the location of your JDK, e.g.
-        export JAVA_HOME=/usr/java/jdk1.5.0_02 and that $JAVA_HOME/bin is in your PATH environment variable.
-
-  7) Run any23server to launch the service.
-
-  Licensing
-  ---------
-
-  Please see the file called LICENSE.TXT
-
-  Apache Any23 URLS
-  ----------
-
-  Home Page:          ${project.parent.url}/
-  Downloads:          ${project.parent.url}/download.html
-  Release Notes:      ${project.parent.url}/changes-report.html
-  Mailing Lists:      ${project.parent.url}/mail-lists.html
-  Source Code:        ${project.parent.scm.url}
-  Issue Tracking:     ${project.issueManagement.url}
-  Available Plugins:  ${project.parent.url}/plugins.html
diff --git a/service/src/main/assembly/prepare-war-legals.xml b/service/src/main/assembly/prepare-war-legals.xml
deleted file mode 100644
index ddaaf23..0000000
--- a/service/src/main/assembly/prepare-war-legals.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>prepare-war-legals</id>
-  <formats>
-    <format>dir</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-
-  <files>
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-with-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory>/with-deps</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-with-deps.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory>/with-deps</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-without-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory>/without-deps</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-  </files>
-
-</assembly>
diff --git a/service/src/main/assembly/server-embedded.xml b/service/src/main/assembly/server-embedded.xml
deleted file mode 100644
index 3a0ecdf..0000000
--- a/service/src/main/assembly/server-embedded.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>server-embedded</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}-server-embedded</baseDirectory>
-
-  <files>
-    <file>
-      <source>${basedir}/src/main/assembly/README.txt</source>
-      <filtered>true</filtered>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-server-embedded.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-server-embedded.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/../RELEASE-NOTES.txt</source>
-      <outputDirectory/>
-      <fileMode>666</fileMode>
-    </file>
-  </files>
-
-  <fileSets>
-    <!--
-     | shell scripts
-    -->
-    <fileSet>
-      <directory>${basedir}/src/main/bin/</directory>
-      <outputDirectory>/bin</outputDirectory>
-      <fileMode>755</fileMode>
-      <filtered>true</filtered>
-    </fileSet>
-  </fileSets>
-
-  <dependencySets>
-    <dependencySet>
-      <useProjectArtifact>true</useProjectArtifact>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>${project.groupId}:${project.artifactId}</include>
-      </includes>
-    </dependencySet>
-
-    <dependencySet>
-      <useProjectArtifact>true</useProjectArtifact>
-      <outputDirectory>/lib</outputDirectory>
-      <scope>provided</scope>
-      <includes>
-        <include>org.eclipse.jetty:jetty-runner</include>
-      </includes>
-    </dependencySet>
-  </dependencySets>
-
-</assembly>
diff --git a/service/src/main/assembly/with-deps.xml b/service/src/main/assembly/with-deps.xml
deleted file mode 100644
index f402b8c..0000000
--- a/service/src/main/assembly/with-deps.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>with-deps</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}-with-deps</baseDirectory>
-
-  <files>
-    <!-- with-deps -->
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-with-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory>/</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-with-deps.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory>/</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/../RELEASE-NOTES.txt</source>
-      <outputDirectory>/</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-  </files>
-
-  <dependencySets>
-    <dependencySet>
-      <useProjectArtifact>true</useProjectArtifact>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>${project.groupId}:${project.artifactId}</include>
-      </includes>
-    </dependencySet>
-  </dependencySets>
-
-</assembly>
diff --git a/service/src/main/assembly/without-deps.xml b/service/src/main/assembly/without-deps.xml
deleted file mode 100644
index 2d7b09f..0000000
--- a/service/src/main/assembly/without-deps.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>without-deps</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}-without-deps</baseDirectory>
-
-  <files>
-    <!-- without-deps -->
-    <file>
-      <source>${basedir}/src/main/assembly/LICENSE-without-deps.txt</source>
-      <destName>LICENSE.txt</destName>
-      <outputDirectory>/</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/src/main/assembly/NOTICE-without-deps.txt</source>
-      <destName>NOTICE.txt</destName>
-      <outputDirectory>/</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${basedir}/../RELEASE-NOTES.txt</source>
-      <fileMode>666</fileMode>
-    </file>
-    <file>
-      <source>${project.build.directory}/${project.build.finalName}-without-deps.${project.packaging}</source>
-      <outputDirectory>/lib</outputDirectory>
-    </file>
-  </files>
-
-</assembly>
diff --git a/service/src/main/bin/any23server b/service/src/main/bin/any23server
deleted file mode 100755
index eb15488..0000000
--- a/service/src/main/bin/any23server
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-
-#  http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ----------------------------------------------------------------------------
-
-BASEDIR=`dirname $0`/..
-BASEDIR=`(cd "$BASEDIR"; pwd)`
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  Darwin*) darwin=true
-           if [ -z "$JAVA_VERSION" ] ; then
-             JAVA_VERSION="CurrentJDK"
-           else
-             echo "Using Java version: $JAVA_VERSION"
-           fi
-           if [ -z "$JAVA_HOME" ] ; then
-             JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home
-           fi
-           ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=`java-config --jre-home`
-  fi
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# If a specific java binary isn't specified search for the standard 'java' binary
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD=`which java`
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly."
-  echo "  We cannot execute $JAVACMD"
-  exit 1
-fi
-
-if [ -z "$REPO" ]
-then
-  REPO="$BASEDIR"/lib
-fi
-
-EXTRA_JVM_ARGUMENTS="-Xms500m -Xmx500m -XX:-UseGCOverheadLimit"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  [ -n "$HOME" ] && HOME=`cygpath --path --windows "$HOME"`
-  [ -n "$BASEDIR" ] && BASEDIR=`cygpath --path --windows "$BASEDIR"`
-  [ -n "$REPO" ] && REPO=`cygpath --path --windows "$REPO"`
-fi
-
-exec "$JAVACMD" $JAVA_OPTS \
-  $EXTRA_JVM_ARGUMENTS \
-  -jar "$REPO"/jetty-runner-${jetty.runner.version}.jar \
-  --path /${project.artifactId} "$REPO"/${project.build.finalName}.${project.packaging}
diff --git a/service/src/main/bin/any23server.bat b/service/src/main/bin/any23server.bat
deleted file mode 100644
index 7362704..0000000
--- a/service/src/main/bin/any23server.bat
+++ /dev/null
@@ -1,105 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one or more
-@REM contributor license agreements. See the NOTICE file distributed with
-@REM this work for additional information regarding copyright ownership.
-@REM The ASF licenses this file to You under the Apache License, Version 2.0
-@REM (the "License"); you may not use this file except in compliance with
-@REM the License.  You may obtain a copy of the License at
-
-@REM  http://www.apache.org/licenses/LICENSE-2.0
-
-@REM Unless required by applicable law or agreed to in writing, software
-@REM distributed under the License is distributed on an "AS IS" BASIS,
-@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@REM See the License for the specific language governing permissions and
-@REM limitations under the License.
-@REM ----------------------------------------------------------------------------
-@REM
-
-@echo off
-
-set ERROR_CODE=0
-
-:init
-@REM Decide how to startup depending on the version of windows
-
-@REM -- Win98ME
-if NOT "%OS%"=="Windows_NT" goto Win9xArg
-
-@REM set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" @setlocal
-
-@REM -- 4NT shell
-if "%eval[2+2]" == "4" goto 4NTArgs
-
-@REM -- Regular WinNT shell
-set CMD_LINE_ARGS=%*
-goto WinNTGetScriptDir
-
-@REM The 4NT Shell from jp software
-:4NTArgs
-set CMD_LINE_ARGS=%$
-goto WinNTGetScriptDir
-
-:Win9xArg
-@REM Slurp the command line arguments.  This loop allows for an unlimited number
-@REM of arguments (up to the command line limit, anyway).
-set CMD_LINE_ARGS=
-:Win9xApp
-if %1a==a goto Win9xGetScriptDir
-set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
-shift
-goto Win9xApp
-
-:Win9xGetScriptDir
-set SAVEDIR=%CD%
-%0\
-cd %0\..\.. 
-set BASEDIR=%CD%
-cd %SAVEDIR%
-set SAVE_DIR=
-goto repoSetup
-
-:WinNTGetScriptDir
-set BASEDIR=%~dp0\..
-
-:repoSetup
-
-
-if "%JAVACMD%"=="" set JAVACMD=java
-
-if "%REPO%"=="" set REPO=%BASEDIR%\lib
-
-set EXTRA_JVM_ARGUMENTS=-Xms500m -Xmx500m -XX:-UseGCOverheadLimit
-goto endInit
-
-@REM Reaching here means variables are defined and arguments have been captured
-:endInit
-
-%JAVACMD% %JAVA_OPTS% %EXTRA_JVM_ARGUMENTS% -jar "%REPO%"/jetty-runner-${jetty.runner.version}.jar --path /${project.artifactId} "%REPO%"/${project.build.finalName}.${project.packaging}
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-if "%OS%"=="Windows_NT" @endlocal
-set ERROR_CODE=1
-
-:end
-@REM set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" goto endNT
-
-@REM For old DOS remove the set variables from ENV - we assume they were not set
-@REM before we started - at least we don't leave any baggage around
-set CMD_LINE_ARGS=
-goto postExec
-
-:endNT
-@endlocal
-
-:postExec
-
-if "%FORCE_EXIT_ON_ERROR%" == "on" (
-  if %ERROR_CODE% NEQ 0 exit %ERROR_CODE%
-)
-
-exit /B %ERROR_CODE%
diff --git a/service/src/main/java/org/apache/any23/servlet/RedirectServlet.java b/service/src/main/java/org/apache/any23/servlet/RedirectServlet.java
deleted file mode 100644
index ea87e00..0000000
--- a/service/src/main/java/org/apache/any23/servlet/RedirectServlet.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.servlet;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-/**
- * This servlet contains the logic to perform the correct redirects
- * when <i>Any23</i> is used as a all-in-one web application.
- * 
- * @author Davide Palmisano ( palmisano@fbk.eu )
- */
-public class RedirectServlet extends HttpServlet {
-
-    private static final Logger LOG = LoggerFactory.getLogger(RedirectServlet.class);
-
-    /**
-   * 
-   */
-  private static final long serialVersionUID = 1L;
-
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response)
-    throws ServletException, IOException {
-        try {
-            doGet(request, response);
-        } catch (ServletException | IOException e) {
-            LOG.error("Error executing GET request.", e);
-        }
-    }
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response)
-    throws ServletException, IOException {
-        // Show /resources/form.html for GET requests to the app's root
-        final String pathInfo = request.getPathInfo();
-        final String queryString = request.getQueryString();
-
-        if ("/".equals(pathInfo) && queryString == null) {
-            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/resources/form.html");
-            try {
-                dispatcher.forward(request, response);
-            } catch (ServletException | IOException e) {
-                LOG.error("Error in request dispatcher forwarding.", e);
-            }
-            return;
-        }
-        // forward requests to /resources/* to the default servlet, this is
-        // where we can put static files
-        if (pathInfo.startsWith("/resources/")) {
-            RequestDispatcher dispatcher = getServletContext().getNamedDispatcher("default");
-            try {
-              dispatcher.forward(request, response);
-            } catch (ServletException | IOException e) {
-                LOG.error("Error in named request dispatcher forwarding.", e);
-            }
-            return;
-        }
-
-        try {
-            response.sendRedirect(
-                  request.getContextPath() + "/any23" +
-                          request.getPathInfo() +
-                          (queryString == null ? "" : "?" + queryString)
-            );
-        } catch (IOException e) {
-            LOG.error("Error in sending HttpServletResponse Redirect.", e);
-        }
-        
-    }
-}
diff --git a/service/src/main/java/org/apache/any23/servlet/Servlet.java b/service/src/main/java/org/apache/any23/servlet/Servlet.java
deleted file mode 100644
index 0953ca4..0000000
--- a/service/src/main/java/org/apache/any23/servlet/Servlet.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.servlet;
-
-import org.apache.any23.configuration.DefaultConfiguration;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.ExtractorRegistry;
-import org.apache.any23.extractor.ExtractorRegistryImpl;
-import org.apache.any23.http.HTTPClient;
-import org.apache.any23.plugin.Any23PluginManager;
-import org.apache.any23.servlet.conneg.Any23Negotiator;
-import org.apache.any23.servlet.conneg.MediaRangeSpec;
-import org.apache.any23.source.ByteArrayDocumentSource;
-import org.apache.any23.source.DocumentSource;
-import org.apache.any23.source.HTTPDocumentSource;
-import org.apache.any23.source.StringDocumentSource;
-import org.eclipse.rdf4j.rio.RDFFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Locale;
-import java.util.regex.Pattern;
-
-import static org.apache.any23.extractor.ExtractionParameters.ValidationMode;
-
-/**
- * A <i>Servlet</i> that fetches a client-specified <i>IRI</i>,
- * RDFizes the content, and returns it in a format chosen by the client.
- *
- * @author Gabriele Renzi
- * @author Richard Cyganiak (richard@cyganiak.de)
- */
-public class Servlet extends HttpServlet {
-
-    private static final Logger LOG = LoggerFactory.getLogger(Servlet.class);
-
-    public static final String DEFAULT_BASE_IRI = "http://any23.org/tmp/";
-
-    private static final long serialVersionUID = 8207685628715421336L;
-
-    private static final Pattern schemeAndSingleSlashRegex =
-            Pattern.compile("^[a-zA-Z][a-zA-Z0-9.+-]*:/[^/]");
-
-    // RFC 3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
-    private static final Pattern schemeRegex =
-            Pattern.compile("^[a-zA-Z][a-zA-Z0-9.+-]*:");
-
-    @Override
-    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
-        final WebResponder responder = new WebResponder(this, resp);
-        final String format = getFormatFromRequestOrNegotiation(req);
-        final boolean report = isReport(req);
-        final boolean annotate = isAnnotated(req);
-        final boolean openie = isOpenIE(req);
-        if (format == null) {
-            try {
-                responder.sendError(406, "Client accept header does not include a supported output format", report);
-                return;
-            } catch (IOException e) {
-                LOG.error("Unable to send error for null request format.", e);
-            }
-        }
-        final String uri = getInputIRIFromRequest(req);
-        if (uri == null) {
-            try {
-                responder.sendError(404, "Missing IRI in GET request. Try /format/http://example.com/myfile", report);
-                return;
-            } catch (Exception e) {
-                LOG.error("Unable to send error for null request IRI.", e);
-            }
-        }
-        if (openie) {
-            Any23PluginManager pManager = Any23PluginManager.getInstance();
-            //Dynamically adding Jar's to the Classpath via the following logic
-            //is absolutely dependant on the 'apache-any23-openie' directory being
-            //present within the webapp /lib directory. This is specified within 
-            //the maven-dependency-plugin.
-            File webappClasspath = new File(getClass().getClassLoader().getResource("").getPath());
-            File openIEJarPath = new File(webappClasspath.getParentFile().getPath() + "/lib/apache-any23-openie");
-            boolean loadedJars = pManager.loadJARDir(openIEJarPath);
-            if (loadedJars) {
-                ExtractorRegistry r = ExtractorRegistryImpl.getInstance();
-                try {
-                    pManager.getExtractors().forEachRemaining(r::register);
-                } catch (IOException e) {
-                    LOG.error("Error during dynamic classloading of JARs from OpenIE runtime directory {}", openIEJarPath.toString(), e);
-                }
-                LOG.info("Successful dynamic classloading of JARs from OpenIE runtime directory {}", openIEJarPath.toString());
-            }
-        }
-        final ExtractionParameters eps = getExtractionParameters(req);
-        try {
-            responder.runExtraction(createHTTPDocumentSource(responder, uri, report), eps, format, report, annotate);
-        } catch (IOException e) {
-            LOG.error("Unable to run extraction on HTTPDocumentSource.", e);
-        }
-    }
-
-    @Override
-    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
-        final WebResponder responder = new WebResponder(this, resp);
-        final boolean report = isReport(req);
-        final boolean annotate = isAnnotated(req);
-        final boolean openie = isOpenIE(req);
-        if (req.getContentType() == null) {
-            responder.sendError(400, "Invalid POST request, no Content-Type for the message body specified", report);
-            return;
-        }
-        final String uri = getInputIRIFromRequest(req);
-        final String format = getFormatFromRequestOrNegotiation(req);
-        if (format == null) {
-            responder.sendError(406, "Client accept header does not include a supported output format", report);
-            return;
-        }
-        if (openie) {
-          Any23PluginManager pManager = Any23PluginManager.getInstance();
-          pManager.loadJARDir(new File(getClass().getResource("apache-any23-openie").getPath()));
-        }
-        final ExtractionParameters eps = getExtractionParameters(req);
-        if ("application/x-www-form-urlencoded".equals(getContentTypeHeader(req))) {
-            if (uri != null) {
-                log("Attempting conversion to '" + format + "' from IRI <" + uri + ">");
-                responder.runExtraction(createHTTPDocumentSource(responder, uri, report), eps, format, report, annotate);
-                return;
-            }
-            if (req.getParameter("body") == null) {
-                responder.sendError(400, "Invalid POST request, parameter 'uri' or 'body' required", report);
-                return;
-            }
-            String type = null;
-            if (req.getParameter("type") != null && !"".equals(req.getParameter("type"))) {
-                type = req.getParameter("type");
-            }
-            log("Attempting conversion to '" + format + "' from body parameter");
-            responder.runExtraction(
-                    new StringDocumentSource(req.getParameter("body"), Servlet.DEFAULT_BASE_IRI, type),
-                    eps,
-                    format,
-                    report, annotate
-            );
-            return;
-        }
-        log("Attempting conversion to '" + format + "' from POST body");
-        responder.runExtraction(
-                new ByteArrayDocumentSource(
-                        req.getInputStream(),
-                        Servlet.DEFAULT_BASE_IRI,
-                        getContentTypeHeader(req)
-                ),
-                eps,
-                format,
-                report, annotate
-        );
-    }
-
-    private String getFormatFromRequestOrNegotiation(HttpServletRequest request) {
-        String fromRequest = getFormatFromRequest(request);
-        if (fromRequest != null && !"".equals(fromRequest) && !"best".equals(fromRequest)) {
-            return fromRequest;
-        }
-        MediaRangeSpec result = Any23Negotiator.getNegotiator().getBestMatch(request.getHeader("Accept"));
-        if (result == null) {
-            return null;
-        } else if (RDFFormat.N3.hasMIMEType(result.getMediaType())) {
-            return "n3";
-        } else if (RDFFormat.NQUADS.hasMIMEType(result.getMediaType())) {
-            return "nq";
-        } else if (RDFFormat.RDFXML.hasMIMEType(result.getMediaType())) {
-            return "rdf";
-        } else if (RDFFormat.NTRIPLES.hasMIMEType(result.getMediaType())) {
-            return "nt";
-        } else if (RDFFormat.JSONLD.hasMIMEType(result.getMediaType())) {
-            return "ld+json";
-        } else {
-            return "turtle"; // shouldn't happen however default is turtle
-        }
-    }
-
-    private String getFormatFromRequest(HttpServletRequest request) {
-        if (request.getPathInfo() == null)
-            return "best";
-        String[] args = request.getPathInfo().split("/", 3);
-        if (args.length < 2 || "".equals(args[1])) {
-            if (request.getParameter("format") == null) {
-                return "best";
-            } else {
-                return request.getParameter("format");
-            }
-        }
-        return args[1];
-    }
-
-    private String getInputIRIFromRequest(HttpServletRequest request) {
-        if (request.getPathInfo() == null)
-            return null;
-        String[] args = request.getPathInfo().split("/", 3);
-        if (args.length < 3) {
-            if (request.getParameter("uri") != null) {
-                return request.getParameter("uri").trim();
-            }
-            if (request.getParameter("url") != null) {
-                return request.getParameter("url").trim();
-            }
-            return null;
-        }
-        String uri = args[2];
-        if (request.getQueryString() != null) {
-            uri = uri + "?" + request.getQueryString();
-        }
-        if (!hasScheme(uri)) {
-            uri = "http://" + uri;
-        } else if (hasOnlySingleSlashAfterScheme(uri)) {
-            // This is to work around an issue where Tomcat 6.0.18 is
-            // too smart for us. Tomcat normalizes double-slashes in
-            // the path, and thus turns "http://" into "http:/" if it
-            // occurs in the path. So we restore the double slash.
-            uri = uri.replaceFirst(":/", "://");
-        }
-        return uri.trim();
-    }
-
-
-    private boolean hasScheme(String uri) {
-        return schemeRegex.matcher(uri).find();
-    }
-
-    private boolean hasOnlySingleSlashAfterScheme(String uri) {
-        return schemeAndSingleSlashRegex.matcher(uri).find();
-    }
-
-    private String getContentTypeHeader(HttpServletRequest req) {
-        String cType = "Content-Type";
-        if (req.getHeader(cType) == null)
-            return null;
-        if ("".equals(req.getHeader(cType)))
-            return null;
-        String contentType = req.getHeader(cType);
-        // strip off parameters such as ";charset=UTF-8"
-        int index = contentType.indexOf(';');
-        if (index == -1)
-            return contentType;
-        return contentType.substring(0, index);
-    }
-
-    private DocumentSource createHTTPDocumentSource(WebResponder responder, String uri, boolean report)
-            throws IOException {
-        try {
-            if (!isValidIRI(uri)) {
-                throw new URISyntaxException(uri, "@@@");
-            }
-            return createHTTPDocumentSource(responder.getRunner().getHTTPClient(), uri);
-        } catch (URISyntaxException ex) {
-            LOG.error("Invalid IRI detected", ex);
-            responder.sendError(400, "Invalid input IRI " + uri, report);
-            return null;
-        }
-    }
-
-    protected DocumentSource createHTTPDocumentSource(HTTPClient httpClient, String uri)
-            throws IOException, URISyntaxException {
-        return new HTTPDocumentSource(httpClient, uri);
-    }
-
-    private boolean isValidIRI(String s) {
-        try {
-            URI uri = new URI(s);
-            if (!"http".equals(uri.getScheme()) && !"https".equals(uri.getScheme())) {
-                return false;
-            }
-        } catch (Exception e) {
-            return false;
-        }
-        return true;
-    }
-
-    private ValidationMode getValidationMode(HttpServletRequest request) {
-        final String parameter = "validation-mode";
-        final String validationMode = request.getParameter(parameter);
-        if (validationMode == null)
-            return ValidationMode.NONE;
-        if ("none".equalsIgnoreCase(validationMode))
-            return ValidationMode.NONE;
-        if ("validate".equalsIgnoreCase(validationMode))
-            return ValidationMode.VALIDATE;
-        if ("validate-fix".equalsIgnoreCase(validationMode))
-            return ValidationMode.VALIDATE_AND_FIX;
-        throw new IllegalArgumentException(
-                String.format(Locale.ROOT, "Invalid value '%s' for '%s' parameter.", validationMode, parameter)
-        );
-    }
-
-    private ExtractionParameters getExtractionParameters(HttpServletRequest request) {
-        final ValidationMode mode = getValidationMode(request);
-        return new ExtractionParameters(DefaultConfiguration.singleton(), mode);
-    }
-
-    private boolean isReport(HttpServletRequest request) {
-        return request.getParameter("report") != null;
-    }
-
-    private boolean isAnnotated(HttpServletRequest request) {
-        return request.getParameter("annotate") != null;
-    }
-
-    private boolean isOpenIE(HttpServletRequest request) {
-      return request.getParameter("openie") != null;
-  }
-
-}
\ No newline at end of file
diff --git a/service/src/main/java/org/apache/any23/servlet/WebResponder.java b/service/src/main/java/org/apache/any23/servlet/WebResponder.java
deleted file mode 100644
index 21cc140..0000000
--- a/service/src/main/java/org/apache/any23/servlet/WebResponder.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.servlet;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.nio.charset.Charset;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-import java.util.stream.Collectors;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.any23.Any23;
-import org.apache.any23.ExtractionReport;
-import org.apache.any23.configuration.Settings;
-import org.apache.any23.extractor.ExtractionException;
-import org.apache.any23.extractor.ExtractionParameters;
-import org.apache.any23.extractor.Extractor;
-import org.apache.any23.extractor.IssueReport;
-import org.apache.any23.filter.IgnoreAccidentalRDFa;
-import org.apache.any23.filter.IgnoreTitlesOfEmptyDocuments;
-import org.apache.any23.source.DocumentSource;
-import org.apache.any23.validator.SerializationException;
-import org.apache.any23.validator.XMLValidationReportSerializer;
-import org.apache.any23.writer.CompositeTripleHandler;
-import org.apache.any23.writer.CountingTripleHandler;
-import org.apache.any23.writer.FormatWriter;
-import org.apache.any23.writer.TripleWriterFactory;
-import org.apache.any23.writer.ReportingTripleHandler;
-import org.apache.any23.writer.TripleHandler;
-import org.apache.any23.writer.TripleHandlerException;
-import org.apache.any23.writer.WriterFactory;
-import org.apache.any23.writer.WriterFactoryRegistry;
-
-/**
- * This class is responsible for building the {@link Servlet}
- * web response.
- */
-class WebResponder {
-
-    private static final WriterFactoryRegistry writerRegistry = WriterFactoryRegistry.getInstance();
-
-    /**
-     * Library facade.
-     */
-    private final Any23 runner;
-
-    /**
-     * Servlet for which building the response.
-     */
-    private Servlet any23servlet;
-
-    /**
-     * Servlet response object.
-     */
-    private HttpServletResponse response;
-
-    /**
-     * RDF triple writer.
-     */
-    private TripleHandler rdfWriter = null;
-
-    /**
-     * Error and statistics reporter.
-     */
-    private ReportingTripleHandler reporter = null;
-
-    /**
-     * Type of expected output.
-     */
-    private String outputMediaType = null;
-
-    /**
-     * The output stream.
-     */
-    private ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
-
-    public WebResponder(Servlet any23servlet, HttpServletResponse response) {
-        this.any23servlet = any23servlet;
-        this.response = response;
-        this.runner = new Any23();
-        runner.setHTTPUserAgent("Apache Any23 Servlet http://any23.org/");
-    }
-
-    protected Any23 getRunner() {
-        return runner;
-    }
-
-    public void runExtraction(
-            DocumentSource in,
-            ExtractionParameters eps,
-            String format,
-            boolean report, boolean annotate
-    ) throws IOException {
-        if (in == null)
-          return;
-        if (!initRdfWriter(format, report, annotate))
-          return;
-        ExtractionReport er = null;
-        try {
-            er = runner.extract(eps, in, rdfWriter);
-            rdfWriter.close();
-            if (! er.hasMatchingExtractors() ) {
-                sendError(
-                        415,
-                        "No suitable extractor found for this media type",
-                        null,
-                        er,
-                        report
-                );
-                return;
-            }
-        } catch (IOException ioe) {
-            // IO Error.
-            if (ioe.getCause() instanceof CertificateException) {
-                final String errMsg = "Could not fetch input, IO Error.";
-                any23servlet.log(errMsg, ioe.getCause());
-                sendError(502, errMsg, ioe, null, report);
-                return;
-            }
-            any23servlet.log("Could not fetch input", ioe);
-            sendError(502, "Could not fetch input.", ioe, null, report);
-            return;
-        } catch (ExtractionException e) {
-            if (rdfWriter != null) {
-                try {
-                    rdfWriter.close();
-                } catch (TripleHandlerException the) {
-                    throw new RuntimeException("Error while closing TripleHandler", the);
-                }
-            }
-
-            // Extraction error. Although there is a critical error we still wish 
-            // to return accurate, partial extraction results to the user
-            String extractionError = "Failed to fully parse input. The extraction result, at the bottom "
-                    + "of this response, if any, will contain extractions only up until the extraction error.";
-            any23servlet.log(extractionError, e);
-            sendError(502, extractionError, e, er, report);
-            return;
-        } catch (Exception e) {
-            any23servlet.log("Internal error", e);
-            sendError(500, "Internal error.", e, null, report);
-            return;
-        }
-
-        /* *** No triples found. *** */
-        any23servlet.log("Extraction complete, " + reporter.getTotalTriples() + " triples");
-
-        // Regular response.
-        response.setContentType(outputMediaType);
-        response.setStatus(200);
-        // Set the output encoding equals to the input one.
-        final String charsetEncoding = er.getEncoding();
-        if (Charset.isSupported(charsetEncoding)) {
-            response.setCharacterEncoding(er.getEncoding());
-        } else {
-            response.setCharacterEncoding("UTF-8");
-        }
-
-        final ServletOutputStream sos = response.getOutputStream();
-        final byte[] data = byteOutStream.toByteArray();
-        if(report) {
-            final PrintStream ps = new PrintStream(sos, true, "UTF-8");
-            try {
-                printHeader(ps);
-                printResponse(reporter, er, data, ps);
-            } catch (Exception e) {
-                throw new RuntimeException("An error occurred while serializing the output response.", e);
-            } finally {
-                ps.close();
-            }
-        } else {
-            sos.write(data);
-        }
-    }
-
-    public void sendError(int code, String msg, boolean report) throws IOException {
-        sendError(code, msg, null, null, report);
-    }
-    
-    private void printHeader(PrintStream ps) {
-        ps.println("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
-    }
-
-    private void printResponse(ReportingTripleHandler rth, ExtractionReport er, byte[] data, PrintStream ps) {
-        ps.println("<response>");
-        printExtractors(rth, ps);
-        printReport(null, null, er, ps);
-        printData(data, ps);
-        ps.println("</response>");
-    }
-
-    private void printExtractors(ReportingTripleHandler rth, PrintStream ps) {
-        ps.println("<extractors>");
-        for (String extractor : rth.getExtractorNames()) {
-            ps.print("<extractor>");
-            ps.print(extractor);
-            ps.println("</extractor>");
-        }
-        ps.println("</extractors>");
-    }
-    
-    private void printIssueReport(ExtractionReport er, PrintStream ps) {
-        ps.println("<issueReport>");
-        for(Extractor<?> extractor : er.getMatchingExtractors()) {
-            final String name = extractor.getDescription().getExtractorName();
-            final Collection<IssueReport.Issue> extractorIssues = er.getExtractorIssues(name);
-            if(extractorIssues.isEmpty())
-                continue;
-            ps.println( String.format(Locale.ROOT, "<extractorIssues extractor=\"%s\">", name));
-            for(IssueReport.Issue issue : er.getExtractorIssues(name)) {
-                ps.println(
-                        String.format(Locale.ROOT, 
-                                "<issue level=\"%s\" row=\"%d\" col=\"%d\">%s</issue>",
-                                issue.getLevel().toString(),
-                                issue.getRow(),
-                                issue.getCol(),
-                                issue.getMessage()
-                        )
-                );
-            }
-            ps.println("</extractorIssues>");
-        }
-        ps.println("</issueReport>");
-
-    }
-
-    private void printReport(String msg, Throwable e, ExtractionReport er, PrintStream ps) {
-        XMLValidationReportSerializer reportSerializer = new XMLValidationReportSerializer();
-        ps.println("<report>");
-
-        // Human readable error message.
-        if(msg != null) {
-            ps.printf(Locale.ROOT, "<message>%s</message>%n", msg);
-        } else {
-            ps.print("<message/>\n");
-        }
-
-        // Error stack trace.
-        if(e != null) {
-            ps.println("<error>");
-            ps.println("<![CDATA[");
-            e.printStackTrace(ps);
-            ps.println("]]>");
-            ps.println("</error>");
-        } else {
-            ps.println("<error/>");
-        }
-
-        // Issue Report.
-        printIssueReport(er, ps);
-
-        // Validation report.
-        try {
-            reportSerializer.serialize(er.getValidationReport(), ps);
-        } catch (SerializationException se) {
-            ps.println("An error occurred while serializing error.");
-            se.printStackTrace(ps);
-        }
-        ps.println("</report>");
-    }
-
-    private void printData(byte[] data, PrintStream ps) {
-        ps.println("<data>");
-        ps.println("<![CDATA[");
-        try {
-            ps.write(data);
-        } catch (IOException ioe) {
-            ps.println("An error occurred while serializing data.");
-            ioe.printStackTrace(ps);
-        }
-        ps.println("]]>");
-        ps.println("</data>");
-    }
-
-    private void sendError(int code, String msg, Exception e, ExtractionReport er, boolean report)
-    throws IOException {
-        response.setStatus(code);
-        response.setContentType("text/plain");
-        final ServletOutputStream sos = response.getOutputStream();
-        final PrintStream ps = new PrintStream(sos, true, "UTF-8");
-        final byte[] data = byteOutStream.toByteArray();
-        if (report) {
-            try {
-                printHeader(ps);
-                printReport(msg, e, er, ps);
-            } finally {
-                ps.close();
-            }
-        } else {
-            ps.println(msg);
-            if (e != null) {
-                ps.println("================================================================");
-                e.printStackTrace(ps);
-                ps.println("================================================================");
-                printData(data, ps);
-            }
-        }
-    }
-
-    private boolean initRdfWriter(String format, boolean report, boolean annotate) throws IOException {
-        final WriterFactory factory = getFormatWriter(format);
-        if (!(factory instanceof TripleWriterFactory)) {
-            sendError(
-                    400,
-                    "Invalid format '" + format + "', try one of: "
-                            + writerRegistry.getWriters().stream()
-                            .filter(f -> f instanceof TripleWriterFactory)
-                            .map(WriterFactory::getIdentifier).collect(Collectors.toList()),
-                    null,
-                    null,
-                    report
-            );
-            return false;
-        }
-        TripleHandler fw = ((TripleWriterFactory) factory).getTripleWriter(byteOutStream, Settings.of());
-        if (fw instanceof FormatWriter) {
-            ((FormatWriter)fw).setAnnotated(annotate);
-        }
-        outputMediaType = ((TripleWriterFactory) factory).getTripleFormat().getMimeType();
-        List<TripleHandler> tripleHandlers = new ArrayList<>();
-        tripleHandlers.add(new IgnoreAccidentalRDFa(fw));
-        tripleHandlers.add(new CountingTripleHandler());
-        rdfWriter = new CompositeTripleHandler(tripleHandlers);
-        reporter = new ReportingTripleHandler(rdfWriter);
-        rdfWriter = new IgnoreAccidentalRDFa(
-            new IgnoreTitlesOfEmptyDocuments(reporter),
-            true    // suppress stylesheet triples.
-        );
-        return true;
-    }
-
-    private WriterFactory getFormatWriter(String format) throws IOException {
-        final String finalFormat;
-        // FIXME: Remove this hardcoded set
-        if ("rdf".equals(format) || "xml".equals(format) || "rdfxml".equals(format)) {
-            finalFormat = "rdfxml";
-        } else if ("turtle".equals(format) || "ttl".equals(format)) {
-            finalFormat = "turtle";
-        } else if ("n3".equals(format)) {
-            finalFormat = "turtle";
-        } else if ("n-triples".equals(format) || "ntriples".equals(format) || "nt".equals(format)) {
-            finalFormat = "ntriples";
-        } else if("nquads".equals(format) || "n-quads".equals(format) || "nq".equals(format)) {
-            finalFormat = "nquads";
-        } else if("trix".equals(format)) {
-            finalFormat = "trix";
-        } else if("json".equals(format)) {
-            finalFormat = "json";
-        } else if("jsonld".equals(format)){
-            finalFormat = "jsonld";        
-        } else {
-            return null;
-        }
-        return writerRegistry.getWriterByIdentifier(finalFormat);
-    }
-
-}
diff --git a/service/src/main/java/org/apache/any23/servlet/conneg/Any23Negotiator.java b/service/src/main/java/org/apache/any23/servlet/conneg/Any23Negotiator.java
deleted file mode 100644
index 9692722..0000000
--- a/service/src/main/java/org/apache/any23/servlet/conneg/Any23Negotiator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.servlet.conneg;
-
-/**
- * Defines a {@link ContentTypeNegotiator} for <i>Any23</i>.
- */
-public class Any23Negotiator {
-
-    private final static ContentTypeNegotiator any23negotiator;
-
-    static {
-        any23negotiator = new ContentTypeNegotiator();
-        any23negotiator.setDefaultAccept("text/turtle");
-
-        any23negotiator.addVariant("application/rdf+xml;q=0.95"     )
-                .addAliasMediaType("application/xml;q=0.4"          )
-                .addAliasMediaType("text/xml;q=0.4"                 );
-
-        any23negotiator.addVariant("text/rdf+n3;charset=utf-8;q=0.9")
-                .addAliasMediaType("text/n3;q=0.9"                  )
-                .addAliasMediaType("application/n3;q=0.9"           );
-
-        any23negotiator.addVariant("text/rdf+nq;charset=utf-8;q=0.9")
-                .addAliasMediaType("text/nq;q=0.9"                  )
-                .addAliasMediaType("application/nq;q=0.9"           );
-
-        any23negotiator.addVariant("text/turtle"                    )
-                .addAliasMediaType("application/x-turtle"           )
-                .addAliasMediaType("application/turtle"             );
-
-        any23negotiator.addVariant("text/plain;q=0.5");
-    }
-
-    public static ContentTypeNegotiator getNegotiator() {
-        return any23negotiator;
-    }
-}
diff --git a/service/src/main/java/org/apache/any23/servlet/conneg/ContentTypeNegotiator.java b/service/src/main/java/org/apache/any23/servlet/conneg/ContentTypeNegotiator.java
deleted file mode 100644
index 8546f96..0000000
--- a/service/src/main/java/org/apache/any23/servlet/conneg/ContentTypeNegotiator.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.servlet.conneg;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * This class defines a negotiator for content types based on scoring.
- */
-public class ContentTypeNegotiator {
-
-    private List<VariantSpec> variantSpecs = new ArrayList<>();
-
-    private List<MediaRangeSpec> defaultAcceptRanges = Collections.singletonList(MediaRangeSpec.parseRange("*/*"));
-    
-    private Collection<AcceptHeaderOverride> userAgentOverrides = new ArrayList<>();
-
-    protected ContentTypeNegotiator(){}
-
-    /**
-     * Returns the {@link MediaRangeSpec}
-     * associated to the given <i>accept</i> type.
-     * 
-     * @param accept a provided <i>accept</i> type
-     * @return a {@link MediaRangeSpec} associated to the accept parameter
-     */
-    public MediaRangeSpec getBestMatch(String accept) {
-        return getBestMatch(accept, null);
-    }
-
-    /**
-     * Returns the {@link MediaRangeSpec}
-     * associated to the given <i>accept</i> type and <i>userAgent</i>.
-     *
-     * @param accept a provided <i>accept</i> type
-     * @param userAgent use agent associated with the request
-     * @return the {@link MediaRangeSpec}
-     * associated to the given <i>accept</i> type and <i>userAgent</i>.
-     */
-    public MediaRangeSpec getBestMatch(String accept, String userAgent) {
-        if (userAgent == null) {
-            userAgent = "";
-        }
-        Iterator<AcceptHeaderOverride> it = userAgentOverrides.iterator();
-        String overriddenAccept = accept;
-        while (it.hasNext()) {
-            AcceptHeaderOverride override = it.next();
-            if (override.matches(accept, userAgent)) {
-                overriddenAccept = override.getReplacement();
-            }
-        }
-        return new Negotiation(toAcceptRanges(overriddenAccept)).negotiate();
-    }
-
-    protected VariantSpec addVariant(String mediaType) {
-        VariantSpec result = new VariantSpec(mediaType);
-        variantSpecs.add(result);
-        return result;
-    }
-
-    /**
-     * Sets an Accept header to be used as the default if a client does
-     * not send an Accept header, or if the Accept header cannot be parsed.
-     * Defaults to "* / *".
-     * @param accept a default <i>accept</i> type
-     */
-    protected void setDefaultAccept(String accept) {
-        this.defaultAcceptRanges = MediaRangeSpec.parseAccept(accept);
-    }
-
-    /**
-     * Overrides the Accept header for certain user agents. This can be
-     * used to implement special-case handling for user agents that send
-     * faulty Accept headers.
-     *
-     * @param userAgentString      A pattern to be matched against the User-Agent header;
-     *                             <code>null</code> means regardless of User-Agent
-     * @param originalAcceptHeader Only override the Accept header if the user agent
-     *                             sends this header; <code>null</code> means always override
-     * @param newAcceptHeader      The Accept header to be used instead
-     */
-    protected void addUserAgentOverride(
-         Pattern userAgentString,
-         String originalAcceptHeader,
-         String newAcceptHeader
-    ) {
-        this.userAgentOverrides.add(
-            new AcceptHeaderOverride(userAgentString, originalAcceptHeader, newAcceptHeader)
-        );
-    }
-
-    private List<MediaRangeSpec> toAcceptRanges(String accept) {
-        if (accept == null) {
-            return defaultAcceptRanges;
-        }
-        List<MediaRangeSpec> result = MediaRangeSpec.parseAccept(accept);
-        if (result.isEmpty()) {
-            return defaultAcceptRanges;
-        }
-        return result;
-    }
-
-    protected class VariantSpec {
-
-        private MediaRangeSpec type;
-        private List<MediaRangeSpec> aliases = new ArrayList<>();
-        private boolean isDefault = false;
-
-        public VariantSpec(String mediaType) {
-            type = MediaRangeSpec.parseType(mediaType);
-        }
-
-        public VariantSpec addAliasMediaType(String mediaType) {
-            aliases.add(MediaRangeSpec.parseType(mediaType));
-            return this;
-        }
-
-        public void makeDefault() {
-            isDefault = true;
-        }
-
-        public MediaRangeSpec getMediaType() {
-            return type;
-        }
-
-        public boolean isDefault() {
-            return isDefault;
-        }
-
-        public List<MediaRangeSpec> getAliases() {
-            return aliases;
-        }
-    }
-
-    private class Negotiation {
-
-        private final List<MediaRangeSpec> ranges;
-        private MediaRangeSpec bestMatchingVariant = null;
-        private MediaRangeSpec bestDefaultVariant = null;
-        private double bestMatchingQuality = 0;
-        private double bestDefaultQuality = 0;
-
-        Negotiation(List<MediaRangeSpec> ranges) {
-            this.ranges = ranges;
-        }
-
-        MediaRangeSpec negotiate() {
-            Iterator<VariantSpec> it = variantSpecs.iterator();
-            while (it.hasNext()) {
-                VariantSpec variant = it.next();
-                if (variant.isDefault) {
-                    evaluateDefaultVariant(variant.getMediaType());
-                }
-                evaluateVariant(variant.getMediaType());
-                Iterator<MediaRangeSpec> aliasIt = variant.getAliases().iterator();
-                while (aliasIt.hasNext()) {
-                    MediaRangeSpec alias = aliasIt.next();
-                    evaluateVariantAlias(alias, variant.getMediaType());
-                }
-            }
-            return (bestMatchingVariant == null) ? bestDefaultVariant : bestMatchingVariant;
-        }
-
-        private void evaluateVariantAlias(MediaRangeSpec variant, MediaRangeSpec isAliasFor) {
-            if (variant.getBestMatch(ranges) == null)
-              return;
-            double q = variant.getBestMatch(ranges).getQuality();
-            if (q * variant.getQuality() > bestMatchingQuality) {
-                bestMatchingVariant = isAliasFor;
-                bestMatchingQuality = q * variant.getQuality();
-            }
-        }
-
-        private void evaluateVariant(MediaRangeSpec variant) {
-            evaluateVariantAlias(variant, variant);
-        }
-
-        private void evaluateDefaultVariant(MediaRangeSpec variant) {
-            if (variant.getQuality() > bestDefaultQuality) {
-                bestDefaultVariant = variant;
-                bestDefaultQuality = 0.00001 * variant.getQuality();
-            }
-        }
-        
-    }
-
-    private class AcceptHeaderOverride {
-
-        private Pattern userAgentPattern;
-        private String original;
-        private String replacement;
-
-        AcceptHeaderOverride(Pattern userAgentPattern, String original, String replacement) {
-            this.userAgentPattern = userAgentPattern;
-            this.original = original;
-            this.replacement = replacement;
-        }
-
-        boolean matches(String acceptHeader, String userAgentHeader) {
-            return (userAgentPattern == null
-                    || userAgentPattern.matcher(userAgentHeader).find())
-                    && (original == null || original.equals(acceptHeader));
-        }
-
-        String getReplacement() {
-            return replacement;
-        }
-    }
-    
-}
\ No newline at end of file
diff --git a/service/src/main/java/org/apache/any23/servlet/conneg/MediaRangeSpec.java b/service/src/main/java/org/apache/any23/servlet/conneg/MediaRangeSpec.java
deleted file mode 100644
index ea1e8da..0000000
--- a/service/src/main/java/org/apache/any23/servlet/conneg/MediaRangeSpec.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.any23.servlet.conneg;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * This class implements the <i>HTTP header media-range specification</i>.
- * See <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616 section 14.1</a>. 
- */
-public class MediaRangeSpec {
-
-    private static final Pattern tokenPattern;
-
-    private static final Pattern parameterPattern;
-
-
-    private static final Pattern mediaRangePattern;
-
-    private static final Pattern qValuePattern;
-
-    private final String type;
-
-    private final String subtype;
-
-    private final List<String> parameterNames;
-
-    private final List<String> parameterValues;
-
-    private final String mediaType;
-    
-    private final double quality;
-    
-    static {
-
-        // See RFC 2616, section 2.2
-        String token = "[\\x20-\\x7E&&[^()<>@,;:\\\"/\\[\\]?={} ]]+";
-        String quotedString = "\"((?:[\\x20-\\x7E\\n\\r\\t&&[^\"\\\\]]|\\\\[\\x00-\\x7F])*)\"";
-
-        // See RFC 2616, section 3.6
-        String parameter = ";\\s*(?!q\\s*=)(" + token + ")=(?:(" + token + ")|" + quotedString + ")";
-
-        // See RFC 2616, section 3.9
-        String qualityValue = "(?:0(?:\\.\\d{0,3})?|1(?:\\.0{0,3})?)";
-
-        // See RFC 2616, sections 14.1
-        String quality = ";\\s*q\\s*=\\s*([^;,]*)";
-
-        // See RFC 2616, section 3.7
-        String regex = "(" + token     + ")/(" + token + ")" +
-                "((?:\\s*" + parameter + ")*)" +
-                "(?:\\s*"  + quality   + ")?" +
-                "((?:\\s*" + parameter + ")*)";
-
-        tokenPattern      = Pattern.compile(token);
-        parameterPattern  = Pattern.compile(parameter);
-        mediaRangePattern = Pattern.compile(regex);
-        qValuePattern     = Pattern.compile(qualityValue);
-    }
-
-    /**
-     * Parses a media type from a string such as <code>text/html;charset=utf-8;q=0.9</code>.
-     * @param mediaType input string from which to extract mediaType
-     * @return {@link org.apache.any23.servlet.conneg.MediaRangeSpec}
-     */
-    public static MediaRangeSpec parseType(String mediaType) {
-        MediaRangeSpec m = parseRange(mediaType);
-        if (m == null || m.isWildcardType() || m.isWildcardSubtype()) {
-            return null;
-        }
-        return m;
-    }
-
-    /**
-     * Parses a media range from a string such as <code>text/*;charset=utf-8;q=0.9</code>.
-     * Unlike simple media types, media ranges may include wildcards.
-     * @param mediaRange input string from which to extract media range
-     * @return {@link org.apache.any23.servlet.conneg.MediaRangeSpec}
-     */
-    public static MediaRangeSpec parseRange(String mediaRange) {
-        Matcher m = mediaRangePattern.matcher(mediaRange);
-        if (!m.matches()) {
-            return null;
-        }
-        String type = m.group(1).toLowerCase(Locale.ROOT);
-        String subtype = m.group(2).toLowerCase(Locale.ROOT);
-        String unparsedParameters = m.group(3);
-        String qValue = m.group(7);
-        m = parameterPattern.matcher(unparsedParameters);
-        if ("*".equals(type) && !"*".equals(subtype)) {
-            return null;
-        }
-        List<String> parameterNames = new ArrayList<>();
-        List<String> parameterValues = new ArrayList<>();
-        while (m.find()) {
-            String name = m.group(1).toLowerCase(Locale.ROOT);
-            String value = (m.group(3) == null) ? m.group(2) : unescape(m.group(3));
-            parameterNames.add(name);
-            parameterValues.add(value);
-        }
-        double quality = 1.0;
-        if (qValue != null && qValuePattern.matcher(qValue).matches()) {
-            try {
-                quality = Double.parseDouble(qValue);
-            } catch (NumberFormatException ex) {
-                // quality stays at default value
-            }
-        }
-        return new MediaRangeSpec(type, subtype, parameterNames, parameterValues, quality);
-    }
-
-    /**
-     * Parses an HTTP Accept header into a List of MediaRangeSpecs
-     *
-     * @param s an HTTP accept header.
-     * @return A List of MediaRangeSpecs
-     */
-    public static List<MediaRangeSpec> parseAccept(String s) {
-        List<MediaRangeSpec> result = new ArrayList<>();
-        Matcher m = mediaRangePattern.matcher(s);
-        while (m.find()) {
-            result.add(parseRange(m.group()));
-        }
-        return result;
-    }
-
-    private static String unescape(String s) {
-        return s.replaceAll("\\\\(.)", "$1");
-    }
-
-    private static String escape(String s) {
-        return s.replaceAll("[\\\\\"]", "\\\\$0");
-    }
-
-    private MediaRangeSpec(
-            String type,
-            String subtype,
-            List<String> parameterNames, List<String> parameterValues,
-            double quality
-    ) {
-        this.type = type;
-        this.subtype = subtype;
-        this.parameterNames = Collections.unmodifiableList(parameterNames);
-        this.parameterValues = parameterValues;
-        this.mediaType = buildMediaType();
-        this.quality = quality;
-    }
-
-    private String buildMediaType() {
-        StringBuffer result = new StringBuffer();
-        result.append(type);
-        result.append("/");
-        result.append(subtype);
-        for (int i = 0; i < parameterNames.size(); i++) {
-            result.append(";");
-            result.append(parameterNames.get(i));
-            result.append("=");
-            String value = parameterValues.get(i);
-            if (tokenPattern.matcher(value).matches()) {
-                result.append(value);
-            } else {
-                result.append("\"");
-                result.append(escape(value));
-                result.append("\"");
-            }
-        }
-        return result.toString();
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public String getSubtype() {
-        return subtype;
-    }
-
-    public String getMediaType() {
-        return mediaType;
-    }
-
-    public List<String> getParameterNames() {
-        return parameterNames;
-    }
-
-    public String getParameter(String parameterName) {
-        for (int i = 0; i < parameterNames.size(); i++) {
-            if (parameterNames.get(i).equalsIgnoreCase(parameterName)) {
-                return parameterValues.get(i);
-            }
-        }
-        return null;
-    }
-
-    public boolean isWildcardType() {
-        return "*".equals(type);
-    }
-
-    public boolean isWildcardSubtype() {
-        return !isWildcardType() && "*".equals(subtype);
-    }
-
-    public double getQuality() {
-        return quality;
-    }
-
-    public int getPrecedence(MediaRangeSpec range) {
-        if (range.isWildcardType())
-          return 1;
-        if (!range.type.equals(type))
-          return 0;
-        if (range.isWildcardSubtype())
-          return 2;
-        if (!range.subtype.equals(subtype))
-          return 0;
-        if (range.getParameterNames().isEmpty())
-          return 3;
-        int result = 3;
-        for (int i = 0; i < range.getParameterNames().size(); i++) {
-            String name  = range.getParameterNames().get(i);
-            String value = range.getParameter(name);
-            if (!value.equals(getParameter(name)))
-              return 0;
-            result++;
-        }
-        return result;
-    }
-
-    public MediaRangeSpec getBestMatch(List<MediaRangeSpec> mediaRanges) {
-        MediaRangeSpec result = null;
-        int bestPrecedence = 0;
-        Iterator<MediaRangeSpec> it = mediaRanges.iterator();
-        while (it.hasNext()) {
-            MediaRangeSpec range = it.next();
-            if (getPrecedence(range) > bestPrecedence) {
-                bestPrecedence = getPrecedence(range);
-                result = range;
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return mediaType + ";q=" + quality;
-    }
-}
\ No newline at end of file
diff --git a/service/src/main/java/org/apache/any23/servlet/conneg/package-info.java b/service/src/main/java/org/apache/any23/servlet/conneg/package-info.java
deleted file mode 100644
index dda60a0..0000000
--- a/service/src/main/java/org/apache/any23/servlet/conneg/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * This package provides the <i>Any23</i> content type negotiator.
- */
-package org.apache.any23.servlet.conneg;
\ No newline at end of file
diff --git a/service/src/main/java/org/apache/any23/servlet/package-info.java b/service/src/main/java/org/apache/any23/servlet/package-info.java
deleted file mode 100644
index 8d13bb6..0000000
--- a/service/src/main/java/org/apache/any23/servlet/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * The package defines a servlet exposing <i>Any23</i>
- * as a <i>REST</i> Service.
- */
-package org.apache.any23.servlet;
\ No newline at end of file
diff --git a/service/src/main/resources/form.html b/service/src/main/resources/form.html
deleted file mode 100644
index 7cac3e4..0000000
--- a/service/src/main/resources/form.html
+++ /dev/null
@@ -1,460 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<html xmlns:lang="en"
-    xmlns:xhtml="http://www.w3.org/1999/xhtml"
-    xmlns:dc="http://purl.org/dc/elements/1.1/">
-  <head>
-    <title>Apache Any23: Anything To Triples - Service ${project.version} (${implementation.build.tstamp})</title>
-    <link rel="stylesheet" type="text/css" href="resources/css/bootstrap.min.css" />
-    <script type="text/javascript" src="resources/js/jquery-1.7.2.min.js"></script>
-    <script type="text/javascript" src="resources/js/bootstrap-modal.js"></script>
-    <script type="application/javascript">
-jQuery( document ).ready( function($)
-{
-    $.each( $( '.app-base-uri' ), function()
-    {
-        $( this ).text( document.location );
-    });
-
-    $( '#app-path' ).text( document.location.pathname );
-    $( '#app-host' ).text( document.location.host );
-} );
-
-function showModal( id )
-{
-    $( id ).modal( 'show' );
-}
-    </script>
-  </head>
-  <body>
-  <div class="container">
-    <a href="http://any23.apache.org/" title="Apache Any23 Dev Site" target="_blank">
-        <img
-            alt="Apache Any23 Dev Site"
-            src="resources/images/logo-any23-214x97.png"
-            width="90"
-        /></a>
-      <a href="http://www.apache.org/" title="Apache Software Foundation" target="_blank">
-        <img
-            alt="Apache Software Foundation"
-            src="resources/images/logo-apache-90x30.png"
-            width="90"
-        /></a>
-
-    <h1>Apache Any23 - Anything To Triples - Live Service Demo</h1>
-    <p>Parses Microformats, RDFa, Microdata, RDF/XML, Turtle, N-Triples, JSON-LD and NQuads.</p>
-    <p>Download and install Any23: visit the <a href="http://any23.apache.org/" target="_blank">Developers Site</a> and the <a href="http://any23.apache.org/getting-started.html" target="_blank">Documentation</a>.
-    <hr />
-    <h2>Convert document at IRI</h2>
-    <form class="well form-horizontal" method="get" action="any23/">
-      <label>Pick an output format and enter the IRI of a web document:</label>
-
-      <div class="control-group">
-        <label class="control-label app-base-uri" for="format">http://.../</label>
-        <div class="controls">
-            <select id="format" name="format">
-            <option value="best" selected="selected">best</option>
-            <option value="turtle">turtle</option>
-            <option value="ntriples">ntriples</option>
-            <option value="rdfxml">rdfxml</option>
-            <option value="nquads">nquads</option>
-            <option value="trix">trix</option>
-            <option value="json">json</option>
-            <option value="jsonld">json-ld</option>
-          </select>/<input type="text" size="50" name="uri" value="http://twitter.com/cygri" />
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-openie-get">OpenIE</label>
-          <div class="controls">
-           <label class="checkbox">
-             <input id="url-openie-get" type="checkbox" name="openie">
-             <a href="javascript:showModal( '#sPopup-openie' );">[?]</a>
-          </label>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-validation-get">Validation</label>
-        <div class="controls">
-          <select id="url-validation-get" name="validation-mode" onclick="if(document.getElementById('url-validation-get').value.indexOf('validate') == 0) { document.getElementById('url-report-get').checked = true; }">
-          <option value="none">none</option>
-          <option value="validate">validate</option>
-          <option value="validate-fix">validate+fix</option>
-        </select>
-          <a href="javascript:showModal( '#sPopup-fix' );">[?]</a>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-report">Report</label>
-          <div class="controls">
-           <label class="checkbox">
-             <input id="url-report-get" type="checkbox" name="report">
-             <a href="javascript:showModal( '#sPopup-report' );">[?]</a>
-          </label>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-annotate-get">Annotate</label>
-          <div class="controls">
-           <label class="checkbox">
-             <input id="url-annotate-get" type="checkbox" name="annotate">
-             <a href="javascript:showModal( '#sPopup-annotate' );">[?]</a>
-          </label>
-        </div>
-      </div>
-    <div class="form-actions">
-      <button type="submit" class="btn btn-primary">Convert</button>
-      <button type="reset" class="btn">Cancel</button>
-    </div>
-    </form>
-    <hr />
-
-    <h2>Convert copy&amp;pasted document</h2>
-    <form class="well form-horizontal" method="post" action="any23/">
-      <div class="control-group">
-        <label class="control-label" for="type">Input format</label>
-        <div class="controls">
-            <select id="type" name="type">
-            <option value="">auto-detect</option>
-            <option value="text/html">HTML with Microformats, RDFa (text/html)</option>
-            <option value="application/xhtml+xml">XHTML with Microformats, RDFa, Microdata (application/xhtml+xml)</option>
-            <option value="text/turtle">Turtle (text/turtle)</option>
-            <option value="text/nt">N-Triples (text/nt)</option>
-            <option value="text/nq">N-Quads (text/nq)</option>
-            <option value="application/trix">TriX (application/trix)</option>
-            <option value="application/rdf+xml">RDF/XML (application/rdf+xml)</option>
-            <option value="text/csv">CSV (text/csv)</option>
-            <option value="application/ld+json">JSON-LD (application/ld+json)</option>
-          </select>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="out-format">Output format</label>
-        <div class="controls">
-            <select id="out-format" name="format">
-            <option value="best" selected="selected">best (content-negotiated)</option>
-            <option value="turtle">turtle</option>
-            <option value="ntriples">ntriples</option>
-            <option value="rdfxml">rdfxml</option>
-            <option value="nquads">nquads</option>
-            <option value="trix">trix</option>
-            <option value="json">json</option>
-            <option value="jsonld">json-ld</option>
-          </select>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="openie-on-post">OpenIE</label>
-          <div class="controls">
-           <label class="checkbox">
-             <input id="url-openie-post" type="checkbox" name="openie">
-             <a href="javascript:showModal( '#sPopup-openie' );">[?]</a>
-          </label>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-validation-post">Validation</label>
-        <div class="controls">
-          <select id="url-validation-post" name="validation-mode" onclick="if(document.getElementById('url-validation-post').value.indexOf('validate') == 0) { document.getElementById('url-report-post').checked = true; }">
-            <option value="none">none</option>
-            <option value="validate">validate</option>
-            <option value="validate-fix">validate+fix</option>
-          </select>
-          <a href="javascript:showModal( '#sPopup-fix' );">[?]</a>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-report">Report</label>
-          <div class="controls">
-           <label class="checkbox">
-             <input id="url-report-post" type="checkbox" name="report">
-             <a href="javascript:showModal( '#sPopup-report' );">[?]</a>
-          </label>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="url-annotate-post">Annotate</label>
-          <div class="controls">
-           <label class="checkbox">
-             <input id="url-annotate-post" type="checkbox" name="annotate">
-             <a href="javascript:showModal( '#sPopup-annotate' );">[?]</a>
-          </label>
-        </div>
-      </div>
-
-        <textarea class="span11" name="body" rows="12">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-[] a foaf:Person;
-    foaf:name "John X. Foobar";
-    foaf:mbox_sha1sum "cef817456278b70cee8e5a1611539ef9d928810e";
-    .</textarea>
-      
-    <div class="form-actions">
-      <button type="submit" class="btn btn-primary">Convert</button>
-      <button type="reset" class="btn">Cancel</button>
-    </div>
-
-    </form>
-    <hr />
-
-    <h2>API quick reference</h2>
-    <h3>Examples</h3>
-    <ul>
-      <li><code><a href="best/twitter.com/cygri"><span class="app-base-uri">http://.../</span>best/twitter.com/cygri</a></code></li>
-      <li><code><a href="rdfxml/http://data.gov"><span class="app-base-uri">http://.../</span>rdfxml/http://data.gov</a></code></li>
-      <li><code><a href="ttl/http://www.w3.org/People/Berners-Lee/card"><span class="app-base-uri">http://.../</span>ttl/http://www.w3.org/People/Berners-Lee/card</a></code></li>
-      <li><code><a href="?uri=http://dbpedia.org/resource/Berlin"><span class="app-base-uri">http://.../</span>?uri=http://dbpedia.org/resource/Berlin</a></code></li>
-      <li><code><a href="?format=nt&uri=http://dbpedia.org/resource/Berlin"><span class="app-base-uri">http://.../</span>?format=nt&uri=http://dbpedia.org/resource/Berlin</a></code></li>
-    </ul>
-    <h3>Compact API</h3>
-    <p>HTTP GET requests can be made
-      to IRIs of the shape</p>
-    <pre><span class="app-base-uri">http://.../</span><em>format</em>/<em>input-uri</em></pre>
-    <p>The response is the input document converted to the desired output format.</p>
-
-    <h3>Form-style GET API</h3>
-    <p>HTTP GET requests can be made to
-      the IRI
-      <code class="app-base-uri">http://.../</code> with the following
-      query parameters:
-    </p>
-    <table class="table">
-      <tr><th>uri</th><td>IRI of an input document.</td></tr>
-      <tr><th>format</th><td>Desired output format, defaults to <code>best</code>.</td></tr>
-      <tr><th>validation-mode</th><td>The validation level to be applied on the input. Possible values:<br/>
-          <code>none</code> (no validation applied);<br/>
-          <code>validate</code>(apply validation and produce validation report if <code>annotate</code> flag is enabled);<br/>
-          <code>validate+fix</code>(apply validation, try to fix detection issues and produce validation report if <code>annotate</code> flag is enabled).</td>
-      </tr>
-      <tr><th>annotate</th><td>If specified the output RDF will contain extractor specific scope comments.<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
-      <tr><th>report</th><td>If specified will produce a full XML report containing extraction and validation issues other than produced metadata.<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
-      <tr><th>openie</th><td>If specified the <a href="https://github.com/allenai/openie-standalone" target="_blank">
-      Open Information Extraction (Open IE) system</a> will be activated (default off).<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
-    </table>
-    Formatting the URL according to the above will return an HTTP <i>302</i> redirect to <code><span class="app-base-uri">http://...</span>any23/<em>format</em></code>.<br/>
-    <p>The response is the input document converted to the desired output format.</p>
-
-    <h3>Direct POST API</h3>
-    <p>HTTP POSTing a document body to
-      <code><span class="app-base-uri">http://.../</span><em>format</em></code> will convert
-      the document to the specified output format. <br/>
-      The media type of the input
-      has to be specified in the <code>Content-Type</code> HTTP header.
-      Depending on the servlet container, a <code>Content-Length</code> header specifying
-      the length of the input document in bytes might also be required.<br/>
-      Typical media types for supported input formats are:
-    </p>
-    <table class="table">
-      <tr><th>Input format</th><th>Media type</th></tr>
-      <tr><th>HTML</th><td><code>text/html</code></td></tr>
-      <tr><th>RDF/XML</th><td><code>application/rdf+xml</code></td></tr>
-      <tr><th>Turtle</th><td><code>text/turtle</code></td></tr>
-      <tr><th>N-Triples</th><td><code>text/nt</code></td></tr>
-      <tr><th>N-Quads</th><td><code>text/nq</code></td></tr>
-      <tr><th>TriX</th><td><code>application/trix</code></td></tr>
-    </table>
-    <p>Example POST request:</p>
-    <pre>POST <span id="app-path">/</span>rdfxml HTTP/1.0
-Host: <span id="app-host">example.com</span>
-Content-Type: text/turtle
-Content-Length: 174
-
-@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-[] a foaf:Person;
-    foaf:name "John X. Foobar";
-    foaf:mbox_sha1sum "cef817456278b70cee8e5a1611539ef9d928810e";
-    .</pre>
-
-    <h3>Form-style POST API</h3>
-    <p>A document body can also be converted by HTTP POSTing form data to
-      <code><span class="app-base-uri">http://.../</span></code>. <br/>
-      The <code>Content-Type</code> HTTP header must be set to
-      <code>application/x-www-form-urlencoded</code>. The following
-      parameters are supported:
-    </p>
-    <table class="table">
-      <tr><th>type</th><td>Media type of the input, see the table above. If not present, auto-detection will be attempted.</td></tr>
-      <tr><th>body</th><td>Document body to be converted.</td></tr>
-      <tr><th>format</th><td>Desired output format; defaults to <code>best</code>.</td></tr>
-      <tr><th>validation-mode</th><td>The validation level to be applied on the input. Possible values:<br/>
-        <code>none</code> (no validation applied);<br/>
-        <code>validate</code>(apply validation and produce validation report if <code>annotate</code> flag is enabled);<br/>
-        <code>validate+fix</code>(apply validation, try to fix detection issues and produce validation report if <code>annotate</code> flag is enabled).</td>
-      </tr>
-      <tr><th>annotate</th><td>If specified the output RDF will contain extractor specific scope comments.<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
-      <tr><th>report</th><td>If specified will produce a full XML report containing extraction and validation issues other than produced metadata.<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
-      <tr><th>openie</th><td>If specified the <a href="https://github.com/allenai/openie-standalone" target="_blank">
-      Open Information Extraction (Open IE) system</a> will be activated (default off).<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
-    </table>
-
-    <h3>Output formats</h3>
-    <p>Supported output format identifiers are:</p>
-    <ul>
-      <li><code>best</code> for content negotiation according to the client's <code>Accept</code> HTTP header</li>
-      <li><code>turtle</code>, <code>ttl</code>, <code>n3</code> for
-        <a href="https://www.w3.org/TR/turtle/" target="_blank">Turtle</a>/<a href="https://www.w3.org/TeamSubmission/n3/" target="_blank">N3</a></li>
-      <li><code>ntriples</code>, <code>nt</code> for
-        <a href="https://www.w3.org/TR/n-triples/" target="_blank">N-Triples</a></li>
-      <li><code>nquads</code>, <code>nq</code> for
-        <a href="https://www.w3.org/TR/n-quads/" target="_blank">N-Quads</a></li>
-      <li><code>trix</code> for
-        <a href="http://www.w3.org/2004/03/trix/" target="_blank">TriX</a></li>
-      <li><code>rdfxml</code>, <code>rdf</code>, <code>xml</code> for
-        <a href="http://www.w3.org/TR/rdf-syntax-grammar/" target="_blank">RDF/XML</a></li>
-      <li><code>json</code> for <a href="http://json.org/" target="_blank">JSON</a></li>
-      <li><code>jsonld</code> for <a href="https://json-ld.org/" target="_blank">JSON-LD</a></li>
-    </ul>
-
-    <h3>Error reporting</h3>
-    <p>Processing errors are indicated via
-      HTTP status codes and brief <code>text/plain</code> error messages.
-      The following status codes can be returned:</p>
-    <table class="table">
-      <thead>
-        <tr><th>Code</th><th>Reason</th></tr>
-      </thead>
-      <tbody>
-        <tr><th>200 OK</th><td>Success</td></tr>
-        <tr><th>400 Bad Request</th><td>Missing or malformed input parameter</td></tr>
-        <tr><th>404 Not Found</th><td>Malformed request IRI</td></tr>
-        <tr><th>406 Not Acceptable</th><td>None of the media types specified in the <code>Accept</code> header are supported</td></tr>
-        <tr><th>415 Unsupported Media Type</th><td>Document body with unsupported media type was POSTed</td></tr>
-        <tr><th>501 Not Implemented</th><td>Extraction from input was successful, but yielded zero triples</td></tr>
-        <tr><th>502 Bad Gateway</th><td>Input document from a remote server could not be fetched or parsed</td></tr>
-      </tbody>
-    </table>
-    <h3>Report Format</h3>
-    <p>The XML report format is subjected to changes. The current content is described in section
-       <a href="http://any23.apache.org/service.html" target="_blank">Any23 Service</a>.
-    </p>
-    <hr />
-    <p><b>Apache Any23 v.${project.version} (${implementation.build.tstamp})</b></p>
-    <p><a href="http://any23.apache.org/" target="_blank">Any23 project homepage</a> | Hosted at <a href="http://apache.org/" target="_blank">Apache Software Foundation</a></p>
-
-    <div id="sPopup-openie" class="modal hide fade">
-      <div class="modal-header">
-        <button type="button" class="close">×</button>
-        <h3>Open Information Extraction</h3>
-      </div>
-      <div class="modal-body">
-        <p>
-        If the <i>OpenIE</i> checkbox is selected, the <b>Any23</b> service will activate the
-        <a href="https://github.com/allenai/openie-standalone" target="_blank">Open Information Extraction (Open IE) system</a>, 
-        enhancing extraction results.</p>
-        <p>The Open IE system runs over sentences and creates extractions that represent relations in text, in the case 
-        of Any23, this results in triples. The confidence of relationships extracted from text are based on a 
-        configurable threshold established in 
-        <code>https://github.com/apache/any23/blob/master/api/src/main/resources/default-configuration.properties</code>.
-        </p>
-      </div>
-      <div class="modal-footer">
-        <a href="#" class="btn">Close</a>
-      </div>
-    </div>
-
-    <div id="sPopup-fix" class="modal hide fade">
-      <div class="modal-header">
-        <button type="button" class="close" >×</button>
-        <h3>Validation</h3>
-      </div>
-      <div class="modal-body">
-        <p> 
-          The <b>Any23</b> service tries to fix some common issues before performing a metadata 
-          extraction. The fixing is performed according a set of fully customizable rules.
-        </p>
-        <p>
-          The following <i>Validation</i> options are available.
-        </p>
-        <ul>
-          <li><b>none</b>: no validation will be performed;</li>
-          <li><b>validate</b>: common errors within the document will be detected and reported. When selected this option the
-              <b>Report</b> flag will be activated to visualize the validation outcome;</li>
-          <li><b>validate+fix</b>: the common issues will be detected and a fix will be applied when available.</li>
-        </ul>
-        <p>
-          Please refer to the <a href="http://any23.apache.org/dev-validation-fix.html" target="_blank">Developer Guide</a>
-          for any further detail.
-        </p>
-      </div>
-      <div class="modal-footer">
-        <a href="#" class="btn" >Close</a>
-      </div>
-    </div>
-
-    <div id="sPopup-report" class="modal hide fade">
-      <div class="modal-header">
-        <button type="button" class="close">×</button>
-        <h3>Report</h3>
-      </div>
-      <div class="modal-body">
-        <p>
-        If the <i>Report</i> checkbox is selected, the <b>Any23</b> service returns an <b>XML</b> output containing,
-        other then the <b>extracted RDF statements</b>, other information as the list of the <b>activated extractors</b>
-        and the <b>detected errors</b>.
-        </p>
-        <p>
-        If the <b>validation</b> or <b>validation and fix</b> has been activated then the report contains also a list
-        of the applied fixes.
-        </p>
-      </div>
-      <div class="modal-footer">
-        <a href="#" class="btn">Close</a>
-      </div>
-    </div>
-
-    <div id="sPopup-annotate" class="modal hide fade">
-      <div class="modal-header">
-        <button type="button" class="close">×</button>
-        <h3>Annotate</h3>
-      </div>
-      <div class="modal-body">
-        <p>
-        If the <i>Annotate</i> checkbox is selected, the <b>Any23</b> service returns an output expressed in the
-        selected <b>RDF</b> format containing also specific format <b>comments</b> describing the activated extractor
-        scopes for every produced statement.
-        </p>
-      </div>
-      <div class="modal-footer">
-        <a href="#" class="btn">Close</a>
-      </div>
-    </div>
-
-  </div>
-
-  <footer class="footer">
-  <div class="container-fluid">
-  Copyright &copy; ${project.inceptionYear}-2018 The <a href="http://www.apache.org/">Apache Software Foundation</a>. All Rights Reserved.<br/> Apache Any23, Apache, the Apache feather logo, and the Apache Any23 project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
-  </div>
-  </footer>
-
-  <!-- Google Analytics Tracker code. By default configured to report to the Any23 community group.
-  To change this default behavior please specify your custom ID in parent POM (form.tracker.id property)
-  or delete this script block to disable. -->
-  <script>
-    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-    ga('create', '${form.tracker.id}', 'auto');
-    ga('send', 'pageview');
-  </script>
-
-  </body>
-</html>
diff --git a/service/src/main/webapp/WEB-INF/web.xml b/service/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index bf0cdc4..0000000
--- a/service/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<web-app>
-
-  <display-name>Apache Any23 (Anything to Triples)</display-name>
-
-  <servlet>
-    <servlet-name>any23</servlet-name>
-    <servlet-class>org.apache.any23.servlet.Servlet</servlet-class>
-  </servlet>
-  <servlet>
-    <servlet-name>redirect</servlet-name>
-    <servlet-class>org.apache.any23.servlet.RedirectServlet</servlet-class>
-  </servlet>
-
-  <servlet-mapping>
-    <servlet-name>any23</servlet-name>
-    <url-pattern>/any23/*</url-pattern>
-  </servlet-mapping>
-  <servlet-mapping>
-    <servlet-name>redirect</servlet-name>
-    <url-pattern>/*</url-pattern>
-  </servlet-mapping>
-
-</web-app>
diff --git a/service/src/main/webapp/resources/css/bootstrap.min.css b/service/src/main/webapp/resources/css/bootstrap.min.css
deleted file mode 100644
index b74b454..0000000
--- a/service/src/main/webapp/resources/css/bootstrap.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*!
- * Bootstrap v2.0.4
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:- [...]
diff --git a/service/src/main/webapp/resources/images/logo-any23-214x97.png b/service/src/main/webapp/resources/images/logo-any23-214x97.png
deleted file mode 100644
index 9d84c2a..0000000
Binary files a/service/src/main/webapp/resources/images/logo-any23-214x97.png and /dev/null differ
diff --git a/service/src/main/webapp/resources/images/logo-apache-90x30.png b/service/src/main/webapp/resources/images/logo-apache-90x30.png
deleted file mode 100644
index c44eb11..0000000
Binary files a/service/src/main/webapp/resources/images/logo-apache-90x30.png and /dev/null differ
diff --git a/service/src/main/webapp/resources/js/bootstrap-modal.js b/service/src/main/webapp/resources/js/bootstrap-modal.js
deleted file mode 100644
index 11b951e..0000000
--- a/service/src/main/webapp/resources/js/bootstrap-modal.js
+++ /dev/null
@@ -1,222 +0,0 @@
-/* =========================================================
- * bootstrap-modal.js v2.0.4
- * http://twitter.github.com/bootstrap/javascript.html#modals
- * =========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================= */
-
-!function ($) {
-
-  "use strict";
-
- /* MODAL CLASS DEFINITION
-  * ====================== */
-
-  var Modal = function (content, options) {
-    this.options = options
-    this.$element = $(content)
-      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
-  }
-
-  Modal.prototype = {
-
-      constructor: Modal
-
-    , toggle: function () {
-        return this[!this.isShown ? 'show' : 'hide']()
-      }
-
-    , show: function () {
-        var that = this
-          , e = $.Event('show')
-
-        this.$element.trigger(e)
-
-        if (this.isShown || e.isDefaultPrevented())
-          return
-
-        $('body').addClass('modal-open')
-
-        this.isShown = true
-
-        escape.call(this)
-        backdrop.call(this, function () {
-          var transition = $.support.transition && that.$element.hasClass('fade')
-
-          if (!that.$element.parent().length) {
-            that.$element.appendTo(document.body) //don't move modals dom position
-          }
-
-          that.$element
-            .show()
-
-          if (transition) {
-            that.$element[0].offsetWidth // force reflow
-          }
-
-          that.$element.addClass('in')
-
-          transition ?
-            that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
-            that.$element.trigger('shown')
-
-        })
-      }
-
-    , hide: function (e) {
-        e && e.preventDefault()
-
-        var that = this
-
-        e = $.Event('hide')
-
-        this.$element.trigger(e)
-
-        if (!this.isShown || e.isDefaultPrevented())
-          return
-
-        this.isShown = false
-
-        $('body').removeClass('modal-open')
-
-        escape.call(this)
-
-        this.$element.removeClass('in')
-
-        $.support.transition && this.$element.hasClass('fade') ?
-          hideWithTransition.call(this) :
-          hideModal.call(this)
-      }
-
-  }
-
-
- /* MODAL PRIVATE METHODS
-  * ===================== */
-
-  function hideWithTransition() {
-    var that = this
-      , timeout = setTimeout(function () {
-          that.$element.off($.support.transition.end)
-          hideModal.call(that)
-        }, 500)
-
-    this.$element.one($.support.transition.end, function () {
-      clearTimeout(timeout)
-      hideModal.call(that)
-    })
-  }
-
-  function hideModal(that) {
-    this.$element
-      .hide()
-      .trigger('hidden')
-
-    backdrop.call(this)
-  }
-
-  function backdrop(callback) {
-    var that = this
-      , animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-        .appendTo(document.body)
-
-      if (this.options.backdrop != 'static') {
-        this.$backdrop.click($.proxy(this.hide, this))
-      }
-
-      if (doAnimate)
-        this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      doAnimate ?
-        this.$backdrop.one($.support.transition.end, callback) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      $.support.transition && this.$element.hasClass('fade')?
-        this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
-        removeBackdrop.call(this)
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-  function removeBackdrop() {
-    this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  function escape() {
-    var that = this
-    if (this.isShown && this.options.keyboard) {
-      $(document).on('keyup.dismiss.modal', function ( e ) {
-        e.which == 27 && that.hide()
-      })
-    } else if (!this.isShown) {
-      $(document).off('keyup.dismiss.modal')
-    }
-  }
-
-
- /* MODAL PLUGIN DEFINITION
-  * ======================= */
-
-  $.fn.modal = function (option) {
-    return this.each(function () {
-      var $this = $(this)
-        , data = $this.data('modal')
-        , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
-      if (!data)
-        $this.data('modal', (data = new Modal(this, options)))
-      if (typeof option == 'string')
-        data[option]()
-      else if (options.show)
-        data.show()
-    })
-  }
-
-  $.fn.modal.defaults = {
-      backdrop: true
-    , keyboard: true
-    , show: true
-  }
-
-  $.fn.modal.Constructor = Modal
-
-
- /* MODAL DATA-API
-  * ============== */
-
-  $(function () {
-    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
-      var $this = $(this), href
-        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
-        , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
-
-      e.preventDefault()
-      $target.modal(option)
-    })
-  })
-
-}(window.jQuery);
\ No newline at end of file
diff --git a/service/src/main/webapp/resources/js/jquery-1.7.2.min.js b/service/src/main/webapp/resources/js/jquery-1.7.2.min.js
deleted file mode 100644
index 16ad06c..0000000
--- a/service/src/main/webapp/resources/js/jquery-1.7.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.7.2 jquery.com | jquery.org/license */
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.bod [...]
-a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){ [...]
-.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagNa [...]
\ No newline at end of file
diff --git a/service/src/test/java/org/apache/any23/servlet/ServletTest.java b/service/src/test/java/org/apache/any23/servlet/ServletTest.java
deleted file mode 100644
index a09982a..0000000
--- a/service/src/test/java/org/apache/any23/servlet/ServletTest.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.any23.servlet;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URLEncoder;
-import org.apache.any23.http.HTTPClient;
-import org.apache.any23.source.DocumentSource;
-import org.apache.any23.source.FileDocumentSource;
-import org.apache.any23.source.StringDocumentSource;
-import org.apache.any23.util.StringUtils;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.eclipse.jetty.http.HttpTester;
-import org.eclipse.jetty.servlet.ServletTester;
-
-/**
- * Test case for {@link Servlet} class.
- */
-// TODO: some test verifications are not strict enough.
-//       The assertContainsTag() doesn't verify the entire output content.
-public class ServletTest {
-
-    private static String content;
-    private static String acceptHeader;
-    private static String requestedIRI;
-
-    private ServletTester tester;
-
-    @Before
-    public void setUp() throws Exception {
-        tester = new ServletTester();
-        tester.setContextPath("/");
-        tester.addServlet(TestableServlet.class, "/*");
-        tester.start();
-        content = "test";
-        acceptHeader = null;
-        requestedIRI = null;
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tester.stop();
-        tester = null;
-    }
-
-    @Test
-    public void testGETOnlyFormat() throws Exception {
-        HttpTester.Response response = doGetRequest("/xml");
-        Assert.assertEquals(404, response.getStatus());
-        assertContains("Missing IRI", response.getContent());
-    }
-
-    @Test
-    public void testGETWrongFormat() throws Exception {
-        HttpTester.Response response = doGetRequest("/dummy/foo.com");
-        Assert.assertEquals(400, response.getStatus());
-        assertContains("Invalid format", response.getContent());
-    }
-
-    @Test
-    public void testGETInvalidIRI() throws Exception {
-        HttpTester.Response response = doGetRequest("/xml/mailto:richard@cyganiak.de");
-        Assert.assertEquals(400, response.getStatus());
-        assertContains("Invalid input IRI", response.getContent());
-    }
-
-    @Test
-    public void testGETWorks() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/nt/foo.com/bar.html");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com/bar.html", requestedIRI);
-        String res = response.getContent();
-        assertContains(
-                "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2006/vcard/ns#VCard>",
-                res
-        );
-    }
-
-    @Test
-    public void testGETAddsHTTPScheme() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/nt/foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-    }
-
-    @Test
-    public void testGETIncludesQueryString() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/nt/http://foo.com?id=1");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com?id=1", requestedIRI);
-    }
-
-    @Test
-    public void testGETwithIRIinParam() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/nt?uri=http://foo.com?id=1");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com?id=1", requestedIRI);
-    }
-
-    @Test
-    public void testGETwithFormatAndIRIinParam() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/?format=nt&uri=http://foo.com?id=1");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com?id=1", requestedIRI);
-    }
-
-    @Test
-    public void testGETwithURLDecoding() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/nt/http%3A%2F%2Ffoo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-    }
-
-    @Test
-    public void testGETwithURLDecodingInParam() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/nt?uri=http%3A%2F%2Ffoo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-    }
-
-    @Test
-    public void testPOSTNothing() throws Exception {
-        HttpTester.Response response = doPostRequest("/", "", null);
-        Assert.assertEquals(400, response.getStatus());
-        assertContains("Invalid POST request", response.getContent());
-    }
-
-    @Test
-    public void testPOSTWorks() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doPostRequest("/", "format=nt&uri=http://foo.com", "application/x-www-form-urlencoded");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        String res = response.getContent();
-        assertContains("<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2006/vcard/ns#VCard>", res);
-    }
-
-    @Test
-    public void testPOSTWorksWithParametersOnContentType() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doPostRequest(
-                "/",
-                "format=nt&uri=http://foo.com",
-                "application/x-www-form-urlencoded;charset=UTF-8"
-        );
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        String res = response.getContent();
-        assertContains(
-                "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2006/vcard/ns#VCard>",
-                res
-        );
-    }
-
-    @Test
-    public void testPOSTBodyWorks() throws Exception {
-        String body = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doPostRequest("/nt", body, "text/html");
-        Assert.assertEquals(200, response.getStatus());
-        String res = response.getContent();
-        assertContains(
-                "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2006/vcard/ns#VCard>",
-                res
-        );
-        Assert.assertNull(requestedIRI);
-    }
-
-    @Test
-    public void testPOSTBodyInParamWorks() throws Exception {
-        String body = URLEncoder.encode("<html><body><div class=\"vcard fn\">Joe</div></body></html>", "utf-8");
-        HttpTester.Response response = doPostRequest("/", "format=nt&body=" + body,
-                "application/x-www-form-urlencoded");
-        Assert.assertEquals(200, response.getStatus());
-        String res = response.getContent();
-        assertContains(
-                "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2006/vcard/ns#VCard>",
-                res
-        );
-        Assert.assertNull(requestedIRI);
-    }
-
-    @Test
-    public void testPOSTonlyIRI() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doPostRequest("/", "uri=http://foo.com", "application/x-www-form-urlencoded");
-        Assert.assertEquals(200, response.getStatus());
-        String res = response.getContent();
-        assertContains("a vcard:VCard", res);
-    }
-
-    @Test
-    public void testPOSTonlyFormat() throws Exception {
-        HttpTester.Response response = doPostRequest("/", "format=rdf", "application/x-www-form-urlencoded");
-        Assert.assertEquals(400, response.getStatus());
-        assertContains("uri", response.getContent());
-    }
-
-    /**
-     *
-     * @throws Exception if there is an error asserting test data
-     */
-    @Test
-    public void testGETwithURLEncoding() throws Exception {
-        content = null;
-        HttpTester.Response response = doGetRequest("/best/http://dbpedia.org/resource/Knud_M%C3%B6ller");
-        Assert.assertEquals(200, response.getStatus());
-    }
-
-    /**
-     *
-     * @throws Exception if there is an error asserting test data
-     */
-    @Test
-    public void testGETwithURLEncodingWithQuery() throws Exception {
-        content = null;
-        HttpTester.Response response = doGetRequest("/best/https://en.wikipedia.org/wiki/Knud_M%C3%B6ller?oldid=717712065");
-        Assert.assertEquals(200, response.getStatus());
-    }
-
-    /**
-     * This test has been disabled in order to avoid external resources
-     * dependencies
-     *
-     * @throws Exception if there is an error asserting test data
-     */
-    @Test
-    public void testGETwithURLEncodingWithFragment() throws Exception {
-        content = null;
-        HttpTester.Response response = doGetRequest("/best/http://dbpedia.org/resource/Knud_M%C3%B6ller#title");
-        Assert.assertEquals(200, response.getStatus());
-    }
-
-    @Test
-    public void testCorrectBaseIRI() throws Exception {
-        content = "@prefix foaf: <http://xmlns.com/foaf/0.1/> . <> a foaf:Document .";
-        HttpTester.Response response = doGetRequest("/nt/foo.com/test.n3");
-        Assert.assertEquals(200, response.getStatus());
-        assertContains("<http://foo.com/test.n3>", response.getContent());
-    }
-
-    @Test
-    public void testDefaultBaseIRIinPOST() throws Exception {
-        String body = "@prefix foaf: <http://xmlns.com/foaf/0.1/> . <> a foaf:Document .";
-        HttpTester.Response response = doPostRequest("/nt", body, "text/rdf+n3;charset=utf-8");
-        Assert.assertEquals(200, response.getStatus());
-        assertContains("<" + Servlet.DEFAULT_BASE_IRI + ">", response.getContent());
-    }
-
-    @Test
-    public void testPOSTwithoutContentType() throws Exception {
-        String body = "@prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://example.com/asdf> a foaf:Document .";
-        HttpTester.Response response = doPostRequest("/nt", body, null);
-        Assert.assertEquals(400, response.getStatus());
-        assertContains("Content-Type", response.getContent());
-    }
-
-    @Test
-    public void testPOSTwithContentTypeParam() throws Exception {
-        String body = URLEncoder.encode("<http://foo.bar> <http://foo.bar> <http://foo.bar> .", "utf-8");
-        HttpTester.Response response = doPostRequest("/", "format=nt&body=" + body + "&type=application/x-foobar",
-                "application/x-www-form-urlencoded");
-        Assert.assertEquals(415, response.getStatus());
-    }
-
-    @Test
-    public void testPOSTbodyMissingFormat() throws Exception {
-        HttpTester.Response response = doPostRequest(
-                "/",
-                "<html><body><div class=\"vcard fn\">Joe</div></body></html>", "text/html"
-        );
-        Assert.assertEquals(200, response.getStatus());
-        String res = response.getContent();
-        assertContains("a vcard:VCard", res);
-    }
-
-    @Test
-    public void testContentNegotiationDefaultsToTurtle() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        assertContains("a vcard:VCard", response.getContent());
-    }
-
-    @Test
-    public void testContentNegotiationForWildcardReturnsTurtle() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        acceptHeader = "*/*";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        assertContains("a vcard:VCard", response.getContent());
-    }
-
-    @Test
-    public void testContentNegotiationForUnacceptableFormatReturns406() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        acceptHeader = "image/jpeg";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(406, response.getStatus());
-        Assert.assertNull(requestedIRI);
-    }
-
-    @Test
-    public void testContentNegotiationForTurtle() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        acceptHeader = "text/turtle";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        assertContains("a vcard:VCard", response.getContent());
-    }
-
-    @Test
-    public void testContentNegotiationForTurtleAlias() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        acceptHeader = "application/x-turtle";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        assertContains("a vcard:VCard", response.getContent());
-    }
-
-    @Test
-    public void testContentNegotiationForRDFXML() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        acceptHeader = "application/rdf+xml";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        assertContains("<rdf1:RDF", response.getContent());
-    }
-
-    @Test
-    public void testContentNegotiationForNTriples() throws Exception {
-        content = "<html><body><div class=\"vcard fn\">Joe</div></body></html>";
-        acceptHeader = "text/plain";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com");
-        Assert.assertEquals(200, response.getStatus());
-        Assert.assertEquals("http://foo.com", requestedIRI);
-        assertContains("<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>", response.getContent());
-    }
-
-    @Test
-    public void testResponseWithReport() throws Exception {
-        content = new FileDocumentSource(
-                new File("src/test/resources/org/apache/any23/servlet/missing-og-namespace.html")
-        ).readStream();
-        acceptHeader = "text/plain";
-        HttpTester.Response response = doGetRequest("/best/http://foo.com?validation-mode=validate-fix&report=on");
-        Assert.assertEquals(200, response.getStatus());
-        final String content = response.getContent();
-        assertContainsTag("response", content);
-        assertContainsTag("extractors", content);
-        assertContainsTag("report", content);
-        assertContainsTag("message", true, 1, content);
-        assertContainsTag("error", true, 1, content);
-        assertContainsTag("error", true, 1, content);
-        assertContainsTag("validationReport", content);
-        assertContainsTag("errors", content);
-        assertContainsTag("issues", content);
-        assertContainsTag("ruleActivations", content);
-        assertContainsTag("data", content);
-    }
-
-    @Test
-    public void testJSONResponseFormat() throws Exception {
-        String body = "<http://sub/1> <http://pred/1> \"123\"^^<http://datatype> <http://graph/1>.";
-        HttpTester.Response response = doPostRequest("/json", body, "application/n-quads");
-        Assert.assertEquals(200, response.getStatus());
-        final String EXPECTED_JSON
-            = "[ {\n"
-            + "    \"type\" : \"uri\",\n"
-            + "    \"value\" : \"http://sub/1\"\n"
-            + "  }, \"http://pred/1\", {\n"
-            + "    \"type\" : \"literal\",\n"
-            + "    \"value\" : \"123\",\n"
-            + "    \"lang\" : null,\n"
-            + "    \"datatype\" : \"http://datatype\"\n"
-            + "  }, \"http://graph/1\" ]";
-        assertContains(EXPECTED_JSON, response.getContent());
-    }
-
-    @Test
-    public void testJSONLDResponseFormat() throws Exception {
-        String body = "<http://sub/1> <http://pred/1> \"123\"^^<http://datatype> <http://graph/1>.";
-        HttpTester.Response response = doPostRequest("/jsonld", body, "application/n-quads");
-        Assert.assertEquals(200, response.getStatus());
-        final String EXPECTED_JSON =
-                "[ {\n" +
-                "  \"@graph\" : [ {\n" +
-                "    \"@id\" : \"http://sub/1\",\n" +
-                "    \"http://pred/1\" : [ {\n" +
-                "      \"@type\" : \"http://datatype\",\n" +
-                "      \"@value\" : \"123\"\n" +
-                "    } ]\n" +
-                "  } ],\n" +
-                "  \"@id\" : \"http://graph/1\"\n" +
-                "} ]";
-        assertContains(EXPECTED_JSON, response.getContent());
-    }
-
-    @Test
-    public void testTriXResponseFormat() throws Exception {
-        String body = "<http://sub/1> <http://pred/1> \"123\"^^<http://datatype> <http://graph/1>.";
-        HttpTester.Response response = doPostRequest("/trix", body, "application/n-quads");
-        Assert.assertEquals(200, response.getStatus());
-        final String content = response.getContent();
-        assertContainsTag("graph", false, 1, content);
-        assertContainsTag("uri", false, 3, content);
-        assertContainsTag("triple", false, 1, content);
-    }
-
-    private HttpTester.Response doGetRequest(String path) throws Exception {
... 162 lines suppressed ...