Home
About Avanti
Nova
MicroLCS
News
Contact
2012.01.12
A New Year
Focus will continue in providing something useful for the library community as Nova evolves into a universal tool for data mapping in many contexts. Nova databases consist of sets of small pieces of information. These can either be metadata referencing external objects, the data itself, or a mix of both. Nova imposes no particular model of the structure of the data: No rows and colums in tables, or tree like heirarchies. It is a blank canvas for organising information and ideas.
Simplicity is our passion.
2011.08.19
Avanti Nova 0.1 Released
2011.05.02
Avanti Nova
A little background of how semantic maps are stored in Nova using an example: Consider a set of 10 objects. They can be anything. Then, think of a square 10 x 10 two-dimensional array where columns are the objects and rows are the relationships each object has with all the objects in the set. Each cell in the array has a 1 if a relationship exists. A 0 otherwise. At this level we do not care what the objects are, simply the relationships between them. This array is a database of pure relationships. By flipping the cells in the array from 0 to 1 or 1 to 0 we can manipulate the relationships between objects in the set. This can be queried. If, say, you want to see all the relationships object 3 has with other objects, select row 3 from the array. To make this thing useful, we map objects to external strings. That provides objects their meaning. These strings can be anything. They could be the text of the objects themselves, or they can reference things in the outside world through URLs or other mechanisms. Rules and protocols can be defined arbitrarily for these strings to make them useful in ways that aren't anticipated by Nova. Then, introduce indexes to make all this searchable. That is the power of Nova. It's a blank canvas -- nothing is hard coded. It's all up to you. So what we have is a set of objects whose interrelations are completely independent of what they are or what they describe. A pure semantic database independent of content.
Nova today consists of a command line interpreter that implements the language and a client/server architecture to make that language available on a network, similar to the way an SQL database server works. It happens to be written in Java. What it is written in doesn't matter. It could have been written in C or any layer of abstraction sufficient to implement what it does. Simplicity gives the freedom to do all kinds of things. Nova is simple enough where even a computer isn't necessary. A pencil, eraser and paper would work. The computer just makes things easier and scales better. We have to be careful not to let our tools define the way we do things.
Some of these commands and expressions, particularly those that have to do with creating objects and making links, are essential. Others are supporting structures native to this particular environment that may or may not remain.
$a = data
$peter = "Peter Schlumpf" The quote marks are optional, so
$peter = Peter Schlumpf
is valid.
$peter = Peter Schlumpf $peter2 = $peterThen $peter2 contains the string "Peter Schlumpf". %record($a).field This casts object $a as a CSV record and prints out the specified field, addressable by fields. Field definitions are defined in the object $record. So if we declare an object: $record = , First_name Last_nameWe're setting the format. The comma is the delimiter, and First_name and Last_name are fields. %record($a).field = data This sets a field in object $a cast as a CSV record to the data value. %record($a).field This prints the value of the specified field in object $a. $source --> $target ... Creates a link from the source object to the target object. The ... means that there can be more than one target object. $source x-> $target ... Breaks an exisitng link from the source object to the target. $source <-> $target ... Creates a bi-directional link bwtween source and target. $source ?-> $target ... Queries the relationship from source to target. Returns 1 if there is a relationship. Returns 0 if there is no relationship. del $a Deletes object $a from the set. list $object Lists all the relationship an object has with all the other objects in the set. browse $object maxLevel Browses the relationships an object has with others, and theirs in turn to the specified level. Think "degrees of seperation." count $object Returns the number of relationships an object has with other objects in the system. arms Print the arms array data structure in a character graphic format. env Shows the Nova run time environment. help Displays the help screen. noop No Operation. Does nothing. find <$object> search_string Perform a search on the strings of all the objects that $object points to. print <["string"] [$object] [%record]> ... Prints the contents of an object, a field or a line of text. println <["string"] [$object] [%record]> ... Does the same thing as the print command but adds a carriage return to the end. quit Exits the Nova run time environment. save Save the ARMS space to the specified file. load Loads the ARMS space from the specified file. reset Resets the ARMS space and sets the number of objects. If you fight the existing paradigm, it's tough. -- Ted Nelson |