Map this paper to the Web
July 23, 2004 3:50 AM   Subscribe

A friend of mine has a philosophy PhD paper that takes the form of 100s of short aphorisms. There are several different narrative "paths" through these. He wants to put them on the web and allow people to choose their paths through. What's the best way to do it? each aphorism as an xml record, each with a "tag" for "next aphorism in path A", "next for path B.." etc? Bonus Guinness for suggestions on how web users can set up and save their own "paths" thru for others to follow.
posted by Pericles to Computers & Internet (11 answers total) 1 user marked this as a favorite
about how many options does each aphorism have?
are the links uncorrelated (is the idea that i can choose path a from the first, then path d from wherever i get to, then path c...)?
is the path monotonic (does it always jump forwards though the list)?
if not, are loops possible (can you end up going through the same aphorism twice)?
about how many aphorisms are there? about how many in a single "route"?
posted by andrew cooke at 4:08 AM on July 23, 2004

Response by poster: Chum responds there are 900 aphorisms in total; 90 in each route. there are 36 routes; users can only 'jump routes' at aphorisms that chum defines as intersections.

users can move backwards/forwards along any of the 36 routes (sequentially only - they can't "jump" aphorisms). If user is constructing their own route, the options are unlimited (=899), and they can define any aphorism as being the next one on their route. User defined routes are visible to any other user.
posted by Pericles at 5:12 AM on July 23, 2004

Is it a Nietzsche paper, or a Wittgenstein paper?
posted by leotrotsky at 6:47 AM on July 23, 2004 [1 favorite]

i would use something like the underground map as a metaphor for the aphorisms and routes. aphorisms correspond to stations, routes to train lines, and instersections to the stations where you can change from one line to another.

i would also separate the task into two separate parts - presenting the "official" version, and allowing users to edit and exchange their own versions. this is because any detailed presentation is going to be improved by tailoring it for a particular set of data - so the "official" version can be presented in a much better way than a "generic" presentation of all routes people might create (consider how you'd merge individual routes into a map - it's not trivial).

so for the "official" presentation i would use a map, as i said above. the user would participate in a journey, along the lines, selecting lines at intersections, and examining each station/aphorism in the correct order. how would this be presented? some kind of interactive animation would be nice, perhaps with two different views - one, from a distance, showing the whole map, with the route and current position marked (clicking on this would let you examine any aphorism?); and one that offers a very restricted view, as if flying above the current position on the map (so as you move along the route, the line "moves" in the window). when you arrive at a station the aphorism is presented in some way (scrolling text? teletype? star-wars-esque? newspaper cuttings?).

the other task is to allow users to construct their own routes. this would be a more traditional interface, with a list of aphorisms already included (looking a bit like web mail) and some way of selecting the next. since 900 is a lot of items for a single menu you need to group them in some way. perhaps by routes? perhaps by meaning? dynamically? based on what others have chosen previously? once constructed, routes would be presented in some way - perhaps simply as lists. you might let people comment, edit other's lists to create new works (with links inserted in the parent list to its children?). etc etc.

there's a huge amount that could be done...

(on preview - imho wittgenstein isn't going to make much sense if you mess with the ordering; it's hard enough with just one sequence. nietzsche is much more suited to something like this, because there's very little content apart from the aphorisms themselves - it's just rhetorical crap, albeit productive for others to play with for their own means ;o).
posted by andrew cooke at 6:56 AM on July 23, 2004

But if you mess with the ordering, and it's Wittgensteinian, you could have an aphoristic equivalent of the duck-rabbit! I'm tempted, when I see this aphorism in such-and-such a context, to dismiss it as trivial. But in thus-and-so a context, it seems weighty & profound! I call this phenomenon, continuously talking out of your asspect.
posted by kenko at 8:40 AM on July 23, 2004

Response by poster: Thanks Andrew! any comments as to the data structure from anyone?
posted by Pericles at 10:54 AM on July 23, 2004

i don't really understand that part of the question (how do you get from xml records to something on the screen?), but in general you need to store a directed graph (which may be cyclic - have loops - unless you expressly disallow it). books like cormen et al show standard data structures and algorithms for graphs. typically you use "adjaceny list" or adjacency matrix".

the matrix rep is for dense graphs, this isn't, so you'd use an adjacency list. that's simply a list, for each node, of the other nodes you can reach.

in xml you might do this with a structure something like
[node index="1"]
[contents]pessimists as victims...[/contents]
[node index="2"]
[contents] the "humaneness" of the future...[/contents]
where from aphorism 1 you can go to aphorism 3 or 5, etc.

however, your description has more than that - different arcs belong to different routes through, and some aphorisms are intersections (if i understood correctly). so you'd need to include that info too. i would probably separate out the definitions of the aphorisms from the arcs, and then provide separate sets of arcs for each route, with additional markup to indetify intersections with other routes.

but this is all somewhat arbitrary because i don't see how that helps you solve the problem of representing this - it's just an implementatin detail that might be relevant if you use xml at some point to store these graphs.
posted by andrew cooke at 12:43 PM on July 23, 2004

I have absolutely no idea what any of this means - but it sounds intriguing, so please come back and post a URL when your chum's posted it, okay?
posted by JollyWanker at 1:00 PM on July 23, 2004

Wouldn't the simplest way be to just store the texts in a database table, each with a unique index, and store each routes as a list of indices in a seperate table? Each route is then simply a list of numbers, and trivial to store and navigate. Intersection nodes just need a field with the route/node of the alternates.

The main UI can navigate the preset routes easily, and allowing the users to make their own is as simple as recording the indices of their route through the data (again, just a list of numbers). Displaying the user-created nodes can use the same code as the pre-programmed routes, for perfect consistency.

PHP along with MySQL can do this no problem.

I hope I'm not too late to the thread and you see this :)
posted by Gamecat at 7:52 PM on July 23, 2004

Response by poster: thanks all - he's a workmate, so I'll show him this on monday!
posted by Pericles at 12:47 AM on July 24, 2004

you're talking about a hypertext, so check out storyspace.
posted by raaka at 11:22 AM on July 24, 2004

« Older What is the origin of the schizophrenic bad guy...   |   CSS Spacers Newer »
This thread is closed to new comments.