Showing posts with label Ontorion. Show all posts
Showing posts with label Ontorion. Show all posts

Tuesday, 19 May 2015

Ask Data Anything

Ask Data Anything is Cognitum's approach to exploring data by using a subset of natural language which articulates concepts and instances modeled in ontologies to provide a meaningful quering experience. Ask Data Anything seizes on regularities of language to provide a natural interpretation of queries being asked; its semantics are provided via R and rOntorion (alternatively  F# and Ontorion).

Technically, Ask Data Anything is capable of performing projection, sub-setting, grouping and aggregation operations, providing answers for queries involving the following information:
  • What? Any of the columns of your data table are considered a quantitative field over which to perform queries,
  • How? How the output is to be shown. The results of the query can be retrieved on either a table, histogram or a map,
  • Where? (Optional) The "in" preposition allows to restrict the search to an specific named group of items  as happens for instance with continents which can be seeing as a group of countries,
  • Of? (Optional) The "of" preposition allows to dive into the data, restricting the desired results to a certain set of types (concepts in the Fluent Editor sense) by searching the data in a certain column for instances (in Fluent Editor sense) of those types; we call this material sub-setting,
  • By? (Optional) By which type (in Fluent Editor sense) you would like to group the results for aggregation purposes.
  • When? (Optional) Queries can contain time constraints.

Monday, 23 March 2015

Fluent Editor 2014 R3 - Diagrams, SWRL debugger, Active Rules emulator...

Recently we have published an updated release of the Fluent Editor 2014 with few new great features many of you have requested so far. We want to make ontology development even easier and pleasant task! With new Fluent Editor you can instantly visualize your ontologies, better inspect ontology ecosystem with references, trace down SWRL rules and simulate server behavior. Here’s what’s new:
  • Ontology Diagrams
  • Rereference Diagrams
  • Reference Explorer
  • SWRL Debugger
  • Active Rules emulator
  • Proxy Configuration
  • Performance improvements


Monday, 16 February 2015

Using OWL Annotation in Fluent Editor

OWL Annotations together with SKOS and DcTerms form a widely used Thesaurus standard that help the ontology modeler to give meaningful names to elements of the ontology or to relates elements in various ontology. In the latest release of Fluent Editor, we have introduced the possibility to add, remove and modify OWL annotations with full support for SKOS and DcTerms. As always this has been implemented thinking of the usability over everything. 

All actions related to the annotations are reachable from the Annotation tab that was added in the right column of the Fluent Editor window. To see how to use annotations in Fluent Editor,you can open the Book Reference template. To see the template, click on File -> New  and then Book Reference.

Monday, 19 January 2015

Mixing Text Mining with Semantic Technologies - sample application.

The very broad subject of processing the natural language is incredibly hot nowadays. In many cases, a regular text mining approach is not adequate to the problems that we are facing. Therefore text mining methods are mixed with Natural Language Processing(NLP) methods, like also, with semantic technologies - what gives better results. One of such a problem is how to find out, if two sentences are semantically equal or not.

The solution for the above problem could be used on many fields. One of them is detection of an abusive clauses inside a contract. Sometimes it's really hard to understand correctly, the exact meaning of a clause inside a contract, even for a specialists. For a sake of presentation I have developed a simple application prototype which attempts to solve this problem. Application was developed in C# and it uses Ontorion SDK.

Input

Before running the application we need three files:
  1. File with contract in which we will attempt to detect abusive clauses.
  2. File with abusive clauses.
  3. File with ontology.

Friday, 16 January 2015

Using the rOntorion package in R / RStudio and Fluent Editor

The rOntorion package is the port of Cognitum's Semantic Technologies to R. R has become an important tool among Statisticians and Data Scientists and we are proud to provide this community with an enhanced Linked-Data manipulation experience that will allow them to edit, store and reason over structured data (in the supported formats ocnl, rdf and owl); henceforth discovering new horizons in Data Analysis. rOntorion allows to extend Fluent Editor in R and in turn provides the users with the capability of creating their own custom functionality.

rOntorion in R

To demonstrate the use of rOntorion directly from R, let us go through a minimal example. In this example we are going to reason over a set of dummy sentences and infer a single logical conclusion by querying the semantic engine with a question expressed in ocnl format. First we need to install rOntorion: to do so, issue the following command in an R Console:

