Hierarchies

38 views
Skip to first unread message

digital...@gmail.com

unread,
May 3, 2006, 12:05:35 PM5/3/06
to TiddlyWiki
I'd like to be able to specify, when I make tiddlers, parent-child
relationships. So when I create a tiddler, there should be a drop-down
menu or a form field where I can select/input the name of tiddlers that
will be its parents and also those which will be its children (which
will of course in turn edit and connect the parent attribute of the
children to its name/reference). Am I making any sense? If this is
possible, how do I do it or has someone already done this?

Russ Lipton

unread,
May 3, 2006, 2:08:30 PM5/3/06
to TiddlyWiki
Could you describe the use case for this? What applications would
benefit from parent-child tiddlers? I am trying to visualize this ...

Simon Baird

unread,
May 3, 2006, 5:59:28 PM5/3/06
to Tiddl...@googlegroups.com
It's not possible at the moment but a good idea (see a previous thread on this topic in relation to extensible tiddler meta data coming in a future version).

But if you use TagglyTagging you can sort of achieve the same effect with tags. See http://simonbaird.com/mptw/#TagglyTagging

digital...@gmail.com

unread,
May 3, 2006, 6:10:50 PM5/3/06
to TiddlyWiki
Well I use tiddlywiki to organize information and I'd like to be able
to create what, in a most basic form, are trees of tiddlers/content and
in their more robust forms (i.e. w/ multiple parents) they would be
called maps. If anyone is familiar with mind mapping, they might have a
better sense of what I'm asking for here. Thanks.

digital...@gmail.com

unread,
May 3, 2006, 6:57:09 PM5/3/06
to TiddlyWiki
Oh! Simon himself. I'm a great admirer of yours, and I use nearly all
of your plugins.

TagglyTagging is great but doesn't achieve the actual parent-child
child-parent relationships I'm trying to implement. I definitely like
the idea of extensible tiddler meta data. So, I assume then that this
is too great a feature for me to code myself, given the very fact that
I had to ask in the first place. Ok, thanks folks.

Simon Baird

unread,
May 3, 2006, 7:30:26 PM5/3/06
to Tiddl...@googlegroups.com
Well flattery will get you... these two links..  :)

http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/26994f1fea06cdf7/dcb09400646fdd5d
http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/f2809b198fc46221/e0bdd81f6875d086

which might be of interest. The word on tiddler meta data is its coming with TW 2.1 beta which will be out before too long (we hope).


Daniel Baird

unread,
May 3, 2006, 7:31:59 PM5/3/06
to Tiddl...@googlegroups.com

What's missing from taggly that rules it out for you?

If you just want parent/child links that are otherwise undifferentiated (ie you don't need to record different types of parent, eg Mum/Dad/Carer), taggly seems like a good fit, conceptually.. a tiddler's "parents" are the tiddlers it's tagged with, and a tiddler's "children" are the other tiddlers tagged with the tiddler.  Tiddlers can have 0-to-many parents, and 0-to-many children.

Is it an interface issue? With tagglytags you need to specify the relationship from the child (except if you use New Here on the parent to start a new child).  I could imagine that might be a problem.

Just curious, really..


;Daniel




--
Daniel Baird
http://danielbaird.com (TiddlyW;nks! :: Whiteboard Koala :: Blog :: Things That Suck)

digital...@gmail.com

unread,
May 3, 2006, 10:42:56 PM5/3/06
to TiddlyWiki
:-) Are you two related? Daniel and Simon...

Okay, here's my problem. Without TagglyTagging, I can create sibling
relationships between tiddlers merely by giving each mutually shared
tags. However, I'd like to form this sibling relationship directly.
Oftentimes I know two or more pieces of information are related at the
sibling level but I don't want to waste time trying to figure out how
to represent in tag form what makes them siblings. Second, while I
would like the option of being able to "label" and/or describe the
sibling relationship, I don't want to be forced to do this straightaway
or even necessarily ever. Now, made even more obvious with
TagglyTagging in place, creating sibling relationships essentially
requires the creation of a parent tiddler (the tag) and then linking up
children to this parent. My problem with this is that, even though I
love and use the option, most of the time I'm merely creating empty
tiddlers in order to represent a relationship between other,
content-ladden tiddlers. This is very wasteful and a big hassle when I
merely want to make bunches of two or three tiddlers into groups of
siblings. I'd end up polluting my list of tags with tons of useless
tags I only created to link up two tiddlers at a time. You see what I
mean? Creating relationships via tags isn't the same as parent-child,
child-child, etc... Additionally, when I create a tiddler, I'd like to
be able to immediately setup/input the parents and children of that new
tiddler. This would save me so much time. Additionally, I like tags as
descriptive labels and TagglyTagging for parent-child relationships but
I'd like tiddlywiki/the-interface to discriminate between the two. So
keep the tag cloud for "labels" and TagglyTagging for hierarchy. I hope
that made sense...

