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):

  1. Factlet / Fact / Atom / Node / Descriptor: the basic atoms that get strung together to form a:
  2. 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