Wgraph:Ahnen
This is one of the examples on the aiSee website.
We show how the genealogy graph can be produced using two templates which raise the semantic level of expression compared to the native description in gdl. The wiki source structure is like this:
... {{Nachkommen |Mutter |Schwester |Bruder |*Jana }} {{Paar |Jana |Ehemann }} {{Nachkommen |Jana |*Tochter |Sohn }} {{Paar |Tochter |Schwiegersohn }} ...
{{#wgraph: svg | thumb=80 |
smanhattan_edges = yes equal_y_dist = yes portsharing = yes
{{#vardefine:v|{{#replace:Urgroßmutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:Großonkel |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Großtante |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:*Großmutter |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Großmutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:*Mutter |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Tante |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Mutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:Schwester |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Bruder |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:*Jana |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Tante |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:Kusine |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Vetter |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Schwiegermutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:Ehemann |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Schwager |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Jana |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:*Tochter |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Sohn |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Bruder |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:Nichte |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Neffe |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Tochter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:Enkel |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:*Enkelin |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:v|{{#replace:Enkelin |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:n|{{#replace:*Urenkelin |/^\s*(.*)\s*$/|\1}}}}edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:n|{{#replace:Urenkel |/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {} {{#vardefine:n|{{#replace:|/^\s*(.*)\s*$/|\1}}}} edge "{{#var:v}}" to "{{#var:n}}" {}
{{#vardefine:w|{{#replace:Urgroßmutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Urgroßvater |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Großmutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Großvater |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Schwiegermutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Schwiegervater |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Mutter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Vater |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Tante |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Onkel |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Jana |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Ehemann |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Tochter |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Schwiegersohn |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Sohn |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Schwiegertochter |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {} {{#vardefine:w|{{#replace:Enkelin |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace:Ehemann der Enkelin |/^\s*(.*)\s*$/|\1}}}}nearedge "{{#var:w}}" to "{{#var:m}}" {}
node "Schwiegermutter " { vertical_order 2 } node "Jana " { type Fokus }
nodetype Fokus { bordercolor blue font helvB10 borderwidth 3} nodetype * { bordercolor white font helvR10 }
edgetype Fokus { thickness 4 } edgetype * { arrowstyle none color blue }
}}