-
Notifications
You must be signed in to change notification settings - Fork 5
1. The Gellish Communicator application
This Gellish Wiki is intended for software developers. It is intended to provide guidance for developing or extending software with import and export capabilities for information that is expressed in any of the formal languages of the Gellish family of formalized natural languages. At the same time this wiki describes the Gellish Communicator software, being a reference application for the use of Gellish and being the software that is developed in this project. A User Manual for the Gellish Communicator application aimed at non-software developers is (being) developed in a separate the User Manual wiki.
The Gellish Communicator software has various intended purposes, roles and possible applications.
- A reference implementation of the Gellish family of formalized languages that demonstrates capabilities of applying Gellish formalized languages for universal data exchange and data integration.
- An intelligent multi-lingual taxonomic dictionary and model server.
- A demonstrator of the application of logic reasoning in Gellish.
- A source of reusable software, such as universal database definition, Gellish import and export tools, mappers for conversion to and from other data structures and generic user interfaces such as standard 'product model views' and 'product data sheets'.
All source code for the project uses as its basis the definition of the Gellish family of formalized languages, including Formal English or Formal Dutch (Formeel Nederlands) or any other variant of the family of Gellish Formal Languages. How to express information in a Gellish formal language is described briefly in the Gellish website wiki and extensively in the books that are mentioned on that website. Software that is intended to use Gellish is expected to be able to produce Gellish expressions as output and to read and interpret Gellish expressions as input. The source code of the Communicator is developed in Python-3. It is self-evident that other software that is intended to be Gellish enabled may be written in any other programming language.
The semantics of the formalized languages is defined in the multi-lingual Taxonomic Dictionary-Ontology, that includes English, Dutch (the 'Taxonomisch Woordenboek-Ontologie' for 'Formeel Nederlands') and partial dictionaries of various other languages. A core subset of this dictionary is available in the files in the directory called GellishDictionary of this project. Concepts in Gellish are identified by language independent unique identifiers (UIDs) and can be denoted by multiple terms (names, abbreviations, synonyms, codes and translation) as used in various languages and language communities.
The syntax for expressions in the family of formalized languages (the Gellish Expression Format) is defined in the document Gellish Syntax. Various serializations are possible, such as CSV and JSON. Conversion from and to other syntaxes and terminology is illustrated in the mapping section. The full Gellish Expression Format table specification is available in the Communicator source code Expr_Table_Def.py.
The Taxonomic Dictionary-Ontology and the Gellish Syntax specification are thus the basis of the software of this project and should be the basis of any Gellish enabled software. This implies that input and output of such software shall be expressed in expressions that use concepts and terminology that are selected from the dictionary of one of the languages of the Gellish family of the formal languages or shall be converted to or from such expressions (by 'mapper' software). All concepts are identified by the same unique identifiers irrespective of the formal language and are arranged in a common taxonomy and ontology. This makes that information is expressed as networks of relations in a language independent way, whereas the expressions may be denoted in various languages, using various terms and synonyms from those languages. This enables that information that is expressed in a formal language is essentially modeled in a language independent form and machine translatable into any defined language of the family. Implementers of Gellish are invited to translate names of concepts in other formal languages of the family. Proposals for enhancement of the language definitions are welcome. \ The content of the taxonomic dictionary is described in the next section of this wiki.
Applications should start with importing the Taxonomic Dictionary-Ontology (at least its base section as available in the GellishDictionary directory) to enable interpreting or creating messages (collections of expressions) and queries in the formal language. This can be done in a similar way as is implemented in the Communicator application as is described below.
The Gellish Communicator program starts executing the Communicator.py module. That module first executes the Start_net method that creates a semantic network in either of two ways: 1. it imports either a Pickle file with a semantic network that includes the language definition, or 2. it creates an instance of the Semantic_Network class and calls its build_network method. That method reads a collection of data files that are specified in the Bootstrapping module of the Github repository. It verifies the content of those files and builds the semantic network from them. Those files define the Gellish Formal English language or one or more other formal languages. The files are themselves written in the formal language. The collection typically consist of the following files:
- The base ontology (core), which defines the possible kinds of relations and the allowed kinds of related objects and their roles,
- Units of measure and currencies, which defines units such as mm, inch, $, EUR, etc.,
- Definitions of concepts and their taxonomy.
For example a file with dictionary data about roads.
The files that are provided in the GellishDictionary directory contain a subset of the Taxonomic Dictionary-Ontology of Formal English. The full Taxonomic Dictionary-Ontology can be licensed via the Gellish Website. - Files with expressions of knowledge and/or requirements and/or information about individual products and processes.
From the first file, the methods of the Semantic_Network class builds an object oriented database as a semantic network of concepts, accompanied by a multi-lingual dictionary of terms in contexts.
Given that base language definition the network is available for import of other files with extensions of the taxonomic dictionary and thus the vocabulary of the language, the addition of knowledge, etc. and for other usage.
After building the semantic network that defines one of the Gellish languages (such as Formal English) a user can extent the semantic network by supplying one or more files with Gellish expressions. For example, a user can supply its own knowledge models, requirements models and/or product models, such as for example:
- the knowledge model about roads.
- the example model about a particular road network that also includes a house.
- the example model of electric cables. This is done via the user interface button option 'import file'. That button initiates a file selector which is followed by reading the selected files, followed by verification of the correctness of the expressions. Then the content is integrated in the semantic network that already includes the base language definition (the content of the taxonomic dictionary-ontology). This process is described in more detail in the section of this wiki about reading and writing Gellish expressions.
Various supplied data files are available for development and testing purposes. Most data files are expressed in Gellish Formal English and thus they illustrate the application of Gellish, including also (a subset of) the Gellish Expression Format that is documented in the above mentioned document 'Gellish Syntax and Contextual Facts'. The data files provide a basis for a variety of applications. For more extensive applications, the full taxonomic dictionary-ontology can be licensed via the webshop on the Gellish website.
Some example input files in the GellishData directory are expressed in JSON, using a non-Gellish convention. Those files are accompanied by a file with a 'mapping table' that enables the Communicator to convert the data into Gellish compliant expressions. This is described in more detail in the data conversion section of this wiki.
The software can be used for searching and navigating through a semantic network and displaying product and process information in various views. In the Communicator this is initiated through the 'Search' button, which opens a window where a search string (or UID) can be specified. Such a string is used to search for matching names of concepts in the dictionary of the semantic network. Such a search may result in various hits (options) that are displayed together with their language and language community. Selection of one of the options causes display of its textual definition and its known possible aspects (properties) with possible values as far as available. One or more of those aspect values can be selected thus specifying a more stringent search for concepts that satisfy the search criteria. The creation of Gellish queries is described in a separate section about queries of this wiki. After confirmation of the selected option (using the 'Confirm' button, other information about the selected concept is gathered from the semantic network and displayed in various generic user interface views.
As Gellish is intended to enable expressing information about any kind of product or process, its user interface is also intended to be suitable for displaying information of any kind. For that reason a number of generalized display views are developed. Those views present the information from the semantic network in various ways, depending on particular view points or perspectives. Those views are generated from the stored data. In an increasing number of cases the views can be used for import of data to modify or extent the semantic network.
The following display views are available:
- A network view. This presents a selected object and all its directly related things and aspects with their characteristics.
- A taxonomy view for kinds. This presents the subtypes hierarchy and the supertypes of a selected kind.
- A product view for individual things. This presents a selected object and its composition hierarchy, together with the characteristics of the object and its parts as well as the activities and processes in which the selected object is involved.
- etc.
A 'Save on file' button will initiate the creation of a Gellish file with the collected information that is currently retrieved about the selected concept.
Information about the definition and application of the Gellish family of formalized languages is available via the Gellish website.
The book Semantic Information Modeling Methodology describes the application of Gellish formalized languages.
The book Formalized languages for Semantic Information Modeling describes the base ontology that defines Gellish formalized languages.