[LWN Logo]
[LWN.net]
From:	 Paul Fernhout <pdfernhout@kurtz-fernhout.com>
To:	 python-list@python.org
Subject: [ANN] Pointrel Data Repository System v20010915 released
Date:	 Mon, 08 Oct 2001 18:50:22 -0400

Hello all,

The latest version of the Pointrel Data Repository System is now
available from SourceForge. The code is entirely in Python and supports
a database model similar to the Entity-Relationship model. 

The project is hosted on SourceForge:
    http://sourceforge.net/project/?group_id=6010. 
The latest version for Python should be downloadable here (78k):
    http://prdownloads.sourceforge.net/pointrel/Pointrel20010915.zip 
This page has more details (and is essentially the readme file):
    http://www.kurtz-fernhout.com/pointrel/

You may have a vague recollection of a post on Pointrel in this
newsgroup in May 2000:
  http://groups.google.com/groups?hl=en&th=925265d9c9b99c1a&rnum=1
The Pointrel architecture has been extensively revised from that version
-- primarily in the direction of ease of use.

This version includes a demo implementation of Vannevar Bush's Memex
(which he proposed around 1945). More on Bush's Memex can be found at:
  http://www.theatlantic.com/unbound/flashbks/computer/bushf.htm

This version includes several other GUI examples (mostly with TKinter,
but a couple using wxPython). These simple demos include a to do list
manager, a notebook (useful for developing snippets of Python), a
drawing application, an email viewer, and an archive viewer.

==========================================

From the readme file:

* What is the Pointrel Data Repository System?

The Pointrel Data Repository System is a variant of an
Entity-Relationship model database. The Pointrel system provides a way
to easily handle loosely structured data stored on disk, like for INI
files, version control systems, bug tracking systems, or simple AI type
applications. It takes an approach to data storage which emphasizes
flexibility over speed. It also emphasizes storing new information for
the long term over modifying or deleting old information. It hopefully
makes it easier to build new layers of abstraction and indexing over old
data. The Pointrel Data Repository System bears some resemblance to the
ROSE/STAR system described by William Kent in his book "Data & Reality".

In a nutshell, the Pointrel Data Repository System helps you build
associations which define relationships between entities. These
associations are essentially triadal links between things indicating one
thing is linked to a second thing in a way defined by a third thing. The
simplest way to use such links is to make the equivalent of object
properties or a dictionary, such as "Fluffy weight 20kg" which if a
dictionary would be Fluffy["weight] = "20kg". However, Pointrel differs
from a dictionary in that is supports queries like one for all
dictionaries which define a weight of 20kg or all relationships between
"Fluffy" and "20kg". Triads are all defined within a specific context
that gives meaning to the associations (making triads actually have four
fields). The context allows triads to be handled within an archive in a
somewhat more modular fashion using them as filters, since you can
easily ignore triads not in the context of interest. All fields of a
triad are indefinite length binary strings -- so they could be anything
from "foo" to the contents of a binary file. 

* What is a simple example of the Pointrel API being used?

See "fluffyExample.py" for an example of using the simplified global
function interface.

Here is an excerpt from that file:
  from pointrel20010915SimpleInterface import *

  Pointrel_initialize("myArchive")

  Pointrel_startTransaction()
  Pointrel_add("simpleexamplecontext", "Fluffy", "weight", "20kg")
  Pointrel_add("simpleexamplecontext", "Fluffy", "color", "beige")
  Pointrel_add("simpleexamplecontext", "Fluffy", "teeth", "pointy")
  Pointrel_add("simpleexamplecontext", "Fluffy", "teeth", "nasty")
  Pointrel_add("simpleexamplecontext", "Fluffy", "preferred food",\
"Knights who say 'Nie!'")
  Pointrel_finishTransaction()

  string = Pointrel_lastMatch("simplecontext", "*", "weight", "20kg")
  print string
  # string would be --> "Fluffy"

  string = Pointrel_lastMatch("simplecontext", "Fluffy", "weight", "*")
  print string
  # string would be  --> "20kg"

  string = Pointrel_lastMatch("simplecontext", "Fluffy", "teeth", "*")
  print string
  #string would be --> "nasty"

  list = Pointrel_allMatches("simplecontext", "Fluffy", "teeth", "*")
  print list
  #list would be  --> ["pointy", "nasty"]

* What is the license? 

BSDish. See license.txt for details.

* What versions of Python is it for?

This code was developed primarily under Python 2.1 under Windows 2000. 
It has also been spot tested under WinNT 4.0 under Python 1.5.1. with
changes made to run there, however, the primary focus is Python 2.1.

* How reliable is the Pointrel System?

The Pointrel system should not be relied on for mission critical systems
yet. It has not undergone enough testing, especially in terms of
multiple simultaneous users of the same archive. It may be adequate at
this point for INI file handing or similar non-critical applications if
you do some testing on your own for suitability in your particular
circumstance -- however I cannot guarantee that. The software comes with
NO WARRANTY.
I do not yet use Pointrel for anything mission critical. One reason for
this release is in hopes people will try it, provide feedback, and
perhaps make suggestions for improving its reliability. I will say that
ensuring the long term integrity of the data stored is a high priority.

* Why are you working in this field of data and knowledge management?

I am interested in archiving and structuring knowledge using a fine
grained approach, especially knowledge on how to make things in a
sustainable way as proposed by Buckminster Fuller's "Design Science" and
many others, and making that knowledge freely available to all people of
the world to help reduce ignorance and want and to increase humanity's
chances of surviving with style on Earth and even someday in space
habitats. See: http://www.kurtz-fernhout.com/oscomak/index.htm for more
details. If you are interested in others doing work with knowledge about
sustainability, look at: http://www.bfi.org/ and:
http://www.humaninfo.org/

==========================================

If you try the Pointrel Data Repository System, please let me know if
you have fun with it or if it proves useful in some endeavor.

-Paul Fernhout
Kurtz-Fernhout Software 
=========================================================
Developers of custom software and educational simulations
Creators of the Garden with Insight(TM) garden simulator
http://www.kurtz-fernhout.com
-- 
http://mail.python.org/mailman/listinfo/python-list