What history can teach us about semantics.
Lately we’ve been grappling with the issue of how to get a Semantics Inference Engine and a Business Rules Engine to play nice in an Enterprise Architecture. Some long dormant neuron fired and the Treaty of Tordesillas was invoked as a possible exemplar.
For those of you whose recollection of the Papal role in the age of exploration has faded, allow me to refresh your memory. The Portuguese were the first out of the blocks, in the Age of Discovery, sailing down the coast of Africa, and as a result, being granted by the Pope sovereignty over all the lands south of the Canary Islands (off the coast of Morocco, effectively giving them most of Africa, India, and Indonesia – the “East Indies”). Columbus, sailing under a Spanish flag, discovered islands in the new world (which he believed to part of the East Indies). On his return, the King of Spain petitioned the Pope (also a Spaniard) who granted Spain everything 300 miles west of the Cape Verde Islands (south and west of the Canaries, but still in the Eastern Atlantic).
The Portuguese howled in protest, and in 1494 in the Spanish Town of Tordesillas, they pounded out a compromise. The Treaty moved the line 800 miles farther west. A few years later, figuring that the world was likely far larger than earlier estimates, continued this imaginary line through the poles and to the “anti-meridian” which effectively gave Spain an entire hemisphere, but assured Portugal’s claim over the East Indies.
No one had any idea at the time, but the line bisected the still undiscovered South America, eventually giving Portugal domain over Brazil, and Spain the remainder. For the most part Spain and Portugal honored this Treaty for the rest of their explorations in the new world, and people in Brazil speak Portuguese today due to the placement of a line through a continent that the line drawers had no idea existed.
So what does this have to do with semantics and Business Rules? Glad you asked. If you’ve looked at a Business Rules implementation you probably noticed that a majority of the rules being written either define new terms or create simple inferences between terms. At the same time, if you look at semantic implementations you’ll see a great deal of effort trying to describe behavior but exporting it to scripting or other programming environments to be implemented.
Rather than embark on a series of unnecessary internecine battles over which tool to use for what, we recently postulated our own Treaty of Tordesillas: all term definition and inference of class membership would be done in a Semantics Inference environment, and all assertions about relationships, all calculations and all initiation of side effects would be done in the Rule Engine environment.
As near as we can tell, we’ve just drawn an imaginary line in the middle of the ocean. However, it seems to be a reasonable place to start. I was a speaker at the recent Business Rules Forum, and had a chance to try this out with Business Rule vendors and practitioners. The general response I got, I took to be favorable. Most questioned the need to use a separate tool for inference, as the Business Rules could do that. But on reflection most could see where it solves two of the Business Rules Communities problems: 1) rule implementations are getting large and unwieldy (and removing over half the rules could certainly help here) and 2) the terms and distinctions created in the Rule environment are typically not available as resources to the rest of the enterprise.
We haven’t appealed to a higher authority yet, but this now is our starting point for Enterprise Architectures: terms and inference on the Semantic side of the demarcation, calculation, property assertions and side effects on the Business Rule side. Who knows, maybe future generations will speak other languages as a result.
I’d love to hear any feedback from anyone who has been to this new world.