Gellish as a query language

Gellish as a query language

1. Queries, questions and dialogues

Queries for conventional databases are usually expressed in a special query language, such as SQL.
Gellish does not require a special query language, because queries are expressed in Gellish in the same way as ordinary statements are expressed. In natural languages there is no big difference between the structure of a sentence that expresses a question and a sentence that expresses a statement. That same principle is applied in Gellish. If you know how to express ideas in Gellish, then changing the intention of the expression from ‘assertion’ to ‘question’ (or ‘query’) converts the expression into a question. Such a question can be answered by a confirmation or a denial or ignorant (an expression of ignorance). Usually questions are about unknowns. This can be achieved by simply replacing knowns by unknowns where applicable. Finally a few additional rules shall be applied, as is explained below. This is all that is required for writing queries for Gellish enabled databases. The response to a Gellish Query consists of Gellish expressions as well, although of course such responses can be displayed in any form in user interfaces. This implies that Software Agents and database systems might have not only import and export capabilities for ordinary Gellish expressions, but also for Gellish queries.

There are basically two kinds of questions:

  • Questions that ask for something that is unknown
  • Requests that ask for a response (a confirmation, a promise, etc.), although no unknowns are used

Both kinds of queries and the responses to them are discussed below.

2. Questions about unknown objects

A question about things that are unknown has as basic structure:

  • the base question: which object(s) have a relation of a particular type with a known other object?
  • a specification of additional constraints for the unknown objects or for their characteristics.

2.1 Base questions

Examples of base questions in natural English are: ‘which objects are classified as a pump?’ or ‘who is general manager of Ford?’
In Gellish such questions are expressed as if they were positive statements about individual objects, while specifying as intention ‘query’ (instead of ‘assertion’) and specifying as names of the unknowns terms that starts with a question mark, such as ‘?-person’, or that starts with one of the reserved terms for unknowns such as ‘who’ or ‘what’ or ‘which’, optionally followed by any string. The above example queries are expressed in Gellish English (ignoring optional contextual facts) as is illustrated in Table 1.

Intention Name of left hand object Name of relation type Name of right hand object
query what is classified as a pump
query who is general manager of Ford

Table 1, Simple queries in Gellish English

The example question on the first line asks for the object(s) that have a relation of type “is classified as a” with the concept “pump”. Because of the taxonomic nature of Gellish this query should also trigger software to search for subtypes of ‘pump’. Thus, for example, it should also find things that are classified as a ‘centrifugal pump’ (which is defined as a subtype of ‘pump’).
The name of an unknown may consist of multiple terms. The first term of a multi term name of an unknown might be followed by the name of a kind, which should be interpreted by software as a requirement for the kind that classifies the searched individual thing(s). For example the query: ‘which pump is part of Unit-100’ specifies two requirements in one expression, because it asks for individual things that are classified as a pump and that are parts of Unit-100.

The use of the intention ‘query’ or ‘question’ indicates that an expression should be interpreted by a computer as a question. If a query is expressed in a Gellish expression format file, then the file header may include ‘category=query’, which specifies that the file contains one or more queries. Then the specification of the intention in a separate table column may be omitted, because the software should append that automatically.
Note that Gellish includes the following rule: when an unknown appears to be an aspect, then the software should not only retrieve the possible aspect(s) name(s), but also their values and if applicable it should also retrieve the units of measures for the values.
Gellish queries may specify unique identifiers (UIDs) to identify the known and also the unknown objects. The use of UIDs for known objects eliminate possible misinterpretations because of the use of homonyms (different objects with the same name). Objects that are unknowns should be identified in Gellish by UIDs in the reserved range 1-99, possibly preceded by a prefix and a colon, such as ‘unkn:’. Thus, the use of a UID in that range means that the object is unknown and is requested.

2.2 Querying results and inheritance

Query expressions are in fact a template for the resulting expressions, where knowns are filled-in on places of unknowns. Thus, a search engine should find all the expressions that fit in the template and the result of a query will be a list of expressions that satisfy the query template.
If the query asks for objects that are classified by a concept that is defined in the dictionary, then the inheritance rules for the subtype-supertype hierarchy in the taxonomy imply that not only objects that are directly classified by that concept satisfy the question, but also objects that are classified by one of the subtypes of that concept. For example, the question:
– what is classified as a pressure gauge?
– what is classified as a pressure gauge or as one of its subtypes?
This means that the result of such a query is a list that includes not only things that are directly classified as pressure gauge, but also for example as a manometer, because according to the Gellish Taxonomic Dictionary a manometer is a kind of a pressure gauge. So the result of the above query could be for example:

  • Pr-101 is classified as a pressure gauge
  • Pr-102 is classified as a manometer
  • Pr-103 is classified as a manometer

Software that enables Gellish querying should therefore be able to automatically generate the answer as a list of things that are either classified by a concept or are classified as one of its subtypes. Furthermore, the software should indicate when objects are classified more than once.

2.3 Specification of additional constraints

Additional constraints are expressed in a similar way as expressing the aspects of an individual object, whereas the intention has the value ‘query specification’. The names and UIDs of the unknowns (What and Capacity of pump) should be used again where applicable to indicate that it is the same object about which an aspect is specified. For example:

Intention Name of left hand object Name of relation type Name of right hand object UoM
query ?What is classified as a pump
query specification ?What has as aspect ?Capacity of pump
query specification ?Capacity of pump is classified as a capacity (volume flow rate)
query specification ?Capacity of pump has on scale a value greater than 30 dm3/s

Table 2, Example of a query with constraints

