At CeBIT, I met representatives of the Polish company Cognitum, which develops the Ontorion semantic framework. The most important part of this framework is
Fluent Editor ontology
editor , which seemed to me wonderful and worthy of review. The main advantage of Fluent Editor is that it allows you to create OWL ontologies for people who do not know the syntax of OWL (although, of course, you need to have an idea about its concepts and modeling information structures). Ontologies are created in a natural language, Controlled English - that is, in ordinary English, to which certain rules and restrictions are applied. I will give an overview of the main features of the syntax of this language, not forgetting to look at the form in which its basic expressions will be saved in the OWL.
For example, let's begin to make an ontology containing information about the business of a certain company. This company, like any commercial organization, has suppliers and customers. Those and others are organizations, and the same organization can be both a supplier and a buyer. We write the corresponding expressions in Controlled English:
Every customer
is a organization.
Every supplier
is a organization.
')
Keywords Fluent Editor highlights in blue, and I highlight it in fat. During the input process, the editor gives hints and warns about grammatically incorrect expressions.
Please note that we do not need to explicitly declare the fact that the organization, the supplier and the buyer are classes: the editor himself will guess this from the context. Classes are ready, now you can declare individual entities:
Alpha
is a customer.
Alpha
is a supplier.
Beta
is a customer.
The editor will understand that Alpha and Beta are individual entities belonging to the classes “suppliers” and “buyers”.
If you now save the ontology to the OWL file, you get the following:
<SubClassOf> <Class IRI="Customer" /> <Class IRI="Organization" /> </SubClassOf> <SubClassOf> <Class IRI="Supplier" /> <Class IRI="Organization" /> </SubClassOf> <ClassAssertion> <Class IRI="Customer" /> <NamedIndividual IRI="Alpha" /> </ClassAssertion> <ClassAssertion> <Class IRI="Supplier" /> <NamedIndividual IRI="Alpha" /> </ClassAssertion> <ClassAssertion> <Class IRI="Customer" /> <NamedIndividual IRI="Beta" /> </ClassAssertion>
Suppliers supply our company with materials and spare parts, and customers purchase our products. Define the appropriate classes:
Every replaceable-part
is a product.
Every supplier supplies
at least one product.
Every customer buys
at least one product.
As we see, we managed to define the roles of “supplier” and “buyer” depending on what they do with goods and spare parts. In OWL, the second line from the above code will be reflected as follows:
<SubClassOf> <Class IRI="Supplier" /> <ObjectMinCardinality cardinality="1"> <ObjectProperty IRI="supplies" /> <Class IRI="Product" /> </ObjectMinCardinality> </SubClassOf>
Now we define a specific product and spare part, and tell you how our material relations with contractors are built:
Oil
is a product.
Beta buys oil.
Pump
is a replaceable-part.
Alpha supplies pump.
So that we do not get confused in what has been written, Fluent Editor shows us a taxonomy tree:

Note that the editor himself translates verbs into different forms. In the text, we wrote supplies, and in the taxonomy tree the corresponding term is called supply. With irregular verbs, he is also friends.
The Controlled English syntax allows us to define various constraints and relationships between classes:
Every-single-thing that is a replaceable-part
is supplied
by at-least one supplier.
Something is a supplier of
if-and-only-if-it supplies
Something is a customer
if-and-only-if-it buys products.
It's time to add attributes. Organizations have names, TINs, and similar properties. We define two attributes and specify their values ​​for the Alpha organization. Values, of course, will be literals.
Every organization has-name
nothing-but (some-string-value) .
Every organization has-tax-number
nothing-but (some-integer-value) .
Alpha has-name
equal-to 'Alpha, LLC'.
Alpha has-tax-number
equal-to 6671123456.
In OWL, these phrases are transformed like this:
<SubClassOf> <Class IRI="Organization" /> <DataAllValuesFrom> <DataProperty IRI="hasName" /> <Datatype abbreviatedIRI="xsd:string" /> </DataAllValuesFrom> </SubClassOf> <ClassAssertion> <DataSomeValuesFrom> <DataProperty IRI="hasName" /> <DataOneOf> <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">Alpha, LLC</Literal> </DataOneOf> </DataSomeValuesFrom> <NamedIndividual IRI="Alpha" /> </ClassAssertion>
Of course, the possibilities of Controlled English syntax are not limited to this, but our task was only a short overview of the merits of the editor; a complete syntax description can be found in the documentation for the editor.
The editor includes Hermit, to whom we can “ask questions” on the subject of information contained in our ontology. For example, in this example we can find out what the Alpha object is:
is alpha
?Hermit will respond: Alpha is a customer, supplier, organization.
No less interesting are the features of the other components of the Ontorion framework, but they are beyond the scope of our review.
The main thing is that we got a wonderful and open source ontology tool, much more suitable for people who are not IT professionals than TopBraid Composer or Protege. But in practice, information about the terms that should be included in an ontology is possessed by just such people - professionals in the field of management, production, but not information technologies.