Showing posts with label controlled natural language. Show all posts
Showing posts with label controlled natural language. Show all posts

Wednesday, April 8, 2009

Semantic Web and Business (Part 1)

Most people think of Semantic Web as a "pie in the sky", impossible "field of dreams". But, that is being short-sighted. Semantic web technologies are here today and being used for some extremely interesting work.

Typically, you hear about semantic web as a way for computers to understand and operate over the data on the web, and not just exchange it via (mostly XML-based) syntaxes. However, to "understand" something, you must speak a common language and then have insight into the vocabulary and concepts used in that language. Well, the semantic web languages exist - they are standards like RDF (Resource Description Language), RDF-S (RDF Schema), and OWL (Web Ontology Language). These syntaxes carry the details of the concepts, terms and relationships of the vocabulary. (Note that I provided only basic links to the specifications here. There is much more detail available!)

One problem is defining the syntax - and we are getting there via the work of the W3C. The next problem is getting agreement about the vocabulary. That is much harder - since every group has their own ideas about what the vocabulary should be. So, here again, the Semantic Web steps in. Semantic Web proponents are not just researching how to define and analyze vocabularies (you could also use the word, "ontology", here) - but how to merge and align them!

So, where does this intersect with business? Businesses have lots of implicit vocabularies/ontologies (for example, belonging to procurement, accounts payable, specific domain technologies integral to the organization, IT and other groups). And, business processes and data flows cross groups and therefore, cross vocabularies - and this leads to errors! Typically, lots of them!

Does this mean that everyone adopt a single vocabulary? Usually that is not even possible ... People who have learned a vocabulary and use it to mean very specific things, cannot easily change to use a new, different word. Another problem is agreeing on what a term means - like "customer" (is that the entity that pays for something, an end-user, or some other variant on this theme?).

Changing words will cause a slow down in the operations of the business due to the need to argue over terminology and representation. Then if a standard vocabulary is ever in place, there will be slowdowns and errors as people try to work the new vocabulary into their practices and processes. (BTW, I think that this is one reason that "standard" common models or a single enterprise information model are so difficult to achieve.)

How do we get around this? Enter the Semantic Web to help with the alignment of vocabularies/ontologies. But, first the vocabularies have to be captured. Certainly, no one expects people to write RDF, RDF-S or OWL. But, we all can write our natural languages - and that takes us back to "controlled languages" as I discussed in my previous post. I have a lot of ideas on how to achieve this ... but, this will come in later posts.

So, more on this in later weeks, but hopefully this post provides some reasons to be interested in the semantic web (more than just its benefits to search) ...

Tuesday, April 7, 2009

DSLs - Do we have to love them?

DSL stands for "domain-specific language". And, according to Wikipedia (http://en.wikipedia.org/wiki/Domain-specific_programming_language), it is "a programming languaage or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique." Most likely, because the tools to produce them are programmer-oriented, DSLs define specific syntax (usually with seemingly bizarre semi-colons at the end of each definition) providing the inputs to computer frameworks or applications. Some examples are syntax to define security or systems management policies, definitions of how an application should be created or deployed, or even something simple like giving your name and a list of friends.

Why do systems engineers think that these are cool? Because they are fun to create, and are simpler to write and use than writing in a programming language or XML.

But, when is enough enough? Every application could end up with its own DSL - because each application expects specific data in some specific format. So, just like today, there are tons of user interfaces (but the industry is trying to standardize on a few due to customer pushback), we have (or if you don't think that we are there yet, will likely have) tons of DSLs. Talk about a business/IT nightmare!
Think about everything that you have to remember!

What are some alternatives? How about natural language? Not the messy grammar and slang of everyday natural language ... but a "controlled" version of this. What does this mean? Well, I like using Wikipedia (when its definitions are solid) - so, let's take their definition (http://en.wikipedia.org/wiki/Controlled_natural_language). Controlled NLs are "subsets of natural languages, obtained by restricting the grammar and vocabulary in order to reduce or eliminate ambiguity and complexity. Traditionally, controlled languages fall into two major types: those that improve readability for human readers (e.g. non-native speakers), and those that enable reliable automatic semantic analysis of the language."

Two excellent examples of the latter category are Attempto Controlled English (http://attempto.ifi.uzh.ch/site/) and a translation of OMG's Semantics of Business Vocabulary and Business Rules into English (in the appendices of the spec at http://www.omg.org/spec/SBVR/1.0/). (Note: the "official" SBVR definition is XML-based, and not very human readable/writable or anything close to controlled English.) :-) An interesting fact is that Attempto Controlled English has an add-in for Protege which allows the translation of English-defined vocabulary and rules into OWL and SWRL! (If you don't know what these are - no worries - I plan on spending some time defining them ... they are semantic computing standards.)

At the end of the day, I think that we need more natural interfaces and input mechanisms for business and IT people, and less techy specific languages (insert here: DSLs).