Difference between revisions of "Programming project"

From cosmopool meta
Jump to navigation Jump to search
m (client access)
m
Line 1: Line 1:
 
[[Programming project FAQ]]
 
[[Programming project FAQ]]
  
The software shall run on GNU/Linux systems having a broadband connection to the internet.
+
* The client is written in [[http://www.qooxdoo.org|qooxdoo]].
 
+
* The server is written in [[http://www.python.org|python]].
== Preparation ==
+
* [[programming project/infrastructure|infrastructure]]
* write down the concept in this wiki [[todo := write down the concept in this wiki|(IN PROGRESS)]]
+
* [[Roadmap|roadmap]]
* write very simple, elementary prototypes of client, server and storage (IN PROGRESS)
+
* [[:Category:Ontology editing|background knowledge]]
* search for other developers [[todo := search for other developers|(IN PROGRESS)]]
 
* make a [[programming skills wanted|list of skills]] needed for this project [[todo := make a list of skills needed for this project|(TODO)]]
 
* create [[programming project/infrastructure|communication and development infrastructure]] [[todo := create communication and development infrastructure|(TODO)]]
 
* learn from existing [[:Category:Ontology editing|ontology editors]] (DONE)
 
  
  
Line 23: Line 19:
 
# Users can choose their preferred interface.
 
# Users can choose their preferred interface.
  
----
 
 
=== data storage ===
 
=== data storage ===
Currently the [[storage]] is being implemented as a single database backend.
 
 
Only later we will switch the [[storage]] (everything behind the fixed [[server-storage interface]]) to a distributed network of storage nodes.
 
 
 
How are data stored?
 
How are data stored?
 
* [[knowledge representation model]]
 
* [[knowledge representation model]]

Revision as of 18:26, 27 September 2011

Programming project FAQ


Architecture / Specification

Overview

File:Architecture2.png

Essentially we have a 3-tier architecture:

  1. A storage backend consisting of one database (beginning with the single database backend project), or a network of of appropriately synchronized distributed database nodes (later).
  2. Server nodes access the data on storage nodes through a fixed interface (server-storage interface). We envisage having both one server node and one storage node on the same machine, since this might be necessary for performance reasons.
  3. Clients access the server nodes through a fixed interface (client-server interface). A client may consist of a webserver being accessed by a webbrowser, or a commandline client, or other clients. (The webserver may also allow for providing public resources, such as html tables to be included into websites.)
  4. Users can choose their preferred interface.

data storage

How are data stored?


object logics

The (web)server retrieves data via the server-storage interface from the storage and provides an interface (client-server interface) for clients, which request or send data.

The tasks of the server include:

  • communication with clients via client-server interface
  • access verification (identification, authentication, access rights)
  • k-object editing and input validation
  • group logics, spatial and temporal logics
  • k-class hierarchy logics
  • topic hierarchy logics
  • communication with storage layer via server-storage interface
  • data retrieval with 'intelligent' caching (e.g. of query results)
  • handling of storage data change events for data in use by a client
  • inter-server trust network
  • user messaging and other communication functions
  • object clipboard functions
  • user preferences management

client access

For now we envisage two clients:

  • a minimalist command line client with text console
  • a full featured AJAX webapplication client with graphical interface having these featues
    • search and edit k-classes, k-instances and k-relations
    • user customizable
    • 3 different complexity levels (simple, medium, advanced)
    • virtual connection through periodic polling

Other clients (in particular for mobile devices) are possible later.