FROG: Functions for ontologies
Are you interested in ontologies and functional programming? Why not combine them!
FROG is a purely functional language similar to Scheme, but with a static type system and written in RDF. FROG is meant to manipulate the terms (IRIs, lists, literals, etc.) in OTTR template definitions, however it is also a useful language on its own for doing simple computations on terms within ontologies.
Here is an example of a FROG-function converting from Celsius to Fahrenheit:
ex:CtoF a :Function ; :type (:Fun xsd:number xsd:number ) ;
(fn:plus 32 (fn:times _:tempC ( fn:divide 9 5)))) .
The type system for FROG is currently the same as for OTTR-templates, see the specification for a full description.
This thesis involves implementing:
- A parser for FROG, translating RDF definitions into internal Java objects
- A type checker for FROG definitions
- An executor that can execute function calls
This implementation will extend out already existing OTTR implementation, named Lutra. Lutra is developed on GitLab and is open source.
The language is still in development, so the interested student can also participate in the development of the language itself, such as brainstorm extensions or help in the development of the type system.
So if your are interested in both knowledge representation and functional programming, this is the ideal topic for you! Contact Leif Harald Karlsen at firstname.lastname@example.org.