GNOWSYS: A Kernel for Semantic Computing!
Table of Contents
- 1 Introduction to GNOWSYS
- 2 Features Implemented
- 3 License
- 4 Mailing Lists/Newsgroups
- 5 Google Summer of Code Participation
- 6 Google Summer of Code 2012 Ideas
- 7 Publications
- 8 Download
- 9 A GNU Project
1 Introduction to GNOWSYS
GNOWSYS is a specification for a generic distributed network based memory/knowledge management. Typically computer memory is managed as a tree, or as nested arrays. Our attempt in this project is to represent all forms of declarative and procedural knowledge as a network, and then develop network processing methods to create and publish knowledge as a network.
1.1 Node orientated computing
Just as the language LISP provides list oriented computing framework, we try to model the knowledge as nodes in a network. The interpretation (meaning) of a node depends on the links the node has with other nodes, and the interpretation of the other neighbouring nodes in turn depends on their network and so on. The nodes are organized and processed according to a complex data structure called the neighborhood, akin to a frame.
The network is constructed by interlinking all things to those whose interpretation is implicitly available to the computing system. Those nodes whose interpretation is known to the computing system may be called as primitive nodes since they are made available as the initial condition of the evolving semantic system. They may be also called as the factory nodes. Such nodes become the meaning mediators in the semantic system.
These primitives can be further devided into logical types and data types. The most commonly used semantic relations like "type of" and "member of" are the logical types, while the character set, numbers and other models of structured symbol sets with known interpretation are the data types. Thus the nodes in a network will be constructed with the known logical and data types.
New nodes obtain their meaning due to their relations with the primitives. That is by linking unknown symbols with known symbols GNOWSYS provides a mechanism to define new meaning from the already available meaning. The variety of possible meaning space depends entirely on the chosen primitive set of nodes.
1.2 The Structure of the Network Memory
The network construction uses the following principles:
- Everything is a node. The memory in GNOWSYS is a set of nodes with all nodes with a unique NID (Node ID). The NID with the address locator gives rise to a unique URI in the cyberspace.
- A node links with the neighborhood nodes through relations, and some predefined name and value pairs called attributes.
- Every node is described/interpreted by neighborhood, which is nothing but the set of relations and attributes a node possesses. This can be rendered as a context graph.
- A network can be obtained by merging the neighborhood of all the nodes as a graph.
- The set of all attributes and relations is the full set of knowledge represented in the network in the form of propositions.
- Each attribute or relation constitutes one RDF triple expressing one proposition.
- The representation of network memory can be completely encoded in any of the RDF notations.
1.3 The Dynamics (change management) of the Network Memory
- Insertion of new relations and attributes changes the neighborhood of the nodes concerned, and such changes can be tracked by holding the snapshots of the node's neighborhood at each instance of change.
- Being a collaborative space, the system records who did what change and at what time.
- Delinking is the preferred way of removing data elements from the network, and no node can be removed without prior removal of the links the node may have with others.
- Each Node's neighborhood at a given time becomes the state space of the node.
- Changing state of nodes can be recorded, and described as process nodes that record the prior-state and post-state of the nodes invovled.
1.4 Node types
Based on the type of attributes and relations, we can distinguish some widely repeated kind of patterns as node types for convenience. These node types can be used for managing the data of computing applications. New nodetypes can be defined as and when required, though minimalism is encouraged for ensuring generality of processing engines and maintaining parsimony. Currently GNOWSYS has the following node types:
- Type Nodes:
- System Type
- Attribute Type
- Relation Type
- Process Type
- Token Nodes:
- Special Derivative Nodes (to be implemented):
- Complex Expressions:
- Node Specification
- Relation Specification
- Attribute Specification
GNOWSYS is an acronym for Gnowledge Networking and Organizing SYStem. The 'G' in GNOWSYS is pronounced hard just as the 'G' in GNU.
2 Features Implemented
Older implementations were done as a product of ZOPE (Zee Object Publishing Environment), a free web application framework. These are archived, and no further development from the main team is expected.
The currently available version (bleeding-edge) of GNOWSYS is availableas gstudio (short for gnowsys-studio) be obtained from the git repository. The branch under development is 'mongokit'. No stable version is released as yet. We expect to release a stable version in July 2014.
2.1 Features of GNOWSYS
- A distributed knowledge network.
- Metadata can also be added to relations and attributes.
- All changes to the data as well as to the metadata of knowledge is tracked.
- Methods are accessible to clients and other servers as web services and through XML-RPC or jsonrpc, as well as restful protocol.
- Define arbitrary relations and attributes. subtyping, and class membership are inbuilt. All the datatypes provided by mongodb are supported.
- Metatype (type of types) and relations among them can also be expressed. Useful for knowledge representation using upper ontology elements.
2.2 Possible Applications
Consider using GNOWSYS if you want a distributed database, your data model is evolving (not yet frozen), you are a semantic web engineer and wants to develop an ontology, or publish several ontologies in one networked memory, you want a distributed triple store with frame and graph based views, if you are doing structured content management application, etc.
You may use GNOWSYS:
- As a web based hybrid database (as a file system, RDBMS, OODBMS, distributed DBMS) with querying and remote management. This ability will make it highly suitable for agent oriented computing solutions across the Internet.
- For building structured knowledge bases with a higher degree of expressiveness. This will help build AI based applications using GNOWSYS as a database. (GNOWSYS has no inbuilt inference engine (Ongoing work). However it is possible through the SPARQL endpoint provided by 4store.
- For semantic web. All data stored can be exported as RDF (N3 notation completed), and can be imported from RDF (Ongoing work).
- Since GNOWSYS database is available as a web-server, dynamic web sites and web services can be made. Web sites built with GNOWSYS are "semantic web ready", for the structure of the data can be queried by software agents. Normal dynamic web sites conceal the database structure, while GNOWSYS sites do not.
- Any web framework can make use of the data stored in the GNOWSYS knowledge base though XML-RPC/jsonrpc.
- As a digital encyclopedia, thesaurus, dictionary or glossaries can be made very easily.
- For building elearning applications. Lessons and concepts (learning resources) can be organized according to the standard metadata suggested by LOM/SCORM models. Learning paths, evaluation tracks, usage history etc. can be persistantly stored and accessed by establishing networking relations and conditions among them. SELF Platform is implemented using GNOWSYS.
- For building community portals, egovernment solutions, or any such applications that require the special features outlined above.
2.3 User Interface
The current implementation uses Django-framework to expose the construction and publishing methods of knowledge networks.
GNOWSYS is free software; you can redistribute it and/or modify it under the terms of the Affero GNU General Public License as published by the Free Software Foundation; version 3 of the License, or (at your option) any later version.
4 Mailing Lists/Newsgroups
The main discussion list is <firstname.lastname@example.org>, and is used to discuss all aspects of GNOWSYS, including development and porting. If you want to participate in the development of GNOWSYS, this is the list to join.
To subscribe to any GNOWSYS mailing list, please send an empty mail with a Subject: header line of just "subscribe" to the relevant -request list. For example, to subscribe yourself to the main list, you would send mail to <email@example.com> with no body and a Subject: header line of just "subscribe".
5 Google Summer of Code Participation
GNOWSYS project is participating in the GSoC for the last four years starting 2007. As a part of the scholarship, Rakesh Pandit did a prototype implementation of version control for GNOWSYS in 2007. Divya developed a graphical user interface for managing GNOWSYS using PyGTK called gnome-gnowser in 2008. Divya in 2009, developed an emacs mode called GNOWSYS-mode for working with knwoledge networks as a major mode by extending the features of orgmode.
6 Google Summer of Code 2012 Ideas
- Synchronization of Data between gnowsys servers: Two or more remote servers of GNOWSYS exchange messages between them, subscribe to parts of database and establish sync relationships (subscription). Automatic agent based synchronization should happen between the servers. This involves, determining the changes, messaging the changes to subscribed servers, and initiating transfer mechanisms using RDF based data exchange. Good understanding of serialization of data, XML, RDF, and file transfer protocols, agent oriented services with good working knowledge in Python required.
- Collaborative Concept Mapping Activity in Sugar with GNOWSYS as storage: A pyGTK based extension of the gnowser project to do refined concept mapping. Based on the codebase of Labyrinth Activity in Sugar, we intend to develop a full featured collaborative concept mapping application using GNOWSYS as a storage. The application is required to have three modes: mindMap-mode, conceptMap-mode and conceptMap-mode-with-storage-gnowsys. Python and pyGTK are prerequisites for doing this project. Please discuss the projects in the firstname.lastname@example.org mailing list if necessary. If students come with their own ideas, please write about them in the mailing list.
Publications on GNOWSYS can be downloaded from http://lab.gnowledge.org/documentation
8.1 Report a Bug
If you think you have found a bug in GNOWSYS, then you should send as complete a report as possible to the developer's team in the mailing list.
GNOWSYS is currently being maintained by <nagarjun AT gnowledge DOT org>.
8.3 Contributors to GNOWSYS
GNOWSYS is conceived and authored by Nagarjuna G. Most of the code to GNOWSYS was a contribution by several staff members and students who worked under his guidance at Homi Bhabha Centre for Science Education, TIFR, Mumbai. Shashank Ashtikar and Harshad Bahere were the initial contributors to the code and later on by Prasanta Baruah, Debarshi Ray and Rakesh Pandit. Bipin Apandkar, Rajiv Nair, Alpesh Gajbe, Dinesh Joshi, Vihan Pandey, Saurabh Shelar, Krishnakant Mane, Shaswat Chakravorty, Divya, Jay Mehta, Kabir, Johnson, Anuja, Supriya, and Ganesh Gajre.
The current active contributors include Anuja, Supriya, Dhiru, Krishna, Avadoot, Johnson, Arun, Kedar, Sunny, Kabir and some student interns of the gnowledge lab.
8.4 Feature Request
If you would like any new feature to be included in future versions of GNOWSYS, please talk to developers' team in the mailing list.
GNOWSYS development is currently supported by Homi Bhabha Centre for Science Education (HBCSE), TIFR, and is mostly executed by undergraduate students as a part of their projects. Please remember that GNOWSYS is a GNU project and is dedicated to the free software community. If you like to be a volunteer, you can also contribute to its development. This project is managed from savannah site. You can place a request to be a developer from there. For information about contributing to other GNU Projects, please read How to help GNU.
8.5 Translations of this page
Presently no translation exists. If any of you wish to volunteer to translate this page to your language, please contact the maintainer, <nagarjun AT gnowledge DOT org>.
Date: 2013-07-14 15:06:11 IST
Org version 7.8.11 with Emacs version 24Validate XHTML 1.0