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=60 | wgl |
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: 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: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: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: 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}}" {} {{#vardefine:w|{{#replace: Tante |/^\s*(.*)\s*$/|\1}}}}{{#vardefine:m|{{#replace: Onkel |/^\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 }
}}