# Semantic BMS
Welcome to the Semantic BMS framework project site.

The SemanticBMS project aims to provide semantic information for building 
information data. More details about the topic can be found in following paper:
http://link.springer.com/chapter/10.1007/978-3-319-31165-4_5

The Source files in this repository are proof-of-concept implementations of following
components of the middleware layer:
 * **SemanticBMSServer** - SemanticAPI & Ontology repository
 * **SemanticBMSClient** - Client for querying the Semantic API

The project is developed and by maintained by Lasaris lab at Faculty of 
Informatics, Masaryk University, Brno, Czech Republic.

The main developer is Adam Kučera. Contact: **akucera@mail.muni.cz**

ResearchGate profile: https://www.researchgate.net/profile/Adam_Kucera/

## How To

To deploy the application in Apache Tomcat container (tested for Tomcat 9):
* Set up the SemanticAPI to use your TDB (sample data can be created using the scripts in the testBench project)
* Update the tdb.path property in the semantics.properties file
* Build the SemanticAPI/DataAccessAPI project using maven:
```
    mvn install
    mvn war:exploded
```
* Create a directory named sbms in the webapps folder of your tomcat installation (e.g. C:\apache-tomcat-9.0.0.M19\webapps)
* Copy the resulting build (located in <Your git repositoty>\semanticBMS\SemanticAPI\target\SemanticAPI-1.0 for the SemanticAPI) 
  into the new directory directory (e.g. C:\apache-tomcat-9.0.0.M19\webapps\sbms) - the WEB-INF and META-INF folders 
  are meant to be placed directly in the sbms directory (and merged from both projects)
* Check the ont-policy.rdf file and update paths to the local ontology definitions if needed (both in the source project and in the Tomcat deployment)
* Run the Apache Tomcat
* The APIs are available at http://localhost:8080/sbms/semantics and http://localhost:8080/sbms/data
* To test the Semantic API, visit http://localhost:8080/sbms/semantics/types/type or run the performance tests.

Note: For simple testing, SemanticBMSServer can be used. However, this is discouraged option.

SemanticBMSServer is a legacy Maven project for Eclipse that can be executed using Maven Build with Goal set to exec:java. 
Additional configuration is required in the server.properties, as well as in the SemanticClient scripts.js file.
(the project is based on Jersey tutorial that can be found here: https://jersey.java.net/documentation/latest/getting-started.html)

