XAYA is A Miniature Language (for representing information as networks)
What is a network? The Oxford dictionary of computing defines networks several ways, in terms of communication, in terms of electronic circuitry, and mathematically. The mathematical definition is:
“(net) In mathematics, a connected directed graph that contains no cycles. Interconnections involving objects such as telephone, logic gates, or computers could be represented using a connected, but not necessarily directed graph.”
XAYA is a language for representing knowledge as networks of related information, for querying that information, for developing models and analyses systems, for finding paths through a maze of related information, and for making deductions. XAYA has features begged, borrowed, stolen from relational databases, logic programming languages such as prolog, and from routing algorithms.
People are good at solving visual puzzles (such as the path through a maze, or driving cross country following a map ) and uses visual abstractions as a guide or map to reality. XAYA uses that visual intuition in data analysis via the central metaphor: Navigation.
Navigation represents queries for networks representing a relational database; navigation represents the process of making a logical deduction in a network representing facts defining a problem; navigation represents the route from a high-level knowledge model (e.g. an “Ontology” ) through a data-model (e.g. a database schema) to detailed low-level data table (of individual observations). It’s networks all the way down!
XAYA applies to that subset of problems that can be represented as a network. Not everything can be represented that way – but a large number of things can ….
…. Database-like manipulations, logical deductions, are all translated into finding routes through a network of related information. XAYA’s design constraints are to balance smallness with simplicity, with flexibility.
XAYA ‘s core language is meant to be small. Additional functionality should be built by combining parts of the core language in new combinations (combinatorial explosion is your friend). To ensure portability across the various flavours of Python, XAYA’s core implementation is limited to using only those modules that come with the Python Standard Library. As XAYA develops, I hope to keep it simple enough that a domain expert (in business, in science, or in art/design) who is say familiar with spreadsheets or canned statistics software, can use it to build and explore interesting models in their field without a great investment in time/effort to get started, but that it provides a flexible toolkit for a developer to build data driven modeling applications. Hopefully it provides a bridging language between the world of a domain and the world of the software developer. The domain expert focuses on representing their knowledge diagrammatically as a graph (imagine sketching a design as calligraphy). The software developer works on converting these pictures into application code.
Simplicity is achieved by having a uniform data structure – the network representation (= atomic “nouns” in the mini-language). Networks are the input and output of most XAYA functions. Flexibility is via developing complex models out of networks, being able to represent a wide range of data structures (text files, databases, grid based imagery) as a network, and by composing functions into series of data transformations. Operations on networks (= “verbs” in the mini-language), create new networks.
Version 001 of XAYA is necessarily sparse – it is meant to convey the basic ideas, and solicit feedback for the next iteration. We begin with some pictures of different things that can be represented as networks: a family tree, a book collection database, and food relationships in an ecosystem.
--
MishtuBanerjee - 21 Jan 2005
to top