Loading color scheme

FEKL Introduction

FactEngine Knowledge Language (FEKL) is a controlled natural language to define Fact-Based Models, enabling the Semantic View.

Enterprise conceptual modelling is made easy with FEKL where business rules are defined in natural language.

In brief:

1. FEKL produces or documents the semantic information of knowledge graphs, and/or graph/relational database;
           ER-Diagrams, Property Graph Schema and Object Role Models are generated automatically from FEKL statements.

2. Only Value Types, Entity Types, Fact Types and Internal Uniqueness Constraints are needed to form a basis database schema, and Internal/External Uniqueness Constraints create multi-column table/node uniqueness constraints/indexes;

3. FEKL can produce data for tables/nodes in a database. I.e. Can define Facts for Fact Types.

The following are valid FEKL statements:

There are many reasons why you may prefer to create a conceptual model using natural language rather than drawing diagrams. These include:

1. Capturing the business rules of your enterprise conceptual model;
2. Automatically generating model definition based on NLP (Natural Langue Processing) of a corpus of documents;
3. It can be quicker to create diagrams using natural language, rather than using a GUI (Graphical User Interface), depending on your proficiency with FEKL; and
4. Business Analysts can capture the Universe-of-Discourse, or the business domain knowledge, in natural language. I.e. Analysts use FEKL as a tool to capture business requirements.

FEKL - Precedent Order of Model Element creation

The precedent order of model element creation, for the model, is:

  1. Value Types (unless created at the time of defining an Entity Type’s Reference Mode, or as part of the definition of a Binary Fact Type);
  2. Entity Types;
  3. Fact Types; then
  4. Role Constraints (unless an Internal Uniqueness Constraint created at the time of Fact Type creation).
Object Type - Naming Convention - FEKL

Object Type names in Boston are in Pascal Case (with spaces), and where each word/acronym in the Object Type’s name has a starting capital letter.

E.g. Power Source

NB The regular expression for Object Type names in Boston is:

(([A-Z0-9]+[_a-z\-0-9]+[ |_]*)+[_|\s]?)+

Value Type Creation - FEKL

The following are examples of Value Type creation statements written in FEKL:


I.e. Where ‘Company Name’ is the Value Type being created, and StringFixedLength(100) defines the Data Type applicable to the Value Type.

Value Types can also be created when creating a Fact Type for pre-existing model elements, for example:


 I.e. Where ‘Company Name’ is a Value Type and ‘Company’ is a pre-existing Object Type (Entity Type or Objectified Fact Type). If using this type of statement in the Virtual Analyst, Briana the virtual analyst will ask you if you want to create a new Entity Type (i.e. e.g. for ‘Company’). See the ‘Fact Type creation’ section for more details.

Value Types can also be created automatically when defining the Reference Mode for a Value Type. For example, the Value Type, ‘Company_Id’ is automatically created in the model when the Reference Mode for the ‘Company’ Entity Type is defined in the following statement:

Railroad Diagrams