When we worked with iWay Consultants, they were using a word ‘Canonical‘. I didn’t know what canonical means! All right I’m not a native English speaker, but even one of our American coworkers asked them to learn what canonical is…
They were saying:
- “We would convert input file to canonical XML message.”
- “We will create a canonical XML message for Sales Orders, so all input interfaces will be converted to canonical message…”, so on…
I understand canonical means general, common, basic… The goal is to create a common message for Sales Orders. So we would convert each input interface to a common (canonical) XML message, then we would convert it to IDOC ORDERS05.
I was wondering whether canonical is a general term in SOA or XML terminology or they were using it personally. Therefore let’s dig deep about that.
I checked the Turkish dictionary seslisozluk.com for canonical, but its meaning sounds to me as a religious word. Look at canonical at dictionary.com; you can see its all religious means. It’s even something related to canons; so it is also a military word.
Let’s check online encyclopedia wikipedia for canonical.
Canonical is an adjective derived from canon. Canon comes from the Arabic word “Qanuun” which essentially means “rule”, “law”, “standard”, and has come to mean “generally accepted” or “authoritatively correct.”
basic, canonic, canonical: reduced to the simplest and most significant form possible without loss of generality, e.g. “a basic story line”; “a canonical syllable pattern”
It comes from the Arabic word “Qanuun”. We Turks use this word as “Kanun” which means “law”, “rule” in Turkish. What a interesting point! Wikipedia says it has meanings in different areas: Religion, Literature, Mathematics, Computer Science, Physics. Here its meaning in Computer Science:
Some circles in the field of computer science have borrowed this usage from mathematicians. It has come to mean “the usual or standard state or manner of something”; for example, “the canonical way to organize a file system is as a hierarchy, with extensions to make it a directed graph”. XML Signature defines canonicalization as the process of converting XML content to a canonical form, to take into account changes that can invalidate a signature over that data (from JWSDP 1.6).
For an illuminating story about the word’s use among computer scientists, see the Jargon File’s entry for the word.
Some people have been known to use the noun canonicality; others use canonicity. In fields other than computer science, canonicity is this word’s canonical form.
The company Canonical Ltd. is named jocularly referencing this usage.
There is an interesting note here about canonical:
Hackers invest this term with a playfulness that makes an ironic contrast with its historical meaning. A true story: One Bob Sjoberg, new at the MIT AI Lab, expressed some annoyance at the incessant use of jargon. Over his loud objections, GLS and RMS made a point of using as much of it as possible in his presence, and eventually it began to sink in. Finally, in one conversation, he used the word canonical in jargon-like fashion without thinking. Steele: “Aha! We’ve finally got you talking jargon too!” Stallman: “What did he say?” Steele: “Bob just used ‘canonical’ in the canonical way.”
Let’s return our topic: Canonical in XML terminology and search canonical to on internet. Here what I found:
- Canonical XML Version 1.0 at W3C
- Introducing XML canonical form by Uche Ogbuji
- Canonical XML presentation by Roger L. Costello
- XML Canonicalizer of Stylus Studio
- Working with Canonical XML by Kenneth B. Sall
- Core XML standards: Canonical XML
- XML Canonicalization by Bilal Siddiqui
- Canonical XML at Fujitsu
My understanding Canonical XML has more meanings than basic, general. Because there is a W3C Recommendation (Specification, Standard) about Canonical XML. Basically Canonical XML performs the following when it normalizes documents:
- Unifies the encoding method to “UTF-8”.
- Unifies the line-feed character as “#xA”.
- Reorders the attribute notations in alphabetical order.
- Expands the character references and Entity references that can be parsed.
- Replaces the CDATA section with contents.
- Suppresses the XML declaration and DTD declaration from being output.
- Uses the start tag and the end tag continuously for empty elements.
Here there is a interesing post which is discussing Single Canonical form – not for SOA by Steve Jones.
Also this article ‘Service Oriented Architecture (SOA) – Concepts, Components, Standards and Benefits by Peter Eichhorst explains the usage canonical XML forms in SOA structure.
BEA’s approach to Canonical Message Formats by Coco Jaenicke.
All right there are lots of things to learn about SOA.