So, maybe my needs are three-prong and much simpler than I make them
sound. 1) I need a more convienent interface for editing/creating a
tiddler's parents and children: I should be able to do this within the
tiddler's edit interface via, at a min., two input fields. 2) I want to
be able to directly link tiddlers together as siblings without having
to link them to mutually-held tags or Taggly parents and I want the
display of tiddlers to reflect their sibling relationships in a clearly
distinguishable manner (i.e. color coded). 3) I want tags to be
separate from TagglyTags so that I can use them solely for labelling
tiddlers. The interface should then reflect the difference between tags
and TagglyTags: tags would re-assume the tagcloud position and
TagglyTags would stay in their current positions. And everyone goes
home happy---OK, at least I go home happy! :-)

I read part of the thread Simon referred me to (thanks Simon) and I
would like to say yes, separate tags from the axis of the Taggly
structure. I wish to use both. Thanks you two...

digital...@gmail.com

unread,
May 3, 2006, 10:51:39 PM5/3/06
to TiddlyWiki
P.S. Yes Daniel, it is an interface issue and yes I would like to be
able to specify the type of parent relationship, but I wouldn't want to
be forced to do this is all. In fact, I'd like to be able to create
very descriptive relationships between tiddlers if I like. For example,
if I create person A and person B and I want the relationship of B to A
to be that of anger (person B is a source of anger to person A) then
I'd like to be able to specify this. Note that this relationship could
be mono-directional in the sense that even though B angers A, person A
is not necessarily a source of anger to person B: B ---angers--> A but
A --does not anger--> B

If there could be a tiddlywiki interface to allow for the creation and
representation of complex (relatively speaking) relationships like
this, I would be _VERY_ happy. Jolly day...

Daniel Baird

unread,
May 3, 2006, 11:26:20 PM5/3/06
to Tiddl...@googlegroups.com

:-) Are you two related? Daniel and Simon...

Yep, we're siblings in fact, which is weird given the current discussion.  Luckily I got all the beauty and brains :)   Simon is still bitter about coming second to me in the Miss Teen America pagent.

[stuff about sibling relationships between tiddlers]

Ok I see.   Tagging gives you a directed relationship between two tiddlers, which can model parent/child, but you want sibling relationships, which are non- (or, if you prefer, multi-) directional.

For the record, you don't need to actually create a "parent" tiddler to be able to give two other tiddlers a common parent.  Just tag the two child tiddlers with the same tag.  I know you understand that, but it's an unhappily common misconception and I don't wanna let it slide in case anyone else is reading along :)

In any case, that doesn't help your situation, where you want to group siblings without having to give the group a particular name, or editing every sibling.



So, maybe my needs are three-prong and much simpler than I make them
sound. 1) I need a more convienent interface for editing/creating a
tiddler's parents and children: I should be able to do this within the
tiddler's edit interface via, at a min., two input fields. 2) I want to
be able to directly link tiddlers together as siblings without having
to link them to mutually-held tags or Taggly parents and I want the
display of tiddlers to reflect their sibling relationships in a clearly
distinguishable manner (i.e. color coded). 3) I want tags to be
separate from TagglyTags so that I can use them solely for labelling
tiddlers. The interface should then reflect the difference between tags
and TagglyTags: tags would re-assume the tagcloud position and
TagglyTags would stay in their current positions. And everyone goes
home happy---OK, at least I go home happy! :-)


I'm thinking now that your requirements are actually a pretty good summary of what TiddlyWiki should be able to do.  Metadata will probably start as free-for-all do-what-you-will, but it would be nice to make a standard way to represent generalised relationships like this.

Can I ask, when you think of several sibling tiddlers, is the sibling relationship commutative, like they're all in the same bag? Eg if you have:

tiddlerA <-siblings-> tiddlerB
tiddlerB <-siblings-> tiddlerC

does that guarantee that A is a sibling of C?

If so, then we (the tiddlywiki developer community) need to think about how anonymous groups will be stored.  Metadata only attaches to individual tiddlers, so if we permit unnamed groups, and tiddlers A B and C are in a group together, what is stored in tiddler A's metadata?  Maybe something like a tag list, and trick up a name:
groups: "anonGroup43"

Anyway.. just a thought.

;Daniel

Daniel Baird

unread,
May 3, 2006, 11:32:53 PM5/3/06
to Tiddl...@googlegroups.com