Monday, 8 December 2014

Fluent Editor 2014 R2 available for download - SPARQL, annotations, R language and more...

Second Release of the Fluent Editor 2014, a comprehensive ontology editor, is available for download now!


What’s new in this release:

  • Embedded SPARQL engine
  • Materialized Graph insight
  • OWL2-RL validation
  • OWL Annotations and SKOS
  • Protégé interoperability
  • R language package
  • R language plugins
  • Collaborative ontology management with Ontorion
  • Custom Reasoners
  • Performance improvements

Monday, 20 October 2014

Fluent Editor 2014 R1 available


So here it is: Fluent Editor 2014 R1

You may have noticed that Cognitum recently released a new version of Fluent Editor, a comprehensive ontology editor for OWL and SWRL.

The idea is still the same, but the software has been significantly rebuilt. Thanks to the great feedback from the community and dozens of ontologies both developed with Fluent Editor and reused/"consumed" with it, new version has many features improved to make it easier and more straightforward to work with existing ontologies and create new ones from scratch.

It’s all about productivity and simplicity while creating, editing and consuming ontologies.

New UI

New Fluent Editor cames with new User Interface that make user more familiar with Microsoft Office. The New UI allows for fast opening several ontologies at once, share them easily and navigate through them.

Wednesday, 8 October 2014

Ontorion SPARQL Tools for Excel


We have just released a SPARQL addin for Excel. This Addin has been developed by Cognitum as part of its semantic technology framework: Ontorion Server and Fluent Editor. Ontorion SPARQL Tools for Excel is a free Addin to MS Excel 2010 and 2013 and can be downloaded here. This addin has been designed to help people in the Knowledge Management business or people interested in the data available from SPARQL endpoints to easily import data from a SPARQL endpoint and/or an Ontorion Server. With the number of SPARQL endpoint growing year after year, this seems as a very important feature that was lacking in Excel until the present day. As you will see with our adding it is possible to do all of this with few single clicks.

 


Tuesday, 2 September 2014

Oncology App - Clinical Decision Support System

Hi, this is Ola form Cognitum. Today I will show you yet another problem which can be solved efficiently by CNL semantic technology.


The problem

Nowadays the medical knowledge is greater than ever. There are official medical guidelines that every doctor is obliged to follow. There are plenty of study cases and a lot of statistical data which help evaluate the probability of successful treatment. Every patient should have right to take advantage of most recent medical research. However, it is hard to do on daily basis. How can the doctor analyze all the books with medical data during patient's visit?

Our solution

Our Oncology Application guides the doctor throughout the patient’s visit. It suggests next steps of the therapy in accordance with up to date medical standards.
When the physician enters the essential information into the application, the system analyzes the clinical situation and tries to generate recommendations for the given condition. The recommendations are in accordance with European Society for Medical Oncology standards. It is the doctor who is still the most important in the decision making process but now he is aided with a professional tool analyzing the wealth of in-depth knowledge amassed in the field of medical oncology.

A Semantic Asset Managemet Application - Sample application with Ontorion™ Server

Hello, here's Jerzy from Cognitum. I would like to present you Corporate Asset Management - the sample web application co-working with Ontorion that we've just prepared. Ontorion gives us possibility to easily ask about knowledge described in Controlled Natural Language (CNL), modify knowledge or even get auto-complete, which makes it excellent development tool for semantic technologies. Using Silverlight we created user-friendly web application fluently communicating with Ontorion.

Let's start with Corporate Asset Management.

After logging in, you can see the Home page of the application. At first, it is only the Install button that is visible. Here is the very first application's contact with Ontorion. Ontorion is asked if the needed database is existing and of course gives a respond. So click Install. Now we are creating a database and writing knowledge into it. All the buttons become visible. Do not be afraid of Install. After clicking it one more time the application will ask Ontorion if the database exists and nothing wrong will be done. For this moment everything is looking like this.

Tuesday, 13 May 2014

Simple form design (and more…) using Fluent Editor.

At Cognitum we are developing innovative business applications making use of semantic technologies that can dramatically improve company productivity. Today we would like to present a method using our technologies with which it is possible to build a complex C#-Silverlight business application using a combination of Fluent Editor and Ontorion. We will start by a simple example to better explain the potential of our approach. Then we will present a more realistic example presenting how this approach can be applied to solve common business problems.

