emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] gnowsys-mode a major mode extending org


From: Nagarjuna G.
Subject: [Orgmode] gnowsys-mode a major mode extending org
Date: Tue, 29 Sep 2009 20:19:40 -0400
User-agent: Mutt/1.5.11

Dear orgmode developers and users

This is a note to share with you our adventure with org.

We, at gnowledge.org, began a project that extends orgmode (without
spoiling or loosing any of the orgmode features) to support
collaborative knowledge organization and networking using the GNOWSYS
storage on the server side.  This is work in progress.  I am writing
this note to inform you about the on going work, as well as to thank
you all, specially Carsten for creating an app that took Emacs to yet
another level.

* What we are doing with orgmode: 

  1. We use Emacs as a client to collaboratively create, update
     knowledge networks in plain text.  The knowledge network is
     created by adding nodes (rendered in orgmode as a note item) and
     named relations between them (rendered in orgmode in the
     properties drawer of the note item). The storage of the network
     is compatible to RDF model of storing networks, though we do not
     store or process XML either on the server side or on the client
     side. Thus, every orgmode item is added in a form that can be
     serialized as a RDF triple.  Some examples given below.

  2. We are using xmlrpc (xmlrpc.el), a builtin feature in Emacs, to
     connect to GNOWSYS server. GNOWSYS publishes its API as
     webservice (which has an API to perform the authentication,
     search the knowledge base, return and update the nodes and its
     properties.)

  3. Each node when returned from the GNOWSYS server to the client
     opens in a org buffer (temporary) as a note item.  Since we
     render the linkeddata in a text format orgmode renders everything
     nicely.  We have defined more types of links, extending the ones
     available already, so that the linked nodes' URI is always
     available.

  4. Any text written below the drawers is stored as the value of an
     attribute 'content' of the current node on the server side.

  5. We are adding more and more functions to complete the entire
     application, thanks to orgmode and Emacs, where difficult tasks
     are tamed to such an extent, we are obviously excited!

* What missing feature of orgmode will be available in gnowsys-mode

  We can do networking between items making frame based orgmode items
  linked with any other items in any which way by explicitly naming
  the relations.  This feature makes orgmode ready for semantic
  web. We plan to use the properties drawer to hold all the metadata
  of each node.  In-built version control of all notes as well as the
  networks (a feature of GNOWSYS).  Orgmode with the extensions that
  we are applying can demonstrate how complex application data can be
  represented and manipulated in plain text including semantic web.

* What this extension may mean to the users of orgmode and others.

  These are the use cases for extended orgmode/gnowsys-mode:

  1. Each note item (*) can be published at a remote server as a node,
     with its content and properties stored as attributes.  Thus all
     data gets published on the server, though optionally the user can
     save all data as text files on his/her PC. Published nodes
     can be read and edited by others, allowing collaborative
     authoring.  Using this feature, we can use orgmode as a wiki
     source file.

  2. GNOWSYS supports version control of all changes made to the node,
     thus changes can be tracked. No additional version control like
     cvs, svn, git, bazaar etc. are required.  (GNOWSYS should soon
     support more functions to improve this.) Nothing is deleted from
     the server. Nodes can be delinked or marked deleted, nodes with
     deleted mark still exist on the server after making a new
     snapshot of the node.

  3. Ontologies or application schema can be made and published
     collaboratively.  This is useful as a semantic web
     application. All this can be done without using XML on either
     server side or client side, though we can import and export data
     serialized in RDF format.  This makes it a pure text based app
     for semantic web.

  4. Complex documents like courses, manuals, books can be written in
     orgmode collaboratively with bibliogrpahy support etc.  LaTeX and
     DocBook export feature could make use of this to make orgmode as
     a desktop publishing system supporting collaborative editing. (We
     want to discuss this project with guidance from org team.)

  5. Considering that a website is nothing but a set of complex
     documents with internal as well as external hyperlinks, complete
     website can be made, managed and published by orgmode with the
     source code of the site completely encoded in text.

  6. GNOWSYS is made for collaborative creation of semantic networks,
     so this use case needs no more elaboration.  Concept graphs,
     mindmaps included. 


We realize that much of the above use needs a good and advanced search
facility on the GNOWSYS side.  Though crude search is possible now,
and integrated within gnowsys-mode, a lot of improvement is possible
here.

The bleeding-edge gnowsys-mode can be obtained using "svn co
svn://svn.savannah.gnu.org/gnowsys/gnowsys-mode". 

Divya (a student hacker) did this project as her GSoC 2009 under Rajiv
and me as mentors. She keeps on updating with more and more functions
regularly.  We will feel encouraged if some of you could try this and
send us feedback. As first time emacs-lisp hackers our code may not be
written elegantly.  If you detect blunders do let us know.  We already
learned a lot from the existing examples.

gnowsys-mode will be demonstrated at ISWC 2009 to be held this October
near Washington for the semantic web community.  If any of you are
aruond Washington/Virginia I would be glad to meetup.

Thanks again for org!

Nagarjuna




reply via email to

[Prev in Thread] Current Thread [Next in Thread]