OT: Wikis

Marielle Lange mlange at lexicall.org
Tue Oct 18 05:05:14 EDT 2005


Hi Alex,


> For most topics or areas to document or describe, the most  
> important thing to get right is the organization of the data. I've  
> seen a number of wikis that contained huge quantities of  
> information - but I could never find what I wanted without a lot of  
> effort.  Wikis make it easy to add new categories - so it's easy to  
> have too many categories, or individual articles mis-categorized.
>

That's an excellent point... As the ontology manager proves, I am  
trying to find a way to back up my own wiki with an ontology. In a  
way, the idea is to solve the salesman problem. The user should be  
provided with many different paths to the same information and should  
always be able to accede the information that is relevant to him in  
less than 5 clicks. Slight differences in word use (for instance  
Transcript vs xTalk) should be irrelevant.

Ultimately, what I am after is to be able to use a single  
classification system to acceded all bookmarks I have on the web, all  
files I have downloaded from the web, as well as all documents I have  
on my desktop computer.. transform my desktop into a (cleverly  
organized) CMS... or rather treat my desktop and the web as part of  
the same work environment (I have Broadband at home). When I would  
look for a file on a given topic, I would be told of the related  
topics higher and lower in the tree. I would be told as well of other  
resources (images, rev projects, bookmarks, Contact Addresses,  
Emails, etc.) that belong to the same category.

Duplicating spotlight??? Not really... spotlight suffers exactly from  
the problem highlighted by Alex. It let you randomly search for  
documents, based on their content. For sure, you can without too much  
difficulty attach ad-hoc spotlight comments to anyfile (for this, you  
can define in automator a finder action on a folder). But still, for  
the research to be efficient, what is needed, is a kind of Trove  
classification system to specify these keywords (http:// 
sourceforge.net/softwaremap/trove_list.php). With the way it works,  
if you happen to change any keyword in the future (from Transcript to  
xTalk)... your search fails.

A demo of my solution so far:
go url "http://revolution.lexicall.org/paypal/Download%20Manager.rev"
(sorry, this one is password protected, still working on it)

The major features are:

(1) URL+Page title are added by drag and drop of the URL from safari.

(2) Keywords are easy to add, thanks to a system which allows for the  
autocompletion of keywords (so to guide the use in the provision of  
correct keywords). Alternatively, you can look for the keyword in the  
keyword list and double click on a line of the list to have it added  
to the entry's keywords.

#######################################################
##
## Automatic Keyword completion routine
##
##        Constraints:
##          Keywords are entities separated by ";". Eventually, they  
can be separated by "; ".
##          A start of line and end of line also marks a start or end  
of a keyword. Spaces are
##          are allowed within a keyword
##        Behaviours:
##           1. A key is pressed in the keywords field
##               If this key is not a space or a keyword separator,  
then completion is proposed.
##               1) information about the start and end position (in  
characters) of the keyword
##                  is retrieved.
##               2) a list of the keywords that match the start of  
the letters already provided
##                  is generated (for this, the full list of keywords  
is used, field "lst_keywords").
##               3) This list is sorted by alphabetical order
##               4) By default, the first item in the list is  
proposed as completing segment
##           2. The up or down arrow keys are pressed
##               1) The next item in the list of completing segments  
is used to complete the letters
##                  appearing between the start of the keyword and  
the selection point
##           3. The left or right arrow keys are pressed when the  
shift key is down
##               1) Jumps to the start (left arrow) or end (right  
arrow) of the keyword

(3)  keywords are easy to find even when you only have a partial match:
  If you do a mousedown on the arrow part of the combobox under the  
list of keywords, it populates the Combo-box with the list of  
keywords in lst that match the selectedtext in the combobox.

Next step is to migrate it to SLQlite, to allow access from the web  
as well as from my desktop... The thing to know is that you can  
easily manipulate SQLlite from the shell. SQLlite itself can be  
downloaded  for free for many platforms (http://www.sqlite.org/).  
Then (sorry for this, Chipp, but an easy and free db management  
system may be decise for bringing new users to revolution), it  
suffices to write some functions like this:

########################
##
##  SQLlite
##

on updateLstFromDB
   put getPanelData() into tA
   set the defaultfolder to "/users/mlange/Work/Scripting/ 
___myProjects/sqlite/"
   put "select * from downloads;" into tSQL
   put shell("./sqlite downloads.db '" & tSQL & "'") into tData
   replace "|" with tab in tData
   put tData into field "lst_downloads"
end updateLstFromDB

on deleteFromDB tID
   put getPanelData() into tA
   set the defaultfolder to "/users/mlange/Work/Scripting/ 
___myProjects/sqlite/"
   put "delete from downloads where id=" & tID & ";" into tSQL
   put shell("./sqlite downloads.db '" & tSQL & "'") into tData
   -- updateLstFromDB
end deleteFromDB

on addEntryinDb
   put getPanelData() into tA
   put the internet date into tDate; put tDate; convert tDate to  
dateItems;
   put item 1 of tDate & "-" & item 2 of tDate & "-" & item 3 of  
tDate && item 4 of tDate & ":" & item 5 of tDate & ":" & item 6 of  
tDate into tTimeStamp
   put quote & tTimeStamp & quote, quote & tA["keywords"] & quote,  
quote & tA["title"] & quote, quote & tA["url"] & quote, quote & tA 
["desc"] & quote into tData
   set the defaultfolder to "/users/mlange/Work/Scripting/ 
___myProjects/sqlite/"
   put "insert into downloads (ID, date, keywords, title, url,  
description) values (null," && tData & ");" into tSQL
   replace numtochar(13) with " " in tSQL   --- Could escape them,  
but I prefer to avoid cr in my application.
   replace cr with " " in tSQL
   replace "  " with " " in tSQL
   put shell("./sqlite downloads.db '" & tSQL & "'")
   -- updateLstFromDB
end addEntryinDb

... At least, that's fine for personal use (that's early code, it  
works, but not really seriously tested). For professional projects,  
to guarantee perfect cross-platform compatibility, best is to use  
Chipp's solution (altSQLlite - http://www.altuit.com/webs/altuit2/ 
altSQLiteCover/default.htm).


Are other persons on this list interested in this kind of problem/ 
solution?

Marielle

------------------------------------------------------------------------ 
--------
Marielle Lange (PhD),  Psycholinguist

Alternative emails: mlange at blueyonder.co.uk, M.Lange at ed.ac.uk
Homepage:  http://homepages.lexicall.org/mlange/
Lexicall: http://lexicall.org
Revolution-education: http://revolution.lexicall.org





More information about the use-livecode mailing list