Simple form design (and more...) using Fluent Editor.



Let’s imagine we want to make a Customer form containing a customer section with compulsory fields First-Name and Surname.  First of all we code the characteristics of the form using our Controlled Natural Language editor: Fluent Editor, obtaining the code:

Every form is a thing.
Every customer-form is a form.

Every customer-form must concern a customer.

Every customer must have-first-name (some-string-value).
Every customer must have-surname (some-string-value).

our C# application will then render the form as:


As we can see the name of the form is taken from (name)-form, the name of the section is the element concerning the form and the name of the field is taken from have-(name). Moreover as the fields have been declared in the CNL file with the must keyword, submitting the form without specifying these fields will result in an error.
Using this schema it is possible to construct all type of form fields. For example the code

Every customer must have-customer-type a customer-type.
Something is a customer-type if-and-only-if-it is either Already-Client or New-Client.


Will result in a field of type select


It is also possible to have optional checkbox fields using can or additional requirements if a certain choice is made. For example by adding the CNL code

Something is a already-client-customer if-and-only-if-it has-customer-type Already-Client.
Every already-client-customer must have-phone-number (some-integer-value).

Then after choosing the Already-Client option in the form, we will be asked for the phone-number of the customer.
Clearly using such method if we will in the future decide that a field, a field type or a field name have to be changed we can do this immediately by changing the content of the CNL file.
Another interesting consequence of using a CNL file to render the form is that after submitting the form we can easily obtain a CNL-compliant result. For example by filling out the form presented before and submitting it we will obtain a CNL code of the type

Customer-Form-0 is a customer-form.
Customer-1 is a customer.
Customer-1 is a already-client-customer.
Customer-1 has-first-name equal-to 'John'.
Customer-1 has-surname equal-to 'Dow'.
Customer-1 has-customer-type Already-Client.
Customer-1 has-phone-number equal-to '394829388'.
Customer-Form-0 concerns Customer-1.


Going yet one step further we can add to the model some simple rules that we would like the elements of the form to satisfy

Every package is-for a customer-type.
 
If a customer have-customer-type a thing and a package is-for the thing then the package is-package-for the customer.

And a simple instance of the package type:

Already-Client-Package is a package.
Already-Client-Package is-for Already-Client.

Then using Ontorion reasoner inside Fluent Editor, it is possible to ask questions like :  ‘’Who or What is-package-for Customer-1?” and the answer will be: Already-Client-Package. This can also be done automatically by the C# application using the MicroOntorion API. At this point the full potential of this method is unveiled. We will show in the next part how using this kind of approach it is possible to make a complex business application powered by Cognitum’s semantic technologies with a simple user interface intuitive to use.


If you want to learn more about Fluent Editor CNL-EN grammar, visit this link.

*) FluentEditor 2, ontology editor, is a comprehensive tool for editing and manipulating complex ontologies that uses Controlled Natural Language. Fluent editor provides one with a more suitable for human users alternative to XML-based OWL editors. It's main feature is the usage of Controlled English as a knowledge modeling language. Supported via Predictive Editor, it prohibits one from entering any sentence that is grammatically or morphologically incorrect and actively helps the user during sentence writing. The Controlled English is a subset of Standard English with restricted grammar and vocabulary in order to reduce the ambiguity and complexity inherent in full English.

Friday, 5 July 2013

Automatic user interface generation with CNL

There are many ways to automatically build and manage user interfaces. In this article we want to present a web application for automatic form generation that uses semantic knowledge description.
We believe that this solution is not only flexible but also highly understandable for non-technical users.



Fluent Editor  allows you to write rules for semantic forms with Controlled Natural Language (e.g. English CNL). User form in this example is built automatically based on knowledge base in CNL. Requirements for the form are written using modal expressions such as 'must', 'should' or 'can' e.g. 'Every patient must have-first-name ( some-string-value ).'



Ontology used to build user form in this example looks like below. This ontology is used by the web application to build a user form.

Every form is a thing.
Every
patient-form is a form.
Every
patient-form must concern a visit.

Comment: Visit.
Every visit must have-date (some-datetime-value ).
Every
visit must have-health-center health-center.
Something is a health-center if-and-only-if-it is either Outpatients-Clinics-Of-Coi-Warsaw or Outpatients-Clinics-Of-Coi-Wroclaw.
Every visit must have-number ( some-integer-value ).
Every patient-form must concern patient.

 Comment: Patient.
