Architecture

Printer-friendly version

Components

SemNExT Component Flow Chart

The block diagram above shows a typical flow in a SemNExT application between components. The webservice API acts as an interface for clients to communicate with the application, abstracting interaction for both ease of use and security. Specific API calls percolate down to both Annotator and Datasource objects, though it is recommended that developers abstract Datasource interaction through Annotators. The Annotators append information of interest to a Python representation of instance data and pass it back to the webservice, behaving somewhat like an actor model with message passing (though to be absolutely clear, SemNExT is NOT a concurrency-enabled system yet). Annotators can also call Analysis objects to perform a transformation on numerical data using a mathematical scripting language like Matlab or R, though this isn't specifically shown in the diagram. Once the annotation process is finished, messages are passed back to the client as JSON-LD and the results are stored in a Redis cache running in a separate Docker container.

Developing with the Framework


While the internal organization of the service is ultimately up to the developer, we recommend following our included Developer's Guide when developing the components of a SemNExT service. The framework was designed carefully so that each component would fit together neatly and provide an easily-understood methodology for developers. This allows development to be streamlined considerably and for easy reuse of applications written using the service. We encourage using SemNExT however necessary in order to develop the application you need, but straying too far from this model will often mean there's a better alternative to our system for your needs.