<?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>

  <groupId>org.apache.stanbol</groupId>
  <artifactId>org.apache.stanbol.enhancer.engines.reactor</artifactId>
  <version>0.10.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Stanbol Enhancer Engines Reactor</name>
  <description>
    Pseudo project to build Enhancer Engines
  </description>
  <inceptionYear>2010</inceptionYear>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/engines
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/engines
    </developerConnection>
    <url>http://stanbol.apache.org/</url>
  </scm>

  <modules>
    <module>opennlp-ner</module>
	<module>langdetect</module>
    <module>langid</module>
    <module>topic</module>
    <module>metaxa</module>
    <module>tika</module>
    <module>entitytagging</module>
    <module>keywordextraction</module>
    <module>refactor</module>
    <!-- Enhancement Engines using external services -->
    <module>celi</module> <!-- http://linguagrid.org -->
    <module>geonames</module> <!-- http://geonames.org -->
    <module>opencalais</module> <!-- http://opencalais.com/ -->
    <module>zemanta</module> <!-- htt://zemanta.com -->
    <!-- Disambiguation Engine -->
    <module>disambiguation-mlt</module>
  </modules>
</project>