Every patient must have-first-name  ( some-string-value ).
Every
patient must have-last-name  ( some-string-value ).
Every
patient must have-gender gender-type.
Every
patient must have-age (some-integer-value ).
Every
patient must have-birth-date (some-datetime-value).
Something
is a gender-type if-and-only-if-it is either Male or Female.
Every
patient that have-gender Female is a female-patient.
Every
female-patient must have-maiden-name ( some-string-value ).
Every patient-form must concern an examination.

 Comment:Examination.
Every examination can have-observation observation.
Every radiological-assessment is an observation.
Every
invasive-assessment is an observation.
Every ct is radiological-assessment. 
Every xray is radiological-assessment.
Every et is radiological-assessment.
Every biopsy is a invasive-assessment.
Every observation must have-date ( some-datetime-value ).
Every radiological-assessment must have-description nothing-but ( some-string-value).
Every ct must have-contrast-state yes-or-now-answer.
Something
is a yes-or-now-answer if-and-only-if-it is either Yes-Answer or No-Answer.
Every biopsy must have-result pathological-assessment.
Something
is a pathological-assessment if-and-only-if-it is either Gist-Confirmed or Retroperitoneal-Sarcoma or Other-Cancer.
Every examination that has-observation a biopsy that has-result Gist-Confirmed is a examination-with-sarcoma.
Every examination-with-sarcoma must concern a sarcoma.

 Comment: Sarcoma.
Every sarcoma must have-mass-localization a mass-localization-type .
Every
sarcoma must have-diameter ( some-string-value ).
Every sarcoma must have-localization a localization.
Every
sarcoma must have-surgical-state a surgical-state.
Every
sarcoma must have-contradictions-state a contradictions-state.
Every
sarcoma must have-patient-consent a yes-or-now-answer.

Something is a separation-state if-and-only-if-it is either Ruptured or Non-Ruptured.
Something
is a surgical-state if-and-only-if-it is either Operable or Operable-With-Significant-Surgical-Morbidity or Non-Operable.
Something
is a contradictions-state if-and-only-if-it is either No-Contradictions-For-Surgery or Contradictions-For-Surgery.
Something
is a pathological-assessment if-and-only-if-it is either Gist-Confirmed or Retroperitoneal-Sarcoma or Other-Cancer.
Something
is a mass-localization-type if-and-only-if-it is either Localized or Locally-Advanced or Metastatic.
Something
is a localization if-and-only-if-it is either Stomach or Brain.

User form is represented by the concept form Patient-form is an instance of a form class. It requires some other information to be specified, such as patient details, examination details etc. Every dependent concept can also require some other data. Furthermore, we can build a hierarchy of concepts in CNL and it must be included in generated form. In this example observation, invasive assessment and radiological-assessment make a hierarchy of concepts.


Modifying  theform

We can modify the form at any time without making any changes to the source code of application. The ontology loaded by the application is the only place, where changes must be done. If new rules become valid, user form is refreshed and widgets are placed in the right place. For example, we can add two new rules to ontology.

Every patient must have-age (some-integer-value ).
Every patient must have-birth-date (some-datetime-value).

 After refreshing the form new widgets appear in the patient section.


MicroOntorion is used to perform queries and retrieve all valid requirements. When the user fills out the form and presses 'Submit' button, application verifies if all the rules are satisfied. Based on user input, new rules can be activated e.g. requirement 'Every female-patient must have-maiden-name (some-string-value).' is valid only for female patients. Application presents generated CNL knowledge, which can be used to infer new information about patient health and any further medical decisions.



If you want to learn more about Fluent Editor CNL-EN grammar, visit this link.


*) FluentEditor 2, ontology editor, is a comprehensive tool for editing and manipulating complex ontologies that uses Controlled Natural Language. Fluent editor provides one with a more suitable for human users alternative to XML-based OWL editors. It's main feature is the usage of Controlled English as a knowledge modeling language. Supported via Predictive Editor, it prohibits one from entering any sentence that is grammatically or morphologically incorrect and actively helps the user during sentence writing. The Controlled English is a subset of Standard English with restricted grammar and vocabulary in order to reduce the ambiguity and complexity inherent in full English.


Tuesday, 4 June 2013

