/termit

An advanced SKOS terminology manager linking concepts to their definitions in documents

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

TermIt

TermIt is a SKOS compliant terminology management tool based on Semantic Web technologies. It allows managing vocabularies consisting of thesauri and ontologies. It can also manage documents whose content can be used to seed the vocabularies (e.g., normative documents with definition of domain terminology). In addition, documents can also be analyzed to discover occurrences of the vocabulary terms.

Terminology

Asset

An asset is an object of one of the main domain types managed by the system - Resource, Term or Vocabulary.

Required Technologies

  • JDK 17 or newer
  • Apache Maven 3.6.x or newer

System Architecture

The system is split into two projects, TermIt is the backend, TermIt UI represents the frontend. Both projects are built separately and can run separately.

See the docs folder for additional information on implementation, setup, configuration and the architectural decisions record.

Technologies

This section briefly lists the main technologies and principles used (or planned to be used) in the application.

  • Spring Boot 3, Spring Framework 6, Spring Security, Spring Data (paging, filtering)
  • Jackson 2.13
  • JB4JSON-LD - Java - JSON-LD (de)serialization library
  • JOPA - persistence library for the Semantic Web
  • JUnit 5 (RT used 4), Mockito 4 (RT used 1), Hamcrest 2 (RT used 1)
  • Servlet API 4 (RT used 3.0.1)
  • JSON Web Tokens (CSRF protection not necessary for JWT)
  • SLF4J + Logback
  • CORS (for separate frontend)
  • Java bean validation (JSR 380)

Ontology

The ontology on which TermIt is based can be found in the ontology folder. For proper inference functionality, termit-model.ttl, the popis-dat ontology model (http://onto.fel.cvut.cz/ontologies/slovnik/agendovy/popis-dat/model) and the SKOS vocabulary model (http://www.w3.org/TR/skos-reference/skos.rdf) need to be loaded into the repository used by TermIt (see doc/setup.md) for details.

Monitoring

We use JavaMelody for monitoring the application and its usage. The data are available on the /monitoring endpoint and are secured using basic authentication. Credentials are configured using the javamelody.init-parameters.authorized-users parameter in application.yml (see the JavaMelody Spring Boot Starter docs).

Documentation

TermIt REST API is available for each instance via Swagger UI. It is accessible at http://SERVER_URL/PATH/swagger-ui/index.html, where SERVER_URL is the URL of the server at which TermIt backend is running and PATH is the context path. A link to the API documentation is also available in the footer of the TermIt UI.

Build configuration and deployment is described in setup.md.

Docker

The Docker image of TermIt backend alone can be built by docker build -t termit-server .

Then, TermIt can be run and exposed at the port 8080 as sudo docker run -e REPOSITORY_URL=<GRAPHDB_REPOSITORY_URL> -p 8080:8080 termit-server

An optional argument is <GRAPHDB_REPOSITORY_URL> pointing to the RDF4J/GraphDB repository.

TermIt Docker images are also published to DockerHub.

Links

  • TermIt UI - repository with TermIt frontend source code
  • TermIt Docker - repository with Docker configuration of the whole TermIt system (including the text analysis service and data repository)
  • TermIt Web - contains some additional information and tutorials
  • TermIt: A Practical Semantic Vocabulary Manager - a conference paper we wrote about TermIt
    • Cite as Ledvinka M., Křemen P., Saeeda L. and Blaško M. (2020). TermIt: A Practical Semantic Vocabulary Manager.In Proceedings of the 22nd International Conference on Enterprise Information Systems - Volume 1: ICEIS, ISBN 978-989-758-423-7, pages 759-766. DOI: 10.5220/0009563707590766

License

Licensed under GPL v3.0.