I should type quicker!


P.S. Yes Daniel, it is an interface issue and yes I would like to be
able to specify the type of parent relationship, but I wouldn't want to
be forced to do this is all.

As soon as you want to give a category to the relationship, or have any other info associated with it, that rules out tagging.


In fact, I'd like to be able to create
very descriptive relationships between tiddlers if I like. For example,
if I create person A and person B and I want the relationship of B to A
to be that of anger (person B is a source of anger to person A) then
I'd like to be able to specify this. Note that this relationship could
be mono-directional in the sense that even though B angers A, person A
is not necessarily a source of anger to person B: B ---angers--> A  but
A --does not anger--> B

If there could be a tiddlywiki interface to allow for the creation and
representation of complex (relatively speaking) relationships like
this, I would be _VERY_ happy. Jolly day...


Directional relationships are relatively easy to implement, eg the "person A" tiddler could have a metadata list of people that angers them.  Undirected relns are a bit harder.. it's annoying just to store in the tiddler at one end of the reln, so you usually end up storing it twice or using some other kludge.

Luckily there are some big ol' brains working on TiddlyWiki..

;D

DaveG

unread,
May 4, 2006, 3:38:17 PM5/4/06
to TiddlyWiki
hi,

I know of (and use, and own) one piece of software that can handle
relation ships pretty much like you want.
It allows named link types, and a map view, and alos export to other
formats.

Check out Tinderbox at URL:http://www.eastgate.com/tinderbox/

DaveG

RogerS

unread,
May 5, 2006, 4:27:07 PM5/5/06
to TiddlyWiki
I'm not a computer science guy, but I know we're talking about nodes
and edges here, which gives you wide latitude in describing a
relationship and which also forces you to think about directionality
and how to implement it.

In my own case, I've worked with both RDF and Topic Maps, and that
experience is what inclines me toward the tagging version of TW-GTD as
opposed to the outline version (as I see them).

In RDF you can say that A is connected to B, but you have to make an
additional statement if you want to say that B is connected to A. And
every connection is something you yourself define.

In Topic Maps, you associate A and B together, specifying their roles
in the association, and the association is bi-directional.

That is, in RDF, if you say "Shakespeare wrote Hamlet," you also have
to say the opposite, that "the author of Hamlet is Shakespeare." In
Topic Maps, you have an author/composition association and Shakespeare
plays the role of author and Hamlet of composition.

I bring all this up in order to say that first of all, making a tiddler
to connect two other tiddlers is what you have to do if you want to go
beyond the mere (and unnecessary) assumption that the relationships
implied by tags are parent-child relationships. That tiddler then
represents (or describes) the type of relationship you establish
between your two tiddlers.*

If I want to associate my two tiddlers Hamlet and Shakespeare, I give
them both an Author-Composition tag, and one gets an Author tag and the
other Composition. And Shakespeare gets a Hamlet tag and Hamlet gets a
Shakespeare tag.**

And if I want to also connect Shakespeare and Othello, I only need add
an Othello tag to my Shakespeare tiddler (and Othello is constructed
like Hamlet, above).

A Topic Map engine (which TW is not) lets you locate all the tiddlers
that play the role of composition and which have an author-composition
association with Shakespeare. That provides what is being called here a
sibling relationship. Hamlet and Othello are related by virtue of their
both having a relationship to Shakespeare.

But you could be less complete that this. You could just create a
tiddler that specified the sibling relationship, which would not be a
binary or a directional relationship. Hamlet, Othello and King Lear
would all have the tag WrittenByShakespeare. I don't think of this as
"WrittenByShakespeare is the parent of Hamlet, Othello and King Lear,"
because to me the tiddler WrittenByShakespeare is created to describe
the relationship. But if you insist on seeing all tags through the lens
of parent-child relations, then that would be how you express it.

