> So my recommended way of promoting ontology is to build on what
> programmers already know and use: UML diagrams.
> Most programmers ignore the OCL language, which is a version of FOL
> in a weird notation. My recommendation is to use controlled English
> as a replacement for OCL.
Would that I had a nickel for every time I've seen someone misinterpret a "controlled English" sentence. Unless you mean something like SBVR. Though in my experience, SBVR is somewhat limited compared to OCL, and requires more effort to write (if not to read). YMMV.
But back to the original point about the usefulness of ontologies. Ontologies compete against database technology, which: 1) is mature and stable; 2) executes very efficiently due to highly optimized code; 3) offers a powerful, standard query language that is implemented by every important vendor. Popular examples of ontologies (the wine ontology, UCore, the biomedical ontologies I've seen) do not contain anything that can't be represented in a relational database with only a little more effort. Furthermore, tools that support ontologies are largely Java-based, and hence slower. And if they’re not quite immature, they aren’t yet mature either.
My conclusion, then, is that end users are likely to understand the benefits of ontologies well before programmers.
What will be needed for programmers to see the light, in my opinion, is:
1. Relationships established among a set of distributed ontologies. Database replication is notoriously error prone in practice.
2. A widely used application whose capabilities rely on reasoning. There’s something you can’t do in a DBMS without a massive application development effort.
These are my priorities for convincing programmers. I’m sure you can add your own.