Understanding SemantEco's Maven Profiles

SemantEco's webapp module uses Maven profiles to differentiate versions of SemantEco using different module configurations from one another. This document is meant to provide a basic overview of how some of these profiles interact and may not reflect the most current available list of profiles.

Configuring and Installing Git

Windows Users

Create an account at Github

Download the Github app for Windows and install it. Enter the credential you used to create your account at

Browse to In the top-right of the page, click the Fork button to fork the project into your account. You should see the forked repository show up in the Github app.

Click on the "Clone to Computer" button next to your newly forked repository.

SemantEco - Installing Maven

Installing Maven

For Windows Users: Download the appropriate version of maven from the [ Apache Maven website].

Debugging SemantAqua Modules FAQ

If you are developing a module for SemantAqua and are having trouble getting it to appear in the main portal when you deploy the application, there could be one or more things preventing this from occurring properly. This guide is meant to help troubleshoot the process by which a module goes from source code to executing as part of the SemantAqua framework.

=== Step 1. Clean, compile, and verify === Change into the root directory of SemantAqua and build the entire project using mvn clean install. In the maven output, check that your module was successfully built (i.e.

SemantAQUA - Maintaining State

The modular design of SemantAQUA makes it straightforward to extend the application with new datasets and algorithms. This increased modularity makes it more difficult to maintain the state of the application, but this has been simplified through the use of jQuery BBQ to keep track of the different variables. This document is meant to introduce developers to how SemantAQUA combines the various module properties with any arguments passed at runtime to control application behavior.

Communication between Client and Server

Modules often need to provide access to the results of server-side data processing. In order to support data interchange and interaction between different modules, SemantAqua provides a mechanism to simplify the interface between client and server.


A class extending the Module interface can define RESTful methods callable from the client by annotating them with the @QueryMethod annotation. Methods marked with this annotation are required to adhere to the following contract:

  • A @QueryMethod method must accept a Request object as its sole parameter

Writing a new Module for SemantEco

SemantEco is a modular system for loading and processing water quality data from different sources and combining them to provide an intuitive map-based interface for users to find polluted water sites in an area. This base functionality can be extended by additional modules that can modify the behavior of the system and extend the existing data and ontology models with additional data. This document provides instructions for the process of writing a new module for deployment in SemantEco.

SemantAqua - Downloading and Installing Subversion

Subversion is a source code versioning system (often abbreviation SVN). We maintain a subversion repository at Google Code to maintain the SemantAqua code base. To checkout the code repository for making modifications to SemantAqua, it is advisable for you to install a subversion client.

SemantAqua Development

This page is an unofficial manual for performing development on SemantAqua, either for one of the existing modules or for new modules. We provide a number of resources, including how to install and configure the maven build system for SemantAqua development, installing plugins for Eclipse to ease development, accessing the code via source control systems, instructions on building and deploying a module, etc.

Configuring the Build Environment

Syndicate content