You are saying that, since it is too expensive to do for 1+1 systems, lets do it for thousands? That’s like saying lets lose a little money on each sale, but make it up in volume!

MW: No when you do it for 100s of systems, the costs multiply, and the benefits of using an ontology come into play. Consider a network of 100 systems with 10 interfaces per system. Never mind the initial cost of building 10 interfaces rather than one. That could easily creep up on you. If we assume that each of these systems lasts 20 years before being replaced, then each year 5 systems will be replaced, and 50 interfaces will need to be replaced (instead of 5 using an ontology).

It’s a fairly compelling case. But I am please if you cannot see it.

My experience is that if one DB is programmed to export data to company X, then that same export will be considered when a second company Y has to be fed data.

MW: No. They will be the customer so they will tell you what format they want it in, unless you have an industry level ontology that you have both signed up to.

The incremental cost of adding a new export routine is only paid once,

MW: No. It will change as soon as one of the customer’s systems change.

and the format of the export becomes the standard.

MW: Standard for whom? It is not the supplier that sets the standards.

There is no need to do it differently for the next company, for the most part.

Thanks for the description of the example nuclear reactor. But I still question the value of adding the task of making an ontology, instead of just exporting data from a thirty year old system without the ontology step.

MW: I probably would not do it for just one system to one other system either. But how about for some hundreds of systems to some hundreds of other systems, where each system interfaces to on average 10 other systems. Oh, and it is not just one company that you are doing this for, but a whole industry. Much of the problem is supply chain related, where data is transferred e,g, from equipment suppliers to design contractors, to construction contractors, to owner operators, to maintenance contractors, to decommissioning contractors. Does each party in that chain want to have a bespoke way of exchanging information with each other party, or is it better to have one way to communicate?

How many times do you want to solve the same problem before you try to look for a shared solution?

In general, when I have to move data from one system to another, I just move the SQL tables, columns, domains (where compatible), views and (where necessary) stored procedures. Why would it be useful to first define an ontology for that thirty year old system? What benefits would the company get from adding that apparently unnecessary task to the activity of moving data from one system to another? If there is no benefit, no company would include it. So in your example, there has to be some benefit above and beyond data transfer. Could you please explain what benefit it might be to add the ontology task to taking data and/or software from a thirty year old reactor? You must have something in mind, but I am not following the rationale just yet.

MW: What the ontology gives you is a shared language that each system can translate into and out of, rather than having a distinct way to do it for each pair of system and company.

Moving data from one RDBMS to another is just not that hard. The problem is in understanding the data that people have actually typed into the database over the last thirty years. Different people put in different text descriptions all the time.

An ontology would have to enforce strong data typing of columns to be able to do any inference, but the data typing is just not there in thirty year old systems. Furthermore, adding that strong type checking at the data entry point is, for most systems, not productive use of labor, and in many cases, makes performance so sluggish as to impact the systems fitness for use.

Thanks for keeping at it though; I really am trying to find some value in compensation for the cost of constructing the ontology before transferring data. I just don’t follow that argument yet. It doesn’t fit my experience with systems, whether legacy or new. Please continue to explain it.

The problem is not working on 30 year old code. That probably stopped years ago, and the software would have been abandoned if it did not work, so it is of sufficient quality doing something rather mundane, that it does not need working on. The problem is how do you get the data out of this system and into the systems you need to decommission and deconstruct your nuclear reactor? How would you know how to interpret anything you could get out? The same would apply if you were going to replace the software of course.

You are not trying to tack ontologies on top. Unless you had developed an ontology 30 years ago, you would not have captured the semantics of the system outside the heads of those that did the development, so you would not have access to those semantics. So you need to develop an ontology of a system so that at some later date you can make use of the data in ways that were not anticipated when the system was built.

My advice to anyone working on programs that were written thirty years ago is to find another job. The technology is outdated, the tools have become much, much better, languages are more expressive, and subsystems can be licensed far more effectively now. My advice to managers who have a thirty year old software system of significant size is to muddle along as best they can while building an entirely new replacement using modern technology.

The only value in creaking along with thirty year old technology is in hoping it will go away soon and be replaced by something more functional.

In any case, the sunk cost of that 30 year old project has no current value other than avoiding replacement costs. So why try to tack ontologies on top of something with a very limited lifespan? I see ontologies, if they have a place at all, as newly emerging solutions to yet unidentified problems. Our concern should be to identify exactly which kinds of problems can be solved with ontologies. Only then will they have clear value.

My experience in software development in teams is that the vocabulary used is absolutely essential to the two programmers discussing their current issue of interfacing with each other. Whether other programmers use the same word or not isn’t significant to them; they are not writing programs to be readable until possibly after the said programs actually work. So the problem is already solved before any ontology is used, dictated, or agreed to. Then there’s time to adjust words to fit some manager’s choice of vocabulary, but that is AFTER the problem of a working program has already been solved.

And what about the situation when program A was written 30 years ago to support a nuclear power plant, the writer of which has since died, and the writer of the second programme now has to write interfaces to programs needed to decommission that nuclear power plant over the next 20 years.