Does your application understand you? Hello World with microOntorion SDK.

Nature likes symmetry. If you interact with someone, usually you expect the interaction from the other side. The same situation is in the case of application. A huge effort is put on developing programmes, that will not only process the input, but also understand it (or at least try to understand). That is the point of ontology matters and semantic technology.
Now, as a programmer, you can participate in the semantic world of applications. This post will show how to use ontology in your application with help of microOntorion.

microOntorion SDK

microOntorion is an end point to Ontorion environment. It makes all reasoning locally, on your computer. It is provided as a .dll library.

Before you start working on your semantic application, you need to add reference to microOntorion library.

Using directives may be helpful.
using Ontorion.MicroOntorion;
using Ontorion;

Initialization


Lets create in Main function microOntorion object, that allows to import ontology and query against it:

MicroOntorion oep = new MicroOntorion();

Now, we can load ontology. The source ontology should be prepared as CNL sentences. The easiest way to do this is to use Fluent Editor 2. It has auto-complete feature that ensures you that your ontology and queries are valid grammar sentences. Fluent Editor 2 writes ontology as *.encnl files, which can you stream directly to microOntorion.
There is also possibility to construct sentences as string and load in that form to microOntorion library.
We will utilize the first method.
Lets construct simple ontology (in Fluent Editor 2) and save as myOntology.encnl file.


Comment: 'Sample IT ontology'.

Server-1 is a server and hosts Application-1.
Server-2 is a server and hosts Application-2.

Server-1 has-ip-address equal-to '173.194.70.102'.
Server-1 has-ip-address equal-to '173.194.70.103'.
Server-1 has-ip-address equal-to '173.194.70.104'.

Server-2 has-ip-address equal-to '206.190.36.45'.

Application-1 is an application that serves Customer-1 and serves Customer-2.
Application-3 is an application that serves Customer-3.

Application-1 has-name equal-to 'Fluent Editor'.
Application-1 has-name equal-to 'Fluent Editor 2'.
Application-3 has-name equal-to 'Ontorion'.

Customer-1 is a customer and has-severity critical.
Customer-2 is a customer and has-severity medium.
Customer-3 is a customer and has-severity low.

X is-hosted-on Y if-and-only-if Y hosts X.
Every application must be-hosted-on server.

Part-2: 'Incidents'.
Incident-1 has-reported-date equal-to 2012-01-01 and was-reported-by Operator-1.
Incident-1 has-affected Server-1.

Incident-2 has-reported-date equal-to 2012-01-02 and was-reported-by Operator-1.
Incident-2 has-affected Application-2.


Now we can import our ontology to microOntorion:

try
{
    using (FileStream ontologyFileStream = new FileStream("../../../myOntology.encnl", FileMode.Open, FileAccess.Read))
    {
        // load ontology from file
        microOntorion.Load(ontologyFileStream);
    }
}
catch (Ontorion.ConsistencyException e)
{
    // when exception has been thrown check if knowledge has been incosistent
    foreach (var expl in microOntorion.GetExplanations())
    {
        PrintResults(expl);
    }
    return;
}
catch (Exception e)
{
    return;
}

Function Load makes also some preprocessing and your application processes ontology only once.
Function GetExplanations provides some information about sources of errors, that occurred due to ontology preprocessing (e.g. ontology is inconsistent).
Function PrintResults just prints results:

private static void PrintResults(List<string> result)
{
    string res = "";
    foreach (var item in result)
    {
        res += item + " ";
    }
    Console.WriteLine(res);
}

Asking query

At this moment we have create MicroOntorion object and ontology is loaded. It is time to ask some question. Lets prepare it:

// build your query
string query = String.Format("Who-Or-What is-hosted-on server that has-ip-address equal-to '173.194.70.102' ?");

Get results of this query:

// get superconcepts returned by the query
List<string> superconcepts = microOntorion.GetSuperconceptsOf(query);
Console.Write("Superconcepts: ");
PrintResults(superconcepts);

// get superconcepts returned by the query
List<string> subconcepts = microOntorion.GetSubconceptsOf(query);
Console.Write("Subconcepts: ");
PrintResults(subconcepts);

// get all instances returned by the query
List<string> instances = microOntorion.GetInstances(query, int.MaxValue);
Console.Write("Instances: ");
PrintResults(instances);

