A Brief History of SADL

The Semantic  Application Design Language (SADL) began at the end of 2007. Andy Crapo had been working on a project with Mike Graham to capture knowledge for equipment overhaul. He had suggested the use of the Web Ontology Language (OWL) to capture a model of the domain, but Mike felt that engineers would never be comfortable using Protégé. Andy attended the Automated Software Engineering Conference in Atlanta, GA in November and sat behind Stanley Sutton of IBM Research Center. During a break Stan showed Andy Eclipse IMP, a set of Eclipse plug-ins generalizing the Eclipse Java Development Tool Kit (JDK) in order to support defining the grammar of a domain-specific language (DSL) and providing an integrated development environment (IDE) for the language with content assist, outlining, hyperlinking, error checking, quick fix, etc. (see : http://www.eclipse.org/proposals/imp/IMP_Creation-Review.pdf ). A light bulb came on and Andy envisioned a DSL that allowed subject matter experts to write controlled-English statements that mapped directly to OWL. Upon returning to GRC, he proposed capturing knowledge in OWL by providing such a DSL and Mike was supportive. Significant work went into defining a grammar that, when a model snippet expressed in the language was shown to a domain engineer, would be immediately understandable. Amy Aragones provided consulting on font and coloring for the semantic highlighting. Thus was born SADL Version 1 in early 2008.

SADL Version 1 was built on top of Jena from HP Labs in Bristol, England. Beside model statements translated to OWL, SADL supported rules, which were translated either to Jena Rules for a Jena-based reasoner or Semantic Web Rules Language (SWRL) rules for the Pellet reasoner. It also supported queries written in the W3C graph query language SPARQL. By the end of 2008 Aviation had given approval and SADL was released to Open Source on SourceForge (see http://sadl.sourceforge.net). Concurrent with SADL 1 development was the development of a knowledge server which ran independent of Eclipse and could be invoked by clients either using a Java API or a Web Service implementation using SOAP messaging. This knowledge server came to be known as SadlServer because deploying knowledge bases from the SADL IDE to the server was accomplished by simply copying the knowledge base folder to the server file system. Both the Java API and the Web Service API implemented the same Java Interface class, making it easy to move from one to the other.

When John Interrante started working on the project he identified Xtext as a more mature DSL development suite than IBM’s IMP and SADL Version 2 was built on top of Xtext (see https://eclipse.org/Xtext/). In Version 2 the grammar of SADL was expanded to provide support for all of OWL 1 and qualified cardinality from OWL 2. This scope was primarily defined by what Jena supported as the OWL translation still used the Jena API. The architecture of SADL 2 was improved to support use of any reasoner provided that a) it was wrapped so as to operate behind the IReasoner API and b) it had at least one associated translator that operated behind the ITranslator API. A user could select and configure the desired reasoner and select a supporting translator via the project properties interface, with those configuration settings being passed directly to the SadlServer kbase folder so that SadlServer would operate as specified in the IDE. Supported reasoners for SADL 2 included Jena and two flavors of Prolog. SADL 2 has an Open Source release and a GE-Only release that has additional functionality.

SADL 3 is approaching full functionality and was developed to better support the Aviation ASSERT™ Verification and Validation tool (see Safety Critical Software and Systems Research @ General Electric). The grammar is re-implemented in a much cleaner manner with extensive help from TypeFox and the architecture supports two important functions. a) Model processors are plug-ins, opening the way for a model processor that uses the OWL API rather than Jena, which would facilitate moving from OWL 1 to OWL 2. b) The SADL grammar is extensible by other grammars, e.g., the SADL Requirements Language (SRL) grammar used in ASSERT™. This makes extensions possible with very little additional grammar. SADL 3 also has extensive graphing capability, allowing ontology models and concept neighborhoods to be visualized as well as perceived in the controlled-English format.