Overview
This is a presentation heavy project in which the domain model is relatively simple. However it is likely that performance requirements will dictate some connection between the domain model and the front-end code.
Domain Model
Two core domain objects (underling indicates preferred name):
- Factlet / Fact / Atom / Node / Descriptor: the basic atoms that get strung together to form a:
- Narrative / Thread / Thema
A Thread has many Factlets and each Factlets may belong to many Threads (but probably does not need to know about all those threads all the time).
Crude UML Diagram +----------+ +----------+ | Factlet | | Thread | +----------+ +----------+ | | oo 1 | | | |-----------<>| | | | | | | | | | +----------+ +----------+
Factlet Attributes
Suggested attributes:
- uuid/uri: unique id of some kind. might well be uri (which could be overloaded to be location for the node a la rdf)
- title: short title
- short_description: [?] very short description [might well want to omit this and just have description -- if necessary can just grab first 100 chars or so of the description where a short_description is needed)
- description: text field
- when: either a single date (datetime) or a date pair in which case it is (start, end). In first case just an instance and second it is an interval (see http://www.w3.org/TR/owl-time/ for more on time ontologies)
- location: either a point, line, polygon a la georss (http://www.georss.org/simple)
- tags: associated text tags
- metadata (dublin core based, could also link to the atom publishing standard ...)
- license/rights -- must be required and should default to some open license
- creator
- created [?]
Additional Possible Attributes
- type: designate type of Factlet (e.g. Person, Event etc)
- arbitrary additional attributes: (name, value, type etc)
Thread Attributes
- title:
- uuid/uri: unique identifier (perhaps taking form of a uri)
- factlets: ordered list of factlets making up this thread
- metadata:
- created:
- owner:
Might think one might want more, e.g. a brief description (though title might be sufficient).
Demo JSON data file
See browser:/trunk/demo/napoleon.js for full version:
{
thread : [
{
"title" : "Battle of Austerlitz",
"description" :
"The Battle of Austerlitz (Czech: ''Battle of Slavkov''), also known as
the Battle of the Three Emperors, was one of Napoleon's greatest
victories, effectively destroying the Third Coalition against the
French Empire. On December 2 1805, French troops, commanded by Emperor
Napoleon I, decisively defeated a Russo-Austrian army, commanded by
Tsar Alexander I, after nearly nine hours",
"url" : "http://en.wikipedia.org/wiki/Battle_of_Austerlitz",
"start" : "1805-12-02",
"location" : [49.1281, 16.7622],
},
{
"title" : "Battle of Borodino",
...
},
...
}
This is the kind of info that will get passed into the presentation layer.
Presentation
Thread Viewer
Possibilities (+ indicates priority):
- By order (in thread) ++++
- By date +++
- By location ++
- By date and location +
- By other attributes +
- By intersection with other threads +
- Multi-thread view ++ (display more than 1 thread at one time 'side-by-side')
Demo Sketches
By Order
This is ticket:8
Generally very rough. E.G. little index cards on the left could just be a plain html table with titles ...
Title:
+---------------------------------+
|any other metadata [?] |
| |
| |
+---------------------------------+
FACTLETS | CURRENT/CREATE
| | FACTLET
+-------+ |
| | |
A +-------+ | Should be based
| | | on existing
| +-------+ | viewer/editor
SCROLL | | | |
| +-------+ |
| | |
| +-------+ |
V | | |
+-------+ |
| |
|
|
A mockup based on the above can be found attached. nickstenning 2007-12-29.
rgrp: 2007-12-30: looks great (as usual!). Couple of points:
1. This is a Thread view (i.e. ticket:8) as opposed to the Factlet view (ticket:1) so I wonder whether we should make the thread (in particular the list of Factlets) more prominent (e.g. wider pane and on the left). This will then make this view more consistent with the more complex views (such as Date view, Geo view etc) where more space will be needed for displaying the Thread info. Viewing the current Factlet pane could then be on the right and smaller -- after all there will be a dedicated Factlet view elsewhere (ticket:1) which is where we'd really get the Factlet 'full-size' (and we could link to this Factlet view from the thread item).
2. On the design front I wonder whether, at present, we should keep it even simpler e.g. no need to have the nice faded 1/13 at the top of the viewer, nice back-faded left/right arrows etc. These are really nice but we might want to keep things basic while we develop the views and then come back to the polishing (from both a look and feel stand-point) once the basic functionality (js and backend) is in place. This may already be the plan with the mock-up just there to show the 'potential' -- ignore this comment if that is so!
By Date
See ticket:9
Very similar to by order but with a Simile (or other) Timeline inserted in a prominent location e.g. at the top of the page (this should be the primary method of browsing the thread in this view).
By Location
See ticket:12
Use some kind of js map displayer (e.g. Open Layers -- see ExistingTools for more) to show the Factlets on a map. Clicking on a particular item should bring up the item in the map viewer.
Thread Creator/Editor
- Need to easily search/view nodes for addition to thread
- Should show existing thread components
- Link to node editor (?)
Node Creator/Editor
Most nodes should have already been created so this is of a lower priority.
Attachments
- napoleon.js (2.5 kB) - added by rgrp on 12/26/07 22:53:51.
- 20071229-microfacts-wui-threadviewer-r01.pdf (61.9 kB) -
Thread viewer mockup, revision 01
, added by nickstenning on 12/29/07 22:28:02.