GetSubconceptsOf, GetSuperconceptsOf and GetInstances returns subconcepts, superconcepts and instances respectively that satisfy query.

Attributes

We can also ask for attributes of specified instances, e.g. Application-1, that were returned from the previous function. Application-1 has name attribute. Lets get this attribute:

// get names of the applications (as attributes)
foreach (var item in instances)
{
    Console.WriteLine("{0} has name(s): {1}", item, string.Join(", ", microOntorion.GetAttributeValues(item, "have-name").ToArray()));
}

OWLAPI has some problems with extracting attributes from complex sentences. It is recommended to attach attributes to instances in separate sentence.

Requirements

There is also possibility to ask for requirements. Lets get all requirements for application concept.

// get all modalities for application concept.
var res = microOntorion.GetRequirements("application");
Console.WriteLine("Requirements for application concept:");
foreach (var item in res)
{
    Console.WriteLine("- {0}", item.Key);
    foreach (var req in item.Value)
    {
        Console.WriteLine("--- {0}", req);
    }
}

MicroOntorion.GetRequirements supports now only simple requirements:
Every <C> <modality><R><D>
where:
<C> is concept, e.g. application,
<modality> is modality such as must, should, ... etc.,
<R> is role, e.g. be-hosted-on,
<D> is any ending of sentence, can be quite complex

The result of querying our ontology:

Superconcepts:
Subconcepts:
Instances: Application-1
Application-1 has name(s): Fluent Editor 2, Fluent Editor
Requirements for application concept:
- MUST
--- is-hosted-on a server
Press any key to continue . . .

Whole source code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ontorion.MicroOntorion;
using System.IO;
using Ontorion;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            MicroOntorion microOntorion = new MicroOntorion();
            try
            {
                using (FileStream ontologyFileStream = new FileStream("../../../myOntology.encnl", FileMode.Open, FileAccess.Read))
                {
                    // load ontology from file
                    microOntorion.Load(ontologyFileStream);

                    // build your query
                    string query = String.Format("Who-Or-What is-hosted-on server that has-ip-address equal-to '173.194.70.102' ?");

                    // get superconcepts returned by the query
                    List<string> superconcepts = microOntorion.GetSuperconceptsOf(query);
                    Console.Write("Superconcepts: ");
                    PrintResults(superconcepts);

                    // get superconcepts returned by the query
                    List<string> subconcepts = microOntorion.GetSubconceptsOf(query);
                    Console.Write("Subconcepts: ");
                    PrintResults(subconcepts);

                    // get all instances returned by the query
                    List<string> instances = microOntorion.GetInstances(query, int.MaxValue);
                    Console.Write("Instances: ");
                    PrintResults(instances);


                    // get names of the applications (as attributes)
                    foreach (var item in instances)
                    {
                        Console.WriteLine("{0} has name(s): {1}", item, string.Join(", ", microOntorion.GetAttributeValues(item, "have-name").ToArray()));
                    }

                    // get all modalities for application concept.
                    var res = microOntorion.GetRequirements("application");
                    Console.WriteLine("Requirements for application concept:");
                    foreach (var item in res)
                    {
                        Console.WriteLine("- {0}", item.Key);
                        foreach (var req in item.Value)
                        {
                            Console.WriteLine("--- {0}", req);
                        }
                    }

                }
            }
            catch (Ontorion.ConsistencyException e)
            {
                // when exception has been thrown check if knowledge has been incosistent
                foreach (var expl in microOntorion.GetExplanations())
                {
                    PrintResults(expl);
                }
                return;
            }
            catch (Exception e)
            {
                return;
            }
        }

        private static void PrintResults(List<string> result)
        {
            string res = "";
            foreach (var item in result)
            {
                res += item + " ";
            }
            Console.WriteLine(res);
        }
    }
}

---

You can download microOntorion SDK here.



*) FluentEditor 2, ontology editor, is a comprehensive tool for editing and manipulating complex ontologies that uses Controlled Natural Language. Fluent editor provides one with a more suitable for human users alternative to XML-based OWL editors. It's main feature is the usage of Controlled English as a knowledge modeling language. Supported via Predictive Editor, it prohibits one from entering any sentence that is grammatically or morphologically incorrect and actively helps the user during sentence writing. The Controlled English is a subset of Standard English with restricted grammar and vocabulary in order to reduce the ambiguity and complexity inherent in full English.