Most of people are happy with current set of programming language and tools till they need to write very big information system. Currently available tools and languages require programmer to be the link between problem and solution, as problem solver keeping in mind complete information about the problems. Humans have natural limits and this approach leads to exponential growth in complexity of information system. The Animo project attempts to provide a solution by combining research results from linguistic, neuroscience and others areas, common term for which is algebra.
RDF, SPARQL, OWL, XQuery, XSL and XML Database are well known technologies, but there is no single glue to put all this together. The main advantage of these formats is flexibility. However, that leads to many different representations of same structures (e.g DocBook, TEI and etc). The problem of complexity is similar to C libraries, in that we must operate at the level of the data structures. After C, came Java with its standard libraries, a language which programmers can use and which can be easily understood by other programmer. The Animo language aim to create universal language for people (not only programmers) to speak.
Each time we start new project, we have to choose which technologies we should use, and how to put them all together. We are also concerned with separating data from code, and constructing tests to assert the behaviour.
Animo solves these issues and much more. With Animo, at design time your are not forced, for example, to have to choose top-down or bottom-up processing, it can be controlled by instructions. Default evaluation strategy similar to LISP. The Animo language cover PROLOG's use cases.
The language incorporates many proven features whilst also incorporating some new ideas, with the aim of making programming more natural for humans. The eventual goal is to create a bridge between native languages and Animo structures, computer programming style should evolve to become a dialog with the computer and as such dialog constructs must be a part of the language itself. Currently the language constructions are based on English-Prime concepts, so you can write your code as through writting a book or specification.
The Animo language is design for declarative information relationships representation, manipulations and processing agreements. It starts from a names-space, that points in the space (DEF-nodes, because defined by DEF operator), where each point have an unique name. Next is topological spaces that connect this points.
The main concept incorporates the notion of names-spaces animated by the context, reference and question operators.
The context is key concept. It have simple definition: the outgoing relationships and incoming one with first order cyclic structures in references topological space.
There are two groups of operators: conditional or unconditional reference and question operators.
References operators, point to THE-node(s).
ANY, ALL, PREFER are conditional reference operators.
Question operators used to select points base on intersections principal, GET operate is one.
Each change in a topological space causes difference sequence of reactions in the structure. For example having a structure A-B-C will produce on answer to a question, but A-C-B structure will produce different answer to the same question until stored C for first sequence and B for second.
def dress colour red.
all red => dress.
all colour => red.
Hidden behavior are graph optimization by identical leaf collapsing by graph builder, persistent graph (one of option do not run garbage collector at all), caching result of evaluation and serialization because a deterministic model of evaluation is used and clear or update cache by destruction or change waves (created by graph builder).
There are several types of manipulators, one of them is dependency analyzer for destruction or change waves creation (aka graph restructurization). Manipulator models have plugable API, so it is simple to write another one and activate it.
The serializer activate graph traverser, which can traverse the Animo graph till it meet evaluable operator and send it to evaluator to calculate, result direct traverse to next node in the Animo graph.
The Evaluator is one of the manipulators, its processing model is interesting, because the Animo language is created by the realisation of that model. It is difficult to picture that model, because it is in a multi-dimensional space.
The parsers aim to transform the input stream into Animo sub-graph representation. At present there are several types: Animo (LISP-like), XML, binary or file system mimic. To simplify plain text transformations different parsers can be used, but the default one is animo.
The Animo parser allows to drop out AN operator and simplify syntax by , (comma). Pure Lisp parser difficult to use because of brackets, that’s why Animo syntax is developing.
def companyA (an mail-address (an office1-address) (an office2-address))
def companyA mail-address office1-address, office2-address.
Of course, it’s not possible to run away from brackets, so Animo syntax does use it to separate the same level children.
The XML parser transform XML structure into Animo sub-graph representation without information lost. Binary parser allow to store files to global name space and reference to it.
There are no limits to number or type of parsers.
What makes Animo concept different? Main advantages - no needs in programmer as problem solver, this role handled by different manipulators. Information system programmer should give expressions set (aka knowledge) and dialogue as a way to resolve structure conflicts or debugging. The Animi (natural language bridge project) extends this idea to allow information system developing in dialog on natural language.
Another feature helps to reduce calculations by magnitude of read vs write request. That is change waves. The Animotron can trace dependence from incoming data to result one and update results by recalculation only new data. In set with Animo changers protocol it possible to update only small region on page at browser after getting new/modifications in data that this page depend on and without any attention from information system programmer. In practice, this means breaking away from many details of programming and focus on key properties of the final product.
One of the application possibilities of a super-high level programming language is its use in natural language processing (NLP), Machine Learning (ML) and Machine Translation (MT). Both NLP and MT applications are varied reflecting different interest and exploitation ambitions. One of the project goals is to demonstrate the advantages of Animo in NLP (in particular, either as language or text generation, or as a QA system) and in Machine Learning and Machine Translation through the application of a foundation ontology language as a more appropriate approach to improve and/or replace current practices in those fields.
It looks more sensible not to join the data-mining bandwagon (including sentiment analysis, etc.) or the mixed statistical and rule based processing of large corpora. The reason for such a different approach is that the methods mentioned result in poor quality, a low rate of relevant hits in various search applications called content analysis or content processing, creating a huge waste in processing time and loss of energy. The failure to integrate domain ontologies so that knowledge (representation) management applications could be standardised, etc. to offer transparency and cross-fertilisation is also a motivation behind taking such a turn.
It is envisioned that
are likely to continue with designing and manufacturing prospective gadgets that make personal learning and knowledge checks possible.
The technology may be complete with the option of recording of the progress that one makes in acquiring new knowledge in his life-time in sync with the availability of repertories of reliable collective knowledge representations through hand-held devices.
All that boils down to a few number of basic issues that may have a solution by using Animo for collaborative technologies in the WEB to produce the next level of integration of man and machine.
It should be realised that the translation of natural language texts in written form calls for an evaluation model consisting of at least two parties who agree on the equivalence or identical value (balance, symmetry) of phrases of different lengths and structures in natural language one (L1) and language two (L2).
This procedure lacks from present day MT and is a reason why it has so many mistakes in them. The solution is to reverse the approach - have pre-processing instead of post-processing.
The knowledge of the world and of the self of the animal/human being is both inherited and instinctive as well as acquired and conditioned during the life-time of anything animated or spirited, including robots and machines that simulate human behavior. The representation of the world in computers by concept graphs and visual thesauri for instance do not show the dynamic changes between semantics and syntax, or the development of lexicography. All that may be mended by using animo tools for representation of knowledge and language. Context and pragmatics should no longer be separated from anything in focus that is either input to or output from the participants of an interaction, including communication in a natural language.
The problems to be solved cover the issues of
The Animo project do not putting goal to invent something new, but it target is merge and integrate existing research result and technologies to create single workspace for information systems developing. Work that is done is the preparation for bigger steps: programming on natural language.