Semantic annotation of data is an extremely powerful tool for structuring knowledge and making it machine readable: domain knowledge is captured by defining a class hierarchy and describing the properties that relate individuals class members. For example, in order to model family relations I can define a class "Person" whose individual members are pairwise linked to eachother by the properties "has_parent" and "has_child". This then allows me to query an individual's ancestry, e.g. "has_sibling" or "has_grandparents" — without having to assert each of these derived relationships individually.
Specialized ontology modeling software (e.g. protégé) exist for building these semantic models. Yet, while extremely powerful these software packages are not good at creating attractive user facing knowledge bases. Interestingly, the ontology concept matches very well onto the "smallest semantic units possible"-paradigm of TiddlyWiki. In TiddlyWiki, a family knowledge base can be simply created by storing each persons information in a tiddler and adding fields for properties has_child and has_parent. Now, an individual's ancestry can be displayed using templates with appropriate filters (recursive search along has_parent property). And, since TiddlyWiki's elegant way of displaying information and media we can easily add additional information like images, personal details, etc. On top of this, TiddlyMap makes it trivial to display the family tree graphically (see "Using the Map Raster" example on TiddlyMap.org).
Unfortunately, linking tiddlers by entering tiddler names into properties fields is tedious and error prone (due to missing auto-completion). TiddlyMap greatly simplifies this data entry process by allowing to connect existing tiddlers by simply dragging edges (which are linked to tiddler fields) between them — thus ruling out broken links due to spelling errors. However, especially in complex models with many properties it is easy to forget to some properties since each edges have to be manually created. In order to improve this I would like to propose a different data entry mode in TiddlyMap: "dangling edges" could be created for each tiddler that is added to a map (based on a template/filter) so that all fields can be easily filled by connecting the respective edges to other tiddlers. In other words, instead of adding both tiddlers and edges manually, adding a tiddler should also add "edges" for connecting additional tiddlers. Ideally, a mechanism for defining rules for which edge type can connect to which node type (including directionality) could be defined.
This behavior would dramatically improve the data input speed, minimize errors, and enable an incredibly powerful semantic TiddlyWiki.
\define select-existing-values(fieldname)
<$select field="$fieldname$" default={{!!$fieldname$}}>
<$list filter="[each[$fieldname$]get[$fieldname$]]" variable="choice">
<option value=<<choice>>><<choice>></option>
</$list>
</$select>
\endJust call it with a field name <<select-existing-values fieldname>>
Also with the if a Child is tagged with its parents, and other things, you could list all of the tiddlers in the tags field
and test if each is also a person, even a male or female person and thus identify the childs parent(s).
I think my point is there are many ways for you to encode and list any type of relationship in TiddlyWiki..
Best Wishes
Tony