It may not be what you were thinking of, digitalorganics, but you can
do what you want.*** And, short of going to a Tinderbox type
application, or a Topic Map-based solution -- of which Ceryle, not yet
released (http://www.altheim.com/ceryle/) would be the prime candidate
-- I don't think you're going to find a neater solution.

Still, by applying tags in this way, you can follow links and see all
the connections that you've put in. When you're at Shakespeare, you can
see that it has an Author tag, and when you follow the link to Hamlet
you can see that it has the Composition tag, and since they both have
the Author-Composition tag, you have all the pieces you need.

Roger Sperberg


----
* I may not have made it clear, but just as I say here you have to make
a tiddler to represent the relationship, that's what you have to do in
RDF and in Topic Maps. So TW tags and relationships just have to do
what any relationship technology does -- create a connector at the same
level as the things being connected.

** And here, of course, we had to create three tiddlers, Author,
Composition and Author-Composition. And to repeat, the tags for Hamlet
would be Shakespeare, Author-Composition and Composition; for
Shakespeare they would be Hamlet, Author-Composition and Author.

*** To use your example, Shakespeare is A, Hamlet is B, the association
tiddler is something like CausesAngerIn, and you create two additional
tiddlers, AgentOfAnger and SeatOfAnger. The tags for B would be A,
CausesAngerIn and AgentOfAnger, while for B the tags would be A,
CausesAngerIn and SeatOfAnger.

And if you wanted a mutual association, you just make one role tiddler
and a tiddler with a bidrectional association -- say, John and Mary as
your A and B, loves as the association and lover as the role tiddler.
So the tags for John are Mary, loves and lover, and for Mary the tags
are John, loves and lover.

RogerS

unread,
May 5, 2006, 4:34:48 PM5/5/06
to TiddlyWiki
Daniel Baird wrote:
> As soon as you want to give a category to the relationship, or have
> any other info associated with it, that rules out tagging.

I just wrote a long post about this, but I wanted to say that this
comment is why I went to such lengths.

Really, I would say that tagging is specifically what rules IN the
capability to give a category to the relationship. But for that, see my
post above.

And I won't dispute that doing things the way I describe might be
annoying. But that just leaves you with two choices, live with it or go
to some other kind of software.

Daniel Baird

unread,
May 5, 2006, 7:02:44 PM5/5/06
to Tiddl...@googlegroups.com
On 5/6/06, RogerS <rspe...@gmail.com> wrote:

Daniel Baird wrote:
> As soon as you want to give a category to the relationship, or have
> any other info associated with it, that rules out tagging.

I just wrote a long post about this, but I wanted to say that this
comment is why I went to such lengths.

Really, I would say that tagging is specifically what rules IN the
capability to give a category to the relationship. But for that, see my
post above.

That's true, if you're willing to go to some lengths to make it work.  I was really just saying that "is tagged with" is only an undifferentiated directional relationship.

It's a bit like Turing-complete computers.. theoretically they're all equivalent, but I'd take a PC over a Babbage analytical engine any day :)

Depending on what other email I get today I might reply to your long email too..


;Daniel

Daniel Baird

unread,
May 5, 2006, 8:03:25 PM5/5/06
to Tiddl...@googlegroups.com
On 5/6/06, RogerS <rspe...@gmail.com> wrote:

I bring all this up in order to say that first of all, making a tiddler
to connect two other tiddlers is what you have to do if you want to go
beyond the mere (and unnecessary) assumption that the relationships
implied by tags are parent-child relationships. That tiddler then
represents (or describes) the type of relationship you establish
between your two tiddlers.*

Yes, I think that if you wanted any complexity to your relationships you would have to have linking tiddlers to represent the relationship between two other tiddlers.

If I want to associate my two tiddlers Hamlet and Shakespeare, I give
them both an Author-Composition tag, and one gets an Author tag and the
other Composition. And Shakespeare gets a Hamlet tag and Hamlet gets a
Shakespeare tag.**

The problem with this is that it would brand Hamlet and Shakespeare as Composition and Author respectively.. not as clear in this example, but if you tried the same thing with a middle manager, who is a Boss in some relationships and a Vassal in others, you'd run into problems.  You really need a separate tiddler to capture relationship info uniquely.


But anyway, the thing that makes all this irrelevant is the glorious dawning of the Age of Generic Tiddler Metadata.. so come TW2.1, we can have all sorts of special relationships with extra info attached etc etc.  It'll make TW equivalent to anything you care to name, with respect to its power to represent relationships between things.  Then there's just a nice graphical representation to add, and you've got everything you want.

Sweet huh.  As soon as TW can bootstrap a PC, I'll be able to throw out every other piece of software I own :)

;Daniel

digital...@gmail.com

unread,
May 6, 2006, 6:27:22 PM5/6/06
to TiddlyWiki
Thanks everyone, for such a rich and insightful discussion. I see that
I'll have to wait for TW2.1 to be able to do precisely what I want. I
look forward to it!

As to Daniel's question to me: if A and C both are related at the
sibling level to B, does that make them (A and C) also siblings?
Daniel, my thinking has long been that whatever gives the user the most
flexibility is the answer. So if it's not a big trouble, I'd like to
have the option of choosing, as a user, whether I want the relationship
to be commutative or not. Hidden and autogenerated internal tag names
is indeed one way to achieve commutative relationships I think. I'll
have to give that some more thought...

Reply all
Reply to author
Forward
0 new messages