Distributed client-server semantic reasoner

The point of Logic tools is to use logic to describe the domain of an application, in order to.

Separate the business from the technical parts

Make the most compact, understandable, auditable, verifiable and yet executable representation of the domain

This is achieved by combining two elements

The ontology describes the application domain, the concepts, their attributes, constraints, axioms, using the W3C standard language OW

The business rules define relationships and behaviours on this ontology, using pure logic, free from side effects, inconsistencies or contradictions, free from explicit sequencing, expressed in SWRL (extended), the standard rules language for the semantic web

Logic tools has reasoners, written in multi-platform Kotlin. The idea behind this internship is to research distributed reasoning.In particular, the reasoning initiated on a client (browser), but for which it does may or may not have all the information to complete the reasoning, and thus requiring distributing to server side reasoning.

This intern will imply

Learning multiplatform Kotlin (and coroutines)

Understanding SLD resolution, and in particular, the reasoner implementation

Coming up

with use cases

Find existing


Research possible architectures of logic and data distribution (stratification, delegation,…)

Implement at least one prototype of distributed reasoning


Multi-platform Kotlin, coroutines, JVM, JS/TS, RDF, OWL, SWRL, JSON-LD