In this example the names that start with a capital character are individual unknowns. The name
‘?Capacity of pump’ indicates the capacity of any potentially found pump and that capacity is classified as a capacity and shall have a value greater than 30 dm3/s. This example also illustrates that the query expresses a pattern that should be satisfied by the search engine, because we can replace the term
‘?What’ by the name of a pump, such as P-101, and replace its capacity by ‘cap of P-101’. Then the above expressions would have been a specification of information about pump P-101.

2.3.1 Denials

A specification may also include a denial. This means that things are searched that do not have a particular aspect. Such a denial can be expressed in the ‘intention’ of the expression (see the paragraph on ‘Requests and Responses’ below) by extending the intention with the term ‘denial’, thus becoming ‘query denial’ and ‘query specification denial’. It indicates whether the statement should be the case or not be the case for the found things.

2.3.2 Multiple unknowns

If more than one unknown object is included in a query, then the query should make a distinction between the different unknowns. This should be done by using different names and unique identifiers (UID’s).

  • Note: Application software may hide the UID’s for users by adopting the convention to allow a dash and a sequence number to distinguish different objects and to translate that to a UID and a standard term.

For example, a query about the capacities of the found pumps would be identical to the above query, except that the name of the aspect ‘capacity of pump’ should be replaced by the term ‘which aspect’. However, in addition to that the unknown aspect shall also have a UID that differs from the UID of the unknown object. So the query would become:

Intention UID of left hand object Name of left hand object UID of fact UID of kind of relation Name of kind of relation UID of right hand object Name of right hand object
query 1 what 101 1225 is classified as a 130206 pump
query specification 1 what 102 1727 has aspect 2 which aspect
query specification 2 which aspect 103 1225 is classified as a 550318 capacity (volume flow rate)

Table 3, Example of a query with multiple unknowns

Such a query could result for example in the following answer:

Intention Name of left hand object Name of kind of relation Name of right hand object Unit of measure
assertion P-1 is classified as a reciprocating pump
assertion P-1 has aspect capacity of P-1
assertion capacity of P-1 is classified as a capacity (volume flow rate)
assertion capacity of P-1 has on scale a value equal to 45 dm3/s

2.3.3 Constraints for different kinds of objects

Some queries include constraints for different kinds of objects. For example, we may ask for pumps as well as compressors. In such a case the different unknown objects should be distinguished to enable to specify that one constraint is applicable to objects of one kind and the other constraint is applicable to objects of another kind. For example, if we ask for pumps as well as for compressors, then the result should be things that are classified either as a pump or as a compressor, and the query is not about objects that are classified both as a pump and as a compressor (such ideas should not be present in a database). The distinction between the two objects can be made by giving them a different UID and different names that are unknown. An example query about pumps and compressors should therefore be expressed as follows (leaving away the other UIDs):

Intention UID of left hand object Name of left hand object Name of relation type Name of right hand object


what-1 is classified as a pump


what-2 is classified as a compressor

Table 4, Example of a query about different kinds of objects

Then for each unknown additional constraints can be specified. Together they form a template or pattern that can be sarched for. Note that the search should include a search for subtypes of the specified kinds.

3. Requests and responses

Questions sometimes have a structure that is difficult to distinguish from statements. In spoken language they are usually distinguished by the tone, the melody of the sentence. In written language, usually a question mark is then added. Gellish supports such kinds of expressions by enabling the explicit expression of the ‘communication intent’ of the author of the expression. This enables to express various intentions, such as:

  • a question
  • a request
  • an answer
  • a confirmation
  • a denial
  • a promise
  • a declination
  • a statement
  • a probability
  • an acceptance
  • an ignorance
  • Note: The ‘allowed values’ for the intention can be found in the Gellish dictionary as qualitative kinds that are a qualitative subtype of ‘intention’ or one of its subtypes.

Such an ‘intention’ indicates whether or to what extent something is the case according to the author of the expression. In other words, it indicates the extent to which the relation expresses what is the case or it indicates the status of the process to become the case. This is called the “intention” of the proposition. So, an intention is a quality of an expression that thus can express not only that a proposition is a question, but it can also express that it is a confirmation, a probability, etc. For example, the flowing table contains a proposition with the intent to be a questions and the same proposition that is qualified as a confirmation:

Intention Name of left hand object Name of relation type Name of right hand object
question P-1 is classified as a pump
confirmation P-1 is classified as a pump

Table 5, Examples of expressions about intentions of a proposition, without unknown objects
Note that the second expression is a response to the first expression. The confirmation is correct also when P-1 is actually classified as a subtype of pump, such as being classified as a centrifugal pump.
The example illustrates that basically the same expression can be used for different purposes in a communication. We can also say that this implies that the above two lines express two different ideas or opinions about the same fact.

4. Author, date and time of ideas

The ‘author’ and the moment of creation of an idea such as a question or an answer can be added as contextual facts to Gellish expressions. A Gellish expression table has dedicated columns for that: the date-time of creation and the originator (of the latest change) of the expression. There are many ways in which a date-time can be expressed. Gellish uses the standard ISO 8601 convention to make the date-time unambiguously computer interpretable. A user interface may convert and present it in any notation.
For example:

Intention Name of left hand object Name of kind of relation Name of right hand object Date of creation of idea (start of validity) Date of latest change Author (of latest change) Source or reference
question P-1 is classified as a pump 2007-08-20 2007-08-20 John Doe
confirmation P-1 is classified as a pump 2007-08-20 2007-08-20 Andrew my database

Table 6, Example of a question and a confirmation by an explicit author at a particular date, without unknown objects

Continue with Gellish Semantic Web