R&D 2025

Things I plan to work on in 2025

Introduction

There are a couple of significant tasks that I plan to work on this year, one of which is a continuation and expansion of the work I did in the last few months of 2024, while the other is completely new (to me at least) and which I hope will lead to some new and interesting results.

These tasks are currently self-funded and will be detailed in future blog posts, although I will be happy work with others on these tasks especially if funding is involved because I have limited funds available and may need to find other work instead.

1. Java Foundation Ontology

Over the last two or three months of 2024 I worked on a Java Foundation Ontology along with a Java Persistence API (JPA) implementation and an in-memory implementation, as well as some example code in unit tests and a small Spring Boot project to show how to use it.

For 2025 I plan to continue working on this, with the following tasks:

  • More examples and use cases to aid further development and with finding problems with the model
  • Import/export data from IES4 models
  • Use MagmaCore as a persistence layer to add HQDM support
  • Add TypeDB as a persistence layer, hopefully to reduce the impedance match between the graph model and JPA
  • Re-implement a project that was developed using MagmaCore directly. This will be a good test for whether the Java Foundation Ontology is easier to work with than MagmaCore.

2. Complex Types for Functional Data Modelling

This will involve the use of statically typed programming languages try to capture the meaning within data structures so that other objects with the same meaning can be used in their place if needed.

It's hard to give examples of what I mean by this so I will produce a more detailed blog post to clarify things once some useful progress has been made.

My hope is that it will lead to some of the following benefits and applications:

  • IDEs with built-in type checking will be able to find modelling errors more easily.
  • The focus will be on functions (activities) as well as the data they consume and produce.
  • Functions will represent real-world activities and processes as well as their resources and environmental requirements, so it will not be possible to carry out an activity without all of the prerequisites.
  • Functions will model 'everything' required by the activity, and the results will include waste items produced by the activity that must be dealt with somehow as well as the desired results of the activity.
  • Complex data types will capture more information about what prerequisites are needed by functions.
  • Stronger types will allow inferencing engines to search for possible combinations of functions that will solve a particular problem, or that will lead to new and unexpected results that might be useful.

I anticipate that the data types needed will be complex and possibly deeply nested in order to capture the required details, and that the corresponding function signatures will make it almost impossible to call them with the wrong data. This is to be proven of course, but that is the goal of this task.