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 manage the knowledge.
1.1 Node orientated computing
Just as the language LISP is list oriented, we try to model the data as nodes in a network. The interpretation 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.
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:
- 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.
- Every node links with the neighborhood nodes through two kinds of mediating nodes: attributes and relations. Thus every node can be represented as a frame.
- Every node is described/interpreted by neighborhood.
- The network can be obtained as a graph by merging the neighborhood of all the nodes.
- The set of all attributes and relations is the full set of knowledge represented in the network.
- Each attribute or relation constitutes one RDF triple.
- 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 persistently 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:
- Object Type
- Attribute Type
- Relation Type
- Process Type
- System Type
Special Derivative Nodes
- 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 can be obtained from the git repository. No stable version is released.
If you want to see live implementations, please visit the sandbox of the latest state of development
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.
- can be used as an RDF triple store, the standard SPARQL query mechanisms are in the pipeline. Exporting to RDF in any notation is currently implemented.
- define arbitrary relations and attributes. subtyping, and class membership are inbuilt. All the datatypes provided by Django are supported.
- Metatype (type of types) and relations among them can also be expressed. Useful for knowledge representation using upper ontology elements.
- Quantifiers and modalities can also be part of the persistent data (processing of the inference logic based on quantifiers and modalities is not yet implemented).
- atlas.gnowledge.org: GNOWSYS is being used for the development of Gnowledge.org, a portal where an atlas of knowledge is under construction. It's a place were teachers can create learning tracks by specifying the prerequisites for a concept or an activity. This site will be migrated to Django based implementation soon.
- SELF Platform: Self-Platform is a collaborative-teacher centric authoring system developed using GNOWSYS. It has features like a course organizer used for networking and organizing various course components, a book shelf used to share a lesson or any other course component among courses, a file manager used to store the files of a user, a SCORM import/export module using which the user can import any SCORM file as a course into the system as well as export the courses on the platform, an internal linking mechanism used to create internal links among components. This implementation uses the older ZOPE framework. Both development and maintenance of this application stopped. We are looking forward for interested people to migrate SELF platform to the new Django implementation.
- gnome-gnowser: Gnowser is a gnome desktop application developed using pyGTK, Graphviz, Cairo and it acts as a GUI for GNOWSYS. The documentation for GNOWSER is available at gnowledge lab. The current version uses Zope implementation. This project needs to be migrated to the new Django based server.
- gnowsys-mode: "gnowsys-mode" is an Emacs extension package as a major mode for knowledge networking and organization using GNOWSYS. It is a pure text based interface for the collaborative authoring using a centralized GNOWSYS server. The current version uses Zope implementation. This project needs to be migrated to the new Django based server.
2.3 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.4 User Interface
The current implementation uses Django-framework to provide a
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.
Announcements about GNOWSYS and most other GNU Software are made on <email@example.com>.
There is also a special list used for reporting bugs, <firstname.lastname@example.org>. For details on submitting a bug report, please see the section Report a Bug below.
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 <gnowsys-dev-request@gnowledgeorg> 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 email@example.com 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 <firstname.lastname@example.org>. Easy way to post a bug is to visit the project website at to post and view the bugs at Savannah.
GNOWSYS is currently being maintained by <nagarjun AT gnowledge DOT org>.
8.3 Contributors to GNOWSYS
GNOWSYS is concieved 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 and Krishnakant Mane later contributed to GNOWSYS. The latest contributions come from Shaswat Chakravorty, Divya, Jay Mehta and Ganesh Gajre.
The current active contributors include Kabir, Johnson, Anuja, Supriya, Sumegha 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 send a request to <email@example.com>.
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 exist. If any of you wish to volunteer to translate this page to your language, please contact the maintainer, <nagarjun AT gnowledge DOT org>..
9 A GNU Project
Date: 2012-03-15 20:55:28 IST
HTML generated by org-mode 6.33x in emacs 23